summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChet Ramey <chet.ramey@case.edu>2020-12-06 15:51:17 -0500
committerChet Ramey <chet.ramey@case.edu>2020-12-06 15:51:17 -0500
commit8868edaf2250e09c4e9a1c75ffe3274f28f38581 (patch)
treed9a7812ab6cd2f45c5021755c4c094b19dab1b51
parent36f2c406ff27995392a9247dfa90672fdaf7dc43 (diff)
downloadbash-8868edaf2250e09c4e9a1c75ffe3274f28f38581.tar.gz
bash-5.1 distribution sources and documentationbash-5.1
-rw-r--r--CHANGES680
-rw-r--r--COMPAT153
-rw-r--r--CWRU/changelog4219
-rw-r--r--MANIFEST87
-rw-r--r--Makefile.in164
-rw-r--r--NEWS198
-rw-r--r--NOTES2
-rw-r--r--POSIX81
-rw-r--r--RBASH18
-rw-r--r--README6
-rw-r--r--aclocal.m42130
-rw-r--r--alias.c36
-rw-r--r--alias.h22
-rw-r--r--array.c87
-rw-r--r--array.h82
-rw-r--r--arrayfunc.c292
-rw-r--r--arrayfunc.h53
-rw-r--r--assoc.c95
-rw-r--r--assoc.h41
-rw-r--r--bashhist.c95
-rw-r--r--bashhist.h44
-rw-r--r--bashline.c706
-rw-r--r--bashline.h44
-rw-r--r--bracecomp.c4
-rw-r--r--braces.c41
-rw-r--r--builtins/Makefile.in7
-rw-r--r--builtins/alias.def4
-rw-r--r--builtins/bashgetopt.h6
-rw-r--r--builtins/bind.def44
-rw-r--r--builtins/break.def4
-rw-r--r--builtins/caller.def6
-rw-r--r--builtins/cd.def15
-rw-r--r--builtins/colon.def15
-rw-r--r--builtins/command.def8
-rw-r--r--builtins/common.c113
-rw-r--r--builtins/common.h193
-rw-r--r--builtins/complete.def253
-rw-r--r--builtins/declare.def66
-rw-r--r--builtins/enable.def21
-rw-r--r--builtins/evalfile.c2
-rw-r--r--builtins/evalstring.c41
-rw-r--r--builtins/exec.def11
-rw-r--r--builtins/exit.def4
-rw-r--r--builtins/fc.def134
-rw-r--r--builtins/fg_bg.def4
-rw-r--r--builtins/gen-helpfiles.c6
-rw-r--r--builtins/getopt.h14
-rw-r--r--builtins/getopts.def19
-rw-r--r--builtins/hash.def19
-rw-r--r--builtins/help.def16
-rw-r--r--builtins/history.def21
-rw-r--r--builtins/jobs.def6
-rw-r--r--builtins/kill.def4
-rw-r--r--builtins/mapfile.def4
-rw-r--r--builtins/mkbuiltins.c22
-rw-r--r--builtins/printf.def66
-rw-r--r--builtins/pushd.def14
-rw-r--r--builtins/read.def72
-rw-r--r--builtins/reserved.def4
-rw-r--r--builtins/return.def2
-rw-r--r--builtins/set.def64
-rw-r--r--builtins/setattr.def54
-rw-r--r--builtins/shift.def32
-rw-r--r--builtins/shopt.def44
-rw-r--r--builtins/source.def6
-rw-r--r--builtins/suspend.def4
-rw-r--r--builtins/trap.def31
-rw-r--r--builtins/type.def4
-rw-r--r--builtins/ulimit.def32
-rw-r--r--builtins/umask.def6
-rw-r--r--builtins/wait.def162
-rw-r--r--command.h79
-rw-r--r--config-bot.h6
-rw-r--r--config-top.h11
-rw-r--r--config.h.in30
-rwxr-xr-xconfigure5265
-rw-r--r--configure.ac111
-rw-r--r--copy_cmd.c28
-rw-r--r--dispose_cmd.h20
-rw-r--r--doc/Makefile.in2
-rw-r--r--doc/bash.04476
-rw-r--r--doc/bash.1756
-rw-r--r--doc/bash.html924
-rw-r--r--doc/bash.info1613
-rw-r--r--doc/bash.pdfbin376866 -> 381560 bytes
-rw-r--r--doc/bash.ps15294
-rw-r--r--doc/bashbug.07
-rw-r--r--doc/bashbug.110
-rw-r--r--doc/bashbug.ps35
-rw-r--r--doc/bashref.dvibin767804 -> 789640 bytes
-rw-r--r--doc/bashref.html3401
-rw-r--r--doc/bashref.info1613
-rw-r--r--doc/bashref.pdfbin753125 -> 769844 bytes
-rw-r--r--doc/bashref.ps16691
-rw-r--r--doc/bashref.texi710
-rw-r--r--doc/builtins.01621
-rw-r--r--doc/builtins.ps4090
-rw-r--r--doc/rbash.08
-rw-r--r--doc/rbash.ps76
-rw-r--r--doc/version.texi12
-rw-r--r--error.c10
-rw-r--r--error.h38
-rw-r--r--eval.c80
-rw-r--r--examples/functions/autoload.v22
-rw-r--r--examples/functions/autoload.v48
-rw-r--r--examples/functions/csh-compat2
-rw-r--r--examples/functions/isnum22
-rw-r--r--examples/functions/shcat2
-rw-r--r--examples/functions/shcat24
-rw-r--r--examples/functions/sort-pos-params2
-rw-r--r--examples/loadables/Makefile.in34
-rw-r--r--examples/loadables/README2
-rw-r--r--examples/loadables/accept.c234
-rw-r--r--examples/loadables/asort.c279
-rw-r--r--examples/loadables/basename.c11
-rw-r--r--examples/loadables/csv.c206
-rw-r--r--examples/loadables/cut.c625
-rw-r--r--examples/loadables/fdflags.c40
-rw-r--r--examples/loadables/finfo.c12
-rw-r--r--examples/loadables/ln.c4
-rw-r--r--examples/loadables/mkdir.c2
-rw-r--r--examples/loadables/mkfifo.c146
-rw-r--r--examples/loadables/mktemp.c212
-rw-r--r--examples/loadables/push.c6
-rw-r--r--examples/loadables/realpath.c2
-rw-r--r--examples/loadables/rm.c8
-rw-r--r--examples/loadables/seq.c8
-rw-r--r--examples/loadables/setpgid.c2
-rw-r--r--examples/loadables/sleep.c11
-rw-r--r--examples/loadables/strftime.c13
-rw-r--r--examples/loadables/tee.c2
-rw-r--r--examples/startup-files/Bash_aliases2
-rw-r--r--execute_cmd.c538
-rw-r--r--execute_cmd.h73
-rw-r--r--expr.c80
-rw-r--r--externs.h424
-rw-r--r--findcmd.c22
-rw-r--r--findcmd.h22
-rw-r--r--flags.c16
-rw-r--r--flags.h18
-rw-r--r--general.c74
-rw-r--r--general.h166
-rw-r--r--hashcmd.c4
-rw-r--r--hashcmd.h14
-rw-r--r--hashlib.c90
-rw-r--r--hashlib.h26
-rw-r--r--include/posixdir.h2
-rw-r--r--include/posixstat.h22
-rw-r--r--include/posixtime.h12
-rw-r--r--include/posixwait.h6
-rw-r--r--include/shmbutil.h11
-rw-r--r--include/shtty.h42
-rw-r--r--include/stdc.h12
-rw-r--r--include/systimes.h4
-rw-r--r--include/typemax.h19
-rw-r--r--input.c8
-rw-r--r--input.h72
-rw-r--r--jobs.c717
-rw-r--r--jobs.h177
-rw-r--r--lib/glob/glob.c208
-rw-r--r--lib/glob/glob.h11
-rw-r--r--lib/glob/glob_loop.c8
-rw-r--r--lib/glob/gmisc.c4
-rw-r--r--lib/glob/sm_loop.c55
-rw-r--r--lib/glob/smatch.c116
-rw-r--r--lib/glob/strmatch.c6
-rw-r--r--lib/glob/strmatch.h6
-rw-r--r--lib/glob/xmbsrtowcs.c118
-rw-r--r--lib/malloc/imalloc.h12
-rw-r--r--lib/malloc/malloc.c111
-rw-r--r--lib/malloc/mstats.h10
-rw-r--r--lib/malloc/shmalloc.h36
-rw-r--r--lib/malloc/stats.c8
-rw-r--r--lib/malloc/table.c12
-rw-r--r--lib/malloc/table.h20
-rw-r--r--lib/malloc/trace.c4
-rw-r--r--lib/malloc/watch.h4
-rw-r--r--lib/readline/bind.c256
-rw-r--r--lib/readline/colors.c11
-rw-r--r--lib/readline/complete.c104
-rw-r--r--lib/readline/display.c822
-rw-r--r--lib/readline/doc/history.texi2
-rw-r--r--lib/readline/doc/hstech.texi6
-rw-r--r--lib/readline/doc/hsuser.texi39
-rw-r--r--lib/readline/doc/rlman.texi2
-rw-r--r--lib/readline/doc/rltech.texi42
-rw-r--r--lib/readline/doc/rluser.texi79
-rw-r--r--lib/readline/doc/rluserman.texi2
-rw-r--r--lib/readline/doc/version.texi12
-rw-r--r--lib/readline/emacs_keymap.c4
-rw-r--r--lib/readline/examples/fileman.c6
-rw-r--r--lib/readline/examples/rltest.c1
-rw-r--r--lib/readline/funmap.c10
-rw-r--r--lib/readline/histexpand.c26
-rw-r--r--lib/readline/histfile.c54
-rw-r--r--lib/readline/input.c33
-rw-r--r--lib/readline/isearch.c75
-rw-r--r--lib/readline/kill.c110
-rw-r--r--lib/readline/mbutil.c106
-rw-r--r--lib/readline/misc.c63
-rw-r--r--lib/readline/posixdir.h2
-rw-r--r--lib/readline/posixstat.h22
-rw-r--r--lib/readline/readline.c98
-rw-r--r--lib/readline/readline.h16
-rw-r--r--lib/readline/rlmbutil.h2
-rw-r--r--lib/readline/rlprivate.h42
-rw-r--r--lib/readline/search.c47
-rw-r--r--lib/readline/signals.c87
-rw-r--r--lib/readline/terminal.c76
-rw-r--r--lib/readline/text.c105
-rw-r--r--lib/readline/tilde.c18
-rw-r--r--lib/readline/undo.c2
-rw-r--r--lib/readline/util.c3
-rw-r--r--lib/readline/vi_mode.c182
-rw-r--r--lib/sh/Makefile.in17
-rw-r--r--lib/sh/casemod.c4
-rw-r--r--lib/sh/eaccess.c12
-rw-r--r--lib/sh/fnxform.c12
-rw-r--r--lib/sh/fpurge.c4
-rw-r--r--lib/sh/gettimeofday.c35
-rw-r--r--lib/sh/input_avail.c73
-rw-r--r--lib/sh/mailstat.c2
-rw-r--r--lib/sh/makepath.c4
-rw-r--r--lib/sh/mktime.c18
-rw-r--r--lib/sh/netopen.c14
-rw-r--r--lib/sh/pathcanon.c2
-rw-r--r--lib/sh/pathphys.c4
-rw-r--r--lib/sh/random.c240
-rw-r--r--lib/sh/shmatch.c4
-rw-r--r--lib/sh/shquote.c77
-rw-r--r--lib/sh/snprintf.c42
-rw-r--r--lib/sh/spell.c6
-rw-r--r--lib/sh/strftime.c17
-rw-r--r--lib/sh/stringlist.c4
-rw-r--r--lib/sh/stringvec.c32
-rw-r--r--lib/sh/strtod.c8
-rw-r--r--lib/sh/strtoimax.c6
-rw-r--r--lib/sh/strtoumax.c6
-rw-r--r--lib/sh/strtrans.c24
-rw-r--r--lib/sh/times.c6
-rw-r--r--lib/sh/timeval.c27
-rw-r--r--lib/sh/tmpfile.c74
-rw-r--r--lib/sh/uconvert.c34
-rw-r--r--lib/sh/ufuncs.c15
-rw-r--r--lib/sh/unicode.c16
-rw-r--r--lib/sh/utf8.c71
-rw-r--r--lib/sh/winsize.c6
-rw-r--r--lib/sh/zcatfd.c12
-rw-r--r--lib/sh/zgetline.c14
-rw-r--r--lib/sh/zmapfd.c14
-rw-r--r--lib/sh/zread.c25
-rw-r--r--lib/tilde/tilde.c18
-rw-r--r--locale.c34
-rw-r--r--m4/codeset.m424
-rw-r--r--m4/extern-inline.m4114
-rw-r--r--m4/fcntl-o.m4139
-rw-r--r--m4/gettext.m4419
-rw-r--r--m4/glibc2.m431
-rw-r--r--m4/glibc21.m434
-rw-r--r--m4/host-cpu-c-abi.m4644
-rw-r--r--m4/iconv.m4288
-rw-r--r--m4/intdiv0.m487
-rw-r--r--m4/intl-thread-locale.m4183
-rw-r--r--m4/intl.m4312
-rw-r--r--m4/intlmacosx.m472
-rw-r--r--m4/intmax.m436
-rw-r--r--m4/inttypes-pri.m442
-rw-r--r--m4/inttypes.m4159
-rw-r--r--m4/inttypes_h.m429
-rw-r--r--m4/lcmessage.m435
-rw-r--r--m4/lib-ld.m4168
-rw-r--r--m4/lib-link.m4774
-rw-r--r--m4/lib-prefix.m4249
-rw-r--r--m4/lock.m447
-rw-r--r--m4/nls.m432
-rw-r--r--m4/po.m4441
-rw-r--r--m4/printf-posix.m448
-rw-r--r--m4/progtest.m491
-rw-r--r--m4/pthread_rwlock_rdlock.m4165
-rw-r--r--m4/size_max.m475
-rw-r--r--m4/stdint_h.m427
-rw-r--r--m4/threadlib.m4393
-rw-r--r--m4/uintmax_t.m430
-rw-r--r--m4/ulonglong.m45
-rw-r--r--m4/visibility.m477
-rw-r--r--m4/wchar_t.m424
-rw-r--r--m4/wint_t.m474
-rw-r--r--m4/xsize.m412
-rw-r--r--mailcheck.c24
-rw-r--r--mailcheck.h18
-rw-r--r--make_cmd.c18
-rw-r--r--make_cmd.h66
-rw-r--r--nojobs.c122
-rw-r--r--parse.y323
-rw-r--r--parser-built122
-rw-r--r--parser.h2
-rw-r--r--patchlevel.h2
-rw-r--r--pathexp.c72
-rw-r--r--pathexp.h26
-rw-r--r--pcomplete.c86
-rw-r--r--pcomplete.h38
-rw-r--r--pcomplib.c4
-rw-r--r--po/LINGUAS2
-rw-r--r--po/Makefile.in.in2
-rw-r--r--po/af.gmobin1321 -> 1321 bytes
-rw-r--r--po/af.po873
-rw-r--r--po/bash.pot860
-rw-r--r--po/bg.gmobin209093 -> 219994 bytes
-rw-r--r--po/bg.po1357
-rw-r--r--po/ca.gmobin152983 -> 143614 bytes
-rw-r--r--po/ca.po949
-rw-r--r--po/cs.gmobin176521 -> 163842 bytes
-rw-r--r--po/cs.po937
-rw-r--r--po/da.gmobin77072 -> 72064 bytes
-rw-r--r--po/da.po907
-rw-r--r--po/de.gmobin97913 -> 94744 bytes
-rw-r--r--po/de.po1795
-rw-r--r--po/el.gmobin76580 -> 74685 bytes
-rw-r--r--po/el.po898
-rw-r--r--po/en@boldquot.gmobin170905 -> 173562 bytes
-rw-r--r--po/en@boldquot.po961
-rw-r--r--po/en@quot.gmobin169297 -> 171914 bytes
-rw-r--r--po/en@quot.po932
-rw-r--r--po/eo.gmobin144996 -> 151768 bytes
-rw-r--r--po/eo.po1025
-rw-r--r--po/es.gmobin155319 -> 162751 bytes
-rw-r--r--po/es.po1011
-rw-r--r--po/et.gmobin12197 -> 12197 bytes
-rw-r--r--po/et.po876
-rw-r--r--po/fi.gmobin79290 -> 74465 bytes
-rw-r--r--po/fi.po904
-rw-r--r--po/fr.gmobin180665 -> 167579 bytes
-rw-r--r--po/fr.po1115
-rw-r--r--po/ga.gmobin114845 -> 117387 bytes
-rw-r--r--po/ga.po1016
-rw-r--r--po/gl.gmobin56389 -> 55254 bytes
-rw-r--r--po/gl.po917
-rw-r--r--po/hr.gmobin169690 -> 157581 bytes
-rw-r--r--po/hr.po1115
-rw-r--r--po/hu.gmobin154023 -> 161293 bytes
-rw-r--r--po/hu.po1021
-rw-r--r--po/id.gmobin92810 -> 87778 bytes
-rw-r--r--po/id.po924
-rw-r--r--po/it.gmobin90513 -> 85368 bytes
-rw-r--r--po/it.po911
-rw-r--r--po/ja.gmobin106112 -> 100113 bytes
-rw-r--r--po/ja.po911
-rw-r--r--po/ko.gmobin0 -> 52646 bytes
-rw-r--r--po/ko.po4447
-rw-r--r--po/lt.gmobin29300 -> 28987 bytes
-rw-r--r--po/lt.po896
-rw-r--r--po/nb.gmobin146194 -> 152862 bytes
-rw-r--r--po/nb.po1047
-rw-r--r--po/nl.gmobin152963 -> 160297 bytes
-rw-r--r--po/nl.po997
-rw-r--r--po/pl.gmobin176038 -> 163418 bytes
-rw-r--r--po/pl.po933
-rw-r--r--po/pt.gmobin171488 -> 159207 bytes
-rw-r--r--po/pt.po936
-rw-r--r--po/pt_BR.gmobin175702 -> 162997 bytes
-rw-r--r--po/pt_BR.po933
-rw-r--r--po/ro.gmobin9376 -> 13361 bytes
-rw-r--r--po/ro.po2565
-rw-r--r--po/ru.gmobin132729 -> 125446 bytes
-rw-r--r--po/ru.po956
-rw-r--r--po/sk.gmobin89749 -> 84939 bytes
-rw-r--r--po/sk.po909
-rw-r--r--po/sl.gmobin86849 -> 82089 bytes
-rw-r--r--po/sl.po912
-rw-r--r--po/sr.gmobin196182 -> 205797 bytes
-rw-r--r--po/sr.po1010
-rw-r--r--po/sv.gmobin168964 -> 156712 bytes
-rw-r--r--po/sv.po928
-rw-r--r--po/tr.gmobin136380 -> 126804 bytes
-rw-r--r--po/tr.po915
-rw-r--r--po/uk.gmobin199487 -> 209517 bytes
-rw-r--r--po/uk.po1037
-rw-r--r--po/vi.gmobin148508 -> 138318 bytes
-rw-r--r--po/vi.po915
-rw-r--r--po/zh_CN.gmobin159999 -> 148429 bytes
-rw-r--r--po/zh_CN.po940
-rw-r--r--po/zh_TW.gmobin160734 -> 149275 bytes
-rw-r--r--po/zh_TW.po1999
-rw-r--r--print_cmd.c72
-rw-r--r--redir.c323
-rw-r--r--redir.h10
-rw-r--r--shell.c111
-rw-r--r--shell.h16
-rw-r--r--sig.c59
-rw-r--r--sig.h43
-rw-r--r--siglist.c5
-rw-r--r--siglist.h4
-rw-r--r--subst.c1321
-rw-r--r--subst.h158
-rw-r--r--support/bashbug.sh6
-rw-r--r--support/bashbug.sh.in6
-rw-r--r--support/bashversion.c6
-rwxr-xr-xsupport/config.guess512
-rwxr-xr-xsupport/config.sub675
-rw-r--r--support/man2html.c6
-rw-r--r--support/mksignames.c4
-rwxr-xr-xsupport/mkversion.sh6
-rwxr-xr-xsupport/shobj-conf59
-rw-r--r--support/signames.c47
-rwxr-xr-xsupport/texi2dvi1656
-rw-r--r--syntax.h2
-rw-r--r--test.c75
-rw-r--r--test.h12
-rw-r--r--tests/alias.right12
-rw-r--r--tests/alias.tests14
-rw-r--r--tests/alias1.sub13
-rw-r--r--tests/alias2.sub13
-rw-r--r--tests/alias3.sub1
-rw-r--r--tests/alias4.sub30
-rw-r--r--tests/alias5.sub28
-rw-r--r--tests/appendop.right6
-rw-r--r--tests/appendop.tests13
-rw-r--r--tests/appendop1.sub13
-rw-r--r--tests/appendop2.sub13
-rw-r--r--tests/arith-for.right8
-rw-r--r--tests/arith-for.tests13
-rw-r--r--tests/arith.right70
-rw-r--r--tests/arith.tests15
-rw-r--r--tests/arith1.sub13
-rw-r--r--tests/arith2.sub13
-rw-r--r--tests/arith3.sub27
-rw-r--r--tests/arith5.sub16
-rw-r--r--tests/arith6.sub13
-rw-r--r--tests/arith8.sub13
-rw-r--r--tests/array.right117
-rw-r--r--tests/array.tests23
-rw-r--r--tests/array10.sub13
-rw-r--r--tests/array11.sub13
-rw-r--r--tests/array12.sub13
-rw-r--r--tests/array13.sub1
-rw-r--r--tests/array14.sub13
-rw-r--r--tests/array15.sub13
-rw-r--r--tests/array16.sub13
-rw-r--r--tests/array17.sub13
-rw-r--r--tests/array18.sub13
-rw-r--r--tests/array19.sub18
-rw-r--r--tests/array20.sub13
-rw-r--r--tests/array21.sub13
-rw-r--r--tests/array22.sub13
-rw-r--r--tests/array23.sub13
-rw-r--r--tests/array24.sub13
-rw-r--r--tests/array25.sub13
-rw-r--r--tests/array26.sub13
-rw-r--r--tests/array27.sub13
-rw-r--r--tests/array28.sub30
-rw-r--r--tests/array4.sub13
-rw-r--r--tests/array5.sub13
-rw-r--r--tests/array6.sub13
-rw-r--r--tests/array8.sub13
-rw-r--r--tests/array9.sub13
-rw-r--r--tests/assoc.right127
-rw-r--r--tests/assoc.tests27
-rw-r--r--tests/assoc1.sub13
-rw-r--r--tests/assoc10.sub13
-rw-r--r--tests/assoc11.sub90
-rw-r--r--tests/assoc2.sub13
-rw-r--r--tests/assoc3.sub13
-rw-r--r--tests/assoc4.sub13
-rw-r--r--tests/assoc5.sub13
-rw-r--r--tests/assoc6.sub13
-rw-r--r--tests/assoc7.sub13
-rw-r--r--tests/assoc9.sub20
-rw-r--r--tests/attr.right16
-rw-r--r--tests/attr.tests13
-rw-r--r--tests/attr1.sub13
-rw-r--r--tests/attr2.sub13
-rw-r--r--tests/braces.tests13
-rw-r--r--tests/builtins.right50
-rw-r--r--tests/builtins.tests20
-rw-r--r--tests/builtins4.sub13
-rw-r--r--tests/builtins5.sub13
-rw-r--r--tests/builtins6.sub13
-rw-r--r--tests/builtins7.sub38
-rw-r--r--tests/case.right2
-rw-r--r--tests/case.tests13
-rw-r--r--tests/case1.sub13
-rw-r--r--tests/case2.sub13
-rw-r--r--tests/case3.sub14
-rw-r--r--tests/case4.sub13
-rw-r--r--tests/casemod.right2
-rw-r--r--tests/casemod.tests17
-rw-r--r--tests/complete.right63
-rw-r--r--tests/complete.tests126
-rw-r--r--tests/comsub-eof.right2
-rw-r--r--tests/comsub-eof.tests2
-rw-r--r--tests/comsub-eof6.sub5
-rw-r--r--tests/comsub-posix.right4
-rw-r--r--tests/comsub-posix.tests28
-rw-r--r--tests/comsub-posix2.sub13
-rw-r--r--tests/comsub-posix3.sub13
-rw-r--r--tests/comsub.right2
-rw-r--r--tests/comsub.tests13
-rw-r--r--tests/comsub1.sub13
-rw-r--r--tests/comsub3.sub13
-rw-r--r--tests/comsub4.sub13
-rw-r--r--tests/cond-regexp1.sub13
-rw-r--r--tests/cond-regexp2.sub13
-rw-r--r--tests/cond-regexp3.sub13
-rw-r--r--tests/cond.right2
-rw-r--r--[-rwxr-xr-x]tests/cond.tests13
-rw-r--r--tests/coproc.tests13
-rw-r--r--tests/cprint.tests13
-rw-r--r--tests/dbg-support.right614
-rw-r--r--tests/dbg-support.sub13
-rw-r--r--[-rwxr-xr-x]tests/dbg-support.tests24
-rw-r--r--tests/dbg-support2.right10
-rw-r--r--[-rwxr-xr-x]tests/dbg-support2.tests19
-rw-r--r--tests/dbg-support3.sub13
-rwxr-xr-xtests/dollar-at-star8
-rw-r--r--tests/dollar-at-star1.sub13
-rw-r--r--tests/dollar-at-star2.sub13
-rw-r--r--tests/dollar-at-star3.sub13
-rw-r--r--tests/dollar-at-star4.sub13
-rw-r--r--tests/dollar-at-star5.sub13
-rw-r--r--tests/dollar-at-star6.sub13
-rw-r--r--tests/dollar-at-star7.sub13
-rw-r--r--tests/dollar-at-star9.sub278
-rw-r--r--tests/dollar-at1.sub13
-rw-r--r--tests/dollar-at2.sub13
-rw-r--r--tests/dollar-at5.sub13
-rw-r--r--tests/dollar-at6.sub13
-rw-r--r--tests/dollar-at7.sub13
-rw-r--r--tests/dollar-star1.sub13
-rw-r--r--tests/dollar-star10.sub92
-rw-r--r--tests/dollar-star2.sub13
-rw-r--r--tests/dollar-star3.sub13
-rw-r--r--tests/dollar-star5.sub13
-rw-r--r--tests/dollar-star6.sub13
-rw-r--r--tests/dollar-star7.sub13
-rw-r--r--tests/dollar-star8.sub13
-rw-r--r--tests/dollar-star9.sub13
-rw-r--r--tests/dollar.right98
-rw-r--r--tests/dstack.right26
-rw-r--r--tests/dstack.tests15
-rw-r--r--tests/dstack2.tests13
-rw-r--r--tests/dynvar.tests15
-rw-r--r--tests/errors.right256
-rw-r--r--tests/errors.tests18
-rw-r--r--tests/errors1.sub13
-rw-r--r--tests/errors4.sub13
-rw-r--r--tests/errors6.sub13
-rw-r--r--tests/errors7.sub13
-rw-r--r--tests/exec.right28
-rw-r--r--tests/exec10.sub13
-rw-r--r--tests/exec12.sub13
-rw-r--r--tests/exec13.sub13
-rw-r--r--tests/exec14.sub47
-rw-r--r--tests/exec6.sub13
-rw-r--r--tests/exec7.sub13
-rw-r--r--tests/exec9.sub13
-rw-r--r--tests/execscript1
-rw-r--r--tests/exp.right5
-rw-r--r--tests/exp.tests15
-rw-r--r--tests/exp1.sub13
-rw-r--r--tests/exp10.sub13
-rw-r--r--tests/exp11.sub13
-rw-r--r--tests/exp12.sub13
-rw-r--r--tests/exp5.sub13
-rw-r--r--tests/exp6.sub13
-rw-r--r--tests/exp7.sub13
-rw-r--r--tests/exp8.sub13
-rw-r--r--tests/exp9.sub13
-rw-r--r--tests/exportfunc.right14
-rw-r--r--tests/exportfunc.tests13
-rw-r--r--tests/exportfunc1.sub13
-rw-r--r--tests/exportfunc2.sub13
-rw-r--r--tests/exportfunc3.sub13
-rw-r--r--tests/extglob.tests13
-rw-r--r--tests/extglob1.sub13
-rw-r--r--tests/extglob1a.sub13
-rw-r--r--[-rwxr-xr-x]tests/extglob2.tests13
-rw-r--r--tests/extglob3.sub13
-rw-r--r--tests/extglob3.tests13
-rw-r--r--tests/extglob4.sub13
-rw-r--r--tests/extglob5.sub13
-rw-r--r--tests/func.right10
-rw-r--r--tests/func.tests13
-rw-r--r--tests/func1.sub13
-rw-r--r--tests/func2.sub13
-rw-r--r--tests/func3.sub15
-rw-r--r--tests/func4.sub13
-rw-r--r--tests/getopts.right12
-rw-r--r--tests/getopts.tests13
-rw-r--r--tests/getopts1.sub13
-rw-r--r--tests/getopts10.sub13
-rw-r--r--tests/getopts2.sub13
-rw-r--r--tests/getopts3.sub13
-rw-r--r--tests/getopts4.sub13
-rw-r--r--tests/getopts5.sub13
-rw-r--r--tests/getopts6.sub13
-rw-r--r--tests/getopts7.sub13
-rw-r--r--tests/getopts9.sub13
-rw-r--r--tests/glob.right68
-rw-r--r--tests/glob.tests18
-rw-r--r--tests/glob1.sub13
-rw-r--r--tests/glob2.sub13
-rw-r--r--tests/glob3.sub48
-rw-r--r--tests/glob4.sub30
-rw-r--r--tests/glob5.sub76
-rw-r--r--tests/glob6.sub68
-rw-r--r--tests/glob7.sub11
-rw-r--r--tests/glob8.sub31
-rw-r--r--tests/glob9.sub13
-rw-r--r--tests/globstar.right3
-rw-r--r--tests/globstar.tests14
-rw-r--r--tests/globstar1.sub13
-rw-r--r--tests/globstar2.sub13
-rw-r--r--tests/globstar3.sub37
-rw-r--r--tests/heredoc.right22
-rw-r--r--tests/heredoc.tests46
-rw-r--r--tests/heredoc1.sub13
-rw-r--r--tests/heredoc3.sub13
-rw-r--r--tests/heredoc5.sub41
-rw-r--r--tests/herestr.right7
-rw-r--r--tests/herestr.tests33
-rw-r--r--tests/histexp.right8
-rw-r--r--tests/histexp.tests14
-rw-r--r--tests/histexp1.sub13
-rw-r--r--tests/histexp3.sub13
-rw-r--r--tests/histexp4.sub13
-rw-r--r--tests/histexp5.sub13
-rw-r--r--tests/histexp6.sub13
-rw-r--r--tests/histexp7.sub18
-rw-r--r--tests/history.right112
-rw-r--r--tests/history.tests16
-rw-r--r--tests/history1.sub13
-rw-r--r--tests/history3.sub13
-rw-r--r--tests/history4.sub47
-rw-r--r--tests/history5.sub57
-rw-r--r--tests/ifs-posix.tests13
-rw-r--r--tests/ifs.tests13
-rw-r--r--tests/intl.tests13
-rw-r--r--tests/intl3.sub13
-rw-r--r--tests/invert.tests13
-rw-r--r--tests/iquote.tests13
-rw-r--r--tests/iquote1.sub13
-rw-r--r--tests/jobs.right49
-rw-r--r--tests/jobs.tests52
-rw-r--r--tests/jobs1.sub13
-rw-r--r--tests/jobs3.sub15
-rw-r--r--tests/jobs4.sub13
-rw-r--r--tests/jobs5.sub51
-rw-r--r--tests/jobs7.sub6
-rw-r--r--tests/lastpipe.tests16
-rw-r--r--tests/lastpipe2.sub13
-rw-r--r--tests/mapfile.tests13
-rw-r--r--tests/more-exp.right16
-rw-r--r--tests/more-exp.tests13
-rw-r--r--tests/nameref.right294
-rw-r--r--tests/nameref.tests13
-rw-r--r--tests/nameref10.sub13
-rw-r--r--tests/nameref11.sub13
-rw-r--r--tests/nameref12.sub13
-rw-r--r--tests/nameref13.sub13
-rw-r--r--tests/nameref14.sub13
-rw-r--r--tests/nameref15.sub13
-rw-r--r--tests/nameref16.sub13
-rw-r--r--tests/nameref17.sub13
-rw-r--r--tests/nameref18.sub13
-rw-r--r--tests/nameref19.sub13
-rw-r--r--tests/nameref20.sub13
-rw-r--r--tests/nameref21.sub13
-rw-r--r--tests/nameref3.sub13
-rw-r--r--tests/nameref4.sub13
-rw-r--r--tests/nameref5.sub13
-rw-r--r--tests/nameref6.sub13
-rw-r--r--tests/nameref7.sub13
-rw-r--r--tests/nameref8.sub13
-rw-r--r--tests/new-exp.right97
-rw-r--r--tests/new-exp.tests39
-rw-r--r--tests/new-exp1.sub13
-rw-r--r--tests/new-exp10.sub13
-rw-r--r--tests/new-exp11.sub13
-rw-r--r--tests/new-exp12.sub40
-rw-r--r--tests/new-exp13.sub72
-rw-r--r--tests/new-exp14.sub19
-rw-r--r--tests/new-exp15.sub29
-rw-r--r--tests/new-exp2.sub15
-rw-r--r--tests/new-exp3.sub13
-rw-r--r--tests/new-exp4.sub14
-rw-r--r--tests/new-exp5.sub13
-rw-r--r--tests/new-exp6.sub13
-rw-r--r--tests/new-exp8.sub13
-rw-r--r--tests/new-exp9.sub13
-rw-r--r--tests/nquote.tests13
-rw-r--r--tests/nquote1.tests13
-rw-r--r--tests/nquote2.sub13
-rw-r--r--tests/nquote2.tests13
-rw-r--r--tests/nquote3.tests13
-rw-r--r--tests/nquote4.tests13
-rw-r--r--tests/nquote5.tests13
-rw-r--r--tests/parser.right14
-rw-r--r--tests/posix2.right8
-rw-r--r--tests/posix2.tests15
-rw-r--r--tests/posix2syntax.sub13
-rw-r--r--tests/posixexp.right9
-rw-r--r--tests/posixexp.tests14
-rw-r--r--tests/posixexp1.sub13
-rw-r--r--tests/posixexp2.sub13
-rw-r--r--tests/posixexp2.tests13
-rw-r--r--tests/posixexp3.sub13
-rw-r--r--tests/posixexp4.sub13
-rw-r--r--tests/posixexp5.sub13
-rw-r--r--tests/posixexp6.sub13
-rw-r--r--tests/posixexp8.sub11
-rw-r--r--tests/posixpat.tests13
-rw-r--r--tests/posixpipe.tests13
-rwxr-xr-xtests/precedence.tests90
-rw-r--r--tests/printf.right26
-rw-r--r--tests/printf.tests13
-rw-r--r--tests/printf1.sub13
-rw-r--r--tests/printf3.sub13
-rw-r--r--tests/printf4.sub13
-rw-r--r--tests/procsub.right6
-rw-r--r--tests/procsub.tests28
-rw-r--r--tests/procsub2.sub36
-rw-r--r--tests/quote.right64
-rw-r--r--tests/quote.tests15
-rw-r--r--tests/quote1.sub13
-rw-r--r--tests/quote2.sub13
-rw-r--r--tests/quote3.sub31
-rw-r--r--tests/quote4.sub101
-rw-r--r--tests/read.right4
-rw-r--r--tests/read.tests13
-rw-r--r--tests/read1.sub13
-rw-r--r--tests/read2.sub13
-rw-r--r--tests/read3.sub13
-rw-r--r--tests/read5.sub13
-rw-r--r--tests/redir.right29
-rw-r--r--tests/redir.tests13
-rw-r--r--tests/redir10.sub14
-rw-r--r--tests/redir11.sub22
-rw-r--r--tests/redir3.sub13
-rw-r--r--tests/redir4.sub13
-rw-r--r--tests/redir5.sub13
-rw-r--r--tests/redir7.sub13
-rw-r--r--tests/redir8.sub13
-rw-r--r--tests/redir9.sub13
-rw-r--r--tests/rhs-exp.tests13
-rw-r--r--tests/rhs-exp1.sub13
-rw-r--r--tests/rsh.right34
-rw-r--r--tests/rsh.tests13
-rw-r--r--tests/rsh1.sub13
-rw-r--r--tests/rsh2.sub13
-rw-r--r--tests/run-all18
-rw-r--r--tests/run-complete2
-rw-r--r--tests/run-dbg-support2
-rw-r--r--tests/run-dbg-support27
-rw-r--r--tests/run-minimal17
-rw-r--r--tests/run-precedence2
-rw-r--r--tests/run-varenv2
-rw-r--r--tests/run-vredir2
-rw-r--r--tests/set-e.tests13
-rw-r--r--tests/set-e1.sub13
-rw-r--r--[-rwxr-xr-x]tests/set-x.tests15
-rw-r--r--tests/set-x1.sub13
-rw-r--r--tests/shopt.right8
-rw-r--r--tests/shopt.tests19
-rw-r--r--tests/shopt1.sub52
-rw-r--r--tests/source5.sub15
-rw-r--r--tests/source6.sub13
-rw-r--r--tests/source7.sub13
-rw-r--r--tests/strip.tests13
-rw-r--r--tests/test.right34
-rw-r--r--tests/test.tests15
-rw-r--r--tests/test1.sub13
-rw-r--r--tests/tilde.right2
-rw-r--r--tests/tilde.tests17
-rw-r--r--tests/tilde2.tests13
-rw-r--r--tests/trap.right28
-rw-r--r--tests/trap.tests13
-rwxr-xr-xtests/trap2.sub13
-rw-r--r--tests/trap3.sub2
-rw-r--r--tests/trap4.sub13
-rw-r--r--tests/trap5.sub13
-rw-r--r--tests/trap6.sub13
-rw-r--r--tests/type.right12
-rw-r--r--tests/type.tests13
-rw-r--r--tests/type2.sub13
-rw-r--r--tests/type3.sub13
-rw-r--r--tests/type4.sub13
-rw-r--r--tests/unicode1.sub13
-rw-r--r--tests/unicode2.sub13
-rw-r--r--tests/varenv.right130
-rw-r--r--tests/varenv.tests22
-rw-r--r--tests/varenv1.sub13
-rw-r--r--tests/varenv10.sub16
-rw-r--r--tests/varenv11.sub13
-rw-r--r--tests/varenv12.sub105
-rw-r--r--tests/varenv13.sub13
-rw-r--r--tests/varenv14.sub15
-rw-r--r--tests/varenv15.sub13
-rw-r--r--tests/varenv16.sub51
-rw-r--r--tests/varenv17.sub44
-rw-r--r--tests/varenv18.sub41
-rw-r--r--tests/varenv19.sub51
-rw-r--r--tests/varenv2.sub13
-rw-r--r--tests/varenv20.sub13
-rw-r--r--tests/varenv21.sub48
-rw-r--r--tests/varenv3.sub14
-rw-r--r--tests/varenv4.sub13
-rw-r--r--tests/varenv5.sub13
-rw-r--r--tests/varenv6.sub13
-rw-r--r--tests/varenv7.sub13
-rw-r--r--tests/varenv9.sub13
-rw-r--r--tests/vredir.right4
-rw-r--r--tests/vredir.tests13
-rw-r--r--tests/vredir1.sub13
-rw-r--r--tests/vredir2.sub13
-rw-r--r--tests/vredir4.sub13
-rw-r--r--tests/vredir5.sub13
-rw-r--r--tests/vredir7.sub13
-rw-r--r--trap.c98
-rw-r--r--trap.h111
-rw-r--r--unwind_prot.c32
-rw-r--r--unwind_prot.h24
-rw-r--r--variables.c575
-rw-r--r--variables.h343
-rw-r--r--version.c8
-rw-r--r--xmalloc.c10
-rw-r--r--xmalloc.h22
-rw-r--r--y.tab.c2927
-rw-r--r--y.tab.h122
828 files changed, 92733 insertions, 54601 deletions
diff --git a/CHANGES b/CHANGES
index 262fd656..7a47c7c5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,637 @@
+This document details the changes between this version, bash-5.1-rc3, and
+the previous version, bash-5.1-rc2.
+
+1. Changes to Bash
+
+a. The `assoc_expand_once' option now affects the evaluation of the -v primary
+ to test and the [[ compound command.
+
+2. Changes to Readline
+
+a. Fixed a bug that could cause point to be set beyond the end of the line
+ buffer when aborting an incremental search.
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.1-rc2, and
+the previous version, bash-5.1-rc1.
+
+1. Changes to Bash
+
+a. Process substitutions started from an interactive shell no longer have their
+ standard input implicitly redirected from /dev/null.
+
+b. Fixed an issue with setting the SIGINT trap handler in an interactive shell
+ when temporarily running $PROMPT_COMMAND non-interactively.
+
+2. Changes to Readline
+
+a. Terminals that are named "dumb" or unknown do not enable bracketed paste
+ by default.
+
+b. Ensure that disabling bracketed paste turns off highlighting the incremental
+ search string when the search is successful.
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.1-rc1, and
+the previous version, bash-5.1-beta.
+
+1. Changes to Bash
+
+a. Fixed an inconsistency in the way HISTCMD is calculated when it's expanded
+ during a multi-line command.
+
+b. Modified the change to here-document expansion containing backslash-quoted
+ double quotes.
+
+c. Fixed a case where the shells's exit status could be greater than 255.
+
+d. Modified changed to process substitution so the executed command has its
+ stdin redirected from /dev/null if it was previously interactive and
+ reading commands from the terminal.
+
+2. New Features in Bash
+
+a. There is a new contributed loadable builtin: asort.
+
+3. Changes to Readline
+
+a. Fixed a bug that could cause an application with an application-specific
+ redisplay function to crash if the line data structures had not been
+ initialized.
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.1-beta, and
+the previous version, bash-5.1-alpha.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused name references to variables to not update the
+ referenced variable's assignment side effects.
+
+b. Tightened up the parameter transformation error checking for invalid
+ transformation operators.
+
+c. System-specific changes for: FreeBSD
+
+d. A few minor changes to move potential uses of stdio functions out of signal
+ handling paths.
+
+e. Make sure SIGCHLD is blocked in all cases where waitchld() is not called
+ from a signal handler.
+
+f. Changed `command' builtin processing so it no longer starts an extra process
+ when run asynchronously (command x &).
+
+g. Avoid performing tilde expansion after `:' in words that look like assignment
+ statements when in posix mode.
+
+h. Slight changes to how the `complete' builtin prints out options and actions
+ for completion specifications.
+
+i. Several changes to how `local -' restores the values of options and
+ $SHELLOPTS.
+
+j. Don't treat a word in a compound assignment as an assignment statement
+ unless it has a valid subscript before the `='.
+
+k. Fixed a bug with the DEBUG trap and process substitution that caused the
+ terminal's process group to be set incorrectly.
+
+l. Fixed a bug that left readline's signal handlers installed while running a
+ shell command from a bindable readline command.
+
+m. Fixed the `fc' builtin to clamp out of range history specifications at the
+ boundaries of the history list for POSIX conformance.
+
+n. Fixed a bug that caused ${foo@a} to treat foo as an unset variable if it
+ was an array without a value for subscript 0/"0" but had other set
+ elements.
+
+o. Fixed a bug that caused the history code to attempt to parse command
+ substitutions looking for shell comments before adding them to the history,
+ even while parsing here-documents.
+
+p. Fixed a bug that could cause a syntax error in a command read by `eval' to
+ exit an interactive shell.
+
+2. New Features in Bash
+
+a. If the hash builtin is listing hashed filenames portably, don't print
+ anything if the table is empty.
+
+b. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component.
+
+c. Bash attempts to optimize away forks in the last command in a function body
+ under appropriate circumstances.
+
+d. The globbing code now uses fnmatch(3) to check collation elements (if
+ available) even in cases without multibyte characters.
+
+e. The `fg' and `bg' builtins now return an error in a command substitution
+ when asked to restart a job inherited from the parent shell.
+
+f. The shell now attempts to unlink all FIFOs on exit, whether a consuming
+ process has finished with them or not.
+
+3. Changes to Readline
+
+a. Make sure that all undo groups are closed when leaving vi insertion mode.
+
+b. Make sure that the vi-mode `C' and `c' commands enter insert mode even if
+ the motion command doesn't have any effect.
+
+c. Fixed several potential memory leaks in the callback mode context handling.
+
+d. If readline is handling a SIGTTOU, make sure SIGTTOU is blocked while
+ executing the terminal cleanup code, since it's no longer run in a signal
+ handling context.
+
+4. New Features in Readline
+
+a. The signal cleanup code now blocks SIGINT while processing after a SIGINT.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-5.1-alpha, and
+the previous version, bash-5.0-release.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused a posix-mode shell to not exit if the return builtin
+ was executed outside a function or dot script.
+
+b. Fixed a bug where `declare +f' could potentially turn off the function
+ attribute.
+
+c. Restored bash-4.4 pathname expansion behavior when a word to be expanded had
+ only backslashes, not any of the other globbing characters. This came after
+ an extensive POSIX group discussion (interp #1234).
+
+d. There are more changes to avoid performing word expansions multiple times on
+ arithmetic expressions.
+
+e. Fixed a bug with alias expansion when the alias ends with a TAB.
+
+f. Fixed a bug that caused programmable completion to return an error if the
+ shell function name supplied as an argument to `complete -F' was invalid.
+
+g. There are several fixes to buffer overflows found as the result of fuzzing
+ with random input.
+
+h. Fixed a bug that caused the edit-and-execute-command editing command to
+ start with the previous history line if invoked on an empty line.
+
+i. Fixed a bug that potentially caused `bind --help' to change readline's
+ output stream.
+
+j. Turning off posix mode now restores the vi-insertion mode binding for TAB
+ that was in effect when posix mode was enabled.
+
+k. Restore the previous state of job control being enabled if `exec' fails in
+ an interactive shell.
+
+l. Fixed a bug that caused the terminal's process group to be set incorrectly
+ if job control was turned off before starting an interactive shell.
+
+m. Fixed a bug that caused a crash when HISTSIZE=0.
+
+n. Fixed a word expansion bug that caused null strings on the rhs of expansions
+ to be discarded incorrectly.
+
+o. History list management does a better job of handling the situation where
+ the number of history entries from the current shell session is greater than
+ the number of entries in the history list.
+
+p. Fixed a bug that caused the `fc' builtin to attempt to dereference a newly-
+ freed history entry.
+
+q. Fixed a bug that made the `Q' variable transformation not work well with
+ `set -u'.
+
+r. There are several word expansion fixes for expanding $* and $@ in contexts
+ where word splitting is not going to be performed, since each positional
+ parameter must expand to a separate word.
+
+s. Fixed a bug that could cause ^D to exit bash immediately even if there were
+ stopped jobs.
+
+t. Fixed a bug with double-quoting and backslash-quoting strings containing
+ multibyte characters for reuse.
+
+u. Fixed a bug that caused the line number to be reported incorrectly if the
+ shell executed a (command) subshell.
+
+v. Fixed a bug that caused the shell to fail to reap process substitutions
+ when they went out of scope, which had unpredictable results.
+
+w. Fixed a bug that caused null strings in arguments to [[ conditional command
+ operators to compare incorrectly.
+
+x. Changed the behavior of `wait' without arguments to only wait for background
+ processes the current shell instance started, not background children it may
+ have inherited.
+
+y. Fixed a bug that could cause command substitution to leave file descriptors
+ open if the shell received many SIGINTs.
+
+z. Bash now behaves better if the `**' filename expansion operator encounters a
+ symbolic link to a directory, avoiding more cases where it might return
+ duplicate pathnames.
+
+aa. Programmable completion now canonicalizes directory names in the same way
+ as bash word completion, so `..' is handled consistently.
+
+bb. Fixed a bug when using RETURN as the delimiter to the read builtin; it
+ caused readline to set the binding for RETURN incorrectly.
+
+cc. Fixed a bug that caused `history -d' to delay printing an out-of-range
+ error message.
+
+dd. Fixed a bug with `bash -c command' where `command' ends with an expanded
+ alias.
+
+ee. Fixed a bug that could result in `history -n' adding spurious line feeds to
+ commands in the history list.
+
+ff. The $RANDOM random number generator now XORs the top and bottom halves of
+ the internal 32-bit value to introduce more randomness. Setting the shell
+ compatibility level to 50 or lower undoes this.
+
+gg. Fixed several problems caused by running the DEBUG trap on simple commands
+ executed as part of a pipeline.
+
+ii. Fixed a bug that didn't allow `bind -r' to remove the binding for \C-@.
+
+jj. Several fixes to the bash-backward-shellword bindable readline command to
+ behave better when at the last character on the line.
+
+kk. If `set -x' is enabled, bash doesn't print a command twice if it's run by
+ the `command' builtin.
+
+ll. Fixed a bug with printing function definitions containing here documents.
+
+mm. Fixed a bug that could cause the `bind' builtin to set $? to -1.
+
+nn. Fixed a bug that didn't reset the timezone information correctly when the
+ TZ variable was unset.
+
+oo. Fixed several issues with assigning an associative array variable using a
+ compound assignment that expands the value of the same variable.
+
+pp. Fixed several places where the shell set $? without setting PIPESTATUS.
+
+qq. Fixed a problem with glob bracket expressions containing invalid character
+ classes, collating symbols, or equivalence classes -- they should not
+ require a closing right bracket.
+
+rr. Fixed a bug where running a builtin in a subshell did not run the EXIT trap.
+
+ss. Fixed several problems with posix-mode variable assignments preceding
+ shell function calls and posix special builtins, so that they create and
+ modify variables at the current scope.
+
+tt. Fix history initialization so `bash +o history' works as expected.
+
+uu. Fixed a bug in the bindable edit-and-execute-command command that could
+ interfere with the shell's parsing state.
+
+vv. Fixed an issue with nested traps running command substitutions in command
+ lines with command substitutions.
+
+ww. Fixed a bug with globbing pathnames that contain invalid multibyte
+ characters (sequences that don't correspond to a character in the current
+ locale).
+
+xx. Fixed a bug that caused the shell not to exit if a function definition
+ failed while errexit was enabled.
+
+yy. Process substitution processes now get their input from /dev/null, since
+ they are asynchronous, not interactive, and not jobs.
+
+zz. Setting nocaseglob no longer turns on case-insensitive regexp matching.
+
+aaa. Fixed a bug that resulted in extra blank lines being added to some history
+ entries containing here-documents.
+
+bbb. Fixed a bug that resulted in incorrect matching of some patterns in word
+ expansion if they expanded to the empty string.
+
+ccc. Fixed here-string expansion so it behaves the same as expansion of the
+ rhs of an assignment statement.
+
+ddd. Changed here-document parsing to no longer allow the end of the here
+ document to delimit a command substitution.
+
+eee. Several fixes to history expansion: multiple :p modifiers work, a ^ word
+ designator works as part of a range, and a `-' is treated as part of a
+ search string if it immediately follows a `!'.
+
+fff. Fixed a bug in pattern substitution with null matches in a string
+ containing multibyte characters.
+
+ggg. Unbinding a key sequence bound with `bind -x' now removes the key sequence
+ from the additional keymap `bind -x' uses.
+
+hhh. Fixed a bug with command start detection for completion so that it doesn't
+ mistake brace expansion for the start of a command.
+
+iii. Fixed a bug that caused local variables with the same name as variables
+ appearing in a function's temporary environment to not be marked as local.
+
+jjj. Fixed a bug that could cause SIGCHLD to be blocked when executing return
+ or exec in the rightmost pipeline element with lastpipe enabled.
+
+kkk. Fixed a bug that could result in commands without the execute bit set
+ being added to the command hash table.
+
+lll. Fixed a bug that allowed non-digits to follow the `#' in a `base#number'
+ integer constant.
+
+mmm. Fixed a bug that made `time -- command' attempt to execute `--'.
+
+nnn. Fixed a couple of bugs with variable transformation using arrays
+ subscripted with `*' or `@'.
+
+ooo. A failure to create a variable using `declare' in a function no longer
+ causes the function to return immediately.
+
+ppp. Fixed a bug that could cause the := word expansion to add a non-null
+ value if attempting to assign a null string when double-quoted.
+
+qqq. Fixed a bug that could cause backslashes quoting double quotes in here
+ document bodies to not be removed when expanding the body.
+
+rrr. Fixed a bug that caused commands following a subshell while the shell is
+ reading input from stdin but not interactive, while job control is
+ enabled, to be executed twice.
+
+sss. Fixed a bug where receiving SIGTERM from a different process while
+ readline was active could cause the shell to terminate.
+
+ttt. In posix mode, running a trap after the read builtin now sees the exit
+ status of the read builtin (e.g., 130 after a SIGINT) in $?.
+
+uuu. Fixed a bug with nameref variables referencing array subscripts used in
+ arithmetic expressions.
+
+vvv. Fixed a bug that caused the pipeline process group id to be reset in the
+ middle of a command list run by a shell started to run a command
+ substitution.
+
+www. Restricted shells can no longer read and write history files with pathnames
+ containing slashes.
+
+xxx. Fixed a couple of problems with 0 and -0 used as arguments to `fc' when
+ not listing commands from the history.
+
+yyy. When `test' is supplied four or more arguments, treat an argument that
+ looks like an operator (e.g., -e), but is in a place where only a string
+ is valid, as a string, as it would be when using the POSIX rules, instead
+ of an operator with a missing argument.
+
+zzz. There is no `compat50' shopt option. Changes to the shell compatibility
+ level should use the BASH_COMPAT variable.
+
+aaaa. Redirection failures with compound commands are now treated as errors
+ that cause the shell to exit if `errexit' is enabled.
+
+bbbb. Redirection failure error messages no longer expand the word in the
+ redirection again.
+
+cccc. History expansion is no longer performed while parsing a here-document
+ inside a command substitution.
+
+2. Changes to Readline
+
+a. There are a number of fixes that were found as the result of fuzzing with
+ random input.
+
+b. Changed the revert-all-at-newline behavior to make sure to start at the end
+ of the history list when doing it, instead of the line where the user hit
+ return.
+
+c. When parsing `set' commands from the inputrc file or an application, readline
+ now allows trailing whitespace.
+
+d. Fixed a bug that left a file descriptor open to the history file if the
+ file size was 0.
+
+e. Fixed a problem with binding key sequences containing meta characters.
+
+f. Fixed a bug that caused the wrong line to be displayed if the user tried to
+ move back beyond the beginning of the history list, or forward past the end
+ of the history list.
+
+g. If readline catches SIGTSTP, it now sets a hook that allows the calling
+ application to handle it if it desires.
+
+h. Fixed a redisplay problem with a prompt string containing embedded newlines.
+
+i. Fixed a problem with completing filenames containing invalid multibyte
+ sequences when case-insensitive comparisons are enabled.
+
+j. Fixed a redisplay problem with prompt strings containing invisible multibyte
+ characters.
+
+k. Fixed a problem with multibyte characters mapped to editing commands that
+ modify the search string in incremental search.
+
+l. Fixed a bug with maintaining the key sequence while resolving a bound
+ command in the presence of ambiguous sequences (sequences with a common
+ prefix), in most cases while attempting to unbind it.
+
+m. Fixed several buffer overflows found as the result of fuzzing.
+
+n. Reworked backslash handling when translating key sequences for key binding
+ to be more uniform and consistent, which introduces a slight backwards
+ incompatibility.
+
+o. Fixed a bug with saving the history that resulted in errors not being
+ propagated to the calling application when the history file is not writable.
+
+p. Readline only calls chown(2) on a newly-written history file if it really
+ needs to, instead of having it be a no-op.
+
+q. Readline now behaves better when operate-and-get-next is used when the
+ history list is `full': when there are already $HISTSIZE entries.
+
+r. Fixed a bug that could cause vi redo (`.') of a replace command not to work
+ correctly in the C or POSIX locale.
+
+s. Fixed a bug with vi-mode digit arguments that caused the last command to be
+ set incorrectly. This prevents yank-last-arg from working as intended, for
+ example.
+
+3. New Features in Bash
+
+a. `bind -x' now supports different bindings for different editing modes and
+ keymaps.
+
+b. Bash attempts to optimize the number of times it forks when executing
+ commands in subshells and from `bash -c'.
+
+c. Here documents and here strings now use pipes for the expanded document if
+ it's smaller than the pipe buffer size, reverting to temporary files if it's
+ larger.
+
+d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
+
+e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL
+ and those that were SIG_IGN when the shell starts.
+
+f. The shell now expands the history number (e.g., in PS1) even if it is not
+ currently saving commands to the history list.
+
+g. `read -e' may now be used with arbitrary file descriptors (`read -u N').
+
+h. The `select' builtin now runs traps if its internal call to the read builtin
+ is interrupted by a signal.
+
+i. SRANDOM: a new variable that expands to a 32-bit random number that is not
+ produced by an LCRNG, and uses getrandom/getentropy, falling back to
+ /dev/urandom or arc4random if available. There is a fallback generator if
+ none of these are available.
+
+j. shell-transpose-words: a new bindable readline command that uses the same
+ definition of word as shell-forward-word, etc.
+
+k. The shell now adds default bindings for shell-forward-word,
+ shell-backward-word, shell-transpose-words, and shell-kill-word.
+
+l. Bash now allows ARGV0 appearing in the initial shell environment to set $0.
+
+m. If `unset' is executed without option arguments, bash tries to unset a shell
+ function if a name argument cannot be a shell variable name because it's not
+ an identifier.
+
+n. The `test -N' operator uses nanosecond timestamp granularity if it's
+ available.
+
+o. Bash posix mode now treats assignment statements preceding shell function
+ definitions the same as in its default mode, since POSIX has changed and
+ no longer requires those assignments to persist after the function returns
+ (POSIX interp 654).
+
+p. BASH_REMATCH is no longer readonly.
+
+q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
+ or `wait' without arguments.
+
+r. Sorting the results of pathname expansion now uses byte-by-byte comparisons
+ if two strings collate equally to impose a total order; the result of a
+ POSIX interpretation (#963 and #1070).
+
+s. Bash now allows SIGINT trap handlers to execute recursively.
+
+t. Bash now saves and restores state around setting and unsetting posix mode,
+ instead of having unsetting posix mode set a known state.
+
+u. Process substitution is now available in posix mode.
+
+v. READLINE_MARK: a new variable available while executing commands bound with
+ `bind -x', contains the value of the mark.
+
+w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
+ startup.
+
+x. `test -v N' can now test whether or not positional parameter N is set.
+
+y. `local' now honors the `-p' option to display all local variables at the
+ current context.
+
+z. The `@a' variable transformation now prints attributes for unset array
+ variables.
+
+aa. The `@A' variable transformation now prints a declare command that sets a
+ variable's attributes if the variable has attributes but is unset.
+
+bb. `declare' and `local' now have a -I option that inherits attributes and
+ value from a variable with the same name at a previous scope.
+
+cc. When run from a -c command, `jobs' now reports the status of completed jobs.
+
+dd. New `U', `u', and `L' parameter transformations to convert to uppercase,
+ convert first character to uppercase, and convert to lowercase,
+ respectively.
+
+ee. PROMPT_COMMAND: can now be an array variable, each element of which can
+ contain a command to be executed like a string PROMPT_COMMAND variable.
+
+ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
+
+gg. Associative arrays may be assigned using a list of key-value pairs within
+ a compound assignment. Compound assignments where the words are not of
+ the form [key]=value are assumed to be key-value assignments. A missing or
+ empty key is an error; a missing value is treated as NULL. Assignments may
+ not mix the two forms.
+
+hh. New `K' parameter transformation to display associative arrays as key-
+ value pairs.
+
+ii. Writing history to syslog now handles messages longer than the syslog max
+ length by writing multiple messages with a sequence number.
+
+jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since
+ they are nominally integer variables. LINENO is not an integer variable.
+
+kk. Bash temporarily suppresses the verbose option when running the DEBUG trap
+ while running a command from the `fc' builtin.
+
+ll. `wait -n' now accepts a list of job specifications as arguments and will
+ wait for the first one in the list to change state.
+
+mm. The associative array implementation can now dynamically increase the
+ size of the hash table based on insertion patterns.
+
+nn. HISTFILE is now readonly in a restricted shell.
+
+oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit
+ systems.
+
+4. New Features in Readline
+
+a. If a second consecutive completion attempt produces matches where the first
+ did not, treat it as a new completion attempt and insert a match as
+ appropriate.
+
+b. Bracketed paste mode works in more places: incremental search strings, vi
+ overstrike mode, character search, and reading numeric arguments.
+
+c. Readline automatically switches to horizontal scrolling if the terminal has
+ only one line.
+
+d. Unbinding all key sequences bound to a particular readline function now
+ descends into keymaps for multi-key sequences.
+
+e. rl-clear-display: new bindable command that clears the screen and, if
+ possible, the scrollback buffer (bound to emacs mode M-C-l by default).
+
+f. New active mark and face feature: when enabled, it will highlight the text
+ inserted by a bracketed paste (the `active region') and the text found by
+ incremental and non-incremental history searches. This is tied to bracketed
+ paste and can be disabled by turning off bracketed paste.
+
+g. Readline sets the mark in several additional commands.
+
+h. Bracketed paste mode is enabled by default.
+
+i. Readline tries to take advantage of the more regular structure of UTF-8
+ characters to identify the beginning and end of characters when moving
+ through the line buffer.
+
+j. The bindable operate-and-get-next command (and its default bindings) are
+ now part of readline instead of a bash-specific addition.
+
+------------------------------------------------------------------------------
This document details the changes between this version, bash-5.0-release, and
the previous version, bash-5.0-rc1.
@@ -79,7 +713,7 @@ d. Fixed a problem with using `*' and `@' as subscripts when assigning values
e. Fixed a bug that could cause a huge memory allocation when completing a
word beginning with an invalid tilde expansion.
-f. Cleaned up some incompatiblities with bash-4.4 when expanding indexed array
+f. Cleaned up some incompatibilities with bash-4.4 when expanding indexed array
subscripts used in arithmetic expansions when assoc_expand_once is enabled.
g. The ${parameter@a} expansion will display attributes even if `parameter' is
@@ -731,7 +1365,7 @@ h. The `name' argument to the `coproc' reserved word now undergoes word
i. A nameref name resolution loop in a function now resolves to a variable by
that name in the global scope.
-j. The `wait' builtin now has a `-f' option, which signfies to wait until the
+j. The `wait' builtin now has a `-f' option, which signifies to wait until the
specified job or process terminates, instead of waiting until it changes
state.
@@ -1374,7 +2008,7 @@ j. Fixed a bug involving sign extension when reallocating the input line
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.
+l. Bash now uses the current locale's decimal point in command timing output.
m. Fixed a bug that caused segmentation faults while reading here documents if
PS2 contains a command substitution.
@@ -1417,7 +2051,7 @@ x. Fixed a bug that caused the shell to exit with the wrong (but non-zero)
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
+z. Fixed a bug that caused the shell to close process substitution file
descriptors when executing a script without the `#!' leading line.
aa. Fixed a typo that caused the `compat42' shell option to set the wrong
@@ -1814,7 +2448,7 @@ bb. Aliases whose value ends in a shell metacharacter now expand in a way to
4. New Features in Readline
-a. The history truncation code now uses the same error recovery mechansim as
+a. The history truncation code now uses the same error recovery mechanism as
the history writing code, and restores the old version of the history file
on error. The error recovery mechanism handles symlinked history files.
@@ -2151,7 +2785,7 @@ c. Fixed a bug that caused the pattern removal and pattern substitution word
expansions and case statement word expansion to not match the empty string.
d. Fixed a bug that caused the tzset() function to not work after changing
- the TZ enviroment variable.
+ the TZ environment variable.
e. Fixed a bug that caused the RHS of an assignment statement to undergo
word splitting when it contained an unquoted $@.
@@ -2202,7 +2836,7 @@ t. Fixed a problem with the bash malloc's internal idea of the top of the
memory heap that resulted in incorrect decisions to try to reduce the
break and give memory back to the kernel.
-u. There are changes to the expansions peformed on compound array assignments,
+u. There are changes to the expansions performed on compound array assignments,
in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
foo[ind1]=bar foo[ind2]=baz.
@@ -3204,7 +3838,7 @@ j. Fixed a bug in brace expansion that caused unwanted zero padding of the
k. Fixed a bug that prevented the |& construct from working as intended when
used with a simple command with additional redirections.
-l. Fixed a bug with the case statment ;& terminator that caused the shell to
+l. Fixed a bug with the case statement ;& terminator that caused the shell to
dereference a NULL pointer.
m. Fixed a bug that caused assignment statements or redirections preceding
@@ -3937,7 +4571,7 @@ l. Fixed a bug in the code that buffers characters received very quickly in
succession which caused characters to be dropped.
m. Fixed a bug that caused readline to reference uninitialized data structures
- if it received a SIGWINCH before completing initialzation.
+ if it received a SIGWINCH before completing initialization.
n. Fixed a bug that caused the vi-mode `last command' to be set incorrectly
and therefore unrepeatable.
@@ -4269,7 +4903,7 @@ x. Fixed a bug that caused the shell to dump core when performing filename
y. Returned to the original Bourne shell rules for parsing ``: no recursive
parsing of embedded quoted strings or ${...} constructs.
-z. The inheritence of the DEBUG, RETURN, and ERR traps is now dependent only
+z. The inheritance of the DEBUG, RETURN, and ERR traps is now dependent only
on the settings of the `functrace' and `errtrace' shell options, rather
than whether or not the shell is in debugging mode.
@@ -4504,7 +5138,7 @@ and the previous version, bash-3.1-alpha1.
a. Added some system-specific signal names.
b. Fixed a typo in the ulimit builtin to make `x' the right option to
- maniuplate the limit on file locks.
+ manipulate the limit on file locks.
c. Fixed a problem with using += to append to index 0 of an array variable
when not using subscript syntax.
@@ -5205,7 +5839,7 @@ y. Fixed a problem that could cause here documents to not be created correctly
2. Changes to Readline
a. Change to history expansion functions to treat `^' as equivalent to word
- one, as the documention states.
+ one, as the documentation states.
b. Some changes to the display code to improve display and redisplay of
multibyte characters.
@@ -5822,7 +6456,7 @@ c. Fixed a problem which caused the display to be messed up when the last
line of a multi-line prompt (possibly containing invisible characters)
was longer than the screen width.
-d. Fixed a problem with the vi-mode `r' command that ocurred on systems with
+d. Fixed a problem with the vi-mode `r' command that occurred on systems with
support for multibyte characters when running in a locale without any
multibyte characters.
@@ -6235,7 +6869,7 @@ l. The `printf' builtin now handles the `ll' and `j' length modifiers
passed to printf(3).
m. Renamed a number of the bash-specific autoconf macros in aclocal.m4 to
- have more sytematic naming, with accompanying changes to configure.in.
+ have more systematic naming, with accompanying changes to configure.in.
n. Fixed snprintf to handle long doubles and the %a/%A conversions by
falling back to sprintf, as long as sprintf supports them.
@@ -6348,7 +6982,7 @@ and the previous version, bash-2.05a-alpha1.
1. Changes to Bash
-a. Fixed a bug in the evalution of arithmetic `for' statements when the
+a. Fixed a bug in the evaluation of arithmetic `for' statements when the
expanded expression is NULL.
b. Fixed an unassigned variable problem in the redirection printing code.
@@ -6404,7 +7038,7 @@ o. `umask' now prints four digits when printing in octal mode, for
p. Lots of changes to the `printf' builtin from Paul Eggert: it handles `L'
formats and long doubles better, and internal functions have been
- simpified where appropriate.
+ simplified where appropriate.
q. Some `time_t' fixes for machines were a time_t is bigger than a long.
@@ -6477,7 +7111,7 @@ c. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is
a. New bindable variable `history-preserve-point'. If set, the history
code attempts to place the user at the same location on each history
- line retrived with previous-history or next-history.
+ line retrieved with previous-history or next-history.
------------------------------------------------------------------------------
This document details the changes between this version, bash-2.05a-alpha1,
@@ -6544,9 +7178,9 @@ v. Fixes, mostly from Paul Eggert, for a few possible buffer overflows in
w. Fixes from Paul Eggert to avoid most of the type casts in the shell code,
and use more appropriate types for a number of variables.
-x. Command substition no longer inherits the DEBUG trap.
+x. Command substitution no longer inherits the DEBUG trap.
-y. Some fixes to the process substition code on machines without /dev/fd so
+y. Some fixes to the process substitution code on machines without /dev/fd so
that named pipes are not removed inappropriately.
z. The loadable `getconf' builtin is now much more complete, and will become
@@ -6943,7 +7577,7 @@ g. Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and
a. A new loadable builtin, realpath, which canonicalizes and expands symlinks
in pathname arguments.
-b. When `set' is called without options, it prints function defintions in a
+b. When `set' is called without options, it prints function definitions in a
way that allows them to be reused as input. This affects `declare' and
`declare -p' as well.
@@ -7702,7 +8336,7 @@ m. Improvements were made to the `read' builtin so that it makes many
n. The expansion of $- will include `c' and `s' when those options are
supplied at shell invocation.
-o. Several improvments were made to the completion code: variable completion
+o. Several improvements were made to the completion code: variable completion
now works better when there are unterminated expansions, command
completion understands quotes better, and completion now works in certain
unclosed $(... constructs.
@@ -7790,7 +8424,7 @@ d. There is a new shell option, no_empty_command_completion, which, when
enabled, disables command completion when TAB is typed on an empty line.
e. The `help' builtin has a `-s' option to just print a builtin's usage
- synopsys.
+ synopsis.
f. There are several new arithmetic operators: id++, id-- (variable
post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
@@ -9674,5 +10308,5 @@ b. A bug encountered when expand-tilde was enabled and file completion was
c. A slight change was made to the incremental search termination behavior.
ESC still terminates the search, but if input is pending or arrives
within 0.1 seconds (on systems with select(2)), it is used as a prefix
- character. This is intented to allow users to terminate searches with
+ character. This is intended to allow users to terminate searches with
the arrow keys and get the behavior they expect.
diff --git a/COMPAT b/COMPAT
index ce6a791c..5cfb8360 100644
--- a/COMPAT
+++ b/COMPAT
@@ -2,11 +2,11 @@ Compatibility with previous versions
====================================
This document details the incompatibilities between this version of bash,
-bash-5.0, and the previous widely-available versions, bash-3.x (which is
+bash-5.1, and the previous widely-available versions, bash-3.2 (which is
still the `standard' version for Mac OS X), 4.2/4.3 (which are still
-standard on a few Linux distributions), and bash-4.4, the current
-widely-available version. These were discovered by users of bash-2.x
-through 4.x, so this list is not comprehensive. Some of these
+standard on a few Linux distributions), and bash-4.4/bash-5.0, the current
+widely-available versions. These were discovered by users of bash-2.x
+through 5.x, so this list is not comprehensive. Some of these
incompatibilities occur between the current version and versions 2.0 and
above.
@@ -292,7 +292,7 @@ above.
36. Bash-4.0 now allows process substitution constructs to pass unchanged
through brace expansion, so any expansion of the contents will have to be
- separately specified, and each process subsitution will have to be
+ separately specified, and each process substitution will have to be
separately entered.
37. Bash-4.0 now allows SIGCHLD to interrupt the wait builtin, as Posix
@@ -404,78 +404,145 @@ above.
contexts (including the global context) unless the shell is in posix
mode, since export and readonly are special builtins.
+63. Bash-5.1 changes the way posix-mode shells handle assignment statements
+ preceding shell function calls. Previous versions of POSIX specified that
+ such assignments would persist after the function returned; subsequent
+ versions of the standard removed that requirement (interpretation #654).
+ Bash-5.1 posix mode assignment statements preceding shell function calls
+ do not persist after the function returns.
+
+64. Bash-5.1 reverts to the bash-4.4 treatment of pathname expansion of words
+ containing backslashes but no other special globbing characters. This comes
+ after a protracted discussion and a POSIX interpretation (#1234).
+
+65. In bash-5.1, disabling posix mode attempts to restore the state of several
+ options that posix mode modifies to the state they had before enabling
+ posix mode. Previous versions restored these options to default values.
+
Shell Compatibility Level
=========================
Bash-4.0 introduced the concept of a `shell compatibility level', specified
-as a set of options to the shopt builtin (compat31, compat32, compat40,
-compat41, and compat42 at this writing). There is only one current
-compatibility level -- each option is mutually exclusive. This list does not
-mention behavior that is standard for a particular version (e.g., setting
-compat32 means that quoting the rhs of the regexp matching operator quotes
-special regexp characters in the word, which is default behavior in bash-3.2
-and above).
-
-Bash-4.3 introduces a new shell variable: BASH_COMPAT. The value assigned
+as a set of options to the shopt builtin (compat31, compat32, compat40,
+compat41, and so on). There is only one current compatibility level --
+each option is mutually exclusive. The compatibility level is intended to
+allow users to select behavior from previous versions that is incompatible
+with newer versions while they migrate scripts to use current features and
+behavior. It's intended to be a temporary solution.
+
+This section does not mention behavior that is standard for a particular
+version (e.g., setting compat32 means that quoting the rhs of the regexp
+matching operator quotes special regexp characters in the word, which is
+default behavior in bash-3.2 and above).
+
+If a user enables, say, compat32, it may affect the behavior of other
+compatibility levels up to and including the current compatibility level.
+The idea is that each compatibility level controls behavior that changed in
+that version of bash, but that behavior may have been present in earlier
+versions. For instance, the change to use locale-based comparisons with
+the `[[' command came in bash-4.1, and earlier versions used ASCII-based
+comparisons, so enabling compat32 will enable ASCII-based comparisons as
+well. That granularity may not be sufficient for all uses, and as a result
+users should employ compatibility levels carefully. Read the documentation
+for a particular feature to find out the current behavior.
+
+Bash-4.3 introduced a new shell variable: BASH_COMPAT. The value assigned
to this variable (a decimal version number like 4.2, or an integer
corresponding to the compatNN option, like 42) determines the compatibility
level.
-Bash-4.4 has begun deprecating older compatibility levels. Eventually, the
-options will be removed in favor of the BASH_COMPAT variable.
+Starting with bash-4.4, bash has begun deprecating older compatibility
+levels. Eventually, the options will be removed in favor of the
+BASH_COMPAT variable.
-compat31 set
- - the < and > operators to the [[ command do not consider the current
- locale when comparing strings; they use ASCII ordering
- - quoting the rhs of the regexp matching operator (=~) has no
- special effect
+Bash-5.0 is the final version for which there will be an individual shopt
+option for the previous version. Users should use the BASH_COMPAT variable
+on bash-5.0 and later versions.
+
+The following table describes the behavior changes controlled by each
+compatibility level setting. The `compatNN' tag is used as shorthand for
+setting the compatibility level to NN using one of the following
+mechanisms. For versions prior to bash-5.0, the compatibility level may be
+set using the corresponding compatNN shopt option. For bash-4.3 and later
+versions, the BASH_COMPAT variable is preferred, and it is required for
+bash-5.1 and later versions.
-compat32 set
+compat31
- the < and > operators to the [[ command do not consider the current
locale when comparing strings; they use ASCII ordering
+ - quoting the rhs of the [[ command's regexp matching operator (=~)
+ has no special effect
-compat40 set
+compat32
- the < and > operators to the [[ command do not consider the current
locale when comparing strings; they use ASCII ordering
- interrupting a command list such as "a ; b ; c" causes the execution
- of the entire list to be aborted (in versions before bash-4.0,
- interrupting one command in a list caused the next to be executed)
+ of the next command in the list (in bash-4.0 and later versions,
+ the shell acts as if it received the interrupt, so interrupting
+ one command in a list aborts the execution of the entire list)
-compat41 set
- - interrupting a command list such as "a ; b ; c" causes the execution
- of the entire list to be aborted (in versions before bash-4.0,
- interrupting one command in a list caused the next to be executed)
- - when in posix mode, single quotes in the `word' portion of a
- double-quoted parameter expansion define a new quoting context and
- are treated specially
-
-compat42 set
+compat40
+ - the < and > operators to the [[ command do not consider the current
+ locale when comparing strings; they use ASCII ordering.
+ Bash versions prior to bash-4.1 use ASCII collation and strcmp(3);
+ bash-4.1 and later use the current locale's collation sequence and
+ strcoll(3).
+
+compat41
+ - in posix mode, `time' may be followed by options and still be
+ recognized as a reserved word (this is POSIX interpretation 267)
+ - in posix mode, the parser requires that an even number of single
+ quotes occur in the `word' portion of a double-quoted ${...}
+ parameter expansion and treats them specially, so that characters
+ within the single quotes are considered quoted (this is POSIX
+ interpretation 221)
+
+compat42
- the replacement string in double-quoted pattern substitution is not
- run through quote removal, as in previous versions
-
-compat43 set
+ run through quote removal, as it is in versions after bash-4.2
+ - in posix mode, single quotes are considered special when expanding
+ the `word' portion of a double-quoted ${...} parameter expansion
+ and can be used to quote a closing brace or other special character
+ (this is part of POSIX interpretation 221); in later versions,
+ single quotes are not special within double-quoted word expansions
+
+compat43
- the shell does not print a warning message if an attempt is made to
use a quoted compound assignment as an argument to declare
- (declare -a foo='(1 2)')
+ (declare -a foo='(1 2)'). Later versions warn that this usage is
+ deprecated.
- word expansion errors are considered non-fatal errors that cause the
- current command to fail, even in Posix mode
+ current command to fail, even in posix mode (the default behavior is
+ to make them fatal errors that cause the shell to exit)
- when executing a shell function, the loop state (while/until/etc.)
is not reset, so `break' or `continue' in that function will break
or continue loops in the calling context. Bash-4.4 and later reset
- the loop state to prevent this.
+ the loop state to prevent this
-compat44 set
+compat44
- the shell sets up the values used by BASH_ARGV and BASH_ARGC so
they can expand to the shell's positional parameters even if extended
debug mode is not enabled
- - a subshell inherits loops from its parent contenxt, so `break'
- or `continue' will cause the subshell to exit
+ - a subshell inherits loops from its parent context, so `break'
+ or `continue' will cause the subshell to exit. Bash-5.0 and later
+ reset the loop state to prevent the exit
- variable assignments preceding builtins like export and readonly
that set attributes continue to affect variables with the same
name in the calling environment even if the shell is not in posix
mode
+compat50 (set using BASH_COMPAT)
+ - Bash-5.1 changed the way $RANDOM is generated to introduce slightly
+ more randomness. If the shell compatibility level is set to 50 or
+ lower, it reverts to the method from bash-5.0 and previous versions,
+ so seeding the random number generator by assigning a value to
+ RANDOM will produce the same sequence as in bash-5.0
+ - If the command hash table is empty, bash versions prior to bash-5.1
+ printed an informational message to that effect even when writing
+ output in a format that can be reused as input (-l). Bash-5.1
+ suppresses that message if -l is supplied
+
-------------------------------------------------------------------------------
diff --git a/CWRU/changelog b/CWRU/changelog
index c33023fc..27f62c02 100644
--- a/CWRU/changelog
+++ b/CWRU/changelog
@@ -1,3 +1,4 @@
+
9/15/2016
---------
[bash-4.4 released]
@@ -64,7 +65,7 @@ parse.y
9/23
----
-execute_command.c
+execute_cmd.c
- execute_in_subshell: call without_job_control for both job control
and non-job-control builds to avoid waiting for last_made_pid
inherited from parent shell. Related to fix from 8/4 to
@@ -3417,7 +3418,7 @@ sig.c
3/25
----
lib/readline/bind.c
- - _rl_function_of_keyseq_internal: new internal function thta takes a
+ - _rl_function_of_keyseq_internal: new internal function that takes a
length parameter to accommodate NUL in the key sequence. Patch from
Koichi Murase <myoga.murase@gmail.com>
- rl_function_of_keyseq_len: new application-callable function that
@@ -4965,3 +4966,4217 @@ lib/glob/glob_loop.c
report from Tom Ryder <tom@sanctum.geek.nz>
[bash-5.0 frozen]
+
+[bash-5.0 released]
+
+ 1/6/2019
+ --------
+
+examples/loadables/basename.c
+ - make sure to include bashgetopt.h. Reported by Angel
+ <angel@16bits.net>
+
+lib/malloc/malloc.c
+ - stdlib.h: include if botch isn't defined to provide a declaration
+ for abort()
+
+hashlib.c,Makefile.in
+ - fixes to make hash library testing work for others from
+ Eduardo Bustamante <dualbus@gmail.com>
+
+lib/readline/unicode.c
+ - u32toutf16: correct the second argument to be wchar_t *, and treat
+ it as such, even though it doesn't make a difference in practice.
+ Report and fix from Eduardo Bustamante <dualbus@gmail.com>
+
+ 1/8
+ ---
+
+builtins/return.def
+ - return_builtin: return EX_USAGE if we're not executing a shell
+ function or sourcing a script, so a posix-mode shell exits. Fixes
+ bug reported by Robert Hailey <bash@osndok.com>
+
+builtins/declare.def
+ - declare_internal: don't let `declare -f +f' turn off the function
+ attribute. Fix from Grisha Levit <grishalevit@gmail.com>
+ - declare_internal: reject attempts to add the -A or -a attributes
+ to functions. Report from Grisha Levit <grishalevit@gmail.com>
+
+ 1/9
+ ---
+bashline.c
+ - completion_glob_pattern: new function, returns true if the passed
+ string contains a glob pattern that should be process by the glob
+ completion code. Completion glob patterns don't pay attention to
+ backslashes unless they're the last character in the string. This
+ is a different, more self-contained, fix for the problem reported
+ by Tom Ryder <tom@sanctum.geek.nz>
+
+lib/glob/glob_loop.c
+ - INTERNAL_GLOB_PATTERN_P: restore change from 4/27 and make this
+ function return non-zero if it encounters a backslash in the string.
+ It needs to match pathexp.c:unquoted_glob_pattern_p(). Adds fix
+ back for issue reported by axel@freakout.de
+
+test.c
+ - arithcomp: when calling evalexp, make sure to call it with the
+ EXP_EXPANDED flag, since all arguments here have been evaluated
+ already
+
+arrayfunc.c
+ - array_expand_index: call evalexp with EXP_EXPANDED flag, since we
+ have run the string through expand_arith_string already
+
+ 1/11
+ ----
+parser.h
+ - PST_ENDALIAS: new state, means we just consumed the last character
+ of an alias expansion and returned the fake space
+
+parse.y
+ - shell_getc: add PST_ENDALIAS to parser_state before returning the
+ fake space that marks the end of the alias, making sure to do it
+ only once. With that set, fall through to the pop_string(), making
+ sure to unset PST_ENDALIAS. Fixes alias bug reported by
+ Ante Peric <synthmeat@gmail.com>
+
+ 1/12
+ ----
+lib/glob/glob.c
+ - {extglob,wextglob}_skipname: make sure we check the rest of the
+ pattern if the extglob pattern is null, and therefore won't match
+ anything. If that is followed by a `.', quoted or unquoted, we can
+ match a leading `.' in the pathname. This code is currently not
+ active.
+
+builtins/hash.def
+ - hash_builtin: if -d is supplied without an argument, print an error
+ message and return failure, just like -t without an argument. Fixes
+ inconsistency reported by Dan Jacobson <jidanni@jidanni.org>
+
+ 1/13
+ ----
+parse.y
+ - shell_getc: use shellblank when testing the last character of an
+ alias to determine whether or not to add a trailing space instead
+ of testing against a space only. These are the non-shell-metacharacters
+ that can delimit words. Used together with PST_ENDALIAS
+
+ 1/17
+ ----
+parse.y
+ - shell_getc: keep track of whether the last character read from
+ shell_input_line is an unquoted backslash and don't add a space to
+ the end of an alias if the alias value ends in an unquoted backslash.
+ From an austin-group mailing list discussion message from
+ Harald van Dijk <ag@gigawatt.nl>
+
+ 1/20
+ ----
+general.c
+ - check_identifier: make sure CHECK_WORD is non-zero before we check
+ whether or not the word consists of all digits. This allows function
+ names to consist solely of digits when not in posix mode. From a
+ report by Andrey Butirsky <butirsky@gmail.com>
+
+ 1/22
+ ----
+bashline.c
+ - initialize_readline: only unbind ^E in vi_movement_keymap if it's
+ still bound to the default rl_emacs_editing_mode. Fixes bug
+ reported by Greg Bell <gbell_spamless@yahoo.com>
+
+ 1/23
+ ----
+builtins/shopt.def
+ - we need the extern declaration for syslog_history if SYSLOG_HISTORY
+ is defined, since it's used even if SYSLOG_SHOPT is not defined.
+ From a Gentoo Linux bug report, eventually reported to bug-bash by
+ Tomas Mozes <hydrapolic@gmail.com>
+
+ 1/25
+ ----
+command.h
+ - CMD_TRY_OPTIMIZING: new command flag, means this (simple) command is
+ a candidate for fork optimization (suppression)
+
+builtins/evalstring.c
+ - can_optimize_connection: new function, takes an AND_OR list (&& or
+ ||) from parse_and_execute, makes sure it's the last in a possibly
+ multi-command list, and returns non-zero if it's a simple command,
+ indicating that it's a candidate for fork optimization.
+ - parse_and_execute: if we have a cm_connection command, call
+ can_optimize_connection to determine if it's a suitable candidate
+ and set CMD_TRY_OPTIMIZING if that returns non-zero
+ - optimize_fork: don't bother unless the rhs of the && or || command
+ has the CMD_TRY_OPTIMIZING flag set. These fix the bug reported by
+ Brad Spencer <bspencer@blackberry.com>
+
+execute_cmd.c
+ - execute_connection: case AND_AND and OR_OR: call optimize_fork on
+ the right side of the command before executing `second'. This will
+ safely restore the fork optimization we removed from
+ parse_and_execute()
+
+builtins/complete.def
+ - build_actions: make sure the function name argument to -F is a
+ valid shell function name: it doesn't contain any invalid posix-
+ mode characters and doesn't contain any shell break characters that
+ would need to be quoted when defining a function. Fixes issue
+ reported by Great Big Dot <greatbigdot@gmail.com>
+
+ 1/28
+ ----
+variables.c
+ - dispose_temporary_env: make sure to save temporary_env to a temp
+ pointer and set temporary_env to NULL before trying to dispose it,
+ so no flush function ever tries to add a temporary variable back
+ into the table (e.g., bind_variable())
+
+ 1/29
+ ----
+builtins/evalstring.c
+ - can_optimize_connection,optimize_fork: add the last command in lists
+ separated by `;' to the list of candidates for fork optimization
+
+ 1/30
+ ----
+examples/loadables/strftime.c
+ - strftime_builtin: try to extend the buffer longer than tbsize*3,
+ which is a minimum of 24 characters, in case some of the formats
+ (e.g., %c) expand to something longer than that. Fixes bug
+ reported by Stan Marsh <gazelle@xmission.com>
+
+ 1/31
+ ----
+lib/readline/undo.c
+ - rl_do_undo: before inserting text while undoing UNDO_DELETE, or
+ performing a deletion while undoing UNDO_INSERT, make sure that
+ rl_point is valid by calling _rl_fix_point. Fuzzing bug and fix
+ from Eduardo Bustamante <dualbus@gmail.com>
+
+lib/readline/search.c
+ - _rl_nsearch_abort: validate new values for rl_point and rl_mark by
+ calling _rl_fix_point(). Fuzzing bug and fix from
+ Eduardo Bustamante <dualbus@gmail.com>
+
+subst.c
+ - string_extract_double_quoted: if we parse a syntactically-incorrect
+ $( expression while extracting a double-quoted string, si will
+ appear to go `backward'. Just skip over the rest of the string and
+ continue. Fuzzing bug from Eduardo Bustamante <dualbus@gmail.com>
+
+lib/readline/text.c
+ - rl_change_case: if towupper or towlower returns a valid wide char
+ that can't be converted back to a valid multibyte character, use
+ the original character and go on. Fuzzing bug from
+ Eduardo Bustamante <dualbus@gmail.com>
+
+lib/glob/glob.c
+ - wdequote_pathname: if there are no multibyte characters in pathname,
+ just call udequote_pathname and don't bother converting it to wide
+ characters
+ - glob_pattern_p: if there are no multibyte characters in the pattern,
+ just call internal_glob_pattern_p right away
+
+lib/glob/glob_loop.c
+ - INTERNAL_GLOB_PATTERN_P: return 2 if we see only backslash-quoted
+ characters without any other unquoted glob pattern characters, so
+ interested callers can shortcut and just dequote the pathname
+
+pathexp.c
+ - unquoted_glob_pattern_p: return 2 if we see only backslash-quoted
+ characters without any other unquoted glob pattern characters,
+ consistent with the glob library
+ - unquoted_glob_pattern_p: don't count a backslash quoting a slash as
+ a backslash that will trigger a call to shell_glob_filename, since
+ backslashes at the end of patterns (pathname components) will always
+ fail to match. XXX - this is provisional
+
+lib/glob/glob.c
+ - glob_filename: if we have a directory name that has no unquoted
+ special glob chars, but has backslashes, just dequote it and return
+ it without going through the rest of the glob expansions. Partial
+ fix for issue with unreadable directories reported by
+ Andrew Church <achurch+bash@achurch.org>
+
+ 2/2
+ ---
+lib/readline/readline.c
+ - readline_internal_teardown: if revert-all-at-newline is set, make
+ sure that the history position is at the end of the history before
+ calling _rl_revert_all_lines(). Fixes bug reported by
+ johnlinp@gmail.com and frederik@ofb.net
+
+ 2/4
+ ---
+builtins/complete.def
+ - complete_builtin: fix check for argument to -F to use strpbrk
+ instead of incomplete use of strcspn. Fix from Grisha Levit
+ <grishalevit@gmail.com>
+
+ 2/5
+ ---
+lib/readline/readline.c
+ - rl_parse_and_bind: change parsing of boolean variable values to
+ look for and consume an optional whitespace-delimited word. This
+ allows trailing spaces and everything that follows to work. Idea
+ from Bize Ma <binaryzebra@gmail.com>
+ - rl_parse_and_bind: print error message about unknown variable names
+ instead of calling rl_variable_bind to do it
+ - rl_variable_bind: report error if setting string variable returns
+ non-zero
+
+ 2/6
+ ---
+lib/readline/histfile.c
+ - read_history_range: close FILE before returning if the history file
+ size is 0
+
+ 2/11
+ ----
+bashline.c
+ - edit_and_execute_command: add the current line buffer to the history
+ list even if it's empty and rely on other code in bash_add_history
+ to take care to not add multiple semicolons with multiple blank
+ lines and command_oriented_history. Live with the blank lines as
+ history entries for now. Fixes problem reported by
+ Johannes Hielscher <jhielscher@posteo.de>
+
+lib/readline/misc.c
+ - _rl_revert_all_lines: renamed to _rl_revert_previous_lines, since
+ that is basically what it does
+ - _rl_revert_all_lines: now just makes sure the history offset is at
+ the end of the history and calls _rl_revert_previous_lines. Inspired
+ by a suggestion from johnlinp@gmail.com
+
+lib/readline/readline.c
+ - readline_internal_teardown: revert change of 2/2, moved that code
+ into the (new) _rl_revert_all_lines
+
+lib/readline/rlprivate.h
+ - _rl_revert_previous_lines: new extern declaration
+
+builtins/bind.def
+ - bind_builtin: make sure the unwind-protect gets run when the --help
+ option is used, so use `case GETOPT_HELP:' instead of `CASE_HELPOPT;'.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+ 2/12
+ ----
+lib/readline/util.c
+ - _rl_abort_internal: don't just turn off the MACRODEF state, call
+ _rl_kill_kbd_macro to delete any traces of an in-progress macro
+ definition before turning it off. Fixes fuzzing bug.
+
+ 2/13
+ ----
+examples/loadables/Makefile.in
+ - CCFLAGS: add $(CPPFLAGS) to value, based on a report from
+ Christian Weisgerber <naddy@mips.inka.de>
+
+ 2/15
+ ----
+bashline.c
+ - posix_readline_initialize: keep track of the vi insertion keymap
+ binding for TAB, since we change it in this function. Save the
+ old binding before we change it when turning posix mode on, and
+ restore that old binding when turning posix mode off, as long as
+ the current binding is still rl_insert. Suggested by a report from
+ Koichi Murase <myoga.murase@gmail.com>
+
+ 2/17
+ ----
+builtins/exec.def
+ - exec_builtin: save value of job_control; use it to restore the value
+ of job_control if an exec fails in an interactive shell instead of
+ enabling it by default in an interactive shell. Report from
+ Grisha Levit <grishalevit@gmail.com>
+
+lib/readline/bind.c
+ - _rl_function_of_keyseq_internal: make sure to use checks against LEN
+ instead of a NULL character in KEYSEQ to determine the length of the
+ key sequence.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_bind_key: make sure the KEY argument is not larger than the
+ largest unsigned character.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_translate_keyseq: make sure that M-x correctly adds "\ex" to the
+ key sequence array when convert-meta is set.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_translate_keyseq: now unconditionally converts meta characters to
+ ESC-prefixed key sequences when processing \0nnn \Xnnn and \[char]
+ escape sequences that resolve to meta characters and for `normal'
+ characters that have the meta bit set
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+jobs.c
+ - end_job_control: if the terminal pgrp (terminal_pgrp) is not the same
+ as the original pgrp (original_pgrp), set the terminal's pgrp to the
+ original pgrp so when we reset the shell's pgrp to original_pgrp,
+ we'll continue to be able to read from the terminal if the shell is
+ interactive. Fixes bug with turning off job control before starting
+ an interactive shell reported by Grisha Levit
+ <grishalevit@gmail.com>
+
+ 2/19
+ ----
+
+jobs.c
+ - end_job_control: if the setpgid(0, ...) succeeds, reset the value of
+ shell_pgrp. Fixes pgrp mismatch after failed exec in an interactive
+ login shell reported by Grisha Levit <grishalevit@gmail.com>
+
+ 2/20
+ ----
+bashhist.c
+ - pre_process_line: save history_length before calling history_expand,
+ and after possibly decrementing history_length, just restore the old
+ value instead of incrementing it. Fixes bug reported by
+ Michael Albinus <michael.albinus@gmx.de>
+ - bash_add_history: don't bother calling really_add_history if the
+ history is stifled and the max number of entries is 0
+
+aclocal.m4,configure.ac,m4/*.m4
+ - replace the old set of gettext m4 macros with the latest m4 files
+ from the gnulib and gettext distributions
+
+ 2/21
+ ----
+builtins/cd.def
+ - bindpwd: initialize canon_failed to 0 to prevent `cd -e' from always
+ failing
+
+command.h
+ - W_EXPANDRHS: new flag, set when expanding WORD in ${paramOPword}
+
+subst.c
+ - expand_string_for_rhs: set W_EXPANDRHS in word to be expanded
+
+subst.c
+ - expand_word_internal: when encountering a single or double quoted
+ string that expands to nothing, add a CTLNUL if the W_EXPANDRHS
+ flag is set and the word isn't quoted, indicating that the word
+ will eventually be split and we need to preserve the null to
+ produce an empty word. From a discussion on bug-bash started by
+ sunnycemetery@gmail.com
+
+ 2/22
+ ----
+bashline.c
+ - completion_glob_pattern: make sure to skip over a character quoted
+ by a backslash. Fixes bug reported by John Van Sickle
+ <john.vansickle@gmail.com>
+
+ 2/23
+ ----
+lib/readline/complete.c
+ - last_completion_failed: keep track of whether the last completion
+ attempt generated any matches
+ - rl_complete: if the last readline command was completion, but the
+ completion attempt didn't generate any matches, don't regenerate
+ and display the match list. Treat it as a new completion attempt.
+ Suggested by Richard Stallman <rms@gnu.org>
+
+bashhist.c
+ - maybe_append_history: try to handle the case where the number of
+ history entries in the current shell session is greater than the
+ number of entries in the history list. Based on a report from
+ <airat_vi@mail.ru>
+
+ 2/25
+ ----
+aclocal.m4
+ - BASH_FUNC_FNMATCH_EQUIV_FALLBACK: use en_US.UTF-8 instead of
+ de_DE.UTF-8; it's more likely to be installed
+
+ 2/26
+ ----
+doc/{bash.1,bashref.texi}
+ - extdebug: make sure to note that setting this option in a startup
+ file causes an attempt to start the debugger. Noted by Linda
+ Walsh <bash@tlinx.org>
+
+builtins/fc.def
+ - fc_builtin: if we are not listing, and delete the last history entry,
+ make sure that histbeg or histend, whichever is greater, is clamped
+ at the value of last_hist to avoid dereferencing the just-removed
+ history index. Fixes bug reported by Chris King-Parra
+ <chris@kingparra.work>
+
+ 2/27
+ ----
+shell.c
+ - init_interactive: assignment to histexp_flag should be protected by
+ #ifdef BANG_HISTORY. https://savannah.gnu.org/patch/?9759
+
+subst.c
+ - list_string: if we have a non-null string, but quoted null character
+ removal leaves an empty string, set W_SAWQUOTEDNULL in the returned
+ word flags so the caller can deal with it
+ - parameter_brace_expand_rhs: deal with word with null or empty word
+ and W_SAWQUOTEDNULL in the flags coming back from expand_string_for_rhs
+ by turning it into a quoted null word and modifying the flags. Part
+ of fix for bug report from Grisha Levit <grishalevit@gmail.com>
+ - expand_word_internal: if a double-quoted string comes back with a
+ quoted null as the expansion of "$@", note that we saw it, but still
+ add a quoted null into the result string instead of short-circuiting.
+ Part of fix for bug report from Grisha Levit <grishalevit@gmail.com>
+
+ 3/1
+ ---
+examples/loadables/fdflags.c
+ - O_CLOEXEC: instead of not using it, synthesize a definition for it
+ from unused bits in the file status word. It's only used as a
+ placeholder anyway. Fix from code by Robert Elz <kre@bmunnari.oz.au>
+
+execute_cmd.c
+ - execute_connection: call optimize_fork on the rhs of a `;' connection
+ to attempt to optimize the last simple command in a list
+
+ 3/4
+ ---
+subst.c
+ - parameter_brace_expand: add `@' to the list of operators that cause
+ unbound parameter errors. Fixes oversight bug reported by
+ Martin Schulte <gnu@schrader-schulte.de>
+
+ 3/5
+ ---
+subst.c
+ - expand_word_internal: update to fix from 2/21 and 2/27 to accommodate
+ contexts when word splitting will not take place (W_ASSIGNRHS). Fix
+ from Grisha Levit <grishalevit@gmail.com>
+ - param_expand: if IFS is unset, and we are expanding $* in a context
+ where we're not going to be performing word splitting, just treat it
+ as if IFS=" " and don't set W_SPLITSPACE. Report and hint at fix
+ from Grisha Levit <grishalevit@gmail.com>
+ - param_expand: if IFS is not null, and we are expanding $* in a
+ context where we're not going to be performing word splitting, and
+ we quote a null string (resulting in a quoted null), make sure we
+ set W_SAWQUOTEDNULL to note this for the caller
+ - parameter_brace_expand_rhs: make sure to remove any W_SAWQUOTEDNULL
+ flag for a the word on the rhs of the `=' operator if the original
+ string is null or the original string is not null and the returned
+ string (after dequoting) is not null. For instance ${v= ''} should
+ not have the SAWQUOTEDNULL flag set because it is " " after
+ expansion and dequoting, even though we saw a quoted null there
+
+ 3/6
+ ---
+lib/sh/eaccess.c
+ - sh_eaccess: AIX needs the same kind of additional checks as FreeBSD
+ and Solaris when running as root and checking whether or not a file
+ is executable. Report and fix from REIX, Tony <tony.reix@atos.net>
+
+ 3/7
+ ---
+lib/glob/glob.h
+ - GX_RECURSE: new flag, indicates internal call to glob_filename
+
+lib/glob/glob.c
+ - glob_filename: add GX_RECURSE to recursive call to glob_filename
+ - glob_filename: dequote a directory name (in the absence of a
+ filename) only if this is not a recursive call to glob_filename
+ ((flags & GX_RECURSE) == 0). Fixes bug reported by Dr. Werner Fink
+ <werner@suse.de>
+
+ 3/8
+ ---
+parse.y
+ - handle_eof_input_unit: before calling exit_builtin, set
+ last_shell_builtin and this_shell_builtin appropriately, since the
+ exit builtin uses them to determine whether or not to exit
+ immediately. Fixes bug reported by Tom Levy <tomlevy93@gmail.com>
+
+lib/sh/shquote.c
+ - sh_double_quote,sh_mkdoublequoted,sh_backslash_quote_for_double_quotes:
+ make sure to handle multibyte characters that may contain characters
+ that need to be quoted in double quotes; adding a spurious double
+ quote may turn them into different characters or uncover characters
+ that are special in double quotes. Fixes bug reported by
+ Stephane Chazelas <stephane.chazelas@gmail.com>
+ - sh_backslash_quote: don't call COPY_CHAR_P if we're in a UTF-8
+ locale and the current character doesn't have its eighth bit set;
+ only check mb_cur_max and is_basic if we're not in a UTF-8 character
+ set
+
+ 3/9
+ ---
+subst.c
+ - read_comsub: if it looks like we're starting a multibyte character,
+ read a whole multibyte character from buf and add it all at once,
+ so we don't quote each byte in a multibyte character sequence. Fixes
+ bug uncovered by shquote changes from 3/8
+
+ 3/11
+ ----
+subst.c
+ - expand_word_internal: if we are in a context where word splitting
+ will not occur, but one where we need to make sure we eventually
+ expand "$@" to multiple words, add a space as quoted so we can still
+ split on the space separator in $@. Fixes bug reported by
+ Grisha Levit <grishalevit@gmail.com>
+
+ 3/13
+ ----
+subst.c
+ - parameter_brace_substring, parameter_brace_patsub: treat the case
+ where pflags includes PF_ASSIGNRHS the same as if IFS is null, since
+ word splitting will not take place
+
+{subst,array,assoc}.c,subst.h
+ - string_list_pos_params: add a fourth argument: pflags; change all
+ callers to initially pass 0 as fourth arg
+
+ 3/14
+ ----
+subst.c
+ - expand_word_internal: split words with W_ASSIGNRHS flag set specially.
+ These and subsequent changes fix expansion bugs reported by
+ Grisha Levit <grishalevit@gmail.com>
+
+subst.c
+ - string_list_pos_params: if we are expanding `@', make sure we honor
+ PFLAGS including PF_ASSIGNRHS and use string_list_dollar_at to make
+ sure the positional parameters are separated by spaces
+ - string_list_pos_params: if we are expanding `*', make sure we honor
+ PFLAGS including PF_ASSIGNRHS and separate the positional parameters
+ with the first character of $IFS
+ - pos_params_pat_subst,pos_params_modcase: calculate appropriate value
+ for PFLAGS depending on match flags value, and pass right value to
+ string_list_pos_params (affects @, * expansion)
+ - pos_params: now takes PFLAGS as argument to pass to string_list_pos_params;
+ changed caller
+
+array.c
+ - array_pat_subst,array_modcase: calculate appropriate value for
+ PFLAGS depending on match flags value, and pass right value to
+ string_list_pos_params (affects @, * subscript expansion)
+
+array.[ch]
+ - array_subrange: now takes additional PFLAGS argument to pass to
+ string_list_pos_params
+
+assoc.c
+ - assoc_pat_subst,assoc_modcase: calculate appropriate value for
+ PFLAGS depending on match flags value, and pass right value to
+ string_list_pos_params (affects @, * subscript expansion)
+ STILL NEED TO DO SUBRANGE
+
+subst.c
+ - parameter_brace_substring: add PFLAGS argument to array_subrange
+
+arrayfunc.c
+ - array_keys: use string_list_pos_params instead of calling
+ string_list_dollar_{star,at} directly.
+
+arrayfunc.[ch]
+ - array_keys: now takes a PFLAGS argument, passes to string_list_pos_params
+
+subst.c
+ - parameter_brace_expand: add PFLAGS argument to call to array_keys
+
+subst.c
+ - parameter_brace_expand_indir: now takes a PFLAGS argument and uses it
+ in the call to parameter_brace_expand_word
+ - parameter_brace_expand: add PFLAGS argument to call to
+ parameter_brace_expand_indir
+
+ 3/15
+ ----
+subst.c
+ - chk_atstar: now takes a PFLAGS parameter, changed callers. Will
+ eventually affect whether or not we saw $@
+ - chk_atstar: if we see "$*" don't note that we saw $@ unless
+ expand_no_split_dollar_star is unset. This is what param_expand
+ does
+
+ 3/18
+ ----
+lib/readline/misc.c
+ - rl_get_previous_history: if we are trying to go back from the
+ beginning of the history, or if we are trying to go back before the
+ beginning of the history, call _rl_free_saved_history_line to just
+ get rid of the history line we saved instead of using
+ rl_maybe_unsave_line, which modifies the current line buffer.
+ Fixes bug reported by lessbug <lessbug@qq.com>
+
+ 3/20
+ ----
+execute_cmd.c
+ - execute_command_internal: save and restore line_number around
+ user_subshell setting it to the line number saved in the command.
+ Fixes bug reported in https://bugzilla.novell.com/show_bug.cgi?id=1128936
+
+ 3/21
+ ----
+lib/sh/strtrans.c
+ - ansicstr: handle multibyte characters that are not preceded by a
+ backslash so we skip over potential escapes in characters whose
+ multibyte representation contains a backslash. Fixes issue reported by
+ Stephane Chazelas <stephane.chazelas@gmail.com>
+
+subst.c
+ - reap_some_procsubs: reap_procsubs, but parameterized to take the
+ max index to check -- general function for future use
+ - reap_procsubs: now just calls reap_some_procsubs with the right arg
+
+execute_cmd.c
+ - execute_command_internal: if we are using /dev/fd for process
+ substitution, reap the procsubs at the end of this function (FIFOs
+ do it at the beginning -- look at this more closely). Only do it
+ for loops to avoid fd exhaustion. Fixes bug reported by
+ sunnycemetery@gmail.com
+
+ 3/22
+ ----
+lib/readline/{rlprivate.h,signals.c}
+ - _rl_interrupt_immediately: removed as no longer used
+
+redir.c
+ - heredoc_expand: new function, called for both here-documents and
+ here-strings, takes care of expanding the document and returns a
+ string
+ - write_here_document: use heredoc_expand, call write(2) once on the
+ entire document; structure is now very similar to write_here_string
+
+ 3/23
+ ----
+redir.c
+ - here_document_to_fd: expand the here document/here string first,
+ using heredoc_expand, then decide what to do; remove calls to
+ write_here_document/write_here_string in favor of calling
+ heredoc_write directly
+ - here_document_to_fd: if the expanded document is of zero length,
+ just open /dev/null right away and return it -- idea from yash
+ - here_document_to_fd: if the length of the expanded document is
+ between 1 and PIPESIZE (pipe capacity, computed by builtins/psize.aux
+ and stored in builtins/pipesize.h), try to use a pipe: write
+ the document to the write end and return the read end. Prompted by a
+ report from Daniel Kahn Gillmor <dkg@fifthhorseman.net>
+
+builtins/enable.def
+ - dyn_load_builtin: add warning if dynamic builtin with a load function
+ is loaded more than once, before running the load function a second
+ time. From a suggestion by Stan Marsh <gazelle@xmission.com>
+
+ 3/25
+ ----
+jobs.[ch]
+ - wait_for_any_job: takes a new argument, a struct procstat * that
+ gets the PID of the exited job's process leader (the one that
+ contributes the status) and the same status we return from the
+ function
+
+builtins/wait.def
+ - wait_builtin: pass a struct procstat * to wait_for_any_job to get
+ the pid of the job's process leader (and the same status the
+ function returns). We don't do anything with it yet
+
+ 3/28
+ ----
+variable.c
+ - seedrand: add a couple more variables to the random seed
+
+lib/sh/tmpfile.c
+ - sh_mktmpdir: new function, makes a temporary directory using
+ mkdtemp if it's available, and generates a filename using
+ sh_mktmpname (which uses mktemp, if available) and makes a
+ directory with it if not
+
+config-{top,bot}.h
+ - set up to use mkdtemp if available
+
+externs.h
+ - sh_mktmpdir: extern declaration
+ - MT_TEMPFILE: new flag for the tempfile functions; means to use the
+ value in the NAMEROOT argument as a template for the mktemp/mkstemp/
+ mkdtemp functions. Not used in mainline shell code
+
+examples/loadables/mktemp.c
+ - mktemp: new loadable builtin, with BSD options and basic semantics
+
+ 3/29
+ ----
+builtins/common.c,builtins/printf.def
+ - builtin_bind_variable: moved bind_printf_variable to common.c from
+ printf.def, renamed to builtin_bind_variable, made global for other
+ builtins to use
+
+builtins/read.def
+ - bind_read_variable: now uses builtin_bind_variable
+
+ 4/4
+ ---
+lib/readline/histfile.c
+ - history_rename: wrapper function for rename(2) to deal with the Win32
+ refusal to rename over an existing file; changed callers. Bug and fix
+ from <john.david.donoghue@gmail.com>
+
+ 4/8
+ ---
+builtins/trap.def
+ - display_traps,showtrap: take an additional int argument, that, if
+ non-zero, means to print a trap command for a signal whose disposition
+ is SIG_DFL
+ - trap_builtin: if the -p option is given, and posix mode is enabled,
+ pass the `show every signal' flag to display_traps so SIG_DFL signals
+ are displayed as `trap -- - <signal>'. From an austin-group
+ interpretation (1212) initiated by Robert Elz <kre@bmunnari.oz.au>.
+ Tagged for bash-5.1
+
+ 4/9
+ ---
+jobs.c
+ - list_one_job: printing one job counts as notifying the user about
+ it, so add a call to cleanup_dead_jobs like in the other job display
+ functions. Fixes https://savannah.gnu.org/support/?109667 reported
+ by "Brian K. White"
+
+ 4/10
+ ----
+redir.c
+ - HEREDOC_PIPESIZE: define to PIPESIZE if not defined, allow it to be
+ specified at build time; used in here_document_to_fd to determine
+ whether or not a pipe is used
+ - HEREDOC_PIPEMAX: allow build-time definition of the max heredoc size
+ that will be written to a pipe
+ - here_document_to_fd: if F_GETPIPE_SZ is defined (Linux), ensure that
+ the document is shorter than the possibly-dynamic max pipe size,
+ and fall back to the tempfile implementation if it is not
+ - HEREDOC_PARANOID: if this is defined to a non-zero value,
+ here_document_to_fd ensures that both file descriptors opened on
+ the temporary file refer to the same file
+
+lib/sh/zmapfd.c
+ - zmapfd: increased the default allocation sizes
+
+lib/sh/zcatfd.c
+ - zcatfd: increased the default allocation sizes
+
+input.c
+ - localbuf: increased the default buffer size for reads
+
+ 4/11
+ ----
+subst.c
+ - cond_expand_word: like expand_word_unsplit, we need to peform
+ quoted null character removal on both the LHS and RHS of the
+ operator, since we are not performing word splitting. Fixes bug
+ reported by Matt Whitlock in https://savannah.gnu.org/support/?109671
+
+ 4/12
+ ----
+jobs.c
+ - wait_for_background_pids: don't bother with the loop that waits for
+ and reaps all children of the shell in the case that it's inherited
+ some children it doesn't care about. Report from Daniel Kahn Gillmor
+ <dkg@fifthhorseman.net>
+
+ 4/14
+ ----
+subst.c
+ - command_substitute: add an unwind-protect to make sure the read end
+ of the pipe gets closed in the parent on a SIGINT that interrupts
+ the zread. Fixes fast SIGINT fd leak reported by Tycho Kirchner
+ <tychokirchner@mail.de>
+
+bashhist.c
+ - history_number: if enable_history_list is set (`set -o history' has
+ been executed), return the current history number even if we're
+ not currently saving commands in the history list
+ (remember_on_history == 0). Prompted by report from Paul Wise
+ <pabs3@bonedaddy.net>
+
+ 4/20
+ ----
+doc/bash.1,lib/readline/doc/rluser.texi
+ - make it clear that the `bind' builtin can be used to set readline
+ keybindings and variables. Suggestion from Dan Jacobson
+ <jidanni@jidanni.org>
+
+ 4/22
+ ----
+lib/glob/glob.h
+ - GX_SYMLINK: new internal flag denoting we are processing a symlink to
+ a directory. If GX_GLOBSTAR is active, we should not `descend' into
+ that directory
+
+lib/glob/glob.c
+ - glob_filename: if the directory portion of the pattern is `**'
+ (all_starstar), we have globbed all of the directories corresponding
+ to that pattern, and we encounter a name that is a symlink to a
+ directory, don't descend into it: if the filename portion is null,
+ return that name only; if the filename portion is non-null, skip over
+ it because we will pick it up when we process the `real' directory.
+ This is a better fix for the issue originally reported by
+ Murukesh Mohanan <murukesh.mohanan@gmail.com> back in 4/2018 and
+ addresses the issue raised by Eli Schwartz <eschwartz@archlinux.org>
+ - glob_dir_to_array: slight optimization: if array[i] is the empty
+ string, don't bother to strcpy it or check the result for a directory
+ for GX_MARKDIRS support
+
+ 4/23
+ ----
+bashline.c
+ - test_for_canon_directory: test a pathname for a directory, but
+ expand and canonicalize it first using bash_filename_stat_hook()
+ before calling stat(2)
+ - bash_progcomp_ignore_filenames: strip non-directories out of a match
+ list, but use the function above that canonicalizes the pathname to
+ expand the name before testing
+ - bash_directory_completion_matches: use bash_progcomp_ignore_filenames
+ to strip out non-directories so we get consistent results between
+ programmable completion and tab completion. Fixes bug reported by
+ Ville Skyttä <ville.skytta@iki.fi>
+
+builtins/read.def
+ - read_builtin: allow read -e and read -u N to be used together, by
+ calling fdopen(fd) if fd != 0. Save and restore rl_instream. Fixes
+ https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=927768
+
+ 4/24
+ ----
+lib/readline/input.c
+ - rl_getc: if readline catches SIGTSTP, the calling application must
+ not have had it ignored. Run the signal handler and set the signal
+ hook in case the application wants to handle it. Report from
+ Robert Elz <kre@bmunnari.oz.au>
+
+ 4/26
+ ----
+parse.y
+ - parser_will_prompt: check and return true if we have consumed the
+ entire readline line buffer and will have to go back to readline for
+ more input, printing a prompt as a consequence
+
+eval.c
+ - parse_command: if parser_will_prompt() returns 0, indicating that we
+ still have unconsumed input in the readline line buffer, don't
+ execute PROMPT_COMMAND. TENTATIVE fix prompted by report from
+ Matteo Landi <matteo@matteolandi.net>
+
+builtins/read.def
+ - set_eol_delim: save the old values before changing the bindings for
+ RETURN and the delimiter character, in case the delimiter is RETURN.
+ Fixes bug report from Stephane Chazelas <stephane.chazelas@gmail.com>
+ - read_builtin: if the delimiter is '\0' and we are using readline,
+ don't terminate the buffer and go back to read another character;
+ allow the NULL to pass through and terminate the read.
+ Fixes bug report from Stephane Chazelas <stephane.chazelas@gmail.com>
+
+ 5/9
+ ---
+bashhist.c
+ - bash_delete_histent: decrement history_lines_this_session only if
+ remove_history returns a non-null history entry, and return failure
+ if it does return a null entry
+
+builtins/history.def
+ - history_builtin: when checking the argument to -d, display an error
+ if the argument is >= history_base + history_length, since that's
+ what history_get and remove_history check. Fixes issue reported by
+ <jr@saturn.site>
+
+support/shobj-conf
+ - hpux11: change stanza to create shared libraries on later versions of
+ HPUX 11. Contributed by Michael Osipov <michael.osipov@siemens.com>
+
+lib/readline/terminal.c
+ - _rl_init_terminal_io: assume TGETENT_BROKEN defined means that tgetent
+ returns 0 on success, as on HPUX 11. Bug reported by Michael Osipov
+ <michael.osipov@siemens.com>
+
+configure.ac
+ - hpux: add -DTGETENT_BROKEN to LOCAL_CFLAGS
+
+execute_cmd.c
+ - select_builtin: set executing_builtin around the call to read_builtin
+ so we can run traps if the read call is interrupted. From a report
+ from Andreas Kusalananda Kähäri <andreas.kahari@abc.se>
+
+ 5/12
+ ----
+doc/bashref.texi
+ - The Restricted Shell: add some language detailing the weaknesses of
+ the restricted shell mode in isolation, inspired by a discussion on
+ the zsh mailing list
+
+ 5/15
+ ----
+xmalloc.h
+ - malloc: define to sh_malloc to get file and line information from
+ malloc (not xmalloc) calls. From a suggestion by achurch@achurch.org
+ (Andrew Church)
+
+builtins/evalstring.c
+ - parse_and_execute: make sure the parser is not expanding an alias
+ before terminating the loop that processes characters in the string.
+ Fixes problem with -c commands that end with an alias reported by
+ Yu Kou <ckyoog@gmail.com>
+ - should_suppress_fork: make sure that we don't try to optimize out a
+ fork if the parser is still expanding an alias
+
+ 5/16
+ ----
+lib/readline/misc.c
+ - rl_get_previous_history: if previous_history() returns NULL, only
+ free the saved history if we were the ones who saved it; leave any
+ existing saved history entry alone. Fixes problem with ^N not working
+ at the end of the history if we previously moved back to the start
+ of history
+
+lib/readline/histfile.c
+ - read_history_range: when reading until FROM lines with a history
+ file that has timestamps, make sure to skip to the end of the command
+ line corresponding to the FROMth line instead of leaving line_start
+ pointing to it, and keep track of the start of the last timestamp in
+ last_ts for use by the loop below. Fix for history -n bug reported
+ by HIROSE Masaaki <hirose31@gmail.com>
+
+lib/readline/display.c
+ - init_line_structures: if, for some reason, _rl_screenwidth ends up
+ bigger than the line_size default of 1024 (e.g., gdb's setting the
+ terminal width to 0), make sure line_size is at least _rl_screenwidth.
+ From a report by Tom de Vries <tdevries@suse.de>
+
+ 5/17
+ ----
+variables.c
+ - brand: split the code into a function that generates a 32-bit value
+ given the last value in the sequence (intrand32) and a function that
+ returns a 16-bit random number (brand)
+ - seedrand: small change in hopes of adding slightly more entropy
+ - brand: modify the 16-bit version to XOR the top 16 bits of the 32-bit
+ seed with the bottom 16 bits and return the lower 15 bits of that
+ result as before. Based on an analysis by Andrew Church
+ <achurch+bash@achurch.org>
+
+ 5/18
+ ----
+variables.c
+ - genseed: break code that generates the 32-bit seed for the RNG into
+ a separate function; call from seedrand
+ - {brand32,sbrand32,seedrand32}: new 32-bit versions of the random
+ number generator functions that use the entire 32-bit internal value.
+ Prep for systems that don't have /dev/urandom or arc4random()
+ - perturb_rand32: shake up the 32-bit LCRNG in subshells
+
+ 5/19
+ ----
+variables.c
+ - get_urandom32: get a 32-bit random number by using the first one of
+ these that succeeds: reading from /dev/urandom (if available),
+ calling arc4random (if available), and using the internal 32-bit
+ RNG (always available)
+ - SRANDOM: expand to a 32-bit random number. This is not a LCRNG, so
+ the numbers shouldn't have any relationship to previous returned
+ values. Assignments are accepted but have no effect on the sequence.
+ Not documented yet
+
+ 5/20
+ ----
+doc/{bash.1,bashref.texi}
+ - SRANDOM: document new special variable
+
+ 5/22
+ ----
+jobs.c
+ - find_pid_in_pipeline: abstract some code from find_pipeline to look
+ for a PID in a specific pipline passed as an argument
+ - find_pipeline: if we have some saved pipeline(s), look there to find
+ the PID instead of returning failure. This process could have been
+ started from a DEBUG trap that saved the_pipeline. Fixes Linux bug
+ reported by Hengyang Zhao <hzhao877502@gmail.com>
+
+builtins/bind.def
+ - unbind_keyseq: use rl_function_of_keyseq_len so you can unbind ^@
+ (which translates to 0). Fixes bug reported by
+ Dennis Williamson <dennistwilliamson@gmail.com>
+
+ 5/23
+ ----
+lib/readline/display.c
+ - rl_redisplay: make sure that the line structures can hold up to
+ _rl_screenwidth characters, to support applications like gdb that
+ set the screen width to huge values. Report and fix from
+ Tom de Vries <tdevries@suse.de>
+
+ 5/24
+ ----
+lib/readline/bind.c
+ - rl_generic_bind: move `ic' from block scope to function scope to
+ avoid problems with compilers that destroy and recreate it every
+ time through the loop. Report and fix from Adam Richter
+ <adamrichter4@gmail.com>
+
+ 5/30
+ ----
+jobs.c
+ - wait_for_job: now takes an additional struct procstat * argument,
+ and returns the pid and status of the job's `controlling process'
+ to the caller
+
+{jobs,nojobs}.c
+ - wait_for_background_pids: take a struct proctstat * argument and fill
+ it in with pid and status of the last process to terminate
+
+jobs.h
+ - wait_for_job, wait_for_background_pids: add additional argument to
+ declaration
+
+builtins/wait.def
+ - wait_builtin: set pstat.{pid,status} each time through the pid-or-job
+ loop and for wait without arguments
+
+ 6/4
+ ---
+sig.c
+ - termsig_handler: clean up last_procsub_child before exiting, after
+ unlinking all FIFOs or closing FDs to all the pipes. Might need to
+ send it a SIGTERM too. Fixes issue reported by mwnx <mwnx@gmx.com>
+
+config-top.h
+ - CASEMOD_CAPCASE: no longer defined by default
+
+ 6/5
+ ---
+lib/glob/glob.c
+ - glob_always_skip_dot_and_dotdot: new global variable, if set to
+ a non-zero value, no glob pattern will ever match `.' or `..'.
+ Disabled by default
+
+ 6/7
+ ---
+bashline.c
+ - cmd_xmap: changes to support multiple cmd_xmaps, one per editing
+ mode keymap (one each for vi insert and command modes). Changes from
+ Koichi Murase <myoga.murase@gmail.com>
+
+execute_cmd.c
+ - execute_arith_command: change from expanding the expression using
+ expand_words_no_vars to use expand_arith_string, with the accompanying
+ conversion from a WORD_LIST into a string. This makes it more
+ consistent with other arithmetic expansions. Inspired by a
+ discussion begun by Nils Emmerich <nemmerich@ernw.de>
+
+ 6/10
+ ----
+jobs.c
+ - waitchld: since process substitutions are asynchronous, save the
+ status of one that exits (that we still know about) in the bgpids
+ list
+
+ 6/12
+ ----
+jobs.c
+ - wait_for_background_pids: wait for the last procsub only if it's the
+ same as last_asynchronous_pid
+
+bashline.c
+ - bash_backward_shellword: changes to behave better when at the
+ beginning of the last character on the line and to leave point at
+ the beginning of the shellword, like backward-word. Fixes from
+ Andrew Gaylard <a.gaylard@gmail.com>
+
+ 6/13
+ ----
+bashline.c
+ - __P: Replaced with PARAMS. First of many
+ - bash_transpose_shellwords: transpose-words, but using `shellword'
+ word boundaries like shell-forward-word and shell-backward-word.
+ Contributed by Andrew Gaylard <a.gaylard@gmail.com>
+ - "shell-transpose-words": new name binding for bash_transpose_shellwords
+ - bash_readline_initialize: add default bindings for shell-forward-word,
+ shell-backward-word, shell-transpose-words, and shell-kill-word.
+ Suggested by Andrew Gaylard <a.gaylard@gmail.com>
+
+lib/readline/doc/rluser.texi
+ - shell-transpose-words: document
+ - {shell-forward-word,shell-backward-word,shell-kill-word,shell-transpose-words}:
+ document new default bindings bash now adds
+
+variables.c
+ - set_argv0: function to assign argv0 if it's found in the initial
+ shell environment. Suggested by Cuong Manh Le
+ <coung.manhle.vn@gmail.com>
+ - initialize_shell_variables: call set_argv0() as part of shell
+ initialization
+
+ 6/14
+ ----
+execute_cmd.c
+ - execute_for_command: make sure to call stupidly_hack_special_variables
+ on the index variable each time bind_variable is called on it. If
+ someone does something nonsensical like `for OPTIND in ...' we want
+ the side effects to happen. Reported by Stephane Chazelas
+ <stephane.chazelas@gmail.com>
+ - execute_select_command: do the same thing for the selection variable
+ after calling bind_variable
+
+ 6/15
+ ----
+builtins/set.def
+ - unset_builtin: if neither -f nor -v is supplied, and a NAME cannot
+ be a shell variable because it's not a shell identifier, try to
+ unset a shell function whether we're in posix mode or not. Suggested
+ back in 1/2019 by PePa65 <solusos@passchier.net> and Robert Elz
+ <kre@bmunnari.oz.au>
+
+execute_cmd.c
+ - execute_simple_command: if this is being executed by the command
+ builtin (flags&CMD_COMMAND_BUILTIN), don't bother to print the
+ command words if set -x is enabled. From a report by Martijn Dekker
+ <martijn@inlv.org> back in 4/2018
+
+ 6/19
+ ----
+lib/glob/glob.c
+ - glob_filename: if we are not being called recursively, and there is
+ only a directory name, dequote the passed pathname and see if it
+ names an existing directory. If it does, return it; otherwise return
+ failure ((char **)&glob_error_return). This is what makes backslash
+ escaped-characters in pathnames in shell variables work the same as
+ the same value passed directly. From an anonymous comment on
+ https://savannah.gnu.org/support/?109629 and a discussion on the
+ austin-group list.
+
+ 6/20
+ ----
+pathexp.c,lib/glob/glob.c
+ - posix_glob_backslash: variable to control whether or not pathname
+ expansion handles backslashes in the pattern the way Posix says it
+ should. Enabled by default
+
+pathexp.h
+ - posix_glob_backslash: new extern declaration
+
+builtins/shopt.def
+ - posixglob: new option, reflects the value of posix_glob_backslash
+
+general.c
+ - posix_vars: add posix_glob_backslash to the table
+ - posix_initialize: set posix_glob_backslash to 1 when turning on
+ posix mode
+
+ 6/21
+ ----
+doc/{bash.1,bashref.texi}
+ - pathname expansion: note that under some circumstances the shell
+ will invoke the matching engine for words with unquoted backslashes
+ - posixglob: document the new shell option and its effects
+
+ 6/27
+ ----
+{config.h.in,configure.ac}
+ - setresuid,setresgid: check and set HAVE_{DECL,}_SETRES[UG]ID as
+ appropriate
+
+shell.c
+ - disable_priv_mode: if we have setres[ug]id, use them over
+ set[ug]id, which only set the save user-id and group-id if the
+ process is running as root. From Ian Eldred Pudney
+ in https://savannah.gnu.org/patch/?9822
+
+ 6/28
+ ----
+lib/glob/glob.c
+ - glob_vector: don't bother trying to read the directory if the filename
+ pattern doesn't have any globbing characters except backslash; just
+ dequote the pattern and try to lstat(2) it as if there were no
+ globbing characters at all. From an austingroup-bugs discussion
+ message from Stephane Chazelas <stephane.chazelas@gmail.com>
+
+bashline.c
+ - completion_glob_pattern: just call glob_pattern_p and make sure it
+ returns 1 (non-backslash globbing characters)
+
+builtins/help.def
+ - help_builtin: don't try pattern matching the help topic argument
+ unless glob_pattern_p returns 1
+
+pathexp.c
+ - unquoted_glob_pattern_p: when in a bracket expression (open > 0),
+ don't allow an unquoted slash as part of the bracket expression.
+ Report from Stephane Chazelas <stephane.chazelas@gmail.com>
+
+ 7/1
+ ---
+print_cmd.c
+ - print_function_def,named_function_string: make sure to call
+ PRINT_DEFERRED_HEREDOCS to finish printing any here documents and
+ delimiters before printing the function closing brace. Fixes bug
+ reported by Denis McKeon <dmckeon@swcp.com>
+
+execute_cmd.c
+ - execute_command_internal: call reap_procsubs at the end of executing
+ a group command on systems that have /dev/fd. Fixes bug reported by
+ kfm@plushkava.net
+
+ 7/3
+ ---
+jobs.c
+ - waitchld: this is in the potential SIGCHLD path, so don't call
+ bgp_add, which can potentially call malloc. The glibc malloc doesn't
+ handle that well. Report from howaboutsynergy@protonmail.com
+
+ 7/5
+ ---
+builtins/bind.def
+ - bind_builtin: make sure return_code is >= 0 before returning it.
+ Fixes bug with bind -x and invalid key sequences reported by
+ bashbug@jonkmans.nl
+
+ 7/8
+ ---
+doc/{bash.1,bashref.texi}
+ - unset: fixed up list of special variables that lose their special
+ properties if they are unset. Report and fix from Edward Huff
+ <ejhuff@gmail.com>
+
+ 7/9
+ ---
+test.c
+ - unary_test: update the `-N' test to use timespecs and nanosecond
+ granularity if available, and use mtime > atime instead of the
+ old mtime >= atime. Fixes bug reported by kfm@plushkava.net
+
+lib/sh/strtod.c
+ - strtod: make sure to use locale_decpoint() to determine the radix
+ character
+
+ 7/11
+ ----
+lib/sh/utf8.c
+ - utf8_mblen: return -2 if the UTF-8 sequence is incomplete
+ - utf8_mblen: 4-byte UTF-8 characters start with a byte <= 0xf4; limit
+ to 4-byte UTF-8 (since 5- and 6-byte code points were removed in 2003)
+
+ 7/12
+ ----
+parse.y,shell.h
+ - sh_input_line_state_t: if HANDLE_MULTIBYTE is defined, add members
+ for saving shell_input_line_property and its associated size; let
+ save_line_state and restore_line_state manage it. This means
+ restore_line_state no longer calls set_line_mbstate. From a report
+ from astian <astian@e-nautia.com>
+
+parse.y
+ - set_line_mbstate: if the current locale is not multibyte, just set
+ everything in the property array to 1
+ - set_line_mbstate: use locale_utf8locale to optimize away calls to
+ mbrlen; just use utf8_mblen
+
+ 7/14
+ ----
+variables.c
+ - sv_tz: remake the export env if TZ is being unset. Fixes bug
+ reported by Travis Everett <travis.a.everett@gmail.com>
+
+lib/readline/display.c
+ - rl_expand_prompt: if the prompt contains embedded newlines, compute
+ local_prompt_prefix before local_prompt because each call sets
+ local_prompt_newlines, and we want the values computed in the call
+ that uses local_prompt to be the ones that we use. Fixes prompt
+ wrapping bug reported by Tianon Gravi <admwiggin@gmail.com>
+
+ 7/16
+ ----
+Makefile.in
+ - added a number of dependencies from Vemake Vemake
+ <vemakereporter@gmail.com> as reported in
+ http://savannah.gnu.org/patch/download.php?file_id=47219
+
+ 7/19
+ ----
+lib/sh/utf8.c
+ - utf8_mblen: changes to handle invalid multibyte sequences better,
+ even when N means that the sequence would be too short anyway
+
+arrayfunc.c
+ - bind_assoc_var_internal: new convenience function to assign a
+ key-value pair to an associative array. It gets the SHELL_VAR * AND
+ a HASH_TABLE *, which may or may not correspond to the assoc_cell
+ of the variable, and performs the insertion into the hash table.
+ Callers take care of passing the right values.
+ - bind_assoc_variable: call bind_assoc_var_internal to do the real
+ work
+ - assign_compound_array_list: change to assign associative array
+ key-value pairs into a new hash table (NHASH), so we can still use
+ the old value for expansion. We do this in place of clearing out
+ the contents of the associative array before performing the expansion
+ and assignments. After doing all the assignments into NHASH, we swap
+ NHASH into the variable as its value and dispose of the old value.
+ Fixes inconsistency reported by Darren 'Tadgy' Austin
+ <darren@afterdark.org.uk>
+
+ 7/20
+ ----
+aclocal.m4
+ - include bashansi.h in a bunch of AC_TRY_RUN recipies to avoid
+ exit() being flagged as an implicit declaration. Report and fix
+ from Chris Yungmann <yungmann.chris@gmail.com>
+
+shell.c
+ - set_exit_status: set last_command_exit_value to the argument and make
+ sure to set PIPESTATUS from that exit value
+
+shell.h
+ - set_exit_status: extern declaration
+
+parse.y
+ - report_syntax_error: make sure to set PIPESTATUS if we set
+ last_command_exit_value on a syntax error
+ - parse_string_to_word_list,parse_compound_assignment: set PIPESTATUS
+ when we set last_command_exit_value
+
+sig.c
+ - throw_to_top_level,sigint_sighandler: set PIPESTATUS when we set
+ last_command_exit_value
+
+variables.c
+ - sv_locale: call set_exit_status to set PIPESTATUS and last_command_exit_value
+
+arrayfunc.c
+ - find_or_make_array_variable,array_expand_index,assign_compound_array_list:
+ call set_exit_status to set PIPESTATUS and last_command_exit_value
+
+builtins/evalstring.c
+ - parse_and_execute: set PIPESTATUS when we set last_command_exit_value
+
+braces.c
+ - brace_expand: call set_exit_status to set PIPESTATUS and last_command_exit_value
+
+eval.c
+ - reader_loop: call set_exit_status to set PIPESTATUS and last_command_exit_value
+
+make_cmd.c
+ - set PIPESTATUS when setting $? due to syntax errors or constructs
+ not being available
+
+expr.c
+ - expr_streval: set PIPESTATUS when setting $? due to syntax errors
+
+subst.c
+ - extract_delimited_string,extract_dollar_brace_string,do_assignment_internal,
+ call_expand_word_internal,array_length_reference,param_expand,
+ parameter_brace_expand_word,parameter_brace_expand_rhs,
+ parameter_brace_expand_error,parameter_brace_expand,err_unboundvar:
+ set PIPESTATUS when setting last_command_exit_value on error
+ conditions
+
+redir.c
+ - REDIRECTION_ERROR: set PIPESTATUS when setting last_command_exit_value
+ on error conditions
+
+subst.c
+ - match_upattern,match_wpattern: if the match length is greater than the
+ string length, short-circuit and return failure. Fixes bug
+ reported by Eduardo Bustamante <dualbus@gmail.com>
+
+ 7/22
+ ----
+lib/glob/sm_loop.c
+ - BRACKMATCH: if we think we've matched, tighten up the rules for
+ the closing right bracket in the bracket expression to be correct
+ in the presence of invalid character classes, collating symbols,
+ and equivalence classes. If they're invalid, they shouldn't require
+ additional right brackets to close them
+
+ 7/25
+ ----
+builtins/colon.def
+ - add the right includes so colon_builtin and false_builtin can take
+ a WORD_LIST * argument like the prototype says they do
+
+ 7/29
+ ----
+lib/readline/kill.c
+ - _rl_read_bracketed_paste_prefix: read the character prefix that
+ indicates a pasted string in bracketed paste mode. If we don't
+ read a valid bracketed paste prefix, push the other characters
+ back onto the input stack with _rl_unget_char
+ - _rl_bracketed_read_key: handle reading pasted input when bracketed
+ paste mode is enabled, including reading multibyte characters; push
+ anything beyond a single byte back onto the input stack where it
+ can be read by _rl_read_mbstring or subsequent input
+ - _rl_bracketed_read_mbstring: handle reading pasted input in bracketed
+ paste mode, using _rl_bracketed_read_key to get the pasted text,
+ then call _rl_read_mbstring to get the rest of any multibyte char
+
+
+lib/readline/vi_mode.c
+ - _rl_vi_callback_getchar: call _rl_bracketed_read_mbstring to handle
+ bracketed paste mode input. Fixes issue with vi-change-char reported
+ by <vampyrebat@gmail.com>
+ - rl_vi_domove_getchar: just call _rl_bracketed_read_key and return
+ the result -- we're not interested in multibyte-character input here
+ yet
+ - rl_vi_replace: bind BRACK_PASTE_PREF key sequence if bracketed paste
+ mode has been enabled
+ - _rl_overstrike_bracketed_paste: key binding function for the bracketed
+ paste prefix key sequence in overwrite mode; reads the pasted text
+ and uses rl_vi_overstrike to add each character in overwrite mode.
+ Fixes issue reported by <vampyrebat@gmail.com>
+
+ 7/31
+ ----
+lib/readline/input.c
+ - _rl_read_mbchar: the first time through the loop (mb_len == 0), call
+ _rl_bracketed_read_key to process any bracketed paste characters
+
+lib/readline/text.c
+ - _rl_char_search: use _rl_bracketed_read_key in the non-multibyte
+ character case
+
+lib/readline/misc.c
+ - _rl_arg_dispatch: use _rl_bracketed_read_key in place of rl_read_key
+
+subst.c
+ - list_string: if string_extract_verbatim returns something, just make
+ a WORD_DESC * and add current_word directly to it, noting that we
+ don't want to free current_word (free_word = 0)
+ - string_extract_verbatim: if the separator string is the empty
+ string, don't bother with the loop -- just savestring the string,
+ update *sindex, and return the copy
+ - read_comsub: make the string we use to save the output from the pipe
+ 512 bytes instead of 128 (same size as the buffer used to read from
+ the pipe); fewer calls to xrealloc in the worst case
+ - parameter_brace_expand_length: optimize the common case (non-dynamic
+ scalar variable without `set -u' in effect) and just call MB_STRLEN
+ on the variable value in that case. From a report from
+ Alkis Georgopoulos <alkisg@gmail.com>
+
+ 8/13
+ ----
+execute_cmd.c
+ - execute_subshell_builtin_or_function: call subshell_exit() instead of
+ sh_exit() or exit() so the exit trap gets run. Fixes issue reported
+ in https://savannah.gnu.org/support/?109840
+ - replace __P with PARAMS
+
+lib/readline/colors.c
+ - _rl_print_color_indicator: eliminate one use of S_ISLNK.
+ Report and fix from Christian Biesinger <cbiesinger@google.com>
+
+ 8/22
+ ----
+variables.c
+ - push_posix_temp_var: change to use bind_variable and modify variables
+ at the current local scope or create and modify variables at the
+ global scope, as if a standalone assignment statement had been
+ executed. This restores some bash-4.4 backwards compatibility with
+ respect to posix-mode assignment statements preceding special
+ builtins and shell functions. The bash-5.0 behavior, while perhaps
+ defensible, caused too many compatibility problems. Originally
+ prompted by several discussions with Martijn Dekker; the current
+ incarnation and tests based on a report to Debian BTS from
+ Thorsten Glaser <tg@mirbsd.de>
+
+ 8/26
+ ----
+shell.c,bashhist.c
+ - __P -> PARAMS
+
+shell.c
+ - set_option_defaults,reset_option_defaults: before calling
+ list_minus_o_options at invocation, call set_option_defaults to
+ set the options that are initialized to -1 to either 1 or 0, as
+ appropriate; then call reset_option_defaults to set them back to -1
+ after list_minus_o_options returns
+ - init_interactive: if enable_history_list == -1, set it to 1, then
+ set remember_on_history to enable_history_list. Fixes bug reported
+ by Alex Kerzner <alex.j.kerzner@gmail.com>
+ - init_noninteractive: if enable_history_list == -1, set it to 0, let
+ bash_history_reinit take care of setting remember_on_history
+ - init_interactive_script: if enable_history_list == -1, set it to 1,
+ then set remember_on_history to enable_history_list
+
+bashhist.c
+ - enable_history_list: initialize to -1 to note when it gets changed
+ by -o history or +o history at invocation
+
+ 8/28
+ ----
+lib/readline/terminal.c
+ - TGETENT_SUCCESS, TGETFLAG_SUCCESS: defines to represent successful
+ returns from tgetent and tgetflag, since HPUX manages to get them
+ wrong. New patch from Osipov, Michael <michael.osipov@siemens.com>
+ - TGETFLAG: new define, make sure tgetflag returns TGETENT_SUCCESS
+ - _rl_init_terminal_io: use TGETENT_SUCCESS and TGETFLAG
+
+configure.ac
+ - hpux: make sure to define TGETFLAG_BROKEN
+
+ 8/30
+ ----
+tests
+ - add copyright notices to all scripts longer than 15 lines at the
+ request of the FSF
+
+ 9/1
+ ---
+lib/readline/complete.c
+ - _rl_complete_internal: move logic that checks whether the last
+ completion attempt failed and the current attempt returned a single
+ match and insert the single completion here. A better implementation
+ of Richard Stallman's suggestion of 2/23.
+
+ 9/3
+ ---
+bashline.c
+ - edit_and_execute_command: reset the readahead token after calling
+ restore_parser_state, in case some call to reset_parser set
+ token_to_read. Fixes bug reported by null <avalonvales@protonmail.com>
+
+ 9/9
+ ---
+execute_cmd.c
+ - execute_command_internal: if we're executing a command list
+ (executing_list != 0), save the old fifo list and close any new
+ FIFOs that the command opens. Fixes bug reported by
+ Kamil Cukrowski <kamilcukrowski@gmail.com>
+
+ 9/10
+ ----
+aclocal.m4,m4/intdiv0.m4
+ - make sure `exit' is used consistently with <stdlib.h> included
+ - make sure `main' isn't declared to implicitly return int
+ - include <ulimit.h> before using ulimit
+ - include <string.h> before testing string functions
+ - fixes from Florian Weimer <fweimer@redhat.com>
+
+configure.ac
+ - setresuid,setresgid: use AC_CHECK_FUNCS instead of AC_CHECK_DECL,
+ which always fails
+
+shell.c
+ - disable_priv_mode: use HAVE_SETRESUID and HAVE_SETRESGID instead of
+ the HAVE_DECL variants, which always fail configure tests
+
+m4/intl.m4
+ - gt_INTL_SUBDIR_CORE: add back check for localeconv, removed in
+ newer gettext releases
+
+ 9/16
+ ----
+builtins/help.def
+ - help_builtin: make the closing quote printed after the argument list
+ for a glob pattern argument a translatable string to ease translation
+ for certain languages. Report from Roland Illig <roland.illig@gmx.de>
+
+builtins/{reserved,complete,exec,getopts}.def
+ - minor typographical fixes from Roland Illig <roland.illig@gmx.de>
+
+siglist.c
+ - include general.h for INT_STRLEN_BOUND
+ - initialize_siglist: use the same string for the strlen and xmalloc
+ for the message about an unknown signal number; use INT_STRLEN_BOUND
+ instead of a fixed 10 for the number
+
+builtins/getopts.def,doc/{bash.1,bashref.texi}
+ - getopts: minor changes to the description of the effect of supplying
+ additional arguments. Report from Roland Illig <roland.illig@gmx.de>
+
+ 9/17
+ ----
+jobs.[ch]
+ - save_proc_status: external interface to bgp_add, takes care of
+ blocking and unblocking SIGCHLD
+ - __P -> PARAMS
+
+ 9/18
+ ----
+jobs.[ch]
+ - procsub_{free,add,search,delete,waitpid,waitall,clear,prune}: new
+ functions to keep track of the list of active process substitutions
+ and their statuses. Implementation is currently a singly-linked list
+ of PROCESS *, so functions that expect a PROCESS * to manipulate
+ continue to work. Inspired by report from leo.dalecki@ntymail.com
+ - find_pipeline,cleanup_dead_jobs,wait_for_background_pids: call new
+ procsub_* functions to manage procsub list; don't call the functions
+ in subst.c any more
+
+subst.c
+ - process_substitute: call procsub_add with the PROCESS * returned
+ from make_child; let the functions in jobs.c manage the list.
+ waitchld continues to set the pid field in the fifo list as a hint
+ that a particular fd or FIFO is no longer used and can be reaped
+ - process_substitute: let the child process clear out any existing
+ procsub pid list
+ - wait_procsubs: no longer compiled in
+
+sig.c
+ - termsig_handler: replace discard_last_procsub_child with call to
+ procsub_clear
+
+lib/readline/display.c
+ - init_line_structures: fix a problem which results in references to
+ uninitialized memory when gdb sets the number of columns to 32767
+ (their `unlimited'). Modification of change from 5/23. Report and
+ fix from Andrew Burgess <andrew.burgess@embecosm.com>
+
+ 9/19
+ ----
+parse.y
+ - xparse_dolparen: after calling parse_string to consume input, make
+ sure to reset the parser (reset_parser()) before restoring the EOF
+ token and the parser_state variable. Fixes issue with nested traps
+ running command substitutions in command lines with command
+ substitutions reported by Travis Everett <travis.a.everett@gmail.com>
+
+ 9/20
+ ----
+doc/{bashref.texi,bash.1}
+ - fixed a typo in the example for the =~ operator: the ? should follow
+ the (a), not precede it. Report from hk <hkadeveloper@gmail.com>
+ - some changes to the text describing regular expression matching for
+ the =~ operator
+
+ 9/25
+ ----
+general.c,builtins/shopt.def
+ - posix_glob_backslash: remove references to this variable and the
+ `posixglob' shell option
+
+doc/{bash.1,bashref.texi}
+ - remove references to the `posixglob' shell option
+
+ 9/26
+ ----
+{jobs,nojobs}.c
+ - DEFAULT_MAX_CHILD: bump this up to 4096
+ - set_maxchild: set lmaxchild to MAX_CHILD_MAX if getmaxchild returns
+ -1 without changing errno (assume that sysconf returns -1 meaning
+ unlimited)
+ - initialize_job_control: call set_maxchild instead of inline code
+ - mark_dead_jobs_as_notified: call set_maxchild to set js.c_childmax
+ if it hasn't been set yet
+
+ 9/30
+ ----
+lib/glob/xmbsrtowcs.c
+ - xwcsrtombs: implementation of wcsrtombs from gnulib, modified to
+ treat invalid wide characters (or wide characters that can't be
+ converted to multibyte character sequences) as bytes. Should be
+ used only in unusual circumstances where wcsrtombs fails.
+
+lib/glob/glob.c
+ - wdequote_pathname: if wcsrtombs fails to convert the dequoted wide
+ character pathname back to a sequence of multibyte characters, call
+ xwcsrtombs to try to treat the invalid wide characters as bytes --
+ the call to xdupmbstowcs treats bytes that don't convert to wide
+ characters as just bytes, which kind of causes this problem in the
+ first place. Inspired by report from Geoff Kuenning <geoff@cs.hmc.edu>
+
+lib/readline/complete.c
+ - compute_lcd_of_matches: use the case-folding code (which performs
+ character-by-character checking and compares invalid multibyte
+ sequences as bytes) instead of the old case-sensitive code (which
+ used _rl_compare_chars), converting characters to lowercase as
+ needed. Fixes bug with invalid sequences in common filename prefixes
+ reported by Grisha Levit <grishalevit@gmail.com>
+
+ 10/1
+ ----
+builtins/shopt.def
+ - reset_shopt_options: add in resets for some missing shopt options.
+ Report and fix from Grisha Levit <grishalevit@gmail.com>
+
+execute_cmd.c
+ - execute_command_internal: make sure a failed attempt to define a
+ shell function causes the shell to exit if -e is enabled. Report
+ from Andreas Kusalananda Kähäri <andreas.kahari@abc.se>
+ - execute_command_internal: combine cm_function_def, cm_arith, and
+ cm_cond cases into one switch case, since the code is virtually
+ identical across all three
+
+ 10/3
+ ----
+pathexp.[ch],lib/glob/glob.c,lib/glob/glob_loop.c
+ - remove all references to posix_glob_backslash in preparation for
+ implementing austin group interpretation #1234
+
+pathexp.c
+ - unquoted_glob_pattern_p: revert to bash-4.4 behavior of returning 1
+ only if there is an unquoted `*', `?', or bracket expression, as
+ per austin group interpretation #1234
+
+lib/glob/glob_loop.c
+ - INTERNAL_GLOB_PATTERN_P: revert to bash-4.4 behavior of returning 1
+ only if there is an unquoted `*', `?', or bracket expression, as
+ per austin group interpretation #1234
+
+ 10/4
+ ----
+variables.c
+ - assign_seconds,get_seconds: use the tv_sec value returned from
+ gettimeofday() instead of time() to get a better approximation of
+ the number of seconds since the epoch for future calculations.
+ From a report by Stephane Chazelas <stephane.chazelas@gmail.com>
+
+pathexp.[ch],{bashline,subst}.c
+ - shell_glob_filename: now takes an additional flags argument to pass
+ to quote_string_for_globbing
+
+ 10/6
+ ----
+subst.c
+ - glob_expand_word_list: call shell_glob_filename with QGLOB_CTLESC
+ because quote removal hasn't been performed yet
+
+ 10/7
+ ----
+pathexp.c
+ - quote_string_for_globbing: if we have an unquoted backslash followed
+ by a CTLESC-quoted character (not CTLESC-CTLESC), just perform the
+ usual CTLESC-to-backslash conversion instead of skipping over it.
+ Fixes issue raised in austin-group discussion about globbing by
+ Geoff Clare <gwc@opengroup.org> (austin-group issue 1234), though
+ it's still inherently ambiguous
+
+ 10/8
+ ----
+include/shmbutil.h
+ - xwcsrtombs: extern declaration, to match other functions in that file
+
+lib/glob/glob.c
+ - wcdequote_pathname: new function, actual backslash quote removal code
+ from wdequote_pathname; wdequote_pathname calls it
+
+lib/glob/glob.c
+ - {udequote,wcdequote}_pathname: now public void functions
+
+lib/glob/smatch.c
+ - DEQUOTE_PATHNAME: defined appropriately to udequote_pathname or
+ wcdequote_pathname
+
+lib/glob/sm_loop.c
+ - DEQUOTE_PATHNAME: appropriate extern declaration
+ - BRACKMATCH: call DEQUOTE_PATHNAME to dequote a character class name
+ in a bracket expression. This is the result of a discussion on the
+ austin-group mailing list, from Geoff Clare <gwc@opengroup.org> and
+ Robert Elz <kre@bmunnari.oz.au>
+
+ 10/10
+ -----
+execute_cmd.[ch]
+ - async_redirect_stdin: now a global function
+
+subst.c
+ - process_substitute: call async_redirect_stdin in the child to keep
+ it from having stdin connected to the terminal, since it's not a
+ job control process
+
+ 10/11
+ -----
+subst.c
+ - process_substitute: in the child process, set interactive = 0, since
+ an asynchronous process substitution process is not interactive.
+ Seems to fix issue reported by Grisha Levit <grishalevit@gmail.com>
+
+lib/sh/shmatch.c
+ - sh_regmatch: implement a suggestion from Grisha Levit
+ <grishalevit@gmail.com> and don't allow nocaseglob to enable case-
+ insensitive regexp matching. It hasn't been documented that way
+ in years
+
+ 10/30
+ -----
+bashhist.c
+ - bash_add_history: fix a couple of problems with adding extra blank
+ lines to history entries containing here-documents. Fixes bug
+ reported by Oguz <oguzismailuysal@gmail.com>
+
+lib/sh/shmatch.c
+ - BASH_REMATCH: no longer set to readonly. From a suggestion from
+ Rocky Bernstein <rocky@gnu.org>
+
+doc/{bash.1,bashref.texi}
+ - BASH_REMATCH: document that it's no longer set to readonly
+
+subst.c
+ - getpattern: since expand_string_for_pat leaves the pattern quoted,
+ we need to remove quoted nulls before running the string through
+ string_list (and then quote_string_for_globbing, since QGLOB_CVTNULL
+ only handles pat[0] == CTLNUL). Fixes bug reported by Oguz
+ <oguzismailuysal@gmail.com>
+
+ 11/4
+ ----
+configure.ac,config.h.in
+ - AC_HEADER_MAJOR: look for `major' and `minor' in various header files
+ and define MAJOR_IN_MAKEDEV or MAJOR_IN_SYSMACROS as appropriate.
+ From a patch from Eli Schwartz <eschwartz@archlinux.org>
+
+examples/loadables/finfo.c
+ - include <sys/mkdev.h> and <sys/sysmacros.h> as appropriate for
+ definitions of major/minor
+
+ 11/6
+ ----
+redir.c
+ - heredoc_expand: if we are expanding the WORD in a here-string, use
+ expand_assignment_string_to_string so the expansions are consistent
+ in contexts where word splitting is not performed. From a bug report
+ by Robin A. Meade <robin.a.meade@gmail.com>
+
+ 11/7
+ ----
+parse.y
+ - xparse_dolparen: if the command substitution is incomplete or doesn't
+ end in `)', print an error message instead of allowing EOS to
+ terminate the comsub. From a bug report from
+ Oguz <oguzismailuysal@gmail.com>
+
+ 11/11
+ -----
+lib/sh/unicode.c
+ - u32toutf8: fix a typo that assigned the wrong value to the first
+ byte of a six-byte UTF-8 character. Report and fix from
+ István Pásztor <pasztorpisti@gmail.com>
+
+ 11/15
+ -----
+doc/bash.1,lib/readline/doc/{history.3,hsuser.texi}
+ - quick substitution: make it clear that ^s1^s2^ is equivalent to
+ !!:s^s1^s2^, since that's the internal transformation we perform.
+ Reported by Jim Monte <jim.monte01@gmail.com>
+ - note that the `q' and `x' modifiers are mutually exclusive; last
+ one wins. Reported by Jim Monte <jim.monte01@gmail.com>
+ - note that the `G' modifier can work with `&' as well as `s'.
+ Reported by Jim Monte <jim.monte01@gmail.com>
+ - note that a word designator of `-' is equivalent to `0-'.
+ Reported by Jim Monte <jim.monte01@gmail.com>
+ - note that a missing `new' in a substitution modifier causes
+ instances of `old' to be deleted
+
+lib/readline/histexpand.c
+ - history_expand_internal: make multiple :p modifiers work to suppress
+ execution. Reported by Jim Monte <jim.monte01@gmail.com>
+ - get_history_word_specifier: fix so a `^' word designator works as
+ the second part of a range.
+ Reported by Jim Monte <jim.monte01@gmail.com>
+ - hist_error: make sure we don't blindly copy a null character into
+ the error string (e.g., if there is a missing word designator
+ following `:'). Reported by Jim Monte <jim.monte01@gmail.com>
+ - get_history_event: if the history event specifier (!) is followed
+ immediately by a `-' and a non-digit (e.g. !-a), make sure the - is
+ treated as part of a search string instead of making it an offset of
+ 0. Reported by Jim Monte <jim.monte01@gmail.com>
+
+ 11/19
+ -----
+lib/readline/{colors,complete,histfile,input}.c,support/shobj-conf
+ - fixes to make readline compile on the latest HPE Nonstop (Tandem)
+ releases. From Randall S. Becker <rsbecker@nexbridge.com>
+
+subst.c
+ - pat_subst: if we have a null match, make sure we advance by one
+ character, not one byte. Bug reported by Chris Carlen
+ <crobc@sbcglobal.net>
+
+ 11/22
+ -----
+jobs.[ch],nojobs.c,builtins/jobs.def
+ - get_job_by_pid: now takes a PROCESS ** third argument; if non-null,
+ it gets a pointer to the PROCESS struct corresponding to the PID
+ argument. A convenience, not used by any caller yet
+
+builtins/wait.def
+ - interrupt_immediately: remove any uses, no longer used anywheren
+
+variables.c
+ - check_unbind_variable: return -2 if the variable name is readonly
+ (change) or non-unsettable (new) to differentiate the return value
+ from -1 from makunbound (which means variable not found)
+
+builtins/common.[ch]
+ - builtin_unbind_variable: identical to check_unbind_variable but calls
+ builtin_error; for use by builtin commands
+
+buitins/wait.def
+ - wait_builtin: now has -p VARNAME option, which takes the pid
+ returned by `wait -n' or wait without arguments and assigns it to
+ VARNAME, unsetting VARNAME first. Requested by Robert Elz
+ <kre@bmunnari.oz.au> after a similar feature in netbsd sh (not
+ completely compatible yet)
+
+doc/{bash.1,bashref.texi}
+ - wait: document new -p option
+
+ 11/25
+ -----
+lib/readline/display.c
+ - rl_redisplay: auto-set horizontal scrolling if the terminal has
+ only one line; disable it if we auto-set it if the terminal grows
+ to more than one line. Fix from Sören Tempel
+ <soeren@soeren-tempel.net>
+
+lib/readline/doc/{readline.3,rluser.texi},doc/bash.1
+ - horizontal-scroll-mode: document auto-setting behavior
+
+builtins/set.def
+ - set_posix_mode: make setting posix mode when it's already set, or
+ unsetting it when it's not set, a no-op. Inspired by a report
+ from Ulrich Mueller <ulm@gentoo.org>
+
+ 11/26
+ -----
+doc/{bash.1,bashref.texi}
+ - functions: clarify that when in default mode, function names are not
+ limited to shell identifiers.
+ Suggested by Reuti <reuti@staff.uni-marburg.de>
+
+ 11/27
+ -----
+lib/readline/display.c
+ - _rl_optimize_redisplay: tell the redisplay routines to not worry
+ about calculating differences between the lines and just draw the
+ new one. Right now, it just sets the _rl_quick_redisplay flag
+ - rl_redisplay: if _rl_quick_redisplay is set, just draw NEW onto
+ the screen at column 0 with a dumb update and clear the rest of
+ the line. Intended to be used when the caller knows the new line is
+ sufficiently different from the old one (e.g., when drawing the
+ i-search prompt for the first time) that it doesn't pay off to do
+ the calculations. As a side effect, fixes the bug reported by
+ ÐлекÑей Шилин <rootlexx@mail.ru>
+
+lib/readline/isearch.c
+ - rl_display_search: if there isn't a search string, assume this is
+ the first time this is called and call _rl_optimize_redisplay to
+ give the redisplay code a hint
+
+ 12/2
+ ----
+builtins/wait.def
+ - wait_builtin: allow argument to -p to be a valid array subscript
+
+ 12/3
+ ----
+lib/readline/isearch.c
+ - _rl_isearch_fini: add call to _rl_optimize_redisplay because we are
+ switching the prompt back again and it's safer to redraw everything
+ (even though part of the line is the same) to deal with differences
+ in the prompt strings. Fixes additional problem reported by
+ ÐлекÑей Шилин <rootlexx@mail.ru>
+
+lib/readline/display.c
+ - update_line: quick redisplay no longer sets cpos_adjusted before
+ the dumb update
+ - update_line: adjust _rl_last_c_pos in the case of a dumb update if we
+ are redrawing the prompt that includes invisible characters, since
+ _rl_col_width does not. We adjust by the count of invisible chars in
+ the first line of the prompt
+ - update_line: make sure to clear the rest of the line if it looks like
+ the number of visible characters on the new line is less than the
+ number of visible characters on the current line; the old calculation
+ does that just for the number of bytes (which is also useful)
+
+ 12/4
+ ----
+lib/readline/display.c
+ - rl_redisplay: if we are changing from one line to multiple lines,
+ don't try quick redisplay
+ - update_line: changes to quick redisplay to take advantage of knowing
+ the physical length of the prompt to avoid having to compute column
+ widths of the prompt string again; moved code to call clear screen
+ to the quick update section; no longer performs `goto dumb_update'
+ - update_line: try to take advantage of prompt_physical_chars when we
+ know we have written the prompt string (several places) to set
+ _rl_last_c_pos and calculate column widths
+ - update_line: if the spot where the old and new lines are the same is
+ before the end of the prompt string, adjust NLS and OLS so we write
+ the entire prompt string (as long as it's all on one line) and can
+ take advantage of already knowing prompt_physical_chars so we don't
+ have to compute column widths
+ - update_line: when copying chars from first diff to last match, adjust
+ _rl_last_c_pos by prompt_invis_chars_first_line, not wrap offset,
+ since we are on the first line, and only do this if we inserted more
+ bytes than wrap_offset (old code checked _rl_last_c_pos, which is
+ wrong in the presence of multibyte characters)
+
+ 12/5
+ ----
+lib/readline/display.c
+ - ADJUST_CPOS: define macro and use it in places where _rl_last_c_pos
+ is changed
+
+ 12/12
+ -----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: check for multibyte characters mapped to one
+ of the editing functions we treat specially to modify the search
+ string
+
+ 12/13
+ -----
+support/shobj-conf
+ - FreeBSD and Dragonfly are ELF-only and can use the same code as
+ Linux, so add those to the linux stanza and remove the old FreeBSD
+ version-specific sections. Report and fix from Baptiste Daroussin
+ <bapt@FreeBSD.org>
+
+bashline.[ch]
+ - bash_execute_unix_command: no longer static, available for other
+ parts of the shell to use
+
+bashline.c
+ - unbind_unix_command: take a key sequence as an argument, and unbind
+ it in the appropriate unix command keymap
+
+builtins/bind.def
+ - unbind_keyseq: if we are unbinding a key sequence bound to
+ bash_execute_unix_command, which means it was added by `bind -x',
+ call unbind_unix_command() to remove it from the appropriate unix
+ command keymap. Fixes issue originally raised by
+ Koichi Murase <myoga.murase@gmail.com> and recently by
+ Å imon Let <simon.a.let@gmail.com>
+ - bind_builtin: check the number of bindings to bash_execute_unix_command
+ before and after a call to rl_parse_and_bind and if there are fewer
+ after binding, we know that the bind has re-bound one of the key
+ sequences that was bound to execute a shell command. We unbind any
+ key sequences from the list before the call to rl_parse_and_bind that
+ don't appear in the list after the call using unbind_unix_command
+
+ 12/19
+ -----
+include/posixstat.h
+ - added some definitions for MinGW. Report and patch from
+ Eli Zaretskii <eliz@gnu.org>
+
+ 12/20
+ -----
+lib/readline/display.c
+ - update_line: when wrapping lines containing multibyte characters at
+ the wrap point, and the number of screen positions consumed by the
+ first character on the new line isn't the same as the old line,
+ make sure we set OE before the `goto dumb_update;' since clearing
+ the rest of the line may use it. Tentative fix for bug reported by
+ Kirill Chibisov <wchibisovkirill@gmail.com>
+
+lib/readline/signals.c
+ - _rl_signal_handler: set RL_STATE_SIGHANDLER around SIGWINCH code,
+ like _rl_handle_signal does
+
+ 12/26
+ -----
+lib/sh/stringvec.c
+ - strvec_posixcmp: new function that conforms to posix requirement for
+ sorting globs: perform a bytewise comparison if the two strings
+ collate equally. Posix interp 963 and 1070
+ - strvec_sort: take a new flags argument, if non-zero use the posix
+ string comparison function
+
+pathexp.c
+ - shell_glob_filename: call strvec_sort with the flag value to be
+ posix conformant
+
+lib/sh/stringlist.c
+ - strvec_sort: change callers
+
+ 12/29
+ -----
+sig.c
+ - throw_to_top_level: set running_trap to 0 after calling run_trap_cleanup.
+ This avoids spurious (in non-release versions) warnings from
+ run_pending_traps the next time a trap handler for that signal
+ runs. Bug report from Martijn Dekker <martijn@inlv.org>
+
+ 1/14/2020
+ ---------
+bashline.c
+ - find_cmd_start: don't treat the open brace in brace expansion as a
+ command start character; only treat open brace specially if it can
+ be a reserved word. Fixes bug reported back in October, 2019 in
+ https://savannah.gnu.org/support/index.php?110063
+
+ 1/15
+ ----
+lib/readline/readline.c
+ - _rl_dispatch_subseq,_rl_subseq_result: if we push back a character
+ with _rl_unget_char or otherwise go back up the chain without a
+ sequence match, make sure we back up in rl_executing_keyseq.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+builtins/bind.def
+ - unbind_keyseq: if we unbind something that ends up pointing to a
+ shadow keymap, restore the ANYOTHERKEY binding that we used when
+ binding it.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+bashline.c
+ - bash_execute_unix_command: if we walked cmd_xmap for rl_executing_keyseq
+ and ended up pointing to a keymap (type == ISKMAP) we want the
+ binding for ANYOTHERKEY instead.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+lib/readline/bind.c
+ - rl_bind_key: if we're trying to bind a key sequence containing '\0'
+ using the old-style binding syntax (C-SPC), make sure we quote the
+ NULL so it will make it through rl_translate_keyseq().
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_bind_key: if we're overwriting a binding for a macro, make sure to
+ free the old macro value.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+ - rl_generic_bind: if we're overwriting a macro saved to ANYOTHERKEY in
+ a shadow keymap created by rl_generic_bind, make sure to free the
+ macro data.
+ Report and fix from Koichi Murase <myoga.murase@gmail.com>
+
+trap.c
+ - run_pending_traps: save and restore the value of running_trap around
+ cycle through pending signals so recursive trap handler calls don't
+ set running_trap to 0
+ - _run_trap_internal: allow some signals the shell treats specially
+ (e.g., SIGINT) to run recursive handlers
+ - _run_trap_internal: don't turn off SIG_INPROGRESS flag if it was on
+ for this signal when _run_trap_internal was called
+ - _run_trap_internal: save and restore the value of running_trap around
+ running the trap handler, except for SIGCHLD. Fixes bug reported by
+ Martijn Dekker <martijn@inlv.org>
+
+ 1/16
+ ----
+general.c
+ - posix_initialize: if turning posix mode off, restore settings from
+ any saved set, if one exists, instead of setting a default environment
+
+ 1/17
+ ----
+parse.y,subst.c
+ - process_substitution: now available in POSIX mode. Most recently
+ requested by Martijn Dekker <martijn@inlv.org>; requested several
+ times in the past
+
+doc/bashref.texi
+ - posix mode: remove restriction that posix mode is not available
+
+lib/readline/vi_mode.c
+ - rl_domove_motion_callback: make sure to extend rl_line_buffer so it
+ can hold the dummy blank character we're appending. From a fuzzing
+ report by Tillmann Osswald <tosswald@ernw.de>
+ - vi_yank_dispatch: after we do an undo, make sure to fix point to be
+ less than the (new) rl_end
+
+lib/readline/text.c
+ - rl_forward_word: make sure that MB_NEXTCHAR doesn't go past rl_end on
+ invalid multibyte sequences
+
+ 1/18
+ ----
+test.c
+ - for the `-v' operator, use a clever trick from Martijn Dekker and
+ just test whether N is between 0 and $#.
+
+ 1/21
+ ----
+lib/readline/text.c
+ - rl_change_case: fix argument to rl_extend_line_buffer; make sure to
+ reset s and e after call in case rl_line_buffer was reallocated
+
+lib/readline/vi_mode.c
+ - _rl_vi_save_replace: if start ends up being less than zero, make
+ sure we don't read before the start of rl_line_buffer
+ - rl_vi_overstrike_kill_line,rl_vi_overstrike_kill_word: replacement
+ functions for ^U and ^W in vi overstrike mode, to keep right value
+ for vi_replace_count.
+ - rl_vi_overstrike_yank: similar for ^Y and rl_yank
+
+ 1/22
+ ----
+lib/readline/display.c
+ - update_line: if we're trying to wrap lines on an autowrap terminal,
+ punt and do a dumb update if the number of bytes in the first char
+ on the new line is greater than the number of bytes in the first char
+ of the old line. There's no guarantee we'll be able to extend the
+ old line buffer enough to accommodate the new bytes
+ - update_line: try to avoid some operations when wrapping lines if the
+ number of bytes in the first characters of the old and new lines is
+ the same
+ - update_line: when updating vis_lbreaks after fixing up the lines when
+ wrapping, make sure we don't exceed an index of _rl_vis_botlin when
+ updating the line break offsets
+
+lib/readline/text.c
+ - rl_delete_text: if deleting text leaves the mark past rl_end, adjust
+ it to rl_end
+
+lib/readline/vi_mode.c
+ - _rl_vi_goto_mark: make sure to call _rl_fix_point after setting
+ rl_point to rl_mark
+
+ 1/23
+ ----
+lib/readline/kill.c
+ - rl_kill_region,region_kill_internal: call _rl_fix_point
+
+lib/readline/text.c,lib/readline/rlprivate.h
+ - _rl_fix_mark: new function to clamp rl_mark between 0 and rl_end
+
+ 1/24
+ ----
+lib/readline/bind.c
+ - rl_translate_keyseq: rework how key sequences are translated with
+ the intent of normalizing backslash treatment. Since the current
+ behavior of, e.g., \C-\\, is inconsistent, this change chooses to
+ effectively treat and display \\ as \\ instead of \C-\. This is not
+ completely backwards compatible, but it seems like the most reasonable
+ choice. This allows things like \M-\a but is not compatible with
+ pre-bash-4.4 (readline 7.0) handling of \C-\, which is now treated
+ like \C-\0. If that proves to be a problem, we can add code to
+ understand \C-\ as equivalent to \C-\\. Since attempting to bind
+ "\C-\" has generated an error for a long time, it doesn't seem like
+ it will be too much of a problem.
+ Fixes from Koichi Murase <myoga.murase@gmail.com>
+ - rl_invoking_keyseqs_in_map: make sure to consistently output
+ backslash as `\\' instead of producing `\C-\'
+ Fixes from Koichi Murase <myoga.murase@gmail.com>
+
+ 1/29
+ ----
+bashline.c
+ - readline_get_char_offset: translate a readline buffer offset
+ (rl_point, rl_mark, rl_end) into a number of (possibly multibyte)
+ characters
+ - readline_set_char_offset: translate a number of (possibly multibyte)
+ characters into a buffer offset in rl_line_buffer. Uses a private
+ readline function to do it, which is bad
+ - bash_execute_unix_command: use readline_{get,set}_char_offset to
+ translate the rl_point to a character offset
+ - bash_execute_unix_command: bind READLINE_MARK variable, exposing
+ the value of rl_mark to `bind -x' functions
+
+doc/{bash.1,bashref.texi}
+ - READLINE_MARK: document new variable set by the shell
+
+ 1/31
+ ----
+examples/loadables/accept.c
+ - accept: new loadable builtin that will accept a TCP connection on a
+ specified port. Inspired by Stan Marsh <gazelle@xmission.com>
+
+ 2/1
+ ---
+lib/readline/histfile.c
+ - history_do_write,history_truncate_file: translate the return value rv
+ to errno when histfile_restore returns -1 (e.g., if rename() fails).
+ Report and fix from A <auroralanes@protonmail.ch>
+
+ 2/3
+ ---
+lib/sh/ufuncs.c
+ - fsleep: if pselect/select is interrupted by a signal, return -1 and
+ let the caller deal with it
+
+lib/sh/timeval.c
+ - multimeval: new function, multiply a timeval by a constant integer
+ - divtimeval: new function, divide a timeval by a constant integer
+
+lib/sh/uconvert.c
+ - uconvert: new additional argument: EP. If non-null, it gets the
+ address of the first non-digit that ends conversion (like strtod);
+ we try to do as much of the conversion as possible if EP is set so
+ the caller can clean up
+
+ 2/4
+ ---
+examples/loadables/mkfifo.c
+ - mkfifo: new loadable builtin
+
+ 2/6
+ ---
+variables.c
+ - make_local_variable: make sure local variables that have the same
+ names as variables found in the temporary environment are marked as
+ local. From Grisha Levit <grishalevit@gmail.com> back in 12/2018
+
+ 2/7
+ ---
+sig.[ch]
+ - restore_sigmask: function to restore top-level signal mask using
+ sigprocmask
+
+{sig,eval,jobs,nojobs}.c
+ - replace calls to sigprocmask with restore_sigmask(); remove extern
+ declarations of top_level_mask
+
+sig.c
+ - initialize_shell_signals: if SIGCHLD is blocked at shell startup,
+ not only remove it from top_level_mask but make sure it's unblocked
+
+execute_cmd.c
+ - execute_pipeline: if lastpipe is enabled and we're executing the
+ rightmost pipeline element in the current shell, make sure to unblock
+ SIGCHLD before calling execute_command, in case `return' or `exec'
+ is run and that call doesn't return. From a report by
+ Harald van Dijk <harald@gigawatt.nl> following up to a report
+ by Martijn Dekker <martijn@inlv.org>
+
+ 2/10
+ ----
+builtins/trap.def
+ - trap_builtin: in posix mode, when trap is run with -p, show
+ the disposition of all signals, even those that are still in the
+ default state, including signals that were ignored when the shell
+ starts up and haven't been reset. Don't do it in default mode.
+ From an austin-group discussion back in April, 2019 (interp 1211)
+
+findcmd.c
+ - search_for_command: don't add commands without the execute bit set
+ to the command hash table. From https://savannah.gnu.org/patch/?9789
+ contributed by michaeljs1990
+
+ 2/11
+ ----
+expr.c
+ - strlong: require `base#' to be followed by an integer constant;
+ otherwise throw an error. From a report from Jeremy Townshend
+ <jeremy.townshend@gmail.com> back in June, 2019
+
+test.c
+ - unary_test: allow -v N to test whether or not positional parameter
+ N is set. Most recently suggested by Peng Yu <pengyu.ut@gmail.com>
+ and Martijn Dekker <martijn@inlv.org>
+
+builtins/getopts.def
+ - dogetopts: use number_of_args() to compute the number of positional
+ parameters
+
+{findcmd,variables,subst,trap,sig}.h,builtins/common.h
+ - __P --> PARAMS
+
+builtins/shift.def,builtins/common.c
+ - shift_builtin: moved code that modifies dollar_vars and rest_of_args
+ to common.c:shift_args(int times), part of move to localize changes
+ to positional parameters
+
+builtins/common.c,variables.c
+ - posparam_count: keep a running count of the number of posititional
+ parameters when dollar_vars and rest_of_args are set
+
+ 2/12
+ ----
+subst.c
+ - number_of_args: just return posparam_count
+
+builtins/shift.def
+ - shift_builtin: if asked to clear the positional parameters with
+ something like `shift $#', just call clear_dollar_vars instead of
+ iterating through them, unsetting them one by one
+
+subst.[ch],builtins/common.[ch]
+ - number_of_args: moved to builtins/common.c
+
+ 2/14
+ ----
+subst.c
+ - clear_fifo_list: when using named pipes, clear out the FIFO list
+ without unlinking anything and set NFIFO to 0
+
+execute_cmd.c
+ - execute_disk_command: in the child, clear out the FIFO list, since
+ we haven't created any FIFOs yet
+ - execute_in_subshell: clear out the FIFO list, since we haven't
+ created any FIFOs yet
+
+parse.y
+ - special_case_tokens: allow `time -- command'
+
+ 2/21
+ ----
+subst.c
+ - get_var_and_type: if an unset variable (not an array) is supplied
+ with the `[@]' subscript, don't return "". Fix to bug reported by
+ Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>;
+ original bug introduced 7/29/2018
+ - array_transform: take a STARSUB argument instead of VARNAME, since
+ we've already computed what kind of index the array reference uses
+ in get_var_and_type, and passing VARNAME to figure out the index
+ type doesn't do the right thing when we're using indirect variable
+ expansion. Fixes bug reported by
+ Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
+ - array_remove_pattern: take the same new STARSUB argument for the
+ same reason
+ - parameter_brace_transform,parameter_brace_remove_pattern: change
+ callers to pass STARSUB instead of VARNAME
+
+ 2/22
+ ----
+execute_cmd.c
+ - fix_assignment_words: if an assignment is supplied to a builtin that
+ creates or modifies local variables while a function is executing,
+ set the W_FORCELOCAL flag for that word in addition to any of the
+ various assignment flags
+
+subst.c
+ - shell_expand_word_list: while processing a list of assignments that
+ are arguments to a builtin that creates or modifies local variables,
+ if make_internal_declare fails while attempting to create the local
+ variable (or give it attributes), skip attempting the assignment but
+ otherwise do not make this a fatal error. This results in two error
+ messages: one to create the variable or modify its attributes, and
+ one while attempting to assign the value, but the errors to not
+ cause the function to return immediately. Fixes inconsistency
+ reported by Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
+
+
+ 2/23
+ ----
+trap.c
+ - first_pending_trap: generalize into first_pending_trap and
+ next_pending_trap
+
+wait.def
+ - wait_builtin: close up the trapped-signal-arrives hole a little more
+ by looking for a signal that arrived between the last check for
+ pending traps and setting wait_intr_flag and behaving as if it
+ arrived while wait was executing. Use first_pending_trap and
+ next_pending_trap to find a pending trap that is not SIGCHLD
+
+trap.c
+ - trap_handler: longjmp to wait_intr_buf unconditionally if
+ wait_intr_flag is set; don't bother with interrupt_immediately any
+ more
+
+variables.c
+ - all_local_variables: now takes an arg saying whether to restrict
+ return value to visible variables or return all local variables,
+ even those that are unset (the new default)
+ - visible_variable_in_context: new function, restricts return values
+ to set local variables in the current context; variable_in_context
+ now returns all local variables in the current context, even the
+ unset ones
+
+variables.h
+ - all_local_variables: change extern function declaration
+
+builtins/setattr.def
+ - show_local_var_attributes: show all local variables at the current
+ variable context, including unset ones, and their attributes
+ - show_localname_attributes: show attributes for NAME as long as NAME
+ resolves to a local variable at the current variable context, even
+ if NAME is unset
+
+builtins/common.h
+ - show_local_var_attributes, show_localname_attributes: new extern
+ declarations
+
+builtins/declare.def
+ - declare_internal: allow `-p' option for `local' builtin
+ - declare_internal: if `local' is supplied without options, or with
+ the `-p' option, but no variable name arguments, display all local
+ variables at the current variable context by calling
+ show_local_var_attributes
+ - declare_internal: if `local -p' is supplied with variable name
+ arguments, call show_localname_attributes to display the attributes
+ for that name if it resolves to a local variable at the current
+ variable context. Fixes issue reported by
+ pepa65 <solusos@passchier.net>
+
+subst.c
+ - array_var_assignment: if VAR is unset, print the declare command
+ without the assignment statement, just with the attributes
+ - array_transform: special-case the 'a' attribute and return the
+ attribute string even if the array variable is unset. Feature request
+ from Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
+ - parameter_brace_transform: if asked to display the attributes and
+ value ('A') of an unset variable, make sure we pass the variable, if
+ it exists with attributes but without a value, to string_transform
+ - string_transform: if we don't have a value but the operator is 'A',
+ pass the variable through to string_var_assignment
+ - string_var_assignment: if we have an unset variable with attributes,
+ return a declare command that just sets the attributes. Feature request
+ from Arfrever Frehtes Taifersar Arahesis <arfrever.fta@gmail.com>
+
+ 2/24
+ ----
+locale.c
+ - mblen: don't try to use unless HANDLE_MULITBYTE is defined. From
+ https://savannah.gnu.org/support/?110200
+ - set_default_locale: if HAVE_SETLOCALE isn't defined, set the default
+ locale to "C"
+
+ 2/25
+ ----
+general.c
+ - interrupt_immediately: remove all references to this that are
+ already commented out
+
+ 3/2
+ ---
+variables.c
+ - push_var_context,push_posix_tempvar_internal: assignment statements
+ preceding shell functions no longer persist after the function
+ completes in posix mode. POSIX interp #654, was in P1003.1-2017
+ - push_posix_temp_var: variable assignments preceding special builtins
+ now act as if an assignment statement had been executed in posix mode
+ (the Posix `current execution environment') instead of unconditionally
+ creating a global variable
+
+trap.c
+ - clear_pending_traps: new function, just clears the pending traps flag
+ for all signals
+
+ 3/6
+ ---
+execute_cmd.c
+ - execute_in_subshell: check for interrupts and terminating signals
+ before resetting the terminating signal handlers, and clear all
+ pending traps -- they're not pending for us and we should not run a
+ trap handler for them
+ - execute_in_subshell: enable bash-5.1 change from 11/29/2018 that
+ resets the signal-in-progress flag if we're running a command in
+ a subshell, since we're not running the trap command (we are the
+ trap command)
+
+ 3/10
+ ----
+subst.c
+ - parameter_brace_expand: if we assign the empty string to a variable
+ using the [:]= expansion in a quoted expansion, make sure we note
+ we are returning a quoted null string to the caller by setting
+ W_HASQUOTEDNULL. Fixes bug reported by Martin Castillo
+ <castilma@uni-bremen.de>
+
+ 3/17
+ ----
+lib/readline/histfile.c
+ - history_truncate_file: only chown the file if we really need to. From
+ alex@lisas.de via https://savannah.gnu.org/support/?110207
+
+lib/readline/bind.c
+ - rl_unbind_function_in_map: since we are looking for functions, not
+ key sequences, descend into keymaps attached to the keymap passed
+ as an argument. From a report from lockywolf@gmail.com back on 2/27,
+ TENTATIVE CHANGE
+
+variables.h
+ - MKLOC_ARRAYOK,MKLOC_ASSOCOK: new flags values for
+ make_local_{array,assoc}_variable so we can avoid hard-coded values
+ of 1 and make it possible to eventually pass in additional flags
+
+builtins/declare.def
+ - declare_internal: make_local_array_variable: pass MKLOC_ASSOCOK
+ - declare_internal: make_local_assoc_variable: pass MKLOC_ARRAYOK
+
+variables.c
+ - make_local_{array,assoc}_variable: understand new flags, pass
+ MKLOC_INHERIT to make_local_variable if it appears in the flags
+ argument
+
+builtins/declare.def
+ - declare_internal: add a new -I option for local and declare that
+ inherits attributes and value from a variable with the same name
+ at a previous scope. Inspired by netbsd sh
+ - if -I option is supplied, pass MKLOC_INHERIT to make_local_variable
+ and its array counterparts make_local_{array,assoc}_variable
+
+subst.c
+ - shell_expand_word_list: pass -I to declare if constructing a declare
+ command with make_local_declare, meaning we have an array or assoc
+ compound assignment. (Slighty unsatisfactory, but ok for now) Fix
+ for bug report from Kevin Locke <kevin@kevinlocke.name>,
+ https://savannah.gnu.org/support/index.php?109669
+
+ 3/18
+ ----
+examples/loadables/basename.c
+ - basename_builtin: handle -- option without crashing. Report by Peng Yu
+ <pengyu.ut@gmail.com>
+
+jobs.c
+ - notify_of_job_status: if in posix-mode shell is started with -c,
+ jobs should print the status of completed jobs. From a report by
+ Robert Elz <kre@munnari.oz.au> back in 12/18
+
+ 3/19
+ ----
+variables.c
+ - assign_in_env: if we're assigning POSIXLY_CORRECT or POSIX_PEDANTIC
+ in the temporary environment, save the values of the options
+ affected by posix mode so we can restore them when we restore the
+ old value of the variable after the command executes. Suggested by
+ Martijn Dekker <martijn@inlv.org>
+
+ 3/20
+ ----
+syntax.h
+ - slashify_in_here_document: add `"' to this list, since POSIX says
+ that backslashes in here documents behave like backslashes in
+ double quotes, and backslash can quote a double quote in a double-
+ quoted string. This means that given P=A,
+
+ cat <<EOF
+ ${P+\"$P\"}
+ EOF
+
+ and
+
+ echo "${P+\"$P\"}"
+
+ should output the same thing. From a report from Dan Jacobson
+ <jidanni@jidanni.org> back in 1/2019.
+
+ 3/23
+ ----
+subst.c
+ - string_transform: add `U' (convert to uppercase), `u' (convert
+ first character to uppercase), and `L' (convert to lowercase)
+ transformations. Inspired by a discussion with Phil Smith
+ <phil@philsmith.com> back in May, 2019
+ - parameter_brace_transform: make sure `u', `U', and `L' are valid
+ transform operators
+
+doc/{bash.1,bashref.texi}
+ - parameter transformation: document new `U', `u', and `L' operators
+
+eval.c
+ - execute_prompt_command: if an array variable PROMPT_COMMANDS exists,
+ prefer it to PROMPT_COMMAND and execute all of the commands contained
+ as array elements in index order. From a proposal by Daniel
+ Colascione <dancol@google.com> back in 1/2018
+ - execute_array_command: function for array_walk to use when executing
+ commands in PROMPT_COMMANDS
+
+doc/{bash.1,bashref.texi}
+ - PROMPT_COMMANDS: new array variable
+
+ 3/24
+ ----
+builtins/ulimit.def
+ - new -R option, for RLIMIT_RTTIME (max time a real-time process can
+ run without blocking). Patch from Maciej Wolny
+ <maciekwolny123@gmail.com> back in 7/2017
+
+doc/{bash.1,bashref.texi}
+ - ulimit: document new -R option
+
+lib/readline/{display.c,rlprivate.h}
+ - _rl_clear_screen: now takes an argument saying whether to attempt to
+ clear the terminal scrollback buffer if the right termcap capability
+ exists
+
+lib/readline/{text.c,readline.h}
+ - rl_clear_display: new bindable command that clears the screen and
+ scrollback buffer
+
+lib/readline/funmap.c
+ - clear-display: new bindable command name
+
+lib/readline/emacs_keymap.c
+ - emacs mode M-C-l now bound to clear-display
+
+doc/bash.1,lib/readline/doc/{readline.3,rluser.texi}
+ - clear-display: document new function and default emacs mode binding
+
+arrayfunc.c
+ - assign_assoc_from_kvlist: allow compound assignments to associative
+ arrays that do not contain words of the form `[key]=value', assume
+ such lists are of the form (key1 value1 key2 value2). A missing or
+ empty key is an error; a missing value is treated as NULL. You
+ cannot mix the two forms. Inspired by a suggestion from Sebastian
+ Gniazdowski <sgniazdowski@gmail.com> back in 7/2019
+
+doc/{bash.1,bashref.texi}
+ - documented new associative array assignment syntax
+
+assoc.[ch]
+ - assoc_to_kvpair: new function that returns a string with quoted
+ key/value pairs from given associative array
+
+array.[ch]
+ - array_to_kvpair: new function that returns a string with quoted
+ key/value pairs from given indexed array (for completeness)
+
+subst.c
+ - parameter_brace_transform: new operator `K': produces the (possibly
+ quoted) value of a variable, except for arrays, where it expands to
+ indexed or associative array assignments in key/value pair form
+ - string_transform,parameter_list_transform: expand `K' to (possibly
+ quoted) values
+ - array_var_assignment: take a new fourth argument saying which kind
+ of assoc assignment statement to produce; calls array_to_kvpair or
+ assoc_to_kvpair as appropriate and just returns that value if
+ necessary without creating a declare command
+ - array_transform: if the operator is `K', call array_var_assignment
+ with new argument that will produce a list of key/value pairs
+
+doc/{bash.1,bashref.texi}
+ - document new 'K' parameter transformation operator
+
+ 3/25
+ ----
+doc/bash.1,lib/readline/doc/{history.3,readline.3}
+ - some text and formatting cleanups from Bjarni Ingi Gislason
+ <bjarniig@rhi.hi.is>
+
+bashhist.c
+ - SYSLOG_MAXLEN: increase to 1024, since that seems to be what most
+ syslog daemons handle
+ - bash_syslog_history: if the line is longer than SYSLOG_MAXLEN minus
+ the header length, log it in multiple message with a sequence number
+ instead of truncating. Inspired by a report from
+ <sunhuilin@unionpay.com> back in 7/2018
+
+lib/readline/text.c
+ - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p,
+ rl_keep_mark_active: new functions to manage an active region. We
+ don't do anything with an active region yet. Part of a large patch
+ for active regions from Daniel Colascione <dancol@google.com>
+ originally back in 3/2018
+ - rl_clear_screen: call rl_keep_mark_active to keep the region active
+ across the screen refresh
+ - rl_newline: make sure to deactivate the region even though we don't
+ do any redisplay with it yet
+
+lib/readline/readline.h
+ - rl_activate_mark,rl_deactivate_mark,rl_mark_is_active_p,
+ rl_keep_mark_active: new extern function declarations. They are
+ public functions for now
+
+lib/readline/readline.c
+ - readline_internal_setup: make sure the region starts out as not
+ active
+ - readline_internal_charloop: make sure to deactivate the mark after
+ a command, unless the command calls rl_keep_mark_active keep it
+ active
+
+lib/readline/kill.c
+ - rl_bracketed_paste_begin: set rl_mark before inserting the pasted
+ text, so the pasted text defines the region
+ - rl_bracketed_paste_begin: set the region as active after inserting
+ the pasted text
+
+lib/readline/util.c
+ - _rl_abort_internal: make sure we deactivate the region
+
+lib/readline/{terminal.c,rlprivate.h}
+ - _rl_cr: new function to just output the term_cr (or '\r'). Part of
+ the active region patch
+
+lib/readline/display.c
+ - _rl_cr: use where appropriate to replace MSDOS-dependent code and
+ calls to tputs
+
+lib/readline/terminal.c
+ - get and store the terminal sequences to enter and exit standout
+ (usually some background color) mode
+
+ 3/26
+ ----
+subst.[ch]
+ - copy_fifo_list: now returns void *
+ - close_new_fifos: now takes a void * as the first argument, since it's
+ usually the return value from copy_fifo_list
+ - close_new_fifos: (named pipes): cast first argument to a char *,
+ since copy_fifo_list will (someday) return a bitmap
+ - close_new_fifos: (HAVE_DEV_FD): cast first argument to a pid_t *,
+ since it takes a copy of dev_fd_list; use that in the loop to
+ determine whether or not to close file descriptors. First half of
+ fix for bug reported by Valentin Lab <valentin.lab@kalysto.org>
+ - unlink_fifo_list: (named pipes): when compacting the list, make sure
+ to avoid the copy if i == j, and, after copying fifo_list[i] to
+ fifo_list[j], null out fifo_list[i] so we don't try to access it
+ later
+
+execute_cmd.c
+ - execute_command_internal: don't call reap_procsubs after executing
+ the command. Rest of fix for bug reported by Valentin Lab
+ <valentin.lab@kalysto.org>
+ - execute_command_internal,execute_builtin_or_function: ofifo_list is
+ now a void * instead of a char *
+
+ 3/30
+ ----
+lib/readline/{terminal.c,rlprivate.h}
+ - _rl_standout_{on,off}: new functions, to enter and exit terminal
+ standout mode
+
+lib/readline/rlprivate.h
+ - _rl_refresh_line: new extern declaration
+
+lib/readline/display.c
+ - visible and invisible lines: added members to deal with tracking the
+ `current face'
+ - realloc_line: broke code to manage visible_line and invisible_line
+ allocation out of init_line_structures, added code to manage arrays
+ of visible and invisible line face info per character
+ - invis_{addc,adds,nul}: new functions to add characters to the
+ invisible line and keep the invisible face data updated with whatever
+ the current face is
+ - set_active_region: keep track of the display region that should be
+ in standout mode
+ - rl_redisplay: use invis_addc/adds/nul to update the invisible line
+ buffer instead of modifying invisible_line directly
+ - _rl_refresh_line: moved body of function here from text.c
+
+lib/readline/text.c
+ - rl_refresh_line: now just calls _rl_refresh_line and marks the display
+ as fixed
+
+ 3/31
+ ----
+variables.c
+ - bind_variable_internal: dynamic variables with assignment functions
+ now honor the readonly attribute by giving an error. Fixes issue
+ reported by Rob Landley <rob@landley.net>
+ - assign_seconds: allow seconds to be assigned using an arithmetic
+ expression
+ - assign_random: allow RANDOM to be assigned using an arithmetic
+ expression
+
+doc/{bash.1,bashref.texi}
+ - HISTCMD: note that assignments to HISTCMD have no effect
+
+ 4/2
+ ---
+execute_cmd.c
+ - execute_in_subshell: make sure we note that we're not reading our
+ command input from a buffered stream any more, so we don't
+ sync the buffered stream backwards in subsequent commands this
+ subshell runs. Fixes bug reported by OÄuz <oguzismailuysal@gmail.com>
+
+ 4/3
+ ---
+builtins/read.def
+ - read_builtin: if a read in posix mode is interrupted by a signal,
+ make sure to preserve the value of errno around calls to
+ check_signals and run_pending_traps so any error message isn't quite
+ as confusing. Issue reported by Stan Marsh <gazelle@xmission.com>
+
+lib/sh/zread.c
+ - zread: preserve value of errno (always EINTR) around calls to
+ check_signals or check_signals_and_traps
+
+trap.c
+ - run_debug_trap: allow suppress_debug_trap_verbose being set to
+ turn off `set -v' temporarily while executing the DEBUG trap (if
+ it's set)
+
+builtins/fc.def
+ - set suppress_debug_trap_verbose so set -v won't be in effect while
+ the DEBUG trap runs. Most recently reported by Ami Fischman
+ <ami@fischman.org>; originally raised by Boruch Baum
+ <boruch_baum@gmx.com> back in 10/2017
+
+ 4/6
+ ---
+lib/readline/display.c
+ - puts_face,putc_face: new functions to write strings or characters to
+ the display while handling standout mode
+ - update_line,_rl_move_cursor_relative: take additional argument(s)
+ describing the visible and invisible faces corresponding to the
+ visible and invisible lines, respectively
+
+lib/readline/readline.c
+ - _rl_enable_bracketed_paste: for the time being, initialize to 1 (on
+ by default)
+
+trap.c
+ - run_interrupt_trap: set pending_sigs[SIGINT] and catch_flag to 0
+ since run_pending_trap usually does these things
+
+sig.c
+ - throw_to_top_level: only call the SIGINT trap if there is a SIGINT
+ trap pending (shouldn't matter, just a check)
+
+bashline.c
+ - bash_event_hook: try to identify the signal of interest we've
+ received
+ - bash_event_hook: if in posix mode running the read builtin, and we
+ get a (trappped) SIGINT, throw to top level so we can interrupt
+ the read. From a report by Robert Elz <kre@munnari.oz.au>
+
+ 4/7
+ ---
+lib/readline/display.c
+ - update_line: make sure to update and compare face data at the same
+ time as comparing old and new line data: the lines are only the same
+ if the face information and character information are identical
+ (ofd, ols, etc.)
+ - update_line: make sure to copy face data along with line data
+ - update_line: use puts_face in place of _rl_output_some_chars to
+ output face data along with line data
+ - _rl_move_cursor_relative: when we write characters, make sure to take
+ the face data into account using puts_face
+ [END OF INTEGRATION OF ACTIVE MARK AND FACE PATCHES from
+ Daniel Colascione <dancol@google.com>]
+
+{jobs,nojobs}.c
+ - make_child: to avoid installing a handler for SIGTERM in interactive
+ shells, and avoid race conditions with child processes resetting the
+ SIGTERM signal handler to the default, block SIGTERM and then
+ reset the SIGTERM handler to SIG_DFL before fork, then reset the
+ handler to SIG_IGN and unblock it in the parent after fork() returns.
+ Fix for readline and SIGTERM handling reported by Chris Down
+ <chris@chrisdown.name> (original change was back in 2/2013) that
+ allows a bash waiting in readline() for input to be killed with a
+ SIGTERM sent by another process
+ - take out calls to RESET_SIGTERM, no longer needed
+
+execute_cmd.c
+ - execute_in_subshell,execute_simple_command,execute_disk_command:
+ remove calls to CHECK_SIGTERM, since we don't install a handler
+ any more
+
+lib/readline/readline.c
+ - _rl_enable_bracketed_paste: enabled by default for the time being
+
+ 4/9
+ ---
+jobs.h
+ - JWAIT_WAITING: new flag for wait functions; means only wait for jobs
+ with the J_WAITING flag set
+ - J_WAITING: new job flag, part of arg list to `wait -n'
+ - IS_WAITING(i): job i has the J_WAITING flag set
+
+jobs.c
+ - wait_for_any_job: if the flags includes JWAIT_WAITING, we only return
+ jobs with the J_WAITING flag already set; otherwise we skip them.
+ For `wait -n args' support
+
+builtins/wait.def
+ - set_waitlist: take a list of jobspecs and set the J_WAITING flag in
+ each valid job from the list
+ - unset_waitlist: turn off the J_WAITING flag for all jobs where it's
+ set
+ - wait_builtin: if -n is supplied with a list of arguments, set the
+ J_WAITING flag in each job in the list, call wait_for_any_job with
+ the JWAIT_WAITING flag, and clean up by calling unset_waitlist().
+ From a suggestion from Robert Elz <kre@munnari.oz.au> back in 3/2019
+ (originally in 10/2017)
+
+ 4/11
+ ----
+lib/readline/display.c
+ - update_line: in step 5b of the line wrapping prompt code, make sure
+ OFDF and NFDF are set before performing a dumb update
+
+ 4/12
+ ----
+sig.c
+ - termsig_handler: make sure to restore TOP_LEVEL_SIGMASK before
+ resending a terminating signal to ourselves, in the event that this
+ is called in a signal handler context with the terminating signal
+ blocked. Inspired by a report from <gentoo_eshoes@tutanota.com>
+
+ 4/13
+ ----
+
+lib/readline/text.c
+ - rl_newline: if the region is active, call rl_redisplay to clear
+ standout mode before returning
+
+lib/readline/display.c
+ - norm_face: new function to mark a portion of the invisible face
+ buffer as normal text (no standout)
+ - rl_redisplay: if the line consumes more than a screen's worth of
+ lines, mark the lines that are off the top of the display as having
+ a `normal' face
+
+ 4/14
+ ----
+variables.c
+ - LINENO: no longer has the integer attribute, since it does not take
+ arithmetic expressions on assignment (use $((expr)) instead)
+
+lib/readline/mbutil.c
+ - _rl_find_prev_utf8char: new function, uses the structure of UTF-8
+ characters to find the start of the previous one no matter where we
+ start: at the beginning of the next character, at the end of a
+ multibyte character, or in the middle of a multibyte character.
+ EXPERIMENTAL
+ - _rl_find_prev_mbchar_internal: for now, call _rl_find_prev_utf8char
+ if we are in a UTF-8 locale. EXPERIMENTAL
+
+ 4/15
+ ----
+lib/readline/mbutil.c
+ - _rl_utf8_mblen: changes to handle invalid multibyte sequences better,
+ even when N means that the sequence would be too short anyway
+
+examples/loadables/csv.c
+ - csv: new loadable builtin to parse a line of csv data and store it
+ into an array supplied as an argument
+
+ 4/16
+ ----
+examples/loadables/cut.c
+ - cut: new loadable builtin
+ - lcut: new builtin that does what cut does but on a string supplied
+ as an argument (only one string for now)
+
+ 4/17
+ ----
+jobs.h
+ - FORK_SYNC,FORK_ASYNC,FORK_NOJOB: new flag values for the second
+ argument to make_child
+
+jobs.c
+ - make_child: now takes a set of flags as the second argument
+
+execute_cmd.c
+ - make_child: change callers to pass FORK_ASYNC instead of a non-zero
+ value as the second argument
+
+subst.c
+ - make_child: change callers to pass FORK_ASYNC instead of a non-zero
+ value as the second argument
+
+doc/{bash.1,bashref.texi}
+ - document that the words in a compound array assignment undergo all
+ the shell word expansions, including filename generation and word
+ splitting. From a report from E. Choroba <choroba@matfyz.cz>
+
+ 4/18
+ ----
+subst.c
+ - command_substitute: use JOB_CONTROL instead of INTERACTIVE in the
+ test to determine whether or not to give the terminal back to
+ pipeline_pgrp
+
+jobs.c
+ - make_child: if FORK_NOTERM is set in the flags argument, don't call
+ give_terminal_to
+
+{jobs,nojobs}.c,jobs.h
+ - wait_for: now takes a second argument, a flags word
+
+{execute_cmd,subst}.c
+ - wait_for: change all callers to add second argument to wait_for
+
+jobs.c
+ - wait_for: if JWAIT_NOTERM is set in the flags argument, don't call
+ give_terminal_to
+
+ 4/19
+ ----
+subst.c
+ - command_substitute: block SIGINT around call to read_comsub, so we
+ let any interrupts affect the command substitution. Fixes issue
+ reported by DALECKI Léo <leo.dalecki@ntymail.com>
+
+hashcmd.h
+ - FILENAME_HASH_BUCKETS: increase to 256
+
+assoc.h
+ - ASSOC_HASH_BUCKETS: new define, set to 1024
+
+variables.c
+ - make_new_assoc_variable,make_local_assoc_variable: call assoc_create
+ with ASSOC_HASH_BUCKETS as argument. This changes the hash function
+ and how the array keys are ordered (which is not guaranteed)
+
+builtins/read.def
+ - read_builtin: in posix mode, or if the read call returns -1/EINTR,
+ don't call run_pending_traps until the read command returns. This
+ allows a trap action to see the same exit status that the read
+ builtin would return when it exits on a signal (e.g., SIGINT == 130).
+ From a suggestion by <gentoo_eshoes@tutanota.com>
+
+ 4/20
+ ----
+hashlib.c
+ - hash_rehash: function to rehash a table, after increasing or decreasing
+ the number of buckets. From patches from Thomas Kremer
+ (https://savannah.gnu.org/patch/?9850) and Koichi Murase
+ <myoga.murase@gmail.com>
+ - hash_grow,hash_shrink: grow or shrink a hash table by a factor of
+ HASH_REHASH_MULTIPLIER (4)
+ - hash_insert,hash_search: call hash_grow if necessary
+
+arrayfunc.c
+ - convert_var_to_{array,assoc}: if the original variable had no value
+ (it was unset), the array variable should be unset as well. Reported
+ by andrej@podzimek.org
+
+ 4/21
+ ----
+bashline.c
+ - set_saved_history: change logic used to decide where in the history
+ operate_and_get_next should start by using a logical offset into the
+ history list that is an offset from history_base. This avoids having
+ to take whether or not the history is stifled and full into account.
+ Report and fix from Greg Price <gnprice@gmail.com>
+ - operate_and_get_next: just calculate the logical offset of where we
+ should be in the history instead of an absolute offset
+
+lib/readline/input.c
+ - _rl_nchars_available: new function, returns the number of characters
+ available to be read if FIONREAD is available
+
+ 4/22
+ ----
+lib/readline/{readline.c,rlprivate.h}
+ - _rl_pending_command: new struct to hold information about a pending
+ command for readline to execute when the current command completes.
+ A command can set this up so that it gets executed like a
+ continuation before redisplay
+
+lib/readline/readline.c
+ - readline_internal_charloop: after _rl_dispatch returns, check
+ _rl_command_to_execute, and, if it's non-zero, redisplay and then
+ execute it as a command
+ - added a small set of library-private functions for managing the
+ executing key sequence (not used yet)
+
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: if we have found an opcode or have added a
+ character to the search string and searched for it, reset the keymap
+ and okeymap members of the search context in preparation for reading
+ another key sequence/opcode
+ - _rl_isearch_dispatch: if we read a key sequence bound to an editing
+ command that is not an `opcode', set up _rl_command_to_execute to
+ execute it after the searching returns and arrange to break out of
+ the search
+ - _rl_isearch_dispatch: if we paste in text from bracketed paste, set
+ the mark as active so we can highlight it when we display the search
+ string
+ - _rl_isearch_dispatch: if we've found the search string, activate the
+ mark and set rl_point and rl_mark so the search string is highlighted
+ when we display the search results
+ - _rl_isearch_dispatch: do translation for keys that map to
+ rl_do_lowercase_version like we do when dispatching while reading a
+ key sequence
+
+ 4/23
+ ----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: if bracketed paste mode is enabled and there are
+ enough characters waiting in the terminal's input queue, try to read
+ the bracketed paste prefix and jump straight to the opcode execution
+ if we read it. Otherwise, just go on with the ESC. Inspired by report
+ from <gentoo_eshoes@tutanota.com>
+
+parse.y
+ - parse_comsub: posix-mode shells don't allow a closing right paren to
+ delimit a pending here-document -- it requires the newline
+
+doc/bashref.texi
+ - POSIX mode: updated posix mode description with the new here-document
+ delimiter requirement
+
+lib/readline/search.c
+ - _rl_nsearch_dispatch: if bracketed paste mode is enabled, and we read
+ an ESC, try to see if we have a bracketed paste op and insert the
+ pasted next. If we don't, go on with the ESC
+ - _rl_nsearch_dosearch: experimental code to highlight the search string
+ when displaying the line found in the history. Only done when we are
+ not searching for a pattern, since we don't have information on the
+ end of the matching portion of the line. Experimental because it
+ changes where we put point and mark if searching is successful
+
+expr.c
+ - expr_streval: if find_variable for the case where the string is not
+ an array reference doesn't find anything, see if we can find
+ something by using find_variable_last_nameref and use the value
+ from there in the call to expr_streval, kind of using the expression
+ recursion to complement the nameref recursion. Report from
+ Daniel Molina <lluvia@autistici.org>
+
+ 4/24
+ ----
+jobs.c
+ - {start,stop}_pipeline: don't reset pipeline_pgrp to 0 if it's already
+ the same as shell_pgrp, since we don't want to reset it in the middle
+ of a shell started to run a command or process substitution (after
+ forking a child to run one command, but before forking another, for
+ instance). Reported by Rob Landley <rob@landley.net>
+
+ 4/27
+ ----
+parse.y
+ - function_def: break the productions starting with `function' without
+ `()' into two productions to avoid a shift-reduce conflict. Report
+ and patch from Dale R. Worley <worley@alum.mit.edu>
+
+variables.h
+ - localvar_inherit: add extern declaration here
+
+subst.c
+ - shell_expand_word_list: take out change from 3/17 to pass -I to
+ make_internal_declare; it generates errors the user will find
+ confusing if there is a variable with the same name but a different
+ type at a previous scope
+ - shell_expand_word_list: check for and note whether or not -I is
+ supplied to the declaration command, since it changes the default
+ behavior of a compound assignment without -a or -A
+ - shell_expand_word_list: if we have a compound assignment that is an
+ argument to a declaration command, but there are no options supplied
+ to the command that determine the type of the array, make sure we
+ call make_internal_declare with either -a (no localvar_inherit or -I)
+ or at least -- (if we are inheriting), because we don't want the
+ declare to get skipped before we perform the word assignment. Fixes
+ bug reported by Ross Goldberg <ross.goldberg@gmail.com>
+
+ 4/28
+ ----
+subst.c
+ - expand_declaration_argument: new function, broke code that handles
+ compound assignments that are arguments to declaration commands out
+ of shell_expand_word_list into this function. No functional change
+ yet
+
+ 4/29
+ ----
+subst.c
+ - expand_compound_assignment_word: helper function for
+ expand_declaration_argument: takes NAME[+]=( VALUE ), converts VALUE
+ to a list of words, then single-quotes each word and reconstructs
+ the original word. This assumes the result will go to
+ do_word_assignment, which will remove the single quotes
+ - expand_oneword: helper function for expand_compound_assignment_word,
+ takes VALUE and performs the splitting into words, and then the
+ expansion and single-quoting of each individual word. Indexed and
+ associative arrays take different code paths, because they undergo
+ different expansions and associative arrays need special handling to
+ avoid having to scan for the end of the subscript multiple times
+ - expand_declaration_argument: call expand_compound_assignment_word to
+ get the expansion-before-calling-builtins word expansion sequence
+ correct. Better fix for for bug report from Kevin Locke
+ <kevin@kevinlocke.name>,
+ https://savannah.gnu.org/support/index.php?109669
+
+arrayfunc.c
+ - quote_array_compound_word: take [IND]=VALUE and convert it to
+ ['IND']='VALUE'. Called by quote_compound_array_list for each word
+ in the list
+ - expand_and_quote_assoc_qword: take [KEY]=VALUE and convert it to
+ ['expanded-key']='expanded-value' (or VALUE to 'expanded-value').
+ Called by subst.c:expand_oneword() for each word in the list
+ - quote_compound_array_list: take a list of words and convert each
+ [IND]=VALUE to ['IND']='VALUE' (or just 'VALUE' if there is no
+ [IND]=). Used for indexed arrays
+
+arrayfunc.h
+ - expand_and_quote_assoc_word,quote_compound_array_list: new extern
+ declarations
+
+ 4/30
+ ----
+doc/{bashref.texi,bash.1}
+ - rework description of reserved words a little; add a reserved words
+ node to bashref.texi. Based on a report from Dale R. Worley
+ <worley@alum.mit.edu>
+
+builtins/history.def
+ - history_builtin: if the shell is restricted, don't allow pathnames
+ with slashes to be read or written. From a report from
+ Diffie <nano@mm.st>
+
+shell.c
+ - maybe_make_restricted: add HISTFILE to the list of readonly variables
+
+doc/{bashref.texi,bash.1}
+ - document new restricted shell restrictions
+
+ 5/1
+ ---
+jobs.c
+ - wait_for: don't try to give the terminal to shell_pgrp if JWAIT_NOTERM
+ is set in the flags argument
+
+subst.c
+ - command_substitute: call make_child with FORK_NOTERM flag so it
+ doesn't try to set the terminal's process group
+ - command_substitute: call wait_for with JWAIT_NOTERM so it doesn't
+ try to set the terminal's process group
+ - command_substitute: now that wait_for doesn't try to reset the
+ terminal's process group, remove the code that tries to clean up
+ after that
+
+ 5/4
+ ---
+doc/bash.1
+ - make sure to mention /etc/inputrc as the ultimate default readline
+ init file, like other documentation does. Update from
+ Greg Price <gnprice@gmail.com>
+
+lib/readline/readline.c
+ - if the private startup hook function variable _rl_internal_startup_hook
+ is set, execute that after any user-specified startup hook
+
+lib/readline/rlprivate.h
+ - _rl_internal_startup_hook: new extern declaration
+
+bashline.c,lib/readline/{misc.c,readline.h}
+ - operate_and_get_next: moved to rl_operate_and_get_next so it's
+ available to all readline programs, uses _rl_internal_startup_hook.
+ Based on patch from Greg Price <gnprice@gmail.com>
+
+lib/readline/funmap.c
+ - "operate-and-get-next": now a bindable readline command
+
+lib/readline/emacs_keymap.c
+ - rl_operate_and_get_next: bound to ^O in emacs mode by default
+
+doc/bash.1,lib/readline/{readline.3,rluser.texi}
+ - operate-and-get-next: move to readline section of the manuals, out of
+ bash-specific functions section
+
+ 5/5
+ ---
+hashlib.c
+ - hash_string: use a series of shifts and adds to avoid a multiply by
+ FNV_PRIME. From Landon Curt Noll's FNV web page
+
+builtins/fc.def
+ - fc_gethist,fc_gethnum: now take an additional argument indicating the
+ operating mode: if the arg is 1, fc is listing commands; if it is 0,
+ fc is executing commands. Affects how -0 is handled (fc_gethnum
+ returns -1). Changed callers to handle the return value appropriately.
+ Report from Jason Franklin <jason.franklin@quoininc.com> about
+ seg fault and core dump
+ - fc_builtin: if fc_gethnum returns < 0 when setting histbeg or histend,
+ report a range error
+
+doc/bash.1,lib/readline/doc/hsuser.texi
+ - fc: document how 0 and -0 are treated for listing and executing
+
+shell.c
+ - run_one_command: call parse_and_execute with SEVAL_RESETLINE so the
+ line number gets set to 1. Reported by Rob Landley <rob@landley.net>
+
+ 5/8
+ ---
+support/config.{guess,sub}
+ - update to latest versions
+
+configure.ac
+ - add support for `genode' from Emery Hemingway <ehmry@posteo.net>
+
+ 5/14
+ ----
+test.c
+ - term: fix case where an argument that looks like a unary operator,
+ but doesn't have enough tokens left to have an argument to that
+ operator, was not being treated as a one-argument test. Affects
+ only uses of test with four and greater arguments, which posix says
+ are unspecified. This is a bug, or at least an incompatibility, at
+ least 30 years old.
+ - test_command: if there are unconsumed arguments, call test_syntax_error
+ with a `syntax error' argument if the first remaining argument starts
+ with a `-'. Better than a generic `too many arguments' error
+
+ 5/19
+ ----
+configure.ac,config.h.in
+ - getrandom: add test, define HAVE_GETRANDOM
+ - getentropy: add test, define HAVE_GETENTROPY
+
+variables.c
+ - get_urand32: use getrandom; provide imperfect emulation that uses
+ getentropy if available, and falls back to reading /dev/urandom if
+ that's not available. The idea is to use /dev/urandom as little as
+ possible
+
+ 5/20
+ ----
+configure.ac
+ - updated version to 5.1-alpha
+
+lib/readline/readline.h
+ - updated defines to readline version 8.1
+
+variables.c
+ - brand: if shell_compatibility_level is 50 or below, don't xor the
+ top and bottom halves of the 32-bit random number together, since
+ previous versions did not
+
+ 5/21
+ ----
+COMPAT
+ - overhauled and updated the descriptions of the various shopt compatNN
+ options
+
+doc/bashref.texi
+ - Shell Compatibility Mode: new section, describes compatibility levels,
+ BASH_COMPAT, and the various compatNN shopt options
+
+ 5/23
+ ----
+doc/bash.1
+ - added Shell Compatibility mode section
+
+doc/{bash.1,bashref.texi}
+ - changed shopt section to list the compatibility options and refer
+ to Shell Compatibility Mode section
+ - BASH_COMPAT: overhauled the text, refers to Shell Compatibility Mode
+ section
+
+ 5/27
+ ----
+variables.c,/lib/sh/random.c
+ - moved functions that manage 16-bit and 32-bit random values to
+ lib/sh/random.c
+
+alias.c
+ - add_alias: don't bother checking null alias values for ending in
+ space or tab
+
+braces.c,include/typemax.h
+ - move sh_imaxabs and overflow and underflow detection to typemax.h
+ so the expression evaluation code can use it in the future
+
+ 5/28
+ ----
+lib/readline/kill.c
+ - _rl_bracketed_read_mbstring: make sure to fill in mb[0] even if
+ the locale says MB_CUR_MAX == 1 in case a caller uses it. Partial
+ fix for bug reported by Phi Debian <phi.debian@gmail.com>
+
+lib/readline/vi_mode.c
+ - rl_vi_change_char: make sure _rl_vi_last_replacement gets filled in
+ in the case where MB_CUR_MAX == 1. Rest of fix for bug reported by
+ Phi Debian <phi.debian@gmail.com>
+ - _rl_vi_callback_change_char: same fix for _rl_vi_last_replacement
+
+ 5/29
+ ----
+lib/malloc/malloc.c
+ - __P -> PARAMS
+ - union mhead: now 16 bytes to force 16-byte alignment; extra 8 bytes
+ at the end of struct minfo to use for guard bytes. Enabled if
+ pointers are 64 bits (SIZEOF_CHAR_P == 8)
+ - if we have 64-bit pointers, prepopulate the 64-byte bin first instead
+ of the 32-byte bin (pointers and WORD_DESCs still fit into 32 bytes,
+ but WORD_LISTs are now 36 bytes with malloc overhead). We can still
+ split 64-byte blocks to satisfy 32-byte requests
+ - internal_malloc: fill in the new 8 mh_magic8 bytes with MAGIC1 guard
+ bytes
+ - internal_malloc: print a warning message if the returned pointer is
+ not aligned according to MALIGN_MASK
+ - internal_free: detect underflow by checking that mh_magic8 is full
+ of MAGIC1 bytes
+ - internal_realloc: detect underflow by checking that mh_magic8 is full
+ of MAGIC1 bytes
+
+lib/malloc/stats.c
+ - _print_malloc_stats: slight adjustment for better column alignment
+
+ 6/1
+ ---
+execute_cmd.c
+ - execute_command_internal: treat a redirection failure with errexit
+ set as a command failure that exits the shell. Bug report from
+ Hyunho Cho <mug896@naver.com>
+
+ 6/3
+ ---
+redir.c
+ - redirection_error: takes a new argument, FN, which if non-NULL is
+ the filename to be used in the error message.
+
+redir.[ch],builtins/evalstring.c
+ - redirection_error: changed extern declaration and callers
+
+redir.c
+ - do_redirection_internal: takes a new third parameter, FNP, a char **
+ to use (*FNP, if non-NULL) to store and return the expanded filename
+ for those redirections that take one
+ - do_redirections: pass a char ** (&fn) to do_redirection_internal to
+ get a pointer to the expanded filename; pass it to redirection_error
+ if appropriate. Free FN in any case, since do_redirection_internal
+ won't. Fix for double expansion of filename in certain redirections
+ reported by OÄuz <oguzismailuysal@gmail.com>
+
+ 6/4
+ ---
+parse.y
+ - parse_comsub: while we're reading a here-document, don't perform any
+ history expansion (set history_expansion_inhibited). Fixes issue
+ reported by "ladyrick" <ladyrick@qq.com>
+
+general.h,parse.y
+ - __P -> PARAMS
+
+shell.c
+ - shellstart: struct timeval used to initialize shell starting time;
+ shell_start_time now initialized from shellstart.tv_sec
+
+variables.c
+ - assign_seconds: reset shellstart to set shell starting time
+
+pcomplete.c
+ - include posixtime.h instead of <sys/time.h>
+
+lib/sh/{ufuncs,uconvert}.c
+ - include posixtime.h instead of the inline conditional includes
+
+aclocal.m4
+ - BASH_STRUCT_TIMEVAL: convert to use AC_COMPILE_IFELSE instead of the
+ deprecated AC_HEADER_EGREP
+
+posixtime.h
+ - struct timeval: if HAVE_TIMEVAL is not defined, provide a replacement
+ definition
+
+lib/sh/gettimeofday.c
+ - gettimeofday: replacement function, so we don't have to use
+ HAVE_GETTIMEOFDAY in the rest of the code
+
+ 6/5
+ ---
+{lots of files}.[ch]
+builtins/{lots of files}.{c,h,def}
+lib/glob/{lots of files}.[ch]
+lib/malloc/{lots of files}.[ch]
+lib/sh/{lots of files}.c
+include/{lots of files}.h
+examples/loadables/{lots of files}.c
+ - __P -> PARAMS
+
+doc/{bash.1,bashref.texi}
+ - SECONDS: clarify that the number of seconds is always determined by
+ querying the system clock
+
+ 6/8
+ ---
+configure.ac
+ - if CFLAGS is not supplied in the environment or on the command line,
+ add the gcc options that suppress warnings about parens and print
+ formats in a slightly different way that will avoid some collisions
+
+lib/readline/readline.c
+ - _rl_dispatch_subseq: don't set rl_last_func to rl_vi_arg_digit, just
+ the same as if it were rl_digit_argument. This allows functions like
+ rl_yank_last_arg, which behave differently when called multiple times
+ in a row, to work closer to what is expected. This allows what
+ Leo Alekseyev <dnquark@gmail.com> reported to work, with caveats
+
+lib/readline/vi_mode.c
+ - rl_vi_yank_arg: make sure to pass `key' to rl_yank_nth_arg, in case
+ it needs to use it later
+ - rl_vi_redo: suppress attempts to redo `.' when the current keymap is
+ vi_movement_keymap, since that will recursively call vi_redo
+
+ 6/11
+ ----
+redir.c
+ - limit HEREDOC_PIPESIZE to 4096 on FreeBSD; that is where it can
+ handle atomic writes without hanging. Tested on FreeBSD 13
+
+[bash-5.1-alpha frozen]
+
+ 6/15
+ ----
+subst.c
+ - do_assignment_internal: call stupidly_hack_special_variables on the
+ name returned from the variable assignment, in case there was a
+ nameref expansion, and on the original name only if the assignment
+ returned NULL. Fixes bug reported by James D. Lin <jamesdlin@gmail.com>
+
+ 6/16
+ ----
+builtins/hash.def
+ - hash_builtin: don't print anything if the hash table is empty when
+ listing portably (-l) unless the shell compatibility level is <= 50
+ Issue originally raised by <beluro@web.de>
+
+ 6/17
+ ----
+pathexp.c
+ - glob_name_is_acceptable: extend GLOBIGNORE to ignore `.' and `..'
+ as a terminal pathname component instead of just ignoring filenames
+ that are `.' or `..'. From a suggestion by Ilkka Virta
+ <itvirta@iki.fi>
+
+ 6/18
+ ----
+po/Makefile.in.in
+ - MKINSTALLDIRS: deprecated, no longer in AM_INTL_SUBDIR, so we have
+ to create the variable manually
+
+lib/readline/doc/rltech.texi
+ - add descriptions of the active mark functions that are available to
+ applications. I guess they will remain public
+
+subst.c
+ - valid_parameter_transform: new function, reject transformations
+ longer than a single character or invalid transformation operators
+ - parameter_brace_transform: call valid_parameter_transform
+
+ 6/22
+ ----
+lib/sh/zread.c
+ - lbuf: bump size up to ZBUFSIZ (default 4096). From a report by
+ Jason A. Donenfeld <Jason@zx2c4.com>
+
+lib/sh/zcatfd.c
+ - zcatfd: lbuf: bump size up to ZBUFSIZ (default 4096)
+
+lib/sh/zmapfd.c
+ - zmapfd: lbuf: bump size up to ZBUFSIZ (default 4096)
+
+ 6/29
+ ----
+aclocal.m4
+ - BASH_FUNC_SBRK: changes for cross-compiling on FreeBSD variants,
+ from Jessica Clarke <jrtc27@jrtc27.com>
+
+xmalloc.c
+ - HAVE_SBRK: use #if instead of #ifdef so we only use it if we think
+ it works
+
+examples/loadables/finfo.c
+ - st_dev,st_nlink: cast to unsigned long, report from Jessica Clarke
+ <jrtc27@jrtc27.com>
+
+unwind_prot.c
+ - unwind_protect_mem_internal: make sure we allocate at least as many
+ bytes for an entire UNWIND_ELT. Fix from Jessica Clarke
+ <jrtc27@jrtc27.com>
+
+ 7/1
+ ---
+eval.c
+ - alrm_catcher: use write(2) instead of fprintf to print the
+ auto-logout message to the terminal
+
+jobs.c
+ - UNQUEUE_SIGCHLD: set queue_sigchld to 1 around call to waitchld(),
+ since it is not being called from a signal handler and so SIGCHLD is
+ not blocked. Fixes report by Godmar Back <godmar@gmail.com>
+
+ 7/2
+ ---
+doc/{bash.1,bashref.texi}
+ - read: clarify that without any name arguments, the line assigned to
+ REPLY is not modified. From a question by M. Nejat AYDIN
+ <mnaydin@yahoo.com> with input from Eli Schwartz
+ <eschwartz@archlinux.org>
+
+ 7/5
+ ---
+lib/readline/vi_mode.c
+ - _rl_vi_done_inserting: make sure to close out all undo groups when
+ leaving insert mode, so we don't have anything dangling.
+ Report and fix from David Fries <David@Fries.net>
+
+ 7/6
+ ---
+lib/readline/vi_mode.c
+ - _rl_vi_domove_motion_cleanup: the `c' and `C' commands should enter
+ insert mode even if the motion command doesn't delete any text.
+ From a report by David Fries <David@Fries.net>
+ - _rl_vi_done_inserting: add a missing rl_end_undo_group when
+ _rl_vi_doing_insert is set: there should be one begun by
+ rl_vi_start_inserting and one begun by the command (change or replace).
+ From a report by David Fries <David@Fries.net>
+ - rl_vi_replace: set _rl_vi_last_key_before_insert to 'R' explicitly,
+ since other code checks that and we want to allow users to rebind
+ this function
+
+ 7/7
+ ---
+lib/readline/vi_mode.c
+ - rl_vi_{delete,change,yank}_to: if we have a non-null _rl_vimvcxt,
+ just reinitialize it so we don't have to allocate a new one. This is
+ a change primarily for callback mode, and fixes a memory leak
+
+builtins/evalstring.c
+ - optimize_shell_function: try to optimize away the fork in the last
+ command in a shell function body, under certain conditions
+
+execute_cmd.c
+ - execute_function: attempt to optimize away forks in a shell function
+ that is already marked NO_FORK and being executed in a command
+ substitution
+
+ 7/8
+ ---
+{jobs,nojobs,trap,unwind_prot}.c,lib/malloc/{malloc,table}.c
+ - interrupt_immediately: remove, no longer used
+
+jobs.c
+ - waitchld: don't perform asynchronous notification if we are currently
+ executing a builtin (executing_builtin != 0). Inspired by a report
+ from Godmar Back <godmar@gmail.com>
+
+ 7/9
+ ---
+lib/readline/signals.c
+ - _rl_handle_signal: block SIGTTOU while handling a SIGTTOU, since we
+ no longer run this in a signal handling context where SIGTTOIU would
+ be blocked
+
+ 7/14
+ ----
+execute_cmd.c
+ - execute_simple_command: use new variable `cmdflags' instead of using
+ simple_command->flags directly; initialize from simple_command->flags
+ - check_command_builtin: take a simple command list of words starting
+ with `command' and including a command_word argument, and peel off
+ the `command' and any instances of `-p' and `--' and return the
+ updated list
+ - execute_simple_command: if the first word of the simple command is
+ `command', call check_command_builtin to peel off any `command' and
+ `-p' and `--' and go on to execute the rest of the words as a simple
+ command. If we're in posix mode, we've got the special builtins
+ handled before this runs. Fixes complaint about `command' in the
+ background running an extra bash process from Dmitry Alexandrov
+ <dag@gnui.org>
+
+ 7/17
+ ----
+doc/bash.1
+lib/readline/doc/{rltech,hstech,rluser}.texi
+lib/readline/doc/{readline,history}.3
+ - a few small tweaks to make the language gender-neutral
+
+ 7/18
+ ----
+subst.c
+ - expand_word_internal: case `:' make sure the shell is either not in
+ posix mode or W_TILDEEXP is set before turning on W_ITILDE. The old
+ code would turn it on unconditionally if the W_ASSIGNMENT flag was
+ set. Fixes bug reported by OÄuz <oguzismailuysal@gmail.com>
+
+ 7/20
+ ----
+builtins/complete.def
+ - replace macros used to print compspec actions, options, and other
+ info with a small set of functions that traverse the structs used
+ to hold that information and print everything instead of eumerating
+ each option and action separately. From a patch submitted by
+ Martin Kealey <martin@kurahaupo.gen.nz>
+
+ 7/27
+ ----
+variables.c
+ - push_posix_tempvar_internal: restore $SHELLOPTS after restoring the
+ values of shell options saved by `local -' by calling set_shellopts().
+ Report from Grisha Levit <grishalevit@gmail.com>
+
+flags.c
+ - reset_shell_flags: set histexp_flag to 0 and let bash_history_reinit
+ take care of setting history_expansion appropriately. Report and fix
+ from Grisha Levit <grishalevit@gmail.com>
+
+ 7/28
+ ----
+general.c
+ - assignment: if (FLAGS & 1), we are parsing the contents of a compound
+ assignment, and a word must begin with a `[' and have a valid
+ subscript terminated by `]' before the `=' to be considered an
+ assignment statemen and subsequently expanded like one. Report from
+ Alexey Izbyshev <izbyshev@ispras.ru>
+
+ 7/30
+ ----
+lib/glob/sm_loop.c
+ - BRACKMATCH: if the bracket expression is matching simple characters
+ and not a range, compare the character from the string and the
+ pattern directly, as required by Posix interp 948
+
+lib/glob/smatch.c
+ - charcmp_wc: split off code that calls wcscoll from rangecmp_wc,
+ just return the results of wcscoll
+ - rangecmp_wc: call charcmp_wc and impose a total ordering
+ by performing a byte comparison (or wint_t comparison) of C1 and C2
+ as required by Posix interp 948 (charcmp_wc takes care of the
+ behavior of FORCECOLL)
+ - collequiv_wc: call charcmp_wc instead of rangecmp_wc
+ - charcmp: character comparison code from rangecmp
+ - rangecmp: call charcmp and impose total ordering as required by
+ Posix interp 948
+ - collequiv: call charcmp instead of rangecmp
+ - _fnmatch_fallback: ASCII version of fallback for equivalence classes
+ when there are no multibyte characters in the pattern; just calls
+ fnmatch with a reconstructed equivalence class pattern
+ - collequiv: call _fnmatch_fallback if charcmp returns non-zero and
+ the configure check indicates fnmatch has character class support.
+ Fixes issue reported by Harald van Dijk <harald@gigawatt.nl>
+
+ 8/2
+ ---
+lib/readline/signals.c
+ - _rl_handle_signal: since we're not called in a signal handler context
+ any more, we don't need to explicitly unblock the signal we received
+ so the application's signal handler will get it when we resend the
+ signal to ourselves. It doesn't hurt anything to do it, but we don't
+ have to
+ - _rl_handle_signal: Set up a framework for any signals that need to
+ be blocked during cleanup: add the signal to SET (initialized to the
+ existing set of blocked signals) and set BLOCK_SIG to 1. We block
+ that set around the call to rl_cleanup_after_signal().
+ - _rl_handle_signal: on AIX, if the signal is SIGHUP, make sure we
+ block SIGHUP while running rl_cleanup_after_signal()
+
+ 8/3
+ ---
+jobs.c
+ - start_job: don't allow `fg' or `bg' in a command substitution to
+ attempt to start a parent's jobs. Suggested by OÄuz
+ <oguzismailuysal@gmail.com>
+
+builtins/set.def
+ - set_current_options: only call change_flag or SET_BINARY_O_OPTION_VALUE
+ if the value has changed from what is stored in the bitmap, to avoid
+ any side effects from setting the options and save time on any
+ unnecessary function calls. Inspired by report from Grisha Levit
+ <grishalevit@gmail.com>
+
+parse.y
+ - xparse_dolparen: before we jump to top level, check whether we are
+ still reading from the string (we might have run all the unwind-
+ protects) and turn off PST_CMDSUBST if we are not. Fixes fuzzing
+ bug reported by Jakub Wilk <jwilk@jwilk.net>
+
+ 8/4
+ ---
+subst.c
+ - process_substitute: set subshell_environment to include SUBSHELL_ASYNC
+ in the child process, since we passed FORK_ASYNC to make_child. Fixes
+ DEBUG trap problem reported by Jonathan Rascher <jon@bcat.name>
+
+subst.c
+ - unlink_all_fifos: new function, just unconditionally closes and
+ unlinks (if using FIFOs) each pipe used for process substitution.
+ There is an open to unblock any child processes sleeping on the
+ FIFO first. Inspired by a suggestion from "CHIGOT, CLEMENT"
+ <clement.chigot@atos.net>
+
+shell.c
+ - exit_shell: call unlink_all_fifos() instead of unlink_fifo_list()
+
+sig.c
+ - termsig_handler: call unlink_all_fifos() instead of
+ unlink_fifo_list()
+
+ 8/5
+ ---
+arrayfunc.c
+ - quote_compound_array_list: turn empty strings into '' instead of
+ leaving them unmodified. Fixes bug in changes from 4/29 reported
+ by andy_bash <andy_bash@objectmail.com>
+
+ 8/10
+ ----
+bashline.c
+ - edit_and_execute_command,bash_execute_unix_command: restore the bash
+ signal handlers before running parse_and_execute() so bash will catch
+ and handle signals, instead of letting readline catch them without
+ any opportunity to run _rl_handle_signal(). Fixes bug reported by
+ Stan Marsh <gazelle@xmission.com>
+
+ 8/11
+ ----
+builtins/fc.def
+ - fc_gethnum: return HIST_INVALID for -0 if not in listing mode
+ - fc_builtin: throw an out-of-range error if histbeg or histend gets
+ set to HIST_INVALID
+ - fc_builtin: don't throw errors for other out-of-range history
+ specifications, clamp them at the beginning or end of the history
+ list, as appropriate, per POSIX. Report and fix from Martijn Dekker
+ <martijn@inlv.org>
+
+ 8/12
+ ----
+builtins/fc.def
+ - fc_gethnum: return HIST_NOTFOUND (new error) if the string is not a
+ number and doesn't correspond to any command in the history list
+ - fc_builtin: print a "no command found" error message if fc_gethnum
+ returns HIST_NOTFOUND
+
+ 8/14
+ ----
+flags.c
+ - no_invisible_vars: removed undocumented `-I' flag
+
+{flags,variables}.c,flags.h,builtins/{declare,setattr.def}
+ - no_invisible_vars: remove all references
+
+command.h
+ - PF_ALLINDS: new flag, means to expand an array variable name without
+ a subscript as if it were subscripted by `@' instead of `0'
+
+subst.c
+ - parameter_brace_expand_word: if PFLAGS contains PF_ALLINDS, expand
+ an array variable name as if it were subscripted by "@" instead of
+ 0/"0": a string with the element values separated by " ". Little
+ nuance; we're just interested in whether or not there are any
+ values at all
+ - parameter_brace_expand: if we are expanding something like ${foo@a},
+ pass PF_ALLINDS to parameter_brace_expand_word and
+ parameter_brace_expand_indir so we don't get tripped up on `nounset'
+ if foo has an assigned subscript other than 0/"0". Inspired by a
+ report from Andrew Neff <andrew.neff@visionsystemsinc.com>
+
+ 8/17
+ ----
+bashhist.c
+ - bash_add_history,maybe_add_history: don't need to call shell_comment
+ if we are in the middle of adding a here-document, since it may
+ call the parser recursively on data that is not guaranteed to be
+ valid input. From a report by Hyunho Cho <mug896@gmail.com>
+
+ 8/24
+ ----
+lib/readline/complete.c
+ - compare_match: compare TEXT from the line buffer and MATCH, a
+ possible completion for TEXT, after dequoting TEXT if necessary
+ - rl_complete_internal,rl_menu_complete : if show-all-if-unmodified is
+ set, use compare_match instead of a straight strcmp to determine if
+ the match has changed the text to complete, so we can use it for
+ filenames that require quoting. Report and pointer to fix from
+ Abon B <gnuabonbon@gmail.com>
+
+ 8/25
+ ----
+eval.c
+ - execute_prompt_command: PROMPT_COMMAND can now be an array, subsuming
+ PROMPT_COMMANDS, which bash no longer looks for. Prompted by a
+ suggestion from Martijn Dekker <martijn@inlv.org>
+
+ 8/26
+ ----
+builtins/fc.def
+ - fc_gethnum: now takes a flags word as the third argument, with two
+ current flag values: HN_LISTING, which means we are listing history
+ entries, and HN_FIRST, which means we are parsing the first in a
+ first,last range of history entries
+ - fc_gethnum: if we have a number >= 0, and it's out of range, return
+ different values (0 or last history) depending on whether we are
+ parsing the first or last in a range argument. Based on a report from
+ Martijn Dekker <martijn@inlv.org>
+
+ 8/31
+ ----
+parse.y
+ - grammar: call handle_eof_input_unit from the eof-after-error
+ production only from interactive top-level shells, so a syntax error
+ in `eval' doesn't exit an interactive shell. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
+
+bashline.c
+ - bash_execute_unix_command: if we call parse_and_execute with allocated
+ memory, make sure not to include SEVAL_NOFREE in the flags so it will
+ free that command string before returning. Report and fix from
+ Koichi Murase <myoga.murase@gmail.com>
+
+array.[ch]
+ - array_to_argv: now takes a second argument: COUNTP; returns the number
+ of elements stored in the strvec
+ - array_to_argv: don't store array elements with null values; it makes
+ it hard for callers to walk the whole array reliably
+
+pcomplete.c
+ - gen_shell_function_matches: change call to array_to_argv
+
+array.h
+ - execute_array_command: now takes the entire ARRAY * as the first
+ parameter
+
+eval.c
+ - execute_array_command: now takes the entire array, puts the elements
+ into a strvec, and executes each element of the strvevc as a command.
+ This protects against a command from PROMPT_COMMAND[n] unsetting the
+ corresponding element of PROMPT_COMMAND.
+ From a report from Koichi Murase <myoga.murase@gmail.com>
+
+ 9/7
+ ---
+[bash-5.1-beta frozen]
+
+ 9/8
+ ---
+lib/readline/display.c
+ - _rl_update_final: don't bother doing anything if the line structures
+ have not been initialized. Report and fix from gary@catalyst.net.nz
+
+variables.c
+ - get_histcmd: perform the same adjustment as in prompt_history_number;
+ make sure to subtract one if we're doing this while executing a
+ command that has already been saved to the history list. Inspired
+ by a report from L A Walsh <bash@tlinx.org>
+
+ 9/14
+ ----
+aclocal.m4
+ - BASH_STRUCT_WEXITSTATUS_OFFSET: fix typo in loop condition reported
+ by Andreas K. Hüttel <dilfridge@gentoo.org>
+
+syntax.h
+ - slashify_in_here_document: restore previous value that doesn't
+ include double quote, since it's only special in certain cases
+
+subst.c
+ - expand_word_internal: when processing backslash-double quote inside
+ a ${...} construct inside a here documemt, treat it the same as if
+ it were double-quoted, as posix says. Fixes report from
+ Andreas Schwab <schwab@linux-m68k.org>
+
+ 9/15
+ ----
+support/signames.c
+ - added a number of more esoteric signal names from AIX and Solaris
+
+parse.y
+ - report_syntax_error: make sure that the exit status is only set to
+ one of the special builtin exit statuses if we are really executing
+ a builtin here, not just if parse_and_execute_level > 0. Reported by
+ Rob Landley <rob@landley.net>
+
+execute_cmd.c
+ - EX_BADSYNTAX: make sure that gets translated into EX_BADUSAGE (2)
+ - execute_simple_command: if a function returns a value greater than
+ EX_SHERRBASE, use builtin_status to translate it, as if a builtin
+ were being executed
+ - builtin_status: make sure a status > EX_SHERRBASE gets translated to
+ EXECUTION_FAILURE
+
+ 9/21
+ ----
+subst.c
+ - process_substitute: set up input from /dev/null (standard for an
+ asynchronous process) only if the shell is interactive and reading
+ input from the terminal. This allows scripts to use process
+ substitution to filter stdin. From a report from
+ Andreas Schwab <schwab@linux-m68k.org>
+
+ 9/23
+ ----
+doc/{bash.1,bashref.texi}
+ - ENV: a couple of changes clarifying that it's only used when an
+ interactive shell is started in posix mode. Report from
+ Reuben Thomas <rrt@sc3d.org>
+
+examples/loadables/asort.c
+ - asort: loadable builtin to sort an array. Contributed by
+ Geir Hauge <geir.hauge@gmail.com>
+
+ 10/1
+ ----
+
+[bash-5.1-rc1 frozen]
+
+ 10/7
+ ----
+subst.c
+ - process_substitute: try it without setting the stdin for a process
+ substitution started from an interactive shell to /dev/null. We will
+ have to see if this causes problems like those reported back in
+ 9/2019 by Grisha Levit. From a report by Hyunho Cho <mug896@gmail.com>
+
+lib/readline/terminal.c
+ - _rl_init_terminal_io: if the terminal is unknown, disable bracketed
+ paste on the assumption it can't handle the enable/disable escape
+ sequences
+
+ 10/8
+ ----
+lib/readline/terminal.c
+ - _rl_init_terminal_io: if the terminal name is "dumb", disable
+ bracketed paste mode. Suggested by
+ Andreas Schwab <schwab@linux-m68k.org>
+
+ 10/13
+ -----
+trap.[ch]
+ - set_trap_state: new function to allow other signal handlers to set
+ the internal state that trap_handler would set to note that the
+ shell received a trapped signal. Used by sigint_sighandler().
+
+sig.c
+ - sigint_sighandler: call set_trap_state to set the pending trap state
+ for SIGINT if trap_handler is not called. Needed because
+ throw_to_top_level now checks whether a signal is pending before
+ running the trap (change from 4/2020)
+
+builtins/trap.def
+ - trap_builtin: if the shell is interactive (interactive_shell != 0)
+ but running something like PROMPT_COMMAND that sets
+ parse_and_execute_level > 0 but interactive == 0, make sure to set
+ the signal handler to the default interactive shell SIGINT handler
+ (sigint_sighandler) instead of the default non-interactive one.
+ Fixes bug reported by Daniel Farina <daniel@fdr.io> with a hint
+ from felix <felix@f-hauri.ch>
+
+ 10/26
+ -----
+
+lib/readline/{readline.c,rlprivate.h}
+ - _rl_enable_active_region: new variable, mirrors value of
+ _rl_enable_bracketed_paste
+ - BRACKETED_PASTE_DEFAULT: new define, default initial value of
+ _rl_enable_bracketed_paste and _rl_enable_active_region
+
+lib/readline/bind.c
+ - hack_special_boolean_var: make sure that _rl_enable_active_region
+ is set appropriately when "enable-bracketed-paste" is modified
+
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: make sure that we activate the mark on finding
+ the search string only if _rl_enable_active_region is non-zero, even
+ if bracketed paste is enabled
+
+lib/readline/search.c
+ - noninc_dosearch: make sure that we activate the mark on finding
+ the search string only if _rl_enable_active_region is non-zero, even
+ if bracketed paste is enabled
+
+lib/readline/kill.c
+ - rl_bracketed_paste_begin: make sure we activate the mark only if
+ _rl_enable_active_region is enabled
+
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: the requirement for number of available unread
+ characters (bytes) to trigger the bracketed paste test is now
+ BRACK_PASTE_SLEN-1, like for non-incremental searches
+
+ 10/29
+ -----
+
+doc/bash.1,lib/readline/rluser.texi
+ - enable-bracketed-paste: change to note the the current default is `On'
+
+ 10/30
+ -----
+lib/glob/glob.c
+ - wdequote_pathname: if wcsrtombs fails, make sure to check whether it
+ leaves wpathname set to a non-NULL value before checking whether or
+ not *wpathname is a null character (indicating an incomplete
+ conversion). Fixes https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=972286
+ with an assist from Bernhard Ãœbelacker <bernhardu@mailbox.org>
+
+ 11/1
+ ----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: when checking whether the current character is
+ one of the isearch `opcodes', only check the multibyte character
+ member of CXT if we're currently running in a multibyte locale. Don't
+ assume that other parts of the code will set mb[0] = c and mb[1] = 0.
+ Report from Detlef Vollmann <dv@vollmann.ch>
+
+[bash-5.1-rc2 frozen]
+
+ 11/10
+ -----
+lib/readline/isearch.c
+ - _rl_isearch_dispatch: if we are aborting the search, make sure to
+ call _rl_fix_point and to make sure the point and mark are less
+ than the new rl_end, in case they got out of sync. Report and fix
+ from Tillmann Osswald <tosswald@ernw.de>
+
+test.c
+ - unary_test: assume the argument has already been expanded (the code
+ paths for [[ and [ expand it) and add AV_NOEXPAND to the flags passed
+ to array_value if assoc_expand_once is enabled. Prompted by a report
+ from Greg Wooledge <wooledg@eeg.ccf.org>
+
+[bash-5.1-rc3 frozen]
+
+ 11/18
+ -----
+doc/{bash.1,bashref.texi}
+ - small tweaks to the ulimit description to make it more consistent with
+ the Posix standard's terminology
+
+ 12/4
+ ----
+
+[bash-5.1-release frozen]
diff --git a/MANIFEST b/MANIFEST
index 03de2210..54f327cf 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -405,6 +405,7 @@ lib/sh/fnxform.c f
lib/sh/fpurge.c f
lib/sh/getcwd.c f
lib/sh/getenv.c f
+lib/sh/gettimeofday.c f
lib/sh/inet_aton.c f
lib/sh/input_avail.c f
lib/sh/itos.c f
@@ -420,6 +421,7 @@ lib/sh/netopen.c f
lib/sh/oslib.c f
lib/sh/pathcanon.c f
lib/sh/pathphys.c f
+lib/sh/random.c f
lib/sh/rename.c f
lib/sh/setlinebuf.c f
lib/sh/shmatch.c f
@@ -477,6 +479,41 @@ lib/tilde/tilde.h f
lib/tilde/shell.c f
m4/stat-time.m4 f
m4/timespec.m4 f
+m4/codeset.m4 f
+m4/extern-inline.m4 f
+m4/fcntl-o.m4 f
+m4/gettext.m4 f
+m4/glibc2.m4 f
+m4/glibc21.m4 f
+m4/host-cpu-c-abi.m4 f
+m4/iconv.m4 f
+m4/intdiv0.m4 f
+m4/intl-thread-locale.m4 f
+m4/intl.m4 f
+m4/intlmacosx.m4 f
+m4/intmax.m4 f
+m4/inttypes-pri.m4 f
+m4/inttypes.m4 f
+m4/inttypes_h.m4 f
+m4/lcmessage.m4 f
+m4/lib-ld.m4 f
+m4/lib-link.m4 f
+m4/lib-prefix.m4 f
+m4/lock.m4 f
+m4/nls.m4 f
+m4/po.m4 f
+m4/printf-posix.m4 f
+m4/progtest.m4 f
+m4/pthread_rwlock_rdlock.m4 f
+m4/size_max.m4 f
+m4/stdint_h.m4 f
+m4/threadlib.m4 f
+m4/uintmax_t.m4 f
+m4/ulonglong.m4 f
+m4/visibility.m4 f
+m4/wchar_t.m4 f
+m4/wint_t.m4 f
+m4/xsize.m4 f
po/LINGUAS f
po/Makefile.in.in f
po/Makevars f
@@ -530,6 +567,8 @@ po/it.gmo f
po/it.po f
po/ja.gmo f
po/ja.po f
+po/ko.gmo f
+po/ko.po f
po/lt.gmo f
po/lt.po f
po/nl.gmo f
@@ -673,6 +712,8 @@ examples/loadables/Makefile.in f
examples/loadables/Makefile.inc.in f
examples/loadables/necho.c f
examples/loadables/hello.c f
+examples/loadables/asort.c f
+examples/loadables/accept.c f
examples/loadables/print.c f
examples/loadables/realpath.c f
examples/loadables/seq.c f
@@ -685,7 +726,8 @@ examples/loadables/truefalse.c f
examples/loadables/fdflags.c f
examples/loadables/finfo.c f
examples/loadables/cat.c f
-#examples/loadables/cut.c f
+examples/loadables/csv.c f
+examples/loadables/cut.c f
examples/loadables/logname.c f
examples/loadables/basename.c f
examples/loadables/dirname.c f
@@ -702,6 +744,8 @@ examples/loadables/whoami.c f
examples/loadables/uname.c f
examples/loadables/sync.c f
examples/loadables/mkdir.c f
+examples/loadables/mkfifo.c f
+examples/loadables/mktemp.c f
examples/loadables/ln.c f
examples/loadables/mypid.c f
examples/loadables/unlink.c f
@@ -826,6 +870,7 @@ tests/alias1.sub f
tests/alias2.sub f
tests/alias3.sub f
tests/alias4.sub f
+tests/alias5.sub f
tests/alias.right f
tests/appendop.tests f
tests/appendop1.sub f
@@ -872,6 +917,7 @@ tests/array24.sub f
tests/array25.sub f
tests/array26.sub f
tests/array27.sub f
+tests/array28.sub f
tests/array-at-star f
tests/array2.right f
tests/assoc.tests f
@@ -886,6 +932,7 @@ tests/assoc7.sub f
tests/assoc8.sub f
tests/assoc9.sub f
tests/assoc10.sub f
+tests/assoc11.sub f
tests/attr.tests f
tests/attr.right f
tests/attr1.sub f
@@ -900,6 +947,7 @@ tests/builtins3.sub f
tests/builtins4.sub f
tests/builtins5.sub f
tests/builtins6.sub f
+tests/builtins7.sub f
tests/source1.sub f
tests/source2.sub f
tests/source3.sub f
@@ -915,6 +963,8 @@ tests/case3.sub f
tests/case4.sub f
tests/casemod.tests f
tests/casemod.right f
+tests/complete.tests f
+tests/complete.right f
tests/comsub.tests f
tests/comsub.right f
tests/comsub1.sub f
@@ -928,6 +978,7 @@ tests/comsub-eof2.sub f
tests/comsub-eof3.sub f
tests/comsub-eof4.sub f
tests/comsub-eof5.sub f
+tests/comsub-eof6.sub f
tests/comsub-eof.right f
tests/comsub-posix.tests f
tests/comsub-posix.right f
@@ -958,6 +1009,7 @@ 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-at-star9.sub f
tests/dollar-at1.sub f
tests/dollar-at2.sub f
tests/dollar-at3.sub f
@@ -974,6 +1026,7 @@ tests/dollar-star6.sub f
tests/dollar-star7.sub f
tests/dollar-star8.sub f
tests/dollar-star9.sub f
+tests/dollar-star10.sub f
tests/dollar.right f
tests/dstack.tests f
tests/dstack.right f
@@ -1006,6 +1059,7 @@ tests/exec10.sub f
tests/exec11.sub f
tests/exec12.sub f
tests/exec13.sub f
+tests/exec14.sub f
tests/exp.tests f
tests/exp.right f
tests/exp1.sub f
@@ -1060,17 +1114,24 @@ tests/glob1.sub f
tests/glob2.sub f
tests/glob3.sub f
tests/glob4.sub f
+tests/glob5.sub f
+tests/glob6.sub f
+tests/glob7.sub f
+tests/glob8.sub f
+tests/glob9.sub f
tests/glob.right f
tests/globstar.tests f
tests/globstar.right f
tests/globstar1.sub f
tests/globstar2.sub f
+tests/globstar3.sub f
tests/heredoc.tests f
tests/heredoc.right f
tests/heredoc1.sub f
tests/heredoc2.sub f
tests/heredoc3.sub f
tests/heredoc4.sub f
+tests/heredoc5.sub f
tests/herestr.tests f
tests/herestr.right f
tests/herestr1.sub f
@@ -1081,6 +1142,7 @@ tests/histexp3.sub f
tests/histexp4.sub f
tests/histexp5.sub f
tests/histexp6.sub f
+tests/histexp7.sub f
tests/histexp.right f
tests/history.tests f
tests/history.right f
@@ -1088,6 +1150,8 @@ tests/history.list f 444
tests/history1.sub f
tests/history2.sub f
tests/history3.sub f
+tests/history4.sub f
+tests/history5.sub f
tests/ifs.tests f
tests/ifs.right f
tests/ifs1.sub f
@@ -1113,6 +1177,7 @@ tests/jobs3.sub f
tests/jobs4.sub f
tests/jobs5.sub f
tests/jobs6.sub f
+tests/jobs7.sub f
tests/jobs.right f
tests/lastpipe.right f
tests/lastpipe.tests f
@@ -1160,6 +1225,10 @@ tests/new-exp8.sub f
tests/new-exp9.sub f
tests/new-exp10.sub f
tests/new-exp11.sub f
+tests/new-exp12.sub f
+tests/new-exp13.sub f
+tests/new-exp14.sub f
+tests/new-exp15.sub f
tests/new-exp.right f
tests/nquote.tests f
tests/nquote.right f
@@ -1191,6 +1260,7 @@ tests/posixexp4.sub f
tests/posixexp5.sub f
tests/posixexp6.sub f
tests/posixexp7.sub f
+tests/posixexp8.sub f
tests/posixexp2.tests f
tests/posixexp2.right f
tests/posixpat.tests f
@@ -1198,7 +1268,7 @@ tests/posixpat.right f
tests/posixpipe.tests f
tests/posixpipe.right f
tests/prec.right f
-tests/precedence f
+tests/precedence.tests f
tests/printf.tests f
tests/printf.right f
tests/printf1.sub f
@@ -1208,10 +1278,13 @@ tests/printf4.sub f
tests/procsub.tests f
tests/procsub.right f
tests/procsub1.sub f
+tests/procsub2.sub f
tests/quote.tests f
tests/quote.right f
tests/quote1.sub f
tests/quote2.sub f
+tests/quote3.sub f
+tests/quote4.sub f
tests/read.tests f
tests/read.right f
tests/read1.sub f
@@ -1257,6 +1330,7 @@ tests/run-braces f
tests/run-builtins f
tests/run-case f
tests/run-casemod f
+tests/run-complete f
tests/run-comsub f
tests/run-comsub-eof f
tests/run-comsub-posix f
@@ -1335,7 +1409,8 @@ tests/set-e.right f
tests/set-x.tests f
tests/set-x1.sub f
tests/set-x.right f
-tests/shopt.tests f
+tests/shopt.tests f
+tests/shopt1.sub f
tests/shopt.right f
tests/strip.tests f
tests/strip.right f
@@ -1382,6 +1457,12 @@ tests/varenv13.sub f
tests/varenv14.sub f
tests/varenv15.sub f
tests/varenv15.in f
+tests/varenv16.sub f
+tests/varenv17.sub f
+tests/varenv18.sub f
+tests/varenv19.sub f
+tests/varenv20.sub f
+tests/varenv21.sub f
tests/version f
tests/version.mini f
tests/vredir.tests f
diff --git a/Makefile.in b/Makefile.in
index 5fcb44b0..bc970496 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile for bash-5.0, version 4.27
+# Makefile for bash-5.0, version 4.30
#
# Copyright (C) 1996-2018 Free Software Foundation, Inc.
@@ -231,7 +231,8 @@ SHLIB_SOURCE = ${SH_LIBSRC}/clktck.c ${SH_LIBSRC}/getcwd.c \
${SH_LIBSRC}/input_avail.c ${SH_LIBSRC}/mbscasecmp.c \
${SH_LIBSRC}/fnxform.c ${SH_LIBSRC}/unicode.c \
${SH_LIBSRC}/wcswidth.c ${SH_LIBSRC}/wcsnwidth.c \
- ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c
+ ${SH_LIBSRC}/shmbchar.c ${SH_LIBSRC}/utf8.c \
+ ${SH_LIBSRC}/random.c ${SH_LIBSRC}/gettimeofday.c
SHLIB_LIB = -lsh
SHLIB_LIBNAME = libsh.a
@@ -592,7 +593,7 @@ $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP)
@echo " ***********************************************************"
@echo
-bashbug: $(SDIR)/bashbug.sh config.h Makefile $(VERSPROG)
+bashbug: $(SDIR)/bashbug.sh $(VERSPROG)
@sed -e "s%!PATCHLEVEL!%$(PatchLevel)%" \
$(SDIR)/bashbug.sh > $@
@chmod a+rx bashbug
@@ -618,7 +619,7 @@ asan-tests: asan $(TESTS_SUPPORT)
@-test -d tests || mkdir tests
@cp $(TESTS_SUPPORT) tests
@( cd $(srcdir)/tests && \
- PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
+ BUILD_DIR=$(BUILD_DIR) PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
profiling-tests: ${PROGRAM}
@test "X$$PROFILE_FLAGS" == "X" && { echo "profiling-tests: must be built with profiling enabled" >&2; exit 1; }
@@ -628,12 +629,15 @@ version.h: $(SOURCES) config.h Makefile patchlevel.h
$(SHELL) $(SUPPORT_SRC)mkversion.sh -b -S ${topdir} -s $(RELSTATUS) -d $(Version) -o newversion.h \
&& mv newversion.h version.h
-bashversion$(EXEEXT): patchlevel.h conftypes.h version.h buildversion.o $(SUPPORT_SRC)bashversion.c
+bashversion$(EXEEXT): buildversion.o $(SUPPORT_SRC)bashversion.c
$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ $(SUPPORT_SRC)bashversion.c buildversion.o ${LIBS_FOR_BUILD}
-buildversion.o: version.h conftypes.h patchlevel.h $(srcdir)/version.c
+buildversion.o: $(srcdir)/version.c
$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) -DBUILDTOOL -c -o $@ $(srcdir)/version.c
+buildversion.o: bashintl.h $(BASHINCDIR)/gettext.h
+buildversion.o: version.h patchlevel.h conftypes.h
+
# old rules
GRAM_H = parser-built
y.tab.o: y.tab.h y.tab.c ${GRAM_H} command.h ${BASHINCDIR}/stdc.h input.h
@@ -691,7 +695,7 @@ $(SHLIB_LIBRARY): config.h ${SHLIB_SOURCE}
${INTL_LIBRARY}: config.h ${INTL_LIBDIR}/Makefile
@echo making $@ in ${INTL_LIBDIR}
@(cd ${INTL_LIBDIR} && \
- $(MAKE) $(MFLAGS) all) || exit 1
+ $(MAKE) $(MFLAGS) XCFLAGS="${LOCAL_CFLAGS}" all) || exit 1
${LIBINTL_H}: ${INTL_DEP}
@@ -711,7 +715,7 @@ mksignames$(EXEEXT): mksignames.o buildsignames.o
$(RM) $@
$(CC_FOR_BUILD) $(CCFLAGS_FOR_BUILD) ${LDFLAGS_FOR_BUILD} -o $@ mksignames.o buildsignames.o ${LIBS_FOR_BUILD}
-mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h
+mksyntax$(EXEEXT): ${srcdir}/mksyntax.c config.h syntax.h ${BASHINCDIR}/chartypes.h bashansi.h
$(RM) $@
${CC_FOR_BUILD} ${CCFLAGS_FOR_BUILD} ${LDFLAGS_FOR_BUILD} -o $@ ${srcdir}/mksyntax.c ${LIBS_FOR_BUILD}
@@ -742,6 +746,9 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c
${DEFDIR}/builtext.h: $(BUILTIN_DEFS)
@(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1
+${DEFDIR}/pipesize.h:
+ @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) pipesize.h ) || exit 1
+
$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c
@(cd $(SDIR) && $(MAKE) $(MFLAGS) all ) || exit 1
@@ -753,7 +760,7 @@ Makefile makefile: config.status $(srcdir)/Makefile.in
Makefiles makefiles: config.status $(srcdir)/Makefile.in
@for mf in $(CREATED_MAKEFILES); do \
- CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status ; \
+ CONFIG_FILES=$$mf CONFIG_HEADERS= $(SHELL) ./config.status || exit 1; \
done
config.h: stamp-h
@@ -839,16 +846,20 @@ install-headers-dirs:
install-headers: install-headers-dirs
@for hf in $(INSTALLED_HEADERS) ; do \
- ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \
+ ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \
done
@for hf in $(INSTALLED_INCFILES) ; do \
- ${INSTALL_DATA} $(BASHINCDIR)/"$$hf" $(DESTDIR)$(headersdir)/include/$$hf; \
+ ${INSTALL_DATA} $(BASHINCDIR)/"$$hf" $(DESTDIR)$(headersdir)/include/$$hf || exit 1; \
done
@for hf in $(INSTALLED_BUILTINS_HEADERS) ; do \
- ${INSTALL_DATA} $(BUILTIN_SRCDIR)/"$$hf" $(DESTDIR)$(headersdir)/builtins/$$hf; \
+ ${INSTALL_DATA} $(BUILTIN_SRCDIR)/"$$hf" $(DESTDIR)$(headersdir)/builtins/$$hf || exit 1; \
done
@for hf in $(CREATED_HEADERS) ; do \
- ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf; \
+ if test -f $(BUILD_DIR)/"$$hf" ; then \
+ ${INSTALL_DATA} $(BUILD_DIR)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \
+ else \
+ ${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \
+ fi ; \
done
-$(INSTALL_DATA) $(SDIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc
@@ -947,7 +958,7 @@ test tests check: force $(Program) $(TESTS_SUPPORT)
@-test -d tests || mkdir tests
@cp $(TESTS_SUPPORT) tests
@( cd $(srcdir)/tests && \
- PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
+ BUILD_DIR=$(BUILD_DIR) PATH=$(BUILD_DIR)/tests:$$PATH THIS_SH=$(THIS_SH) $(SHELL) ${TESTSCRIPT} )
symlinks:
$(SHELL) $(SUPPORT_SRC)fixlinks -s $(srcdir)
@@ -968,39 +979,50 @@ depends: force
#### PRIVATE TARGETS ####
hashtest: hashlib.c
- $(CC) -DTEST_HASHING $(CCFLAGS) $(TEST_NBUCKETS) -o $@ $(srcdir)/hashlib.c xmalloc.o $(INTL_LIB)
+ $(CC) -DTEST_HASHING $(CCFLAGS) $(TEST_NBUCKETS) -o $@ $(srcdir)/hashlib.c xmalloc.o $(INTL_LIB) $(MALLOC_LIBRARY)
############################ DEPENDENCIES ###############################
# Files that depend on the definitions in config-top.h, which are not meant
# to be changed
-bashhist.o: config-top.h
-shell.o: config-top.h
-input.o: config-top.h
-y.tab.o: config-top.h
-jobs.o: config-top.h
-nojobs.o: config-top.h
-execute_cmd.o: config-top.h
-variables.o: config-top.h
-builtins/command.o: config-top.h
-builtins/common.o: config-top.h
-builtins/break.o: config-top.h
-builtins/echo.o: config-top.h
-builtins/evalstring.o: config-top.h
-builtins/exit.o: config-top.h
-builtins/kill.o: config-top.h
+array.o: $(srcdir)/config-top.h
+bashhist.o: $(srcdir)/config-top.h
+shell.o: $(srcdir)/config-top.h
+input.o: $(srcdir)/config-top.h
+y.tab.o: $(srcdir)/config-top.h
+jobs.o: $(srcdir)/config-top.h
+nojobs.o: $(srcdir)/config-top.h
+execute_cmd.o: $(srcdir)/config-top.h
+variables.o: $(srcdir)/config-top.h
+findcmd.o: $(srcdir)/config-top.h
+subst.o: $(srcdir)/config-top.h
+builtins/cd.o: $(srcdir)/config-top.h
+builtins/command.o: $(srcdir)/config-top.h
+builtins/common.o: $(srcdir)/config-top.h
+builtins/declare.o: $(srcdir)/config-top.h
+builtins/break.o: $(srcdir)/config-top.h
+builtins/echo.o: $(srcdir)/config-top.h
+builtins/evalstring.o: $(srcdir)/config-top.h
+builtins/exit.o: $(srcdir)/config-top.h
+builtins/kill.o: $(srcdir)/config-top.h
+builtins/shopt.o: $(srcdir)/config-top.h
+
+# XXX
+${SH_LIBDIR}/tmpfile.o: $(srcdir)/config-top.h
# shell basics
copy_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
copy_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
copy_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
copy_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+copy_cmd.o: bashansi.h assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
dispose_cmd.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h
dispose_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h
dispose_cmd.o: error.h general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
dispose_cmd.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
dispose_cmd.o: make_cmd.h subst.h sig.h pathnames.h externs.h
dispose_cmd.o: ${BASHINCDIR}/ocache.h
+dispose_cmd.o: assoc.h ${BASHINCDIR}/chartypes.h
error.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h flags.h ${BASHINCDIR}/stdc.h error.h
error.o: command.h general.h xmalloc.h externs.h input.h bashhist.h
error.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1008,12 +1030,14 @@ error.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h arr
error.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
error.o: make_cmd.h subst.h sig.h pathnames.h externs.h execute_cmd.h
error.o: input.h execute_cmd.h
+error.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h assoc.h
eval.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h trap.h flags.h ${DEFSRC}/common.h
eval.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
eval.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
eval.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
eval.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
eval.o: input.h execute_cmd.h
+eval.o: bashhist.h assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
execute_cmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
execute_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
execute_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1024,12 +1048,15 @@ 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
+execute_cmd.o: bashhist.h input.h ${GRAM_H} assoc.h hashcmd.h alias.h
+execute_cmd.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/posixwait.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
expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h
expr.o: ${BASHINCDIR}/chartypes.h
+expr.o: assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/typemax.h
findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h
findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h
findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h
@@ -1041,13 +1068,17 @@ flags.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h
flags.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
flags.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h execute_cmd.h
flags.o: make_cmd.h subst.h sig.h pathnames.h externs.h bashhist.h
+flags.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashansi.h assoc.h
general.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
general.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
general.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
general.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
general.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h parser.h
+general.o: pathexp.h
general.o: ${BASHINCDIR}/maxpath.h ${BASHINCDIR}/posixtime.h
general.o: ${BASHINCDIR}/chartypes.h
+general.o: trap.h input.h assoc.h test.h findcmd.h
+general.o: ${BASHINCDIR}/ocache.h $(DEFSRC)/common.h
hashcmd.o: config.h ${BASHINCDIR}/posixstat.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
hashcmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
hashcmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashcmd.h
@@ -1058,6 +1089,7 @@ hashlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.
hashlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
hashlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
hashlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+hashlib.o: assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
input.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
input.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h input.h error.h externs.h
input.o: quit.h shell.h pathnames.h
@@ -1065,12 +1097,14 @@ list.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h $
list.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
list.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
list.o: make_cmd.h subst.h sig.h pathnames.h externs.h
-locale.o: config.h bashtypes.h bashintl.h ${LIBINTL_H} bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+list.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashansi.h assoc.h
+locale.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
locale.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
locale.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
locale.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
locale.o: make_cmd.h subst.h sig.h pathnames.h externs.h
locale.o: ${BASHINCDIR}/chartypes.h
+locale.o: input.h assoc.h ${BASHINCDIR}/ocache.h
mailcheck.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
mailcheck.o: ${BASHINCDIR}/posixtime.h
mailcheck.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1078,12 +1112,15 @@ mailcheck.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h
mailcheck.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
mailcheck.o: make_cmd.h subst.h sig.h pathnames.h externs.h
mailcheck.o: execute_cmd.h mailcheck.h
+mailcheck.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.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 sig.h siglist.h syntax.h dispose_cmd.h parser.h
make_cmd.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/ocache.h
make_cmd.o: shell.h execute_cmd.h pathnames.h
+make_cmd.o: $(BASHINCDIR)/maxpath.h make_cmd.c assoc.h $(BASHINCDIR)/chartypes.h
+make_cmd.o: unwind_prot.h $(BASHINCDIR)/posixjmp.h bashjmp.h $(BASHINCDIR)/posixwait.h
y.tab.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h
y.tab.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
y.tab.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1091,6 +1128,8 @@ y.tab.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
y.tab.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h execute_cmd.o
y.tab.o: trap.h flags.h parser.h input.h mailcheck.h $(DEFSRC)/common.h
y.tab.o: $(DEFDIR)/builtext.h bashline.h bashhist.h jobs.h siglist.h alias.h
+y.tab.o: ${BASHINCDIR}/typemax.h assoc.h ${BASHINCDIR}/ocache.h
+y.tab.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h ${BASHINCDIR}/posixwait.h
pathexp.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
pathexp.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
pathexp.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1099,6 +1138,7 @@ pathexp.o: make_cmd.h subst.h sig.h pathnames.h externs.h
pathexp.o: pathexp.h flags.h
pathexp.o: $(GLOB_LIBSRC)/glob.h $(GLOB_LIBSRC)/strmatch.h
pathexp.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
+pathexp.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.h
print_cmd.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
print_cmd.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
print_cmd.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1106,11 +1146,15 @@ 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
+print_cmd.o: flags.h input.h assoc.h
+print_cmd.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.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
redir.o: general.h xmalloc.h variables.h arrayfunc.h conftypes.h array.h hashlib.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h
redir.o: dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h
redir.o: flags.h execute_cmd.h redir.h input.h
+redir.o: ${DEFDIR}/pipesize.h
+redir.o: trap.h assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
shell.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/filecntl.h
shell.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
shell.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1118,7 +1162,8 @@ shell.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
shell.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
shell.o: flags.h trap.h mailcheck.h builtins.h $(DEFSRC)/common.h
shell.o: jobs.h siglist.h input.h execute_cmd.h findcmd.h bashhist.h bashline.h
-shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h
+shell.o: ${GLOB_LIBSRC}/strmatch.h ${BASHINCDIR}/posixtime.h ${BASHINCDIR}/posixwait.h
+shell.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h assoc.h alias.h
sig.o: config.h bashtypes.h
sig.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
sig.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1132,6 +1177,7 @@ stringlib.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h comman
stringlib.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
stringlib.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
stringlib.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+stringlib.o: bashansi.h pathexp.h assoc.h $(BASHINCDIR)/ocache.h
stringlib.o: ${GLOB_LIBSRC}/glob.h ${GLOB_LIBSRC}/strmatch.h
subst.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/posixstat.h
subst.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1149,6 +1195,8 @@ test.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h $
test.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
test.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
test.o: make_cmd.h subst.h sig.h pathnames.h externs.h test.h
+test.o: ${BASHINCDIR}/stat-time.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
+test.o: $(GLOB_LIBSRC)/strmatch.h bashansi.h pathexp.h assoc.h
test.o: ${DEFSRC}/common.h
trap.o: config.h bashtypes.h trap.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
trap.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1159,6 +1207,7 @@ trap.o: signames.h $(DEFSRC)/common.h
trap.o: ${DEFDIR}/builtext.h jobs.h
unwind_prot.o: config.h bashtypes.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h
unwind_prot.o: general.h xmalloc.h unwind_prot.h quit.h sig.h
+unwind_prot.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h error.h
variables.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
variables.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
variables.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
@@ -1167,15 +1216,16 @@ variables.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
variables.o: flags.h execute_cmd.h mailcheck.h input.h $(DEFSRC)/common.h
variables.o: findcmd.h bashhist.h hashcmd.h pathexp.h
variables.o: pcomplete.h ${BASHINCDIR}/chartypes.h
-variables.o: ${BASHINCDIR}/posixtime.h assoc.h
+variables.o: ${BASHINCDIR}/posixtime.h assoc.h ${DEFSRC}/getopt.h
variables.o: version.h $(DEFDIR)/builtext.h
-version.o: conftypes.h patchlevel.h version.h
+version.o: conftypes.h patchlevel.h version.h
xmalloc.o: config.h bashtypes.h ${BASHINCDIR}/ansi_stdlib.h error.h
+xmalloc.o: ${BASHINCDIR}/stdc.h $(ALLOC_LIBSRC)/shmalloc.h
# job control
jobs.o: config.h bashtypes.h trap.h ${BASHINCDIR}/filecntl.h input.h ${BASHINCDIR}/shtty.h
-jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+jobs.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h assoc.h
jobs.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
jobs.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
jobs.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h parser.h
@@ -1183,10 +1233,12 @@ jobs.o: execute_cmd.h make_cmd.h subst.h sig.h pathnames.h externs.h
jobs.o: jobs.h flags.h $(DEFSRC)/common.h $(DEFDIR)/builtext.h
jobs.o: ${BASHINCDIR}/posixwait.h ${BASHINCDIR}/unionwait.h
jobs.o: ${BASHINCDIR}/posixtime.h
+jobs.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h $(BASHINCDIR)/typemax.h
nojobs.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h bashjmp.h ${BASHINCDIR}/posixjmp.h
nojobs.o: command.h ${BASHINCDIR}/stdc.h general.h xmalloc.h jobs.h quit.h siglist.h externs.h
nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h parser.h
nojobs.o: $(DEFDIR)/builtext.h
+nojobs.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h $(BASHINCDIR)/typemax.h
# shell features that may be compiled in
@@ -1195,6 +1247,7 @@ array.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h
array.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
array.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
array.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+array.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
array.o: $(DEFSRC)/common.h
arrayfunc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
arrayfunc.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1202,6 +1255,7 @@ arrayfunc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h
arrayfunc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
arrayfunc.o: make_cmd.h subst.h sig.h pathnames.h externs.h pathexp.h
arrayfunc.o: execute_cmd.h
+arrayfunc.o: assoc.h $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h
arrayfunc.o: $(DEFSRC)/common.h
arrayfunc.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
assoc.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
@@ -1211,6 +1265,7 @@ assoc.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h
assoc.o: assoc.h hashlib.h
assoc.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
assoc.o: make_cmd.h subst.h sig.h pathnames.h externs.h
+assoc.o: array.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
assoc.o: $(DEFSRC)/common.h
braces.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
braces.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
@@ -1218,16 +1273,18 @@ braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h ar
braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h
braces.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
+braces.o: ${BASHINCDIR}/typemax.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h
alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h
-alias.o: pcomplete.h
+alias.o: pcomplete.h hashlib.h
alias.o: ${BASHINCDIR}/chartypes.h
pcomplib.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h
pcomplib.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h
pcomplib.o: bashjmp.h command.h general.h xmalloc.h error.h variables.h arrayfunc.h conftypes.h quit.h
pcomplib.o: unwind_prot.h dispose_cmd.h make_cmd.h subst.h sig.h pathnames.h
-pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h
+pcomplib.o: externs.h ${BASHINCDIR}/maxpath.h assoc.h array.h
+pcomplib.o: ${BASHINCDIR}/posixjmp.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
pcomplete.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h bashtypes.h
pcomplete.o: ${BASHINCDIR}/stdc.h hashlib.h pcomplete.h shell.h syntax.h
@@ -1246,13 +1303,15 @@ bashhist.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h
bashhist.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
bashhist.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
bashhist.o: flags.h input.h parser.h pathexp.h $(DEFSRC)/common.h bashline.h
-bashhist.o: $(GLOB_LIBSRC)/strmatch.h
+bashhist.o: ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h bashhist.h assoc.h
+bashhist.o: $(GLOB_LIBSRC)/strmatch.h ${GLOB_LIBSRC}/glob.h
bashline.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
bashline.o: shell.h syntax.h config.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h ${BASHINCDIR}/stdc.h error.h
bashline.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h array.h hashlib.h
bashline.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
bashline.o: make_cmd.h subst.h sig.h pathnames.h externs.h parser.h
bashline.o: builtins.h bashhist.h bashline.h execute_cmd.h findcmd.h pathexp.h
+bashline.o: trap.h flags.h assoc.h $(BASHINCDIR)/ocache.h
bashline.o: $(DEFSRC)/common.h $(GLOB_LIBSRC)/glob.h alias.h
bashline.o: pcomplete.h ${BASHINCDIR}/chartypes.h input.h
bashline.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
@@ -1263,32 +1322,51 @@ 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}/ocache.h ${BASHINCDIR}/chartypes.h bashhist.h assoc.h
bracecomp.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
# library dependencies
+bashhist.o: $(RL_LIBSRC)/rltypedefs.h
bashline.o: $(RL_LIBSRC)/rlconf.h
bashline.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/rlstdc.h
bashline.o: $(RL_LIBSRC)/chardefs.h $(RL_LIBSRC)/readline.h
+bashline.o: $(RL_LIBSRC)/rltypedefs.h ${RL_LIBSRC}/rlmbutil.h
bracecomp.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
bracecomp.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+bracecomp.o: $(RL_LIBSRC)/rltypedefs.h
y.tab.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
y.tab.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+y.tab.o: $(RL_LIBSRC)/rltypedefs.h
subst.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
subst.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+shell.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
+shell.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+shell.o: $(RL_LIBSRC)/rltypedefs.h
+variables.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
+variables.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+variables.o: $(RL_LIBSRC)/rltypedefs.h
+jobs.o: $(RL_LIBSRC)/keymaps.h $(RL_LIBSRC)/chardefs.h
+jobs.o: $(RL_LIBSRC)/readline.h $(RL_LIBSRC)/rlstdc.h
+jobs.o: $(RL_LIBSRC)/rltypedefs.h
shell.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
+variables.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
subst.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
bashline.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
bashhist.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
y.tab.o: $(HIST_LIBSRC)/history.h $(HIST_LIBSRC)/rlstdc.h
+bashline.o: $(TILDE_LIBSRC)/tilde.h
+bracecomp.o: $(TILDE_LIBSRC)/tilde.h
execute_cmd.o: $(TILDE_LIBSRC)/tilde.h
general.o: $(TILDE_LIBSRC)/tilde.h
mailcheck.o: $(TILDE_LIBSRC)/tilde.h
shell.o: $(TILDE_LIBSRC)/tilde.h
subst.o: $(TILDE_LIBSRC)/tilde.h
variables.o: $(TILDE_LIBSRC)/tilde.h
+jobs.o: $(TILDE_LIBSRC)/tilde.h
+y.tab.o: $(TILDE_LIBSRC)/tilde.h
# libintl dependencies
arrayfunc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
@@ -1302,6 +1380,7 @@ expr.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
general.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
input.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
jobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+locale.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
mailcheck.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
make_cmd.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
nojobs.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
@@ -1321,6 +1400,9 @@ variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+# XXX
+$(MALLOC_SOURCE): bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+
signames.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h
# XXX - dependencies checked through here
@@ -1360,6 +1442,7 @@ builtins/getopt.o: make_cmd.h subst.h sig.h pathnames.h externs.h
builtins/getopt.o: $(DEFSRC)/getopt.h
builtins/mkbuiltins.o: config.h bashtypes.h ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h
builtins/mkbuiltins.o: bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+builtins/mkbuiltins.o: $(BASHINCDIR)/stdc.h
# builtin def files
builtins/alias.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
@@ -1389,6 +1472,10 @@ builtins/cd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xma
builtins/cd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
builtins/cd.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
builtins/cd.o: $(DEFSRC)/common.h quit.h pathnames.h
+builtins/colon.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
+builtins/colon.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
+builtins/colon.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
+builtins/colon.o: pathnames.h
builtins/command.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
builtins/command.o: quit.h $(DEFSRC)/bashgetopt.h
builtins/command.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
@@ -1401,6 +1488,7 @@ builtins/echo.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h x
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
builtins/echo.o: pathnames.h
+builtins/echo.o: $(DEFSRC)/common.h
builtins/enable.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
builtins/enable.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
builtins/enable.o: dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
diff --git a/NEWS b/NEWS
index 9e4570b2..a6170be8 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,189 @@
+This is a terse description of the new features added to bash-5.1 since
+the release of bash-5.0. As always, the manual page (doc/bash.1) is
+the place to look for complete descriptions.
+
+1. New Features in Bash
+
+a. `bind -x' now supports different bindings for different editing modes and
+ keymaps.
+
+b. Bash attempts to optimize the number of times it forks when executing
+ commands in subshells and from `bash -c'.
+
+c. Here documents and here strings now use pipes for the expanded document if
+ it's smaller than the pipe buffer size, reverting to temporary files if it's
+ larger.
+
+d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
+
+e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL
+ and those that were SIG_IGN when the shell starts.
+
+f. The shell now expands the history number (e.g., in PS1) even if it is not
+ currently saving commands to the history list.
+
+g. `read -e' may now be used with arbitrary file descriptors (`read -u N').
+
+h. The `select' builtin now runs traps if its internal call to the read builtin
+ is interrupted by a signal.
+
+i. SRANDOM: a new variable that expands to a 32-bit random number that is not
+ produced by an LCRNG, and uses getrandom/getentropy, falling back to
+ /dev/urandom or arc4random if available. There is a fallback generator if
+ none of these are available.
+
+j. shell-transpose-words: a new bindable readline command that uses the same
+ definition of word as shell-forward-word, etc.
+
+k. The shell now adds default bindings for shell-forward-word,
+ shell-backward-word, shell-transpose-words, and shell-kill-word.
+
+l. Bash now allows ARGV0 appearing in the initial shell environment to set $0.
+
+m. If `unset' is executed without option arguments, bash tries to unset a shell
+ function if a name argument cannot be a shell variable name because it's not
+ an identifier.
+
+n. The `test -N' operator uses nanosecond timestamp granularity if it's
+ available.
+
+o. Bash posix mode now treats assignment statements preceding shell function
+ definitions the same as in its default mode, since POSIX has changed and
+ no longer requires those assignments to persist after the function returns
+ (POSIX interp 654).
+
+p. BASH_REMATCH is no longer readonly.
+
+q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
+ or `wait' without arguments.
+
+r. Sorting the results of pathname expansion now uses byte-by-byte comparisons
+ if two strings collate equally to impose a total order; the result of a
+ POSIX interpretation.
+
+s. Bash now allows SIGINT trap handlers to execute recursively.
+
+t. Bash now saves and restores state around setting and unsetting posix mode,
+ instead of having unsetting posix mode set a known state.
+
+u. Process substitution is now available in posix mode.
+
+v. READLINE_MARK: a new variable available while executing commands bound with
+ `bind -x', contains the value of the mark.
+
+w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
+ startup.
+
+x. `test -v N' can now test whether or not positional parameter N is set.
+
+y. `local' now honors the `-p' option to display all local variables at the
+ current context.
+
+z. The `@a' variable transformation now prints attributes for unset array
+ variables.
+
+aa. The `@A' variable transformation now prints a declare command that sets a
+ variable's attributes if the variable has attributes but is unset.
+
+bb. `declare' and `local' now have a -I option that inherits attributes and
+ value from a variable with the same name at a previous scope.
+
+cc. When run from a -c command, `jobs' now reports the status of completed jobs.
+
+dd. New `U', `u', and `L' parameter transformations to convert to uppercase,
+ convert first character to uppercase, and convert to lowercase,
+ respectively.
+
+ee. PROMPT_COMMAND: can now be an array variable, each element of which can
+ contain a command to be executed like a string PROMPT_COMMAND variable.
+
+ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
+
+gg. Associative arrays may be assigned using a list of key-value pairs within
+ a compound assignment. Compound assignments where the words are not of
+ the form [key]=value are assumed to be key-value assignments. A missing or
+ empty key is an error; a missing value is treated as NULL. Assignments may
+ not mix the two forms.
+
+hh. New `K' parameter transformation to display associative arrays as key-
+ value pairs.
+
+ii. Writing history to syslog now handles messages longer than the syslog max
+ length by writing multiple messages with a sequence number.
+
+jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since
+ they are nominally integer variables. LINENO is not an integer variable.
+
+kk. Bash temporarily suppresses the verbose option when running the DEBUG trap
+ while running a command from the `fc' builtin.
+
+ll. `wait -n' now accepts a list of job specifications as arguments and will
+ wait for the first one in the list to change state.
+
+mm. The associative array implementation can now dynamically increase the
+ size of the hash table based on insertion patterns.
+
+nn. HISTFILE is now readonly in a restricted shell.
+
+oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit
+ systems.
+
+pp. If the hash builtin is listing hashed filenames portably, don't print
+ anything if the table is empty.
+
+qq. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component.
+
+rr. Bash attempts to optimize away forks in the last command in a function body
+ under appropriate circumstances.
+
+ss. The globbing code now uses fnmatch(3) to check collation elements (if
+ available) even in cases without multibyte characters.
+
+tt. The `fg' and `bg' builtins now return an error in a command substitution
+ when asked to restart a job inherited from the parent shell.
+
+uu. The shell now attempts to unlink all FIFOs on exit, whether a consuming
+ process has finished with them or not.
+
+vv. There is a new contributed loadable builtin: asort.
+
+2. New Features in Readline
+
+a. If a second consecutive completion attempt produces matches where the first
+ did not, treat it as a new completion attempt and insert a match as
+ appropriate.
+
+b. Bracketed paste mode works in more places: incremental search strings, vi
+ overstrike mode, character search, and reading numeric arguments.
+
+c. Readline automatically switches to horizontal scrolling if the terminal has
+ only one line.
+
+d. Unbinding all key sequences bound to a particular readline function now
+ descends into keymaps for multi-key sequences.
+
+e. rl-clear-display: new bindable command that clears the screen and, if
+ possible, the scrollback buffer (bound to emacs mode M-C-l by default).
+
+f. New active mark and face feature: when enabled, it will highlight the text
+ inserted by a bracketed paste (the `active region') and the text found by
+ incremental and non-incremental history searches. This is tied to bracketed
+ paste and can be disabled by turning off bracketed paste.
+
+g. Readline sets the mark in several additional commands.
+
+h. Bracketed paste mode is enabled by default.
+
+i. Readline tries to take advantage of the more regular structure of UTF-8
+ characters to identify the beginning and end of characters when moving
+ through the line buffer.
+
+j. The bindable operate-and-get-next command (and its default bindings) are
+ now part of readline instead of a bash-specific addition.
+
+k. The signal cleanup code now blocks SIGINT while processing after a SIGINT.
+
+-------------------------------------------------------------------------------
This is a terse description of the new features added to bash-5.0 since
the release of bash-4.4. As always, the manual page (doc/bash.1) is
the place to look for complete descriptions.
@@ -29,7 +215,7 @@ h. The `name' argument to the `coproc' reserved word now undergoes word
i. A nameref name resolution loop in a function now resolves to a variable by
that name in the global scope.
-j. The `wait' builtin now has a `-f' option, which signfies to wait until the
+j. The `wait' builtin now has a `-f' option, which signifies to wait until the
specified job or process terminates, instead of waiting until it changes
state.
@@ -328,7 +514,7 @@ rr. Bash now uses mktemp() when creating internal temporary files; it produces
2. New Features in Readline
-a. The history truncation code now uses the same error recovery mechansim as
+a. The history truncation code now uses the same error recovery mechanism as
the history writing code, and restores the old version of the history file
on error. The error recovery mechanism handles symlinked history files.
@@ -1549,7 +1735,7 @@ e. The history expansion code now allows any character to terminate a
f. New bindable variable `history-preserve-point'. If set, the history
code attempts to place the user at the same location on each history
- line retrived with previous-history or next-history.
+ line retrieved with previous-history or next-history.
-------------------------------------------------------------------------------
This is a terse description of the new features added to bash-2.05 since
@@ -1578,7 +1764,7 @@ c. `complete' and `compgen' now take a `-o value' option, which controls some
d. A new loadable builtin, realpath, which canonicalizes and expands symlinks
in pathname arguments.
-e. When `set' is called without options, it prints function defintions in a
+e. When `set' is called without options, it prints function definitions in a
way that allows them to be reused as input. This affects `declare' and
`declare -p' as well. This only happens when the shell is not in POSIX
mode, since POSIX.2 forbids this behavior.
@@ -1989,7 +2175,7 @@ p. The shell now supports integer-indexed arrays of unlimited length,
q. ${!var}: indirect variable expansion, equivalent to eval \${$var}.
-r. ${paramter:offset[:length]}: variable substring extraction.
+r. ${parameter:offset[:length]}: variable substring extraction.
s. ${parameter/pattern[/[/]string]}: variable pattern substitution.
@@ -2113,7 +2299,7 @@ iii. Changes to Posix mode:
any symbolic links.
o A non-interactive shell exits if a variable assignment error
occurs when no command name follows the assignment statements.
- o A non-interactive shell exits if the interation variable in a
+ o A non-interactive shell exits if the iteration variable in a
`for' statement or the selection variable in a `select' statement
is read-only or another variable assignment error occurs.
o The `<>' redirection operator now opens a file for both stdin and
diff --git a/NOTES b/NOTES
index 414e7732..6fa019ae 100644
--- a/NOTES
+++ b/NOTES
@@ -1,4 +1,4 @@
-Platform-Specific Configuration and Operation Notes [somewhat dated]
+Platform-Specific Configuration and Operation Notes [very dated]
====================================================================
1. configure --without-gnu-malloc on:
diff --git a/POSIX b/POSIX
index f3f4a0b7..24114af1 100644
--- a/POSIX
+++ b/POSIX
@@ -17,106 +17,108 @@ The following list is what's changed when 'POSIX mode' is in effect:
re-search '$PATH' to find the new location. This is also available
with 'shopt -s checkhash'.
- 3. The message printed by the job control code and builtins when a job
- exits with a non-zero status is 'Done(status)'.
+ 3. Bash will not insert a command without the execute bit set into the
+ command hash table, even if it returns it as a (last-ditch) result
+ from a '$PATH' search.
4. The message printed by the job control code and builtins when a job
+ exits with a non-zero status is 'Done(status)'.
+
+ 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'.
- 5. Alias expansion is always enabled, even in non-interactive shells.
+ 6. Alias expansion is always enabled, even in non-interactive shells.
- 6. Reserved words appearing in a context where reserved words are
+ 7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. 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.
- 8. The POSIX startup files are executed ('$ENV') rather than the
+ 9. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 9. Tilde expansion is only performed on assignments preceding a
+ 10. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 10. The default history file is '~/.sh_history' (this is the default
+ 11. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 11. Redirection operators do not perform filename expansion on the
+ 12. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 12. Redirection operators do not perform word splitting on the word in
+ 13. Redirection operators do not perform word splitting on the word in
the redirection.
- 13. Function names must be valid shell 'name's. That is, they may not
+ 14. 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.
- 14. Function names may not be the same as one of the POSIX special
+ 15. Function names may not be the same as one of the POSIX special
builtins.
- 15. POSIX special builtins are found before shell functions during
+ 16. POSIX special builtins are found before shell functions during
command lookup.
- 16. When printing shell function definitions (e.g., by 'type'), Bash
+ 17. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 17. Literal tildes that appear as the first character in elements of
+ 18. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 18. The 'time' reserved word may be used by itself as a command. When
+ 19. 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.
- 19. When parsing and expanding a ${...} expansion that appears within
+ 20. 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.
- 20. The parser does not recognize 'time' as a reserved word if the
+ 21. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 21. The '!' character does not introduce history expansion within a
+ 22. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 22. If a POSIX special builtin returns an error status, a
+ 23. 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.
- 23. A non-interactive shell exits with an error status if a variable
+ 24. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. 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.
- 25. A non-interactive shell exits with an error status if the
+ 26. 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.
- 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 27. Non-interactive shells exit if a syntax error in an arithmetic
+ 28. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 28. Non-interactive shells exit if a parameter expansion error occurs.
+ 29. Non-interactive shells exit if a parameter expansion error occurs.
- 29. Non-interactive shells exit if there is a syntax error in a script
+ 30. 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.
- 30. Process substitution is not available.
-
31. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
@@ -127,39 +129,38 @@ The following list is what's changed when 'POSIX mode' is in effect:
33. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. 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.
-
- 35. The 'command' builtin does not prevent builtins that take
+ 34. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 36. The 'bg' builtin uses the required format to describe each job
+ 35. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 37. The output of 'kill -l' prints all the signal names on a single
+ 36. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 38. The 'kill' builtin does not accept signal names with a 'SIG'
+ 37. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 39. The 'export' and 'readonly' builtin commands display their output
+ 38. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 40. The 'trap' builtin displays signal names without the leading
+ 39. The 'trap' builtin displays signal names without the leading
'SIG'.
- 41. 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.
+ 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ and those that were ignored when the shell started.
+
42. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
diff --git a/RBASH b/RBASH
index 9478fc64..9732c769 100644
--- a/RBASH
+++ b/RBASH
@@ -8,11 +8,13 @@ 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.
+ * Setting or unsetting the values of the 'SHELL', 'PATH', 'HISTFILE',
+ '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
+ 'history' 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
@@ -35,3 +37,15 @@ 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.
+The restricted shell mode is only one component of a useful restricted
+environment. It should be accompanied by setting 'PATH' to a value that
+allows execution of only a few verified commands (commands that allow
+shell escapes are particularly vulnerable), leaving the user in a
+non-writable directory other than his home directory after login, not
+allowing the restricted shell to execute shell scripts, and cleaning the
+environment of variables that cause some commands to modify their
+behavior (e.g., 'VISUAL' or 'PAGER').
+
+Modern systems provide more secure ways to implement a restricted
+environment, such as 'jails', 'zones', or 'containers'.
+
diff --git a/README b/README
index c28d63df..70b7a851 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
Introduction
============
-This is GNU Bash, version 5.0. Bash is the GNU Project's Bourne
+This is GNU Bash, version 5.1. 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.3 and
-bash-4.4. For details, see the file COMPAT. The NEWS file tersely
+of Bash and previous widely-distributed versions, bash-4.4 and
+bash-5.0. For details, see the file COMPAT. The NEWS file tersely
lists features that are new in this release.
Bash is free software, distributed under the terms of the [GNU] General
diff --git a/aclocal.m4 b/aclocal.m4
index 1413267f..6899e820 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-nl
+dnl
dnl Bash specific tests
dnl
dnl Some derived from PDKSH 5.1.3 autoconf tests
@@ -10,6 +10,7 @@ AC_DEFUN(BASH_C_LONG_LONG,
ac_cv_c_long_long=yes
else
AC_TRY_RUN([
+#include <stdlib.h>
int
main()
{
@@ -33,6 +34,7 @@ AC_DEFUN(BASH_C_LONG_DOUBLE,
ac_cv_c_long_double=yes
else
AC_TRY_RUN([
+#include <stdlib.h>
int
main()
{
@@ -64,6 +66,8 @@ AC_DEFUN(BASH_HEADER_INTTYPES,
dnl
dnl check for typedef'd symbols in header files, but allow the caller to
dnl specify the include files to be checked in addition to the default
+dnl
+dnl This could be changed to use AC_COMPILE_IFELSE instead of AC_EGREP_CPP
dnl
dnl BASH_CHECK_TYPE(TYPE, HEADERS, DEFAULT[, VALUE-IF-FOUND])
AC_DEFUN(BASH_CHECK_TYPE,
@@ -134,6 +138,8 @@ typedef int (*_bashfunc)(const char *, ...);
#else
typedef int (*_bashfunc)();
#endif
+#include <stdlib.h>
+int
main()
{
_bashfunc pf;
@@ -191,9 +197,11 @@ AC_CACHE_VAL(bash_cv_under_sys_siglist,
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
#ifndef UNDER_SYS_SIGLIST_DECLARED
extern char *_sys_siglist[];
#endif
+int
main()
{
char *msg = (char *)_sys_siglist[2];
@@ -218,9 +226,11 @@ AC_CACHE_VAL(bash_cv_sys_siglist,
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
#if !HAVE_DECL_SYS_SIGLIST
extern char *sys_siglist[];
#endif
+int
main()
{
char *msg = sys_siglist[2];
@@ -273,6 +283,8 @@ AC_CACHE_VAL(bash_cv_dup2_broken,
[AC_TRY_RUN([
#include <sys/types.h>
#include <fcntl.h>
+#include <stdlib.h>
+int
main()
{
int fd1, fd2, fl;
@@ -300,7 +312,8 @@ AC_DEFUN(BASH_FUNC_STRSIGNAL,
[AC_MSG_CHECKING([for the existence of strsignal])
AC_CACHE_VAL(bash_cv_have_strsignal,
[AC_TRY_LINK([#include <sys/types.h>
-#include <signal.h>],
+#include <signal.h>
+#include <string.h>],
[char *s = (char *)strsignal(2);],
bash_cv_have_strsignal=yes, bash_cv_have_strsignal=no)])
AC_MSG_RESULT($bash_cv_have_strsignal)
@@ -321,6 +334,9 @@ AC_CACHE_VAL(bash_cv_opendir_not_robust,
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
#if defined(HAVE_DIRENT_H)
# include <dirent.h>
#else
@@ -335,6 +351,8 @@ AC_CACHE_VAL(bash_cv_opendir_not_robust,
# include <ndir.h>
# endif
#endif /* HAVE_DIRENT_H */
+#include <stdlib.h>
+int
main()
{
DIR *dir;
@@ -514,6 +532,8 @@ AC_TRY_RUN([
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
+#include <stdlib.h>
+int
main()
{
#ifdef HAVE_QUAD_T
@@ -583,6 +603,7 @@ AC_CACHE_VAL(bash_cv_getenv_redef,
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#include <stdlib.h>
#ifndef __STDC__
# ifndef const
# define const
@@ -598,6 +619,7 @@ getenv (name)
{
return "42";
}
+int
main()
{
char *s;
@@ -684,6 +706,11 @@ AC_DEFUN(BASH_FUNC_ULIMIT_MAXFDS,
[AC_MSG_CHECKING(whether ulimit can substitute for getdtablesize)
AC_CACHE_VAL(bash_cv_ulimit_maxfds,
[AC_TRY_RUN([
+#include <stdlib.h>
+#ifdef HAVE_ULIMIT_H
+#include <ulimit.h>
+#endif
+int
main()
{
long maxfds = ulimit(4, 0L);
@@ -707,7 +734,9 @@ AC_CACHE_VAL(bash_cv_getcwd_malloc,
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
+int
main()
{
char *xpwd;
@@ -757,12 +786,13 @@ AC_CACHE_VAL(bash_cv_fnm_extmatch,
[AC_TRY_RUN([
#include <fnmatch.h>
+int
main()
{
#ifdef FNM_EXTMATCH
- exit (0);
+ return (0);
#else
- exit (1);
+ return (1);
#endif
}
], bash_cv_fnm_extmatch=yes, bash_cv_fnm_extmatch=no,
@@ -786,7 +816,9 @@ AC_CACHE_VAL(bash_cv_func_sigsetjmp,
#include <sys/types.h>
#include <signal.h>
#include <setjmp.h>
+#include <stdlib.h>
+int
main()
{
#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
@@ -835,7 +867,10 @@ AC_CACHE_VAL(bash_cv_func_strcoll_broken,
#if defined (HAVE_LOCALE_H)
#include <locale.h>
#endif
+#include <string.h>
+#include <stdlib.h>
+int
main(c, v)
int c;
char *v[];
@@ -881,6 +916,7 @@ AC_CACHE_VAL(bash_cv_printf_a_format,
[AC_TRY_RUN([
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
int
main()
@@ -934,6 +970,7 @@ AC_CACHE_VAL(bash_cv_struct_stat_st_blocks,
#include <sys/stat.h>
],
[
+int
main()
{
static struct stat a;
@@ -1142,12 +1179,17 @@ fi
AC_DEFUN(BASH_STRUCT_TIMEVAL,
[AC_MSG_CHECKING(for struct timeval in sys/time.h and time.h)
AC_CACHE_VAL(bash_cv_struct_timeval,
-[
-AC_EGREP_HEADER(struct timeval, sys/time.h,
- bash_cv_struct_timeval=yes,
- AC_EGREP_HEADER(struct timeval, time.h,
- bash_cv_struct_timeval=yes,
- bash_cv_struct_timeval=no))
+[AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ ]],
+ [[static struct timeval x; x.tv_sec = x.tv_usec;]]
+ )],
+ bash_cv_struct_timeval=yes,
+ bash_cv_struct_timeval=no)
])
AC_MSG_RESULT($bash_cv_struct_timeval)
if test $bash_cv_struct_timeval = yes; then
@@ -1241,6 +1283,11 @@ AC_CACHE_VAL(bash_cv_pgrp_pipe,
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#ifdef HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+#include <stdlib.h>
+int
main()
{
# ifdef GETPGRP_VOID
@@ -1305,6 +1352,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers,
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
typedef RETSIGTYPE sigfunc();
@@ -1335,6 +1383,7 @@ int s;
nsigint++;
}
+int
main()
{
nsigint = 0;
@@ -1418,8 +1467,11 @@ AC_CACHE_VAL(bash_cv_sys_named_pipes,
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdio.h>
+#include <stdlib.h>
/* Add more tests in here as appropriate. */
+int
main()
{
int fd, err;
@@ -1651,11 +1703,13 @@ AC_CACHE_VAL(bash_cv_unusable_rtsigs,
[AC_TRY_RUN([
#include <sys/types.h>
#include <signal.h>
+#include <stdlib.h>
#ifndef NSIG
# define NSIG 64
#endif
+int
main ()
{
int n_sigs = 2 * NSIG;
@@ -1770,6 +1824,7 @@ bash_cv_wcwidth_broken,
#include <locale.h>
#include <wchar.h>
+int
main(c, v)
int c;
char **v;
@@ -1834,9 +1889,11 @@ AC_CACHE_VAL(ac_cv_rl_version,
[AC_TRY_RUN([
#include <stdio.h>
#include <readline/readline.h>
+#include <stdlib.h>
extern int rl_gnu_readline_p;
+int
main()
{
FILE *fp;
@@ -1926,7 +1983,9 @@ AC_CACHE_VAL(bash_cv_func_ctype_nonascii,
#endif
#include <stdio.h>
#include <ctype.h>
+#include <stdlib.h>
+int
main(c, v)
int c;
char *v[];
@@ -1969,10 +2028,12 @@ AC_CACHE_VAL(bash_cv_wcontinued_broken,
#include <sys/wait.h>
#include <unistd.h>
#include <errno.h>
+#include <stdlib.h>
#ifndef errno
extern int errno;
#endif
+int
main()
{
int x;
@@ -2023,2036 +2084,6 @@ AC_DEFUN([AM_PATH_LISPDIR],
AC_SUBST(lispdir)
])
-dnl
-dnl tests added for gettext
-dnl
-# codeset.m4 serial AM1 (gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_LANGINFO_CODESET],
-[
- AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset,
- [AC_TRY_LINK([#include <langinfo.h>],
- [char* cs = nl_langinfo(CODESET);],
- am_cv_langinfo_codeset=yes,
- am_cv_langinfo_codeset=no)
- ])
- if test $am_cv_langinfo_codeset = yes; then
- AC_DEFINE(HAVE_LANGINFO_CODESET, 1,
- [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
- fi
-])
-# gettext.m4 serial 20 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-dnl Macro to add for using GNU gettext.
-
-dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
-dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
-dnl default (if it is not specified or empty) is 'no-libtool'.
-dnl INTLSYMBOL should be 'external' for packages with no intl directory,
-dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
-dnl If INTLSYMBOL is 'use-libtool', then a libtool library
-dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
-dnl depending on --{enable,disable}-{shared,static} and on the presence of
-dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
-dnl $(top_builddir)/intl/libintl.a will be created.
-dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
-dnl implementations (in libc or libintl) without the ngettext() function
-dnl will be ignored. If NEEDSYMBOL is specified and is
-dnl 'need-formatstring-macros', then GNU gettext implementations that don't
-dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
-dnl INTLDIR is used to find the intl libraries. If empty,
-dnl the value `$(top_builddir)/intl/' is used.
-dnl
-dnl The result of the configuration is one of three cases:
-dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
-dnl and used.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 2) GNU gettext has been found in the system's C library.
-dnl Catalog format: GNU --> install in $(datadir)
-dnl Catalog extension: .mo after installation, .gmo in source tree
-dnl 3) No internationalization, always use English msgid.
-dnl Catalog format: none
-dnl Catalog extension: none
-dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
-dnl The use of .gmo is historical (it was needed to avoid overwriting the
-dnl GNU format catalogs when building on a platform with an X/Open gettext),
-dnl but we keep it in order not to force irrelevant filename changes on the
-dnl maintainers.
-dnl
-AC_DEFUN([AM_GNU_GETTEXT],
-[
- dnl Argument checking.
- ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
- [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
-])])])])])
- ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
- [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
-])])])])
- define(gt_included_intl, ifelse([$1], [external], [no], [yes]))
- define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], []))
-
- AC_REQUIRE([AM_PO_SUBDIRS])dnl
- ifelse(gt_included_intl, yes, [
- AC_REQUIRE([AM_INTL_SUBDIR])dnl
- ])
-
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- dnl Ideally we would do this search only after the
- dnl if test "$USE_NLS" = "yes"; then
- dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then
- dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
- dnl the configure script would need to contain the same shell code
- dnl again, outside any 'if'. There are two solutions:
- dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
- dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
- dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not
- dnl documented, we avoid it.
- ifelse(gt_included_intl, yes, , [
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
- ])
-
- dnl Set USE_NLS.
- AM_NLS
-
- ifelse(gt_included_intl, yes, [
- BUILD_INCLUDED_LIBINTL=no
- USE_INCLUDED_LIBINTL=no
- ])
- LIBINTL=
- LTLIBINTL=
- POSUB=
-
- dnl If we use NLS figure out what method
- if test "$USE_NLS" = "yes"; then
- gt_use_preinstalled_gnugettext=no
- ifelse(gt_included_intl, yes, [
- AC_MSG_CHECKING([whether included gettext is requested])
- AC_ARG_WITH(included-gettext,
- [ --with-included-gettext use the GNU gettext library included here],
- nls_cv_force_use_gnu_gettext=$withval,
- nls_cv_force_use_gnu_gettext=no)
- AC_MSG_RESULT($nls_cv_force_use_gnu_gettext)
-
- nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
- if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
- ])
- dnl User does not insist on using GNU NLS library. Figure out what
- dnl to use. If GNU gettext is available we use this. Else we have
- dnl to fall back to GNU NLS library.
-
- dnl Add a version number to the cache macros.
- define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1)))
- define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc])
- define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl])
-
- AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc,
- [AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern int *_nl_domain_bindings;],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings],
- gt_cv_func_gnugettext_libc=yes,
- gt_cv_func_gnugettext_libc=no)])
-
- if test "$gt_cv_func_gnugettext_libc" != "yes"; then
- dnl Sometimes libintl requires libiconv, so first search for libiconv.
- ifelse(gt_included_intl, yes, , [
- AM_ICONV_LINK
- ])
- dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
- dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
- dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
- dnl even if libiconv doesn't exist.
- AC_LIB_LINKFLAGS_BODY([intl])
- AC_CACHE_CHECK([for GNU gettext in libintl],
- gt_cv_func_gnugettext_libintl,
- [gt_save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $INCINTL"
- gt_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBINTL"
- dnl Now see whether libintl exists and does not depend on libiconv.
- AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias ();],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
- gt_cv_func_gnugettext_libintl=yes,
- gt_cv_func_gnugettext_libintl=no)
- dnl Now see whether libintl exists and depends on libiconv.
- if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <libintl.h>
-]ifelse([$2], [need-formatstring-macros],
-[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
-#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
-#endif
-changequote(,)dnl
-typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
-changequote([,])dnl
-], [])[extern int _nl_msg_cat_cntr;
-extern
-#ifdef __cplusplus
-"C"
-#endif
-const char *_nl_expand_alias ();],
- [bindtextdomain ("", "");
-return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)],
- [LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- gt_cv_func_gnugettext_libintl=yes
- ])
- fi
- CPPFLAGS="$gt_save_CPPFLAGS"
- LIBS="$gt_save_LIBS"])
- fi
-
- dnl If an already present or preinstalled GNU gettext() is found,
- dnl use it. But if this macro is used in GNU gettext, and GNU
- dnl gettext is already preinstalled in libintl, we update this
- dnl libintl. (Cf. the install rule in intl/Makefile.in.)
- if test "$gt_cv_func_gnugettext_libc" = "yes" \
- || { test "$gt_cv_func_gnugettext_libintl" = "yes" \
- && test "$PACKAGE" != gettext-runtime \
- && test "$PACKAGE" != gettext-tools; }; then
- gt_use_preinstalled_gnugettext=yes
- else
- dnl Reset the values set by searching for libintl.
- LIBINTL=
- LTLIBINTL=
- INCINTL=
- fi
-
- ifelse(gt_included_intl, yes, [
- if test "$gt_use_preinstalled_gnugettext" != "yes"; then
- dnl GNU gettext is not found in the C library.
- dnl Fall back on included GNU gettext library.
- nls_cv_use_gnu_gettext=yes
- fi
- fi
-
- if test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions used to generate GNU NLS library.
- BUILD_INCLUDED_LIBINTL=yes
- USE_INCLUDED_LIBINTL=yes
- LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV"
- LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV"
- LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
- fi
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- dnl Mark actions to use GNU gettext tools.
- CATOBJEXT=.gmo
- fi
- ])
-
- if test "$gt_use_preinstalled_gnugettext" = "yes" \
- || test "$nls_cv_use_gnu_gettext" = "yes"; then
- AC_DEFINE(ENABLE_NLS, 1,
- [Define to 1 if translation of program messages to the user's native language
- is requested.])
- else
- USE_NLS=no
- fi
- fi
-
- AC_MSG_CHECKING([whether to use NLS])
- AC_MSG_RESULT([$USE_NLS])
- if test "$USE_NLS" = "yes"; then
- AC_MSG_CHECKING([where the gettext function comes from])
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
- gt_source="external libintl"
- else
- gt_source="libc"
- fi
- else
- gt_source="included intl directory"
- fi
- AC_MSG_RESULT([$gt_source])
- fi
-
- if test "$USE_NLS" = "yes"; then
-
- if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext_libintl" = "yes"; then
- AC_MSG_CHECKING([how to link with libintl])
- AC_MSG_RESULT([$LIBINTL])
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
- fi
-
- dnl For backward compatibility. Some packages may be using this.
- AC_DEFINE(HAVE_GETTEXT, 1,
- [Define if the GNU gettext() function is already present or preinstalled.])
- AC_DEFINE(HAVE_DCGETTEXT, 1,
- [Define if the GNU dcgettext() function is already present or preinstalled.])
- fi
-
- dnl We need to process the po/ directory.
- POSUB=po
- fi
-
- ifelse(gt_included_intl, yes, [
- dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
- dnl to 'yes' because some of the testsuite requires it.
- if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
- BUILD_INCLUDED_LIBINTL=yes
- fi
-
- dnl Make all variables we use known to autoconf.
- AC_SUBST(BUILD_INCLUDED_LIBINTL)
- AC_SUBST(USE_INCLUDED_LIBINTL)
- AC_SUBST(CATOBJEXT)
-
- dnl For backward compatibility. Some configure.ins may be using this.
- nls_cv_header_intl=
- nls_cv_header_libgt=
-
- dnl For backward compatibility. Some Makefiles may be using this.
- DATADIRNAME=share
- AC_SUBST(DATADIRNAME)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INSTOBJEXT=.mo
- AC_SUBST(INSTOBJEXT)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- GENCAT=gencat
- AC_SUBST(GENCAT)
-
- dnl For backward compatibility. Some Makefiles may be using this.
- if test "$USE_INCLUDED_LIBINTL" = yes; then
- INTLOBJS="\$(GETTOBJS)"
- fi
- AC_SUBST(INTLOBJS)
-
- dnl Enable libtool support if the surrounding package wishes it.
- INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
- AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX)
- ])
-
- dnl For backward compatibility. Some Makefiles may be using this.
- INTLLIBS="$LIBINTL"
- AC_SUBST(INTLLIBS)
-
- dnl Make all documented variables known to autoconf.
- AC_SUBST(LIBINTL)
- AC_SUBST(LTLIBINTL)
- AC_SUBST(POSUB)
-])
-
-
-dnl Checks for all prerequisites of the intl subdirectory,
-dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
-dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
-AC_DEFUN([AM_INTL_SUBDIR],
-[
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_MKINSTALLDIRS])dnl
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
- AC_REQUIRE([AC_PROG_RANLIB])dnl
- AC_REQUIRE([AC_ISC_POSIX])dnl
- AC_REQUIRE([AC_HEADER_STDC])dnl
- AC_REQUIRE([AC_C_CONST])dnl
- AC_REQUIRE([AC_C_INLINE])dnl
- AC_REQUIRE([AC_TYPE_OFF_T])dnl
- AC_REQUIRE([AC_TYPE_SIZE_T])dnl
- AC_REQUIRE([AC_FUNC_ALLOCA])dnl
- AC_REQUIRE([AC_FUNC_MMAP])dnl
- AC_REQUIRE([jm_GLIBC21])dnl
- AC_REQUIRE([gt_INTDIV0])dnl
- AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl
- AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl
- AC_REQUIRE([gt_INTTYPES_PRI])dnl
-
- AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h])
- AC_CHECK_FUNCS([feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
-geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \
-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
-__fsetlocking])
-
- AM_ICONV
- AM_LANGINFO_CODESET
- if test $ac_cv_header_locale_h = yes; then
- AM_LC_MESSAGES
- fi
-
- dnl intl/plural.c is generated from intl/plural.y. It requires bison,
- dnl because plural.y uses bison specific features. It requires at least
- dnl bison-1.26 because earlier versions generate a plural.c that doesn't
- dnl compile.
- dnl bison is only needed for the maintainer (who touches plural.y). But in
- dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
- dnl the rule in general Makefile. Now, some people carelessly touch the
- dnl files or have a broken "make" program, hence the plural.c rule will
- dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
- dnl present or too old.
- AC_CHECK_PROGS([INTLBISON], [bison])
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
- else
- dnl Found it, now check the version.
- AC_MSG_CHECKING([version of bison])
-changequote(<<,>>)dnl
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
-changequote([,])dnl
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- AC_MSG_RESULT([$ac_prog_version])
- fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
- fi
-])
-
-
-dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
-AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
-# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-# Test for the GNU C Library, version 2.1 or newer.
-# From Bruno Haible.
-
-AC_DEFUN([jm_GLIBC21],
- [
- AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
- ac_cv_gnu_library_2_1,
- [AC_EGREP_CPP([Lucky GNU user],
- [
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
- ],
- ac_cv_gnu_library_2_1=yes,
- ac_cv_gnu_library_2_1=no)
- ]
- )
- AC_SUBST(GLIBC21)
- GLIBC21="$ac_cv_gnu_library_2_1"
- ]
-)
-# iconv.m4 serial AM4 (gettext-0.11.3)
-dnl Copyright (C) 2000-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
-[
- dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([iconv])
-])
-
-AC_DEFUN([AM_ICONV_LINK],
-[
- dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
- dnl those with the standalone portable GNU libiconv installed).
-
- dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
- dnl accordingly.
- AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
-
- dnl Add $INCICONV to CPPFLAGS before performing the following checks,
- dnl because if the user has installed libiconv and not disabled its use
- dnl via --without-libiconv-prefix, he wants to use it. The first
- dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
- am_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
-
- AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [
- am_cv_func_iconv="no, consider installing GNU libiconv"
- am_cv_lib_iconv=no
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_func_iconv=yes)
- if test "$am_cv_func_iconv" != yes; then
- am_save_LIBS="$LIBS"
- LIBS="$LIBS $LIBICONV"
- AC_TRY_LINK([#include <stdlib.h>
-#include <iconv.h>],
- [iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);],
- am_cv_lib_iconv=yes
- am_cv_func_iconv=yes)
- LIBS="$am_save_LIBS"
- fi
- ])
- if test "$am_cv_func_iconv" = yes; then
- AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.])
- fi
- if test "$am_cv_lib_iconv" = yes; then
- AC_MSG_CHECKING([how to link with libiconv])
- AC_MSG_RESULT([$LIBICONV])
- else
- dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
- dnl either.
- CPPFLAGS="$am_save_CPPFLAGS"
- LIBICONV=
- LTLIBICONV=
- fi
- AC_SUBST(LIBICONV)
- AC_SUBST(LTLIBICONV)
-])
-
-AC_DEFUN([AM_ICONV],
-[
- AM_ICONV_LINK
- if test "$am_cv_func_iconv" = yes; then
- AC_MSG_CHECKING([for iconv declaration])
- AC_CACHE_VAL(am_cv_proto_iconv, [
- AC_TRY_COMPILE([
-#include <stdlib.h>
-#include <iconv.h>
-extern
-#ifdef __cplusplus
-"C"
-#endif
-#if defined(__STDC__) || defined(__cplusplus)
-size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
-#else
-size_t iconv();
-#endif
-], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
- am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
- am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- AC_MSG_RESULT([$]{ac_t:-
- }[$]am_cv_proto_iconv)
- AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
- [Define as const if the declaration of iconv() needs const.])
- fi
-])
-# intdiv0.m4 serial 1 (gettext-0.11.3)
-dnl Copyright (C) 2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-AC_DEFUN([gt_INTDIV0],
-[
- AC_REQUIRE([AC_PROG_CC])dnl
- AC_REQUIRE([AC_CANONICAL_HOST])dnl
-
- AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
- gt_cv_int_divbyzero_sigfpe,
- [
- AC_TRY_RUN([
-#include <stdlib.h>
-#include <signal.h>
-
-static void
-#ifdef __cplusplus
-sigfpe_handler (int sig)
-#else
-sigfpe_handler (sig) int sig;
-#endif
-{
- /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
- exit (sig != SIGFPE);
-}
-
-int x = 1;
-int y = 0;
-int z;
-int nan;
-
-int main ()
-{
- signal (SIGFPE, sigfpe_handler);
-/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
-#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
- signal (SIGTRAP, sigfpe_handler);
-#endif
-/* Linux/SPARC yields signal SIGILL. */
-#if defined (__sparc__) && defined (__linux__)
- signal (SIGILL, sigfpe_handler);
-#endif
-
- z = x / y;
- nan = y / y;
- exit (1);
-}
-], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no,
- [
- # Guess based on the CPU.
- case "$host_cpu" in
- alpha* | i[34567]86 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
- esac
- ])
- ])
- case "$gt_cv_int_divbyzero_sigfpe" in
- *yes) value=1;;
- *) value=0;;
- esac
- AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value,
- [Define if integer division by zero raises signal SIGFPE.])
-])
-# inttypes.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with
-# <sys/types.h>.
-
-AC_DEFUN([gt_HEADER_INTTYPES_H],
-[
- AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h,
- [
- AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no)
- ])
- if test $gt_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1,
- [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.])
- fi
-])
-# inttypes_h.m4 serial 5 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([jm_AC_HEADER_INTTYPES_H],
-[
- AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <inttypes.h>],
- [uintmax_t i = (uintmax_t) -1;],
- jm_ac_cv_header_inttypes_h=yes,
- jm_ac_cv_header_inttypes_h=no)])
- if test $jm_ac_cv_header_inttypes_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1,
- [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-# inttypes-pri.m4 serial 1 (gettext-0.11.4)
-dnl Copyright (C) 1997-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
-# macros to non-string values. This is the case on AIX 4.3.3.
-
-AC_DEFUN([gt_INTTYPES_PRI],
-[
- AC_REQUIRE([gt_HEADER_INTTYPES_H])
- if test $gt_cv_header_inttypes_h = yes; then
- AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
- gt_cv_inttypes_pri_broken,
- [
- AC_TRY_COMPILE([#include <inttypes.h>
-#ifdef PRId32
-char *p = PRId32;
-#endif
-], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes)
- ])
- fi
- if test "$gt_cv_inttypes_pri_broken" = yes; then
- AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1,
- [Define if <inttypes.h> exists and defines unusable PRI* macros.])
- fi
-])
-# isc-posix.m4 serial 2 (gettext-0.11.2)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-# This file is not needed with autoconf-2.53 and newer. Remove it in 2005.
-
-# This test replaces the one in autoconf.
-# Currently this macro should have the same name as the autoconf macro
-# because gettext's gettext.m4 (distributed in the automake package)
-# still uses it. Otherwise, the use in gettext.m4 makes autoheader
-# give these diagnostics:
-# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
-# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
-
-undefine([AC_ISC_POSIX])
-
-AC_DEFUN([AC_ISC_POSIX],
- [
- dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
- AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
- ]
-)
-# lcmessage.m4 serial 3 (gettext-0.11.3)
-dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
-
-# Check whether LC_MESSAGES is available in <locale.h>.
-
-AC_DEFUN([AM_LC_MESSAGES],
-[
- AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES,
- [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES],
- am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)])
- if test $am_cv_val_LC_MESSAGES = yes; then
- AC_DEFINE(HAVE_LC_MESSAGES, 1,
- [Define if your <locale.h> file defines LC_MESSAGES.])
- fi
-])
-# lib-ld.m4 serial 2 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
-
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
-AC_DEFUN([AC_LIB_PROG_LD_GNU],
-[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld,
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
- acl_cv_prog_gnu_ld=yes
-else
- acl_cv_prog_gnu_ld=no
-fi])
-with_gnu_ld=$acl_cv_prog_gnu_ld
-])
-
-dnl From libtool-1.4. Sets the variable LD.
-AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH(gnu-ld,
-[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
-AC_REQUIRE([AC_CANONICAL_HOST])dnl
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- AC_MSG_CHECKING([for ld used by GCC])
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [[\\/]* | [A-Za-z]:[\\/]*)]
- [re_direlt='/[^/][^/]*/\.\./']
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
-elif test "$with_gnu_ld" = yes; then
- AC_MSG_CHECKING([for GNU ld])
-else
- AC_MSG_CHECKING([for non-GNU ld])
-fi
-AC_CACHE_VAL(acl_cv_path_LD,
-[if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
- fi
- done
- IFS="$ac_save_ifs"
-else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
-fi])
-LD="$acl_cv_path_LD"
-if test -n "$LD"; then
- AC_MSG_RESULT($LD)
-else
- AC_MSG_RESULT(no)
-fi
-test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH])
-AC_LIB_PROG_LD_GNU
-])
-# lib-link.m4 serial 4 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
-dnl augments the CPPFLAGS variable.
-AC_DEFUN([AC_LIB_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
- ac_cv_lib[]Name[]_libs="$LIB[]NAME"
- ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
- ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
- ])
- LIB[]NAME="$ac_cv_lib[]Name[]_libs"
- LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
- INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
- dnl results of this search when this library appears as a dependency.
- HAVE_LIB[]NAME=yes
- undefine([Name])
- undefine([NAME])
-])
-
-dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
-dnl searches for libname and the libraries corresponding to explicit and
-dnl implicit dependencies, together with the specified include files and
-dnl the ability to compile and link the specified testcode. If found, it
-dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
-dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and
-dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
-dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
-AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
-[
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- AC_REQUIRE([AC_LIB_RPATH])
- define([Name],[translit([$1],[./-], [___])])
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
-
- dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
- dnl accordingly.
- AC_LIB_LINKFLAGS_BODY([$1], [$2])
-
- dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
- dnl because if the user has installed lib[]Name and not disabled its use
- dnl via --without-lib[]Name-prefix, he wants to use it.
- ac_save_CPPFLAGS="$CPPFLAGS"
- AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
-
- AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
- ac_save_LIBS="$LIBS"
- LIBS="$LIBS $LIB[]NAME"
- AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
- LIBS="$ac_save_LIBS"
- ])
- if test "$ac_cv_lib[]Name" = yes; then
- HAVE_LIB[]NAME=yes
- AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.])
- AC_MSG_CHECKING([how to link with lib[]$1])
- AC_MSG_RESULT([$LIB[]NAME])
- else
- HAVE_LIB[]NAME=no
- dnl If $LIB[]NAME didn't lead to a usable library, we don't need
- dnl $INC[]NAME either.
- CPPFLAGS="$ac_save_CPPFLAGS"
- LIB[]NAME=
- LTLIB[]NAME=
- fi
- AC_SUBST([HAVE_LIB]NAME)
- AC_SUBST([LIB]NAME)
- AC_SUBST([LTLIB]NAME)
- undefine([Name])
- undefine([NAME])
-])
-
-dnl Determine the platform dependent parameters needed to use rpath:
-dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator,
-dnl hardcode_direct, hardcode_minus_L.
-AC_DEFUN([AC_LIB_RPATH],
-[
- AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
- AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
- AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
- AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
- AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [
- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
- . ./conftest.sh
- rm -f ./conftest.sh
- acl_cv_rpath=done
- ])
- wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
- dnl Determine whether the user wants rpath handling at all.
- AC_ARG_ENABLE(rpath,
- [ --disable-rpath do not hardcode runtime library paths],
- :, enable_rpath=yes)
-])
-
-dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
-dnl the libraries corresponding to explicit and implicit dependencies.
-dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
-AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
-[
- define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
- [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib$1-prefix],
-[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
- --without-lib$1-prefix don't search for lib$1 in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- dnl Search the library and its dependencies in $additional_libdir and
- dnl $LDFLAGS. Using breadth-first-seach.
- LIB[]NAME=
- LTLIB[]NAME=
- INC[]NAME=
- rpathdirs=
- ltrpathdirs=
- names_already_handled=
- names_next_round='$1 $2'
- while test -n "$names_next_round"; do
- names_this_round="$names_next_round"
- names_next_round=
- for name in $names_this_round; do
- already_handled=
- for n in $names_already_handled; do
- if test "$n" = "$name"; then
- already_handled=yes
- break
- fi
- done
- if test -z "$already_handled"; then
- names_already_handled="$names_already_handled $name"
- dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
- dnl or AC_LIB_HAVE_LINKFLAGS call.
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
- eval value=\"\$HAVE_LIB$uppername\"
- if test -n "$value"; then
- if test "$value" = yes; then
- eval value=\"\$LIB$uppername\"
- test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
- eval value=\"\$LTLIB$uppername\"
- test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
- else
- dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
- dnl that this library doesn't exist. So just drop it.
- :
- fi
- else
- dnl Search the library lib$name in $additional_libdir and $LDFLAGS
- dnl and the already constructed $LIBNAME/$LTLIBNAME.
- found_dir=
- found_la=
- found_so=
- found_a=
- if test $use_additional = yes; then
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- fi
- fi
- fi
- if test "X$found_dir" = "X"; then
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- case "$x" in
- -L*)
- dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
- found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- fi
- fi
- ;;
- esac
- if test "X$found_dir" != "X"; then
- break
- fi
- done
- fi
- if test "X$found_dir" != "X"; then
- dnl Found the library.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
- if test "X$found_so" != "X"; then
- dnl Linking with a shared library. We attempt to hardcode its
- dnl directory into the executable's runpath, unless it's the
- dnl standard /usr/lib.
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
- dnl No hardcoding is needed.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $found_dir"
- fi
- dnl The hardcoding into $LIBNAME is system dependent.
- if test "$hardcode_direct" = yes; then
- dnl Using DIR/libNAME.so during linking hardcodes DIR into the
- dnl resulting binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
- dnl Use an explicit option to hardcode DIR into the resulting
- dnl binary.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $found_dir"
- fi
- else
- dnl Rely on "-L$found_dir".
- dnl But don't add it if it's already contained in the LDFLAGS
- dnl or the already constructed $LIBNAME
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$found_dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
- fi
- if test "$hardcode_minus_L" != no; then
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
- else
- dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH
- dnl here, because this doesn't fit in flags passed to the
- dnl compiler. So give up. No hardcoding. This affects only
- dnl very old systems.
- dnl FIXME: Not sure whether we should use
- dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
- dnl here.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- fi
- else
- if test "X$found_a" != "X"; then
- dnl Linking with a static library.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
- else
- dnl We shouldn't come here, but anyway it's good to have a
- dnl fallback.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
- fi
- fi
- dnl Assume the include files are nearby.
- additional_includedir=
- case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
- additional_includedir="$basedir/include"
- ;;
- esac
- if test "X$additional_includedir" != "X"; then
- dnl Potentially add $additional_includedir to $INCNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's /usr/local/include and we are using GCC on Linux,
- dnl 3. if it's already present in $CPPFLAGS or the already
- dnl constructed $INCNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- for x in $CPPFLAGS $INC[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $INCNAME.
- INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- fi
- dnl Look for dependencies.
- if test -n "$found_la"; then
- dnl Read the .la file. It defines the variables
- dnl dlname, library_names, old_library, dependency_libs, current,
- dnl age, revision, installed, dlopen, dlpreopen, libdir.
- save_libdir="$libdir"
- case "$found_la" in
- */* | *\\*) . "$found_la" ;;
- *) . "./$found_la" ;;
- esac
- libdir="$save_libdir"
- dnl We use only dependency_libs.
- for dep in $dependency_libs; do
- case "$dep" in
- -L*)
- additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 3. if it's already present in $LDFLAGS or the already
- dnl constructed $LIBNAME,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- haveit=
- for x in $LDFLAGS $LIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LIBNAME.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- haveit=
- for x in $LDFLAGS $LTLIB[]NAME; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LTLIBNAME.
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- ;;
- -R*)
- dir=`echo "X$dep" | sed -e 's/^X-R//'`
- if test "$enable_rpath" != no; then
- dnl Potentially add DIR to rpathdirs.
- dnl The rpathdirs will be appended to $LIBNAME at the end.
- haveit=
- for x in $rpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- rpathdirs="$rpathdirs $dir"
- fi
- dnl Potentially add DIR to ltrpathdirs.
- dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
- haveit=
- for x in $ltrpathdirs; do
- if test "X$x" = "X$dir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- ltrpathdirs="$ltrpathdirs $dir"
- fi
- fi
- ;;
- -l*)
- dnl Handle this in the next round.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
- ;;
- *.la)
- dnl Handle this in the next round. Throw away the .la's
- dnl directory; it is already contained in a preceding -L
- dnl option.
- names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
- ;;
- *)
- dnl Most likely an immediate library name.
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
- ;;
- esac
- done
- fi
- else
- dnl Didn't find the library; assume it is in the system directories
- dnl known to the linker and runtime loader. (All the system
- dnl directories known to the linker should also be known to the
- dnl runtime loader, otherwise the system is severely misconfigured.)
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
- fi
- fi
- fi
- done
- done
- if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
- dnl Weird platform: only the last -rpath option counts, the user must
- dnl pass all path elements in one option. We can arrange that for a
- dnl single library, but not when more than one $LIBNAMEs are used.
- alldirs=
- for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
- done
- dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl.
- acl_save_libdir="$libdir"
- libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- else
- dnl The -rpath options are cumulative.
- for found_dir in $rpathdirs; do
- acl_save_libdir="$libdir"
- libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
- libdir="$acl_save_libdir"
- LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
- done
- fi
- fi
- if test "X$ltrpathdirs" != "X"; then
- dnl When using libtool, the option that works for both libraries and
- dnl executables is -R. The -R options are cumulative.
- for found_dir in $ltrpathdirs; do
- LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
- done
- fi
-])
-
-dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
-dnl unless already present in VAR.
-dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
-dnl contains two or three consecutive elements that belong together.
-AC_DEFUN([AC_LIB_APPENDTOVAR],
-[
- for element in [$2]; do
- haveit=
- for x in $[$1]; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X$element"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- [$1]="${[$1]}${[$1]:+ }$element"
- fi
- done
-])
-# lib-prefix.m4 serial 2 (gettext-0.12)
-dnl Copyright (C) 2001-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Bruno Haible.
-
-dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and
-dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't
-dnl require excessive bracketing.
-ifdef([AC_HELP_STRING],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])],
-[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])])
-
-dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
-dnl to access previously installed libraries. The basic assumption is that
-dnl a user will want packages to use other packages he previously installed
-dnl with the same --prefix option.
-dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
-dnl libraries, but is otherwise very convenient.
-AC_DEFUN([AC_LIB_PREFIX],
-[
- AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
- AC_REQUIRE([AC_PROG_CC])
- AC_REQUIRE([AC_CANONICAL_HOST])
- AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
- dnl By default, look in $includedir and $libdir.
- use_additional=yes
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- AC_LIB_ARG_WITH([lib-prefix],
-[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
- --without-lib-prefix don't search for libraries in includedir and libdir],
-[
- if test "X$withval" = "Xno"; then
- use_additional=no
- else
- if test "X$withval" = "X"; then
- AC_LIB_WITH_FINAL_PREFIX([
- eval additional_includedir=\"$includedir\"
- eval additional_libdir=\"$libdir\"
- ])
- else
- additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
- fi
- fi
-])
- if test $use_additional = yes; then
- dnl Potentially add $additional_includedir to $CPPFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/include,
- dnl 2. if it's already present in $CPPFLAGS,
- dnl 3. if it's /usr/local/include and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_includedir" != "X/usr/include"; then
- haveit=
- for x in $CPPFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-I$additional_includedir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_includedir" = "X/usr/local/include"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_includedir"; then
- dnl Really add $additional_includedir to $CPPFLAGS.
- CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
- fi
- fi
- fi
- fi
- dnl Potentially add $additional_libdir to $LDFLAGS.
- dnl But don't add it
- dnl 1. if it's the standard /usr/lib,
- dnl 2. if it's already present in $LDFLAGS,
- dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
- dnl 4. if it doesn't exist as a directory.
- if test "X$additional_libdir" != "X/usr/lib"; then
- haveit=
- for x in $LDFLAGS; do
- AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
- if test "X$x" = "X-L$additional_libdir"; then
- haveit=yes
- break
- fi
- done
- if test -z "$haveit"; then
- if test "X$additional_libdir" = "X/usr/local/lib"; then
- if test -n "$GCC"; then
- case $host_os in
- linux*) haveit=yes;;
- esac
- fi
- fi
- if test -z "$haveit"; then
- if test -d "$additional_libdir"; then
- dnl Really add $additional_libdir to $LDFLAGS.
- LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
- fi
- fi
- fi
- fi
- fi
-])
-
-dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
-dnl acl_final_exec_prefix, containing the values to which $prefix and
-dnl $exec_prefix will expand at the end of the configure script.
-AC_DEFUN([AC_LIB_PREPARE_PREFIX],
-[
- dnl Unfortunately, prefix and exec_prefix get only finally determined
- dnl at the end of configure.
- if test "X$prefix" = "XNONE"; then
- acl_final_prefix="$ac_default_prefix"
- else
- acl_final_prefix="$prefix"
- fi
- if test "X$exec_prefix" = "XNONE"; then
- acl_final_exec_prefix='${prefix}'
- else
- acl_final_exec_prefix="$exec_prefix"
- fi
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
- prefix="$acl_save_prefix"
-])
-
-dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
-dnl variables prefix and exec_prefix bound to the values they will have
-dnl at the end of the configure script.
-AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
-[
- acl_save_prefix="$prefix"
- prefix="$acl_final_prefix"
- acl_save_exec_prefix="$exec_prefix"
- exec_prefix="$acl_final_exec_prefix"
- $1
- exec_prefix="$acl_save_exec_prefix"
- prefix="$acl_save_prefix"
-])
-# nls.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-AC_DEFUN([AM_NLS],
-[
- AC_MSG_CHECKING([whether NLS is requested])
- dnl Default is enabled NLS
- AC_ARG_ENABLE(nls,
- [ --disable-nls do not use Native Language Support],
- USE_NLS=$enableval, USE_NLS=yes)
- AC_MSG_RESULT($USE_NLS)
- AC_SUBST(USE_NLS)
-])
-
-AC_DEFUN([AM_MKINSTALLDIRS],
-[
- dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly
- dnl find the mkinstalldirs script in another subdir but $(top_srcdir).
- dnl Try to locate it.
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- case "$ac_aux_dir" in
- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
- esac
- fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
- fi
- AC_SUBST(MKINSTALLDIRS)
-])
-# po.m4 serial 1 (gettext-0.12)
-dnl Copyright (C) 1995-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
-dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
-
-dnl Checks for all prerequisites of the po subdirectory.
-AC_DEFUN([AM_PO_SUBDIRS],
-[
- AC_REQUIRE([AC_PROG_MAKE_SET])dnl
- AC_REQUIRE([AC_PROG_INSTALL])dnl
- AC_REQUIRE([AM_MKINSTALLDIRS])dnl
- AC_REQUIRE([AM_NLS])dnl
-
- dnl Perform the following tests also if --disable-nls has been given,
- dnl because they are needed for "make dist" to work.
-
- dnl Search for GNU msgfmt in the PATH.
- dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
- dnl The second test excludes FreeBSD msgfmt.
- AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
- [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
- (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT)
-
- dnl Search for GNU xgettext 0.12 or newer in the PATH.
- dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
- dnl The second test excludes FreeBSD xgettext.
- AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
- [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
- (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
- :)
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
-
- dnl Search for GNU msgmerge 0.11 or newer in the PATH.
- AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
- [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :)
-
- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
- dnl Test whether we really found GNU msgfmt.
- if test "$GMSGFMT" != ":"; then
- dnl If it is no GNU msgfmt we define it as : so that the
- dnl Makefiles still can work.
- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
- AC_MSG_RESULT(
- [found $GMSGFMT program is not GNU msgfmt; ignore it])
- GMSGFMT=":"
- fi
- fi
-
- dnl This could go away some day; the PATH_PROG_WITH_TEST already does it.
- dnl Test whether we really found GNU xgettext.
- if test "$XGETTEXT" != ":"; then
- dnl If it is no GNU xgettext we define it as : so that the
- dnl Makefiles still can work.
- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- AC_MSG_RESULT(
- [found xgettext program is not GNU xgettext; ignore it])
- XGETTEXT=":"
- fi
- dnl Remove leftover from FreeBSD xgettext call.
- rm -f messages.po
- fi
-
- AC_OUTPUT_COMMANDS([
- for ac_file in $CONFIG_FILES; do
- # Support "outfile[:infile[:infile...]]"
- case "$ac_file" in
- *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
- esac
- # PO directories have a Makefile.in generated from Makefile.in.in.
- case "$ac_file" in */Makefile.in)
- # Adjust a relative srcdir.
- ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
- ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
- # In autoconf-2.13 it is called $ac_given_srcdir.
- # In autoconf-2.50 it is called $srcdir.
- test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
- case "$ac_given_srcdir" in
- .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
- /*) top_srcdir="$ac_given_srcdir" ;;
- *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
- esac
- if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
- rm -f "$ac_dir/POTFILES"
- test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
- POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
- # on $ac_dir but don't depend on user-specified configuration
- # parameters.
- if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
- # The LINGUAS file contains the set of available languages.
- if test -n "$OBSOLETE_ALL_LINGUAS"; then
- test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
- fi
- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
- POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
- else
- # The set of available languages was given in configure.in.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
- fi
- case "$ac_given_srcdir" in
- .) srcdirpre= ;;
- *) srcdirpre='$(srcdir)/' ;;
- esac
- POFILES=
- GMOFILES=
- UPDATEPOFILES=
- DUMMYPOFILES=
- for lang in $ALL_LINGUAS; do
- POFILES="$POFILES $srcdirpre$lang.po"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
- UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
- DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
- done
- # CATALOGS depends on both $ac_dir and the user's LINGUAS
- # environment variable.
- INST_LINGUAS=
- if test -n "$ALL_LINGUAS"; then
- for presentlang in $ALL_LINGUAS; do
- useit=no
- if test "%UNSET%" != "$LINGUAS"; then
- desiredlanguages="$LINGUAS"
- else
- desiredlanguages="$ALL_LINGUAS"
- fi
- for desiredlang in $desiredlanguages; do
- # Use the presentlang catalog if desiredlang is
- # a. equal to presentlang, or
- # b. a variant of presentlang (because in this case,
- # presentlang can be used as a fallback for messages
- # which are not translated in the desiredlang catalog).
- case "$desiredlang" in
- "$presentlang"*) useit=yes;;
- esac
- done
- if test $useit = yes; then
- INST_LINGUAS="$INST_LINGUAS $presentlang"
- fi
- done
- fi
- CATALOGS=
- if test -n "$INST_LINGUAS"; then
- for lang in $INST_LINGUAS; do
- CATALOGS="$CATALOGS $lang.gmo"
- done
- fi
- test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
- for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
- if test -f "$f"; then
- case "$f" in
- *.orig | *.bak | *~) ;;
- *) cat "$f" >> "$ac_dir/Makefile" ;;
- esac
- fi
- done
- fi
- ;;
- esac
- done],
- [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
- # from automake.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
- # Capture the value of LINGUAS because we need it to compute CATALOGS.
- LINGUAS="${LINGUAS-%UNSET%}"
- ])
-])
-# progtest.m4 serial 3 (gettext-0.12)
-dnl Copyright (C) 1996-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-dnl
-dnl This file can can be used in projects which are not available under
-dnl the GNU General Public License or the GNU Library General Public
-dnl License but which still want to provide support for the GNU gettext
-dnl functionality.
-dnl Please note that the actual code of the GNU gettext library is covered
-dnl by the GNU Library General Public License, and the rest of the GNU
-dnl gettext package package is covered by the GNU General Public License.
-dnl They are *not* in the public domain.
-
-dnl Authors:
-dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-# Search path for a program which passes the given test.
-
-dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
-dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
-AC_DEFUN([AM_PATH_PROG_WITH_TEST],
-[
-# Prepare PATH_SEPARATOR.
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-
-# Find out how to test for executable files. Don't use a zero-byte file,
-# as systems may use methods other than mode bits to determine executability.
-cat >conf$$.file <<_ASEOF
-#! /bin/sh
-exit 0
-_ASEOF
-chmod +x conf$$.file
-if test -x conf$$.file >/dev/null 2>&1; then
- ac_executable_p="test -x"
-else
- ac_executable_p="test -f"
-fi
-rm -f conf$$.file
-
-# Extract the first word of "$2", so it can be a program name with args.
-set dummy $2; ac_word=[$]2
-AC_MSG_CHECKING([for $ac_word])
-AC_CACHE_VAL(ac_cv_path_$1,
-[case "[$]$1" in
- [[\\/]]* | ?:[[\\/]]*)
- ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
- ;;
- *)
- ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
- for ac_dir in ifelse([$5], , $PATH, [$5]); do
- IFS="$ac_save_IFS"
- test -z "$ac_dir" && ac_dir=.
- for ac_exec_ext in '' $ac_executable_extensions; do
- if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- if [$3]; then
- ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
- break 2
- fi
- fi
- done
- done
- IFS="$ac_save_IFS"
-dnl If no 4th arg is given, leave the cache variable unset,
-dnl so AC_PATH_PROGS will keep looking.
-ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
-])dnl
- ;;
-esac])dnl
-$1="$ac_cv_path_$1"
-if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
- AC_MSG_RESULT([$]$1)
-else
- AC_MSG_RESULT(no)
-fi
-AC_SUBST($1)dnl
-])
-# stdint_h.m4 serial 3 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
-# doesn't clash with <sys/types.h>, and declares uintmax_t.
-
-AC_DEFUN([jm_AC_HEADER_STDINT_H],
-[
- AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h,
- [AC_TRY_COMPILE(
- [#include <sys/types.h>
-#include <stdint.h>],
- [uintmax_t i = (uintmax_t) -1;],
- jm_ac_cv_header_stdint_h=yes,
- jm_ac_cv_header_stdint_h=no)])
- if test $jm_ac_cv_header_stdint_h = yes; then
- AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1,
- [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
- and declares uintmax_t. ])
- fi
-])
-# uintmax_t.m4 serial 7 (gettext-0.12)
-dnl Copyright (C) 1997-2003 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-AC_PREREQ(2.13)
-
-# Define uintmax_t to 'unsigned long' or 'unsigned long long'
-# if it is not already defined in <stdint.h> or <inttypes.h>.
-
-AC_DEFUN([jm_AC_TYPE_UINTMAX_T],
-[
- AC_REQUIRE([jm_AC_HEADER_INTTYPES_H])
- AC_REQUIRE([jm_AC_HEADER_STDINT_H])
- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
- AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG])
- test $ac_cv_type_unsigned_long_long = yes \
- && ac_type='unsigned long long' \
- || ac_type='unsigned long'
- AC_DEFINE_UNQUOTED(uintmax_t, $ac_type,
- [Define to unsigned long or unsigned long long
- if <stdint.h> and <inttypes.h> don't define.])
- else
- AC_DEFINE(HAVE_UINTMAX_T, 1,
- [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
- fi
-])
-# ulonglong.m4 serial 2 (fileutils-4.0.32, gettext-0.10.40)
-dnl Copyright (C) 1999-2002 Free Software Foundation, Inc.
-dnl This file is free software, distributed under the terms of the GNU
-dnl General Public License. As a special exception to the GNU General
-dnl Public License, this file may be distributed as part of a program
-dnl that contains a configuration script generated by Autoconf, under
-dnl the same distribution terms as the rest of that program.
-
-dnl From Paul Eggert.
-
-AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG],
-[
- AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long,
- [AC_TRY_LINK([unsigned long long ull = 1; int i = 63;],
- [unsigned long long ullmax = (unsigned long long) -1;
- return ull << i | ull >> i | ullmax / ull | ullmax % ull;],
- ac_cv_type_unsigned_long_long=yes,
- ac_cv_type_unsigned_long_long=no)])
- if test $ac_cv_type_unsigned_long_long = yes; then
- AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
- [Define if you have the unsigned long long type.])
- fi
-])
-
dnl From gnulib
AC_DEFUN([BASH_FUNC_FPURGE],
[
@@ -4068,7 +2099,9 @@ AC_DEFUN([BASH_FUNC_SNPRINTF],
AC_CACHE_CHECK([for standard-conformant snprintf], [bash_cv_func_snprintf],
[AC_TRY_RUN([
#include <stdio.h>
+#include <stdlib.h>
+int
main()
{
int n;
@@ -4125,6 +2158,7 @@ foo(format, va_alist)
return n;
}
+int
main()
{
int n;
@@ -4154,6 +2188,7 @@ AC_CACHE_VAL(bash_cv_wexitstatus_offset,
#include <sys/wait.h>
+int
main(c, v)
int c;
char **v;
@@ -4172,7 +2207,7 @@ main(c, v)
exit (255);
/* crack s */
- for (i = 0; i < (sizeof(s) - 8); i++)
+ for (i = 0; i < (sizeof(s) * 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
@@ -4195,7 +2230,12 @@ AC_DEFINE_UNQUOTED([WEXITSTATUS_OFFSET], [$bash_cv_wexitstatus_offset], [Offset
AC_DEFUN([BASH_FUNC_SBRK],
[
- AC_CHECK_FUNCS_ONCE([sbrk])
+ AC_MSG_CHECKING([for sbrk])
+ AC_CACHE_VAL(ac_cv_func_sbrk,
+ [AC_TRY_LINK([#include <unistd.h>],
+ [ void *x = sbrk (4096); ],
+ ac_cv_func_sbrk=yes, ac_cv_func_sbrk=no)])
+ AC_MSG_RESULT($ac_cv_func_sbrk)
if test X$ac_cv_func_sbrk = Xyes; then
AC_CACHE_CHECK([for working sbrk], [bash_cv_func_sbrk],
[AC_TRY_RUN([
@@ -4218,8 +2258,8 @@ main(int c, char **v)
ac_cv_func_sbrk=no
fi
fi
- if test $ac_cv_func_sbrk = no; then
- AC_DEFINE(HAVE_SBRK, 0,
+ if test $ac_cv_func_sbrk = yes; then
+ AC_DEFINE(HAVE_SBRK, 1,
[Define if you have a working sbrk function.])
fi
])
@@ -4242,7 +2282,7 @@ unsigned char string[4] = { '\xc3', '\xa4', '\0' };
int
main (int c, char **v)
{
- setlocale (LC_ALL, "de_DE.UTF-8");
+ setlocale (LC_ALL, "en_US.UTF-8");
if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
exit (0);
exit (1);
diff --git a/alias.c b/alias.c
index 74ae8700..cd5e99b7 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -48,17 +48,17 @@
#define ALIAS_HASH_BUCKETS 64 /* must be power of two */
-typedef int sh_alias_map_func_t __P((alias_t *));
+typedef int sh_alias_map_func_t PARAMS((alias_t *));
-static void free_alias_data __P((PTR_T));
-static alias_t **map_over_aliases __P((sh_alias_map_func_t *));
-static void sort_aliases __P((alias_t **));
-static int qsort_alias_compare __P((alias_t **, alias_t **));
+static void free_alias_data PARAMS((PTR_T));
+static alias_t **map_over_aliases PARAMS((sh_alias_map_func_t *));
+static void sort_aliases PARAMS((alias_t **));
+static int qsort_alias_compare PARAMS((alias_t **, alias_t **));
#if defined (READLINE)
-static int skipquotes __P((char *, int));
-static int skipws __P((char *, int));
-static int rd_token __P((char *, int));
+static int skipquotes PARAMS((char *, int));
+static int skipws PARAMS((char *, int));
+static int rd_token PARAMS((char *, int));
#endif
/* Non-zero means expand all words on the line. Otherwise, expand
@@ -127,9 +127,12 @@ add_alias (name, value)
free (temp->value);
temp->value = savestring (value);
temp->flags &= ~AL_EXPANDNEXT;
- n = value[strlen (value) - 1];
- if (n == ' ' || n == '\t')
- temp->flags |= AL_EXPANDNEXT;
+ if (value[0])
+ {
+ n = value[strlen (value) - 1];
+ if (n == ' ' || n == '\t')
+ temp->flags |= AL_EXPANDNEXT;
+ }
}
else
{
@@ -138,9 +141,12 @@ add_alias (name, value)
temp->value = savestring (value);
temp->flags = 0;
- n = value[strlen (value) - 1];
- if (n == ' ' || n == '\t')
- temp->flags |= AL_EXPANDNEXT;
+ if (value[0])
+ {
+ n = value[strlen (value) - 1];
+ if (n == ' ' || n == '\t')
+ temp->flags |= AL_EXPANDNEXT;
+ }
elt = hash_insert (savestring (name), aliases, HASH_NOSRCH);
elt->data = temp;
diff --git a/alias.h b/alias.h
index 87174a32..4e2d67c0 100644
--- a/alias.h
+++ b/alias.h
@@ -1,6 +1,6 @@
/* alias.h -- structure definitions. */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -38,36 +38,36 @@ typedef struct alias {
/* The list of known aliases. */
extern HASH_TABLE *aliases;
-extern void initialize_aliases __P((void));
+extern void initialize_aliases PARAMS((void));
/* Scan the list of aliases looking for one with NAME. Return NULL
if the alias doesn't exist, else a pointer to the alias. */
-extern alias_t *find_alias __P((char *));
+extern alias_t *find_alias PARAMS((char *));
/* Return the value of the alias for NAME, or NULL if there is none. */
-extern char *get_alias_value __P((char *));
+extern char *get_alias_value PARAMS((char *));
/* Make a new alias from NAME and VALUE. If NAME can be found,
then replace its value. */
-extern void add_alias __P((char *, char *));
+extern void add_alias PARAMS((char *, char *));
/* Remove the alias with name NAME from the alias list. Returns
the index of the removed alias, or -1 if the alias didn't exist. */
-extern int remove_alias __P((char *));
+extern int remove_alias PARAMS((char *));
/* Remove all aliases. */
-extern void delete_all_aliases __P((void));
+extern void delete_all_aliases PARAMS((void));
/* Return an array of all defined aliases. */
-extern alias_t **all_aliases __P((void));
+extern alias_t **all_aliases PARAMS((void));
/* Expand a single word for aliases. */
-extern char *alias_expand_word __P((char *));
+extern char *alias_expand_word PARAMS((char *));
/* Return a new line, with any aliases expanded. */
-extern char *alias_expand __P((char *));
+extern char *alias_expand PARAMS((char *));
/* Helper definition for the parser */
-extern void clear_string_list_expander __P((alias_t *));
+extern void clear_string_list_expander PARAMS((alias_t *));
#endif /* _ALIAS_H_ */
diff --git a/array.c b/array.c
index bca18c54..6d3554bf 100644
--- a/array.c
+++ b/array.c
@@ -9,7 +9,7 @@
* chet@ins.cwru.edu
*/
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -61,7 +61,7 @@
ae->next = new; \
} while (0)
-static char *array_to_string_internal __P((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int));
+static char *array_to_string_internal PARAMS((ARRAY_ELEMENT *, ARRAY_ELEMENT *, char *, int));
static char *spacesep = " ";
@@ -398,10 +398,10 @@ ARRAY *array;
* Since arrays are sparse, unset array elements are not counted.
*/
char *
-array_subrange (a, start, nelem, starsub, quoted)
+array_subrange (a, start, nelem, starsub, quoted, pflags)
ARRAY *a;
arrayind_t start, nelem;
-int starsub, quoted;
+int starsub, quoted, pflags;
{
ARRAY *a2;
ARRAY_ELEMENT *h, *p;
@@ -436,7 +436,7 @@ int starsub, quoted;
array_dispose(a2);
if (wl == 0)
return (char *)NULL;
- t = string_list_pos_params(starsub ? '*' : '@', wl, quoted);
+ t = string_list_pos_params(starsub ? '*' : '@', wl, quoted, pflags); /* XXX */
dispose_words(wl);
return t;
@@ -449,7 +449,7 @@ char *pat, *rep;
int mflags;
{
char *t;
- int pchar, qflags;
+ int pchar, qflags, pflags;
WORD_LIST *wl, *save;
if (a == 0 || array_head(a) == 0 || array_empty(a))
@@ -467,8 +467,9 @@ int mflags;
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0;
- t = string_list_pos_params (pchar, save, qflags);
+ t = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words(save);
return t;
@@ -482,7 +483,7 @@ int modop;
int mflags;
{
char *t;
- int pchar, qflags;
+ int pchar, qflags, pflags;
WORD_LIST *wl, *save;
if (a == 0 || array_head(a) == 0 || array_empty(a))
@@ -500,8 +501,9 @@ int mflags;
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) ? PF_ASSIGNRHS : 0;
- t = string_list_pos_params (pchar, save, qflags);
+ t = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words(save);
return t;
@@ -808,22 +810,29 @@ WORD_LIST *list;
}
char **
-array_to_argv (a)
+array_to_argv (a, countp)
ARRAY *a;
+int *countp;
{
char **ret, *t;
int i;
ARRAY_ELEMENT *ae;
- if (a == 0 || array_empty(a))
+ if (a == 0 || array_empty(a)) {
+ if (countp)
+ *countp = 0;
return ((char **)NULL);
+ }
ret = strvec_create (array_num_elements (a) + 1);
i = 0;
for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
t = element_value (ae);
- ret[i++] = t ? savestring (t) : (char *)NULL;
+ if (t)
+ ret[i++] = savestring (t);
}
ret[i] = (char *)NULL;
+ if (countp)
+ *countp = i;
return (ret);
}
@@ -873,6 +882,60 @@ int quoted;
}
char *
+array_to_kvpair (a, quoted)
+ARRAY *a;
+int quoted;
+{
+ char *result, *valstr, *is;
+ char indstr[INT_STRLEN_BOUND(intmax_t) + 1];
+ ARRAY_ELEMENT *ae;
+ int rsize, rlen, elen;
+
+ if (a == 0 || array_empty (a))
+ return((char *)NULL);
+
+ result = (char *)xmalloc (rsize = 128);
+ result[rlen = 0] = '\0';
+
+ for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
+ is = inttostr (element_index(ae), indstr, sizeof(indstr));
+ valstr = element_value (ae) ?
+ (ansic_shouldquote (element_value (ae)) ?
+ ansic_quote (element_value(ae), 0, (int *)0) :
+ sh_double_quote (element_value (ae)))
+ : (char *)NULL;
+ elen = STRLEN (is) + 8 + STRLEN (valstr);
+ RESIZE_MALLOCED_BUFFER (result, rlen, (elen + 1), rsize, rsize);
+
+ strcpy (result + rlen, is);
+ rlen += STRLEN (is);
+ result[rlen++] = ' ';
+ if (valstr) {
+ strcpy (result + rlen, valstr);
+ rlen += STRLEN (valstr);
+ } else {
+ strcpy (result + rlen, "\"\"");
+ rlen += 2;
+ }
+
+ if (element_forw(ae) != a->head)
+ result[rlen++] = ' ';
+
+ FREE (valstr);
+ }
+ RESIZE_MALLOCED_BUFFER (result, rlen, 1, rsize, 8);
+ result[rlen] = '\0';
+
+ if (quoted) {
+ /* This is not as efficient as it could be... */
+ valstr = sh_single_quote (result);
+ free (result);
+ result = valstr;
+ }
+ return(result);
+}
+
+char *
array_to_assign (a, quoted)
ARRAY *a;
int quoted;
diff --git a/array.h b/array.h
index 0c456507..189d646f 100644
--- a/array.h
+++ b/array.h
@@ -1,7 +1,7 @@
/* array.h -- definitions for the interface exported by array.c that allows
the rest of the shell to manipulate array variables. */
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -27,14 +27,14 @@
typedef intmax_t arrayind_t;
-enum atype {array_indexed, array_assoc};
+enum atype {array_indexed, array_assoc}; /* only array_indexed used */
typedef struct array {
enum atype type;
arrayind_t max_index;
int num_elements;
- struct array_element *lastref;
struct array_element *head;
+ struct array_element *lastref;
} ARRAY;
typedef struct array_element {
@@ -43,52 +43,53 @@ typedef struct array_element {
struct array_element *next, *prev;
} ARRAY_ELEMENT;
-typedef int sh_ae_map_func_t __P((ARRAY_ELEMENT *, void *));
+typedef int sh_ae_map_func_t PARAMS((ARRAY_ELEMENT *, void *));
/* Basic operations on entire arrays */
-extern ARRAY *array_create __P((void));
-extern void array_flush __P((ARRAY *));
-extern void array_dispose __P((ARRAY *));
-extern ARRAY *array_copy __P((ARRAY *));
-extern ARRAY *array_slice __P((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *));
-extern void array_walk __P((ARRAY *, sh_ae_map_func_t *, void *));
-
-extern ARRAY_ELEMENT *array_shift __P((ARRAY *, int, int));
-extern int array_rshift __P((ARRAY *, int, char *));
-extern ARRAY_ELEMENT *array_unshift_element __P((ARRAY *));
-extern int array_shift_element __P((ARRAY *, char *));
-
-extern ARRAY *array_quote __P((ARRAY *));
-extern ARRAY *array_quote_escapes __P((ARRAY *));
-extern ARRAY *array_dequote __P((ARRAY *));
-extern ARRAY *array_dequote_escapes __P((ARRAY *));
-extern ARRAY *array_remove_quoted_nulls __P((ARRAY *));
-
-extern char *array_subrange __P((ARRAY *, arrayind_t, arrayind_t, int, int));
-extern char *array_patsub __P((ARRAY *, char *, char *, int));
-extern char *array_modcase __P((ARRAY *, char *, int, int));
+extern ARRAY *array_create PARAMS((void));
+extern void array_flush PARAMS((ARRAY *));
+extern void array_dispose PARAMS((ARRAY *));
+extern ARRAY *array_copy PARAMS((ARRAY *));
+extern ARRAY *array_slice PARAMS((ARRAY *, ARRAY_ELEMENT *, ARRAY_ELEMENT *));
+extern void array_walk PARAMS((ARRAY *, sh_ae_map_func_t *, void *));
+
+extern ARRAY_ELEMENT *array_shift PARAMS((ARRAY *, int, int));
+extern int array_rshift PARAMS((ARRAY *, int, char *));
+extern ARRAY_ELEMENT *array_unshift_element PARAMS((ARRAY *));
+extern int array_shift_element PARAMS((ARRAY *, char *));
+
+extern ARRAY *array_quote PARAMS((ARRAY *));
+extern ARRAY *array_quote_escapes PARAMS((ARRAY *));
+extern ARRAY *array_dequote PARAMS((ARRAY *));
+extern ARRAY *array_dequote_escapes PARAMS((ARRAY *));
+extern ARRAY *array_remove_quoted_nulls PARAMS((ARRAY *));
+
+extern char *array_subrange PARAMS((ARRAY *, arrayind_t, arrayind_t, int, int, int));
+extern char *array_patsub PARAMS((ARRAY *, char *, char *, int));
+extern char *array_modcase PARAMS((ARRAY *, char *, int, int));
/* Basic operations on array elements. */
-extern ARRAY_ELEMENT *array_create_element __P((arrayind_t, char *));
-extern ARRAY_ELEMENT *array_copy_element __P((ARRAY_ELEMENT *));
-extern void array_dispose_element __P((ARRAY_ELEMENT *));
+extern ARRAY_ELEMENT *array_create_element PARAMS((arrayind_t, char *));
+extern ARRAY_ELEMENT *array_copy_element PARAMS((ARRAY_ELEMENT *));
+extern void array_dispose_element PARAMS((ARRAY_ELEMENT *));
-extern int array_insert __P((ARRAY *, arrayind_t, char *));
-extern ARRAY_ELEMENT *array_remove __P((ARRAY *, arrayind_t));
-extern char *array_reference __P((ARRAY *, arrayind_t));
+extern int array_insert PARAMS((ARRAY *, arrayind_t, char *));
+extern ARRAY_ELEMENT *array_remove PARAMS((ARRAY *, arrayind_t));
+extern char *array_reference PARAMS((ARRAY *, arrayind_t));
/* Converting to and from arrays */
-extern WORD_LIST *array_to_word_list __P((ARRAY *));
-extern ARRAY *array_from_word_list __P((WORD_LIST *));
-extern WORD_LIST *array_keys_to_word_list __P((ARRAY *));
+extern WORD_LIST *array_to_word_list PARAMS((ARRAY *));
+extern ARRAY *array_from_word_list PARAMS((WORD_LIST *));
+extern WORD_LIST *array_keys_to_word_list PARAMS((ARRAY *));
-extern ARRAY *array_assign_list __P((ARRAY *, WORD_LIST *));
+extern ARRAY *array_assign_list PARAMS((ARRAY *, WORD_LIST *));
-extern char **array_to_argv __P((ARRAY *));
+extern char **array_to_argv PARAMS((ARRAY *, int *));
-extern char *array_to_assign __P((ARRAY *, int));
-extern char *array_to_string __P((ARRAY *, char *, int));
-extern ARRAY *array_from_string __P((char *, char *));
+extern char *array_to_kvpair PARAMS((ARRAY *, int));
+extern char *array_to_assign PARAMS((ARRAY *, int));
+extern char *array_to_string PARAMS((ARRAY *, char *, int));
+extern ARRAY *array_from_string PARAMS((char *, char *));
/* Flags for array_shift */
#define AS_DISPOSE 0x01
@@ -120,4 +121,7 @@ extern ARRAY *array_from_string __P((char *, char *));
#define ALL_ELEMENT_SUB(c) ((c) == '@' || (c) == '*')
+/* In eval.c, but uses ARRAY * */
+extern int execute_array_command PARAMS((ARRAY *, void *));
+
#endif /* _ARRAY_H_ */
diff --git a/arrayfunc.c b/arrayfunc.c
index e4ae34d0..2f8a3848 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-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -40,6 +40,11 @@
#include "builtins/common.h"
+#ifndef LBRACK
+# define LBRACK '['
+# define RBRACK ']'
+#endif
+
/* This variable means to not expand associative array subscripts more than
once, when performing variable expansion. */
int assoc_expand_once = 0;
@@ -47,12 +52,15 @@ int assoc_expand_once = 0;
/* Ditto for indexed array subscripts -- currently unused */
int array_expand_once = 0;
-static SHELL_VAR *bind_array_var_internal __P((SHELL_VAR *, arrayind_t, char *, char *, int));
-static SHELL_VAR *assign_array_element_internal __P((SHELL_VAR *, char *, char *, char *, int, char *, int));
+static SHELL_VAR *bind_array_var_internal PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int));
+static SHELL_VAR *assign_array_element_internal PARAMS((SHELL_VAR *, char *, char *, char *, int, char *, int));
+
+static void assign_assoc_from_kvlist PARAMS((SHELL_VAR *, WORD_LIST *, HASH_TABLE *, int));
-static char *quote_assign __P((const char *));
-static void quote_array_assignment_chars __P((WORD_LIST *));
-static char *array_value_internal __P((const char *, int, int, int *, arrayind_t *));
+static char *quote_assign PARAMS((const char *));
+static void quote_array_assignment_chars PARAMS((WORD_LIST *));
+static char *quote_compound_array_word PARAMS((char *, int));
+static char *array_value_internal PARAMS((const char *, int, int, int *, arrayind_t *));
/* Standard error message to use when encountering an invalid array subscript */
const char * const bash_badsub_errmsg = N_("bad array subscript");
@@ -89,7 +97,8 @@ convert_var_to_array (var)
array_needs_making++;
VSETATTR (var, att_array);
- VUNSETATTR (var, att_invisible);
+ if (oldval)
+ VUNSETATTR (var, att_invisible);
/* Make sure it's not marked as an associative array any more */
VUNSETATTR (var, att_assoc);
@@ -126,7 +135,8 @@ convert_var_to_assoc (var)
array_needs_making++;
VSETATTR (var, att_assoc);
- VUNSETATTR (var, att_invisible);
+ if (oldval)
+ VUNSETATTR (var, att_invisible);
/* Make sure it's not marked as an indexed array any more */
VUNSETATTR (var, att_array);
@@ -177,7 +187,41 @@ make_array_variable_value (entry, ind, key, value, flags)
return newval;
}
-
+
+/* Assign HASH[KEY]=VALUE according to FLAGS. ENTRY is an associative array
+ variable; HASH is the hash table to assign into. HASH may or may not be
+ the hash table associated with ENTRY; if it's not, the caller takes care
+ of it.
+ XXX - make sure that any dynamic associative array variables recreate the
+ hash table on each assignment. BASH_CMDS and BASH_ALIASES already do this */
+static SHELL_VAR *
+bind_assoc_var_internal (entry, hash, key, value, flags)
+ SHELL_VAR *entry;
+ HASH_TABLE *hash;
+ char *key;
+ char *value;
+ int flags;
+{
+ char *newval;
+
+ /* Use the existing array contents to expand the value */
+ newval = make_array_variable_value (entry, 0, key, value, flags);
+
+ if (entry->assign_func)
+ (*entry->assign_func) (entry, newval, 0, key);
+ else
+ assoc_insert (hash, key, newval);
+
+ FREE (newval);
+
+ VUNSETATTR (entry, att_invisible); /* no longer invisible */
+
+ /* check mark_modified_variables if we ever want to export array vars */
+ return (entry);
+}
+
+/* Perform ENTRY[IND]=VALUE or ENTRY[KEY]=VALUE. This is not called for every
+ assignment to an associative array; see assign_compound_array_list below. */
static SHELL_VAR *
bind_array_var_internal (entry, ind, key, value, flags)
SHELL_VAR *entry;
@@ -271,7 +315,7 @@ bind_assoc_variable (entry, name, key, value, flags)
return (entry);
}
- return (bind_array_var_internal (entry, 0, key, value, flags));
+ return (bind_assoc_var_internal (entry, assoc_cell (entry), key, value, flags));
}
/* Parse NAME, a lhs of an assignment statement of the form v[s], and
@@ -398,7 +442,7 @@ find_or_make_array_variable (name, flags)
}
else if ((flags & 2) && array_p (var))
{
- last_command_exit_value = 1;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: cannot convert indexed to associative array"), name);
return ((SHELL_VAR *)NULL);
}
@@ -481,6 +525,9 @@ expand_compound_array_assignment (var, value, flags)
(ksh93 seems to do this). */
list = parse_string_to_word_list (val, 1, "array assign");
+ /* Note that we defer expansion of the assignment statements for associative
+ arrays here, so we don't have to scan the subscript and find the ending
+ bracket twice. See the caller below. */
if (var && assoc_p (var))
{
if (val != value)
@@ -507,7 +554,59 @@ expand_compound_array_assignment (var, value, flags)
return nlist;
}
-/* Callers ensure that VAR is not NULL */
+#if ASSOC_KVPAIR_ASSIGNMENT
+static void
+assign_assoc_from_kvlist (var, nlist, h, flags)
+ SHELL_VAR *var;
+ WORD_LIST *nlist;
+ HASH_TABLE *h;
+ int flags;
+{
+ WORD_LIST *list;
+ char *akey, *aval, *k, *v;
+ int free_aval;
+
+ for (list = nlist; list; list = list->next)
+ {
+ free_aval = 0;
+
+ k = list->word->word;
+ v = list->next ? list->next->word->word : 0;
+
+ if (list->next)
+ list = list->next;
+
+ akey = expand_assignment_string_to_string (k, 0);
+ aval = expand_assignment_string_to_string (v, 0);
+
+ if (akey == 0 || *akey == 0)
+ {
+ err_badarraysub (k);
+ FREE (akey);
+ continue;
+ }
+ if (aval == 0)
+ {
+ aval = (char *)xmalloc (1);
+ aval[0] = '\0'; /* like do_assignment_internal */
+ free_aval = 1;
+ }
+
+ bind_assoc_var_internal (var, h, akey, aval, flags);
+ if (free_aval)
+ free (aval);
+ }
+}
+#endif
+
+/* Callers ensure that VAR is not NULL. Associative array assignments have not
+ been expanded when this is called, or have been expanded once and single-
+ quoted, so we don't have to scan through an unquoted expanded subscript to
+ find the ending bracket; indexed array assignments have been expanded and
+ possibly single-quoted to prevent further expansion.
+
+ If this is an associative array, we perform the assignments into NHASH and
+ set NHASH to be the value of VAR after processing the assignments in NLIST */
void
assign_compound_array_list (var, nlist, flags)
SHELL_VAR *var;
@@ -515,7 +614,7 @@ assign_compound_array_list (var, nlist, flags)
int flags;
{
ARRAY *a;
- HASH_TABLE *h;
+ HASH_TABLE *h, *nhash;
WORD_LIST *list;
char *w, *val, *nval, *savecmd;
int len, iflags, free_val;
@@ -523,7 +622,7 @@ assign_compound_array_list (var, nlist, flags)
char *akey;
a = (var && array_p (var)) ? array_cell (var) : (ARRAY *)0;
- h = (var && assoc_p (var)) ? assoc_cell (var) : (HASH_TABLE *)0;
+ nhash = h = (var && assoc_p (var)) ? assoc_cell (var) : (HASH_TABLE *)0;
akey = (char *)0;
ind = 0;
@@ -535,11 +634,26 @@ assign_compound_array_list (var, nlist, flags)
if (a && array_p (var))
array_flush (a);
else if (h && assoc_p (var))
- assoc_flush (h);
+ nhash = assoc_create (h->nbuckets);
}
last_ind = (a && (flags & ASS_APPEND)) ? array_max_index (a) + 1 : 0;
+#if ASSOC_KVPAIR_ASSIGNMENT
+ if (assoc_p (var) && nlist && (nlist->word->flags & W_ASSIGNMENT) == 0 && nlist->word->word[0] != '[') /*]*/
+ {
+ iflags = flags & ~ASS_APPEND;
+ assign_assoc_from_kvlist (var, nlist, nhash, iflags);
+ if (nhash && nhash != h)
+ {
+ h = assoc_cell (var);
+ var_setassoc (var, nhash);
+ assoc_dispose (h);
+ }
+ return;
+ }
+#endif
+
for (list = nlist; list; list = list->next)
{
/* Don't allow var+=(values) to make assignments in VALUES append to
@@ -581,7 +695,7 @@ assign_compound_array_list (var, nlist, flags)
if (ALL_ELEMENT_SUB (w[1]) && len == 2)
{
- last_command_exit_value = 1;
+ set_exit_status (EXECUTION_FAILURE);
if (assoc_p (var))
report_error (_("%s: invalid associative array key"), w);
else
@@ -629,7 +743,7 @@ assign_compound_array_list (var, nlist, flags)
}
else if (assoc_p (var))
{
- last_command_exit_value = 1;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: %s: must use subscript when assigning associative array"), var->name, w);
continue;
}
@@ -655,13 +769,23 @@ assign_compound_array_list (var, nlist, flags)
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);
+ if (assoc_p (var))
+ bind_assoc_var_internal (var, nhash, akey, val, iflags);
+ else
+ bind_array_var_internal (var, ind, akey, val, iflags);
last_ind++;
this_command_name = savecmd;
if (free_val)
free (val);
}
+
+ if (assoc_p (var) && nhash && nhash != h)
+ {
+ h = assoc_cell (var);
+ var_setassoc (var, nhash);
+ assoc_dispose (h);
+ }
}
/* Perform a compound array assignment: VAR->name=( VALUE ). The
@@ -735,6 +859,119 @@ quote_assign (string)
return temp;
}
+/* Take a word W of the form [IND]=VALUE and transform it to ['IND']='VALUE'
+ to prevent further expansion. This is called for compound assignments to
+ indexed arrays. W has already undergone word expansions. If W has no [IND]=,
+ just single-quote and return it. */
+static char *
+quote_compound_array_word (w, type)
+ char *w;
+ int type;
+{
+ char *nword, *sub, *value, *t;
+ int ind, wlen, i;
+
+ if (w[0] != LBRACK)
+ return (sh_single_quote (w));
+ ind = skipsubscript (w, 0, 0);
+ if (w[ind] != RBRACK)
+ return (sh_single_quote (w));
+
+ wlen = strlen (w);
+ w[ind] = '\0';
+ sub = sh_single_quote (w+1);
+ w[ind] = RBRACK;
+
+ nword = xmalloc (wlen * 4 + 5); /* wlen*4 is max single quoted length */
+ nword[0] = LBRACK;
+ i = STRLEN (sub);
+ memcpy (nword+1, sub, i);
+ i++; /* accommodate the opening LBRACK */
+ nword[i++] = w[ind++]; /* RBRACK */
+ if (w[ind] == '+')
+ nword[i++] = w[ind++];
+ nword[i++] = w[ind++];
+ value = sh_single_quote (w + ind);
+ strcpy (nword + i, value);
+
+ return nword;
+}
+
+/* Expand the key and value in W, which is of the form [KEY]=VALUE, and
+ reconstruct W with the expanded and single-quoted version:
+ ['expanded-key']='expanded-value'. If there is no [KEY]=, single-quote the
+ word and return it. Very similar to previous function, but does not assume
+ W has already been expanded, and expands the KEY and VALUE separately.
+ Used for compound assignments to associative arrays that are arguments to
+ declaration builtins (declare -A a=( list )). */
+char *
+expand_and_quote_assoc_word (w, type)
+ char *w;
+ int type;
+{
+ char *nword, *key, *value, *t;
+ int ind, wlen, i;
+
+ if (w[0] != LBRACK)
+ return (sh_single_quote (w));
+ ind = skipsubscript (w, 0, 0);
+ if (w[ind] != RBRACK)
+ return (sh_single_quote (w));
+
+ w[ind] = '\0';
+ t = expand_assignment_string_to_string (w+1, 0);
+ w[ind] = RBRACK;
+ key = sh_single_quote (t ? t : "");
+ free (t);
+
+ wlen = STRLEN (key);
+ nword = xmalloc (wlen + 5);
+ nword[0] = LBRACK;
+ memcpy (nword+1, key, wlen);
+ i = wlen + 1; /* accommodate the opening LBRACK */
+
+ nword[i++] = w[ind++]; /* RBRACK */
+ if (w[ind] == '+')
+ nword[i++] = w[ind++];
+ nword[i++] = w[ind++];
+
+ t = expand_assignment_string_to_string (w+ind, 0);
+ value = sh_single_quote (t ? t : "");
+ free (t);
+ nword = xrealloc (nword, wlen + 5 + STRLEN (value));
+ strcpy (nword + i, value);
+
+ free (key);
+ free (value);
+
+ return nword;
+}
+
+/* For each word in a compound array assignment, if the word looks like
+ [ind]=value, single-quote ind and value, but leave the brackets and
+ the = sign (and any `+') alone. If it's not an assignment, just single-
+ quote the word. This is used for indexed arrays. */
+void
+quote_compound_array_list (list, type)
+ WORD_LIST *list;
+ int type;
+{
+ char *t;
+ WORD_LIST *l;
+
+ for (l = list; l; l = l->next)
+ {
+ if (l->word == 0 || l->word->word == 0)
+ continue; /* should not happen, but just in case... */
+ if ((l->word->flags & W_ASSIGNMENT) == 0)
+ t = sh_single_quote (l->word->word);
+ else
+ t = quote_compound_array_word (l->word->word, type);
+ free (l->word->word);
+ l->word->word = t;
+ }
+}
+
/* For each word in a compound array assignment, if the word looks like
[ind]=value, quote globbing chars and characters in $IFS before the `='. */
static void
@@ -954,7 +1191,7 @@ array_expand_index (var, s, len, flags)
exp = (char *)xmalloc (len);
strncpy (exp, s, len - 1);
exp[len - 1] = '\0';
-#if 0 /* XXX - not yet -- maybe bash-5.1 */
+#if 0 /* TAG: maybe bash-5.2 */
if ((flags & AV_NOEXPAND) == 0)
t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */
else
@@ -963,14 +1200,14 @@ array_expand_index (var, s, len, flags)
t = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH|Q_ARRAYSUB); /* XXX - Q_ARRAYSUB for future use */
savecmd = this_command_name;
this_command_name = (char *)NULL;
- val = evalexp (t, 0, &expok);
+ val = evalexp (t, EXP_EXPANDED, &expok); /* XXX - was 0 but we expanded exp already */
this_command_name = savecmd;
if (t != exp)
free (t);
free (exp);
if (expok == 0)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
if (no_longjmp_on_fatal_error)
return 0;
@@ -1224,9 +1461,9 @@ get_array_value (s, flags, rtype, indp)
}
char *
-array_keys (s, quoted)
+array_keys (s, quoted, pflags)
char *s;
- int quoted;
+ int quoted, pflags;
{
int len;
char *retval, *t, *temp;
@@ -1251,14 +1488,7 @@ array_keys (s, quoted)
if (l == (WORD_LIST *)NULL)
return ((char *) NULL);
- if (t[0] == '*' && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
- {
- temp = string_list_dollar_star (l, quoted, 0);
- retval = quote_string (temp);
- free (temp);
- }
- else /* ${!name[@]} or unquoted ${!name[*]} */
- retval = string_list_dollar_at (l, quoted, 0);
+ retval = string_list_pos_params (t[0], l, quoted, pflags);
dispose_words (l);
return retval;
diff --git a/arrayfunc.h b/arrayfunc.h
index cd51ee07..c2bbb98a 100644
--- a/arrayfunc.h
+++ b/arrayfunc.h
@@ -1,6 +1,6 @@
/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */
-/* Copyright (C) 2001-2010 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -44,41 +44,44 @@ extern int array_expand_once;
#define VA_NOEXPAND 0x001
#define VA_ONEWORD 0x002
-extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *));
-extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *));
+extern SHELL_VAR *convert_var_to_array PARAMS((SHELL_VAR *));
+extern SHELL_VAR *convert_var_to_assoc PARAMS((SHELL_VAR *));
-extern char *make_array_variable_value __P((SHELL_VAR *, arrayind_t, char *, char *, int));
+extern char *make_array_variable_value PARAMS((SHELL_VAR *, arrayind_t, char *, char *, int));
-extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int));
-extern SHELL_VAR *bind_array_element __P((SHELL_VAR *, arrayind_t, char *, int));
-extern SHELL_VAR *assign_array_element __P((char *, char *, int));
+extern SHELL_VAR *bind_array_variable PARAMS((char *, arrayind_t, char *, int));
+extern SHELL_VAR *bind_array_element PARAMS((SHELL_VAR *, arrayind_t, char *, int));
+extern SHELL_VAR *assign_array_element PARAMS((char *, char *, int));
-extern SHELL_VAR *bind_assoc_variable __P((SHELL_VAR *, char *, char *, char *, int));
+extern SHELL_VAR *bind_assoc_variable PARAMS((SHELL_VAR *, char *, char *, char *, int));
-extern SHELL_VAR *find_or_make_array_variable __P((char *, int));
+extern SHELL_VAR *find_or_make_array_variable PARAMS((char *, int));
-extern SHELL_VAR *assign_array_from_string __P((char *, char *, int));
-extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int));
+extern SHELL_VAR *assign_array_from_string PARAMS((char *, char *, int));
+extern SHELL_VAR *assign_array_var_from_word_list PARAMS((SHELL_VAR *, WORD_LIST *, int));
-extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int));
-extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int));
-extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int));
+extern WORD_LIST *expand_compound_array_assignment PARAMS((SHELL_VAR *, char *, int));
+extern void assign_compound_array_list PARAMS((SHELL_VAR *, WORD_LIST *, int));
+extern SHELL_VAR *assign_array_var_from_string PARAMS((SHELL_VAR *, char *, int));
-extern int unbind_array_element __P((SHELL_VAR *, char *, int));
-extern int skipsubscript __P((const char *, int, int));
+extern char *expand_and_quote_assoc_word PARAMS((char *, int));
+extern void quote_compound_array_list PARAMS((WORD_LIST *, int));
-extern void print_array_assignment __P((SHELL_VAR *, int));
-extern void print_assoc_assignment __P((SHELL_VAR *, int));
+extern int unbind_array_element PARAMS((SHELL_VAR *, char *, int));
+extern int skipsubscript PARAMS((const char *, int, int));
-extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int));
-extern int valid_array_reference __P((const char *, int));
-extern char *array_value __P((const char *, int, int, int *, arrayind_t *));
-extern char *get_array_value __P((const char *, int, int *, arrayind_t *));
+extern void print_array_assignment PARAMS((SHELL_VAR *, int));
+extern void print_assoc_assignment PARAMS((SHELL_VAR *, int));
-extern char *array_keys __P((char *, int));
+extern arrayind_t array_expand_index PARAMS((SHELL_VAR *, char *, int, int));
+extern int valid_array_reference PARAMS((const char *, int));
+extern char *array_value PARAMS((const char *, int, int, int *, arrayind_t *));
+extern char *get_array_value PARAMS((const char *, int, int *, arrayind_t *));
-extern char *array_variable_name __P((const char *, int, char **, int *));
-extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *));
+extern char *array_keys PARAMS((char *, int, int));
+
+extern char *array_variable_name PARAMS((const char *, int, char **, int *));
+extern SHELL_VAR *array_variable_part PARAMS((const char *, int, char **, int *));
#else
diff --git a/assoc.c b/assoc.c
index 673eccb2..5782e856 100644
--- a/assoc.c
+++ b/assoc.c
@@ -7,7 +7,7 @@
* chet@ins.cwru.edu
*/
-/* Copyright (C) 2008,2009,2011 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009,2011-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -44,7 +44,7 @@
#include "assoc.h"
#include "builtins/common.h"
-static WORD_LIST *assoc_to_word_list_internal __P((HASH_TABLE *, int));
+static WORD_LIST *assoc_to_word_list_internal PARAMS((HASH_TABLE *, int));
/* assoc_create == hash_create */
@@ -258,10 +258,10 @@ assoc_remove_quoted_nulls (h)
* the STARTth element and spanning NELEM members. Null elements are counted.
*/
char *
-assoc_subrange (hash, start, nelem, starsub, quoted)
-HASH_TABLE *hash;
-arrayind_t start, nelem;
-int starsub, quoted;
+assoc_subrange (hash, start, nelem, starsub, quoted, pflags)
+ HASH_TABLE *hash;
+ arrayind_t start, nelem;
+ int starsub, quoted, pflags;
{
WORD_LIST *l, *save, *h, *t;
int i, j;
@@ -289,7 +289,7 @@ int starsub, quoted;
t->next = (WORD_LIST *)NULL;
- ret = string_list_pos_params (starsub ? '*' : '@', h, quoted);
+ ret = string_list_pos_params (starsub ? '*' : '@', h, quoted, pflags);
if (t != l)
t->next = l;
@@ -306,7 +306,7 @@ assoc_patsub (h, pat, rep, mflags)
int mflags;
{
char *t;
- int pchar, qflags;
+ int pchar, qflags, pflags;
WORD_LIST *wl, *save;
if (h == 0 || assoc_empty (h))
@@ -325,8 +325,9 @@ assoc_patsub (h, pat, rep, mflags)
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0;
- t = string_list_pos_params (pchar, save, qflags);
+ t = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words (save);
return t;
@@ -340,7 +341,7 @@ assoc_modcase (h, pat, modop, mflags)
int mflags;
{
char *t;
- int pchar, qflags;
+ int pchar, qflags, pflags;
WORD_LIST *wl, *save;
if (h == 0 || assoc_empty (h))
@@ -359,14 +360,85 @@ assoc_modcase (h, pat, modop, mflags)
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0;
- t = string_list_pos_params (pchar, save, qflags);
+ t = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words (save);
return t;
}
char *
+assoc_to_kvpair (hash, quoted)
+ HASH_TABLE *hash;
+ int quoted;
+{
+ char *ret;
+ char *istr, *vstr;
+ int i, rsize, rlen, elen;
+ BUCKET_CONTENTS *tlist;
+
+ if (hash == 0 || assoc_empty (hash))
+ return (char *)0;
+
+ ret = xmalloc (rsize = 128);
+ ret[rlen = 0] = '\0';
+
+ for (i = 0; i < hash->nbuckets; i++)
+ for (tlist = hash_items (i, hash); tlist; tlist = tlist->next)
+ {
+ 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;
+
+ 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) + 4 + STRLEN (vstr);
+ RESIZE_MALLOCED_BUFFER (ret, rlen, (elen+1), rsize, rsize);
+
+ strcpy (ret+rlen, istr);
+ rlen += STRLEN (istr);
+ ret[rlen++] = ' ';
+ if (vstr)
+ {
+ strcpy (ret + rlen, vstr);
+ rlen += STRLEN (vstr);
+ }
+ else
+ {
+ strcpy (ret + rlen, "\"\"");
+ rlen += 2;
+ }
+ ret[rlen++] = ' ';
+
+ if (istr != tlist->key)
+ FREE (istr);
+
+ FREE (vstr);
+ }
+
+ RESIZE_MALLOCED_BUFFER (ret, rlen, 1, rsize, 8);
+ ret[rlen] = '\0';
+
+ if (quoted)
+ {
+ vstr = sh_single_quote (ret);
+ free (ret);
+ ret = vstr;
+ }
+
+ return ret;
+}
+
+char *
assoc_to_assign (hash, quoted)
HASH_TABLE *hash;
int quoted;
@@ -415,7 +487,6 @@ assoc_to_assign (hash, quoted)
}
ret[rlen++] = ' ';
-
if (istr != tlist->key)
FREE (istr);
diff --git a/assoc.h b/assoc.h
index db8383b2..78ec0738 100644
--- a/assoc.h
+++ b/assoc.h
@@ -1,7 +1,7 @@
/* assoc.h -- definitions for the interface exported by assoc.c that allows
the rest of the shell to manipulate associative array variables. */
-/* Copyright (C) 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -25,6 +25,8 @@
#include "stdc.h"
#include "hashlib.h"
+#define ASSOC_HASH_BUCKETS 1024
+
#define assoc_empty(h) ((h)->nentries == 0)
#define assoc_num_elements(h) ((h)->nentries)
@@ -34,29 +36,30 @@
#define assoc_walk(h, f) (hash_walk((h), (f))
-extern void assoc_dispose __P((HASH_TABLE *));
-extern void assoc_flush __P((HASH_TABLE *));
+extern void assoc_dispose PARAMS((HASH_TABLE *));
+extern void assoc_flush PARAMS((HASH_TABLE *));
-extern int assoc_insert __P((HASH_TABLE *, char *, char *));
-extern PTR_T assoc_replace __P((HASH_TABLE *, char *, char *));
-extern void assoc_remove __P((HASH_TABLE *, char *));
+extern int assoc_insert PARAMS((HASH_TABLE *, char *, char *));
+extern PTR_T assoc_replace PARAMS((HASH_TABLE *, char *, char *));
+extern void assoc_remove PARAMS((HASH_TABLE *, char *));
-extern char *assoc_reference __P((HASH_TABLE *, char *));
+extern char *assoc_reference PARAMS((HASH_TABLE *, char *));
-extern char *assoc_subrange __P((HASH_TABLE *, arrayind_t, arrayind_t, int, int));
-extern char *assoc_patsub __P((HASH_TABLE *, char *, char *, int));
-extern char *assoc_modcase __P((HASH_TABLE *, char *, int, int));
+extern char *assoc_subrange PARAMS((HASH_TABLE *, arrayind_t, arrayind_t, int, int, int));
+extern char *assoc_patsub PARAMS((HASH_TABLE *, char *, char *, int));
+extern char *assoc_modcase PARAMS((HASH_TABLE *, char *, int, int));
-extern HASH_TABLE *assoc_quote __P((HASH_TABLE *));
-extern HASH_TABLE *assoc_quote_escapes __P((HASH_TABLE *));
-extern HASH_TABLE *assoc_dequote __P((HASH_TABLE *));
-extern HASH_TABLE *assoc_dequote_escapes __P((HASH_TABLE *));
-extern HASH_TABLE *assoc_remove_quoted_nulls __P((HASH_TABLE *));
+extern HASH_TABLE *assoc_quote PARAMS((HASH_TABLE *));
+extern HASH_TABLE *assoc_quote_escapes PARAMS((HASH_TABLE *));
+extern HASH_TABLE *assoc_dequote PARAMS((HASH_TABLE *));
+extern HASH_TABLE *assoc_dequote_escapes PARAMS((HASH_TABLE *));
+extern HASH_TABLE *assoc_remove_quoted_nulls PARAMS((HASH_TABLE *));
-extern char *assoc_to_assign __P((HASH_TABLE *, int));
+extern char *assoc_to_kvpair PARAMS((HASH_TABLE *, int));
+extern char *assoc_to_assign PARAMS((HASH_TABLE *, int));
-extern WORD_LIST *assoc_to_word_list __P((HASH_TABLE *));
-extern WORD_LIST *assoc_keys_to_word_list __P((HASH_TABLE *));
+extern WORD_LIST *assoc_to_word_list PARAMS((HASH_TABLE *));
+extern WORD_LIST *assoc_keys_to_word_list PARAMS((HASH_TABLE *));
-extern char *assoc_to_string __P((HASH_TABLE *, char *, int));
+extern char *assoc_to_string PARAMS((HASH_TABLE *, char *, int));
#endif /* _ASSOC_H_ */
diff --git a/bashhist.c b/bashhist.c
index d2155dce..2a05a53f 100644
--- a/bashhist.c
+++ b/bashhist.c
@@ -1,6 +1,6 @@
/* bashhist.c -- bash interface to the GNU history library. */
-/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -68,10 +68,10 @@ extern int rl_done, rl_dispatching; /* should really include readline.h */
extern int errno;
#endif
-static int histignore_item_func __P((struct ign *));
-static int check_history_control __P((char *));
-static void hc_erasedups __P((char *));
-static void really_add_history __P((char *));
+static int histignore_item_func PARAMS((struct ign *));
+static int check_history_control PARAMS((char *));
+static void hc_erasedups PARAMS((char *));
+static void really_add_history PARAMS((char *));
static struct ignorevar histignore =
{
@@ -89,7 +89,7 @@ static struct ignorevar histignore =
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 = 0;
-int enable_history_list = 0; /* value for `set -o history' */
+int enable_history_list = -1; /* 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
@@ -193,17 +193,17 @@ int hist_verify;
int dont_save_function_defs;
#if defined (BANG_HISTORY)
-static int bash_history_inhibit_expansion __P((char *, int));
+static int bash_history_inhibit_expansion PARAMS((char *, int));
#endif
#if defined (READLINE)
-static void re_edit __P((char *));
+static void re_edit PARAMS((char *));
#endif
-static int history_expansion_p __P((char *));
-static int shell_comment __P((char *));
-static int should_expand __P((char *));
-static HIST_ENTRY *last_history_entry __P((void));
-static char *expand_histignore_pattern __P((char *));
-static int history_should_ignore __P((char *));
+static int history_expansion_p PARAMS((char *));
+static int shell_comment PARAMS((char *));
+static int should_expand PARAMS((char *));
+static HIST_ENTRY *last_history_entry PARAMS((void));
+static char *expand_histignore_pattern PARAMS((char *));
+static int history_should_ignore PARAMS((char *));
#if defined (BANG_HISTORY)
/* Is the history expansion starting at string[i] one that should not
@@ -359,10 +359,11 @@ bash_delete_histent (i)
discard = remove_history (i);
if (discard)
- free_history_entry (discard);
- history_lines_this_session--;
-
- return 1;
+ {
+ free_history_entry (discard);
+ history_lines_this_session--;
+ }
+ return discard != 0;
}
int
@@ -436,11 +437,11 @@ int
maybe_append_history (filename)
char *filename;
{
- int fd, result;
+ int fd, result, histlen;
struct stat buf;
result = EXECUTION_SUCCESS;
- if (history_lines_this_session > 0 && (history_lines_this_session <= where_history ()))
+ if (history_lines_this_session > 0)
{
/* If the filename was supplied, then create it if necessary. */
if (stat (filename, &buf) == -1 && errno == ENOENT)
@@ -453,6 +454,10 @@ maybe_append_history (filename)
}
close (fd);
}
+ /* cap the number of lines we write at the length of the history list */
+ histlen = where_history ();
+ if (histlen > 0 && history_lines_this_session > histlen)
+ history_lines_this_session = histlen; /* reset below anyway */
result = append_history (history_lines_this_session, filename);
/* Pretend we already read these lines from the file because we just
added them */
@@ -752,7 +757,7 @@ maybe_add_history (line)
int is_comment;
hist_last_line_added = 0;
- is_comment = shell_comment (line);
+ is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line);
/* Don't use the value of history_control to affect the second
and subsequent lines of a multi-line command (old code did
@@ -800,7 +805,9 @@ check_add_history (line, force)
}
#if defined (SYSLOG_HISTORY)
-#define SYSLOG_MAXLEN 600
+#define SYSLOG_MAXMSG 1024
+#define SYSLOG_MAXLEN SYSLOG_MAXMSG
+#define SYSLOG_MAXHDR 256
#ifndef OPENLOG_OPTS
#define OPENLOG_OPTS 0
@@ -816,7 +823,10 @@ void
bash_syslog_history (line)
const char *line;
{
- char trunc[SYSLOG_MAXLEN];
+ char trunc[SYSLOG_MAXLEN], *msg;
+ char loghdr[SYSLOG_MAXHDR];
+ char seqbuf[32], *seqnum;
+ int hdrlen, msglen, seqlen, chunks, i;
static int first = 1;
if (first)
@@ -825,13 +835,25 @@ bash_syslog_history (line)
first = 0;
}
- if (strlen(line) < SYSLOG_MAXLEN)
- syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY: PID=%d UID=%d %s", getpid(), current_user.uid, line);
+ hdrlen = snprintf (loghdr, sizeof(loghdr), "HISTORY: PID=%d UID=%d", getpid(), current_user.uid);
+ msglen = strlen (line);
+
+ if ((msglen + hdrlen + 1) < SYSLOG_MAXLEN)
+ syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "%s %s", loghdr, line);
else
{
- strncpy (trunc, line, SYSLOG_MAXLEN);
- trunc[SYSLOG_MAXLEN - 1] = '\0';
- syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "HISTORY (TRUNCATED): PID=%d UID=%d %s", getpid(), current_user.uid, trunc);
+ chunks = ((msglen + hdrlen) / SYSLOG_MAXLEN) + 1;
+ for (msg = line, i = 0; i < chunks; i++)
+ {
+ seqnum = inttostr (i + 1, seqbuf, sizeof (seqbuf));
+ seqlen = STRLEN (seqnum);
+
+ /* 7 == "(seq=) " */
+ strncpy (trunc, msg, SYSLOG_MAXLEN - hdrlen - seqlen - 7 - 1);
+ trunc[SYSLOG_MAXLEN - 1] = '\0';
+ syslog (SYSLOG_FACILITY|SYSLOG_LEVEL, "%s (seq=%s) %s", loghdr, seqnum, trunc);
+ msg += SYSLOG_MAXLEN - hdrlen - seqlen - 8;
+ }
}
}
#endif
@@ -845,13 +867,15 @@ void
bash_add_history (line)
char *line;
{
- int add_it, offset, curlen;
+ int add_it, offset, curlen, is_comment;
HIST_ENTRY *current, *old;
char *chars_to_add, *new_line;
add_it = 1;
if (command_oriented_history && current_command_line_count > 1)
{
+ is_comment = (parser_state & PST_HEREDOC) ? 0 : shell_comment (line);
+
/* The second and subsequent lines of a here document have the trailing
newline preserved. We don't want to add extra newlines here, but we
do want to add one after the first line (which is the command that
@@ -859,7 +883,11 @@ bash_add_history (line)
does the right thing to take care of this for us. We don't want to
add extra newlines if the user chooses to enable literal_history,
so we have to duplicate some of what that function does here. */
- if ((parser_state & PST_HEREDOC) && literal_history && current_command_line_count > 2 && line[strlen (line) - 1] == '\n')
+ /* If we're in a here document and past the first line,
+ (current_command_line_count > 2)
+ don't add a newline here. This will also take care of the literal_history
+ case if the other conditions are met. */
+ if ((parser_state & PST_HEREDOC) && current_command_line_count > 2 && line[strlen (line) - 1] == '\n')
chars_to_add = "";
else if (current_command_line_count == current_command_line_comment+1)
chars_to_add = "\n";
@@ -871,7 +899,7 @@ bash_add_history (line)
using_history ();
current = previous_history ();
- current_command_line_comment = shell_comment (line) ? current_command_line_count : -2;
+ current_command_line_comment = is_comment ? current_command_line_count : -2;
if (current)
{
@@ -911,6 +939,9 @@ bash_add_history (line)
}
}
+ if (add_it && history_is_stifled() && history_length == 0 && history_length == history_max_entries)
+ add_it = 0;
+
if (add_it)
really_add_history (line);
@@ -936,7 +967,7 @@ int
history_number ()
{
using_history ();
- return (remember_on_history ? history_base + where_history () : 1);
+ return ((remember_on_history || enable_history_list) ? history_base + where_history () : 1);
}
static int
diff --git a/bashhist.h b/bashhist.h
index 90ecec9e..615f5d25 100644
--- a/bashhist.h
+++ b/bashhist.h
@@ -1,6 +1,6 @@
/* bashhist.h -- interface to the bash history functions in bashhist.c. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -64,26 +64,26 @@ extern int history_expansion_inhibited;
extern int double_quotes_inhibit_history_expansion;
# endif /* BANG_HISTORY */
-extern void bash_initialize_history __P((void));
-extern void bash_history_reinit __P((int));
-extern void bash_history_disable __P((void));
-extern void bash_history_enable __P((void));
-extern void bash_clear_history __P((void));
-extern int bash_delete_histent __P((int));
-extern int bash_delete_history_range __P((int, int));
-extern int bash_delete_last_history __P((void));
-extern void load_history __P((void));
-extern void save_history __P((void));
-extern int maybe_append_history __P((char *));
-extern int maybe_save_shell_history __P((void));
-extern char *pre_process_line __P((char *, int, int));
-extern void maybe_add_history __P((char *));
-extern void bash_add_history __P((char *));
-extern int check_add_history __P((char *, int));
-extern int history_number __P((void));
-
-extern void setup_history_ignore __P((char *));
-
-extern char *last_history_line __P((void));
+extern void bash_initialize_history PARAMS((void));
+extern void bash_history_reinit PARAMS((int));
+extern void bash_history_disable PARAMS((void));
+extern void bash_history_enable PARAMS((void));
+extern void bash_clear_history PARAMS((void));
+extern int bash_delete_histent PARAMS((int));
+extern int bash_delete_history_range PARAMS((int, int));
+extern int bash_delete_last_history PARAMS((void));
+extern void load_history PARAMS((void));
+extern void save_history PARAMS((void));
+extern int maybe_append_history PARAMS((char *));
+extern int maybe_save_shell_history PARAMS((void));
+extern char *pre_process_line PARAMS((char *, int, int));
+extern void maybe_add_history PARAMS((char *));
+extern void bash_add_history PARAMS((char *));
+extern int check_add_history PARAMS((char *, int));
+extern int history_number PARAMS((void));
+
+extern void setup_history_ignore PARAMS((char *));
+
+extern char *last_history_line PARAMS((void));
#endif /* _BASHHIST_H_ */
diff --git a/bashline.c b/bashline.c
index 97adaa0f..c69c0c5e 100644
--- a/bashline.c
+++ b/bashline.c
@@ -1,6 +1,6 @@
/* bashline.c -- Bash's interface to the readline library. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -62,6 +62,7 @@
#endif
#include "builtins/common.h"
+#include "builtins/builtext.h" /* for read_builtin */
#include <readline/rlconf.h>
#include <readline/readline.h>
@@ -86,118 +87,138 @@
# define VI_EDITING_MODE 0
#endif
+/* Copied from rldefs.h, since that's not a public readline header file. */
+#ifndef FUNCTION_TO_KEYMAP
+
+#if defined (CRAY)
+# define FUNCTION_TO_KEYMAP(map, key) (Keymap)((int)map[key].function)
+# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)((int)(data))
+#else
+# define FUNCTION_TO_KEYMAP(map, key) (Keymap)(map[key].function)
+# define KEYMAP_TO_FUNCTION(data) (rl_command_func_t *)(data)
+#endif
+
+#endif
+
#define RL_BOOLEAN_VARIABLE_VALUE(s) ((s)[0] == 'o' && (s)[1] == 'n' && (s)[2] == '\0')
#if defined (BRACE_COMPLETION)
-extern int bash_brace_completion __P((int, int));
+extern int bash_brace_completion PARAMS((int, int));
#endif /* BRACE_COMPLETION */
/* To avoid including curses.h/term.h/termcap.h and that whole mess. */
#ifdef _MINIX
-extern int tputs __P((const char *string, int nlines, void (*outx)(int)));
+extern int tputs PARAMS((const char *string, int nlines, void (*outx)(int)));
#else
-extern int tputs __P((const char *string, int nlines, int (*outx)(int)));
+extern int tputs PARAMS((const char *string, int nlines, int (*outx)(int)));
#endif
/* Forward declarations */
/* Functions bound to keys in Readline for Bash users. */
-static int shell_expand_line __P((int, int));
-static int display_shell_version __P((int, int));
-static int operate_and_get_next __P((int, int));
+static int shell_expand_line PARAMS((int, int));
+static int display_shell_version PARAMS((int, int));
-static int bash_ignore_filenames __P((char **));
-static int bash_ignore_everything __P((char **));
+static int bash_ignore_filenames PARAMS((char **));
+static int bash_ignore_everything PARAMS((char **));
+static int bash_progcomp_ignore_filenames PARAMS((char **));
#if defined (BANG_HISTORY)
-static char *history_expand_line_internal __P((char *));
-static int history_expand_line __P((int, int));
-static int tcsh_magic_space __P((int, int));
+static char *history_expand_line_internal PARAMS((char *));
+static int history_expand_line PARAMS((int, int));
+static int tcsh_magic_space PARAMS((int, int));
#endif /* BANG_HISTORY */
#ifdef ALIAS
-static int alias_expand_line __P((int, int));
+static int alias_expand_line PARAMS((int, int));
#endif
#if defined (BANG_HISTORY) && defined (ALIAS)
-static int history_and_alias_expand_line __P((int, int));
+static int history_and_alias_expand_line PARAMS((int, int));
#endif
-static int bash_forward_shellword __P((int, int));
-static int bash_backward_shellword __P((int, int));
-static int bash_kill_shellword __P((int, int));
-static int bash_backward_kill_shellword __P((int, int));
+static int bash_forward_shellword PARAMS((int, int));
+static int bash_backward_shellword PARAMS((int, int));
+static int bash_kill_shellword PARAMS((int, int));
+static int bash_backward_kill_shellword PARAMS((int, int));
+static int bash_transpose_shellwords PARAMS((int, int));
/* Helper functions for Readline. */
-static char *restore_tilde __P((char *, char *));
-static char *maybe_restore_tilde __P((char *, char *));
+static char *restore_tilde PARAMS((char *, char *));
+static char *maybe_restore_tilde PARAMS((char *, char *));
-static char *bash_filename_rewrite_hook __P((char *, int));
+static char *bash_filename_rewrite_hook PARAMS((char *, int));
-static void bash_directory_expansion __P((char **));
-static int bash_filename_stat_hook __P((char **));
-static int bash_command_name_stat_hook __P((char **));
-static int bash_directory_completion_hook __P((char **));
-static int filename_completion_ignore __P((char **));
-static int bash_push_line __P((void));
+static void bash_directory_expansion PARAMS((char **));
+static int bash_filename_stat_hook PARAMS((char **));
+static int bash_command_name_stat_hook PARAMS((char **));
+static int bash_directory_completion_hook PARAMS((char **));
+static int filename_completion_ignore PARAMS((char **));
+static int bash_push_line PARAMS((void));
-static int executable_completion __P((const char *, int));
+static int executable_completion PARAMS((const char *, int));
-static rl_icppfunc_t *save_directory_hook __P((void));
-static void restore_directory_hook __P((rl_icppfunc_t));
+static rl_icppfunc_t *save_directory_hook PARAMS((void));
+static void restore_directory_hook PARAMS((rl_icppfunc_t));
-static int directory_exists __P((const char *, int));
+static int directory_exists PARAMS((const char *, int));
-static void cleanup_expansion_error __P((void));
-static void maybe_make_readline_line __P((char *));
-static void set_up_new_line __P((char *));
+static void cleanup_expansion_error PARAMS((void));
+static void maybe_make_readline_line PARAMS((char *));
+static void set_up_new_line PARAMS((char *));
-static int check_redir __P((int));
-static char **attempt_shell_completion __P((const char *, int, int));
-static char *variable_completion_function __P((const char *, int));
-static char *hostname_completion_function __P((const char *, int));
-static char *command_subst_completion_function __P((const char *, int));
+static int check_redir PARAMS((int));
+static char **attempt_shell_completion PARAMS((const char *, int, int));
+static char *variable_completion_function PARAMS((const char *, int));
+static char *hostname_completion_function PARAMS((const char *, int));
+static char *command_subst_completion_function PARAMS((const char *, int));
-static void build_history_completion_array __P((void));
-static char *history_completion_generator __P((const char *, int));
-static int dynamic_complete_history __P((int, int));
-static int bash_dabbrev_expand __P((int, int));
+static void build_history_completion_array PARAMS((void));
+static char *history_completion_generator PARAMS((const char *, int));
+static int dynamic_complete_history PARAMS((int, int));
+static int bash_dabbrev_expand PARAMS((int, int));
-static void initialize_hostname_list __P((void));
-static void add_host_name __P((char *));
-static void snarf_hosts_from_file __P((char *));
-static char **hostnames_matching __P((char *));
+static void initialize_hostname_list PARAMS((void));
+static void add_host_name PARAMS((char *));
+static void snarf_hosts_from_file PARAMS((char *));
+static char **hostnames_matching PARAMS((char *));
-static void _ignore_completion_names __P((char **, sh_ignore_func_t *));
-static int name_is_acceptable __P((const char *));
-static int test_for_directory __P((const char *));
-static int return_zero __P((const char *));
+static void _ignore_completion_names PARAMS((char **, sh_ignore_func_t *));
+static int name_is_acceptable PARAMS((const char *));
+static int test_for_directory PARAMS((const char *));
+static int test_for_canon_directory PARAMS((const char *));
+static int return_zero PARAMS((const char *));
-static char *bash_dequote_filename __P((char *, int));
-static char *quote_word_break_chars __P((char *));
-static void set_filename_bstab __P((const char *));
-static char *bash_quote_filename __P((char *, int, char *));
+static char *bash_dequote_filename PARAMS((char *, int));
+static char *quote_word_break_chars PARAMS((char *));
+static void set_filename_bstab PARAMS((const char *));
+static char *bash_quote_filename PARAMS((char *, int, char *));
#ifdef _MINIX
-static void putx __P((int));
+static void putx PARAMS((int));
#else
-static int putx __P((int));
+static int putx PARAMS((int));
#endif
-static int bash_execute_unix_command __P((int, int));
-static void init_unix_command_map __P((void));
-static int isolate_sequence __P((char *, int, int, int *));
+static int readline_get_char_offset PARAMS((int));
+static void readline_set_char_offset PARAMS((int, int *));
+
+static Keymap get_cmd_xmap_from_edit_mode PARAMS((void));
+static Keymap get_cmd_xmap_from_keymap PARAMS((Keymap));
-static int set_saved_history __P((void));
+static void init_unix_command_map PARAMS((void));
+static int isolate_sequence PARAMS((char *, int, int, int *));
+
+static int set_saved_history PARAMS((void));
#if defined (ALIAS)
-static int posix_edit_macros __P((int, int));
+static int posix_edit_macros PARAMS((int, int));
#endif
-static int bash_event_hook __P((void));
+static int bash_event_hook PARAMS((void));
#if defined (PROGRAMMABLE_COMPLETION)
-static int find_cmd_start __P((int));
-static int find_cmd_end __P((int));
-static char *find_cmd_name __P((int, int *, int *));
-static char *prog_complete_return __P((const char *, int));
+static int find_cmd_start PARAMS((int));
+static int find_cmd_end PARAMS((int));
+static char *find_cmd_name PARAMS((int, int *, int *));
+static char *prog_complete_return PARAMS((const char *, int));
static char **prog_complete_matches;
#endif
@@ -212,42 +233,42 @@ extern STRING_INT_ALIST word_token_alist[];
#define SPECIFIC_COMPLETION_FUNCTIONS
#if defined (SPECIFIC_COMPLETION_FUNCTIONS)
-static int bash_specific_completion __P((int, rl_compentry_func_t *));
-
-static int bash_complete_filename_internal __P((int));
-static int bash_complete_username_internal __P((int));
-static int bash_complete_hostname_internal __P((int));
-static int bash_complete_variable_internal __P((int));
-static int bash_complete_command_internal __P((int));
-
-static int bash_complete_filename __P((int, int));
-static int bash_possible_filename_completions __P((int, int));
-static int bash_complete_username __P((int, int));
-static int bash_possible_username_completions __P((int, int));
-static int bash_complete_hostname __P((int, int));
-static int bash_possible_hostname_completions __P((int, int));
-static int bash_complete_variable __P((int, int));
-static int bash_possible_variable_completions __P((int, int));
-static int bash_complete_command __P((int, int));
-static int bash_possible_command_completions __P((int, int));
-
-static int completion_glob_pattern __P((char *));
-static char *glob_complete_word __P((const char *, int));
-static int bash_glob_completion_internal __P((int));
-static int bash_glob_complete_word __P((int, int));
-static int bash_glob_expand_word __P((int, int));
-static int bash_glob_list_expansions __P((int, int));
+static int bash_specific_completion PARAMS((int, rl_compentry_func_t *));
+
+static int bash_complete_filename_internal PARAMS((int));
+static int bash_complete_username_internal PARAMS((int));
+static int bash_complete_hostname_internal PARAMS((int));
+static int bash_complete_variable_internal PARAMS((int));
+static int bash_complete_command_internal PARAMS((int));
+
+static int bash_complete_filename PARAMS((int, int));
+static int bash_possible_filename_completions PARAMS((int, int));
+static int bash_complete_username PARAMS((int, int));
+static int bash_possible_username_completions PARAMS((int, int));
+static int bash_complete_hostname PARAMS((int, int));
+static int bash_possible_hostname_completions PARAMS((int, int));
+static int bash_complete_variable PARAMS((int, int));
+static int bash_possible_variable_completions PARAMS((int, int));
+static int bash_complete_command PARAMS((int, int));
+static int bash_possible_command_completions PARAMS((int, int));
+
+static int completion_glob_pattern PARAMS((char *));
+static char *glob_complete_word PARAMS((const char *, int));
+static int bash_glob_completion_internal PARAMS((int));
+static int bash_glob_complete_word PARAMS((int, int));
+static int bash_glob_expand_word PARAMS((int, int));
+static int bash_glob_list_expansions PARAMS((int, int));
#endif /* SPECIFIC_COMPLETION_FUNCTIONS */
-static int edit_and_execute_command __P((int, int, int, char *));
+static int edit_and_execute_command PARAMS((int, int, int, char *));
#if defined (VI_MODE)
-static int vi_edit_and_execute_command __P((int, int));
-static int bash_vi_complete __P((int, int));
+static int vi_edit_and_execute_command PARAMS((int, int));
+static int bash_vi_complete PARAMS((int, int));
#endif
-static int emacs_edit_and_execute_command __P((int, int));
+static int emacs_edit_and_execute_command PARAMS((int, int));
-/* Non-zero once initalize_readline () has been called. */
+/* Non-zero once initialize_readline () has been called. */
int bash_readline_initialized = 0;
/* If non-zero, we do hostname completion, breaking words at `@' and
@@ -277,7 +298,7 @@ int dircomplete_expand_relpath = 0;
/* When non-zero, perform `normal' shell quoting on completed filenames
even when the completed name contains a directory name with a shell
- variable referene, so dollar signs in a filename get quoted appropriately.
+ variable reference, so dollar signs in a filename get quoted appropriately.
Set to zero to remove dollar sign (and braces or parens as needed) from
the set of characters that will be quoted. */
int complete_fullquote = 1;
@@ -310,16 +331,29 @@ static int completion_quoting_style = COMPLETE_BSQUOTE;
/* Flag values for the final argument to bash_default_completion */
#define DEFCOMP_CMDPOS 1
+static rl_command_func_t *vi_tab_binding = rl_complete;
+
/* Change the readline VI-mode keymaps into or out of Posix.2 compliance.
Called when the shell is put into or out of `posix' mode. */
void
posix_readline_initialize (on_or_off)
int on_or_off;
{
+ static char kseq[2] = { CTRL ('I'), 0 }; /* TAB */
+
if (on_or_off)
rl_variable_bind ("comment-begin", "#");
#if defined (VI_MODE)
- rl_bind_key_in_map (CTRL ('I'), on_or_off ? rl_insert : rl_complete, vi_insertion_keymap);
+ if (on_or_off)
+ {
+ vi_tab_binding = rl_function_of_keyseq (kseq, vi_insertion_keymap, (int *)NULL);
+ rl_bind_key_in_map (CTRL ('I'), rl_insert, vi_insertion_keymap);
+ }
+ else
+ {
+ if (rl_function_of_keyseq (kseq, vi_insertion_keymap, (int *)NULL) == rl_insert)
+ rl_bind_key_in_map (CTRL ('I'), vi_tab_binding, vi_insertion_keymap);
+ }
#endif
}
@@ -432,6 +466,7 @@ initialize_readline ()
rl_add_defun ("shell-backward-word", bash_backward_shellword, -1);
rl_add_defun ("shell-kill-word", bash_kill_shellword, -1);
rl_add_defun ("shell-backward-kill-word", bash_backward_kill_shellword, -1);
+ rl_add_defun ("shell-transpose-words", bash_transpose_shellwords, -1);
#ifdef ALIAS
rl_add_defun ("alias-expand-line", alias_expand_line, -1);
@@ -443,7 +478,6 @@ initialize_readline ()
/* Backwards compatibility. */
rl_add_defun ("insert-last-argument", rl_yank_last_arg, -1);
- rl_add_defun ("operate-and-get-next", operate_and_get_next, -1);
rl_add_defun ("display-shell-version", display_shell_version, -1);
rl_add_defun ("edit-and-execute-command", emacs_edit_and_execute_command, -1);
@@ -481,7 +515,6 @@ initialize_readline ()
rl_bind_key_if_unbound_in_map ('^', history_expand_line, emacs_meta_keymap);
#endif
- rl_bind_key_if_unbound_in_map (CTRL ('O'), operate_and_get_next, emacs_standard_keymap);
rl_bind_key_if_unbound_in_map (CTRL ('V'), display_shell_version, emacs_ctlx_keymap);
/* In Bash, the user can switch editing modes with "set -o [vi emacs]",
@@ -497,7 +530,10 @@ initialize_readline ()
if (func == rl_vi_editing_mode)
rl_unbind_key_in_map (CTRL('M'), emacs_meta_keymap);
#if defined (VI_MODE)
- rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap);
+ kseq[0] = CTRL('E');
+ func = rl_function_of_keyseq (kseq, vi_movement_keymap, (int *)NULL);
+ if (func == rl_emacs_editing_mode)
+ rl_unbind_key_in_map (CTRL('E'), vi_movement_keymap);
#endif
#if defined (BRACE_COMPLETION)
@@ -581,6 +617,13 @@ initialize_readline ()
rl_filename_dequoting_function = bash_dequote_filename;
rl_char_is_quoted_p = char_is_quoted;
+ /* Add some default bindings for the "shellwords" functions, roughly
+ parallelling the default word bindings in emacs mode. */
+ rl_bind_key_if_unbound_in_map (CTRL('B'), bash_backward_shellword, emacs_meta_keymap);
+ rl_bind_key_if_unbound_in_map (CTRL('D'), bash_kill_shellword, emacs_meta_keymap);
+ rl_bind_key_if_unbound_in_map (CTRL('F'), bash_forward_shellword, emacs_meta_keymap);
+ rl_bind_key_if_unbound_in_map (CTRL('T'), bash_transpose_shellwords, emacs_meta_keymap);
+
#if 0
/* This is superfluous and makes it impossible to use tab completion in
vi mode even when explicitly binding it in ~/.inputrc. sv_strict_posix()
@@ -874,56 +917,6 @@ hostnames_matching (text)
return (result);
}
-/* The equivalent of the Korn shell C-o operate-and-get-next-history-line
- editing command. */
-static int saved_history_line_to_use = -1;
-static int last_saved_history_line = -1;
-
-#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries)
-
-static int
-set_saved_history ()
-{
- /* XXX - compensate for assumption that history was `shuffled' if it was
- actually not. */
- if (HISTORY_FULL () &&
- hist_last_line_added == 0 &&
- saved_history_line_to_use < history_length - 1)
- saved_history_line_to_use++;
-
- if (saved_history_line_to_use >= 0)
- {
- rl_get_previous_history (history_length - saved_history_line_to_use, 0);
- last_saved_history_line = saved_history_line_to_use;
- }
- saved_history_line_to_use = -1;
- rl_startup_hook = old_rl_startup_hook;
- return (0);
-}
-
-static int
-operate_and_get_next (count, c)
- int count, c;
-{
- int where;
-
- /* Accept the current line. */
- rl_newline (1, c);
-
- /* Find the current line, and find the next line to use. */
- where = rl_explicit_arg ? count : where_history ();
-
- if (HISTORY_FULL () || (where >= history_length - 1) || rl_explicit_arg)
- saved_history_line_to_use = where;
- else
- saved_history_line_to_use = where + 1;
-
- old_rl_startup_hook = rl_startup_hook;
- rl_startup_hook = set_saved_history;
-
- return 0;
-}
-
/* This vi mode command causes VI_EDIT_COMMAND to be run on the current
command being entered (if no explicit argument is given), otherwise on
a command from the history file. */
@@ -975,11 +968,17 @@ edit_and_execute_command (count, c, editing_mode, edit_command)
if (rl_deprep_term_function)
(*rl_deprep_term_function) ();
+ rl_clear_signals ();
save_parser_state (&ps);
r = parse_and_execute (command, (editing_mode == VI_EDITING_MODE) ? "v" : "C-xC-e", SEVAL_NOHIST);
restore_parser_state (&ps);
+
+ /* if some kind of reset_parser was called, undo it. */
+ reset_readahead_token ();
+
if (rl_prep_term_function)
(*rl_prep_term_function) (metaflag);
+ rl_set_signals ();
current_command_line_count = saved_command_line_count;
@@ -1162,7 +1161,7 @@ bash_backward_shellword (count, key)
int count, key;
{
size_t slen;
- int c, p;
+ int c, p, prev_p;
DECLARE_MBSTATE;
if (count < 0)
@@ -1171,9 +1170,6 @@ bash_backward_shellword (count, key)
p = rl_point;
slen = rl_end;
- if (p == rl_end && p > 0)
- p--;
-
while (count)
{
if (p == 0)
@@ -1182,7 +1178,10 @@ bash_backward_shellword (count, key)
return 0;
}
- /* Move backward until we hit a non-metacharacter. */
+ /* Move backward until we hit a non-metacharacter. We want to deal
+ with the characters before point, so we move off a word if we're
+ at its first character. */
+ BACKUP_CHAR (rl_line_buffer, slen, p);
while (p > 0)
{
c = rl_line_buffer[p];
@@ -1197,12 +1196,18 @@ bash_backward_shellword (count, key)
return 0;
}
- /* Now move backward until we hit a metacharacter or BOL. */
+ /* Now move backward until we hit a metacharacter or BOL. Leave point
+ at the start of the shellword or at BOL. */
+ prev_p = p;
while (p > 0)
{
c = rl_line_buffer[p];
if (WORDDELIM (c) && char_is_quoted (rl_line_buffer, p) == 0)
- break;
+ {
+ p = prev_p;
+ break;
+ }
+ prev_p = p;
BACKUP_CHAR (rl_line_buffer, slen, p);
}
@@ -1229,7 +1234,7 @@ bash_kill_shellword (count, key)
rl_kill_text (p, rl_point);
rl_point = p;
- if (rl_editing_mode == 1) /* 1 == emacs_mode */
+ if (rl_editing_mode == EMACS_EDITING_MODE) /* 1 == emacs_mode */
rl_mark = rl_point;
return 0;
@@ -1250,12 +1255,70 @@ bash_backward_kill_shellword (count, key)
if (rl_point != p)
rl_kill_text (p, rl_point);
- if (rl_editing_mode == 1) /* 1 == emacs_mode */
+ if (rl_editing_mode == EMACS_EDITING_MODE) /* 1 == emacs_mode */
rl_mark = rl_point;
return 0;
}
+static int
+bash_transpose_shellwords (count, key)
+ int count, key;
+{
+ char *word1, *word2;
+ int w1_beg, w1_end, w2_beg, w2_end;
+ int orig_point = rl_point;
+
+ if (count == 0)
+ return 0;
+
+ /* Find the two shell words. */
+ bash_forward_shellword (count, key);
+ w2_end = rl_point;
+ bash_backward_shellword (1, key);
+ w2_beg = rl_point;
+ bash_backward_shellword (count, key);
+ w1_beg = rl_point;
+ bash_forward_shellword (1, key);
+ w1_end = rl_point;
+
+ /* check that there really are two words. */
+ if ((w1_beg == w2_beg) || (w2_beg < w1_end))
+ {
+ rl_ding ();
+ rl_point = orig_point;
+ return 1;
+ }
+
+ /* Get the text of the words. */
+ word1 = rl_copy_text (w1_beg, w1_end);
+ word2 = rl_copy_text (w2_beg, w2_end);
+
+ /* We are about to do many insertions and deletions. Remember them
+ as one operation. */
+ rl_begin_undo_group ();
+
+ /* Do the stuff at word2 first, so that we don't have to worry
+ about word1 moving. */
+ rl_point = w2_beg;
+ rl_delete_text (w2_beg, w2_end);
+ rl_insert_text (word1);
+
+ rl_point = w1_beg;
+ rl_delete_text (w1_beg, w1_end);
+ rl_insert_text (word2);
+
+ /* This is exactly correct since the text before this point has not
+ changed in length. */
+ rl_point = w2_end;
+
+ /* I think that does it. */
+ rl_end_undo_group ();
+ xfree (word1);
+ xfree (word2);
+
+ return 0;
+}
/* **************************************************************** */
/* */
@@ -1321,7 +1384,7 @@ find_cmd_start (start)
rl_line_buffer[s])
{
/* Handle >| token crudely; treat as > not | */
- if (rl_line_buffer[s] == '|' && rl_line_buffer[s-1] == '>')
+ if (s > 0 && 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)
@@ -1329,6 +1392,28 @@ find_cmd_start (start)
os = ns+1;
continue;
}
+ /* The only reserved word in COMMAND_SEPARATORS is `{', so handle that
+ specially, making sure it's in a spot acceptable for reserved words */
+ if (s >= os && rl_line_buffer[s] == '{')
+ {
+ int pc, nc; /* index of previous non-whitespace, next char */
+ for (pc = (s > os) ? s - 1 : os; pc > os && whitespace(rl_line_buffer[pc]); pc--)
+ ;
+ nc = rl_line_buffer[s+1];
+ /* must be preceded by a command separator or be the first non-
+ whitespace character since the last command separator, and
+ followed by a shell break character (not another `{') to be a reserved word. */
+ if ((pc > os && (rl_line_buffer[s-1] == '{' || strchr (COMMAND_SEPARATORS, rl_line_buffer[pc]) == 0)) ||
+ (shellbreak(nc) == 0)) /* }} */
+ {
+ /* Not a reserved word, look for another delim */
+ 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;
@@ -2028,7 +2113,7 @@ globword:
if (state == 0)
{
glob_ignore_case = igncase;
- glob_matches = shell_glob_filename (hint);
+ glob_matches = shell_glob_filename (hint, 0);
glob_ignore_case = old_glob_ignore_case;
if (GLOB_FAILED (glob_matches) || glob_matches == 0)
@@ -2957,6 +3042,21 @@ test_for_directory (name)
return (r);
}
+static int
+test_for_canon_directory (name)
+ const char *name;
+{
+ char *fn;
+ int r;
+
+ fn = (*name == '~') ? bash_tilde_expand (name, 0) : savestring (name);
+ bash_filename_stat_hook (&fn);
+ r = file_isdir (fn);
+ free (fn);
+
+ return (r);
+}
+
/* Remove files from NAMES, leaving directories. */
static int
bash_ignore_filenames (names)
@@ -2967,6 +3067,14 @@ bash_ignore_filenames (names)
}
static int
+bash_progcomp_ignore_filenames (names)
+ char **names;
+{
+ _ignore_completion_names (names, test_for_canon_directory);
+ return 0;
+}
+
+static int
return_zero (name)
const char *name;
{
@@ -3715,55 +3823,7 @@ static int
completion_glob_pattern (string)
char *string;
{
- register int c;
- char *send;
- int open;
-
- DECLARE_MBSTATE;
-
- open = 0;
- send = string + strlen (string);
-
- while (c = *string++)
- {
- switch (c)
- {
- case '?':
- case '*':
- return (1);
-
- case '[':
- open++;
- continue;
-
- case ']':
- if (open)
- return (1);
- continue;
-
- case '+':
- case '@':
- case '!':
- if (*string == '(') /*)*/
- return (1);
- continue;
-
- case '\\':
- if (*string++ == 0)
- return (0);
- }
-
- /* Advance one fewer byte than an entire multibyte character to
- account for the auto-increment in the loop above. */
-#ifdef HANDLE_MULTIBYTE
- string--;
- ADVANCE_CHAR_P (string, send - string);
- string++;
-#else
- ADVANCE_CHAR_P (string, send - string);
-#endif
- }
- return (0);
+ return (glob_pattern_p (string) == 1);
}
static char *globtext;
@@ -3804,7 +3864,7 @@ glob_complete_word (text, state)
if (ttext != text)
free (ttext);
- matches = shell_glob_filename (globtext);
+ matches = shell_glob_filename (globtext, 0);
if (GLOB_FAILED (matches))
matches = (char **)NULL;
ind = 0;
@@ -4050,7 +4110,7 @@ set_filename_bstab (string)
memset (filename_bstab, 0, sizeof (filename_bstab));
for (s = string; s && *s; s++)
- filename_bstab[*s] = 1;
+ filename_bstab[(unsigned char)*s] = 1;
}
/* Quote a filename using double quotes, single quotes, or backslashes
@@ -4155,8 +4215,14 @@ bash_quote_filename (s, rtype, qcp)
return ret;
}
-/* Support for binding readline key sequences to Unix commands. */
-static Keymap cmd_xmap;
+/* Support for binding readline key sequences to Unix commands. Each editing
+ mode has a separate Unix command keymap. */
+
+static Keymap emacs_std_cmd_xmap;
+#if defined (VI_MODE)
+static Keymap vi_insert_cmd_xmap;
+static Keymap vi_movement_cmd_xmap;
+#endif
#ifdef _MINIX
static void
@@ -4172,8 +4238,50 @@ putx(c)
return x;
#endif
}
-
+
static int
+readline_get_char_offset (ind)
+ int ind;
+{
+ int r, old_ch;
+
+ r = ind;
+#if defined (HANDLE_MULTIBYTE)
+ if (locale_mb_cur_max > 1)
+ {
+ old_ch = rl_line_buffer[ind];
+ rl_line_buffer[ind] = '\0';
+ r = MB_STRLEN (rl_line_buffer);
+ rl_line_buffer[ind] = old_ch;
+ }
+#endif
+ return r;
+}
+
+static void
+readline_set_char_offset (ind, varp)
+ int ind;
+ int *varp;
+{
+ int i;
+
+ i = ind;
+
+#if defined (HANDLE_MULTIBYTE)
+ if (i > 0 && locale_mb_cur_max > 1)
+ i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0); /* XXX */
+#endif
+ if (i != *varp)
+ {
+ if (i > rl_end)
+ i = rl_end;
+ else if (i < 0)
+ i = 0;
+ *varp = i;
+ }
+}
+
+int
bash_execute_unix_command (count, key)
int count; /* ignored */
int key;
@@ -4185,12 +4293,17 @@ bash_execute_unix_command (count, key)
char *cmd, *value, *ce, old_ch;
SHELL_VAR *v;
char ibuf[INT_STRLEN_BOUND(int) + 1];
+ Keymap cmd_xmap;
/* First, we need to find the right command to execute. This is tricky,
because we might have already indirected into another keymap, so we
have to walk cmd_xmap using the entire key sequence. */
+ cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ());
cmd = (char *)rl_function_of_keyseq_len (rl_executing_keyseq, rl_key_sequence_length, cmd_xmap, &type);
-
+
+ if (type == ISKMAP && (type = ((Keymap) cmd)[ANYOTHERKEY].type) == ISMACR)
+ cmd = (char*)((Keymap) cmd)[ANYOTHERKEY].function;
+
if (cmd == 0 || type != ISMACR)
{
rl_crlf ();
@@ -4202,12 +4315,7 @@ 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
@@ -4216,24 +4324,24 @@ bash_execute_unix_command (count, key)
v = bind_variable ("READLINE_LINE", rl_line_buffer, 0);
if (v)
VSETATTR (v, att_exported);
- i = rl_point;
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1)
- {
- old_ch = rl_line_buffer[rl_point];
- rl_line_buffer[rl_point] = '\0';
- i = MB_STRLEN (rl_line_buffer);
- rl_line_buffer[rl_point] = old_ch;
- }
-#endif
+
+ i = readline_get_char_offset (rl_point);
value = inttostr (i, ibuf, sizeof (ibuf));
v = bind_int_variable ("READLINE_POINT", value, 0);
if (v)
VSETATTR (v, att_exported);
+
+ i = readline_get_char_offset (rl_mark);
+ value = inttostr (i, ibuf, sizeof (ibuf));
+ v = bind_int_variable ("READLINE_MARK", value, 0);
+ if (v)
+ VSETATTR (v, att_exported);
array_needs_making = 1;
save_parser_state (&ps);
- r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST|SEVAL_NOFREE);
+ rl_clear_signals ();
+ r = parse_and_execute (savestring (cmd), "bash_execute_unix_command", SEVAL_NOHIST);
+ rl_set_signals ();
restore_parser_state (&ps);
v = find_variable ("READLINE_LINE");
@@ -4241,24 +4349,15 @@ bash_execute_unix_command (count, key)
v = find_variable ("READLINE_POINT");
if (v && legal_number (value_cell (v), &mi))
- {
- i = mi;
-#if defined (HANDLE_MULTIBYTE)
- if (i > 0 && MB_CUR_MAX > 1)
- i = _rl_find_next_mbchar (rl_line_buffer, 0, i, 0);
-#endif
- if (i != rl_point)
- {
- rl_point = i;
- if (rl_point > rl_end)
- rl_point = rl_end;
- else if (rl_point < 0)
- rl_point = 0;
- }
- }
+ readline_set_char_offset (mi, &rl_point);
+
+ v = find_variable ("READLINE_MARK");
+ if (v && legal_number (value_cell (v), &mi))
+ readline_set_char_offset (mi, &rl_mark);
check_unbind_variable ("READLINE_LINE");
check_unbind_variable ("READLINE_POINT");
+ check_unbind_variable ("READLINE_MARK");
array_needs_making = 1;
/* and restore the readline buffer and display after command execution. */
@@ -4276,9 +4375,10 @@ bash_execute_unix_command (count, key)
int
print_unix_command_map ()
{
- Keymap save;
+ Keymap save, cmd_xmap;
save = rl_get_keymap ();
+ cmd_xmap = get_cmd_xmap_from_keymap (save);
rl_set_keymap (cmd_xmap);
rl_macro_dumper (1);
rl_set_keymap (save);
@@ -4288,7 +4388,59 @@ print_unix_command_map ()
static void
init_unix_command_map ()
{
- cmd_xmap = rl_make_bare_keymap ();
+ emacs_std_cmd_xmap = rl_make_bare_keymap ();
+
+ emacs_std_cmd_xmap[CTRL('X')].type = ISKMAP;
+ emacs_std_cmd_xmap[CTRL('X')].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap ());
+ emacs_std_cmd_xmap[ESC].type = ISKMAP;
+ emacs_std_cmd_xmap[ESC].function = KEYMAP_TO_FUNCTION (rl_make_bare_keymap ());
+
+#if defined (VI_MODE)
+ vi_insert_cmd_xmap = rl_make_bare_keymap ();
+ vi_movement_cmd_xmap = rl_make_bare_keymap ();
+#endif
+}
+
+static Keymap
+get_cmd_xmap_from_edit_mode ()
+{
+ if (emacs_std_cmd_xmap == 0)
+ init_unix_command_map ();
+
+ switch (rl_editing_mode)
+ {
+ case EMACS_EDITING_MODE:
+ return emacs_std_cmd_xmap;
+#if defined (VI_MODE)
+ case VI_EDITING_MODE:
+ return (get_cmd_xmap_from_keymap (rl_get_keymap ()));
+#endif
+ default:
+ return (Keymap)NULL;
+ }
+}
+
+static Keymap
+get_cmd_xmap_from_keymap (kmap)
+ Keymap kmap;
+{
+ if (emacs_std_cmd_xmap == 0)
+ init_unix_command_map ();
+
+ if (kmap == emacs_standard_keymap)
+ return emacs_std_cmd_xmap;
+ else if (kmap == emacs_meta_keymap)
+ return (FUNCTION_TO_KEYMAP (emacs_std_cmd_xmap, ESC));
+ else if (kmap == emacs_ctlx_keymap)
+ return (FUNCTION_TO_KEYMAP (emacs_std_cmd_xmap, CTRL('X')));
+#if defined (VI_MODE)
+ else if (kmap == vi_insertion_keymap)
+ return vi_insert_cmd_xmap;
+ else if (kmap == vi_movement_keymap)
+ return vi_movement_cmd_xmap;
+#endif
+ else
+ return (Keymap)NULL;
}
static int
@@ -4344,13 +4496,10 @@ int
bind_keyseq_to_unix_command (line)
char *line;
{
- Keymap kmap;
+ Keymap kmap, cmd_xmap;
char *kseq, *value;
int i, kstart;
- if (cmd_xmap == 0)
- init_unix_command_map ();
-
kmap = rl_get_keymap ();
/* We duplicate some of the work done by rl_parse_and_bind here, but
@@ -4383,6 +4532,7 @@ bind_keyseq_to_unix_command (line)
value = substring (line, kstart, i);
/* Save the command to execute and the key sequence in the CMD_XMAP */
+ cmd_xmap = get_cmd_xmap_from_keymap (kmap);
rl_generic_bind (ISMACR, kseq, value, cmd_xmap);
/* and bind the key sequence in the current keymap to a function that
@@ -4393,6 +4543,21 @@ bind_keyseq_to_unix_command (line)
return 0;
}
+int
+unbind_unix_command (kseq)
+ char *kseq;
+{
+ Keymap cmd_xmap;
+
+ cmd_xmap = get_cmd_xmap_from_keymap (rl_get_keymap ());
+ if (rl_bind_keyseq_in_map (kseq, (rl_command_func_t *)NULL, cmd_xmap) != 0)
+ {
+ builtin_error (_("`%s': cannot unbind in command keymap"), kseq);
+ return 0;
+ }
+ return 1;
+}
+
/* Used by the programmable completion code. Complete TEXT as a filename,
but return only directories as matches. Dequotes the filename before
attempting to find matches. */
@@ -4421,7 +4586,7 @@ bash_directory_completion_matches (text)
/* We don't bother recomputing the lcd of the matches, because it will just
get thrown away by the programmable completion code and recomputed
later. */
- (void)bash_ignore_filenames (m1);
+ (void)bash_progcomp_ignore_filenames (m1);
return m1;
}
@@ -4444,6 +4609,27 @@ bash_dequote_text (text)
static int
bash_event_hook ()
{
+ int sig;
+
+ /* XXX - see if we need to do anything here if sigterm_received == 1,
+ we probably don't want to reset the event hook since we will not be
+ jumping to the top level */
+ if (sigterm_received)
+ {
+ /* RESET_SIGTERM; */
+ return 0;
+ }
+
+ sig = 0;
+ if (terminating_signal)
+ sig = terminating_signal;
+ else if (interrupt_state)
+ sig = SIGINT;
+ else if (sigalrm_seen)
+ sig = SIGALRM;
+ else
+ sig = first_pending_trap ();
+
/* If we're going to longjmp to top_level, make sure we clean up readline.
check_signals will call QUIT, which will eventually longjmp to top_level,
calling run_interrupt_trap along the way. The check for sigalrm_seen is
@@ -4451,6 +4637,14 @@ bash_event_hook ()
if (terminating_signal || interrupt_state || sigalrm_seen)
rl_cleanup_after_signal ();
bashline_reset_event_hook ();
+
+ /* posix mode SIGINT during read -e. We only get here if SIGINT is trapped. */
+ if (posixly_correct && this_shell_builtin == read_builtin && sig == 2)
+ {
+ last_command_exit_value = 128|SIGINT;
+ throw_to_top_level ();
+ }
+
check_signals_and_traps (); /* XXX */
return 0;
}
diff --git a/bashline.h b/bashline.h
index 2571e11f..48c9fecf 100644
--- a/bashline.h
+++ b/bashline.h
@@ -1,6 +1,6 @@
/* bashline.h -- interface to the bash readline functions in bashline.c. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -35,33 +35,35 @@ extern int dircomplete_expand;
extern int dircomplete_expand_relpath;
extern int complete_fullquote;
-extern void posix_readline_initialize __P((int));
-extern void reset_completer_word_break_chars __P((void));
-extern int enable_hostname_completion __P((int));
-extern void initialize_readline __P((void));
-extern void bashline_reset __P((void));
-extern void bashline_reinitialize __P((void));
-extern int bash_re_edit __P((char *));
+extern void posix_readline_initialize PARAMS((int));
+extern void reset_completer_word_break_chars PARAMS((void));
+extern int enable_hostname_completion PARAMS((int));
+extern void initialize_readline PARAMS((void));
+extern void bashline_reset PARAMS((void));
+extern void bashline_reinitialize PARAMS((void));
+extern int bash_re_edit PARAMS((char *));
-extern void bashline_set_event_hook __P((void));
-extern void bashline_reset_event_hook __P((void));
+extern void bashline_set_event_hook PARAMS((void));
+extern void bashline_reset_event_hook PARAMS((void));
-extern int bind_keyseq_to_unix_command __P((char *));
-extern int print_unix_command_map __P((void));
+extern int bind_keyseq_to_unix_command PARAMS((char *));
+extern int bash_execute_unix_command PARAMS((int, int));
+extern int print_unix_command_map PARAMS((void));
+extern int unbind_unix_command PARAMS((char *));
-extern char **bash_default_completion __P((const char *, int, int, int, int));
+extern char **bash_default_completion PARAMS((const char *, int, int, int, int));
-void set_directory_hook __P((void));
+void set_directory_hook PARAMS((void));
/* Used by programmable completion code. */
-extern char *command_word_completion_function __P((const char *, int));
-extern char *bash_groupname_completion_function __P((const char *, int));
-extern char *bash_servicename_completion_function __P((const char *, int));
+extern char *command_word_completion_function PARAMS((const char *, int));
+extern char *bash_groupname_completion_function PARAMS((const char *, int));
+extern char *bash_servicename_completion_function PARAMS((const char *, int));
-extern char **get_hostname_list __P((void));
-extern void clear_hostname_list __P((void));
+extern char **get_hostname_list PARAMS((void));
+extern void clear_hostname_list PARAMS((void));
-extern char **bash_directory_completion_matches __P((const char *));
-extern char *bash_dequote_text __P((const char *));
+extern char **bash_directory_completion_matches PARAMS((const char *));
+extern char *bash_dequote_text PARAMS((const char *));
#endif /* _BASHLINE_H_ */
diff --git a/bracecomp.c b/bracecomp.c
index 4fbca858..2ea8ba97 100644
--- a/bracecomp.c
+++ b/bracecomp.c
@@ -4,7 +4,7 @@
/* Original version by tromey@cns.caltech.edu, Fri Feb 7 1992. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -41,7 +41,7 @@
#include "shell.h"
#include <readline/readline.h>
-static int _strcompare __P((char **, char **));
+static int _strcompare PARAMS((char **, char **));
/* Find greatest common prefix of two strings. */
static int
diff --git a/braces.c b/braces.c
index 485de369..e91d326e 100644
--- a/braces.c
+++ b/braces.c
@@ -1,6 +1,6 @@
/* braces.c -- code for doing word expansion in curly braces. */
-/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -59,11 +59,7 @@ extern int errno;
#define BRACE_SEQ_SPECIFIER ".."
-extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
-
-#if defined (NOTDEF)
-extern int last_command_exit_value;
-#endif
+extern int asprintf PARAMS((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
/* Basic idea:
@@ -77,12 +73,12 @@ extern int last_command_exit_value;
/* The character which is used to separate arguments. */
static const int brace_arg_separator = ',';
-#if defined (__P)
-static int brace_gobbler __P((char *, size_t, int *, int));
-static char **expand_amble __P((char *, size_t, int));
-static char **expand_seqterm __P((char *, size_t));
-static char **mkseq __P((intmax_t, intmax_t, intmax_t, int, int));
-static char **array_concat __P((char **, char **));
+#if defined (PARAMS)
+static int brace_gobbler PARAMS((char *, size_t, int *, int));
+static char **expand_amble PARAMS((char *, size_t, int));
+static char **expand_seqterm PARAMS((char *, size_t));
+static char **mkseq PARAMS((intmax_t, intmax_t, intmax_t, int, int));
+static char **array_concat PARAMS((char **, char **));
#else
static int brace_gobbler ();
static char **expand_amble ();
@@ -190,7 +186,7 @@ brace_expand (text)
if (text[j] == brace_arg_separator)
{ /* { */
strvec_dispose (result);
- last_command_exit_value = 1;
+ set_exit_status (EXECUTION_FAILURE);
report_error ("no closing `%c' in %s", '}', text);
throw_to_top_level ();
}
@@ -360,25 +356,6 @@ expand_amble (text, tlen, flags)
#define ST_CHAR 2
#define ST_ZINT 3
-#ifndef sh_imaxabs
-# define sh_imaxabs(x) (((x) >= 0) ? (x) : -(x))
-#endif
-
-/* Handle signed arithmetic overflow and underflow. Have to do it this way
- to avoid compilers optimizing out simpler overflow checks. */
-
-/* Make sure that a+b does not exceed MAXV or is smaller than MINV (if b < 0).
- Assumes that b > 0 if a > 0 and b < 0 if a < 0 */
-#define ADDOVERFLOW(a,b,minv,maxv) \
- ((((a) > 0) && ((b) > ((maxv) - (a)))) || \
- (((a) < 0) && ((b) < ((minv) - (a)))))
-
-/* Make sure that a-b is not smaller than MINV or exceeds MAXV (if b < 0).
- Assumes that b > 0 if a > 0 and b < 0 if a < 0 */
-#define SUBOVERFLOW(a,b,minv,maxv) \
- ((((b) > 0) && ((a) < ((minv) + (b)))) || \
- (((b) < 0) && ((a) > ((maxv) + (b)))))
-
static char **
mkseq (start, end, incr, type, width)
intmax_t start, end, incr;
diff --git a/builtins/Makefile.in b/builtins/Makefile.in
index 388ca4eb..3f44f05e 100644
--- a/builtins/Makefile.in
+++ b/builtins/Makefile.in
@@ -410,6 +410,12 @@ 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
+colon.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h $(topdir)/error.h
+colon.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/externs.h
+colon.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h $(topdir)/sig.h
+colon.o: $(topdir)/shell.h $(topdir)/syntax.h $(topdir)/unwind_prot.h $(topdir)/variables.h $(topdir)/conftypes.h
+colon.o: $(BASHINCDIR)/maxpath.h ../pathnames.h
+colon.o: $(srcdir)/common.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
@@ -429,6 +435,7 @@ echo.o: $(topdir)/general.h $(topdir)/xmalloc.h $(topdir)/subst.h $(topdir)/exte
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
+echo.o: $(srcdir)/common.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
diff --git a/builtins/alias.def b/builtins/alias.def
index bf484f33..0ab90696 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -63,7 +63,7 @@ $END
/* Flags for print_alias */
#define AL_REUSABLE 0x01
-static void print_alias __P((alias_t *, int));
+static void print_alias PARAMS((alias_t *, int));
/* Hack the alias command in a Korn shell way. */
int
diff --git a/builtins/bashgetopt.h b/builtins/bashgetopt.h
index 6637b429..dcdaa48a 100644
--- a/builtins/bashgetopt.h
+++ b/builtins/bashgetopt.h
@@ -1,6 +1,6 @@
/* bashgetopt.h -- extern declarations for stuff defined in bashgetopt.c. */
-/* Copyright (C) 1993 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,7 +36,7 @@ extern int list_opttype;
extern WORD_LIST *lcurrent;
extern WORD_LIST *loptend;
-extern int internal_getopt __P((WORD_LIST *, char *));
-extern void reset_internal_getopt __P((void));
+extern int internal_getopt PARAMS((WORD_LIST *, char *));
+extern void reset_internal_getopt PARAMS((void));
#endif /* !__BASH_GETOPT_H */
diff --git a/builtins/bind.def b/builtins/bind.def
index 2b18873c..ccfc08dc 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -86,9 +86,9 @@ extern int errno;
#include "bashgetopt.h"
#include "common.h"
-static int query_bindings __P((char *));
-static int unbind_command __P((char *));
-static int unbind_keyseq __P((char *));
+static int query_bindings PARAMS((char *));
+static int unbind_command PARAMS((char *));
+static int unbind_keyseq PARAMS((char *));
#define BIND_RETURN(x) do { return_code = x; goto bind_exit; } while (0)
@@ -192,7 +192,7 @@ bind_builtin (list)
case 'X':
flags |= XXFLAG;
break;
- CASE_HELPOPT;
+ case GETOPT_HELP:
default:
builtin_usage ();
BIND_RETURN (EX_USAGE);
@@ -277,7 +277,28 @@ bind_builtin (list)
/* Process the rest of the arguments as binding specifications. */
while (list)
{
+ int olen, nlen, d, i;
+ char **obindings, **nbindings;
+
+ obindings = rl_invoking_keyseqs (bash_execute_unix_command);
+ olen = obindings ? strvec_len (obindings) : 0;
+
rl_parse_and_bind (list->word->word);
+
+ nbindings = rl_invoking_keyseqs (bash_execute_unix_command);
+ nlen = nbindings ? strvec_len (nbindings) : 0;
+
+ if (nlen < olen) /* fewer bind -x bindings */
+ for (d = olen - nlen, i = 0; i < olen && d > 0; i++)
+ if (nlen == 0 || strvec_search (nbindings, obindings[i]) >= 0)
+ {
+ unbind_unix_command (obindings[i]);
+ d--;
+ }
+
+ strvec_dispose (obindings);
+ strvec_dispose (nbindings);
+
list = list->next;
}
@@ -287,6 +308,9 @@ bind_builtin (list)
run_unwind_frame ("bind_builtin");
+ if (return_code < 0)
+ return_code = EXECUTION_FAILURE;
+
return (sh_chkwrite (return_code));
}
@@ -344,7 +368,8 @@ unbind_keyseq (seq)
char *seq;
{
char *kseq;
- int kslen;
+ int kslen, type;
+ rl_command_func_t *f;
kseq = (char *)xmalloc ((2 * strlen (seq)) + 1);
if (rl_translate_keyseq (seq, kseq, &kslen))
@@ -353,11 +378,13 @@ unbind_keyseq (seq)
builtin_error (_("`%s': cannot unbind"), seq);
return EXECUTION_FAILURE;
}
- if (rl_function_of_keyseq (kseq, (Keymap)0, (int *)0) == 0)
+ if ((f = rl_function_of_keyseq_len (kseq, kslen, (Keymap)0, &type)) == 0)
{
free (kseq);
return (EXECUTION_SUCCESS);
}
+ if (type == ISKMAP)
+ f = ((Keymap) f)[ANYOTHERKEY].function;
/* I wish this didn't have to translate the key sequence again, but readline
doesn't have a binding function that takes a translated key sequence as
@@ -369,6 +396,9 @@ unbind_keyseq (seq)
return (EXECUTION_FAILURE);
}
+ if (f == bash_execute_unix_command)
+ unbind_unix_command (seq);
+
free (kseq);
return (EXECUTION_SUCCESS);
}
diff --git a/builtins/break.def b/builtins/break.def
index 876d0635..b73ed5e5 100644
--- a/builtins/break.def
+++ b/builtins/break.def
@@ -1,7 +1,7 @@
This file is break.def, from which is created break.c.
It implements the builtins "break" and "continue" in Bash.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -46,7 +46,7 @@ $END
#include "../execute_cmd.h"
#include "common.h"
-static int check_loop_level __P((void));
+static int check_loop_level PARAMS((void));
/* The depth of while's and until's. */
int loop_level = 0;
diff --git a/builtins/caller.def b/builtins/caller.def
index bf5eb96f..1000979d 100644
--- a/builtins/caller.def
+++ b/builtins/caller.def
@@ -2,7 +2,7 @@ This file is caller.def, from which is created caller.c. It implements the
builtin "caller" in Bash.
Copyright (C) 2002-2008 Rocky Bernstein for Free Software Foundation, Inc.
-Copyright (C) 2008-2013 Free Software Foundation, Inc.
+Copyright (C) 2008-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -135,8 +135,8 @@ caller_builtin (list)
static char *caller_doc[] = {
N_("Returns 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\
+ 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\
diff --git a/builtins/cd.def b/builtins/cd.def
index fe75b57f..7205608c 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-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -56,13 +56,13 @@ extern int errno;
extern const char * const bash_getcwd_errstr;
-static int bindpwd __P((int));
-static int setpwd __P((char *));
-static char *resetpwd __P((char *));
-static int change_to_directory __P((char *, int, int));
+static int bindpwd PARAMS((int));
+static int setpwd PARAMS((char *));
+static char *resetpwd PARAMS((char *));
+static int change_to_directory PARAMS((char *, int, int));
-static int cdxattr __P((char *, char **));
-static void resetxattr __P((void));
+static int cdxattr PARAMS((char *, char **));
+static void resetxattr PARAMS((void));
/* Change this to 1 to get cd spelling correction by default. */
int cdspelling = 0;
@@ -149,6 +149,7 @@ bindpwd (no_symlinks)
#undef tcwd
/* If canonicalization fails, reset dirname to the_current_working_directory */
+ canon_failed = 0;
if (dirname == 0)
{
canon_failed = 1;
diff --git a/builtins/colon.def b/builtins/colon.def
index 4b78b30c..6891b079 100644
--- a/builtins/colon.def
+++ b/builtins/colon.def
@@ -1,7 +1,7 @@
This file is colon.def, from which is created colon.c.
It implements the builtin ":" in Bash.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -50,10 +50,19 @@ Exit Status:
Always fails.
$END
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include "../bashansi.h"
+#include "../shell.h"
+
/* Return a successful result. */
int
colon_builtin (ignore)
- char *ignore;
+ WORD_LIST *ignore;
{
return (0);
}
@@ -61,7 +70,7 @@ colon_builtin (ignore)
/* Return an unsuccessful result. */
int
false_builtin (ignore)
- char *ignore;
+ WORD_LIST *ignore;
{
return (1);
}
diff --git a/builtins/command.def b/builtins/command.def
index d58c985b..acd46cc1 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -57,7 +57,7 @@ $END
#include "common.h"
#if defined (_CS_PATH) && defined (HAVE_CONFSTR) && !HAVE_DECL_CONFSTR
-extern size_t confstr __P((int, char *, size_t));
+extern size_t confstr PARAMS((int, char *, size_t));
#endif
/* Run the commands mentioned in LIST without paying attention to shell
@@ -124,6 +124,10 @@ command_builtin (list)
#define COMMAND_BUILTIN_FLAGS (CMD_NO_FUNCTIONS | CMD_INHIBIT_EXPANSION | CMD_COMMAND_BUILTIN | (use_standard_path ? CMD_STDPATH : 0))
+#ifdef DEBUG
+ itrace("command_builtin: running execute_command for `%s'", list->word->word);
+#endif
+
/* 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. */
command = make_bare_simple_command ();
diff --git a/builtins/common.c b/builtins/common.c
index 00be24ea..3c9ac49d 100644
--- a/builtins/common.c
+++ b/builtins/common.c
@@ -1,6 +1,6 @@
/* common.c - utility functions for all builtins */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -373,7 +373,8 @@ make_builtin_argv (list, ip)
/* Remember LIST in $1 ... $9, and REST_OF_ARGS. If DESTRUCTIVE is
non-zero, then discard whatever the existing arguments are, else
- only discard the ones that are to be replaced. */
+ only discard the ones that are to be replaced. Set POSPARAM_COUNT
+ to the number of args assigned (length of LIST). */
void
remember_args (list, destructive)
WORD_LIST *list;
@@ -381,6 +382,8 @@ remember_args (list, destructive)
{
register int i;
+ posparam_count = 0;
+
for (i = 1; i < 10; i++)
{
if ((destructive || list) && dollar_vars[i])
@@ -391,7 +394,7 @@ remember_args (list, destructive)
if (list)
{
- dollar_vars[i] = savestring (list->word->word);
+ dollar_vars[posparam_count = i] = savestring (list->word->word);
list = list->next;
}
}
@@ -403,6 +406,7 @@ remember_args (list, destructive)
{
dispose_words (rest_of_args);
rest_of_args = copy_word_list (list);
+ posparam_count += list_length (list);
}
if (destructive)
@@ -411,6 +415,58 @@ remember_args (list, destructive)
invalidate_cached_quoted_dollar_at ();
}
+void
+shift_args (times)
+ int times;
+{
+ WORD_LIST *temp;
+ int count;
+
+ if (times <= 0) /* caller should check */
+ return;
+
+ while (times-- > 0)
+ {
+ if (dollar_vars[1])
+ free (dollar_vars[1]);
+
+ for (count = 1; count < 9; count++)
+ dollar_vars[count] = dollar_vars[count + 1];
+
+ if (rest_of_args)
+ {
+ temp = rest_of_args;
+ dollar_vars[9] = savestring (temp->word->word);
+ rest_of_args = rest_of_args->next;
+ temp->next = (WORD_LIST *)NULL;
+ dispose_words (temp);
+ }
+ else
+ dollar_vars[9] = (char *)NULL;
+
+ posparam_count--;
+ }
+}
+
+int
+number_of_args ()
+{
+#ifdef DEBUG
+ register WORD_LIST *list;
+ int n;
+
+ for (n = 0; n < 9 && dollar_vars[n+1]; n++)
+ ;
+ for (list = rest_of_args; list; list = list->next)
+ n++;
+
+if (n != posparam_count)
+ itrace("number_of_args: n (%d) != posparam_count (%d)", n, posparam_count);
+#endif
+
+ return posparam_count;
+}
+
static int changed_dollar_vars;
/* Have the dollar variables been reset to new values since we last
@@ -908,3 +964,54 @@ builtin_help ()
printf ("%s: %s\n", this_command_name, _("help not available in this version"));
}
#endif
+
+/* **************************************************************** */
+/* */
+/* Variable assignments during builtin commands */
+/* */
+/* **************************************************************** */
+
+SHELL_VAR *
+builtin_bind_variable (name, value, flags)
+ char *name;
+ char *value;
+ int flags;
+{
+ SHELL_VAR *v;
+
+#if defined (ARRAY_VARS)
+ if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
+ v = bind_variable (name, value, flags);
+ else
+ v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0));
+#else /* !ARRAY_VARS */
+ v = bind_variable (name, value, flags);
+#endif /* !ARRAY_VARS */
+
+ if (v && readonly_p (v) == 0 && noassign_p (v) == 0)
+ VUNSETATTR (v, att_invisible);
+
+ return v;
+}
+
+/* Like check_unbind_variable, but for use by builtins (only matters for
+ error messages). */
+int
+builtin_unbind_variable (vname)
+ const char *vname;
+{
+ SHELL_VAR *v;
+
+ v = find_variable (vname);
+ if (v && readonly_p (v))
+ {
+ builtin_error (_("%s: cannot unset: readonly %s"), vname, "variable");
+ return -2;
+ }
+ else if (v && non_unsettable_p (v))
+ {
+ builtin_error (_("%s: cannot unset"), vname);
+ return -2;
+ }
+ return (unbind_variable (vname));
+}
diff --git a/builtins/common.h b/builtins/common.h
index f0687640..a4f9275d 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -80,142 +80,151 @@ do { \
#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)));
-extern void builtin_usage __P((void));
-extern void no_args __P((WORD_LIST *));
-extern int no_options __P((WORD_LIST *));
+extern void builtin_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void builtin_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void builtin_usage PARAMS((void));
+extern void no_args PARAMS((WORD_LIST *));
+extern int no_options PARAMS((WORD_LIST *));
/* common error message functions */
-extern void sh_needarg __P((char *));
-extern void sh_neednumarg __P((char *));
-extern void sh_notfound __P((char *));
-extern void sh_invalidopt __P((char *));
-extern void sh_invalidoptname __P((char *));
-extern void sh_invalidid __P((char *));
-extern void sh_invalidnum __P((char *));
-extern void sh_invalidsig __P((char *));
-extern void sh_erange __P((char *, char *));
-extern void sh_badpid __P((char *));
-extern void sh_badjob __P((char *));
-extern void sh_readonly __P((const char *));
-extern void sh_nojobs __P((char *));
-extern void sh_restricted __P((char *));
-extern void sh_notbuiltin __P((char *));
-extern void sh_wrerror __P((void));
-extern void sh_ttyerror __P((int));
-extern int sh_chkwrite __P((int));
-
-extern char **make_builtin_argv __P((WORD_LIST *, int *));
-extern void remember_args __P((WORD_LIST *, int));
-
-extern int dollar_vars_changed __P((void));
-extern void set_dollar_vars_unchanged __P((void));
-extern void set_dollar_vars_changed __P((void));
-
-extern int get_numeric_arg __P((WORD_LIST *, int, intmax_t *));
-extern int get_exitstat __P((WORD_LIST *));
-extern int read_octal __P((char *));
+extern void sh_needarg PARAMS((char *));
+extern void sh_neednumarg PARAMS((char *));
+extern void sh_notfound PARAMS((char *));
+extern void sh_invalidopt PARAMS((char *));
+extern void sh_invalidoptname PARAMS((char *));
+extern void sh_invalidid PARAMS((char *));
+extern void sh_invalidnum PARAMS((char *));
+extern void sh_invalidsig PARAMS((char *));
+extern void sh_erange PARAMS((char *, char *));
+extern void sh_badpid PARAMS((char *));
+extern void sh_badjob PARAMS((char *));
+extern void sh_readonly PARAMS((const char *));
+extern void sh_nojobs PARAMS((char *));
+extern void sh_restricted PARAMS((char *));
+extern void sh_notbuiltin PARAMS((char *));
+extern void sh_wrerror PARAMS((void));
+extern void sh_ttyerror PARAMS((int));
+extern int sh_chkwrite PARAMS((int));
+
+extern char **make_builtin_argv PARAMS((WORD_LIST *, int *));
+extern void remember_args PARAMS((WORD_LIST *, int));
+extern void shift_args PARAMS((int));
+extern int number_of_args PARAMS((void));
+
+extern int dollar_vars_changed PARAMS((void));
+extern void set_dollar_vars_unchanged PARAMS((void));
+extern void set_dollar_vars_changed PARAMS((void));
+
+extern int get_numeric_arg PARAMS((WORD_LIST *, int, intmax_t *));
+extern int get_exitstat PARAMS((WORD_LIST *));
+extern int read_octal PARAMS((char *));
/* Keeps track of the current working directory. */
extern char *the_current_working_directory;
-extern char *get_working_directory __P((char *));
-extern void set_working_directory __P((char *));
+extern char *get_working_directory PARAMS((char *));
+extern void set_working_directory PARAMS((char *));
#if defined (JOB_CONTROL)
-extern int get_job_by_name __P((const char *, int));
-extern int get_job_spec __P((WORD_LIST *));
+extern int get_job_by_name PARAMS((const char *, int));
+extern int get_job_spec PARAMS((WORD_LIST *));
#endif
-extern int display_signal_list __P((WORD_LIST *, int));
+extern int display_signal_list PARAMS((WORD_LIST *, int));
/* It's OK to declare a function as returning a Function * without
providing a definition of what a `Function' is. */
-extern struct builtin *builtin_address_internal __P((char *, int));
-extern sh_builtin_func_t *find_shell_builtin __P((char *));
-extern sh_builtin_func_t *builtin_address __P((char *));
-extern sh_builtin_func_t *find_special_builtin __P((char *));
-extern void initialize_shell_builtins __P((void));
+extern struct builtin *builtin_address_internal PARAMS((char *, int));
+extern sh_builtin_func_t *find_shell_builtin PARAMS((char *));
+extern sh_builtin_func_t *builtin_address PARAMS((char *));
+extern sh_builtin_func_t *find_special_builtin PARAMS((char *));
+extern void initialize_shell_builtins PARAMS((void));
/* Functions from exit.def */
-extern void bash_logout __P((void));
+extern void bash_logout PARAMS((void));
/* Functions from getopts.def */
-extern void getopts_reset __P((int));
+extern void getopts_reset PARAMS((int));
/* Functions from help.def */
-extern void builtin_help __P((void));
+extern void builtin_help PARAMS((void));
/* Functions from read.def */
-extern void read_tty_cleanup __P((void));
-extern int read_tty_modified __P((void));
+extern void read_tty_cleanup PARAMS((void));
+extern int read_tty_modified PARAMS((void));
/* Functions from set.def */
-extern int minus_o_option_value __P((char *));
-extern void list_minus_o_opts __P((int, int));
-extern char **get_minus_o_opts __P((void));
-extern int set_minus_o_option __P((int, char *));
+extern int minus_o_option_value PARAMS((char *));
+extern void list_minus_o_opts PARAMS((int, int));
+extern char **get_minus_o_opts PARAMS((void));
+extern int set_minus_o_option PARAMS((int, char *));
-extern void set_shellopts __P((void));
-extern void parse_shellopts __P((char *));
-extern void initialize_shell_options __P((int));
+extern void set_shellopts PARAMS((void));
+extern void parse_shellopts PARAMS((char *));
+extern void initialize_shell_options PARAMS((int));
-extern void reset_shell_options __P((void));
+extern void reset_shell_options PARAMS((void));
-extern char *get_current_options __P((void));
-extern void set_current_options __P((const char *));
+extern char *get_current_options PARAMS((void));
+extern void set_current_options PARAMS((const char *));
/* Functions from shopt.def */
-extern void reset_shopt_options __P((void));
-extern char **get_shopt_options __P((void));
+extern void reset_shopt_options PARAMS((void));
+extern char **get_shopt_options PARAMS((void));
-extern int shopt_setopt __P((char *, int));
-extern int shopt_listopt __P((char *, int));
+extern int shopt_setopt PARAMS((char *, int));
+extern int shopt_listopt PARAMS((char *, int));
-extern int set_login_shell __P((char *, int));
+extern int set_login_shell PARAMS((char *, int));
-extern void set_bashopts __P((void));
-extern void parse_bashopts __P((char *));
-extern void initialize_bashopts __P((int));
+extern void set_bashopts PARAMS((void));
+extern void parse_bashopts PARAMS((char *));
+extern void initialize_bashopts PARAMS((int));
-extern void set_compatibility_opts __P((void));
+extern void set_compatibility_opts PARAMS((void));
/* Functions from type.def */
-extern int describe_command __P((char *, int));
+extern int describe_command PARAMS((char *, int));
/* Functions from setattr.def */
-extern int set_or_show_attributes __P((WORD_LIST *, int, int));
-extern int show_all_var_attributes __P((int, int));
-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 *));
+extern int set_or_show_attributes PARAMS((WORD_LIST *, int, int));
+extern int show_all_var_attributes PARAMS((int, int));
+extern int show_local_var_attributes PARAMS((int, int));
+extern int show_var_attributes PARAMS((SHELL_VAR *, int, int));
+extern int show_name_attributes PARAMS((char *, int));
+extern int show_localname_attributes PARAMS((char *, int));
+extern int show_func_attributes PARAMS((char *, int));
+extern void set_var_attribute PARAMS((char *, int, int));
+extern int var_attribute_string PARAMS((SHELL_VAR *, int, char *));
/* Functions from pushd.def */
-extern char *get_dirstack_from_string __P((char *));
-extern char *get_dirstack_element __P((intmax_t, int));
-extern void set_dirstack_element __P((intmax_t, int, char *));
-extern WORD_LIST *get_directory_stack __P((int));
+extern char *get_dirstack_from_string PARAMS((char *));
+extern char *get_dirstack_element PARAMS((intmax_t, int));
+extern void set_dirstack_element PARAMS((intmax_t, int, char *));
+extern WORD_LIST *get_directory_stack PARAMS((int));
/* Functions from evalstring.c */
-extern int parse_and_execute __P((char *, const char *, int));
-extern int evalstring __P((char *, const char *, int));
-extern void parse_and_execute_cleanup __P((int));
-extern int parse_string __P((char *, const char *, int, char **));
-extern int should_suppress_fork __P((COMMAND *));
-extern void optimize_fork __P((COMMAND *));
-extern void optimize_subshell_command __P((COMMAND *));
+extern int parse_and_execute PARAMS((char *, const char *, int));
+extern int evalstring PARAMS((char *, const char *, int));
+extern void parse_and_execute_cleanup PARAMS((int));
+extern int parse_string PARAMS((char *, const char *, int, char **));
+extern int should_suppress_fork PARAMS((COMMAND *));
+extern int can_optimize_connection PARAMS((COMMAND *));
+extern void optimize_fork PARAMS((COMMAND *));
+extern void optimize_subshell_command PARAMS((COMMAND *));
+extern void optimize_shell_function PARAMS((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 *));
+extern int maybe_execute_file PARAMS((const char *, int));
+extern int force_execute_file PARAMS((const char *, int));
+extern int source_file PARAMS((const char *, int));
+extern int fc_execute_file PARAMS((const char *));
/* variables from common.c */
extern sh_builtin_func_t *this_shell_builtin;
extern sh_builtin_func_t *last_shell_builtin;
+extern SHELL_VAR *builtin_bind_variable PARAMS((char *, char *, int));
+extern int builtin_unbind_variable PARAMS((const char *));
+
/* variables from evalfile.c */
extern int sourcelevel;
diff --git a/builtins/complete.def b/builtins/complete.def
index 76b3eedd..28a9ec2f 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,7 +23,7 @@ $PRODUCES complete.c
$BUILTIN complete
$DEPENDS_ON PROGRAMMABLE_COMPLETION
$FUNCTION complete_builtin
-$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
+$SHORT_DOC complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [name ...]
Specify how arguments are to be completed by Readline.
For each NAME, specify how arguments are to be completed. If no options
@@ -42,7 +42,7 @@ Options:
command) word
When completion is attempted, the actions are applied in the order the
-uppercase-letter options are listed above. If multiple options are supplied,
+uppercase-letter options are listed above. If multiple options are supplied,
the -D option takes precedence over -E, and both take precedence over -I.
Exit Status:
@@ -84,24 +84,29 @@ struct _optflags {
int Iflag;
};
-static int find_compact __P((char *));
-static int find_compopt __P((char *));
+static int find_compact PARAMS((char *));
+static int find_compopt PARAMS((char *));
-static int build_actions __P((WORD_LIST *, struct _optflags *, unsigned long *, unsigned long *));
+static int build_actions PARAMS((WORD_LIST *, struct _optflags *, unsigned long *, unsigned long *));
-static int remove_cmd_completions __P((WORD_LIST *));
+static int remove_cmd_completions PARAMS((WORD_LIST *));
-static int print_one_completion __P((char *, COMPSPEC *));
-static int print_compitem __P((BUCKET_CONTENTS *));
-static void print_compopts __P((const char *, COMPSPEC *, int));
-static void print_all_completions __P((void));
-static int print_cmd_completions __P((WORD_LIST *));
+static int print_one_completion PARAMS((char *, COMPSPEC *));
+static int print_compitem PARAMS((BUCKET_CONTENTS *));
+static void print_compopts PARAMS((const char *, COMPSPEC *, int));
+static void print_all_completions PARAMS((void));
+static int print_cmd_completions PARAMS((WORD_LIST *));
+
+static void print_compoptions PARAMS((unsigned long, int));
+static void print_compactions PARAMS((unsigned long));
+static void print_arg PARAMS((const char *, const char *, int));
+static void print_cmd_name PARAMS((const char *));
static char *Garg, *Warg, *Parg, *Sarg, *Xarg, *Farg, *Carg;
static const struct _compacts {
const char * const actname;
- int actflag;
+ unsigned long actflag;
int actopt;
} compacts[] = {
{ "alias", CA_ALIAS, 'a' },
@@ -134,7 +139,7 @@ static const struct _compacts {
/* This should be a STRING_INT_ALIST */
static const struct _compopt {
const char * const optname;
- int optflag;
+ unsigned long optflag;
} compopts[] = {
{ "bashdefault", COPT_BASHDEFAULT },
{ "default", COPT_DEFAULT },
@@ -193,6 +198,7 @@ build_actions (list, flagp, actp, optp)
{
int opt, ind, opt_given;
unsigned long acts, copts;
+ WORD_DESC w;
acts = copts = (unsigned long)0L;
opt_given = 0;
@@ -323,7 +329,13 @@ build_actions (list, flagp, actp, optp)
return (EX_USAGE);
}
case 'F':
- Farg = list_optarg;
+ w.word = Farg = list_optarg;
+ w.flags = 0;
+ if (check_identifier (&w, posixly_correct) == 0 || strpbrk (Farg, shell_break_chars) != 0)
+ {
+ sh_invalidid (Farg);
+ return (EX_USAGE);
+ }
break;
case 'G':
Garg = list_optarg;
@@ -478,122 +490,95 @@ remove_cmd_completions (list)
return ret;
}
-#define SQPRINTARG(a, f) \
- do { \
- if (a) \
- { \
- x = sh_single_quote (a); \
- printf ("%s %s ", f, x); \
- free (x); \
- } \
- } while (0)
-
-#define PRINTARG(a, f) \
- do { \
- if (a) \
- printf ("%s %s ", f, a); \
- } while (0)
-
-#define PRINTOPT(a, f) \
- do { \
- if (acts & a) \
- printf ("%s ", f); \
- } while (0)
-
-#define PRINTACT(a, f) \
- do { \
- if (acts & a) \
- printf ("-A %s ", f); \
- } while (0)
-
-#define PRINTCOMPOPT(a, f) \
- do { \
- if (copts & a) \
- printf ("-o %s ", f); \
- } while (0)
-
-#define XPRINTCOMPOPT(a, f) \
- do { \
- if (copts & a) \
- printf ("-o %s ", f); \
- else \
- printf ("+o %s ", f); \
- } while (0)
+static void
+print_compoptions (copts, full)
+ unsigned long copts;
+ int full;
+{
+ const struct _compopt *co;
+
+ for (co = compopts; co->optname; co++)
+ if (copts & co->optflag)
+ printf ("-o %s ", co->optname);
+ else if (full)
+ printf ("+o %s ", co->optname);
+}
+
+static void
+print_compactions (acts)
+ unsigned long acts;
+{
+ const struct _compacts *ca;
+
+ /* simple flags first */
+ for (ca = compacts; ca->actname; ca++)
+ if (ca->actopt && (acts & ca->actflag))
+ printf ("-%c ", ca->actopt);
+
+ /* then the rest of the actions */
+ for (ca = compacts; ca->actname; ca++)
+ if (ca->actopt == 0 && (acts & ca->actflag))
+ printf ("-A %s ", ca->actname);
+}
+
+static void
+print_arg (arg, flag, quote)
+ const char *arg, *flag;
+ int quote;
+{
+ char *x;
+
+ if (arg)
+ {
+ x = quote ? sh_single_quote (arg) : (char *)arg;
+ printf ("%s %s ", flag, x);
+ if (x != arg)
+ free (x);
+ }
+}
+
+static void
+print_cmd_name (cmd)
+ const char *cmd;
+{
+ if (STREQ (cmd, DEFAULTCMD))
+ printf ("-D");
+ else if (STREQ (cmd, EMPTYCMD))
+ printf ("-E");
+ else if (STREQ (cmd, INITIALWORD))
+ printf ("-I");
+ else if (*cmd == 0) /* XXX - can this happen? */
+ printf ("''");
+ else
+ printf ("%s", cmd);
+}
static int
print_one_completion (cmd, cs)
char *cmd;
COMPSPEC *cs;
{
- unsigned long acts, copts;
- char *x;
-
printf ("complete ");
- copts = cs->options;
-
- /* First, print the -o options. */
- PRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault");
- PRINTCOMPOPT (COPT_DEFAULT, "default");
- PRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
- PRINTCOMPOPT (COPT_FILENAMES, "filenames");
- PRINTCOMPOPT (COPT_NOQUOTE, "noquote");
- PRINTCOMPOPT (COPT_NOSORT, "nosort");
- PRINTCOMPOPT (COPT_NOSPACE, "nospace");
- PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
-
- acts = cs->actions;
-
- /* simple flags next */
- PRINTOPT (CA_ALIAS, "-a");
- PRINTOPT (CA_BUILTIN, "-b");
- PRINTOPT (CA_COMMAND, "-c");
- PRINTOPT (CA_DIRECTORY, "-d");
- PRINTOPT (CA_EXPORT, "-e");
- PRINTOPT (CA_FILE, "-f");
- PRINTOPT (CA_GROUP, "-g");
- PRINTOPT (CA_JOB, "-j");
- PRINTOPT (CA_KEYWORD, "-k");
- PRINTOPT (CA_SERVICE, "-s");
- PRINTOPT (CA_USER, "-u");
- PRINTOPT (CA_VARIABLE, "-v");
-
- /* now the rest of the actions */
- PRINTACT (CA_ARRAYVAR, "arrayvar");
- PRINTACT (CA_BINDING, "binding");
- PRINTACT (CA_DISABLED, "disabled");
- PRINTACT (CA_ENABLED, "enabled");
- PRINTACT (CA_FUNCTION, "function");
- PRINTACT (CA_HELPTOPIC, "helptopic");
- PRINTACT (CA_HOSTNAME, "hostname");
- PRINTACT (CA_RUNNING, "running");
- PRINTACT (CA_SETOPT, "setopt");
- PRINTACT (CA_SHOPT, "shopt");
- PRINTACT (CA_SIGNAL, "signal");
- PRINTACT (CA_STOPPED, "stopped");
+ print_compoptions (cs->options, 0);
+ print_compactions (cs->actions);
/* now the rest of the arguments */
/* arguments that require quoting */
- SQPRINTARG (cs->globpat, "-G");
- SQPRINTARG (cs->words, "-W");
- SQPRINTARG (cs->prefix, "-P");
- SQPRINTARG (cs->suffix, "-S");
- SQPRINTARG (cs->filterpat, "-X");
+ print_arg (cs->globpat, "-G", 1);
+ print_arg (cs->words, "-W", 1);
+ print_arg (cs->prefix, "-P", 1);
+ print_arg (cs->suffix, "-S", 1);
+ print_arg (cs->filterpat, "-X", 1);
- SQPRINTARG (cs->command, "-C");
+ print_arg (cs->command, "-C", 1);
/* simple arguments that don't require quoting */
- PRINTARG (cs->funcname, "-F");
+ print_arg (cs->funcname, "-F", 0);
- if (STREQ (cmd, DEFAULTCMD))
- printf ("-D\n");
- else if (STREQ (cmd, EMPTYCMD))
- printf ("-E\n");
- else if (STREQ (cmd, INITIALWORD))
- printf ("-I\n");
- else
- printf ("%s\n", cmd);
+ print_cmd_name (cmd);
+ printf ("\n");
return (0);
}
@@ -604,42 +589,12 @@ print_compopts (cmd, cs, full)
COMPSPEC *cs;
int full;
{
- int copts;
-
printf ("compopt ");
- copts = cs->options;
- if (full)
- {
- XPRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault");
- XPRINTCOMPOPT (COPT_DEFAULT, "default");
- XPRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
- XPRINTCOMPOPT (COPT_FILENAMES, "filenames");
- XPRINTCOMPOPT (COPT_NOQUOTE, "noquote");
- XPRINTCOMPOPT (COPT_NOSORT, "nosort");
- XPRINTCOMPOPT (COPT_NOSPACE, "nospace");
- XPRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
- }
- else
- {
- PRINTCOMPOPT (COPT_BASHDEFAULT, "bashdefault");
- PRINTCOMPOPT (COPT_DEFAULT, "default");
- PRINTCOMPOPT (COPT_DIRNAMES, "dirnames");
- PRINTCOMPOPT (COPT_FILENAMES, "filenames");
- PRINTCOMPOPT (COPT_NOQUOTE, "noquote");
- PRINTCOMPOPT (COPT_NOSORT, "nosort");
- PRINTCOMPOPT (COPT_NOSPACE, "nospace");
- PRINTCOMPOPT (COPT_PLUSDIRS, "plusdirs");
- }
+ print_compoptions (cs->options, full);
+ print_cmd_name (cmd);
- if (STREQ (cmd, DEFAULTCMD))
- printf ("-D\n");
- else if (STREQ (cmd, EMPTYCMD))
- printf ("-E\n");
- else if (STREQ (cmd, INITIALWORD))
- printf ("-I\n");
- else
- printf ("%s\n", cmd);
+ printf ("\n");
}
static int
@@ -687,7 +642,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
diff --git a/builtins/declare.def b/builtins/declare.def
index 7eac6f58..21e4516d 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-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,7 +22,7 @@ $PRODUCES declare.c
$BUILTIN declare
$FUNCTION declare_builtin
-$SHORT_DOC declare [-aAfFgilnrtux] [-p] [name[=value] ...]
+$SHORT_DOC declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
Set variable values and attributes.
Declare variables and give them attributes. If no NAMEs are given,
@@ -34,6 +34,8 @@ Options:
source file when debugging)
-g create global variables when used in a shell function; otherwise
ignored
+ -I if creating a local variable, inherit the attributes and value
+ of a variable with the same name at a previous scope
-p display the attributes and value of each NAME
Options which set attributes:
@@ -62,7 +64,7 @@ $END
$BUILTIN typeset
$FUNCTION declare_builtin
-$SHORT_DOC typeset [-aAfFgilnrtux] [-p] name[=value] ...
+$SHORT_DOC typeset [-aAfFgiIlnrtux] [-p] name[=value] ...
Set variable values and attributes.
A synonym for `declare'. See `help declare'.
@@ -88,8 +90,8 @@ $END
#include "builtext.h"
#include "bashgetopt.h"
-static SHELL_VAR *declare_find_variable __P((const char *, int, int));
-static int declare_internal __P((register WORD_LIST *, int));
+static SHELL_VAR *declare_find_variable PARAMS((const char *, int, int));
+static int declare_internal PARAMS((register WORD_LIST *, int));
/* Declare or change variable attributes. */
int
@@ -135,9 +137,9 @@ local_builtin (list)
}
#if defined (ARRAY_VARS)
-# define DECLARE_OPTS "+acfgilnprtuxAFG"
+# define DECLARE_OPTS "+acfgilnprtuxAFGI"
#else
-# define DECLARE_OPTS "+cfgilnprtuxFG"
+# define DECLARE_OPTS "+cfgilnprtuxFGI"
#endif
static SHELL_VAR *
@@ -168,13 +170,13 @@ declare_internal (list, local_var)
{
int flags_on, flags_off, *flags;
int any_failed, assign_error, pflag, nodefs, opt, onref, offref;
- int mkglobal, chklocal;
+ int mkglobal, chklocal, inherit_flag;
char *t, *subscript_start;
SHELL_VAR *var, *refvar, *v;
FUNCTION_DEF *shell_fn;
flags_on = flags_off = any_failed = assign_error = pflag = nodefs = 0;
- mkglobal = chklocal = 0;
+ mkglobal = chklocal = inherit_flag = 0;
refvar = (SHELL_VAR *)NULL;
reset_internal_getopt ();
while ((opt = internal_getopt (list, DECLARE_OPTS)) != -1)
@@ -202,7 +204,7 @@ declare_internal (list, local_var)
return (EX_USAGE);
#endif
case 'p':
- if (local_var == 0)
+/* if (local_var == 0) */
pflag++;
break;
case 'F':
@@ -255,6 +257,9 @@ declare_internal (list, local_var)
flags_off |= att_capcase|att_lowercase;
break;
#endif /* CASEMOD_ATTRS */
+ case 'I':
+ inherit_flag = MKLOC_INHERIT;
+ break;
CASE_HELPOPT;
default:
builtin_usage ();
@@ -271,20 +276,7 @@ declare_internal (list, local_var)
/* Show local variables defined at this context level if this is
the `local' builtin. */
if (local_var)
- {
- register SHELL_VAR **vlist;
- register int i;
-
- vlist = all_local_variables ();
-
- if (vlist)
- {
- for (i = 0; vlist[i]; i++)
- print_assignment (vlist[i]);
-
- free (vlist);
- }
- }
+ show_local_var_attributes (0, nodefs); /* XXX - fix up args later */
else if (pflag && (flags_on == 0 || flags_on == att_function))
show_all_var_attributes (flags_on == 0, nodefs);
else if (flags_on == 0)
@@ -301,6 +293,8 @@ declare_internal (list, local_var)
{
if (flags_on & att_function)
pflag = show_func_attributes (list->word->word, nodefs);
+ else if (local_var)
+ pflag = show_localname_attributes (list->word->word, nodefs);
else
pflag = show_name_attributes (list->word->word, nodefs);
if (pflag)
@@ -463,9 +457,9 @@ restart_new_var_name:
return an existing {array,assoc} variable to be flagged as an
error below. */
if (flags_on & att_assoc)
- var = make_local_assoc_variable (newname, 1);
+ var = make_local_assoc_variable (newname, MKLOC_ARRAYOK|inherit_flag);
else if ((flags_on & att_array) || making_array_special)
- var = make_local_array_variable (newname, 1);
+ var = make_local_array_variable (newname, MKLOC_ASSOCOK|inherit_flag);
else
#endif
if (offset == 0 && (flags_on & att_nameref))
@@ -479,18 +473,18 @@ restart_new_var_name:
if (refvar && refvar->context != variable_context)
{
refvar = 0;
- var = make_local_variable (name, 0);
+ var = make_local_variable (name, inherit_flag);
}
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, 0);
+ var = make_local_variable (name, inherit_flag);
/* otherwise we have a var at the right context */
}
else
/* XXX - check name for validity here with valid_nameref_value */
- var = make_local_variable ((flags_on & att_nameref) ? name : newname, 0); /* sets att_invisible for new vars */
+ var = make_local_variable ((flags_on & att_nameref) ? name : newname, inherit_flag); /* sets att_invisible for new vars */
if (var == 0)
{
@@ -533,7 +527,12 @@ restart_new_var_name:
any_failed++;
NEXT_VARIABLE ();
}
-
+ else if (flags_on & (att_array|att_assoc))
+ {
+ sh_invalidopt ((flags_on & att_array) ? "-a" : "-A");
+ any_failed++;
+ NEXT_VARIABLE ();
+ }
/* declare -[Ff] name [name...] */
if (flags_on == att_function && flags_off == 0)
{
@@ -558,6 +557,7 @@ restart_new_var_name:
else /* declare -[fF] -[rx] name [name...] */
{
VSETATTR (var, flags_on);
+ flags_off &= ~att_function; /* makes no sense */
VUNSETATTR (var, flags_off);
}
}
@@ -727,20 +727,20 @@ restart_new_var_name:
if (flags_on & att_assoc)
{
var = make_new_assoc_variable (name);
- if (var && offset == 0 && no_invisible_vars == 0)
+ if (var && offset == 0)
VSETATTR (var, att_invisible);
}
else if ((flags_on & att_array) || making_array_special)
{
var = make_new_array_variable (name);
- if (var && offset == 0 && no_invisible_vars == 0)
+ if (var && offset == 0)
VSETATTR (var, att_invisible);
}
else
#endif
{
var = mkglobal ? bind_global_variable (name, (char *)NULL, ASS_FORCE) : bind_variable (name, (char *)NULL, ASS_FORCE);
- if (var && offset == 0 && no_invisible_vars == 0)
+ if (var && offset == 0)
VSETATTR (var, att_invisible);
}
if (var == 0)
diff --git a/builtins/enable.def b/builtins/enable.def
index 39c36698..9d9010b7 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-2016 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -84,13 +84,13 @@ $END
#define SFLAG 0x20
#if defined (HAVE_DLOPEN) && defined (HAVE_DLSYM)
-static int dyn_load_builtin __P((WORD_LIST *, int, char *));
+static int dyn_load_builtin PARAMS((WORD_LIST *, int, char *));
#endif
#if defined (HAVE_DLCLOSE)
-static int dyn_unload_builtin __P((char *));
-static void delete_builtin __P((struct builtin *));
-static int local_dlclose __P((void *));
+static int dyn_unload_builtin PARAMS((char *));
+static void delete_builtin PARAMS((struct builtin *));
+static int local_dlclose PARAMS((void *));
#endif
#define STRUCT_SUFFIX "_struct"
@@ -98,8 +98,8 @@ static int local_dlclose __P((void *));
#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));
+static void list_some_builtins PARAMS((int));
+static int enable_shell_command PARAMS((char *, int));
/* Enable/disable shell commands present in LIST. If list is not specified,
then print out a list of shell commands showing which are enabled and
@@ -362,6 +362,8 @@ dyn_load_builtin (list, flags, filename)
strcpy (struct_name, name);
strcpy (struct_name + size, STRUCT_SUFFIX);
+ old_builtin = builtin_address_internal (name, 1);
+
b = (struct builtin *)dlsym (handle, struct_name);
if (b == 0)
{
@@ -381,6 +383,9 @@ dyn_load_builtin (list, flags, filename)
loadfunc = (sh_load_func_t *)dlsym (handle, funcname);
if (loadfunc)
{
+ /* Add warning if running an init function more than once */
+ if (old_builtin && (old_builtin->flags & STATIC_BUILTIN) == 0)
+ builtin_warning (_("%s: dynamic builtin already loaded"), name);
r = (*loadfunc) (name);
if (r == 0)
{
@@ -396,7 +401,7 @@ dyn_load_builtin (list, flags, filename)
b->flags |= SPECIAL_BUILTIN;
b->handle = handle;
- if (old_builtin = builtin_address_internal (name, 1))
+ if (old_builtin)
{
replaced++;
FASTCOPY ((char *)b, (char *)old_builtin, sizeof (struct builtin));
diff --git a/builtins/evalfile.c b/builtins/evalfile.c
index 32a7c8d6..fc3975ec 100644
--- a/builtins/evalfile.c
+++ b/builtins/evalfile.c
@@ -123,7 +123,7 @@ file_error_and_exit:
if (flags & FEVAL_LONGJMP)
{
- last_command_exit_value = 1;
+ last_command_exit_value = EXECUTION_FAILURE;
jump_to_top_level (EXITPROG);
}
diff --git a/builtins/evalstring.c b/builtins/evalstring.c
index 2f13a66a..18928a17 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -63,7 +63,7 @@ extern int errno;
int parse_and_execute_level = 0;
-static int cat_file __P((REDIRECT *));
+static int cat_file PARAMS((REDIRECT *));
#define PE_TAG "parse_and_execute top"
#define PS_TAG "parse_string top"
@@ -88,6 +88,11 @@ int
should_suppress_fork (command)
COMMAND *command;
{
+#if 0 /* TAG: bash-5.2 */
+ int subshell;
+
+ subshell = subshell_environment & SUBSHELL_PROCSUB; /* salt to taste */
+#endif
return (startup_state == 2 && parse_and_execute_level == 1 &&
running_trap == 0 &&
*bash_input.location.string == '\0' &&
@@ -96,7 +101,11 @@ should_suppress_fork (command)
signal_is_trapped (EXIT_TRAP) == 0 &&
signal_is_trapped (ERROR_TRAP) == 0 &&
any_signals_trapped () < 0 &&
+#if 0 /* TAG: bash-5.2 */
+ (subshell || (command->redirects == 0 && command->value.Simple->redirects == 0)) &&
+#else
command->redirects == 0 && command->value.Simple->redirects == 0 &&
+#endif
((command->flags & CMD_TIME_PIPELINE) == 0) &&
((command->flags & CMD_INVERT_RETURN) == 0));
}
@@ -145,7 +154,27 @@ optimize_subshell_command (command)
(command->value.Connection->connector == AND_AND || command->value.Connection->connector == OR_OR))
optimize_subshell_command (command->value.Connection->second);
}
-
+
+void
+optimize_shell_function (command)
+ COMMAND *command;
+{
+ COMMAND *fc;
+
+ fc = (command->type == cm_group) ? command->value.Group->command : command;
+
+ if (fc->type == cm_simple && should_suppress_fork (fc))
+ {
+ fc->flags |= CMD_NO_FORK;
+ fc->value.Simple->flags |= CMD_NO_FORK;
+ }
+ else if (fc->type == cm_connection && can_optimize_connection (fc) && should_suppress_fork (fc->value.Connection->second))
+ {
+ fc->value.Connection->second->flags |= CMD_NO_FORK;
+ fc->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 (old_running_trap)
@@ -339,6 +368,7 @@ parse_and_execute (string, from_file, flags)
if (command)
run_unwind_frame ("pe_dispose");
last_result = last_command_exit_value = EXECUTION_FAILURE; /* XXX */
+ set_pipestatus_from_exit (last_command_exit_value);
if (subshell_environment)
{
should_jump_to_top_level = 1;
@@ -389,6 +419,7 @@ parse_and_execute (string, from_file, flags)
internal_warning (_("%s: ignoring function definition attempt"), from_file);
should_jump_to_top_level = 0;
last_result = last_command_exit_value = EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
reset_parser ();
break;
}
@@ -609,7 +640,7 @@ itrace("parse_string: longjmp executed: code = %d", code);
break;
}
- out:
+out:
global_command = oglobal;
nc = bash_input.location.string - ostring;
@@ -654,7 +685,7 @@ cat_file (r)
if (fn == 0)
{
- redirection_error (r, AMBIGUOUS_REDIRECT);
+ redirection_error (r, AMBIGUOUS_REDIRECT, fn);
return -1;
}
diff --git a/builtins/exec.def b/builtins/exec.def
index d4670673..cbcb641a 100644
--- a/builtins/exec.def
+++ b/builtins/exec.def
@@ -1,7 +1,7 @@
This file is exec.def, from which is created exec.c.
It implements the builtin "exec" in Bash.
-Copyright (C) 1987-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,7 +22,7 @@ $PRODUCES exec.c
$BUILTIN exec
$FUNCTION exec_builtin
-$SHORT_DOC exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
+$SHORT_DOC exec [-cl] [-a name] [command [argument ...]] [redirection ...]
Replace the shell with the given command.
Execute COMMAND, replacing this shell with the specified program.
@@ -52,6 +52,8 @@ $END
# include <unistd.h>
#endif
+#include <stdio.h>
+
#include "../bashansi.h"
#include "../bashintl.h"
@@ -99,7 +101,7 @@ exec_builtin (list)
WORD_LIST *list;
{
int exit_value = EXECUTION_FAILURE;
- int cleanenv, login, opt;
+ int cleanenv, login, opt, orig_job_control;
char *argv0, *command, **args, **env, *newname, *com2;
cleanenv = login = 0;
@@ -216,6 +218,7 @@ exec_builtin (list)
restore_original_signals ();
#if defined (JOB_CONTROL)
+ orig_job_control = job_control; /* XXX - was also interactive_shell */
if (subshell_environment == 0)
end_job_control ();
if (interactive || job_control)
@@ -262,7 +265,7 @@ failed_exec:
initialize_signals (1);
#if defined (JOB_CONTROL)
- if (interactive_shell || job_control)
+ if (orig_job_control)
restart_job_control ();
#endif /* JOB_CONTROL */
diff --git a/builtins/exit.def b/builtins/exit.def
index 5167b2e0..dc6f3d5b 100644
--- a/builtins/exit.def
+++ b/builtins/exit.def
@@ -1,7 +1,7 @@
This file is exit.def, from which is created exit.c.
It implements the builtins "exit", and "logout" in Bash.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -50,7 +50,7 @@ $END
extern int check_jobs_at_exit;
-static int exit_or_logout __P((WORD_LIST *));
+static int exit_or_logout PARAMS((WORD_LIST *));
static int sourced_logout;
int
diff --git a/builtins/fc.def b/builtins/fc.def
index 62a28c4c..467dbcbc 100644
--- a/builtins/fc.def
+++ b/builtins/fc.def
@@ -1,7 +1,7 @@
This file is fc.def, from which is created fc.c.
It implements the builtin "fc" in Bash.
-Copyright (C) 1987-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -86,9 +86,19 @@ $END
extern int errno;
#endif /* !errno */
-extern int unlink __P((const char *));
+#define HIST_INVALID INT_MIN
+#define HIST_ERANGE INT_MIN+1
+#define HIST_NOTFOUND INT_MIN+2
-extern FILE *sh_mktmpfp __P((char *, int, char **));
+/* Values for the flags argument to fc_gethnum */
+#define HN_LISTING 0x01
+#define HN_FIRST 0x02
+
+extern int unlink PARAMS((const char *));
+
+extern FILE *sh_mktmpfp PARAMS((char *, int, char **));
+
+extern int suppress_debug_trap_verbose;
/* **************************************************************** */
/* */
@@ -144,14 +154,14 @@ typedef struct repl {
} \
} while (0)
-static char *fc_dosubs __P((char *, REPL *));
-static char *fc_gethist __P((char *, HIST_ENTRY **));
-static int fc_gethnum __P((char *, HIST_ENTRY **));
-static int fc_number __P((WORD_LIST *));
-static void fc_replhist __P((char *));
+static char *fc_dosubs PARAMS((char *, REPL *));
+static char *fc_gethist PARAMS((char *, HIST_ENTRY **, int));
+static int fc_gethnum PARAMS((char *, HIST_ENTRY **, int));
+static int fc_number PARAMS((WORD_LIST *));
+static void fc_replhist PARAMS((char *));
#ifdef INCLUDE_UNUSED
-static char *fc_readline __P((FILE *));
-static void fc_addhist __P((char *));
+static char *fc_readline PARAMS((FILE *));
+static void fc_addhist PARAMS((char *));
#endif
static void
@@ -199,7 +209,7 @@ fc_builtin (list)
break;
case 'l':
- listing = 1;
+ listing = HN_LISTING; /* for fc_gethnum */
break;
case 'r':
@@ -258,7 +268,7 @@ fc_builtin (list)
/* If we still have something in list, it is a command spec.
Otherwise, we use the most recent command in time. */
- command = fc_gethist (list ? list->word->word : (char *)NULL, hlist);
+ command = fc_gethist (list ? list->word->word : (char *)NULL, hlist, 0);
if (command == NULL)
{
@@ -319,18 +329,15 @@ fc_builtin (list)
while (last_hist >= 0 && hlist[last_hist] == 0)
last_hist--;
if (last_hist < 0)
- {
- sh_erange ((char *)NULL, _("history specification"));
- return (EXECUTION_FAILURE);
- }
+ last_hist = 0; /* per POSIX */
if (list)
{
- histbeg = fc_gethnum (list->word->word, hlist);
+ histbeg = fc_gethnum (list->word->word, hlist, listing|HN_FIRST);
list = list->next;
if (list)
- histend = fc_gethnum (list->word->word, hlist);
+ histend = fc_gethnum (list->word->word, hlist, listing);
else if (histbeg == real_last)
histend = listing ? real_last : histbeg;
else
@@ -351,6 +358,28 @@ fc_builtin (list)
histbeg = histend = last_hist;
}
+ if (histbeg == HIST_INVALID || histend == HIST_INVALID)
+ {
+ sh_erange ((char *)NULL, _("history specification"));
+ return (EXECUTION_FAILURE);
+ }
+ else if (histbeg == HIST_ERANGE || histend == HIST_ERANGE)
+ {
+ sh_erange ((char *)NULL, _("history specification"));
+ return (EXECUTION_FAILURE);
+ }
+ else if (histbeg == HIST_NOTFOUND || histend == HIST_NOTFOUND)
+ {
+ builtin_error (_("no command found"));
+ return (EXECUTION_FAILURE);
+ }
+
+ /* We don't throw an error for line specifications out of range, per POSIX */
+ if (histbeg < 0)
+ histbeg = 0;
+ if (histend < 0)
+ histend = 0;
+
/* "When not listing, the fc command that caused the editing shall not be
entered into the history list." */
if (listing == 0 && hist_last_line_added)
@@ -364,14 +393,36 @@ fc_builtin (list)
in parse_and_execute(). */
if (histbeg == histend && histend == last_hist && hlist[last_hist] == 0)
last_hist = histbeg = --histend;
+
+ if (hlist[last_hist] == 0)
+ last_hist--;
+ if (histend >= last_hist)
+ histend = last_hist;
+ else if (histbeg >= last_hist)
+ histbeg = last_hist;
}
- /* We print error messages for line specifications out of range. */
- if ((histbeg < 0) || (histend < 0))
+ if (histbeg == HIST_INVALID || histend == HIST_INVALID)
+ {
+ sh_erange ((char *)NULL, _("history specification"));
+ return (EXECUTION_FAILURE);
+ }
+ else if (histbeg == HIST_ERANGE || histend == HIST_ERANGE)
{
sh_erange ((char *)NULL, _("history specification"));
return (EXECUTION_FAILURE);
}
+ else if (histbeg == HIST_NOTFOUND || histend == HIST_NOTFOUND)
+ {
+ builtin_error (_("no command found"));
+ return (EXECUTION_FAILURE);
+ }
+
+ /* We don't throw an error for line specifications out of range, per POSIX */
+ if (histbeg < 0)
+ histbeg = 0;
+ if (histend < 0)
+ histend = 0;
if (histend < histbeg)
{
@@ -445,7 +496,7 @@ fc_builtin (list)
}
#if defined (READLINE)
- /* If we're executing as part of a dispatched readline commnand like
+ /* If we're executing as part of a dispatched readline command like
{emacs,vi}_edit_and_execute_command, the readline state will indicate it.
We could remove the partial command from the history, but ksh93 doesn't
so we stay compatible. */
@@ -463,7 +514,9 @@ fc_builtin (list)
add_unwind_protect (xfree, fn);
add_unwind_protect (unlink, fn);
add_unwind_protect (set_verbose_flag, (char *)NULL);
+ unwind_protect_int (suppress_debug_trap_verbose);
echo_input_at_read = 1;
+ suppress_debug_trap_verbose = 1;
retval = fc_execute_file (fn);
run_unwind_frame ("fc builtin");
@@ -488,16 +541,21 @@ fc_number (list)
/* Return an absolute index into HLIST which corresponds to COMMAND. If
COMMAND is a number, then it was specified in relative terms. If it
- is a string, then it is the start of a command line present in HLIST. */
+ is a string, then it is the start of a command line present in HLIST.
+ MODE includes HN_LISTING if we are listing commands, and does not if we
+ are executing them. If MODE includes HN_FIRST we are looking for the
+ first history number specification. */
static int
-fc_gethnum (command, hlist)
+fc_gethnum (command, hlist, mode)
char *command;
HIST_ENTRY **hlist;
+ int mode;
{
int sign, n, clen, rh;
- register int i, j, last_hist, real_last;
+ register int i, j, last_hist, real_last, listing;
register char *s;
+ listing = mode & HN_LISTING;
sign = 1;
/* Count history elements. */
for (i = 0; hlist[i]; i++);
@@ -550,19 +608,33 @@ fc_gethnum (command, hlist)
n = atoi (s);
n *= sign;
+ /* We want to return something that is an offset to HISTORY_BASE. */
+
/* If the value is negative or zero, then it is an offset from
the current history item. */
+ /* We don't use HN_FIRST here, so we don't return different values
+ depending on whether we're looking for the first or last in a
+ pair of range arguments, but nobody else does, either. */
if (n < 0)
{
n += i + 1;
return (n < 0 ? 0 : n);
}
else if (n == 0)
- return ((sign == -1) ? real_last : i);
+ return ((sign == -1) ? (listing ? real_last : HIST_INVALID) : i);
else
{
+ /* If we're out of range (greater than I (last history entry) or
+ less than HISTORY_BASE, we want to return different values
+ based on whether or not we are looking for the first or last
+ value in a desired range of history entries. */
n -= history_base;
- return (i < n ? i : n);
+ if (n < 0)
+ return (mode & HN_FIRST ? 0 : i);
+ else if (n >= i)
+ return (mode & HN_FIRST ? 0 : i);
+ else
+ return n;
}
}
@@ -572,22 +644,24 @@ fc_gethnum (command, hlist)
if (STREQN (command, histline (j), clen))
return (j);
}
- return (-1);
+ return (HIST_NOTFOUND);
}
/* Locate the most recent history line which begins with
- COMMAND in HLIST, and return a malloc()'ed copy of it. */
+ COMMAND in HLIST, and return a malloc()'ed copy of it.
+ MODE is 1 if we are listing commands, 0 if we are executing them. */
static char *
-fc_gethist (command, hlist)
+fc_gethist (command, hlist, mode)
char *command;
HIST_ENTRY **hlist;
+ int mode;
{
int i;
if (hlist == 0)
return ((char *)NULL);
- i = fc_gethnum (command, hlist);
+ i = fc_gethnum (command, hlist, mode);
if (i >= 0)
return (savestring (histline (i)));
diff --git a/builtins/fg_bg.def b/builtins/fg_bg.def
index 6a68d6ab..0fb53223 100644
--- a/builtins/fg_bg.def
+++ b/builtins/fg_bg.def
@@ -1,7 +1,7 @@
This file is fg_bg.def, from which is created fg_bg.c.
It implements the builtins "bg" and "fg" in Bash.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,7 +52,7 @@ $END
#include "bashgetopt.h"
#if defined (JOB_CONTROL)
-static int fg_bg __P((WORD_LIST *, int));
+static int fg_bg PARAMS((WORD_LIST *, int));
/* How to bring a job into the foreground. */
int
diff --git a/builtins/gen-helpfiles.c b/builtins/gen-helpfiles.c
index fac34edf..6bed4474 100644
--- a/builtins/gen-helpfiles.c
+++ b/builtins/gen-helpfiles.c
@@ -1,6 +1,6 @@
/* gen-helpfiles - create files containing builtin help text */
-/* Copyright (C) 2012 Free Software Foundation, Inc.
+/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -98,11 +98,11 @@ char *helpfile_directory;
/* Forward declarations. */
-int write_helpfiles __P((struct builtin *));
+int write_helpfiles PARAMS((struct builtin *));
/* For each file mentioned on the command line, process it and
write the information to STRUCTFILE and EXTERNFILE, while
- creating the production file if neccessary. */
+ creating the production file if necessary. */
int
main (argc, argv)
int argc;
diff --git a/builtins/getopt.h b/builtins/getopt.h
index 99096188..fd978597 100644
--- a/builtins/getopt.h
+++ b/builtins/getopt.h
@@ -1,6 +1,6 @@
/* getopt.h - declarations for getopt. */
-/* Copyright (C) 1989, 1990, 1991, 1992, 1993, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -59,7 +59,7 @@ extern int sh_optopt;
/* Set to 1 when an unrecognized option is encountered. */
extern int sh_badopt;
-extern int sh_getopt __P((int, char *const *, const char *));
+extern int sh_getopt PARAMS((int, char *const *, const char *));
typedef struct sh_getopt_state
{
@@ -71,12 +71,12 @@ typedef struct sh_getopt_state
int gs_flags;
} sh_getopt_state_t;
-extern void sh_getopt_restore_state __P((char **));
+extern void sh_getopt_restore_state PARAMS((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_alloc_istate PARAMS((void));
+extern void sh_getopt_dispose_istate PARAMS((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 *));
+extern sh_getopt_state_t *sh_getopt_save_istate PARAMS((void));
+extern void sh_getopt_restore_istate PARAMS((sh_getopt_state_t *));
#endif /* _SH_GETOPT_H */
diff --git a/builtins/getopts.def b/builtins/getopts.def
index f473ef01..4c39c474 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,7 +22,7 @@ $PRODUCES getopts.c
$BUILTIN getopts
$FUNCTION getopts_builtin
-$SHORT_DOC getopts optstring name [arg]
+$SHORT_DOC getopts optstring name [arg ...]
Parse option arguments.
Getopts is used by shell procedures to parse positional parameters
@@ -54,8 +54,8 @@ If the shell variable OPTERR has the value 0, getopts disables the
printing of error messages, even if the first character of
OPTSTRING is not a colon. OPTERR has the value 1 by default.
-Getopts normally parses the positional parameters ($0 - $9), but if
-more arguments are given, they are parsed instead.
+Getopts normally parses the positional parameters, but if arguments
+are supplied as ARG values, they are parsed instead.
Exit Status:
Returns success if an option is found; fails if the end of options is
@@ -86,9 +86,9 @@ $END
#define G_INVALID_OPT -2
#define G_ARG_MISSING -3
-static int getopts_unbind_variable __P((char *));
-static int getopts_bind_variable __P((char *, char *));
-static int dogetopts __P((int, char **));
+static int getopts_unbind_variable PARAMS((char *));
+static int getopts_bind_variable PARAMS((char *, char *));
+static int dogetopts PARAMS((int, char **));
/* getopts_reset is magic code for when OPTIND is reset. N is the
value that has just been assigned to OPTIND. */
@@ -212,10 +212,7 @@ dogetopts (argc, argv)
register WORD_LIST *words;
char **v;
- for (i = 0; i < 10 && dollar_vars[i]; i++)
- ;
- for (words = rest_of_args; words; words = words->next, i++)
- ;
+ i = number_of_args () + 1; /* +1 for $0 */
v = strvec_create (i + 1);
for (i = 0; i < 10 && dollar_vars[i]; i++)
v[i] = dollar_vars[i];
diff --git a/builtins/hash.def b/builtins/hash.def
index b3039308..c58e91c4 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -70,11 +70,11 @@ $END
extern int dot_found_in_search;
-static int add_hashed_command __P((char *, int));
-static int print_hash_info __P((BUCKET_CONTENTS *));
-static int print_portable_hash_info __P((BUCKET_CONTENTS *));
-static int print_hashed_commands __P((int));
-static int list_hashed_filename_targets __P((WORD_LIST *, int));
+static int add_hashed_command PARAMS((char *, int));
+static int print_hash_info PARAMS((BUCKET_CONTENTS *));
+static int print_portable_hash_info PARAMS((BUCKET_CONTENTS *));
+static int print_hashed_commands PARAMS((int));
+static int list_hashed_filename_targets PARAMS((WORD_LIST *, int));
/* Print statistics on the current state of hashed commands. If LIST is
not empty, then rehash (or hash in the first place) the specified
@@ -123,9 +123,9 @@ hash_builtin (list)
list = loptend;
/* hash -t requires at least one argument. */
- if (list == 0 && list_targets)
+ if (list == 0 && (delete || list_targets))
{
- sh_needarg ("-t");
+ sh_needarg (delete ? "-d" : "-t");
return (EXECUTION_FAILURE);
}
@@ -134,7 +134,8 @@ hash_builtin (list)
if (list == 0 && expunge_hash_table == 0)
{
opt = print_hashed_commands (list_portably);
- if (opt == 0 && posixly_correct == 0)
+ if (opt == 0 && posixly_correct == 0 &&
+ (list_portably == 0 || shell_compatibility_level <= 50))
printf (_("%s: hash table empty\n"), this_command_name);
return (EXECUTION_SUCCESS);
diff --git a/builtins/help.def b/builtins/help.def
index 006c4b5d..f33b2b93 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -79,11 +79,11 @@ extern int errno;
extern const char * const bash_copyright;
extern const char * const bash_license;
-static void show_builtin_command_help __P((void));
-static int open_helpfile __P((char *));
-static void show_desc __P((char *, int));
-static void show_manpage __P((char *, int));
-static void show_longdoc __P((int));
+static void show_builtin_command_help PARAMS((void));
+static int open_helpfile PARAMS((char *));
+static void show_desc PARAMS((char *, int));
+static void show_manpage PARAMS((char *, int));
+static void show_longdoc PARAMS((int));
/* Print out a list of the known functions in the shell, and what they do.
If LIST is supplied, print out the list which matches for each pattern
@@ -128,11 +128,11 @@ help_builtin (list)
/* We should consider making `help bash' do something. */
- if (glob_pattern_p (list->word->word))
+ if (glob_pattern_p (list->word->word) == 1)
{
printf ("%s", ngettext ("Shell commands matching keyword `", "Shell commands matching keywords `", (list->next ? 2 : 1)));
print_word_list (list, ", ");
- printf ("'\n\n");
+ printf ("%s", _("'\n\n"));
}
for (match_found = 0, pattern = ""; list; list = list->next)
diff --git a/builtins/history.def b/builtins/history.def
index 77093a45..5db44c2c 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-2018 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -75,6 +75,7 @@ $END
#include "../bashintl.h"
#include "../shell.h"
+#include "../flags.h"
#include "../parser.h"
#include "../bashhist.h"
#include <readline/history.h>
@@ -85,10 +86,10 @@ $END
extern int errno;
#endif
-static char *histtime __P((HIST_ENTRY *, const char *));
-static int display_history __P((WORD_LIST *));
-static void push_history __P((WORD_LIST *));
-static int expand_and_print_history __P((WORD_LIST *));
+static char *histtime PARAMS((HIST_ENTRY *, const char *));
+static int display_history PARAMS((WORD_LIST *));
+static void push_history PARAMS((WORD_LIST *));
+static int expand_and_print_history PARAMS((WORD_LIST *));
#define AFLAG 0x01
#define RFLAG 0x02
@@ -243,7 +244,7 @@ range_error:
}
opt = ind + history_base; /* compensate for opt - history_base below */
}
- else if ((delete_offset < history_base) || (delete_offset > (history_base + history_length)))
+ else if ((delete_offset < history_base) || (delete_offset >= (history_base + history_length)))
{
sh_erange (delete_arg, _("history position"));
return (EXECUTION_FAILURE);
@@ -269,6 +270,14 @@ range_error:
filename = list ? list->word->word : get_string_value ("HISTFILE");
result = EXECUTION_SUCCESS;
+#if defined (RESTRICTED_SHELL)
+ if (restricted && strchr (filename, '/'))
+ {
+ sh_restricted (filename);
+ return (EXECUTION_FAILURE);
+ }
+#endif
+
if (flags & AFLAG) /* Append session's history to file. */
result = maybe_append_history (filename);
else if (flags & WFLAG) /* Write entire history. */
diff --git a/builtins/jobs.def b/builtins/jobs.def
index be1a7d8f..1ce098d0 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -68,7 +68,7 @@ $END
#define JSTATE_RUNNING 0x1
#define JSTATE_STOPPED 0x2
-static int execute_list_with_replacements __P((WORD_LIST *));
+static int execute_list_with_replacements PARAMS((WORD_LIST *));
/* The `jobs' command. Prints outs a list of active jobs. If the
argument `-l' is given, then the process id's are printed also.
@@ -276,7 +276,7 @@ disown_builtin (list)
{
BLOCK_CHILD (set, oset);
job = (list && legal_number (list->word->word, &pid_value) && pid_value == (pid_t) pid_value)
- ? get_job_by_pid ((pid_t) pid_value, 0)
+ ? get_job_by_pid ((pid_t) pid_value, 0, 0)
: get_job_spec (list);
if (job == NO_JOB || jobs == 0 || INVALID_JOB (job))
diff --git a/builtins/kill.def b/builtins/kill.def
index 8d6e3ed1..c655092e 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -70,7 +70,7 @@ $END
extern int errno;
#endif /* !errno */
-static void kill_error __P((pid_t, int));
+static void kill_error PARAMS((pid_t, int));
#if !defined (CONTINUE_AFTER_KILL_ERROR)
# define CONTINUE_OR_FAIL return (EXECUTION_FAILURE)
diff --git a/builtins/mapfile.def b/builtins/mapfile.def
index 995d34ac..65c3cb4f 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-2016 Free Software Foundation, Inc.
+Copyright (C) 2008-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -91,7 +91,7 @@ extern int errno;
#if defined (ARRAY_VARS)
-static int run_callback __P((const char *, unsigned int, const char *));
+static int run_callback PARAMS((const char *, unsigned int, const char *));
#define DEFAULT_ARRAY_NAME "MAPFILE"
#define DEFAULT_VARIABLE_NAME "MAPLINE" /* not used right now */
diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c
index 4f512010..e243021f 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-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -439,7 +439,7 @@ array_free (array)
/* The definition of a function. */
typedef int Function ();
-typedef int mk_handler_func_t __P((char *, DEF_FILE *, char *));
+typedef int mk_handler_func_t PARAMS((char *, DEF_FILE *, char *));
/* Structure handles processor directives. */
typedef struct {
@@ -447,14 +447,14 @@ typedef struct {
mk_handler_func_t *function;
} HANDLER_ENTRY;
-extern int builtin_handler __P((char *, DEF_FILE *, char *));
-extern int function_handler __P((char *, DEF_FILE *, char *));
-extern int short_doc_handler __P((char *, DEF_FILE *, char *));
-extern int comment_handler __P((char *, DEF_FILE *, char *));
-extern int depends_on_handler __P((char *, DEF_FILE *, char *));
-extern int produces_handler __P((char *, DEF_FILE *, char *));
-extern int end_handler __P((char *, DEF_FILE *, char *));
-extern int docname_handler __P((char *, DEF_FILE *, char *));
+extern int builtin_handler PARAMS((char *, DEF_FILE *, char *));
+extern int function_handler PARAMS((char *, DEF_FILE *, char *));
+extern int short_doc_handler PARAMS((char *, DEF_FILE *, char *));
+extern int comment_handler PARAMS((char *, DEF_FILE *, char *));
+extern int depends_on_handler PARAMS((char *, DEF_FILE *, char *));
+extern int produces_handler PARAMS((char *, DEF_FILE *, char *));
+extern int end_handler PARAMS((char *, DEF_FILE *, char *));
+extern int docname_handler PARAMS((char *, DEF_FILE *, char *));
HANDLER_ENTRY handlers[] = {
{ "BUILTIN", builtin_handler },
@@ -1233,7 +1233,7 @@ write_builtins (defs, structfile, externfile)
if (externfile)
{
if (builtin->function)
- fprintf (externfile, "extern int %s __P((WORD_LIST *));\n",
+ fprintf (externfile, "extern int %s PARAMS((WORD_LIST *));\n",
builtin->function);
fprintf (externfile, "extern char * const %s_doc[];\n",
diff --git a/builtins/printf.def b/builtins/printf.def
index bc6ef57d..0a5f4897 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-2017 Free Software Foundation, Inc.
+Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -149,7 +149,7 @@ extern int errno;
if (vflag) \
{ \
SHELL_VAR *v; \
- v = bind_printf_variable (vname, vbuf, 0); \
+ v = builtin_bind_variable (vname, vbuf, 0); \
stupidly_hack_special_variables (vname); \
if (v == 0 || readonly_p (v) || noassign_p (v)) \
return (EXECUTION_FAILURE); \
@@ -187,26 +187,25 @@ extern int errno;
extern time_t shell_start_time;
#if !HAVE_ASPRINTF
-extern int asprintf __P((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
+extern int asprintf PARAMS((char **, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
#endif
#if !HAVE_VSNPRINTF
-extern int vsnprintf __P((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0)));
+extern int vsnprintf PARAMS((char *, size_t, const char *, va_list)) __attribute__((__format__ (printf, 3, 0)));
#endif
-static void printf_erange __P((char *));
-static int printstr __P((char *, char *, int, int, int));
-static int tescape __P((char *, char *, int *, int *));
-static char *bexpand __P((char *, int, int *, int *));
-static char *vbadd __P((char *, int));
-static int vbprintf __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
-static char *mklong __P((char *, char *, size_t));
-static int getchr __P((void));
-static char *getstr __P((void));
-static int getint __P((void));
-static intmax_t getintmax __P((void));
-static uintmax_t getuintmax __P((void));
-static SHELL_VAR *bind_printf_variable __P((char *, char *, int));
+static void printf_erange PARAMS((char *));
+static int printstr PARAMS((char *, char *, int, int, int));
+static int tescape PARAMS((char *, char *, int *, int *));
+static char *bexpand PARAMS((char *, int, int *, int *));
+static char *vbadd PARAMS((char *, int));
+static int vbprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+static char *mklong PARAMS((char *, char *, size_t));
+static int getchr PARAMS((void));
+static char *getstr PARAMS((void));
+static int getint PARAMS((void));
+static intmax_t getintmax PARAMS((void));
+static uintmax_t getuintmax PARAMS((void));
#if defined (HAVE_LONG_DOUBLE) && HAVE_DECL_STRTOLD && !defined(STRTOLD_BROKEN)
typedef long double floatmax_t;
@@ -217,11 +216,11 @@ typedef double floatmax_t;
# define FLOATMAX_CONV ""
# define strtofltmax strtod
#endif
-static floatmax_t getfloatmax __P((void));
+static floatmax_t getfloatmax PARAMS((void));
-static intmax_t asciicode __P((void));
+static intmax_t asciicode PARAMS((void));
-static WORD_LIST *garglist;
+static WORD_LIST *garglist, *orig_arglist;
static int retval;
static int conversion_error;
@@ -301,7 +300,7 @@ printf_builtin (list)
if (vflag && list->word->word && list->word->word[0] == '\0')
{
SHELL_VAR *v;
- v = bind_printf_variable (vname, "", 0);
+ v = builtin_bind_variable (vname, "", 0);
stupidly_hack_special_variables (vname);
return ((v == 0 || readonly_p (v) || noassign_p (v)) ? EXECUTION_FAILURE : EXECUTION_SUCCESS);
}
@@ -312,7 +311,7 @@ printf_builtin (list)
format = list->word->word;
tw = 0;
- garglist = list->next;
+ garglist = orig_arglist = list->next;
/* If the format string is empty after preprocessing, return immediately. */
if (format == 0 || *format == 0)
@@ -1271,26 +1270,3 @@ asciicode ()
garglist = garglist->next;
return (ch);
}
-
-static SHELL_VAR *
-bind_printf_variable (name, value, flags)
- char *name;
- char *value;
- int flags;
-{
- SHELL_VAR *v;
-
-#if defined (ARRAY_VARS)
- if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
- v = bind_variable (name, value, flags);
- else
- v = assign_array_element (name, value, flags | (assoc_expand_once ? ASS_NOEXPAND : 0));
-#else /* !ARRAY_VARS */
- v = bind_variable (name, value, flags);
-#endif /* !ARRAY_VARS */
-
- if (v && readonly_p (v) == 0 && noassign_p (v) == 0)
- VUNSETATTR (v, att_invisible);
-
- return v;
-}
diff --git a/builtins/pushd.def b/builtins/pushd.def
index 71e04097..829f827d 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -157,12 +157,12 @@ static int directory_list_size;
/* Offset to the end of the list. */
static int directory_list_offset;
-static void pushd_error __P((int, char *));
-static void clear_directory_stack __P((void));
-static int cd_to_string __P((char *));
-static int change_to_temp __P((char *));
-static void add_dirstack_element __P((char *));
-static int get_dirstack_index __P((intmax_t, int, int *));
+static void pushd_error PARAMS((int, char *));
+static void clear_directory_stack PARAMS((void));
+static int cd_to_string PARAMS((char *));
+static int change_to_temp PARAMS((char *));
+static void add_dirstack_element PARAMS((char *));
+static int get_dirstack_index PARAMS((intmax_t, int, int *));
#define NOCD 0x01
#define ROTATE 0x02
diff --git a/builtins/read.def b/builtins/read.def
index b57c8c39..39e16e84 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-2017 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -119,20 +119,20 @@ struct ttsave
};
#if defined (READLINE)
-static void reset_attempted_completion_function __P((char *));
-static int set_itext __P((void));
-static char *edit_line __P((char *, char *));
-static void set_eol_delim __P((int));
-static void reset_eol_delim __P((char *));
+static void reset_attempted_completion_function PARAMS((char *));
+static int set_itext PARAMS((void));
+static char *edit_line PARAMS((char *, char *));
+static void set_eol_delim PARAMS((int));
+static void reset_eol_delim PARAMS((char *));
#endif
-static SHELL_VAR *bind_read_variable __P((char *, char *));
+static SHELL_VAR *bind_read_variable PARAMS((char *, char *));
#if defined (HANDLE_MULTIBYTE)
-static int read_mbchar __P((int, char *, int, int, int));
+static int read_mbchar PARAMS((int, char *, int, int, int));
#endif
-static void ttyrestore __P((struct ttsave *));
+static void ttyrestore PARAMS((struct ttsave *));
-static sighandler sigalrm __P((int));
-static void reset_alarm __P((void));
+static sighandler sigalrm PARAMS((int));
+static void reset_alarm PARAMS((void));
/* Try this to see what the rest of the shell can do with the information. */
procenv_t alrmbuf;
@@ -198,6 +198,7 @@ read_builtin (list)
#if defined (READLINE)
char *rlbuf, *itext;
int rlind;
+ FILE *save_instream;
#endif
USE_VAR(size);
@@ -273,7 +274,7 @@ read_builtin (list)
break;
#endif
case 't':
- code = uconvert (list_optarg, &ival, &uval);
+ code = uconvert (list_optarg, &ival, &uval, (char **)NULL);
if (code == 0 || ival < 0 || uval < 0)
{
builtin_error (_("%s: invalid timeout specification"), list_optarg);
@@ -376,7 +377,7 @@ read_builtin (list)
/* $TMOUT, if set, is the default timeout for read. */
if (have_timeout == 0 && (e = get_string_value ("TMOUT")))
{
- code = uconvert (e, &ival, &uval);
+ code = uconvert (e, &ival, &uval, (char **)NULL);
if (code == 0 || ival < 0 || uval < 0)
tmsec = tmusec = 0;
else
@@ -527,6 +528,19 @@ read_builtin (list)
initialize_terminating_signals ();
}
+#if defined (READLINE)
+ save_instream = 0;
+ if (edit && fd != 0)
+ {
+ if (bash_readline_initialized == 0)
+ initialize_readline ();
+
+ unwind_protect_var (rl_instream);
+ save_instream = rl_instream;
+ rl_instream = fdopen (fd, "r");
+ }
+#endif
+
/* This *must* be the top unwind-protect on the stack, so the manipulation
of the unwind-protect stack after the realloc() works right. */
add_unwind_protect (xfree, input_string);
@@ -555,7 +569,8 @@ read_builtin (list)
#if defined (READLINE)
if (edit)
{
- if (rlbuf && rlbuf[rlind] == '\0')
+ /* If we have a null delimiter, don't treat NULL as ending the line */
+ if (rlbuf && rlbuf[rlind] == '\0' && delim != '\0')
{
free (rlbuf);
rlbuf = (char *)0;
@@ -589,6 +604,7 @@ read_builtin (list)
reading = 1;
CHECK_ALRM;
+ errno = 0;
if (unbuffered_read == 2)
retval = posixly_correct ? zreadintr (fd, &c, 1) : zreadn (fd, &c, nchars - nr);
else if (unbuffered_read)
@@ -599,13 +615,18 @@ read_builtin (list)
if (retval <= 0)
{
+ int t;
+
+ t = errno;
if (retval < 0 && errno == EINTR)
{
check_signals (); /* in case we didn't call zread via zreadc */
lastsig = LASTSIG();
if (lastsig == 0)
lastsig = trapped_signal_received;
+#if 0
run_pending_traps (); /* because interrupt_immediately is not set */
+#endif
}
else
lastsig = 0;
@@ -613,6 +634,7 @@ read_builtin (list)
ttyrestore (&termsave); /* fix terminal before exiting */
CHECK_TERMSIG;
eof = 1;
+ errno = t; /* preserve it for the error message below */
break;
}
@@ -759,6 +781,11 @@ add_char:
if (unbuffered_read == 0)
zsyncfd (fd);
+#if defined (READLINE)
+ if (save_instream)
+ rl_instream = save_instream; /* can't portably free it */
+#endif
+
discard_unwind_frame ("read_builtin");
retval = eof ? EXECUTION_FAILURE : EXECUTION_SUCCESS;
@@ -966,14 +993,7 @@ bind_read_variable (name, value)
{
SHELL_VAR *v;
-#if defined (ARRAY_VARS)
- if (valid_array_reference (name, assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0) == 0)
- v = bind_variable (name, value, 0);
- else
- v = assign_array_element (name, value, assoc_expand_once ? ASS_NOEXPAND : 0);
-#else /* !ARRAY_VARS */
- v = bind_variable (name, value, 0);
-#endif /* !ARRAY_VARS */
+ v = builtin_bind_variable (name, value, 0);
return (v == 0 ? v
: ((readonly_p (v) || noassign_p (v)) ? (SHELL_VAR *)NULL : v));
}
@@ -1136,15 +1156,17 @@ set_eol_delim (c)
initialize_readline ();
cmap = rl_get_keymap ();
- /* Change newline to self-insert */
+ /* Save the old delimiter char binding */
old_newline_ctype = cmap[RETURN].type;
old_newline_func = cmap[RETURN].function;
+ old_delim_ctype = cmap[c].type;
+ old_delim_func = cmap[c].function;
+
+ /* Change newline to self-insert */
cmap[RETURN].type = ISFUNC;
cmap[RETURN].function = rl_insert;
/* Bind the delimiter character to accept-line. */
- old_delim_ctype = cmap[c].type;
- old_delim_func = cmap[c].function;
cmap[c].type = ISFUNC;
cmap[c].function = rl_newline;
diff --git a/builtins/reserved.def b/builtins/reserved.def
index 7f3c236b..33184b02 100644
--- a/builtins/reserved.def
+++ b/builtins/reserved.def
@@ -2,7 +2,7 @@ This file is reserved.def, in which the shell reserved words are defined.
It has no direct C file production, but defines builtins for the Bash
builtin help command.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -194,7 +194,7 @@ $SHORT_DOC (( expression ))
Evaluate arithmetic expression.
The EXPRESSION is evaluated according to the rules for arithmetic
-evaluation. Equivalent to "let EXPRESSION".
+evaluation. Equivalent to `let "EXPRESSION"'.
Exit Status:
Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise.
diff --git a/builtins/return.def b/builtins/return.def
index 77e8d7c7..03c98eb1 100644
--- a/builtins/return.def
+++ b/builtins/return.def
@@ -66,6 +66,6 @@ return_builtin (list)
else
{
builtin_error (_("can only `return' from a function or sourced script"));
- return (EXECUTION_FAILURE);
+ return (EX_USAGE);
}
}
diff --git a/builtins/set.def b/builtins/set.def
index d2bba434..8ee01657 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-2018 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -151,24 +151,24 @@ Exit Status:
Returns success unless an invalid option is given.
$END
-typedef int setopt_set_func_t __P((int, char *));
-typedef int setopt_get_func_t __P((char *));
+typedef int setopt_set_func_t PARAMS((int, char *));
+typedef int setopt_get_func_t PARAMS((char *));
-static int find_minus_o_option __P((char *));
+static int find_minus_o_option PARAMS((char *));
-static void print_minus_o_option __P((char *, int, int));
-static void print_all_shell_variables __P((void));
+static void print_minus_o_option PARAMS((char *, int, int));
+static void print_all_shell_variables PARAMS((void));
-static int set_ignoreeof __P((int, char *));
-static int set_posix_mode __P((int, char *));
+static int set_ignoreeof PARAMS((int, char *));
+static int set_posix_mode PARAMS((int, char *));
#if defined (READLINE)
-static int set_edit_mode __P((int, char *));
-static int get_edit_mode __P((char *));
+static int set_edit_mode PARAMS((int, char *));
+static int get_edit_mode PARAMS((char *));
#endif
#if defined (HISTORY)
-static int bash_set_history __P((int, char *));
+static int bash_set_history PARAMS((int, char *));
#endif
static const char * const on = "on";
@@ -358,17 +358,29 @@ void
set_current_options (bitmap)
const char *bitmap;
{
- int i;
+ int i, v, cv, *on_or_off;
if (bitmap == 0)
return;
for (i = 0; o_options[i].name; i++)
{
+ v = bitmap[i] ? FLAG_ON : FLAG_OFF;
if (o_options[i].letter)
- change_flag (o_options[i].letter, bitmap[i] ? FLAG_ON : FLAG_OFF);
+ {
+ /* We should not get FLAG_UNKNOWN here */
+ on_or_off = find_flag (o_options[i].letter);
+ cv = *on_or_off ? FLAG_ON : FLAG_OFF;
+ if (v != cv)
+ change_flag (o_options[i].letter, v);
+ }
else
- SET_BINARY_O_OPTION_VALUE (i, bitmap[i] ? FLAG_ON : FLAG_OFF, o_options[i].name);
+ {
+ cv = GET_BINARY_O_OPTION_VALUE (i, o_options[i].name);
+ cv = cv ? FLAG_ON : FLAG_OFF;
+ if (v != cv)
+ SET_BINARY_O_OPTION_VALUE (i, v, o_options[i].name);
+ }
}
/* Now reset the variables changed by posix mode */
@@ -395,6 +407,11 @@ set_posix_mode (on_or_off, option_name)
int on_or_off;
char *option_name;
{
+ /* short-circuit on no-op */
+ if ((on_or_off == FLAG_ON && posixly_correct) ||
+ (on_or_off == FLAG_OFF && posixly_correct == 0))
+ return 0;
+
posixly_correct = on_or_off == FLAG_ON;
if (posixly_correct == 0)
unbind_variable_noref ("POSIXLY_CORRECT");
@@ -646,7 +663,7 @@ reset_shell_options ()
#endif
#if defined (HISTORY)
dont_save_function_defs = 0;
- remember_on_history = enable_history_list = 1;
+ remember_on_history = enable_history_list = 1; /* XXX */
#endif
}
@@ -818,7 +835,7 @@ unset_builtin (list)
WORD_LIST *list;
{
int unset_function, unset_variable, unset_array, opt, nameref, any_failed;
- int global_unset_func, global_unset_var, vflags;
+ int global_unset_func, global_unset_var, vflags, valid_id;
char *name, *tname;
unset_function = unset_variable = unset_array = nameref = any_failed = 0;
@@ -884,17 +901,28 @@ unset_builtin (list)
#endif
/* Get error checking out of the way first. The low-level functions
just perform the unset, relying on the caller to verify. */
+ valid_id = legal_identifier (name);
+
+ /* Whether or not we are in posix mode, if neither -f nor -v appears,
+ skip over trying to unset variables with invalid names and just
+ treat them as potential shell function names. */
+ if (global_unset_func == 0 && global_unset_var == 0 && valid_id == 0)
+ {
+ unset_variable = unset_array = 0;
+ unset_function = 1;
+ }
/* Bash allows functions with names which are not valid identifiers
to be created when not in posix mode, so check only when in posix
mode when unsetting a function. */
- if (((unset_function && posixly_correct) || !unset_function) && legal_identifier (name) == 0)
+ if (unset_function == 0 && valid_id == 0)
{
sh_invalidid (name);
NEXT_VARIABLE ();
}
- /* Only search for functions here if -f supplied. */
+ /* Search for functions here if -f supplied or if NAME cannot be a
+ variable name. */
var = unset_function ? find_function (name)
: (nameref ? find_variable_last_nameref (name, 0) : find_variable (name));
diff --git a/builtins/setattr.def b/builtins/setattr.def
index 251bcacb..a193462d 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -42,7 +42,7 @@ $PRODUCES setattr.c
extern sh_builtin_func_t *this_shell_builtin;
#ifdef ARRAY_VARS
-extern int declare_builtin __P((WORD_LIST *));
+extern int declare_builtin PARAMS((WORD_LIST *));
#endif
#define READONLY_OR_EXPORT \
@@ -371,6 +371,30 @@ show_all_var_attributes (v, nodefs)
return (any_failed == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
}
+/* Show all local variable variables with their attributes. This shows unset
+ local variables (all_local_variables called with 0 argment). */
+int
+show_local_var_attributes (v, nodefs)
+ int v, nodefs;
+{
+ SHELL_VAR **variable_list, *var;
+ int any_failed;
+ register int i;
+
+ variable_list = all_local_variables (0);
+ if (variable_list == 0)
+ return (EXECUTION_SUCCESS);
+
+ for (i = any_failed = 0; var = variable_list[i]; i++)
+ {
+ show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
+ if (any_failed = sh_chkwrite (any_failed))
+ break;
+ }
+ free (variable_list);
+ return (any_failed == 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+}
+
int
var_attribute_string (var, pattr, flags)
SHELL_VAR *var;
@@ -504,13 +528,27 @@ show_name_attributes (name, nodefs)
{
SHELL_VAR *var;
-#if 0
- var = find_variable_tempenv (name);
-#else
var = find_variable_noref (name);
-#endif
- if (var /* && invisible_p (var) == 0 */)
+ if (var) /* show every variable with attributes, even unset ones */
+ {
+ show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
+ return (0);
+ }
+ else
+ return (1);
+}
+
+int
+show_localname_attributes (name, nodefs)
+ char *name;
+ int nodefs;
+{
+ SHELL_VAR *var;
+
+ var = find_variable_noref (name);
+
+ if (var && local_p (var) && var->context == variable_context) /* show every variable with attributes, even unset ones */
{
show_var_attributes (var, READONLY_OR_EXPORT, nodefs);
return (0);
@@ -607,7 +645,7 @@ set_var_attribute (name, attribute, undo)
if (var == 0)
{
var = bind_variable (name, (char *)NULL, 0);
- if (var && no_invisible_vars == 0)
+ if (var)
VSETATTR (var, att_invisible);
}
else if (var->context != 0)
diff --git a/builtins/shift.def b/builtins/shift.def
index 589e3299..bb9af01b 100644
--- a/builtins/shift.def
+++ b/builtins/shift.def
@@ -1,7 +1,7 @@
This file is shift.def, from which is created shift.c.
It implements the builtin "shift" in Bash.
-Copyright (C) 1987-2009 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -58,8 +58,7 @@ shift_builtin (list)
WORD_LIST *list;
{
intmax_t times;
- register int count;
- WORD_LIST *temp;
+ int itimes, nargs;
CHECK_HELPOPT (list);
@@ -73,32 +72,17 @@ shift_builtin (list)
sh_erange (list ? list->word->word : NULL, _("shift count"));
return (EXECUTION_FAILURE);
}
- else if (times > number_of_args ())
+ nargs = number_of_args ();
+ if (times > nargs)
{
if (print_shift_error)
sh_erange (list ? list->word->word : NULL, _("shift count"));
return (EXECUTION_FAILURE);
}
-
- while (times-- > 0)
- {
- if (dollar_vars[1])
- free (dollar_vars[1]);
-
- for (count = 1; count < 9; count++)
- dollar_vars[count] = dollar_vars[count + 1];
-
- if (rest_of_args)
- {
- temp = rest_of_args;
- dollar_vars[9] = savestring (temp->word->word);
- rest_of_args = rest_of_args->next;
- temp->next = (WORD_LIST *)NULL;
- dispose_words (temp);
- }
- else
- dollar_vars[9] = (char *)NULL;
- }
+ else if (times == nargs)
+ clear_dollar_vars ();
+ else
+ shift_args (itimes = times);
invalidate_cached_quoted_dollar_at ();
diff --git a/builtins/shopt.def b/builtins/shopt.def
index 1c485361..6dca2242 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-2018 Free Software Foundation, Inc.
+Copyright (C) 1994-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -105,7 +105,7 @@ extern int force_fignore;
extern int dircomplete_spelling, dircomplete_expand;
extern int complete_fullquote;
-extern int enable_hostname_completion __P((int));
+extern int enable_hostname_completion PARAMS((int));
#endif
#if defined (PROGRAMMABLE_COMPLETION)
@@ -126,21 +126,21 @@ extern int array_expand_once;
extern int syslog_history;
#endif
-static void shopt_error __P((char *));
+static void shopt_error PARAMS((char *));
-static int set_shellopts_after_change __P((char *, int));
-static int set_compatibility_level __P((char *, int));
+static int set_shellopts_after_change PARAMS((char *, int));
+static int set_compatibility_level PARAMS((char *, int));
#if defined (RESTRICTED_SHELL)
-static int set_restricted_shell __P((char *, int));
+static int set_restricted_shell PARAMS((char *, int));
#endif
#if defined (READLINE)
-static int shopt_enable_hostname_completion __P((char *, int));
-static int shopt_set_complete_direxpand __P((char *, int));
+static int shopt_enable_hostname_completion PARAMS((char *, int));
+static int shopt_set_complete_direxpand PARAMS((char *, int));
#endif
-static int shopt_set_debug_mode __P((char *, int));
+static int shopt_set_debug_mode PARAMS((char *, int));
static int shopt_login_shell;
static int shopt_compat31;
@@ -151,7 +151,7 @@ static int shopt_compat42;
static int shopt_compat43;
static int shopt_compat44;
-typedef int shopt_set_func_t __P((char *, int));
+typedef int shopt_set_func_t PARAMS((char *, int));
/* If you add a new variable name here, make sure to set the default value
appropriately in reset_shopt_options. */
@@ -255,14 +255,14 @@ static struct {
static const char * const on = "on";
static const char * const off = "off";
-static int find_shopt __P((char *));
-static int toggle_shopts __P((int, WORD_LIST *, int));
-static void print_shopt __P((char *, int, int));
-static int list_shopts __P((WORD_LIST *, int));
-static int list_some_shopts __P((int, int));
-static int list_shopt_o_options __P((WORD_LIST *, int));
-static int list_some_o_options __P((int, int));
-static int set_shopt_o_options __P((int, WORD_LIST *, int));
+static int find_shopt PARAMS((char *));
+static int toggle_shopts PARAMS((int, WORD_LIST *, int));
+static void print_shopt PARAMS((char *, int, int));
+static int list_shopts PARAMS((WORD_LIST *, int));
+static int list_some_shopts PARAMS((int, int));
+static int list_shopt_o_options PARAMS((WORD_LIST *, int));
+static int list_some_o_options PARAMS((int, int));
+static int set_shopt_o_options PARAMS((int, WORD_LIST *, int));
#define SFLAG 0x01
#define UFLAG 0x02
@@ -347,6 +347,7 @@ reset_shopt_options ()
inherit_errexit = 0;
interactive_comments = 1;
lastpipe_opt = 0;
+ localvar_inherit = localvar_unset = 0;
mail_warning = 0;
glob_ignore_case = match_ignore_case = 0;
print_shift_error = 0;
@@ -360,6 +361,10 @@ reset_shopt_options ()
extended_glob = EXTGLOB_DEFAULT;
#endif
+#if defined (ARRAY_VARS)
+ assoc_expand_once = 0;
+#endif
+
#if defined (HISTORY)
literal_history = 0;
force_append_history = 0;
@@ -390,6 +395,9 @@ reset_shopt_options ()
#if defined (PROGRAMMABLE_COMPLETION)
prog_completion_enabled = 1;
+# if defined (ALIAS)
+ progcomp_alias = 0;
+# endif
#endif
#if defined (DEFAULT_ECHO_TO_XPG) || defined (STRICT_POSIX)
diff --git a/builtins/source.def b/builtins/source.def
index bdd197fd..5b2f994d 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -80,7 +80,7 @@ $END
extern int errno;
#endif /* !errno */
-static void maybe_pop_dollar_vars __P((void));
+static void maybe_pop_dollar_vars PARAMS((void));
/* If non-zero, `.' uses $PATH to look up the script to be sourced. */
int source_uses_path = 1;
@@ -156,7 +156,7 @@ source_builtin (list)
free (x);
if (posixly_correct && interactive_shell == 0 && executing_command_builtin == 0)
{
- last_command_exit_value = 1;
+ last_command_exit_value = EXECUTION_FAILURE;
jump_to_top_level (EXITPROG);
}
return (EXECUTION_FAILURE);
diff --git a/builtins/suspend.def b/builtins/suspend.def
index db28feec..e99fd26b 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -54,7 +54,7 @@ $END
#include "common.h"
#include "bashgetopt.h"
-static sighandler suspend_continue __P((int));
+static sighandler suspend_continue PARAMS((int));
static SigHandler *old_cont;
#if 0
diff --git a/builtins/trap.def b/builtins/trap.def
index 09846981..daeec9ea 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -75,8 +75,8 @@ $END
#include "common.h"
#include "bashgetopt.h"
-static void showtrap __P((int));
-static int display_traps __P((WORD_LIST *));
+static void showtrap PARAMS((int, int));
+static int display_traps PARAMS((WORD_LIST *, int));
/* The trap command:
@@ -133,7 +133,7 @@ trap_builtin (list)
{
initialize_terminating_signals ();
get_all_original_signals ();
- return (sh_chkwrite (display_traps (list)));
+ return (sh_chkwrite (display_traps (list, display && posixly_correct)));
}
else
{
@@ -211,7 +211,7 @@ trap_builtin (list)
if (interactive)
set_signal_handler (SIGINT, sigint_sighandler);
/* special cases for interactive == 0 */
- else if (interactive_shell && (sourcelevel||running_trap))
+ else if (interactive_shell && (sourcelevel||running_trap||parse_and_execute_level))
set_signal_handler (SIGINT, sigint_sighandler);
else
set_signal_handler (SIGINT, termsig_sighandler);
@@ -246,14 +246,19 @@ trap_builtin (list)
}
static void
-showtrap (i)
- int i;
+showtrap (i, show_default)
+ int i, show_default;
{
char *t, *p, *sn;
p = trap_list[i];
if (p == (char *)DEFAULT_SIG && signal_is_hard_ignored (i) == 0)
- return;
+ {
+ if (show_default)
+ t = "-";
+ else
+ return;
+ }
else if (signal_is_hard_ignored (i))
t = (char *)NULL;
else
@@ -274,19 +279,21 @@ showtrap (i)
else
printf ("trap -- %s %s\n", t ? t : "''", sn);
- FREE (t);
+ if (show_default == 0)
+ FREE (t);
}
static int
-display_traps (list)
+display_traps (list, show_all)
WORD_LIST *list;
+ int show_all;
{
int result, i;
if (list == 0)
{
for (i = 0; i < BASH_NSIG; i++)
- showtrap (i);
+ showtrap (i, show_all);
return (EXECUTION_SUCCESS);
}
@@ -299,7 +306,7 @@ display_traps (list)
result = EXECUTION_FAILURE;
}
else
- showtrap (i);
+ showtrap (i, show_all);
}
return (result);
diff --git a/builtins/type.def b/builtins/type.def
index 699ecd20..a8e47c0a 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -76,7 +76,7 @@ $END
#include "common.h"
#include "bashgetopt.h"
-extern int find_reserved_word __P((char *));
+extern int find_reserved_word PARAMS((char *));
/* For each word in LIST, find out what the shell is going to do with
it as a simple command. i.e., which file would this shell use to
diff --git a/builtins/ulimit.def b/builtins/ulimit.def
index 9b88c8cb..a895c5e2 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,6 +52,7 @@ Options:
-v the size of virtual memory
-x the maximum number of file locks
-P the maximum number of pseudoterminals
+ -R the maximum time a real-time process can run before blocking
-T the maximum number of threads
Not all options are available on all platforms.
@@ -203,22 +204,22 @@ extern int errno;
#define BLOCKSIZE(x) (((x) == POSIXBLK) ? (posixly_correct ? 512 : 1024) : (x))
-static int _findlim __P((int));
+static int _findlim PARAMS((int));
-static int ulimit_internal __P((int, char *, int, int));
+static int ulimit_internal PARAMS((int, char *, int, int));
-static int get_limit __P((int, RLIMTYPE *, RLIMTYPE *));
-static int set_limit __P((int, RLIMTYPE, int));
+static int get_limit PARAMS((int, RLIMTYPE *, RLIMTYPE *));
+static int set_limit PARAMS((int, RLIMTYPE, int));
-static void printone __P((int, RLIMTYPE, int));
-static void print_all_limits __P((int));
+static void printone PARAMS((int, RLIMTYPE, int));
+static void print_all_limits PARAMS((int));
-static int set_all_limits __P((int, RLIMTYPE));
+static int set_all_limits PARAMS((int, RLIMTYPE));
-static int filesize __P((RLIMTYPE *));
-static int pipesize __P((RLIMTYPE *));
-static int getmaxuprc __P((RLIMTYPE *));
-static int getmaxvm __P((RLIMTYPE *, RLIMTYPE *));
+static int filesize PARAMS((RLIMTYPE *));
+static int pipesize PARAMS((RLIMTYPE *));
+static int getmaxuprc PARAMS((RLIMTYPE *));
+static int getmaxvm PARAMS((RLIMTYPE *, RLIMTYPE *));
typedef struct {
int option; /* The ulimit option for this limit. */
@@ -232,8 +233,11 @@ static RESOURCE_LIMITS limits[] = {
#ifdef RLIMIT_NPTS
{ 'P', RLIMIT_NPTS, 1, "number of pseudoterminals", (char *)NULL },
#endif
+#ifdef RLIMIT_RTTIME
+ { 'R', RLIMIT_RTTIME, 1, "real-time non-blocking time", "microseconds" },
+#endif
#ifdef RLIMIT_PTHREAD
- { 'T', RLIMIT_PTHREAD, 1, "number of threads", (char *)NULL },
+ { 'T', RLIMIT_PTHREAD, 1, "number of threads", (char *)NULL },
#endif
#ifdef RLIMIT_SBSIZE
{ 'b', RLIMIT_SBSIZE, 1, "socket buffer size", "bytes" },
@@ -741,7 +745,7 @@ printone (limind, curlim, pdesc)
else
sprintf (unitstr, "(-%c) ", limits[limind].option);
- printf ("%-20s %16s", limits[limind].description, unitstr);
+ printf ("%-20s %20s", limits[limind].description, unitstr);
}
if (curlim == RLIM_INFINITY)
puts ("unlimited");
diff --git a/builtins/umask.def b/builtins/umask.def
index d3138d4d..8041d56b 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-2015 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -67,8 +67,8 @@ $END
/* */
/* **************************************************************** */
-static void print_symbolic_umask __P((mode_t));
-static int symbolic_umask __P((WORD_LIST *));
+static void print_symbolic_umask PARAMS((mode_t));
+static int symbolic_umask PARAMS((WORD_LIST *));
/* Set or display the mask used by the system when creating files. Flag
of -S means display the umask in a symbolic mode. */
diff --git a/builtins/wait.def b/builtins/wait.def
index 5deb3735..12260737 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-2017 Free Software Foundation, Inc.
+Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,7 +22,7 @@ $BUILTIN wait
$FUNCTION wait_builtin
$DEPENDS_ON JOB_CONTROL
$PRODUCES wait.c
-$SHORT_DOC wait [-fn] [id ...]
+$SHORT_DOC wait [-fn] [-p var] [id ...]
Wait for job completion and return exit status.
Waits for each process identified by an ID, which may be a process ID or a
@@ -31,15 +31,22 @@ given, waits for all currently active child processes, and the return
status is zero. If ID is a job specification, waits for all processes
in that job's pipeline.
-If the -n option is supplied, waits for the next job to terminate and
-returns its exit status.
+If the -n option is supplied, waits for a single job from the list of IDs,
+or, if no IDs are supplied, for the next job to complete and returns its
+exit status.
+
+If the -p option is supplied, the process or job identifier of the job
+for which the exit status is returned is assigned to the variable VAR
+named by the option argument. The variable will be unset initially, before
+any assignment. This is useful only when the -n option is supplied.
If the -f option is supplied, and job control is enabled, waits for the
specified ID to terminate, instead of waiting for it to change status.
Exit Status:
Returns the status of the last ID; fails if ID is invalid or an invalid
-option is given.
+option is given, or if -n is supplied and the shell has no unwaited-for
+children.
$END
$BUILTIN wait
@@ -73,6 +80,8 @@ $END
#include "../shell.h"
#include "../execute_cmd.h"
#include "../jobs.h"
+#include "../trap.h"
+#include "../sig.h"
#include "common.h"
#include "bashgetopt.h"
@@ -81,6 +90,9 @@ extern int wait_signal_received;
procenv_t wait_intr_buf;
int wait_intr_flag;
+static int set_waitlist PARAMS((WORD_LIST *));
+static void unset_waitlist PARAMS((void));
+
/* 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
0. If a list of pids or job specs are given, return the exit status of
@@ -89,7 +101,6 @@ int wait_intr_flag;
#define WAIT_RETURN(s) \
do \
{ \
- interrupt_immediately = old_interrupt_immediately;\
wait_signal_received = 0; \
wait_intr_flag = 0; \
return (s);\
@@ -101,13 +112,17 @@ wait_builtin (list)
WORD_LIST *list;
{
int status, code, opt, nflag, wflags;
- volatile int old_interrupt_immediately;
+ char *vname;
+ SHELL_VAR *pidvar;
+ struct procstat pstat;
USE_VAR(list);
nflag = wflags = 0;
+ vname = NULL;
+ pidvar = (SHELL_VAR *)NULL;
reset_internal_getopt ();
- while ((opt = internal_getopt (list, "nf")) != -1)
+ while ((opt = internal_getopt (list, "fnp:")) != -1)
{
switch (opt)
{
@@ -118,6 +133,9 @@ wait_builtin (list)
case 'f':
wflags |= JWAIT_FORCE;
break;
+ case 'p':
+ vname = list_optarg;
+ break;
#endif
CASE_HELPOPT;
default:
@@ -127,10 +145,24 @@ wait_builtin (list)
}
list = loptend;
- old_interrupt_immediately = interrupt_immediately;
-#if 0
- interrupt_immediately++;
+ /* Sanity-check variable name if -p supplied. */
+ if (vname)
+ {
+#if defined (ARRAY_VARS)
+ int arrayflags;
+
+ arrayflags = assoc_expand_once ? (VA_NOEXPAND|VA_ONEWORD) : 0;
+ if (legal_identifier (vname) == 0 && valid_array_reference (vname, arrayflags) == 0)
+#else
+ if (legal_identifier (vname) == 0)
#endif
+ {
+ sh_invalidid (vname);
+ WAIT_RETURN (EXECUTION_FAILURE);
+ }
+ if (builtin_unbind_variable (vname) == -2)
+ WAIT_RETURN (EXECUTION_FAILURE);
+ }
/* POSIX.2 says: When the shell is waiting (by means of the wait utility)
for asynchronous commands to complete, the reception of a signal for
@@ -151,15 +183,43 @@ wait_builtin (list)
WAIT_RETURN (status);
}
+ opt = first_pending_trap ();
+#if defined (SIGCHLD)
+ /* We special case SIGCHLD when not in posix mode because we don't break
+ out of the wait even when the signal is trapped; we run the trap after
+ the wait completes. See how it's handled in jobs.c:waitchld(). */
+ if (opt == SIGCHLD && posixly_correct == 0)
+ opt = next_pending_trap (opt+1);
+#endif
+ if (opt != -1)
+ {
+ last_command_exit_signal = wait_signal_received = opt;
+ status = opt + 128;
+ WAIT_RETURN (status);
+ }
+
/* We support jobs or pids.
wait <pid-or-job> [pid-or-job ...] */
#if defined (JOB_CONTROL)
if (nflag)
{
- status = wait_for_any_job (wflags);
+ if (list)
+ {
+ opt = set_waitlist (list);
+ if (opt == 0)
+ WAIT_RETURN (127);
+ wflags |= JWAIT_WAITING;
+ }
+
+ status = wait_for_any_job (wflags, &pstat);
if (status < 0)
status = 127;
+
+ if (vname && status >= 0)
+ bind_var_to_int (vname, pstat.pid);
+ if (list)
+ unset_waitlist ();
WAIT_RETURN (status);
}
#endif
@@ -168,7 +228,9 @@ wait_builtin (list)
currently active background processes. */
if (list == 0)
{
- wait_for_background_pids ();
+ wait_for_background_pids (&pstat);
+ if (vname)
+ bind_var_to_int (vname, pstat.pid);
WAIT_RETURN (EXECUTION_SUCCESS);
}
@@ -186,10 +248,14 @@ wait_builtin (list)
{
pid = (pid_t)pid_value;
status = wait_for_single_pid (pid, wflags|JWAIT_PERROR);
+ pstat.pid = pid;
+ pstat.status = status;
}
else
{
sh_badpid (w);
+ pstat.pid = NO_PID;
+ pstat.status = 127;
WAIT_RETURN (EXECUTION_FAILURE);
}
}
@@ -209,22 +275,90 @@ wait_builtin (list)
sh_badjob (list->word->word);
UNBLOCK_CHILD (oset);
status = 127; /* As per Posix.2, section 4.70.2 */
+ pstat.pid = NO_PID;
+ pstat.status = status;
list = list->next;
continue;
}
/* Job spec used. Wait for the last pid in the pipeline. */
UNBLOCK_CHILD (oset);
- status = wait_for_job (job, wflags);
+ status = wait_for_job (job, wflags, &pstat);
}
#endif /* JOB_CONTROL */
else
{
sh_badpid (w);
+ pstat.pid = NO_PID;
+ pstat.status = 127;
status = EXECUTION_FAILURE;
}
+
+ /* Don't waste time with a longjmp. */
+ if (wait_signal_received)
+ {
+ last_command_exit_signal = wait_signal_received;
+ status = 128 + wait_signal_received;
+ wait_sigint_cleanup ();
+ WAIT_RETURN (status);
+ }
+
list = list->next;
}
WAIT_RETURN (status);
}
+
+#if defined (JOB_CONTROL)
+/* Take each valid pid or jobspec in LIST and mark the corresponding job as
+ J_WAITING, so wait -n knows which jobs to wait for. Return the number of
+ jobs we found. */
+static int
+set_waitlist (list)
+ WORD_LIST *list;
+{
+ sigset_t set, oset;
+ int job, r, njob;
+ intmax_t pid;
+ WORD_LIST *l;
+
+ BLOCK_CHILD (set, oset);
+ njob = 0;
+ for (l = list; l; l = l->next)
+ {
+ job = NO_JOB;
+ job = (l && legal_number (l->word->word, &pid) && pid == (pid_t) pid)
+ ? get_job_by_pid ((pid_t) pid, 0, 0)
+ : get_job_spec (l);
+ if (job == NO_JOB || jobs == 0 || INVALID_JOB (job))
+ {
+ sh_badjob (l->word->word);
+ continue;
+ }
+ /* We don't check yet to see if one of the desired jobs has already
+ terminated, but we could. We wait until wait_for_any_job(). This
+ has the advantage of validating all the arguments. */
+ if ((jobs[job]->flags & J_WAITING) == 0)
+ {
+ njob++;
+ jobs[job]->flags |= J_WAITING;
+ }
+ }
+ UNBLOCK_CHILD (oset);
+ return (njob);
+}
+
+/* Clean up after a call to wait -n jobs */
+static void
+unset_waitlist ()
+{
+ int i;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ for (i = 0; i < js.j_jobslots; i++)
+ if (jobs[i] && (jobs[i]->flags & J_WAITING))
+ jobs[i]->flags &= ~J_WAITING;
+ UNBLOCK_CHILD (oset);
+}
+#endif
diff --git a/command.h b/command.h
index b9e9b669..914198f9 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-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -73,36 +73,37 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
cm_arith, cm_cond, cm_arith_for, cm_subshell, cm_coproc };
/* Possible values for the `flags' field of a WORD_DESC. */
-#define W_HASDOLLAR 0x000001 /* Dollar sign present. */
-#define W_QUOTED 0x000002 /* Some form of quote character is present. */
-#define W_ASSIGNMENT 0x000004 /* This word is a variable assignment. */
-#define W_SPLITSPACE 0x000008 /* Split this word on " " regardless of IFS */
-#define W_NOSPLIT 0x000010 /* Do not perform word splitting on this word because ifs is empty string. */
-#define W_NOGLOB 0x000020 /* Do not perform globbing on this word. */
-#define W_NOSPLIT2 0x000040 /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */
-#define W_TILDEEXP 0x000080 /* Tilde expand this assignment word */
-#define W_DOLLARAT 0x000100 /* $@ and its special handling */
-#define W_DOLLARSTAR 0x000200 /* $* and its special handling */
-#define W_NOCOMSUB 0x000400 /* Don't perform command substitution on this word */
-#define W_ASSIGNRHS 0x000800 /* Word is rhs of an assignment statement */
-#define W_NOTILDE 0x001000 /* Don't perform tilde expansion on this word */
-#define W_ITILDE 0x002000 /* Internal flag for word expansion */
-#define W_NOEXPAND 0x004000 /* Don't expand at all -- do quote removal */
-#define W_COMPASSIGN 0x008000 /* Compound assignment */
-#define W_ASSNBLTIN 0x010000 /* word is a builtin command that takes assignments */
-#define W_ASSIGNARG 0x020000 /* word is assignment argument to command */
-#define W_HASQUOTEDNULL 0x040000 /* word contains a quoted null character */
-#define W_DQUOTE 0x080000 /* word should be treated as if double-quoted */
-#define W_NOPROCSUB 0x100000 /* don't perform process substitution */
-#define W_SAWQUOTEDNULL 0x200000 /* word contained a quoted null that was removed */
-#define W_ASSIGNASSOC 0x400000 /* word looks like associative array assignment */
-#define W_ASSIGNARRAY 0x800000 /* word looks like a compound indexed array assignment */
-#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_COMPLETE 0x8000000 /* word is being expanded for completion */
-#define W_CHKLOCAL 0x10000000 /* check for local vars on assignment */
-#define W_NOASSNTILDE 0x20000000 /* don't do tilde expansion like an assignment statement */
+#define W_HASDOLLAR (1 << 0) /* Dollar sign present. */
+#define W_QUOTED (1 << 1) /* Some form of quote character is present. */
+#define W_ASSIGNMENT (1 << 2) /* This word is a variable assignment. */
+#define W_SPLITSPACE (1 << 3) /* Split this word on " " regardless of IFS */
+#define W_NOSPLIT (1 << 4) /* Do not perform word splitting on this word because ifs is empty string. */
+#define W_NOGLOB (1 << 5) /* Do not perform globbing on this word. */
+#define W_NOSPLIT2 (1 << 6) /* Don't split word except for $@ expansion (using spaces) because context does not allow it. */
+#define W_TILDEEXP (1 << 7) /* Tilde expand this assignment word */
+#define W_DOLLARAT (1 << 8) /* $@ and its special handling -- UNUSED */
+#define W_DOLLARSTAR (1 << 9) /* $* and its special handling -- UNUSED */
+#define W_NOCOMSUB (1 << 10) /* Don't perform command substitution on this word */
+#define W_ASSIGNRHS (1 << 11) /* Word is rhs of an assignment statement */
+#define W_NOTILDE (1 << 12) /* Don't perform tilde expansion on this word */
+#define W_ITILDE (1 << 13) /* Internal flag for word expansion */
+#define W_EXPANDRHS (1 << 14) /* Expanding word in ${paramOPword} */
+#define W_COMPASSIGN (1 << 15) /* Compound assignment */
+#define W_ASSNBLTIN (1 << 16) /* word is a builtin command that takes assignments */
+#define W_ASSIGNARG (1 << 17) /* word is assignment argument to command */
+#define W_HASQUOTEDNULL (1 << 18) /* word contains a quoted null character */
+#define W_DQUOTE (1 << 19) /* word should be treated as if double-quoted */
+#define W_NOPROCSUB (1 << 20) /* don't perform process substitution */
+#define W_SAWQUOTEDNULL (1 << 21) /* word contained a quoted null that was removed */
+#define W_ASSIGNASSOC (1 << 22) /* word looks like associative array assignment */
+#define W_ASSIGNARRAY (1 << 23) /* word looks like a compound indexed array assignment */
+#define W_ARRAYIND (1 << 24) /* word is an array index being expanded */
+#define W_ASSNGLOBAL (1 << 25) /* word is a global assignment to declare (declare/typeset -g) */
+#define W_NOBRACE (1 << 26) /* Don't perform brace expansion */
+#define W_COMPLETE (1 << 27) /* word is being expanded for completion */
+#define W_CHKLOCAL (1 << 28) /* check for local vars on assignment */
+#define W_NOASSNTILDE (1 << 29) /* don't do tilde expansion like an assignment statement */
+#define W_FORCELOCAL (1 << 30) /* force assignments to be to local variables, non-fatal on assignment errors */
/* Flags for the `pflags' argument to param_expand() and various
parameter_brace_expand_xxx functions; also used for string_list_dollar_at */
@@ -111,6 +112,8 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
#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 */
+#define PF_EXPANDRHS 0x20 /* same as W_EXPANDRHS */
+#define PF_ALLINDS 0x40 /* array, act as if [@] was supplied */
/* Possible values for subshell_environment */
#define SUBSHELL_ASYNC 0x01 /* subshell caused by `command &' */
@@ -393,13 +396,13 @@ extern Coproc sh_coproc;
/* Forward declarations of functions declared in copy_cmd.c. */
-extern FUNCTION_DEF *copy_function_def_contents __P((FUNCTION_DEF *, FUNCTION_DEF *));
-extern FUNCTION_DEF *copy_function_def __P((FUNCTION_DEF *));
+extern FUNCTION_DEF *copy_function_def_contents PARAMS((FUNCTION_DEF *, FUNCTION_DEF *));
+extern FUNCTION_DEF *copy_function_def PARAMS((FUNCTION_DEF *));
-extern WORD_DESC *copy_word __P((WORD_DESC *));
-extern WORD_LIST *copy_word_list __P((WORD_LIST *));
-extern REDIRECT *copy_redirect __P((REDIRECT *));
-extern REDIRECT *copy_redirects __P((REDIRECT *));
-extern COMMAND *copy_command __P((COMMAND *));
+extern WORD_DESC *copy_word PARAMS((WORD_DESC *));
+extern WORD_LIST *copy_word_list PARAMS((WORD_LIST *));
+extern REDIRECT *copy_redirect PARAMS((REDIRECT *));
+extern REDIRECT *copy_redirects PARAMS((REDIRECT *));
+extern COMMAND *copy_command PARAMS((COMMAND *));
#endif /* _COMMAND_H_ */
diff --git a/config-bot.h b/config-bot.h
index 5563e2a8..b075c778 100644
--- a/config-bot.h
+++ b/config-bot.h
@@ -98,6 +98,10 @@
# undef USE_MKSTEMP
#endif
+#if !HAVE_MKDTEMP
+# undef USE_MKDTMP
+#endif
+
/* If the shell is called by this name, it will become restricted. */
#if defined (RESTRICTED_SHELL)
# define RESTRICTED_SHELL_NAME "rbash"
@@ -137,7 +141,7 @@
/* check multibyte capability for I18N code */
/************************************************/
-/* For platforms which support the ISO C amendement 1 functionality we
+/* For platforms which support the ISO C amendment 1 functionality we
support user defined character classes. */
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H)
diff --git a/config-top.h b/config-top.h
index 56dbd51e..735f75e3 100644
--- a/config-top.h
+++ b/config-top.h
@@ -106,9 +106,11 @@
which can be fooled under certain not-uncommon circumstances. */
/* #define SSH_SOURCE_BASHRC */
-/* Define if you want the case-capitalizing operators (~[~]) and the
+/* Define if you want the case-toggling operators (~[~]) and the
`capcase' variable attribute (declare -c). */
-#define CASEMOD_CAPCASE
+/* TAG: bash-5.2 disable */
+#define CASEMOD_TOGGLECASE
+#define CASEMOD_CAPCASE
/* This is used as the name of a shell function to call when a command
name is not found. If you want to name it something other than the
@@ -173,6 +175,7 @@
/* Define to use libc mktemp/mkstemp instead of replacements in lib/sh/tmpfile.c */
#define USE_MKTEMP
#define USE_MKSTEMP
+#define USE_MKDTEMP
/* Define to force the value of OLDPWD inherited from the environment to be a
directory */
@@ -186,3 +189,7 @@
interactive shells; define to 1 for the historical behavior of enabling
when the shell is interactive. */
#define HISTEXPAND_DEFAULT 1
+
+/* Undefine or define to 0 if you don't want to allow associative array
+ assignment using a compound list of key-value pairs. */
+#define ASSOC_KVPAIR_ASSIGNMENT 1
diff --git a/config.h.in b/config.h.in
index 8554aecc..ab316d46 100644
--- a/config.h.in
+++ b/config.h.in
@@ -1,6 +1,6 @@
/* config.h -- Configuration file for bash. */
-/* Copyright (C) 1987-2009,2011-2012 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2009,2011-2012,2013-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -285,6 +285,11 @@
/* Define if you have <alloca.h> and it should be used (not on Ultrix). */
#undef HAVE_ALLOCA_H
+/* Define if major/minor/makedev is defined in <sys/mkdev.h> */
+#undef MAJOR_IN_MAKEDEV
+
+/* Define if major/minor/makedev is defined in <sys/sysmacros.h> */
+#undef MAJOR_IN_SYSMACROS
/* SYSTEM TYPES */
@@ -567,6 +572,9 @@
/* Presence of system and C library functions. */
+/* Define if you have the arc4random function. */
+#undef HAVE_ARC4RANDOM
+
/* Define if you have the asprintf function. */
#undef HAVE_ASPRINTF
@@ -626,6 +634,9 @@
/* Define if you have the getcwd function. */
#undef HAVE_GETCWD
+/* Define if you have the getentropy function. */
+#undef HAVE_GETENTROPY
+
/* Define if you have the getdtablesize function. */
#undef HAVE_GETDTABLESIZE
@@ -653,6 +664,9 @@
/* Define if you have the getpwuid function. */
#undef HAVE_GETPWUID
+/* Define if you have the getrandom function. */
+#undef HAVE_GETRANDOM
+
/* Define if you have the getrlimit function. */
#undef HAVE_GETRLIMIT
@@ -746,6 +760,9 @@
/* Define if you have the memset function. */
#undef HAVE_MEMSET
+/* Define if you have the mkdtemp function. */
+#undef HAVE_MKDTEMP
+
/* Define if you have the mkfifo function. */
#undef HAVE_MKFIFO
@@ -807,6 +824,14 @@
#undef HAVE_SETREGID
#undef HAVE_DECL_SETREGID
+/* Define if you have the setregid function. */
+#undef HAVE_SETRESGID
+#undef HAVE_DECL_SETRESGID
+
+/* Define if you have the setresuid function. */
+#undef HAVE_SETRESUID
+#undef HAVE_DECL_SETRESUID
+
/* Define if you have the setvbuf function. */
#undef HAVE_SETVBUF
@@ -1046,6 +1071,9 @@
/* Define if you have the <sys/ptem.h> header file. */
#undef HAVE_SYS_PTEM_H
+/* Define if you have the <sys/random.h> header file. */
+#undef HAVE_SYS_RANDOM_H
+
/* Define if you have the <sys/resource.h> header file. */
#undef HAVE_SYS_RESOURCE_H
diff --git a/configure b/configure
index 2f626629..0f1d3ed1 100755
--- a/configure
+++ b/configure
@@ -1,7 +1,7 @@
#! /bin/sh
-# From configure.ac for Bash 5.0, version 5.005.
+# From configure.ac for Bash 5.1, version 5.022.
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for bash 5.0-release.
+# Generated by GNU Autoconf 2.69 for bash 5.1-release.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
-PACKAGE_VERSION='5.0-release'
-PACKAGE_STRING='bash 5.0-release'
+PACKAGE_VERSION='5.1-release'
+PACKAGE_STRING='bash 5.1-release'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
@@ -623,7 +623,9 @@ ac_includes_default="\
# include <unistd.h>
#endif"
+gt_needs=
ac_header_list=
+gl_use_threads_default=
ac_func_list=
ac_subst_vars='LTLIBOBJS
LOCAL_DEFS
@@ -634,7 +636,6 @@ MALLOC_DEBUG
DEBUG
RELSTATUS
BASHVERS
-ARFLAGS
headersdir
loadablesdir
BUILD_DIR
@@ -670,17 +671,47 @@ DATADIRNAME
CATOBJEXT
USE_INCLUDED_LIBINTL
BUILD_INCLUDED_LIBINTL
+WINDRES
+WOE32
+WOE32DLL
+HAVE_NAMELESS_LOCALES
+HAVE_WPRINTF
+HAVE_NEWLOCALE
+HAVE_SNPRINTF
+HAVE_ASPRINTF
+HAVE_POSIX_PRINTF
+INTL_DEFAULT_VERBOSITY
+ARFLAGS
+INTL_MACOSX_LIBS
+GLIBC21
+GNULIB_OVERRIDES_WINT_T
INTLBISON
LTLIBICONV
LIBICONV
-GLIBC21
+LTLIBMULTITHREAD
+LIBMULTITHREAD
+LTLIBTHREAD
+LIBTHREAD
+LIBPTH_PREFIX
+LTLIBPTH
+LIBPTH
+PRI_MACROS_BROKEN
ALLOCA
+HAVE_VISIBILITY
+CFLAG_VISIBILITY
+GLIBC2
+XGETTEXT_EXTRA_OPTIONS
MSGMERGE
+XGETTEXT_015
XGETTEXT
+GMSGFMT_015
+MSGFMT_015
GMSGFMT
MSGFMT
+GETTEXT_MACRO_VERSION
USE_NLS
-MKINSTALLDIRS
+SED
+MKDIR_P
SIZE
MAKE_SHELL
SET_MAKE
@@ -832,8 +863,10 @@ enable_profiling
enable_static_link
enable_largefile
enable_nls
+enable_threads
with_gnu_ld
enable_rpath
+with_libpth_prefix
with_libiconv_prefix
with_included_gettext
with_libintl_prefix
@@ -1394,7 +1427,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
-\`configure' configures bash 5.0-release to adapt to many kinds of systems.
+\`configure' configures bash 5.1-release to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1459,7 +1492,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of bash 5.0-release:";;
+ short | recursive ) echo "Configuration of bash 5.1-release:";;
esac
cat <<\_ACEOF
@@ -1540,6 +1573,9 @@ Optional Features:
--enable-static-link link bash statically, for use as a root shell
--disable-largefile omit support for large files
--disable-nls do not use Native Language Support
+ --enable-threads={posix|solaris|pth|windows}
+ specify multithreading API
+ --disable-threads build without multithread safety
--disable-rpath do not hardcode runtime library paths
Optional Packages:
@@ -1553,7 +1589,9 @@ Optional Packages:
--with-installed-readline
use a version of the readline library that is
already installed
- --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-libpth-prefix[=DIR] search for libpth in DIR/include and DIR/lib
+ --without-libpth-prefix don't search for libpth in includedir and libdir
--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
--with-included-gettext use the GNU gettext library included here
@@ -1655,7 +1693,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-bash configure 5.0-release
+bash configure 5.1-release
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2364,7 +2402,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 5.0-release, which was
+It was created by bash $as_me 5.1-release, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2644,12 +2682,15 @@ $as_echo "$as_me: creating cache $cache_file" >&6;}
>$cache_file
fi
+gt_needs="$gt_needs need-ngettext"
as_fn_append ac_header_list " stdlib.h"
as_fn_append ac_header_list " unistd.h"
as_fn_append ac_header_list " sys/param.h"
+as_fn_append ac_func_list " symlink"
+as_fn_append ac_func_list " uselocale"
+as_fn_append ac_header_list " xlocale.h"
as_fn_append ac_header_list " sys/time.h"
as_fn_append ac_func_list " alarm"
-as_fn_append ac_func_list " sbrk"
as_fn_append ac_func_list " fpurge"
as_fn_append ac_func_list " __fpurge"
as_fn_append ac_func_list " snprintf"
@@ -2758,7 +2799,7 @@ ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var.
ac_config_headers="$ac_config_headers config.h"
-BASHVERS=5.0
+BASHVERS=5.1
RELSTATUS=release
case "$RELSTATUS" in
@@ -2861,6 +2902,9 @@ m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-aix*) opt_bash_malloc=no ;; # AIX machines
*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
+# These lack a working sbrk(2)
+aarch64-freebsd*) opt_bash_malloc=no ;;
+riscv*-freebsd*) opt_bash_malloc=no ;;
# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
@@ -2872,13 +2916,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x
*-nsk*) opt_bash_malloc=no ;; # HP NonStop
*-haiku*) opt_bash_malloc=no ;; # Haiku OS
-# Deprecated -- bash malloc is suitable
-#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
-#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
-#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
-#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
-#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
-#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
+*-genode*) opt_bash_malloc=no ;; # Genode has no sbrk
esac
# memory scrambling on free()
@@ -3393,10 +3431,7 @@ fi
if test -z "$CFLAGS"; then
- AUTO_CFLAGS="-g ${GCC+-O2} ${GCC+-Wno-parentheses}"
- AUTO_LDFLAGS="-g ${GCC+-O2}"
-else
- AUTO_CFLAGS= AUTO_LDFLAGS=
+ want_auto_cflags=1
fi
echo ""
@@ -4193,15 +4228,21 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$want_auto_cflags"; then
+ AUTO_CFLAGS="-g ${GCC+-O2}"
+ AUTO_LDFLAGS="-g ${GCC+-O2}"
+ STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}"
+else
+ AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS=
+fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for strerror in -lcposix" >&5
-$as_echo_n "checking for strerror in -lcposix... " >&6; }
-if ${ac_cv_lib_cposix_strerror+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
+$as_echo_n "checking for library containing strerror... " >&6; }
+if ${ac_cv_search_strerror+:} false; then :
$as_echo_n "(cached) " >&6
else
- ac_check_lib_save_LIBS=$LIBS
-LIBS="-lcposix $LIBS"
+ ac_func_search_save_LIBS=$LIBS
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -4220,22 +4261,37 @@ return strerror ();
return 0;
}
_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_lib_cposix_strerror=yes
-else
- ac_cv_lib_cposix_strerror=no
+for ac_lib in '' cposix; do
+ if test -z "$ac_lib"; then
+ ac_res="none required"
+ else
+ ac_res=-l$ac_lib
+ LIBS="-l$ac_lib $ac_func_search_save_LIBS"
+ fi
+ if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_search_strerror=$ac_res
fi
rm -f core conftest.err conftest.$ac_objext \
- conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_cposix_strerror" >&5
-$as_echo "$ac_cv_lib_cposix_strerror" >&6; }
-if test "x$ac_cv_lib_cposix_strerror" = xyes; then :
- LIBS="$LIBS -lcposix"
+ conftest$ac_exeext
+ if ${ac_cv_search_strerror+:} false; then :
+ break
fi
+done
+if ${ac_cv_search_strerror+:} false; then :
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_strerror" >&5
+$as_echo "$ac_cv_search_strerror" >&6; }
+ac_res=$ac_cv_search_strerror
+if test "$ac_res" != no; then :
+ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS"
+fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
@@ -4975,7 +5031,11 @@ if test "X$cross_compiling" = "Xno"; then
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
fi
# CFLAGS set above to default value if not passed in environment
- CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ if test -n "$want_auto_cflags" ; then
+ CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}"
+ else
+ CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ fi
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
else
CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
@@ -5337,9 +5397,11 @@ else
#include <stdio.h>
#include <readline/readline.h>
+#include <stdlib.h>
extern int rl_gnu_readline_p;
+int
main()
{
FILE *fp;
@@ -5959,6 +6021,311 @@ fi
+
+# codeset.m4 serial 5 (gettext-0.18.2)
+
+
+
+
+
+
+
+
+# fcntl-o.m4 serial 6
+
+
+
+
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
+
+
+# gettext.m4 serial 69 (gettext-0.19.9)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# glibc2.m4 serial 3
+
+# Test for the GNU C Library, version 2.0 or newer.
+# From Bruno Haible.
+
+
+
+# glibc21.m4 serial 5
+
+# Test for the GNU C Library, version 2.1 or newer, or uClibc.
+# From Bruno Haible.
+
+
+
+# host-cpu-c-abi.m4 serial 11
+
+
+
+
+
+
+
+# iconv.m4 serial 21
+
+
+
+
+
+
+
+
+
+# intdiv0.m4 serial 6 (gettext-0.18.2)
+
+
+
+
+# intl.m4 serial 34 (gettext-0.19.9)
+
+
+
+
+
+
+
+
+
+
+
+# intlmacosx.m4 serial 6 (gettext-0.19.9)
+
+
+
+# intl-thread-locale.m4 serial 4
+
+
+
+
+
+# intmax.m4 serial 6 (gettext-0.18.2)
+
+
+
+
+# inttypes-pri.m4 serial 7 (gettext-0.18.2)
+
+
+
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values. This is the case on AIX 4.3.3.
+
+
+
+# inttypes.m4 serial 27
+
+
+
+
+
+
+# Ensure that the PRI* and SCN* macros are defined appropriately.
+
+
+# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
+# If $2 is true, the condition is $3; otherwise if long long int is supported
+# approximate the condition with $4; otherwise, assume the condition is false.
+# The condition should work on all C99 platforms; the approximations should be
+# good enough to work on all practical pre-C99 platforms.
+# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
+
+
+
+
+
+
+# inttypes_h.m4 serial 10
+
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+
+
+# lcmessage.m4 serial 7 (gettext-0.18.2)
+
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+
+
+
+# lib-ld.m4 serial 9
+
+
+
+
+
+
+# lib-link.m4 serial 28
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# lib-prefix.m4 serial 14
+
+
+
+
+
+
+
+
+
+
+# lock.m4 serial 14
+
+
+
+
+# Prerequisites of lib/glthread/lock.c.
+
+
+# nls.m4 serial 5 (gettext-0.18)
+
+
+
+
+
+
+# po.m4 serial 24a
+
+
+
+
+
+
+
+
+
+
+
+
+# printf-posix.m4 serial 6 (gettext-0.18.2)
+
+
+
+
+# progtest.m4 serial 7 (gettext-0.18.2)
+
+
+
+
+# Search path for a program which passes the given test.
+
+
+
+# pthread_rwlock_rdlock.m4 serial 2
+
+
+
+
+# size_max.m4 serial 11
+
+
+
+
+
+
+# stdint_h.m4 serial 9
+
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+
+
+# threadlib.m4 serial 16
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+# uintmax_t.m4 serial 12
+
+
+
+
+# Define uintmax_t to 'unsigned long' or 'unsigned long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+
+
+
+# ulonglong.m4 serial 10
+
+# visibility.m4 serial 6
+
+
+
+
+
+# wchar_t.m4 serial 4 (gettext-0.18.2)
+
+
+
+
+# wint_t.m4 serial 7
+
+
+
+
+
+
+# xsize.m4 serial 5
+
+
+
+
$as_echo "#define _GNU_SOURCE 1" >>confdefs.h
@@ -6527,18 +6894,116 @@ _ACEOF
esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5
+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; }
+if test -z "$MKDIR_P"; then
+ if ${ac_cv_path_mkdir+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in mkdir gmkdir; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue
+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #(
+ 'mkdir (GNU coreutils) '* | \
+ 'mkdir (coreutils) '* | \
+ 'mkdir (fileutils) '4.1*)
+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext
+ break 3;;
+ esac
+ done
+ done
+ done
+IFS=$as_save_IFS
+
+fi
- MKINSTALLDIRS=
- if test -n "$ac_aux_dir"; then
- case "$ac_aux_dir" in
- /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;;
- *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;;
- esac
+ test -d ./--version && rmdir ./--version
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ MKDIR_P="$ac_cv_path_mkdir -p"
+ else
+ # As a last resort, use the slow shell script. Don't cache a
+ # value for MKDIR_P within a source directory, because that will
+ # break other packages using the cache if that directory is
+ # removed, or if the value is a relative name.
+ MKDIR_P="$ac_install_sh -d"
fi
- if test -z "$MKINSTALLDIRS"; then
- MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
+$as_echo "$MKDIR_P" >&6; }
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+ for ac_i in 1 2 3 4 5 6 7; do
+ ac_script="$ac_script$as_nl$ac_script"
+ done
+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+ { ac_script=; unset ac_script;}
+ if test -z "$SED"; then
+ ac_path_SED_found=false
+ # Loop through the user's path and test for each of PROGNAME-LIST
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_prog in sed gsed; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+ as_fn_executable_p "$ac_path_SED" || continue
+# Check for GNU ac_path_SED and select it if it is found.
+ # Check for GNU $ac_path_SED
+case `"$ac_path_SED" --version 2>&1` in
+*GNU*)
+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+ ac_count=0
+ $as_echo_n 0123456789 >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ $as_echo '' >> "conftest.nl"
+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+ as_fn_arith $ac_count + 1 && ac_count=$as_val
+ if test $ac_count -gt ${ac_path_SED_max-0}; then
+ # Best one so far, save it but keep looking for a better one
+ ac_cv_path_SED="$ac_path_SED"
+ ac_path_SED_max=$ac_count
+ fi
+ # 10*(2^10) chars as input seems more than enough
+ test $ac_count -gt 10 && break
+ done
+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
+
+ $ac_path_SED_found && break 3
+ done
+ done
+ done
+IFS=$as_save_IFS
+ if test -z "$ac_cv_path_SED"; then
+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
fi
+else
+ ac_cv_path_SED=$SED
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+ rm -f conftest.sed
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
@@ -6556,20 +7021,22 @@ $as_echo "$USE_NLS" >&6; }
+ GETTEXT_MACRO_VERSION=0.19
+
+
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
# Find out how to test for executable files. Don't use a zero-byte file,
@@ -6604,7 +7071,8 @@ else
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- if $ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 &&
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --statistics /dev/null >&5 2>&1 &&
(if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
ac_cv_path_MSGFMT="$ac_dir/$ac_word$ac_exec_ext"
break 2
@@ -6668,19 +7136,29 @@ fi
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+
+
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
# Find out how to test for executable files. Don't use a zero-byte file,
@@ -6715,7 +7193,8 @@ else
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&5 2>&1 &&
(if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
ac_cv_path_XGETTEXT="$ac_dir/$ac_word$ac_exec_ext"
break 2
@@ -6739,19 +7218,24 @@ fi
rm -f messages.po
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+
+
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
fi
# Find out how to test for executable files. Don't use a zero-byte file,
@@ -6786,7 +7270,8 @@ else
test -z "$ac_dir" && ac_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
- if $ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&5
+ if $ac_dir/$ac_word --update -q /dev/null /dev/null >&5 2>&1; then
ac_cv_path_MSGMERGE="$ac_dir/$ac_word$ac_exec_ext"
break 2
fi
@@ -6808,43 +7293,129 @@ $as_echo "no" >&6; }
fi
- if test "$GMSGFMT" != ":"; then
- if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 &&
- (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found $GMSGFMT program is not GNU msgfmt; ignore it" >&5
-$as_echo "found $GMSGFMT program is not GNU msgfmt; ignore it" >&6; }
- GMSGFMT=":"
- fi
- fi
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
- if test "$XGETTEXT" != ":"; then
- if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 &&
- (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then
- : ;
- else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: found xgettext program is not GNU xgettext; ignore it" >&5
-$as_echo "found xgettext program is not GNU xgettext; ignore it" >&6; }
- XGETTEXT=":"
- fi
- rm -f messages.po
- fi
- ac_config_commands="$ac_config_commands default-1"
+ ac_config_commands="$ac_config_commands po-directories"
-ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default"
-if test "x$ac_cv_type_off_t" = xyes; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2 or newer" >&5
+$as_echo_n "checking whether we are using the GNU C Library 2 or newer... " >&6; }
+if ${ac_cv_gnu_library_2+:} false; then :
+ $as_echo_n "(cached) " >&6
else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+ Lucky GNU user
+ #endif
+#endif
-cat >>confdefs.h <<_ACEOF
-#define off_t long int
_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+ ac_cv_gnu_library_2=yes
+else
+ ac_cv_gnu_library_2=no
+fi
+rm -f conftest*
+
+
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2" >&5
+$as_echo "$ac_cv_gnu_library_2" >&6; }
+
+ GLIBC2="$ac_cv_gnu_library_2"
+
+
+
+
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the -Werror option is usable" >&5
+$as_echo_n "checking whether the -Werror option is usable... " >&6; }
+if ${gl_cv_cc_vis_werror+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_cc_vis_werror=yes
+else
+ gl_cv_cc_vis_werror=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_vis_werror" >&5
+$as_echo "$gl_cv_cc_vis_werror" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for simple visibility declarations" >&5
+$as_echo_n "checking for simple visibility declarations... " >&6; }
+if ${gl_cv_cc_visibility+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_cc_visibility=yes
+else
+ gl_cv_cc_visibility=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ CFLAGS="$gl_save_CFLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_cc_visibility" >&5
+$as_echo "$gl_cv_cc_visibility" >&6; }
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_VISIBILITY $HAVE_VISIBILITY
+_ACEOF
+
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
if test "x$ac_cv_type_size_t" = xyes; then :
@@ -6857,6 +7428,41 @@ _ACEOF
fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
+$as_echo_n "checking for stdint.h... " >&6; }
+if ${gl_cv_header_stdint_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <stdint.h>
+int
+main ()
+{
+uintmax_t i = (uintmax_t) -1; return !i;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_header_stdint_h=yes
+else
+ gl_cv_header_stdint_h=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_stdint_h" >&5
+$as_echo "$gl_cv_header_stdint_h" >&6; }
+ if test $gl_cv_header_stdint_h = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H_WITH_UINTMAX 1
+_ACEOF
+
+ 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
@@ -7245,40 +7851,6 @@ fi
rm -f conftest.mmap conftest.txt
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library 2.1 or newer" >&5
-$as_echo_n "checking whether we are using the GNU C Library 2.1 or newer... " >&6; }
-if ${ac_cv_gnu_library_2_1+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <features.h>
-#ifdef __GNU_LIBRARY__
- #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
- Lucky GNU user
- #endif
-#endif
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
- ac_cv_gnu_library_2_1=yes
-else
- ac_cv_gnu_library_2_1=no
-fi
-rm -f conftest*
-
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
-$as_echo "$ac_cv_gnu_library_2_1" >&6; }
-
- GLIBC21="$ac_cv_gnu_library_2_1"
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether integer division by zero raises SIGFPE" >&5
$as_echo_n "checking whether integer division by zero raises SIGFPE... " >&6; }
@@ -7286,15 +7858,28 @@ if ${gt_cv_int_divbyzero_sigfpe+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test "$cross_compiling" = yes; then :
-
- # Guess based on the CPU.
+ gt_cv_int_divbyzero_sigfpe=
+ case "$host_os" in
+ macos* | darwin[6-9]* | darwin[1-9][0-9]*)
+ # On Mac OS X 10.2 or newer, just assume the same as when cross-
+ # compiling. If we were to perform the real test, 1 Crash Report
+ # dialog window would pop up.
case "$host_cpu" in
- alpha* | i3456786 | m68k | s390*)
- gt_cv_int_divbyzero_sigfpe="guessing yes";;
- *)
- gt_cv_int_divbyzero_sigfpe="guessing no";;
+ i[34567]86 | x86_64)
+ gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
esac
+ ;;
+ esac
+ if test -z "$gt_cv_int_divbyzero_sigfpe"; then
+ if test "$cross_compiling" = yes; then :
+
+ # Guess based on the CPU.
+ case "$host_cpu" in
+ alpha* | i[34567]86 | x86_64 | m68k | s390*)
+ gt_cv_int_divbyzero_sigfpe="guessing yes";;
+ *)
+ gt_cv_int_divbyzero_sigfpe="guessing no";;
+ esac
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -7304,11 +7889,7 @@ else
#include <signal.h>
static void
-#ifdef __cplusplus
sigfpe_handler (int sig)
-#else
-sigfpe_handler (sig) int sig;
-#endif
{
/* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
exit (sig != SIGFPE);
@@ -7317,7 +7898,7 @@ sigfpe_handler (sig) int sig;
int x = 1;
int y = 0;
int z;
-int nan;
+int xnan;
int main ()
{
@@ -7332,8 +7913,8 @@ int main ()
#endif
z = x / y;
- nan = y / y;
- exit (1);
+ xnan = y / y;
+ exit (2);
}
_ACEOF
@@ -7346,6 +7927,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
+ fi
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_int_divbyzero_sigfpe" >&5
@@ -7363,31 +7945,33 @@ _ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
$as_echo_n "checking for inttypes.h... " >&6; }
-if ${jm_ac_cv_header_inttypes_h+:} false; then :
+if ${gl_cv_header_inttypes_h+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <sys/types.h>
#include <inttypes.h>
+
int
main ()
{
-uintmax_t i = (uintmax_t) -1;
+uintmax_t i = (uintmax_t) -1; return !i;
;
return 0;
}
_ACEOF
if ac_fn_c_try_compile "$LINENO"; then :
- jm_ac_cv_header_inttypes_h=yes
+ gl_cv_header_inttypes_h=yes
else
- jm_ac_cv_header_inttypes_h=no
+ gl_cv_header_inttypes_h=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_inttypes_h" >&5
-$as_echo "$jm_ac_cv_header_inttypes_h" >&6; }
- if test $jm_ac_cv_header_inttypes_h = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_inttypes_h" >&5
+$as_echo "$gl_cv_header_inttypes_h" >&6; }
+ if test $gl_cv_header_inttypes_h = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_INTTYPES_H_WITH_UINTMAX 1
@@ -7396,80 +7980,68 @@ _ACEOF
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdint.h" >&5
-$as_echo_n "checking for stdint.h... " >&6; }
-if ${jm_ac_cv_header_stdint_h+:} false; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
+$as_echo_n "checking for unsigned long long int... " >&6; }
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ ac_cv_type_unsigned_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <sys/types.h>
-#include <stdint.h>
-int
-main ()
-{
-uintmax_t i = (uintmax_t) -1;
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- jm_ac_cv_header_stdint_h=yes
-else
- jm_ac_cv_header_stdint_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $jm_ac_cv_header_stdint_h" >&5
-$as_echo "$jm_ac_cv_header_stdint_h" >&6; }
- if test $jm_ac_cv_header_stdint_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
-#define HAVE_STDINT_H_WITH_UINTMAX 1
-_ACEOF
- fi
-
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long" >&5
-$as_echo_n "checking for unsigned long long... " >&6; }
-if ${ac_cv_type_unsigned_long_long+:} false; then :
- $as_echo_n "(cached) " >&6
-else
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-unsigned long long ull = 1; int i = 63;
+ /* For now, do not test the preprocessor; as of 2007 there are too many
+ implementations with broken preprocessors. Perhaps this can
+ be revisited in 2012. In the meantime, code should not expect
+ #if to work with literals wider than 32 bits. */
+ /* Test literals. */
+ long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ unsigned long long int ull = 18446744073709551615ULL;
+ /* Test constant expressions. */
+ typedef int a[((-9223372036854775807LL < 0 && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ typedef int b[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
int
main ()
{
-unsigned long long ullmax = (unsigned long long) -1;
- return ull << i | ull >> i | ullmax / ull | ullmax % ull;
+/* Test availability of runtime routines for shift and division. */
+ long long int llmax = 9223372036854775807ll;
+ unsigned long long int ullmax = 18446744073709551615ull;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll)
+ | (ull << 63) | (ull >> 63) | (ull << i) | (ull >> i)
+ | (ullmax / ull) | (ullmax % ull));
;
return 0;
}
+
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- ac_cv_type_unsigned_long_long=yes
+
else
- ac_cv_type_unsigned_long_long=no
+ ac_cv_type_unsigned_long_long_int=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
+ fi
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long" >&5
-$as_echo "$ac_cv_type_unsigned_long_long" >&6; }
- if test $ac_cv_type_unsigned_long_long = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_unsigned_long_long_int" >&5
+$as_echo "$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
-$as_echo "#define HAVE_UNSIGNED_LONG_LONG 1" >>confdefs.h
+$as_echo "#define HAVE_UNSIGNED_LONG_LONG_INT 1" >>confdefs.h
fi
- if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
- test $ac_cv_type_unsigned_long_long = yes \
+ test $ac_cv_type_unsigned_long_long_int = yes \
&& ac_type='unsigned long long' \
|| ac_type='unsigned long'
@@ -7484,45 +8056,19 @@ $as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
fi
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inttypes.h" >&5
-$as_echo_n "checking for inttypes.h... " >&6; }
-if ${gt_cv_header_inttypes_h+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/types.h>
-#include <inttypes.h>
-int
-main ()
-{
-
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- gt_cv_header_inttypes_h=yes
-else
- gt_cv_header_inttypes_h=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_header_inttypes_h" >&5
-$as_echo "$gt_cv_header_inttypes_h" >&6; }
- if test $gt_cv_header_inttypes_h = yes; then
-
-cat >>confdefs.h <<_ACEOF
+ for ac_header in inttypes.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default"
+if test "x$ac_cv_header_inttypes_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
#define HAVE_INTTYPES_H 1
_ACEOF
- fi
-
+fi
+done
- if test $gt_cv_header_inttypes_h = yes; then
+ if test $ac_cv_header_inttypes_h = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the inttypes.h PRIxNN macros are broken" >&5
$as_echo_n "checking whether the inttypes.h PRIxNN macros are broken... " >&6; }
if ${gt_cv_inttypes_pri_broken+:} false; then :
@@ -7531,6 +8077,7 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <inttypes.h>
#ifdef PRId32
char *p = PRId32;
@@ -7561,9 +8108,64 @@ cat >>confdefs.h <<_ACEOF
#define PRI_MACROS_BROKEN 1
_ACEOF
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+
+
+
+
+
+
+
+ # Check whether --enable-threads was given.
+if test "${enable_threads+set}" = set; then :
+ enableval=$enable_threads; gl_use_threads=$enableval
+else
+ if test -n "$gl_use_threads_default"; then
+ gl_use_threads="$gl_use_threads_default"
+ else
+ case "$host_os" in
+ osf*) gl_use_threads=no ;;
+ cygwin*)
+ case `uname -r` in
+ 1.[0-5].*) gl_use_threads=no ;;
+ *) gl_use_threads=yes ;;
+ esac
+ ;;
+ *) gl_use_threads=yes ;;
+ esac
+ fi
+
+fi
+
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ # For using <pthread.h>:
+ case "$host_os" in
+ osf*)
+ # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+ # groks <pthread.h>. cc also understands the flag -pthread, but
+ # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+ # 2. putting a flag into CPPFLAGS that has an effect on the linker
+ # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+ # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ ;;
+ esac
+ # Some systems optimize for single-threaded programs by default, and
+ # need special flags to disable these optimizations. For example, the
+ # definition of 'errno' in <errno.h>.
+ case "$host_os" in
+ aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+ esac
fi
+
+
+
if test "X$prefix" = "XNONE"; then
acl_final_prefix="$ac_default_prefix"
else
@@ -7580,6 +8182,7 @@ _ACEOF
prefix="$acl_save_prefix"
+
# Check whether --with-gnu-ld was given.
if test "${with_gnu_ld+set}" = set; then :
withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
@@ -7590,48 +8193,22 @@ fi
# Prepare PATH_SEPARATOR.
# The user is always right.
if test "${PATH_SEPARATOR+set}" != set; then
- echo "#! /bin/sh" >conf$$.sh
- echo "exit 0" >>conf$$.sh
- chmod +x conf$$.sh
- if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
- PATH_SEPARATOR=';'
- else
- PATH_SEPARATOR=:
- fi
- rm -f conf$$.sh
-fi
-ac_prog=ld
-if test "$GCC" = yes; then
- # Check if gcc -print-prog-name=ld gives a path.
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
- case $host in
- *-*-mingw*)
- # gcc leaves a trailing carriage return which upsets mingw
- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
- *)
- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
- esac
- case $ac_prog in
- # Accept absolute paths.
- [\\/]* | [A-Za-z]:[\\/]*)
- re_direlt='/[^/][^/]*/\.\./'
- # Canonicalize the path of ld
- ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
- while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
- ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
- done
- test -z "$LD" && LD="$ac_prog"
- ;;
- "")
- # If it fails, then pretend we aren't using GCC.
- ac_prog=ld
- ;;
- *)
- # If it is relative, then search for the first ld in PATH.
- with_gnu_ld=unknown
- ;;
- esac
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+if test -n "$LD"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld" >&5
+$as_echo_n "checking for ld... " >&6; }
+elif test "$GCC" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
elif test "$with_gnu_ld" = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
$as_echo_n "checking for GNU ld... " >&6; }
@@ -7639,51 +8216,143 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
$as_echo_n "checking for non-GNU ld... " >&6; }
fi
-if ${acl_cv_path_LD+:} false; then :
+if test -n "$LD"; then
+ # Let the user override the test with a path.
+ :
+else
+ if ${acl_cv_path_LD+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -z "$LD"; then
- IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
- for ac_dir in $PATH; do
- test -z "$ac_dir" && ac_dir=.
- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
- acl_cv_path_LD="$ac_dir/$ac_prog"
- # Check to see if the program is GNU ld. I'd rather use --version,
- # but apparently some GNU ld's only accept -v.
- # Break only if it was the GNU/non-GNU ld that we prefer.
- if "$acl_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then
- test "$with_gnu_ld" != no && break
- else
- test "$with_gnu_ld" != yes && break
- fi
+
+ acl_cv_path_LD= # Final result of this test
+ ac_prog=ld # Program to search in $PATH
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $acl_output in
+ # Accept absolute paths.
+ [\\/]* | ?:[\\/]*)
+ re_direlt='/[^/][^/]*/\.\./'
+ # Canonicalize the pathname of ld
+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+ done
+ # Got the pathname. No search in PATH is needed.
+ acl_cv_path_LD="$acl_output"
+ ac_prog=
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
fi
- done
- IFS="$ac_save_ifs"
+ if test -n "$ac_prog"; then
+ # Search for $ac_prog in $PATH.
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+ fi
+ case $host in
+ *-*-aix*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ # The compiler produces 64-bit code. Add option '-b64' so that the
+ # linker groks 64-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -b64 "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+ esac
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ sparc64-*-netbsd*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
else
- acl_cv_path_LD="$LD" # Let the user override the test with a path.
+ # The compiler produces 32-bit code. Add option '-m elf32_sparc'
+ # so that the linker groks 32-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -m elf32_sparc "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+ esac
+
fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ esac
+
fi
-LD="$acl_cv_path_LD"
+ LD="$acl_cv_path_LD"
+fi
if test -n "$LD"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
$as_echo "$LD" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
+ as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
if ${acl_cv_prog_gnu_ld+:} false; then :
$as_echo_n "(cached) " >&6
else
- # I'd rather use --version here, but apparently some GNU ld's only accept -v.
-if $LD -v 2>&1 </dev/null | egrep '(GNU|with BFD)' 1>&5; then
+ # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
acl_cv_prog_gnu_ld=yes
-else
+ ;;
+*)
acl_cv_prog_gnu_ld=no
-fi
+ ;;
+esac
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
$as_echo "$acl_cv_prog_gnu_ld" >&6; }
@@ -7691,6 +8360,7 @@ with_gnu_ld=$acl_cv_prog_gnu_ld
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shared library run path origin" >&5
$as_echo_n "checking for shared library run path origin... " >&6; }
if ${acl_cv_rpath+:} false; then :
@@ -7707,12 +8377,14 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_rpath" >&5
$as_echo "$acl_cv_rpath" >&6; }
wl="$acl_cv_wl"
- libext="$acl_cv_libext"
- shlibext="$acl_cv_shlibext"
- hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
- hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
- hardcode_direct="$acl_cv_hardcode_direct"
- hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
# Check whether --enable-rpath was given.
if test "${enable_rpath+set}" = set; then :
enableval=$enable_rpath; :
@@ -7723,6 +8395,1453 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking 32-bit host C ABI" >&5
+$as_echo_n "checking 32-bit host C ABI... " >&6; }
+if ${gl_cv_host_cpu_c_abi_32bit+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ esac
+ else
+ case "$host_cpu" in
+
+ i[4567]86 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=yes
+else
+ gl_cv_host_cpu_c_abi_32bit=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_host_cpu_c_abi_32bit=no
+else
+ gl_cv_host_cpu_c_abi_32bit=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+ esac
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_host_cpu_c_abi_32bit" >&5
+$as_echo "$gl_cv_host_cpu_c_abi_32bit" >&6; }
+
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+
+
+
+
+
+ case "$host_os" in
+ solaris*)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for 64-bit host" >&5
+$as_echo_n "checking for 64-bit host... " >&6; }
+if ${gl_cv_solaris_64bit+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef _LP64
+ int ok;
+ #else
+ error fail
+ #endif
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_solaris_64bit=yes
+else
+ gl_cv_solaris_64bit=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_solaris_64bit" >&5
+$as_echo "$gl_cv_solaris_64bit" >&6; };;
+ esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the common suffixes of directories in the library search path" >&5
+$as_echo_n "checking for the common suffixes of directories in the library search path... " >&6; }
+if ${acl_cv_libdirstems+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ if test "$HOST_CPU_C_ABI_32BIT" != yes; then
+ searchpath=`(if test -f /usr/bin/gcc \
+ && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
+ LC_ALL=C /usr/bin/gcc -print-search-dirs; \
+ else \
+ LC_ALL=C $CC -print-search-dirs; \
+ fi) 2>/dev/null \
+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_libdirstems" >&5
+$as_echo "$acl_cv_libdirstems" >&6; }
+ # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
+
+
+
+ gl_threads_api=none
+ LIBTHREAD=
+ LTLIBTHREAD=
+ LIBMULTITHREAD=
+ LTLIBMULTITHREAD=
+ if test "$gl_use_threads" != no; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether imported symbols can be declared weak" >&5
+$as_echo_n "checking whether imported symbols can be declared weak... " >&6; }
+if ${gl_cv_have_weak+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gl_cv_have_weak=no
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+extern void xyzzy ();
+#pragma weak xyzzy
+int
+main ()
+{
+xyzzy();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_cv_have_weak=maybe
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ if test $gl_cv_have_weak = maybe; then
+ if test "$cross_compiling" = yes; then :
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Extensible Linking Format" >/dev/null 2>&1; then :
+ gl_cv_have_weak="guessing yes"
+else
+ gl_cv_have_weak="guessing no"
+fi
+rm -f conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_have_weak=yes
+else
+ gl_cv_have_weak=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_have_weak" >&5
+$as_echo "$gl_cv_have_weak" >&6; }
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
+ ac_fn_c_check_header_mongrel "$LINENO" "pthread.h" "ac_cv_header_pthread_h" "$ac_includes_default"
+if test "x$ac_cv_header_pthread_h" = xyes; then :
+ gl_have_pthread_h=yes
+else
+ gl_have_pthread_h=no
+fi
+
+
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ gl_have_pthread=
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pthread.h>
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
+
+int
+main ()
+{
+pthread_mutex_lock (&m);
+ pthread_mutexattr_init (&ma);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_have_pthread=yes
+ LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
+ LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS=$save_LIBS
+ test -n "$gl_have_pthread" && break
+ done
+
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+ LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.1-9 | solaris2.1-9.* | hpux*)
+
+$as_echo "#define PTHREAD_IN_USE_DETECTION_HARD 1" >>confdefs.h
+
+ esac
+
+fi
+
+ elif test -z "$gl_have_pthread"; then
+ # Some library is needed. Try libpthread and libc_r.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lpthread" >&5
+$as_echo_n "checking for pthread_kill in -lpthread... " >&6; }
+if ${ac_cv_lib_pthread_pthread_kill+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_pthread_pthread_kill=yes
+else
+ ac_cv_lib_pthread_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pthread_pthread_kill" >&5
+$as_echo "$ac_cv_lib_pthread_pthread_kill" >&6; }
+if test "x$ac_cv_lib_pthread_pthread_kill" = xyes; then :
+ gl_have_pthread=yes
+ LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+ LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+fi
+
+ if test -z "$gl_have_pthread"; then
+ # For FreeBSD 4.
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_kill in -lc_r" >&5
+$as_echo_n "checking for pthread_kill in -lc_r... " >&6; }
+if ${ac_cv_lib_c_r_pthread_kill+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc_r $LIBS"
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_kill ();
+int
+main ()
+{
+return pthread_kill ();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_lib_c_r_pthread_kill=yes
+else
+ ac_cv_lib_c_r_pthread_kill=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_c_r_pthread_kill" >&5
+$as_echo "$ac_cv_lib_c_r_pthread_kill" >&6; }
+if test "x$ac_cv_lib_c_r_pthread_kill" = xyes; then :
+ gl_have_pthread=yes
+ LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+ LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r
+fi
+
+ fi
+ fi
+ if test -n "$gl_have_pthread"; then
+ gl_threads_api=posix
+
+$as_echo "#define USE_POSIX_THREADS 1" >>confdefs.h
+
+ if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_POSIX_THREADS_WEAK 1" >>confdefs.h
+
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -z "$gl_have_pthread"; then
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+ gl_have_solaristhread=
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS -lthread"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <thread.h>
+#include <synch.h>
+
+int
+main ()
+{
+thr_self();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_have_solaristhread=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gl_save_LIBS"
+ if test -n "$gl_have_solaristhread"; then
+ gl_threads_api=solaris
+ LIBTHREAD=-lthread
+ LTLIBTHREAD=-lthread
+ LIBMULTITHREAD="$LIBTHREAD"
+ LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_SOLARIS_THREADS 1" >>confdefs.h
+
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_SOLARIS_THREADS_WEAK 1" >>confdefs.h
+
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ fi
+ fi
+ if test "$gl_use_threads" = pth; then
+ gl_save_CPPFLAGS="$CPPFLAGS"
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libpth" >&5
+$as_echo_n "checking how to link with libpth... " >&6; }
+if ${ac_cv_libpth_libs+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+
+
+
+
+
+
+ use_additional=yes
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-libpth-prefix was given.
+if test "${with_libpth_prefix+set}" = set; then :
+ withval=$with_libpth_prefix;
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && test ! -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
+ fi
+ fi
+
+fi
+
+ LIBPTH=
+ LTLIBPTH=
+ INCPTH=
+ LIBPTH_PREFIX=
+ HAVE_LIBPTH=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='pth '
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIBPTH="${LIBPTH}${LIBPTH:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$value"
+ else
+ :
+ fi
+ else
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIBPTH; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+ else
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ if test "$acl_hardcode_direct" = yes; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ haveit=
+ for x in $LDFLAGS $LIBPTH; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$found_so"
+ else
+ LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$found_a"
+ else
+ LIBPTH="${LIBPTH}${LIBPTH:+ }-L$found_dir -l$name"
+ fi
+ fi
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = 'pth'; then
+ LIBPTH_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = 'pth'; then
+ LIBPTH_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INCPTH; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ INCPTH="${INCPTH}${INCPTH:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -n "$found_la"; then
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIBPTH; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LIBPTH="${LIBPTH}${LIBPTH:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIBPTH; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$dep"
+ LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ LIBPTH="${LIBPTH}${LIBPTH:+ }-l$name"
+ LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
+ else
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIBPTH="${LIBPTH}${LIBPTH:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ for found_dir in $ltrpathdirs; do
+ LTLIBPTH="${LTLIBPTH}${LTLIBPTH:+ }-R$found_dir"
+ done
+ fi
+
+
+
+
+
+ ac_cv_libpth_libs="$LIBPTH"
+ ac_cv_libpth_ltlibs="$LTLIBPTH"
+ ac_cv_libpth_cppflags="$INCPTH"
+ ac_cv_libpth_prefix="$LIBPTH_PREFIX"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_libpth_libs" >&5
+$as_echo "$ac_cv_libpth_libs" >&6; }
+ LIBPTH="$ac_cv_libpth_libs"
+ LTLIBPTH="$ac_cv_libpth_ltlibs"
+ INCPTH="$ac_cv_libpth_cppflags"
+ LIBPTH_PREFIX="$ac_cv_libpth_prefix"
+
+ for element in $INCPTH; do
+ haveit=
+ for x in $CPPFLAGS; do
+
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ eval x=\"$x\"
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }$element"
+ fi
+ done
+
+
+
+
+ HAVE_LIBPTH=yes
+
+
+
+ gl_have_pth=
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPTH"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <pth.h>
+int
+main ()
+{
+pth_self();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gl_have_pth=yes
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gl_save_LIBS"
+ if test -n "$gl_have_pth"; then
+ gl_threads_api=pth
+ LIBTHREAD="$LIBPTH"
+ LTLIBTHREAD="$LTLIBPTH"
+ LIBMULTITHREAD="$LIBTHREAD"
+ LTLIBMULTITHREAD="$LTLIBTHREAD"
+
+$as_echo "#define USE_PTH_THREADS 1" >>confdefs.h
+
+ if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+
+$as_echo "#define USE_PTH_THREADS_WEAK 1" >>confdefs.h
+
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ else
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ fi
+ fi
+ if test -z "$gl_have_pthread"; then
+ case "$gl_use_threads" in
+ yes | windows | win32) # The 'win32' is for backward compatibility.
+ if { case "$host_os" in
+ mingw*) true;;
+ *) false;;
+ esac
+ }; then
+ gl_threads_api=windows
+
+$as_echo "#define USE_WINDOWS_THREADS 1" >>confdefs.h
+
+ fi
+ ;;
+ esac
+ fi
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for multithread API to use" >&5
+$as_echo_n "checking for multithread API to use... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_threads_api" >&5
+$as_echo "$gl_threads_api" >&6; }
+
+
+
+
+
+
+
+
+
+
+
+ if test "$gl_threads_api" = posix; then
+ # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
+ # pthread_rwlock_* functions.
+ has_rwlock=false
+ ac_fn_c_check_type "$LINENO" "pthread_rwlock_t" "ac_cv_type_pthread_rwlock_t" "#include <pthread.h>
+"
+if test "x$ac_cv_type_pthread_rwlock_t" = xyes; then :
+ has_rwlock=true
+
+$as_echo "#define HAVE_PTHREAD_RWLOCK 1" >>confdefs.h
+
+fi
+
+ if $has_rwlock; then
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthread_rwlock_rdlock prefers a writer to a reader" >&5
+$as_echo_n "checking whether pthread_rwlock_rdlock prefers a writer to a reader... " >&6; }
+if ${gl_cv_pthread_rwlock_rdlock_prefer_writer+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ if test "$cross_compiling" = yes; then :
+ gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define SUCCEED() exit (0)
+#define FAILURE() exit (1)
+#define UNEXPECTED(n) (exit (10 + (n)))
+
+/* The main thread creates the waiting writer and the requesting reader threads
+ in the default way; this guarantees that they have the same priority.
+ We can reuse the main thread as first reader thread. */
+
+static pthread_rwlock_t lock;
+static pthread_t reader1;
+static pthread_t writer;
+static pthread_t reader2;
+static pthread_t timer;
+/* Used to pass control from writer to reader2 and from reader2 to timer,
+ as in a relay race.
+ Passing control from one running thread to another running thread
+ is most likely faster than to create the second thread. */
+static pthread_mutex_t baton;
+
+static void *
+timer_func (void *ignored)
+{
+ /* Step 13 (can be before or after step 12):
+ The timer thread takes the baton, then waits a moment to make sure
+ it can tell whether the second reader thread is blocked at step 12. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (13);
+ usleep (100000);
+ /* By the time we get here, it's clear that the second reader thread is
+ blocked at step 12. This is the desired behaviour. */
+ SUCCEED ();
+}
+
+static void *
+reader2_func (void *ignored)
+{
+ int err;
+
+ /* Step 8 (can be before or after step 7):
+ The second reader thread takes the baton, then waits a moment to make sure
+ the writer thread has reached step 7. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (8);
+ usleep (100000);
+ /* Step 9: The second reader thread requests the lock. */
+ err = pthread_rwlock_tryrdlock (&lock);
+ if (err == 0)
+ FAILURE ();
+ else if (err != EBUSY)
+ UNEXPECTED (9);
+ /* Step 10: Launch a timer, to test whether the next call blocks. */
+ if (pthread_create (&timer, NULL, timer_func, NULL))
+ UNEXPECTED (10);
+ /* Step 11: Release the baton. */
+ if (pthread_mutex_unlock (&baton))
+ UNEXPECTED (11);
+ /* Step 12: The second reader thread requests the lock. */
+ err = pthread_rwlock_rdlock (&lock);
+ if (err == 0)
+ FAILURE ();
+ else
+ UNEXPECTED (12);
+}
+
+static void *
+writer_func (void *ignored)
+{
+ /* Step 4: Take the baton, so that the second reader thread does not go ahead
+ too early. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (4);
+ /* Step 5: Create the second reader thread. */
+ if (pthread_create (&reader2, NULL, reader2_func, NULL))
+ UNEXPECTED (5);
+ /* Step 6: Release the baton. */
+ if (pthread_mutex_unlock (&baton))
+ UNEXPECTED (6);
+ /* Step 7: The writer thread requests the lock. */
+ if (pthread_rwlock_wrlock (&lock))
+ UNEXPECTED (7);
+ return NULL;
+}
+
+int
+main ()
+{
+ reader1 = pthread_self ();
+
+ /* Step 1: The main thread initializes the lock and the baton. */
+ if (pthread_rwlock_init (&lock, NULL))
+ UNEXPECTED (1);
+ if (pthread_mutex_init (&baton, NULL))
+ UNEXPECTED (1);
+ /* Step 2: The main thread acquires the lock as a reader. */
+ if (pthread_rwlock_rdlock (&lock))
+ UNEXPECTED (2);
+ /* Step 3: Create the writer thread. */
+ if (pthread_create (&writer, NULL, writer_func, NULL))
+ UNEXPECTED (3);
+ /* Job done. Go to sleep. */
+ for (;;)
+ {
+ sleep (1);
+ }
+}
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_pthread_rwlock_rdlock_prefer_writer=yes
+else
+ gl_cv_pthread_rwlock_rdlock_prefer_writer=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ LIBS="$save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_pthread_rwlock_rdlock_prefer_writer" >&5
+$as_echo "$gl_cv_pthread_rwlock_rdlock_prefer_writer" >&6; }
+ case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in
+ *yes)
+
+$as_echo "#define HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER 1" >>confdefs.h
+
+ ;;
+ esac
+
+ fi
+ # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <pthread.h>
+int
+main ()
+{
+
+#if __FreeBSD__ == 4
+error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
+#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \
+ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
+error "No, in Mac OS X < 10.7 recursive mutexes actually don't work."
+#else
+int x = (int)PTHREAD_MUTEX_RECURSIVE;
+return !x;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+$as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ :
+
+
+
+
+
+
+
@@ -7762,7 +9881,11 @@ if test "${with_libiconv_prefix+set}" = set; then :
else
additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && test ! -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
fi
fi
@@ -7771,6 +9894,8 @@ fi
LIBICONV=
LTLIBICONV=
INCICONV=
+ LIBICONV_PREFIX=
+ HAVE_LIBICONV=
rpathdirs=
ltrpathdirs=
names_already_handled=
@@ -7788,7 +9913,7 @@ fi
done
if test -z "$already_handled"; then
names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
@@ -7804,22 +9929,52 @@ fi
found_la=
found_so=
found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
if test $use_additional = yes; then
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBICONV; do
@@ -7835,21 +9990,44 @@ fi
case "$x" in
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
;;
esac
if test "X$found_dir" != "X"; then
@@ -7860,7 +10038,9 @@ fi
if test "X$found_dir" != "X"; then
LTLIBICONV="${LTLIBICONV}${LTLIBICONV:+ }-L$found_dir -l$name"
if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
haveit=
@@ -7873,10 +10053,10 @@ fi
if test -z "$haveit"; then
ltrpathdirs="$ltrpathdirs $found_dir"
fi
- if test "$hardcode_direct" = yes; then
+ if test "$acl_hardcode_direct" = yes; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
haveit=
for x in $rpathdirs; do
@@ -7908,7 +10088,7 @@ fi
if test -z "$haveit"; then
LIBICONV="${LIBICONV}${LIBICONV:+ }-L$found_dir"
fi
- if test "$hardcode_minus_L" != no; then
+ if test "$acl_hardcode_minus_L" != no; then
LIBICONV="${LIBICONV}${LIBICONV:+ }$found_so"
else
LIBICONV="${LIBICONV}${LIBICONV:+ }-l$name"
@@ -7925,8 +10105,18 @@ fi
fi
additional_includedir=
case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = 'iconv'; then
+ LIBICONV_PREFIX="$basedir"
+ fi
additional_includedir="$basedir/include"
;;
esac
@@ -7936,7 +10126,7 @@ fi
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -7975,12 +10165,14 @@ fi
case "$dep" in
-L*)
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -8077,21 +10269,21 @@ fi
done
done
if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
alldirs=
for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
acl_save_libdir="$libdir"
libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
else
for found_dir in $rpathdirs; do
acl_save_libdir="$libdir"
libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBICONV="${LIBICONV}${LIBICONV:+ }$flag"
done
@@ -8106,34 +10298,6 @@ fi
- for ac_header in argz.h limits.h locale.h nl_types.h malloc.h stddef.h \
-stdlib.h string.h unistd.h sys/param.h
-do :
- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
- for ac_func in feof_unlocked fgets_unlocked getc_unlocked getcwd getegid \
-geteuid getgid getuid mempcpy munmap putenv setenv setlocale localeconv stpcpy \
-strcasecmp strdup strtoul tsearch __argz_count __argz_stringify __argz_next \
-__fsetlocking
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
@@ -8176,14 +10340,16 @@ else
am_cv_lib_iconv=no
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdlib.h>
#include <iconv.h>
+
int
main ()
{
iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
;
return 0;
}
@@ -8198,14 +10364,16 @@ rm -f core conftest.err conftest.$ac_objext \
LIBS="$LIBS $LIBICONV"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <stdlib.h>
#include <iconv.h>
+
int
main ()
{
iconv_t cd = iconv_open("","");
- iconv(cd,NULL,NULL,NULL,NULL);
- iconv_close(cd);
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);
;
return 0;
}
@@ -8223,6 +10391,169 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv" >&5
$as_echo "$am_cv_func_iconv" >&6; }
if test "$am_cv_func_iconv" = yes; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working iconv" >&5
+$as_echo_n "checking for working iconv... " >&6; }
+if ${am_cv_func_iconv_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ am_cv_func_iconv_works=no
+ for ac_iconv_const in '' 'const'; do
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+
+int
+main ()
+{
+int result = 0;
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\263";
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ {
+ /* Try standardized names. */
+ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+ /* Try IRIX, OSF/1 names. */
+ iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+ /* Try AIX names. */
+ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+ /* Try HP-UX names. */
+ iconv_t cd4 = iconv_open ("utf8", "eucJP");
+ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+ result |= 16;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd3 != (iconv_t)(-1))
+ iconv_close (cd3);
+ if (cd4 != (iconv_t)(-1))
+ iconv_close (cd4);
+ }
+ return result;
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ am_cv_func_iconv_works=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ test "$am_cv_func_iconv_works" = no || break
+ done
+ LIBS="$am_save_LIBS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_iconv_works" >&5
+$as_echo "$am_cv_func_iconv_works" >&6; }
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
$as_echo "#define HAVE_ICONV 1" >>confdefs.h
@@ -8256,7 +10587,7 @@ extern
#ifdef __cplusplus
"C"
#endif
-#if defined(__STDC__) || defined(__cplusplus)
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
#else
size_t iconv();
@@ -8280,18 +10611,1343 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
am_cv_proto_iconv=`echo "$am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${ac_t:-
- }$am_cv_proto_iconv" >&5
-$as_echo "${ac_t:-
- }$am_cv_proto_iconv" >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result:
+ $am_cv_proto_iconv" >&5
+$as_echo "
+ $am_cv_proto_iconv" >&6; }
+ else
+ am_cv_proto_iconv_arg1=""
+ fi
cat >>confdefs.h <<_ACEOF
#define ICONV_CONST $am_cv_proto_iconv_arg1
_ACEOF
+
+
+
+
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+
+$as_echo "#define HAVE_BUILTIN_EXPECT 1" >>confdefs.h
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+ for ac_header in argz.h inttypes.h limits.h unistd.h sys/param.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ for ac_func in getcwd getegid geteuid getgid getuid mempcpy munmap \
+ stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
+ argz_next __fsetlocking
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ for ac_func in localeconv
+do :
+ ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv"
+if test "x$ac_cv_func_localeconv" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LOCALECONV 1
+_ACEOF
+
+fi
+done
+
+
+ ac_fn_c_check_decl "$LINENO" "feof_unlocked" "ac_cv_have_decl_feof_unlocked" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl_feof_unlocked" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FEOF_UNLOCKED $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "fgets_unlocked" "ac_cv_have_decl_fgets_unlocked" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl_fgets_unlocked" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_FGETS_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+
+
+ for ac_prog in bison
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_INTLBISON+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$INTLBISON"; then
+ ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_INTLBISON="$ac_prog"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+INTLBISON=$ac_cv_prog_INTLBISON
+if test -n "$INTLBISON"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5
+$as_echo "$INTLBISON" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+ test -n "$INTLBISON" && break
+done
+
+ if test -z "$INTLBISON"; then
+ ac_verc_fail=yes
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5
+$as_echo_n "checking version of bison... " >&6; }
+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 2.[7-9]* | [3-9].*)
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ esac
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
+$as_echo "$ac_prog_version" >&6; }
+ fi
+ if test $ac_verc_fail = yes; then
+ INTLBISON=:
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
+$as_echo_n "checking for long long int... " >&6; }
+if ${ac_cv_type_long_long_int+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ac_cv_type_long_long_int=yes
+ if test "x${ac_cv_prog_cc_c99-no}" = xno; then
+ ac_cv_type_long_long_int=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_long_long_int = yes; then
+ if test "$cross_compiling" = yes; then :
+ :
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <limits.h>
+ #ifndef LLONG_MAX
+ # define HALF \
+ (1LL << (sizeof (long long int) * CHAR_BIT - 2))
+ # define LLONG_MAX (HALF - 1 + HALF)
+ #endif
+int
+main ()
+{
+long long int n = 1;
+ int i;
+ for (i = 0; ; i++)
+ {
+ long long int m = n << i;
+ if (m >> i != n)
+ return 1;
+ if (LLONG_MAX / 2 < m)
+ break;
+ }
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+ ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+ fi
+ fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_long_long_int" >&5
+$as_echo "$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+
+$as_echo "#define HAVE_LONG_LONG_INT 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wchar_t" >&5
+$as_echo_n "checking for wchar_t... " >&6; }
+if ${gt_cv_c_wchar_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wchar_t=yes
+else
+ gt_cv_c_wchar_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wchar_t" >&5
+$as_echo "$gt_cv_c_wchar_t" >&6; }
+ if test $gt_cv_c_wchar_t = yes; then
+
+$as_echo "#define HAVE_WCHAR_T 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for wint_t" >&5
+$as_echo_n "checking for wint_t... " >&6; }
+if ${gt_cv_c_wint_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_wint_t=yes
+else
+ gt_cv_c_wint_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_wint_t" >&5
+$as_echo "$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+$as_echo "#define HAVE_WINT_T 1" >>confdefs.h
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether wint_t is too small" >&5
+$as_echo_n "checking whether wint_t is too small... " >&6; }
+if ${gl_cv_type_wint_t_too_small+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gl_cv_type_wint_t_too_small=no
+else
+ gl_cv_type_wint_t_too_small=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_type_wint_t_too_small" >&5
+$as_echo "$gl_cv_type_wint_t_too_small" >&6; }
+ if test $gl_cv_type_wint_t_too_small = yes; then
+ GNULIB_OVERRIDES_WINT_T=1
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for intmax_t" >&5
+$as_echo_n "checking for intmax_t... " >&6; }
+if ${gt_cv_c_intmax_t+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+
+int
+main ()
+{
+intmax_t x = -1;
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_c_intmax_t=yes
+else
+ gt_cv_c_intmax_t=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_c_intmax_t" >&5
+$as_echo "$gt_cv_c_intmax_t" >&6; }
+ if test $gt_cv_c_intmax_t = yes; then
+
+$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
+
+ fi
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether printf() supports POSIX/XSI format strings" >&5
+$as_echo_n "checking whether printf() supports POSIX/XSI format strings... " >&6; }
+if ${gt_cv_func_printf_posix+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ if test "$cross_compiling" = yes; then :
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+ notposix
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "notposix" >/dev/null 2>&1; then :
+ gt_cv_func_printf_posix="guessing no"
+else
+ gt_cv_func_printf_posix="guessing yes"
+fi
+rm -f conftest*
+
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+ dollar expansion (possibly an autoconf bug). */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+ sprintf (buf, format, 33, 55);
+ return (strcmp (buf, "55 33") != 0);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gt_cv_func_printf_posix=yes
+else
+ gt_cv_func_printf_posix=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_printf_posix" >&5
+$as_echo "$gt_cv_func_printf_posix" >&6; }
+ case $gt_cv_func_printf_posix in
+ *yes)
+
+$as_echo "#define HAVE_POSIX_PRINTF 1" >>confdefs.h
+
+ ;;
+ esac
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C Library >= 2.1 or uClibc" >&5
+$as_echo_n "checking whether we are using the GNU C Library >= 2.1 or uClibc... " >&6; }
+if ${ac_cv_gnu_library_2_1+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky" >/dev/null 2>&1; then :
+ ac_cv_gnu_library_2_1=yes
+else
+ ac_cv_gnu_library_2_1=no
+fi
+rm -f conftest*
+
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_gnu_library_2_1" >&5
+$as_echo "$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+ for ac_header in stdint.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H 1
+_ACEOF
+
+fi
+
+done
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SIZE_MAX" >&5
+$as_echo_n "checking for SIZE_MAX... " >&6; }
+if ${gl_cv_size_max+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+
+ gl_cv_size_max=
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Found it" >/dev/null 2>&1; then :
+ gl_cv_size_max=yes
+fi
+rm -f conftest*
+
+ if test -z "$gl_cv_size_max"; then
+ if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) * CHAR_BIT - 1" "size_t_bits_minus_1" "#include <stddef.h>
+#include <limits.h>"; then :
+
+else
+ size_t_bits_minus_1=
+fi
+
+ if ac_fn_c_compute_int "$LINENO" "sizeof (size_t) <= sizeof (unsigned int)" "fits_in_uint" "#include <stddef.h>"; then :
+
+else
+ fits_in_uint=
+fi
+
+ if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+ if test $fits_in_uint = 1; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stddef.h>
+ extern size_t foo;
+ extern unsigned long foo;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ fits_in_uint=0
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+ if test $fits_in_uint = 1; then
+ gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ else
+ gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ fi
+ else
+ gl_cv_size_max='((size_t)~(size_t)0)'
+ fi
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_size_max" >&5
+$as_echo "$gl_cv_size_max" >&6; }
+ if test "$gl_cv_size_max" != yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define SIZE_MAX $gl_cv_size_max
+_ACEOF
+
+ fi
+
+
+
+
+ for ac_header in stdint.h
+do :
+ ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
+if test "x$ac_cv_header_stdint_h" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_STDINT_H 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+
+ for ac_func in $ac_func_list
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fcntl.h" >&5
+$as_echo_n "checking for working fcntl.h... " >&6; }
+if ${gl_cv_header_working_fcntl_h+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ # Guess 'no' on native Windows.
+ mingw*) gl_cv_header_working_fcntl_h='no' ;;
+ *) gl_cv_header_working_fcntl_h=cross-compiling ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+
+int
+main ()
+{
+
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gl_cv_header_working_fcntl_h=yes
+else
+ case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_header_working_fcntl_h" >&5
+$as_echo "$gl_cv_header_working_fcntl_h" >&6; }
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOATIME $ac_val
+_ACEOF
+
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_WORKING_O_NOFOLLOW $ac_val
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_func_uselocale = yes; then
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether uselocale works" >&5
+$as_echo_n "checking whether uselocale works... " >&6; }
+if ${gt_cv_func_uselocale_works+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ # Guess no on AIX, yes otherwise.
+ case "$host_os" in
+ aix*) gt_cv_func_uselocale_works="guessing no" ;;
+ *) gt_cv_func_uselocale_works="guessing yes" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+int main ()
+{
+ uselocale (NULL);
+ setlocale (LC_ALL, "en_US.UTF-8");
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gt_cv_func_uselocale_works=yes
+else
+ gt_cv_func_uselocale_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
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_uselocale_works" >&5
+$as_echo "$gt_cv_func_uselocale_works" >&6; }
+ else
+ gt_cv_func_uselocale_works=no
+ fi
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+
+$as_echo "#define HAVE_WORKING_USELOCALE 1" >>confdefs.h
+
+ ;;
+ esac
+
+
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fake locale system (OpenBSD)" >&5
+$as_echo_n "checking for fake locale system (OpenBSD)... " >&6; }
+if ${gt_cv_locale_fake+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test "$cross_compiling" = yes; then :
+ case "$host_os" in
+ openbsd*) gt_cv_locale_fake="guessing yes" ;;
+ *) gt_cv_locale_fake="guessing no" ;;
+ esac
+
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+#include <locale.h>
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+int main ()
+{
+ locale_t loc1, loc2;
+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) return 1;
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL) return 1;
+ loc1 = newlocale (LC_ALL_MASK, "de_DE.UTF-8", (locale_t)0);
+ loc2 = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", (locale_t)0);
+ return !(loc1 == loc2);
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+ gt_cv_locale_fake=yes
+else
+ gt_cv_locale_fake=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+ conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_fake" >&5
+$as_echo "$gt_cv_locale_fake" >&6; }
+ ;;
+ *) gt_cv_locale_fake=no ;;
+ esac
+ case "$gt_cv_locale_fake" in
+ *yes)
+
+$as_echo "#define HAVE_FAKE_LOCALES 1" >>confdefs.h
+
+ ;;
+ esac
+
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for Solaris 11.4 locale system" >&5
+$as_echo_n "checking for Solaris 11.4 locale system... " >&6; }
+if ${gt_cv_locale_solaris114+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ case "$host_os" in
+ solaris*)
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+ #include <locale.h>
+ struct _LC_locale_t *x;
+ locale_t y;
+
+int
+main ()
+{
+*y = x;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ gt_cv_locale_solaris114=yes
+else
+ gt_cv_locale_solaris114=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ;;
+ *) gt_cv_locale_solaris114=no ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_locale_solaris114" >&5
+$as_echo "$gt_cv_locale_solaris114" >&6; }
+ ;;
+ *) gt_cv_locale_solaris114=no ;;
+ esac
+ if test $gt_cv_locale_solaris114 = yes; then
+
+$as_echo "#define HAVE_SOLARIS114_LOCALES 1" >>confdefs.h
+
+ fi
+
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ for ac_func in getlocalename_l
+do :
+ ac_fn_c_check_func "$LINENO" "getlocalename_l" "ac_cv_func_getlocalename_l"
+if test "x$ac_cv_func_getlocalename_l" = xyes; then :
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_GETLOCALENAME_L 1
+_ACEOF
+
+fi
+done
+
+ ;;
+ esac
+
+ gt_nameless_locales=no
+ if false; then
+ gt_nameless_locales=yes
+
+$as_echo "#define HAVE_NAMELESS_LOCALES 1" >>confdefs.h
+
+ fi
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFLocaleCopyCurrent=yes
+else
+ gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyPreferredLanguages();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFLocaleCopyPreferredLanguages=yes
+else
+ gt_cv_func_CFLocaleCopyPreferredLanguages=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyCurrent = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for flexible array members" >&5
+$as_echo_n "checking for flexible array members... " >&6; }
+if ${ac_cv_c_flexmember+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <stdlib.h>
+ #include <stdio.h>
+ #include <stddef.h>
+ struct s { int n; double d[]; };
+int
+main ()
+{
+int m = getchar ();
+ struct s *p = malloc (offsetof (struct s, d)
+ + m * sizeof (double));
+ p->d[0] = 0.0;
+ return p->d != (double *) NULL;
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+ ac_cv_c_flexmember=yes
+else
+ ac_cv_c_flexmember=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_flexmember" >&5
+$as_echo "$ac_cv_c_flexmember" >&6; }
+ if test $ac_cv_c_flexmember = yes; then
+
+$as_echo "#define FLEXIBLE_ARRAY_MEMBER /**/" >>confdefs.h
+
+ else
+ $as_echo "#define FLEXIBLE_ARRAY_MEMBER 1" >>confdefs.h
+
+ fi
+
+
+
+
+
+
+
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$AR"; then
+ ac_cv_prog_AR="$AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_AR="${ac_tool_prefix}ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_AR"; then
+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_AR="ar"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+ done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="ar"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cr'
+ fi
+
+
+
+
+ case "$enable_silent_rules" in
+ yes) INTL_DEFAULT_VERBOSITY=0;;
+ no) INTL_DEFAULT_VERBOSITY=1;;
+ *) INTL_DEFAULT_VERBOSITY=1;;
+ esac
+
+
+ ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
+
+else
+
+$as_echo "#define ptrdiff_t long" >>confdefs.h
+
+
+fi
+
+ for ac_header in features.h stddef.h stdlib.h string.h
+do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ for ac_func in asprintf fwprintf newlocale putenv setenv setlocale \
+ snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+ ac_fn_c_check_decl "$LINENO" "_snprintf" "ac_cv_have_decl__snprintf" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl__snprintf" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SNPRINTF $ac_have_decl
+_ACEOF
+ac_fn_c_check_decl "$LINENO" "_snwprintf" "ac_cv_have_decl__snwprintf" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl__snwprintf" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL__SNWPRINTF $ac_have_decl
+_ACEOF
+
+
+ ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "#include <stdio.h>
+"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+ ac_have_decl=1
+else
+ ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+ case $gt_cv_func_printf_posix in
+ *yes) HAVE_POSIX_PRINTF=1 ;;
+ *) HAVE_POSIX_PRINTF=0 ;;
+ esac
+
+ if test "$ac_cv_func_asprintf" = yes; then
+ HAVE_ASPRINTF=1
+ else
+ HAVE_ASPRINTF=0
+ fi
+
+ if test "$ac_cv_func_snprintf" = yes; then
+ HAVE_SNPRINTF=1
+ else
+ HAVE_SNPRINTF=0
+ fi
+
+ if test "$ac_cv_func_newlocale" = yes; then
+ HAVE_NEWLOCALE=1
+ else
+ HAVE_NEWLOCALE=0
+ fi
+
+ if test "$ac_cv_func_wprintf" = yes; then
+ HAVE_WPRINTF=1
+ else
+ HAVE_WPRINTF=0
fi
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for nl_langinfo and CODESET" >&5
$as_echo_n "checking for nl_langinfo and CODESET... " >&6; }
if ${am_cv_langinfo_codeset+:} false; then :
@@ -8303,7 +11959,7 @@ else
int
main ()
{
-char* cs = nl_langinfo(CODESET);
+char* cs = nl_langinfo(CODESET); return !cs;
;
return 0;
}
@@ -8325,11 +11981,10 @@ $as_echo "#define HAVE_LANGINFO_CODESET 1" >>confdefs.h
fi
- if test $ac_cv_header_locale_h = yes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LC_MESSAGES" >&5
$as_echo_n "checking for LC_MESSAGES... " >&6; }
-if ${am_cv_val_LC_MESSAGES+:} false; then :
+if ${gt_cv_val_LC_MESSAGES+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -8344,34 +11999,57 @@ return LC_MESSAGES
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- am_cv_val_LC_MESSAGES=yes
+ gt_cv_val_LC_MESSAGES=yes
else
- am_cv_val_LC_MESSAGES=no
+ gt_cv_val_LC_MESSAGES=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_val_LC_MESSAGES" >&5
-$as_echo "$am_cv_val_LC_MESSAGES" >&6; }
- if test $am_cv_val_LC_MESSAGES = yes; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_val_LC_MESSAGES" >&5
+$as_echo "$gt_cv_val_LC_MESSAGES" >&6; }
+ if test $gt_cv_val_LC_MESSAGES = yes; then
$as_echo "#define HAVE_LC_MESSAGES 1" >>confdefs.h
fi
+
+ if test $gt_nameless_locales = yes; then
+ HAVE_NAMELESS_LOCALES=1
+ else
+ HAVE_NAMELESS_LOCALES=0
fi
- for ac_prog in bison
-do
- # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+
+ if test "$enable_shared" = yes; then
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32dll=yes ;;
+ *) is_woe32dll=no ;;
+ esac
+ else
+ is_woe32dll=no
+ fi
+ WOE32DLL=$is_woe32dll
+
+
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32=yes ;;
+ *) is_woe32=no ;;
+ esac
+ WOE32=$is_woe32
+
+ if test $WOE32 = yes; then
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}windres", so it can be a program name with args.
+set dummy ${ac_tool_prefix}windres; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if ${ac_cv_prog_INTLBISON+:} false; then :
+if ${ac_cv_prog_WINDRES+:} false; then :
$as_echo_n "(cached) " >&6
else
- if test -n "$INTLBISON"; then
- ac_cv_prog_INTLBISON="$INTLBISON" # Let the user override the test.
+ if test -n "$WINDRES"; then
+ ac_cv_prog_WINDRES="$WINDRES" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
@@ -8380,7 +12058,7 @@ do
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
- ac_cv_prog_INTLBISON="$ac_prog"
+ ac_cv_prog_WINDRES="${ac_tool_prefix}windres"
$as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
@@ -8390,36 +12068,70 @@ IFS=$as_save_IFS
fi
fi
-INTLBISON=$ac_cv_prog_INTLBISON
-if test -n "$INTLBISON"; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INTLBISON" >&5
-$as_echo "$INTLBISON" >&6; }
+WINDRES=$ac_cv_prog_WINDRES
+if test -n "$WINDRES"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $WINDRES" >&5
+$as_echo "$WINDRES" >&6; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
- test -n "$INTLBISON" && break
+fi
+if test -z "$ac_cv_prog_WINDRES"; then
+ ac_ct_WINDRES=$WINDRES
+ # Extract the first word of "windres", so it can be a program name with args.
+set dummy windres; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_prog_ac_ct_WINDRES+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ if test -n "$ac_ct_WINDRES"; then
+ ac_cv_prog_ac_ct_WINDRES="$ac_ct_WINDRES" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+ ac_cv_prog_ac_ct_WINDRES="windres"
+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
done
+ done
+IFS=$as_save_IFS
- if test -z "$INTLBISON"; then
- ac_verc_fail=yes
+fi
+fi
+ac_ct_WINDRES=$ac_cv_prog_ac_ct_WINDRES
+if test -n "$ac_ct_WINDRES"; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_WINDRES" >&5
+$as_echo "$ac_ct_WINDRES" >&6; }
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+ if test "x$ac_ct_WINDRES" = x; then
+ WINDRES=""
else
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking version of bison" >&5
-$as_echo_n "checking version of bison... " >&6; }
- ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
- case $ac_prog_version in
- '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
- 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*)
- ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
- *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_prog_version" >&5
-$as_echo "$ac_prog_version" >&6; }
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+ WINDRES=$ac_ct_WINDRES
fi
- if test $ac_verc_fail = yes; then
- INTLBISON=:
+else
+ WINDRES="$ac_cv_prog_WINDRES"
+fi
+
fi
@@ -8437,17 +12149,126 @@ $as_echo "$ac_prog_version" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
-$as_echo_n "checking whether NLS is requested... " >&6; }
- # Check whether --enable-nls was given.
-if test "${enable_nls+set}" = set; then :
- enableval=$enable_nls; USE_NLS=$enableval
+
+
+
+
+
+
+
+
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFPreferencesCopyAppValue" >&5
+$as_echo_n "checking for CFPreferencesCopyAppValue... " >&6; }
+if ${gt_cv_func_CFPreferencesCopyAppValue+:} false; then :
+ $as_echo_n "(cached) " >&6
else
- USE_NLS=yes
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ gt_cv_func_CFPreferencesCopyAppValue=no
fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+$as_echo "$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+$as_echo "#define HAVE_CFPREFERENCESCOPYAPPVALUE 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyCurrent" >&5
+$as_echo_n "checking for CFLocaleCopyCurrent... " >&6; }
+if ${gt_cv_func_CFLocaleCopyCurrent+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFLocaleCopyCurrent=yes
+else
+ gt_cv_func_CFLocaleCopyCurrent=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYCURRENT 1" >>confdefs.h
+
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for CFLocaleCopyPreferredLanguages" >&5
+$as_echo_n "checking for CFLocaleCopyPreferredLanguages... " >&6; }
+if ${gt_cv_func_CFLocaleCopyPreferredLanguages+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyPreferredLanguages();
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ gt_cv_func_CFLocaleCopyPreferredLanguages=yes
+else
+ gt_cv_func_CFLocaleCopyPreferredLanguages=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_CFLocaleCopyPreferredLanguages" >&5
+$as_echo "$gt_cv_func_CFLocaleCopyPreferredLanguages" >&6; }
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+
+$as_echo "#define HAVE_CFLOCALECOPYPREFERREDLANGUAGES 1" >>confdefs.h
+
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyCurrent = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_NLS" >&5
-$as_echo "$USE_NLS" >&6; }
@@ -8459,6 +12280,14 @@ $as_echo "$USE_NLS" >&6; }
LTLIBINTL=
POSUB=
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
if test "$USE_NLS" = "yes"; then
gt_use_preinstalled_gnugettext=no
@@ -8479,41 +12308,68 @@ $as_echo "$nls_cv_force_use_gnu_gettext" >&6; }
if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
-
-
-
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libc" >&5
$as_echo_n "checking for GNU gettext in libc... " >&6; }
-if ${gt_cv_func_gnugettext2_libc+:} false; then :
+if eval \${$gt_func_gnugettext_libc+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
int
main ()
{
+
bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_domain_bindings
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_gnugettext2_libc=yes
+ eval "$gt_func_gnugettext_libc=yes"
else
- gt_cv_func_gnugettext2_libc=no
+ eval "$gt_func_gnugettext_libc=no"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libc" >&5
-$as_echo "$gt_cv_func_gnugettext2_libc" >&6; }
+eval ac_res=\$$gt_func_gnugettext_libc
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+
+
+
- if test "$gt_cv_func_gnugettext2_libc" != "yes"; then
@@ -8552,7 +12408,11 @@ if test "${with_libintl_prefix+set}" = set; then :
else
additional_includedir="$withval/include"
- additional_libdir="$withval/lib"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && test ! -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
fi
fi
@@ -8561,6 +12421,8 @@ fi
LIBINTL=
LTLIBINTL=
INCINTL=
+ LIBINTL_PREFIX=
+ HAVE_LIBINTL=
rpathdirs=
ltrpathdirs=
names_already_handled=
@@ -8578,7 +12440,7 @@ fi
done
if test -z "$already_handled"; then
names_already_handled="$names_already_handled $name"
- uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'`
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
eval value=\"\$HAVE_LIB$uppername\"
if test -n "$value"; then
if test "$value" = yes; then
@@ -8594,22 +12456,52 @@ fi
found_la=
found_so=
found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
if test $use_additional = yes; then
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then
- found_dir="$additional_libdir"
- found_so="$additional_libdir/lib$name.$shlibext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
- fi
- else
- if test -f "$additional_libdir/lib$name.$libext"; then
- found_dir="$additional_libdir"
- found_a="$additional_libdir/lib$name.$libext"
- if test -f "$additional_libdir/lib$name.la"; then
- found_la="$additional_libdir/lib$name.la"
+ dir="$additional_libdir"
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
fi
if test "X$found_dir" = "X"; then
for x in $LDFLAGS $LTLIBINTL; do
@@ -8625,21 +12517,44 @@ fi
case "$x" in
-L*)
dir=`echo "X$x" | sed -e 's/^X-L//'`
- if test "X$prefer_shared" = "Xyes" && test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then
- found_dir="$dir"
- found_so="$dir/lib$name.$shlibext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
- fi
- else
- if test -f "$dir/lib$name.$libext"; then
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
found_dir="$dir"
- found_a="$dir/lib$name.$libext"
- if test -f "$dir/lib$name.la"; then
- found_la="$dir/lib$name.la"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
fi
fi
fi
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
;;
esac
if test "X$found_dir" != "X"; then
@@ -8650,7 +12565,9 @@ fi
if test "X$found_dir" != "X"; then
LTLIBINTL="${LTLIBINTL}${LTLIBINTL:+ }-L$found_dir -l$name"
if test "X$found_so" != "X"; then
- if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
else
haveit=
@@ -8663,10 +12580,10 @@ fi
if test -z "$haveit"; then
ltrpathdirs="$ltrpathdirs $found_dir"
fi
- if test "$hardcode_direct" = yes; then
+ if test "$acl_hardcode_direct" = yes; then
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
else
- if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
haveit=
for x in $rpathdirs; do
@@ -8698,7 +12615,7 @@ fi
if test -z "$haveit"; then
LIBINTL="${LIBINTL}${LIBINTL:+ }-L$found_dir"
fi
- if test "$hardcode_minus_L" != no; then
+ if test "$acl_hardcode_minus_L" != no; then
LIBINTL="${LIBINTL}${LIBINTL:+ }$found_so"
else
LIBINTL="${LIBINTL}${LIBINTL:+ }-l$name"
@@ -8715,8 +12632,18 @@ fi
fi
additional_includedir=
case "$found_dir" in
- */lib | */lib/)
- basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'`
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = 'intl'; then
+ LIBINTL_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = 'intl'; then
+ LIBINTL_PREFIX="$basedir"
+ fi
additional_includedir="$basedir/include"
;;
esac
@@ -8726,7 +12653,7 @@ fi
if test "X$additional_includedir" = "X/usr/local/include"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -8765,12 +12692,14 @@ fi
case "$dep" in
-L*)
additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
- if test "X$additional_libdir" != "X/usr/lib"; then
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
haveit=
- if test "X$additional_libdir" = "X/usr/local/lib"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
if test -n "$GCC"; then
case $host_os in
- linux*) haveit=yes;;
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
esac
fi
fi
@@ -8867,21 +12796,21 @@ fi
done
done
if test "X$rpathdirs" != "X"; then
- if test -n "$hardcode_libdir_separator"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
alldirs=
for found_dir in $rpathdirs; do
- alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir"
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
done
acl_save_libdir="$libdir"
libdir="$alldirs"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
else
for found_dir in $rpathdirs; do
acl_save_libdir="$libdir"
libdir="$found_dir"
- eval flag=\"$hardcode_libdir_flag_spec\"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
libdir="$acl_save_libdir"
LIBINTL="${LIBINTL}${LIBINTL:+ }$flag"
done
@@ -8893,9 +12822,13 @@ fi
done
fi
+
+
+
+
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU gettext in libintl" >&5
$as_echo_n "checking for GNU gettext in libintl... " >&6; }
-if ${gt_cv_func_gnugettext2_libintl+:} false; then :
+if eval \${$gt_func_gnugettext_libintl+:} false; then :
$as_echo_n "(cached) " >&6
else
gt_save_CPPFLAGS="$CPPFLAGS"
@@ -8904,53 +12837,73 @@ else
LIBS="$LIBS $LIBINTL"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
int
main ()
{
+
bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- gt_cv_func_gnugettext2_libintl=yes
+ eval "$gt_func_gnugettext_libintl=yes"
else
- gt_cv_func_gnugettext2_libintl=no
+ eval "$gt_func_gnugettext_libintl=no"
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- if test "$gt_cv_func_gnugettext2_libintl" != yes && test -n "$LIBICONV"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
LIBS="$LIBS $LIBICONV"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+
#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
extern int _nl_msg_cat_cntr;
extern
#ifdef __cplusplus
"C"
#endif
-const char *_nl_expand_alias ();
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+
int
main ()
{
+
bindtextdomain ("", "");
-return (int) gettext ("") + (int) ngettext ("", "", 0) + _nl_msg_cat_cntr + *_nl_expand_alias (0)
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
LIBINTL="$LIBINTL $LIBICONV"
- LTLIBINTL="$LTLIBINTL $LTLIBICONV"
- gt_cv_func_gnugettext2_libintl=yes
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
fi
rm -f core conftest.err conftest.$ac_objext \
@@ -8959,12 +12912,13 @@ rm -f core conftest.err conftest.$ac_objext \
CPPFLAGS="$gt_save_CPPFLAGS"
LIBS="$gt_save_LIBS"
fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gt_cv_func_gnugettext2_libintl" >&5
-$as_echo "$gt_cv_func_gnugettext2_libintl" >&6; }
+eval ac_res=\$$gt_func_gnugettext_libintl
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
fi
- if test "$gt_cv_func_gnugettext2_libc" = "yes" \
- || { test "$gt_cv_func_gnugettext2_libintl" = "yes" \
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
&& test "$PACKAGE" != gettext-runtime \
&& test "$PACKAGE" != gettext-tools; }; then
gt_use_preinstalled_gnugettext=yes
@@ -8983,17 +12937,26 @@ $as_echo "$gt_cv_func_gnugettext2_libintl" >&6; }
if test "$nls_cv_use_gnu_gettext" = "yes"; then
BUILD_INCLUDED_LIBINTL=yes
USE_INCLUDED_LIBINTL=yes
- LIBINTL="lib/intl/libintl.a $LIBICONV"
- LTLIBINTL="lib/intl/libintl.a $LTLIBICONV"
+ LIBINTL="lib/intl/libintl.a $LIBICONV $LIBTHREAD"
+ LTLIBINTL="lib/intl/libintl.a $LTLIBICONV $LTLIBTHREAD"
LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
fi
+ CATOBJEXT=
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
CATOBJEXT=.gmo
fi
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
if test "$gt_use_preinstalled_gnugettext" = "yes" \
|| test "$nls_cv_use_gnu_gettext" = "yes"; then
@@ -9012,7 +12975,7 @@ $as_echo "$USE_NLS" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where the gettext function comes from" >&5
$as_echo_n "checking where the gettext function comes from... " >&6; }
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
gt_source="external libintl"
else
gt_source="libc"
@@ -9027,7 +12990,7 @@ $as_echo "$gt_source" >&6; }
if test "$USE_NLS" = "yes"; then
if test "$gt_use_preinstalled_gnugettext" = "yes"; then
- if test "$gt_cv_func_gnugettext2_libintl" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to link with libintl" >&5
$as_echo_n "checking how to link with libintl... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIBINTL" >&5
@@ -9089,7 +13052,8 @@ $as_echo "#define HAVE_DCGETTEXT 1" >>confdefs.h
GENCAT=gencat
- if test "$USE_INCLUDED_LIBINTL" = yes; then
+ INTLOBJS=
+ if test "$USE_INCLUDED_LIBINTL" = yes; then
INTLOBJS="\$(GETTOBJS)"
fi
@@ -9299,6 +13263,56 @@ $as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h
fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether sys/types.h defines makedev" >&5
+$as_echo_n "checking whether sys/types.h defines makedev... " >&6; }
+if ${ac_cv_header_sys_types_h_makedev+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+return makedev(0, 0);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_header_sys_types_h_makedev=yes
+else
+ ac_cv_header_sys_types_h_makedev=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_types_h_makedev" >&5
+$as_echo "$ac_cv_header_sys_types_h_makedev" >&6; }
+
+if test $ac_cv_header_sys_types_h_makedev = no; then
+ac_fn_c_check_header_mongrel "$LINENO" "sys/mkdev.h" "ac_cv_header_sys_mkdev_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_mkdev_h" = xyes; then :
+
+$as_echo "#define MAJOR_IN_MKDEV 1" >>confdefs.h
+
+fi
+
+
+
+ if test $ac_cv_header_sys_mkdev_h = no; then
+ ac_fn_c_check_header_mongrel "$LINENO" "sys/sysmacros.h" "ac_cv_header_sys_sysmacros_h" "$ac_includes_default"
+if test "x$ac_cv_header_sys_sysmacros_h" = xyes; then :
+
+$as_echo "#define MAJOR_IN_SYSMACROS 1" >>confdefs.h
+
+fi
+
+
+ fi
+fi
+
for ac_header in inttypes.h
@@ -9332,7 +13346,7 @@ fi
done
for ac_header in sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \
- sys/mman.h sys/param.h sys/socket.h sys/stat.h \
+ sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \
sys/time.h sys/times.h sys/types.h sys/wait.h
do :
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
@@ -9864,10 +13878,10 @@ else
fi
-for ac_func in dup2 eaccess fcntl getdtablesize getgroups gethostname \
- getpagesize getpeername getrlimit getrusage gettimeofday \
- kill killpg lstat pselect readlink select setdtablesize \
- setitimer tcgetpgrp uname ulimit waitpid
+for ac_func in dup2 eaccess fcntl getdtablesize getentropy getgroups \
+ gethostname getpagesize getpeername getrandom getrlimit \
+ getrusage gettimeofday kill killpg lstat pselect readlink \
+ select setdtablesize setitimer tcgetpgrp uname ulimit waitpid
do :
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
@@ -9947,17 +13961,30 @@ _ACEOF
fi
done
-for ac_func in mkstemp
+for ac_func in mkstemp mkdtemp
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+for ac_func in arc4random
do :
- ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
-if test "x$ac_cv_func_mkstemp" = xyes; then :
+ ac_fn_c_check_func "$LINENO" "arc4random" "ac_cv_func_arc4random"
+if test "x$ac_cv_func_arc4random" = xyes; then :
cat >>confdefs.h <<_ACEOF
-#define HAVE_MKSTEMP 1
+#define HAVE_ARC4RANDOM 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
@@ -10304,6 +14331,19 @@ cat >>confdefs.h <<_ACEOF
_ACEOF
+for ac_func in setresuid setresgid
+do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+ cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
ac_fn_c_check_decl "$LINENO" "strtold" "ac_cv_have_decl_strtold" "$ac_includes_default"
if test "x$ac_cv_have_decl_strtold" = xyes; then :
ac_have_decl=1
@@ -10652,21 +14692,6 @@ fi
- for ac_func in $ac_func_list
-do :
- as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
-ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
-if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
- cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-done
-
-
-
-
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5
$as_echo_n "checking for working mktime... " >&6; }
@@ -11460,6 +15485,7 @@ else
#include <locale.h>
#include <wchar.h>
+int
main(c, v)
int c;
char **v;
@@ -12902,7 +16928,9 @@ else
#endif
#include <stdio.h>
#include <ctype.h>
+#include <stdlib.h>
+int
main(c, v)
int c;
char *v[];
@@ -12961,6 +16989,8 @@ else
#include <sys/types.h>
#include <fcntl.h>
+#include <stdlib.h>
+int
main()
{
int fd1, fd2, fl;
@@ -13012,6 +17042,11 @@ else
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#ifdef HAVE_SYS_WAIT_H
+# include <sys/wait.h>
+#endif
+#include <stdlib.h>
+int
main()
{
# ifdef GETPGRP_VOID
@@ -13225,9 +17260,11 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
#if !HAVE_DECL_SYS_SIGLIST
extern char *sys_siglist[];
#endif
+int
main()
{
char *msg = sys_siglist[2];
@@ -13306,9 +17343,11 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
#ifndef UNDER_SYS_SIGLIST_DECLARED
extern char *_sys_siglist[];
#endif
+int
main()
{
char *msg = (char *)_sys_siglist[2];
@@ -13713,6 +17752,8 @@ else
#include <sys/types.h>
#include <sys/time.h>
#include <sys/resource.h>
+#include <stdlib.h>
+int
main()
{
#ifdef HAVE_QUAD_T
@@ -14031,32 +18072,28 @@ $as_echo_n "checking for struct timeval in sys/time.h and time.h... " >&6; }
if ${bash_cv_struct_timeval+:} false; then :
$as_echo_n "(cached) " >&6
else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-#include <sys/time.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "struct timeval" >/dev/null 2>&1; then :
- bash_cv_struct_timeval=yes
-else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
-#include <time.h>
+#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+int
+main ()
+{
+static struct timeval x; x.tv_sec = x.tv_usec;
+
+ ;
+ return 0;
+}
_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
- $EGREP "struct timeval" >/dev/null 2>&1; then :
+if ac_fn_c_try_compile "$LINENO"; then :
bash_cv_struct_timeval=yes
else
bash_cv_struct_timeval=no
fi
-rm -f conftest*
-
-fi
-rm -f conftest*
-
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
fi
@@ -14240,6 +18277,7 @@ else
#include <sys/wait.h>
+int
main(c, v)
int c;
char **v;
@@ -14258,7 +18296,7 @@ main(c, v)
exit (255);
/* crack s */
- for (i = 0; i < (sizeof(s) - 8); i++)
+ for (i = 0; i < (sizeof(s) * 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
@@ -14505,9 +18543,33 @@ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sbrk" >&5
+$as_echo_n "checking for sbrk... " >&6; }
+ if ${ac_cv_func_sbrk+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+ void *x = sbrk (4096);
+ ;
+ return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_cv_func_sbrk=yes
+else
+ ac_cv_func_sbrk=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+fi
-
-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_sbrk" >&5
+$as_echo "$ac_cv_func_sbrk" >&6; }
if test X$ac_cv_func_sbrk = Xyes; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working sbrk" >&5
$as_echo_n "checking for working sbrk... " >&6; }
@@ -14552,9 +18614,9 @@ $as_echo "$bash_cv_func_sbrk" >&6; }
ac_cv_func_sbrk=no
fi
fi
- if test $ac_cv_func_sbrk = no; then
+ if test $ac_cv_func_sbrk = yes; then
-$as_echo "#define HAVE_SBRK 0" >>confdefs.h
+$as_echo "#define HAVE_SBRK 1" >>confdefs.h
fi
@@ -14568,6 +18630,7 @@ else
/* end confdefs.h. */
#include <sys/types.h>
#include <signal.h>
+#include <string.h>
int
main ()
{
@@ -14612,6 +18675,9 @@ else
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
+#ifdef HAVE_SYS_STAT_H
+#include <sys/stat.h>
+#endif
#if defined(HAVE_DIRENT_H)
# include <dirent.h>
#else
@@ -14626,6 +18692,8 @@ else
# include <ndir.h>
# endif
#endif /* HAVE_DIRENT_H */
+#include <stdlib.h>
+int
main()
{
DIR *dir;
@@ -14677,6 +18745,11 @@ else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
+#include <stdlib.h>
+#ifdef HAVE_ULIMIT_H
+#include <ulimit.h>
+#endif
+int
main()
{
long maxfds = ulimit(4, 0L);
@@ -14739,6 +18812,7 @@ else
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
+#include <stdlib.h>
#ifndef __STDC__
# ifndef const
# define const
@@ -14754,6 +18828,7 @@ getenv (name)
{
return "42";
}
+int
main()
{
char *s;
@@ -14805,7 +18880,9 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
+int
main()
{
char *xpwd;
@@ -14860,7 +18937,9 @@ else
#include <sys/types.h>
#include <signal.h>
#include <setjmp.h>
+#include <stdlib.h>
+int
main()
{
#if !defined (_POSIX_VERSION) || !defined (HAVE_POSIX_SIGNALS)
@@ -14929,7 +19008,10 @@ else
#if defined (HAVE_LOCALE_H)
#include <locale.h>
#endif
+#include <string.h>
+#include <stdlib.h>
+int
main(c, v)
int c;
char *v[];
@@ -14999,7 +19081,9 @@ else
/* end confdefs.h. */
#include <stdio.h>
+#include <stdlib.h>
+int
main()
{
int n;
@@ -15079,6 +19163,7 @@ foo(format, va_alist)
return n;
}
+int
main()
{
int n;
@@ -15238,6 +19323,7 @@ else
#include <stdio.h>
#include <string.h>
+#include <stdlib.h>
int
main()
@@ -15297,7 +19383,7 @@ unsigned char string[4] = { '\xc3', '\xa4', '\0' };
int
main (int c, char **v)
{
- setlocale (LC_ALL, "de_DE.UTF-8");
+ setlocale (LC_ALL, "en_US.UTF-8");
if (fnmatch (pattern, (const char *)string, 0) != FNM_NOMATCH)
exit (0);
exit (1);
@@ -15350,6 +19436,7 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdlib.h>
typedef RETSIGTYPE sigfunc();
@@ -15380,6 +19467,7 @@ int s;
nsigint++;
}
+int
main()
{
nsigint = 0;
@@ -15501,8 +19589,11 @@ else
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
+#include <stdio.h>
+#include <stdlib.h>
/* Add more tests in here as appropriate. */
+int
main()
{
int fd, err;
@@ -15697,10 +19788,12 @@ else
#include <sys/wait.h>
#include <unistd.h>
#include <errno.h>
+#include <stdlib.h>
#ifndef errno
extern int errno;
#endif
+int
main()
{
int x;
@@ -15811,11 +19904,13 @@ else
#include <sys/types.h>
#include <signal.h>
+#include <stdlib.h>
#ifndef NSIG
# define NSIG 64
#endif
+int
main ()
{
int n_sigs = 2 * NSIG;
@@ -16295,8 +20390,8 @@ sysv4*) $as_echo "#define SVR4 1" >>confdefs.h
;;
sysv5*) $as_echo "#define SVR5 1" >>confdefs.h
;;
-hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
-hpux*) LOCAL_CFLAGS=-DHPUX ;;
+hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
+hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
isc*) LOCAL_CFLAGS=-Disc386 ;;
rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
@@ -16318,6 +20413,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
;;
esac ;;
netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
+freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
*qnx[67]*) LOCAL_LIBS="-lncurses" ;;
*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
powerux*) LOCAL_LIBS="-lgen" ;;
@@ -16357,14 +20453,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
esac
# turn off paren warnings in gcc
-if test "$GCC" = yes # && test -n "$DEBUG"
-then
- CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
-# if test -n "$DEBUG"
-# then
-# CFLAGS="$CFLAGS -Werror"
-# fi
-fi
+CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
#
# Shared object configuration section. These values are generated by
@@ -16968,7 +21057,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 5.0-release, which was
+This file was extended by bash $as_me 5.1-release, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -17034,7 +21123,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 5.0-release
+bash config.status 5.1-release
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -17045,6 +21134,7 @@ gives unlimited permission to copy, distribute and modify it."
ac_pwd='$ac_pwd'
srcdir='$srcdir'
INSTALL='$INSTALL'
+MKDIR_P='$MKDIR_P'
test -n "\$AWK" || AWK=awk
_ACEOF
@@ -17152,9 +21242,8 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
# INIT-COMMANDS
#
# Capture the value of obsolete ALL_LINGUAS because we need it to compute
- # POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES, CATALOGS. But hide it
- # from automake.
- eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"'
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+ OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
# Capture the value of LINGUAS because we need it to compute CATALOGS.
LINGUAS="${LINGUAS-%UNSET%}"
@@ -17168,7 +21257,7 @@ for ac_config_target in $ac_config_targets
do
case $ac_config_target in
"config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;;
- "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;;
+ "po-directories") CONFIG_COMMANDS="$CONFIG_COMMANDS po-directories" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
"builtins/Makefile") CONFIG_FILES="$CONFIG_FILES builtins/Makefile" ;;
"lib/readline/Makefile") CONFIG_FILES="$CONFIG_FILES lib/readline/Makefile" ;;
@@ -17635,6 +21724,11 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
[\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;;
*) ac_INSTALL=$ac_top_build_prefix$INSTALL ;;
esac
+ ac_MKDIR_P=$MKDIR_P
+ case $MKDIR_P in
+ [\\/$]* | ?:[\\/]* ) ;;
+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;;
+ esac
_ACEOF
cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
@@ -17689,6 +21783,7 @@ s&@builddir@&$ac_builddir&;t t
s&@abs_builddir@&$ac_abs_builddir&;t t
s&@abs_top_builddir@&$ac_abs_top_builddir&;t t
s&@INSTALL@&$ac_INSTALL&;t t
+s&@MKDIR_P@&$ac_MKDIR_P&;t t
$ac_datarootdir_hack
"
eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
@@ -17742,7 +21837,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case $ac_file$ac_mode in
- "default-1":C)
+ "po-directories":C)
for ac_file in $CONFIG_FILES; do
# Support "outfile[:infile[:infile...]]"
case "$ac_file" in
@@ -17752,7 +21847,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
case "$ac_file" in */Makefile.in)
# Adjust a relative srcdir.
ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
- ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
# In autoconf-2.13 it is called $ac_given_srcdir.
# In autoconf-2.50 it is called $srcdir.
@@ -17762,12 +21857,16 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
/*) top_srcdir="$ac_given_srcdir" ;;
*) top_srcdir="$ac_dots$ac_given_srcdir" ;;
esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
rm -f "$ac_dir/POTFILES"
test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
- cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ gt_tab=`printf '\t'`
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
POMAKEFILEDEPS="POTFILES.in"
- # ALL_LINGUAS, POFILES, GMOFILES, UPDATEPOFILES, DUMMYPOFILES depend
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
# on $ac_dir but don't depend on user-specified configuration
# parameters.
if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
@@ -17775,27 +21874,33 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
if test -n "$OBSOLETE_ALL_LINGUAS"; then
test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
fi
- ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"`
- # Hide the ALL_LINGUAS assigment from automake.
- eval 'ALL_LINGUAS''=$ALL_LINGUAS_'
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
else
# The set of available languages was given in configure.in.
- eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS'
+ ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
case "$ac_given_srcdir" in
.) srcdirpre= ;;
*) srcdirpre='$(srcdir)/' ;;
esac
POFILES=
- GMOFILES=
UPDATEPOFILES=
DUMMYPOFILES=
+ GMOFILES=
for lang in $ALL_LINGUAS; do
POFILES="$POFILES $srcdirpre$lang.po"
- GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
done
# CATALOGS depends on both $ac_dir and the user's LINGUAS
# environment variable.
@@ -17830,7 +21935,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
done
fi
test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
- sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
if test -f "$f"; then
case "$f" in
diff --git a/configure.ac b/configure.ac
index 52b4cdbd..2fe3e7d9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,11 @@
dnl
-dnl Configure script for bash-5.0
+dnl Configure script for bash-5.1
dnl
dnl report bugs to chet@po.cwru.edu
dnl
dnl Process this file with autoconf to produce a configure script.
-# Copyright (C) 1987-2018 Free Software Foundation, Inc.
+# Copyright (C) 1987-2020 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 <http://www.gnu.org/licenses/>.
-AC_REVISION([for Bash 5.0, version 5.005])dnl
+AC_REVISION([for Bash 5.1, version 5.022])dnl
-define(bashvers, 5.0)
+define(bashvers, 5.1)
define(relstatus, release)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
@@ -77,6 +77,9 @@ m68k-sysv) opt_bash_malloc=no ;; # fixes file descriptor leak in closedir
sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-aix*) opt_bash_malloc=no ;; # AIX machines
*-cygwin*) opt_bash_malloc=no ;; # Cygnus's CYGWIN environment
+# These lack a working sbrk(2)
+aarch64-freebsd*) opt_bash_malloc=no ;;
+riscv*-freebsd*) opt_bash_malloc=no ;;
# Mach-derived systems have a ton of extra malloc functions and lack sbrk(2)
*-nextstep*) opt_bash_malloc=no ;; # NeXT machines running NeXTstep
*-openstep*) opt_bash_malloc=no ;; # i386/Sparc/HP machines running Openstep
@@ -88,13 +91,7 @@ sparc-linux*) opt_bash_malloc=no ;; # sparc running linux; requires ELF
*-qnx*) opt_bash_malloc=no ;; # QNX 4.2, QNX [67].x
*-nsk*) opt_bash_malloc=no ;; # HP NonStop
*-haiku*) opt_bash_malloc=no ;; # Haiku OS
-# Deprecated -- bash malloc is suitable
-#sparc-netbsd*) opt_bash_malloc=no ;; # needs 8-byte alignment
-#mips-irix6*) opt_bash_malloc=no ;; # needs 8-byte alignment
-#*-freebsd*-gnu) opt_bash_malloc=no ;; # there's some undetermined problem here
-#*-freebsd*) opt_bash_malloc=no ;; # they claim it's better; I disagree
-#*-openbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
-#*-mirbsd*) opt_bash_malloc=no ;; # they claim it needs eight-bit alignment
+*-genode*) opt_bash_malloc=no ;; # Genode has no sbrk
esac
# memory scrambling on free()
@@ -404,10 +401,7 @@ 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=
+ want_auto_cflags=1
fi
echo ""
@@ -419,6 +413,14 @@ dnl AC_PROG_CC sets $cross_compiling to `yes' if cross-compiling for a
dnl different environment
AC_PROG_CC
+if test -n "$want_auto_cflags"; then
+ AUTO_CFLAGS="-g ${GCC+-O2}"
+ AUTO_LDFLAGS="-g ${GCC+-O2}"
+ STYLE_CFLAGS="${GCC+-Wno-parentheses} ${GCC+-Wno-format-security}"
+else
+ AUTO_CFLAGS= AUTO_LDFLAGS= STYLE_CFLAGS=
+fi
+
dnl test for Unix variants
AC_ISC_POSIX
AC_MINIX
@@ -513,7 +515,11 @@ if test "X$cross_compiling" = "Xno"; then
LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-'$(LDFLAGS)'}
fi
# CFLAGS set above to default value if not passed in environment
- CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ if test -n "$want_auto_cflags" ; then
+ CFLAGS_FOR_BUILD="${CFLAGS} ${STYLE_CFLAGS}"
+ else
+ CFLAGS_FOR_BUILD=${CFLAGS-'$(CFLAGS)'}
+ fi
LIBS_FOR_BUILD=${LIBS_FOR_BUILD-'$(LIBS)'}
else
CC_FOR_BUILD=${CC_FOR_BUILD-"gcc"}
@@ -685,6 +691,44 @@ AC_SUBST(SIZE)
m4_include([m4/stat-time.m4])
m4_include([m4/timespec.m4])
+dnl include files for gettext
+
+m4_include([m4/codeset.m4])
+m4_include([m4/extern-inline.m4])
+m4_include([m4/fcntl-o.m4])
+m4_include([m4/gettext.m4])
+m4_include([m4/glibc2.m4])
+m4_include([m4/glibc21.m4])
+m4_include([m4/host-cpu-c-abi.m4])
+m4_include([m4/iconv.m4])
+m4_include([m4/intdiv0.m4])
+m4_include([m4/intl.m4])
+m4_include([m4/intlmacosx.m4])
+m4_include([m4/intl-thread-locale.m4])
+m4_include([m4/intmax.m4])
+m4_include([m4/inttypes-pri.m4])
+m4_include([m4/inttypes.m4])
+m4_include([m4/inttypes_h.m4])
+m4_include([m4/lcmessage.m4])
+m4_include([m4/lib-ld.m4])
+m4_include([m4/lib-link.m4])
+m4_include([m4/lib-prefix.m4])
+m4_include([m4/lock.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/po.m4])
+m4_include([m4/printf-posix.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/pthread_rwlock_rdlock.m4])
+m4_include([m4/size_max.m4])
+m4_include([m4/stdint_h.m4])
+m4_include([m4/threadlib.m4])
+m4_include([m4/uintmax_t.m4])
+m4_include([m4/ulonglong.m4])
+m4_include([m4/visibility.m4])
+m4_include([m4/wchar_t.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xsize.m4])
+
dnl Turn on any extensions available in the GNU C library.
AC_DEFINE(_GNU_SOURCE, 1)
@@ -705,6 +749,7 @@ AM_GNU_GETTEXT([no-libtool], [need-ngettext], [lib/intl])
dnl header files
AC_HEADER_DIRENT
AC_HEADER_TIME
+AC_HEADER_MAJOR
BASH_HEADER_INTTYPES
@@ -713,7 +758,7 @@ AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.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/ioctl.h \
- sys/mman.h sys/param.h sys/socket.h sys/stat.h \
+ sys/mman.h sys/param.h sys/random.h sys/socket.h sys/stat.h \
sys/time.h sys/times.h sys/types.h sys/wait.h)
AC_CHECK_HEADERS(netinet/in.h arpa/inet.h)
@@ -779,10 +824,10 @@ dnl checks for missing libc functions
AC_CHECK_FUNC(mkfifo,AC_DEFINE(HAVE_MKFIFO),AC_DEFINE(MKFIFO_MISSING))
dnl checks for system calls
-AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \
- getpagesize getpeername getrlimit getrusage gettimeofday \
- kill killpg lstat pselect readlink select setdtablesize \
- setitimer tcgetpgrp uname ulimit waitpid)
+AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getentropy getgroups \
+ gethostname getpagesize getpeername getrandom getrlimit \
+ getrusage gettimeofday kill killpg lstat pselect readlink \
+ select setdtablesize setitimer tcgetpgrp uname ulimit waitpid)
AC_REPLACE_FUNCS(rename)
dnl checks for c library functions
@@ -795,7 +840,9 @@ AC_CHECK_FUNCS(bcopy bzero confstr faccessat fnmatch \
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_CHECK_FUNCS(mkstemp mkdtemp)
+AC_CHECK_FUNCS(arc4random)
+
AC_REPLACE_FUNCS(getcwd memset)
AC_REPLACE_FUNCS(strcasecmp strcasestr strerror strftime strnlen strpbrk strstr)
AC_REPLACE_FUNCS(strtod strtol strtoul strtoll strtoull strtoimax strtoumax)
@@ -810,9 +857,13 @@ AC_CHECK_DECLS([confstr])
AC_CHECK_DECLS([printf])
AC_CHECK_DECLS([sbrk])
AC_CHECK_DECLS([setregid])
+dnl AC_CHECK_DECLS[(setresuid])
+dnl AC_CHECK_DECLS[(setresgid])
AC_CHECK_DECLS([strcpy])
AC_CHECK_DECLS([strsignal])
+AC_CHECK_FUNCS(setresuid setresgid)
+
dnl Extra test to detect the horribly broken HP/UX 11.00 strtold(3)
AC_CHECK_DECLS([strtold], [
AC_MSG_CHECKING([for broken strtold])
@@ -1084,15 +1135,15 @@ LOCAL_DEFS=-DSHELL
dnl use this section to possibly define more cpp variables, specify local
dnl libraries, and specify any additional local cc or ld flags
dnl
-dnl this should really go away someday
+dnl most of these are really old; this should really go away someday
case "${host_os}" in
sysv4.2*) AC_DEFINE(SVR4_2)
AC_DEFINE(SVR4) ;;
sysv4*) AC_DEFINE(SVR4) ;;
sysv5*) AC_DEFINE(SVR5) ;;
-hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX" ;;
-hpux*) LOCAL_CFLAGS=-DHPUX ;;
+hpux9*) LOCAL_CFLAGS="-DHPUX9 -DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
+hpux*) LOCAL_CFLAGS="-DHPUX -DTGETENT_BROKEN -DTGETFLAG_BROKEN" ;;
dgux*) LOCAL_CFLAGS=-D_DGUX_SOURCE; LOCAL_LIBS=-ldgc ;;
isc*) LOCAL_CFLAGS=-Disc386 ;;
rhapsody*) LOCAL_CFLAGS=-DRHAPSODY ;;
@@ -1113,6 +1164,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading
*) AC_DEFINE(PGRP_PIPE) ;;
esac ;;
netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;;
+freebsd*) LOCAL_CFLAGS='-DHEREDOC_PIPESIZE=4096' ;;
*qnx[[67]]*) LOCAL_LIBS="-lncurses" ;;
*qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;;
powerux*) LOCAL_LIBS="-lgen" ;;
@@ -1154,14 +1206,7 @@ mips-pyramid-sysv4) LOCAL_CFLAGS=-Xa ;;
esac
# turn off paren warnings in gcc
-if test "$GCC" = yes # && test -n "$DEBUG"
-then
- CFLAGS="$CFLAGS -Wno-parentheses -Wno-format-security"
-# if test -n "$DEBUG"
-# then
-# CFLAGS="$CFLAGS -Werror"
-# fi
-fi
+CFLAGS="$CFLAGS ${STYLE_CFLAGS}"
#
# Shared object configuration section. These values are generated by
diff --git a/copy_cmd.c b/copy_cmd.c
index d2b5bc9c..758ff238 100644
--- a/copy_cmd.c
+++ b/copy_cmd.c
@@ -2,7 +2,7 @@
primarily for making function definitions, but I'm not sure
that anyone else will need it. */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -32,25 +32,25 @@
#include "shell.h"
-static PATTERN_LIST *copy_case_clause __P((PATTERN_LIST *));
-static PATTERN_LIST *copy_case_clauses __P((PATTERN_LIST *));
-static FOR_COM *copy_for_command __P((FOR_COM *));
+static PATTERN_LIST *copy_case_clause PARAMS((PATTERN_LIST *));
+static PATTERN_LIST *copy_case_clauses PARAMS((PATTERN_LIST *));
+static FOR_COM *copy_for_command PARAMS((FOR_COM *));
#if defined (ARITH_FOR_COMMAND)
-static ARITH_FOR_COM *copy_arith_for_command __P((ARITH_FOR_COM *));
+static ARITH_FOR_COM *copy_arith_for_command PARAMS((ARITH_FOR_COM *));
#endif
-static GROUP_COM *copy_group_command __P((GROUP_COM *));
-static SUBSHELL_COM *copy_subshell_command __P((SUBSHELL_COM *));
-static COPROC_COM *copy_coproc_command __P((COPROC_COM *));
-static CASE_COM *copy_case_command __P((CASE_COM *));
-static WHILE_COM *copy_while_command __P((WHILE_COM *));
-static IF_COM *copy_if_command __P((IF_COM *));
+static GROUP_COM *copy_group_command PARAMS((GROUP_COM *));
+static SUBSHELL_COM *copy_subshell_command PARAMS((SUBSHELL_COM *));
+static COPROC_COM *copy_coproc_command PARAMS((COPROC_COM *));
+static CASE_COM *copy_case_command PARAMS((CASE_COM *));
+static WHILE_COM *copy_while_command PARAMS((WHILE_COM *));
+static IF_COM *copy_if_command PARAMS((IF_COM *));
#if defined (DPAREN_ARITHMETIC)
-static ARITH_COM *copy_arith_command __P((ARITH_COM *));
+static ARITH_COM *copy_arith_command PARAMS((ARITH_COM *));
#endif
#if defined (COND_COMMAND)
-static COND_COM *copy_cond_command __P((COND_COM *));
+static COND_COM *copy_cond_command PARAMS((COND_COM *));
#endif
-static SIMPLE_COM *copy_simple_command __P((SIMPLE_COM *));
+static SIMPLE_COM *copy_simple_command PARAMS((SIMPLE_COM *));
WORD_DESC *
copy_word (w)
diff --git a/dispose_cmd.h b/dispose_cmd.h
index 0a3889c1..6095d44a 100644
--- a/dispose_cmd.h
+++ b/dispose_cmd.h
@@ -1,6 +1,6 @@
/* dispose_cmd.h -- Functions appearing in dispose_cmd.c. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,18 +23,18 @@
#include "stdc.h"
-extern void dispose_command __P((COMMAND *));
-extern void dispose_word_desc __P((WORD_DESC *));
-extern void dispose_word __P((WORD_DESC *));
-extern void dispose_words __P((WORD_LIST *));
-extern void dispose_word_array __P((char **));
-extern void dispose_redirects __P((REDIRECT *));
+extern void dispose_command PARAMS((COMMAND *));
+extern void dispose_word_desc PARAMS((WORD_DESC *));
+extern void dispose_word PARAMS((WORD_DESC *));
+extern void dispose_words PARAMS((WORD_LIST *));
+extern void dispose_word_array PARAMS((char **));
+extern void dispose_redirects PARAMS((REDIRECT *));
#if defined (COND_COMMAND)
-extern void dispose_cond_node __P((COND_COM *));
+extern void dispose_cond_node PARAMS((COND_COM *));
#endif
-extern void dispose_function_def_contents __P((FUNCTION_DEF *));
-extern void dispose_function_def __P((FUNCTION_DEF *));
+extern void dispose_function_def_contents PARAMS((FUNCTION_DEF *));
+extern void dispose_function_def PARAMS((FUNCTION_DEF *));
#endif /* !_DISPOSE_CMD_H_ */
diff --git a/doc/Makefile.in b/doc/Makefile.in
index 5f0756c4..12068fb5 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -334,7 +334,7 @@ posix: bashref.texi
$(RM) POSIX
rbash: bashref.texi
- $(SH) ./mkrbash
+ $(SHELL) ./mkrbash
cmp -s RBASH ../RBASH || mv RBASH ../RBASH
$(RM) RBASH
diff --git a/doc/bash.0 b/doc/bash.0
index a062b8ac..9160b097 100644
--- a/doc/bash.0
+++ b/doc/bash.0
@@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS
bbaasshh [options] [command_string | file]
CCOOPPYYRRIIGGHHTT
- Bash is Copyright (C) 1989-2018 by the Free Software Foundation, Inc.
+ Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
DDEESSCCRRIIPPTTIIOONN
BBaasshh is an sshh-compatible command language interpreter that executes
@@ -23,86 +23,85 @@ DDEESSCCRRIIPPTTIIOONN
OOPPTTIIOONNSS
All of the single-character shell options documented in the description
of the sseett builtin command, including --oo, can be used as options when
- the shell is invoked. In addition, bbaasshh interprets the following
- options when it is invoked:
+ the shell is invoked. In addition, bbaasshh interprets the following op-
+ tions when it is invoked:
--cc If the --cc option is present, then commands are read from the
first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu-
- ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, the first argument is
- assigned to $$00 and any remaining arguments are assigned to
- the positional parameters. The assignment to $$00 sets the
- name of the shell, which is used in warning and error mes-
- sages.
+ ments after the _c_o_m_m_a_n_d___s_t_r_i_n_g, the first argument is as-
+ signed to $$00 and any remaining arguments are assigned to the
+ positional parameters. The assignment to $$00 sets the name of
+ the shell, which is used in warning and error messages.
--ii If the --ii option is present, the shell is _i_n_t_e_r_a_c_t_i_v_e.
--ll Make bbaasshh act as if it had been invoked as a login shell (see
IINNVVOOCCAATTIIOONN below).
- --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d
+ --rr If the --rr option is present, the shell becomes _r_e_s_t_r_i_c_t_e_d
(see RREESSTTRRIICCTTEEDD SSHHEELLLL below).
- --ss If the --ss option is present, or if no arguments remain after
- option processing, then commands are read from the standard
- input. This option allows the positional parameters to be
- set when invoking an interactive shell or when reading input
+ --ss If the --ss option is present, or if no arguments remain after
+ option processing, then commands are read from the standard
+ input. This option allows the positional parameters to be
+ set when invoking an interactive shell or when reading input
through a pipe.
- --DD A list of all double-quoted strings preceded by $$ is printed
- on the standard output. These are the strings that are sub-
+ --DD A list of all double-quoted strings preceded by $$ is printed
+ on the standard output. These are the strings that are sub-
ject to language translation when the current locale is not CC
- or PPOOSSIIXX. This implies the --nn option; no commands will be
+ or PPOOSSIIXX. This implies the --nn option; no commands will be
executed.
[[--++]]OO [[_s_h_o_p_t___o_p_t_i_o_n]]
- _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the
- sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If
+ _s_h_o_p_t___o_p_t_i_o_n is one of the shell options accepted by the
+ sshhoopptt builtin (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). If
_s_h_o_p_t___o_p_t_i_o_n is present, --OO sets the value of that option; ++OO
- unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and
- values of the shell options accepted by sshhoopptt are printed on
- the standard output. If the invocation option is ++OO, the
+ unsets it. If _s_h_o_p_t___o_p_t_i_o_n is not supplied, the names and
+ values of the shell options accepted by sshhoopptt are printed on
+ the standard output. If the invocation option is ++OO, the
output is displayed in a format that may be reused as input.
- ---- A ---- signals the end of options and disables further option
- processing. Any arguments after the ---- are treated as file-
+ ---- A ---- signals the end of options and disables further option
+ processing. Any arguments after the ---- are treated as file-
names and arguments. An argument of -- is equivalent to ----.
- BBaasshh also interprets a number of multi-character options. These
- options must appear on the command line before the single-character
- options to be recognized.
+ BBaasshh also interprets a number of multi-character options. These op-
+ tions must appear on the command line before the single-character op-
+ tions to be recognized.
----ddeebbuuggggeerr
Arrange for the debugger profile to be executed before the shell
- starts. Turns on extended debugging mode (see the description
+ starts. Turns on extended debugging mode (see the description
of the eexxttddeebbuugg option to the sshhoopptt builtin below).
----dduummpp--ppoo--ssttrriinnggss
- Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por-
+ Equivalent to --DD, but the output is in the GNU _g_e_t_t_e_x_t ppoo (por-
table object) file format.
----dduummpp--ssttrriinnggss
Equivalent to --DD.
- ----hheellpp Display a usage message on standard output and exit success-
+ ----hheellpp Display a usage message on standard output and exit success-
fully.
----iinniitt--ffiillee _f_i_l_e
----rrccffiillee _f_i_l_e
Execute commands from _f_i_l_e instead of the standard personal ini-
- tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see
- IINNVVOOCCAATTIIOONN below).
+ tialization file _~_/_._b_a_s_h_r_c if the shell is interactive (see IINN--
+ VVOOCCAATTIIOONN below).
----llooggiinn
Equivalent to --ll.
----nnooeeddiittiinngg
- Do not use the GNU rreeaaddlliinnee library to read command lines when
+ Do not use the GNU rreeaaddlliinnee library to read command lines when
the shell is interactive.
----nnoopprrooffiillee
- Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or
- any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e,
- _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these
- files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN
- below).
+ Do not read either the system-wide startup file _/_e_t_c_/_p_r_o_f_i_l_e or
+ any of the personal initialization files _~_/_._b_a_s_h___p_r_o_f_i_l_e,
+ _~_/_._b_a_s_h___l_o_g_i_n, or _~_/_._p_r_o_f_i_l_e. By default, bbaasshh reads these
+ files when it is invoked as a login shell (see IINNVVOOCCAATTIIOONN be-
+ low).
----nnoorrcc Do not read and execute the personal initialization file
- _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by
- default if the shell is invoked as sshh.
+ _~_/_._b_a_s_h_r_c if the shell is interactive. This option is on by de-
+ fault if the shell is invoked as sshh.
----ppoossiixx
- Change the behavior of bbaasshh where the default operation differs
+ Change the behavior of bbaasshh where the default operation differs
from the POSIX standard to match the standard (_p_o_s_i_x _m_o_d_e). See
- SSEEEE AALLSSOO below for a reference to a document that details how
+ SSEEEE AALLSSOO below for a reference to a document that details how
posix mode affects bash's behavior.
----rreessttrriicctteedd
@@ -112,103 +111,102 @@ OOPPTTIIOONNSS
Equivalent to --vv.
----vveerrssiioonn
- Show version information for this instance of bbaasshh on the stan-
+ Show version information for this instance of bbaasshh on the stan-
dard output and exit successfully.
AARRGGUUMMEENNTTSS
If arguments remain after option processing, and neither the --cc nor the
- --ss option has been supplied, the first argument is assumed to be the
- name of a file containing shell commands. If bbaasshh is invoked in this
- fashion, $$00 is set to the name of the file, and the positional parame-
- ters are set to the remaining arguments. BBaasshh reads and executes com-
- mands from this file, then exits. BBaasshh's exit status is the exit sta-
- tus of the last command executed in the script. If no commands are
- executed, the exit status is 0. An attempt is first made to open the
+ --ss option has been supplied, the first argument is assumed to be the
+ name of a file containing shell commands. If bbaasshh is invoked in this
+ fashion, $$00 is set to the name of the file, and the positional parame-
+ ters are set to the remaining arguments. BBaasshh reads and executes com-
+ mands from this file, then exits. BBaasshh's exit status is the exit sta-
+ tus of the last command executed in the script. If no commands are ex-
+ ecuted, the exit status is 0. An attempt is first made to open the
file in the current directory, and, if no file is found, then the shell
searches the directories in PPAATTHH for the script.
IINNVVOOCCAATTIIOONN
- A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or
+ A _l_o_g_i_n _s_h_e_l_l is one whose first character of argument zero is a --, or
one started with the ----llooggiinn option.
- An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments
- (unless --ss is specified) and without the --cc option whose standard input
+ An _i_n_t_e_r_a_c_t_i_v_e shell is one started without non-option arguments (un-
+ less --ss is specified) and without the --cc option whose standard input
and error are both connected to terminals (as determined by _i_s_a_t_t_y(3)),
- or one started with the --ii option. PPSS11 is set and $$-- includes ii if
- bbaasshh is interactive, allowing a shell script or a startup file to test
+ or one started with the --ii option. PPSS11 is set and $$-- includes ii if
+ bbaasshh is interactive, allowing a shell script or a startup file to test
this state.
- The following paragraphs describe how bbaasshh executes its startup files.
- If any of the files exist but cannot be read, bbaasshh reports an error.
- Tildes are expanded in filenames as described below under TTiillddee EExxppaann--
+ The following paragraphs describe how bbaasshh executes its startup files.
+ If any of the files exist but cannot be read, bbaasshh reports an error.
+ Tildes are expanded in filenames as described below under TTiillddee EExxppaann--
ssiioonn in the EEXXPPAANNSSIIOONN section.
- When bbaasshh is invoked as an interactive login shell, or as a non-inter-
- active shell with the ----llooggiinn option, it first reads and executes com-
- mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
+ When bbaasshh is invoked as an interactive login shell, or as a non-inter-
+ active shell with the ----llooggiinn option, it first reads and executes com-
+ mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e,
- in that order, and reads and executes commands from the first one that
- exists and is readable. The ----nnoopprrooffiillee option may be used when the
+ in that order, and reads and executes commands from the first one that
+ exists and is readable. The ----nnoopprrooffiillee option may be used when the
shell is started to inhibit this behavior.
When an interactive login shell exits, or a non-interactive login shell
- executes the eexxiitt builtin command, bbaasshh reads and executes commands
+ executes the eexxiitt builtin command, bbaasshh reads and executes commands
from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists.
- When an interactive shell that is not a login shell is started, bbaasshh
- reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This
- may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option
- will force bbaasshh to read and execute commands from _f_i_l_e instead of
+ When an interactive shell that is not a login shell is started, bbaasshh
+ reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. This
+ may be inhibited by using the ----nnoorrcc option. The ----rrccffiillee _f_i_l_e option
+ will force bbaasshh to read and execute commands from _f_i_l_e instead of
_~_/_._b_a_s_h_r_c.
- When bbaasshh is started non-interactively, to run a shell script, for
- example, it looks for the variable BBAASSHH__EENNVV in the environment, expands
- its value if it appears there, and uses the expanded value as the name
- of a file to read and execute. BBaasshh behaves as if the following com-
+ When bbaasshh is started non-interactively, to run a shell script, for ex-
+ ample, it looks for the variable BBAASSHH__EENNVV in the environment, expands
+ its value if it appears there, and uses the expanded value as the name
+ of a file to read and execute. BBaasshh behaves as if the following com-
mand were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
- but the value of the PPAATTHH variable is not used to search for the file-
+ but the value of the PPAATTHH variable is not used to search for the file-
name.
- If bbaasshh is invoked with the name sshh, it tries to mimic the startup
- behavior of historical versions of sshh as closely as possible, while
- conforming to the POSIX standard as well. When invoked as an interac-
- tive login shell, or a non-interactive shell with the ----llooggiinn option,
- it first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
- _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to
- inhibit this behavior. When invoked as an interactive shell with the
- name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is
- defined, and uses the expanded value as the name of a file to read and
+ If bbaasshh is invoked with the name sshh, it tries to mimic the startup be-
+ havior of historical versions of sshh as closely as possible, while con-
+ forming to the POSIX standard as well. When invoked as an interactive
+ login shell, or a non-interactive shell with the ----llooggiinn option, it
+ first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
+ _~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option may be used to in-
+ hibit this behavior. When invoked as an interactive shell with the
+ name sshh, bbaasshh looks for the variable EENNVV, expands its value if it is
+ defined, and uses the expanded value as the name of a file to read and
execute. Since a shell invoked as sshh does not attempt to read and exe-
- cute commands from any other startup files, the ----rrccffiillee option has no
- effect. A non-interactive shell invoked with the name sshh does not
- attempt to read any other startup files. When invoked as sshh, bbaasshh
- enters _p_o_s_i_x mode after the startup files are read.
+ cute commands from any other startup files, the ----rrccffiillee option has no
+ effect. A non-interactive shell invoked with the name sshh does not at-
+ tempt to read any other startup files. When invoked as sshh, bbaasshh enters
+ _p_o_s_i_x mode after the startup files are read.
- When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line
+ When bbaasshh is started in _p_o_s_i_x mode, as with the ----ppoossiixx command line
option, it follows the POSIX standard for startup files. In this mode,
- interactive shells expand the EENNVV variable and commands are read and
- executed from the file whose name is the expanded value. No other
+ interactive shells expand the EENNVV variable and commands are read and
+ executed from the file whose name is the expanded value. No other
startup files are read.
BBaasshh attempts to determine when it is being run with its standard input
connected to a network connection, as when executed by the remote shell
- daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter-
- mines it is being run in this fashion, it reads and executes commands
- from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do
- this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this
- behavior, and the ----rrccffiillee option may be used to force another file to
- be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with
+ daemon, usually _r_s_h_d, or the secure shell daemon _s_s_h_d. If bbaasshh deter-
+ mines it is being run in this fashion, it reads and executes commands
+ from _~_/_._b_a_s_h_r_c, if that file exists and is readable. It will not do
+ this if invoked as sshh. The ----nnoorrcc option may be used to inhibit this
+ behavior, and the ----rrccffiillee option may be used to force another file to
+ be read, but neither _r_s_h_d nor _s_s_h_d generally invoke the shell with
those options or allow them to be specified.
If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the --pp option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
- the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they
- appear in the environment, are ignored, and the effective user id is
- set to the real user id. If the --pp option is supplied at invocation,
- the startup behavior is the same, but the effective user id is not
- reset.
+ the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
+ pear in the environment, are ignored, and the effective user id is set
+ to the real user id. If the --pp option is supplied at invocation, the
+ startup behavior is the same, but the effective user id is not reset.
DDEEFFIINNIITTIIOONNSS
The following definitions are used throughout the rest of this docu-
@@ -231,160 +229,162 @@ DDEEFFIINNIITTIIOONNSS
RREESSEERRVVEEDD WWOORRDDSS
_R_e_s_e_r_v_e_d _w_o_r_d_s are words that have a special meaning to the shell. The
following words are recognized as reserved when unquoted and either the
- first word of a simple command (see SSHHEELLLL GGRRAAMMMMAARR below) or the third
- word of a ccaassee or ffoorr command:
+ first word of a command (see SSHHEELLLL GGRRAAMMMMAARR below), the third word of a
+ ccaassee or sseelleecctt command (only iinn is valid), or the third word of a ffoorr
+ command (only iinn and ddoo are valid):
- !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt
+ !! ccaassee ccoopprroocc ddoo ddoonnee eelliiff eellssee eessaacc ffii ffoorr ffuunnccttiioonn iiff iinn sseelleecctt
tthheenn uunnttiill wwhhiillee {{ }} ttiimmee [[[[ ]]]]
SSHHEELLLL GGRRAAMMMMAARR
SSiimmppllee CCoommmmaannddss
- A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol-
- lowed by bbllaannkk-separated words and redirections, and terminated by a
+ A _s_i_m_p_l_e _c_o_m_m_a_n_d is a sequence of optional variable assignments fol-
+ lowed by bbllaannkk-separated words and redirections, and terminated by a
_c_o_n_t_r_o_l _o_p_e_r_a_t_o_r. The first word specifies the command to be executed,
- and is passed as argument zero. The remaining words are passed as
- arguments to the invoked command.
+ and is passed as argument zero. The remaining words are passed as ar-
+ guments to the invoked command.
- The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if
+ The return value of a _s_i_m_p_l_e _c_o_m_m_a_n_d is its exit status, or 128+_n if
the command is terminated by signal _n.
PPiippeelliinneess
- A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of
+ A _p_i_p_e_l_i_n_e is a sequence of one or more commands separated by one of
the control operators || or ||&&. The format for a pipeline is:
[ttiimmee [--pp]] [ ! ] _c_o_m_m_a_n_d [ [|||||&&] _c_o_m_m_a_n_d_2 ... ]
- The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard
- input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec-
+ The standard output of _c_o_m_m_a_n_d is connected via a pipe to the standard
+ input of _c_o_m_m_a_n_d_2. This connection is performed before any redirec-
tions specified by the command (see RREEDDIIRREECCTTIIOONN below). If ||&& is used,
- _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con-
- nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand
- for 22>>&&11 ||. This implicit redirection of the standard error to the
- standard output is performed after any redirections specified by the
+ _c_o_m_m_a_n_d's standard error, in addition to its standard output, is con-
+ nected to _c_o_m_m_a_n_d_2's standard input through the pipe; it is shorthand
+ for 22>>&&11 ||. This implicit redirection of the standard error to the
+ standard output is performed after any redirections specified by the
command.
The return status of a pipeline is the exit status of the last command,
- unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the
- pipeline's return status is the value of the last (rightmost) command
- to exit with a non-zero status, or zero if all commands exit success-
+ unless the ppiippeeffaaiill option is enabled. If ppiippeeffaaiill is enabled, the
+ pipeline's return status is the value of the last (rightmost) command
+ to exit with a non-zero status, or zero if all commands exit success-
fully. If the reserved word !! precedes a pipeline, the exit status of
- that pipeline is the logical negation of the exit status as described
- above. The shell waits for all commands in the pipeline to terminate
+ that pipeline is the logical negation of the exit status as described
+ above. The shell waits for all commands in the pipeline to terminate
before returning a value.
- If the ttiimmee reserved word precedes a pipeline, the elapsed as well as
- user and system time consumed by its execution are reported when the
- pipeline terminates. The --pp option changes the output format to that
- specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec-
- ognize ttiimmee as a reserved word if the next token begins with a `-'.
- The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies
- how the timing information should be displayed; see the description of
+ If the ttiimmee reserved word precedes a pipeline, the elapsed as well as
+ user and system time consumed by its execution are reported when the
+ pipeline terminates. The --pp option changes the output format to that
+ specified by POSIX. When the shell is in _p_o_s_i_x _m_o_d_e, it does not rec-
+ ognize ttiimmee as a reserved word if the next token begins with a `-'.
+ The TTIIMMEEFFOORRMMAATT variable may be set to a format string that specifies
+ how the timing information should be displayed; see the description of
TTIIMMEEFFOORRMMAATT under SShheellll VVaarriiaabblleess below.
When the shell is in _p_o_s_i_x _m_o_d_e, ttiimmee may be followed by a newline. In
- this case, the shell displays the total user and system time consumed
- by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to
+ this case, the shell displays the total user and system time consumed
+ by the shell and its children. The TTIIMMEEFFOORRMMAATT variable may be used to
specify the format of the time information.
- Each command in a pipeline is executed as a separate process (i.e., in
- a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a
- subshell environment. If the llaassttppiippee option is enabled using the
+ Each command in a pipeline is executed as a separate process (i.e., in
+ a subshell). See CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT for a description of a
+ subshell environment. If the llaassttppiippee option is enabled using the
sshhoopptt builtin (see the description of sshhoopptt below), the last element of
a pipeline may be run by the shell process.
LLiissttss
- A _l_i_s_t is a sequence of one or more pipelines separated by one of the
+ A _l_i_s_t is a sequence of one or more pipelines separated by one of the
operators ;;, &&, &&&&, or ||||, and optionally terminated by one of ;;, &&, or
<<nneewwlliinnee>>.
Of these list operators, &&&& and |||| have equal precedence, followed by ;;
and &&, which have equal precedence.
- A sequence of one or more newlines may appear in a _l_i_s_t instead of a
+ A sequence of one or more newlines may appear in a _l_i_s_t instead of a
semicolon to delimit commands.
- If a command is terminated by the control operator &&, the shell exe-
- cutes the command in the _b_a_c_k_g_r_o_u_n_d in a subshell. The shell does not
- wait for the command to finish, and the return status is 0. These are
- referred to as _a_s_y_n_c_h_r_o_n_o_u_s commands. Commands separated by a ;; are
+ If a command is terminated by the control operator &&, the shell exe-
+ cutes the command in the _b_a_c_k_g_r_o_u_n_d in a subshell. The shell does not
+ wait for the command to finish, and the return status is 0. These are
+ referred to as _a_s_y_n_c_h_r_o_n_o_u_s commands. 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 exe-
+ turn. The return status is the exit status of the last command exe-
cuted.
- AND and OR lists are sequences of one or more pipelines separated by
- the &&&& and |||| control operators, respectively. AND and OR lists are
+ 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
_c_o_m_m_a_n_d_1 &&&& _c_o_m_m_a_n_d_2
- _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status
+ _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns an exit status
of zero (success).
An OR list has the form
_c_o_m_m_a_n_d_1 |||| _c_o_m_m_a_n_d_2
- _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns a non-zero exit
- status. The return status of AND and OR lists is the exit status of
+ _c_o_m_m_a_n_d_2 is executed if, and only if, _c_o_m_m_a_n_d_1 returns a non-zero exit
+ status. The return status of AND and OR lists is the exit status of
the last command executed in the list.
CCoommppoouunndd CCoommmmaannddss
- A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a
- command's description may be separated from the rest of the command by
- one or more newlines, and may be followed by a newline in place of a
+ A _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d is one of the following. In most cases a _l_i_s_t in a
+ command's description may be separated from the rest of the command by
+ one or more newlines, and may be followed by a newline in place of a
semicolon.
- (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU--
- TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com-
- mands that affect the shell's environment do not remain in
- effect after the command completes. The return status is the
- exit status of _l_i_s_t.
+ (_l_i_s_t) _l_i_s_t is executed in a subshell environment (see CCOOMMMMAANNDD EEXXEECCUU--
+ TTIIOONN EENNVVIIRROONNMMEENNTT below). Variable assignments and builtin com-
+ mands that affect the shell's environment do not remain in ef-
+ fect after the command completes. The return status is the exit
+ status of _l_i_s_t.
{ _l_i_s_t; }
- _l_i_s_t is simply executed in the current shell environment. _l_i_s_t
- must be terminated with a newline or semicolon. This is known
- as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of
- _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are
+ _l_i_s_t is simply executed in the current shell environment. _l_i_s_t
+ must be terminated with a newline or semicolon. This is known
+ as a _g_r_o_u_p _c_o_m_m_a_n_d. The return status is the exit status of
+ _l_i_s_t. Note that unlike the metacharacters (( and )), {{ and }} are
_r_e_s_e_r_v_e_d _w_o_r_d_s and must occur where a reserved word is permitted
- to be recognized. Since they do not cause a word break, they
- must be separated from _l_i_s_t by whitespace or another shell
+ to be recognized. Since they do not cause a word break, they
+ must be separated from _l_i_s_t by whitespace or another shell
metacharacter.
((_e_x_p_r_e_s_s_i_o_n))
- The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described
- below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expres-
- sion is non-zero, the return status is 0; otherwise the return
- status is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"".
+ The _e_x_p_r_e_s_s_i_o_n is evaluated according to the rules described be-
+ low under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If the value of the expression
+ is non-zero, the return status is 0; otherwise the return status
+ is 1. This is exactly equivalent to lleett ""_e_x_p_r_e_s_s_i_o_n"".
[[[[ _e_x_p_r_e_s_s_i_o_n ]]]]
- Return a status of 0 or 1 depending on the evaluation of the
- conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of
- the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
- Word splitting and pathname expansion are not performed on the
- words between the [[[[ and ]]]]; tilde expansion, parameter and
- variable expansion, arithmetic expansion, command substitution,
- process substitution, and quote removal are performed. Condi-
+ Return a status of 0 or 1 depending on the evaluation of the
+ conditional expression _e_x_p_r_e_s_s_i_o_n. Expressions are composed of
+ the primaries described below under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
+ Word splitting and pathname expansion are not performed on the
+ words between the [[[[ and ]]]]; tilde expansion, parameter and
+ variable expansion, arithmetic expansion, command substitution,
+ process substitution, and quote removal are performed. Condi-
tional operators such as --ff must be unquoted to be recognized as
primaries.
- When used with [[[[, the << and >> operators sort lexicographically
+ When used with [[[[, the << and >> operators sort lexicographically
using the current locale.
- When the ==== and !!== operators are used, the string to the right
+ When the ==== and !!== operators are used, the string to the right
of the operator is considered a pattern and matched according to
the rules described below under PPaatttteerrnn MMaattcchhiinngg, as if the eexxtt--
gglloobb shell option were enabled. The == operator is equivalent to
- ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is
- performed without regard to the case of alphabetic characters.
- The return value is 0 if the string matches (====) or does not
- match (!!==) the pattern, and 1 otherwise. Any part of the pat-
- tern may be quoted to force the quoted portion to be matched as
+ ====. If the nnooccaasseemmaattcchh shell option is enabled, the match is
+ performed without regard to the case of alphabetic characters.
+ The return value is 0 if the string matches (====) or does not
+ match (!!==) the pattern, and 1 otherwise. Any part of the pat-
+ tern may be quoted to force the quoted portion to be matched as
a string.
- An additional binary operator, ==~~, is available, with the same
- precedence as ==== and !!==. When it is used, the string to the
- right of the operator is considered a POSIX extended regular
- expression and matched accordingly (as in _r_e_g_e_x(3)). The return
+ An additional binary operator, ==~~, is available, with the same
+ precedence as ==== and !!==. When it is used, the string to the
+ right of the operator is considered a POSIX extended regular ex-
+ pression and matched accordingly (using the POSIX _r_e_g_c_o_m_p and
+ _r_e_g_e_x_e_c interfaces usually described in _r_e_g_e_x(3)). The return
value is 0 if the string matches the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the condi-
tional expression's return value is 2. If the nnooccaasseemmaattcchh shell
@@ -392,14 +392,20 @@ SSHHEELLLL GGRRAAMMMMAARR
case of alphabetic characters. Any part of the pattern may be
quoted to force the quoted portion to be matched as a string.
Bracket expressions in regular expressions must be treated care-
- fully, since normal quoting characters lose their meanings
- between brackets. If the pattern is stored in a shell variable,
+ fully, since normal quoting characters lose their meanings be-
+ tween brackets. If the pattern is stored in a shell variable,
quoting the variable expansion forces the entire pattern to be
- matched as a string. Substrings matched by parenthesized subex-
- pressions within the regular expression are saved in the array
- variable BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0
- is the portion of the string matching the entire regular expres-
- sion. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion
+ matched as a string.
+
+ The pattern will match if it matches any part of the string.
+ Anchor the pattern using the ^^ and $$ regular expression opera-
+ tors to force it to match the entire string. The array variable
+ BBAASSHH__RREEMMAATTCCHH records which parts of the string matched the pat-
+ tern. The element of BBAASSHH__RREEMMAATTCCHH with index 0 contains the
+ portion of the string matching the entire regular expression.
+ Substrings matched by parenthesized subexpressions within the
+ regular expression are saved in the remaining BBAASSHH__RREEMMAATTCCHH in-
+ dices. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion
of the string matching the _nth parenthesized subexpression.
Expressions may be combined using the following operators,
@@ -423,8 +429,8 @@ SSHHEELLLL GGRRAAMMMMAARR
The list of words following iinn is expanded, generating a list of
items. The variable _n_a_m_e is set to each element of this list in
turn, and _l_i_s_t is executed each time. If the iinn _w_o_r_d is omit-
- ted, the ffoorr command executes _l_i_s_t once for each positional
- parameter that is set (see PPAARRAAMMEETTEERRSS below). The return status
+ ted, the ffoorr command executes _l_i_s_t once for each positional pa-
+ rameter that is set (see PPAARRAAMMEETTEERRSS below). The return status
is the exit status of the last command that executes. If the
expansion of the items following iinn results in an empty list, no
commands are executed, and the return status is 0.
@@ -442,19 +448,19 @@ SSHHEELLLL GGRRAAMMMMAARR
sseelleecctt _n_a_m_e [ iinn _w_o_r_d ] ; ddoo _l_i_s_t ; ddoonnee
The list of words following iinn is expanded, generating a list of
- items. The set of expanded words is printed on the standard
- error, each preceded by a number. If the iinn _w_o_r_d is omitted,
- the positional parameters are printed (see PPAARRAAMMEETTEERRSS below).
- The PPSS33 prompt is then displayed and a line read from the stan-
- dard input. If the line consists of a number corresponding to
- one of the displayed words, then the value of _n_a_m_e is set to
- that word. If the line is empty, the words and prompt are dis-
- played again. If EOF is read, the command completes. Any other
- value read causes _n_a_m_e to be set to null. The line read is
- saved in the variable RREEPPLLYY. The _l_i_s_t is executed after each
- selection until a bbrreeaakk command is executed. The exit status of
- sseelleecctt is the exit status of the last command executed in _l_i_s_t,
- or zero if no commands were executed.
+ items. The set of expanded words is printed on the standard er-
+ ror, each preceded by a number. If the iinn _w_o_r_d is omitted, the
+ positional parameters are printed (see PPAARRAAMMEETTEERRSS below). The
+ PPSS33 prompt is then displayed and a line read from the standard
+ input. If the line consists of a number corresponding to one of
+ the displayed words, then the value of _n_a_m_e is set to that word.
+ If the line is empty, the words and prompt are displayed again.
+ If EOF is read, the command completes. Any other value read
+ causes _n_a_m_e to be set to null. The line read is saved in the
+ variable RREEPPLLYY. The _l_i_s_t is executed after each selection until
+ a bbrreeaakk command is executed. The exit status of sseelleecctt is the
+ exit status of the last command executed in _l_i_s_t, or zero if no
+ commands were executed.
ccaassee _w_o_r_d iinn [ [(] _p_a_t_t_e_r_n [ || _p_a_t_t_e_r_n ] ... ) _l_i_s_t ;; ] ... eessaacc
A ccaassee command first expands _w_o_r_d, and tries to match it against
@@ -473,29 +479,29 @@ SSHHEELLLL GGRRAAMMMMAARR
_l_i_s_t associated with the next set of patterns. Using ;;;;&& in
place of ;;;; causes the shell to test the next pattern list in
the statement, if any, and execute any associated _l_i_s_t on a suc-
- cessful match. The exit status is zero if no pattern matches.
- Otherwise, it is the exit status of the last command executed in
- _l_i_s_t.
+ cessful match, continuing the case statement execution as if the
+ pattern list had not matched. The exit status is zero if no
+ pattern matches. Otherwise, it is the exit status of the last
+ command executed in _l_i_s_t.
iiff _l_i_s_t; tthheenn _l_i_s_t; [ eelliiff _l_i_s_t; tthheenn _l_i_s_t; ] ... [ eellssee _l_i_s_t; ] ffii
- The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn
- _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in
- turn, and if its exit status is zero, the corresponding tthheenn
+ The iiff _l_i_s_t is executed. If its exit status is zero, the tthheenn
+ _l_i_s_t is executed. Otherwise, each eelliiff _l_i_s_t is executed in
+ turn, and if its exit status is zero, the corresponding tthheenn
_l_i_s_t is executed and the command completes. Otherwise, the eellssee
- _l_i_s_t is executed, if present. The exit status is the exit sta-
+ _l_i_s_t is executed, if present. The exit status is the exit sta-
tus of the last command executed, or zero if no condition tested
true.
wwhhiillee _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee
uunnttiill _l_i_s_t_-_1; ddoo _l_i_s_t_-_2; ddoonnee
- The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long
+ The wwhhiillee command continuously executes the list _l_i_s_t_-_2 as long
as the last command in the list _l_i_s_t_-_1 returns an exit status of
- zero. The uunnttiill command is identical to the wwhhiillee command,
- except that the test is negated: _l_i_s_t_-_2 is executed as long as
- the last command in _l_i_s_t_-_1 returns a non-zero exit status. The
- exit status of the wwhhiillee and uunnttiill commands is the exit status
- of the last command executed in _l_i_s_t_-_2, or zero if none was exe-
- cuted.
+ zero. The uunnttiill command is identical to the wwhhiillee command, ex-
+ cept that the test is negated: _l_i_s_t_-_2 is executed as long as the
+ last command in _l_i_s_t_-_1 returns a non-zero exit status. The exit
+ status of the wwhhiillee and uunnttiill commands is the exit status of the
+ last command executed in _l_i_s_t_-_2, or zero if none was executed.
CCoopprroocceesssseess
A _c_o_p_r_o_c_e_s_s is a shell command preceded by the ccoopprroocc reserved word. A
@@ -507,24 +513,24 @@ SSHHEELLLL GGRRAAMMMMAARR
ccoopprroocc [_N_A_M_E] _c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n_s]
- This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the
- default name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_-
- _p_l_e _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word
- of the simple command. When the coprocess is executed, the shell cre-
- ates an array variable (see AArrrraayyss below) named _N_A_M_E in the context of
- the executing shell. The standard output of _c_o_m_m_a_n_d is connected via a
- pipe to a file descriptor in the executing shell, and that file
- descriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is
- connected via a pipe to a file descriptor in the executing shell, and
- that file descriptor is assigned to _N_A_M_E[1]. This pipe is established
- before any redirections specified by the command (see RREEDDIIRREECCTTIIOONN
- below). The file descriptors can be utilized as arguments to shell
- commands and redirections using standard word expansions. Other than
- those created to execute command and process substitutions, the file
- descriptors are not available in subshells. The process ID of the
- shell spawned to execute the coprocess is available as the value of the
- variable _N_A_M_E_PID. The wwaaiitt builtin command may be used to wait for
- the coprocess to terminate.
+ This creates a coprocess named _N_A_M_E. If _N_A_M_E is not supplied, the de-
+ fault name is CCOOPPRROOCC. _N_A_M_E must not be supplied if _c_o_m_m_a_n_d is a _s_i_m_p_l_e
+ _c_o_m_m_a_n_d (see above); otherwise, it is interpreted as the first word of
+ the simple command. When the coprocess is executed, the shell creates
+ an array variable (see AArrrraayyss below) named _N_A_M_E in the context of the
+ executing shell. The standard output of _c_o_m_m_a_n_d is connected via a
+ pipe to a file descriptor in the executing shell, and that file de-
+ scriptor is assigned to _N_A_M_E[0]. The standard input of _c_o_m_m_a_n_d is con-
+ nected via a pipe to a file descriptor in the executing shell, and that
+ file descriptor is assigned to _N_A_M_E[1]. This pipe is established be-
+ fore any redirections specified by the command (see RREEDDIIRREECCTTIIOONN below).
+ The file descriptors can be utilized as arguments to shell commands and
+ redirections using standard word expansions. Other than those created
+ to execute command and process substitutions, the file descriptors are
+ not available in subshells. The process ID of the shell spawned to ex-
+ ecute the coprocess is available as the value of the variable _N_A_M_E_PID.
+ The wwaaiitt builtin command may be used to wait for the coprocess to ter-
+ minate.
Since the coprocess is created as an asynchronous command, the ccoopprroocc
command always returns success. The return status of a coprocess is
@@ -535,9 +541,9 @@ SSHHEELLLL GGRRAAMMMMAARR
executes a compound command with a new set of positional parameters.
Shell functions are declared as follows:
- _n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n]
- ffuunnccttiioonn _n_a_m_e [()] _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n]
- This defines a function named _n_a_m_e. The reserved word ffuunnccttiioonn
+ _f_n_a_m_e () _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n]
+ ffuunnccttiioonn _f_n_a_m_e [()] _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d [_r_e_d_i_r_e_c_t_i_o_n]
+ This defines a function named _f_n_a_m_e. The reserved word ffuunnccttiioonn
is optional. If the ffuunnccttiioonn reserved word is supplied, the
parentheses are optional. The _b_o_d_y of the function is the com-
pound command _c_o_m_p_o_u_n_d_-_c_o_m_m_a_n_d (see CCoommppoouunndd CCoommmmaannddss above).
@@ -545,9 +551,11 @@ SSHHEELLLL GGRRAAMMMMAARR
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
+ _p_o_u_n_d_-_c_o_m_m_a_n_d is executed whenever _f_n_a_m_e is specified as the
+ name of a simple command. When in _p_o_s_i_x _m_o_d_e, _f_n_a_m_e must be a
+ valid shell _n_a_m_e and may not be the name of one of the POSIX
+ _s_p_e_c_i_a_l _b_u_i_l_t_i_n_s. In default mode, a function name can be any
+ unquoted shell word that does not contain $$. Any redirections
(see RREEDDIIRREECCTTIIOONN below) specified when a function is defined are
performed when the function is executed. The exit status of a
function definition is zero unless a syntax error occurs or a
@@ -582,9 +590,9 @@ QQUUOOTTIINNGG
A non-quoted backslash (\\) is the _e_s_c_a_p_e _c_h_a_r_a_c_t_e_r. It preserves the
literal value of the next character that follows, with the exception of
- <newline>. If a \\<newline> pair appears, and the backslash is not
- itself quoted, the \\<newline> is treated as a line continuation (that
- is, it is removed from the input stream and effectively ignored).
+ <newline>. If a \\<newline> pair appears, and the backslash is not it-
+ self quoted, the \\<newline> is treated as a line continuation (that is,
+ it is removed from the input stream and effectively ignored).
Enclosing characters in single quotes preserves the literal value of
each character within the quotes. A single quote may not occur between
@@ -637,215 +645,219 @@ QQUUOOTTIINNGG
been present.
A double-quoted string preceded by a dollar sign ($$"_s_t_r_i_n_g") will cause
- the string to be translated according to the current locale. If the
- current locale is CC or PPOOSSIIXX, the dollar sign is ignored. If the
- string is translated and replaced, the replacement is double-quoted.
+ the string to be translated according to the current locale. The _g_e_t_-
+ _t_e_x_t infrastructure performs the message catalog lookup and transla-
+ tion, using the LLCC__MMEESSSSAAGGEESS and TTEEXXTTDDOOMMAAIINN shell variables. If the
+ current locale is CC or PPOOSSIIXX, or if there are no translations avail-
+ able, the dollar sign is ignored. If the string is translated and re-
+ placed, the replacement is double-quoted.
PPAARRAAMMEETTEERRSS
- A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num-
+ A _p_a_r_a_m_e_t_e_r is an entity that stores values. It can be a _n_a_m_e, a num-
ber, or one of the special characters listed below under SSppeecciiaall PPaarraamm--
- eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a
- _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the
+ eetteerrss. A _v_a_r_i_a_b_l_e is a parameter denoted by a _n_a_m_e. A variable has a
+ _v_a_l_u_e and zero or more _a_t_t_r_i_b_u_t_e_s. Attributes are assigned using the
ddeeccllaarree builtin command (see ddeeccllaarree below in SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS).
A parameter is set if it has been assigned a value. The null string is
- a valid value. Once a variable is set, it may be unset only by using
+ a valid value. Once a variable is set, it may be unset only by using
the uunnsseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
A _v_a_r_i_a_b_l_e may be assigned to by a statement of the form
_n_a_m_e=[_v_a_l_u_e]
- If _v_a_l_u_e is not given, the variable is assigned the null string. All
- _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com-
- mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN--
+ If _v_a_l_u_e is not given, the variable is assigned the null string. All
+ _v_a_l_u_e_s undergo tilde expansion, parameter and variable expansion, com-
+ mand substitution, arithmetic expansion, and quote removal (see EEXXPPAANN--
SSIIOONN below). If the variable has its iinntteeggeerr attribute set, then _v_a_l_u_e
is evaluated as an arithmetic expression even if the $((...)) expansion
- is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not
- performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall
- PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state-
- ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett,
- eexxppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands).
+ is not used (see AArriitthhmmeettiicc EExxppaannssiioonn below). Word splitting is not
+ performed, with the exception of ""$$@@"" as explained below under SSppeecciiaall
+ PPaarraammeetteerrss. Pathname expansion is not performed. Assignment state-
+ ments may also appear as arguments to the aalliiaass, ddeeccllaarree, ttyyppeesseett, eexx--
+ ppoorrtt, rreeaaddoonnllyy, and llooccaall builtin commands (_d_e_c_l_a_r_a_t_i_o_n commands).
When in _p_o_s_i_x _m_o_d_e, these builtins may appear in a command after one or
- more instances of the ccoommmmaanndd builtin and retain these assignment
+ more instances of the ccoommmmaanndd builtin and retain these assignment
statement properties.
- In the context where an assignment statement is assigning a value to a
+ In the context where an assignment statement is assigning a value to a
shell variable or array index, the += operator can be used to append to
- or add to the variable's previous value. This includes arguments to
- builtin commands such as ddeeccllaarree that accept assignment statements
+ or add to the variable's previous value. This includes arguments to
+ builtin commands such as ddeeccllaarree that accept assignment statements
(_d_e_c_l_a_r_a_t_i_o_n commands). When += is applied to a variable for which the
- _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic
- expression and added to the variable's current value, which is also
- evaluated. When += is applied to an array variable using compound
- 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
+ _i_n_t_e_g_e_r attribute has been set, _v_a_l_u_e is evaluated as an arithmetic ex-
+ pression and added to the variable's current value, which is also eval-
+ uated. When += is applied to an array variable using compound assign-
+ ment (see AArrrraayyss below), the variable's value is not unset (as it is
+ when using =), and new values are appended to the array beginning at
+ one greater than the array's maximum index (for indexed arrays) or
+ added as additional key-value pairs in an associative array. When ap-
+ plied to a string-valued variable, _v_a_l_u_e is expanded and appended to
the variable's value.
A variable can be assigned the _n_a_m_e_r_e_f attribute using the --nn option to
- the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree
- and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari-
- able. This allows variables to be manipulated indirectly. Whenever
- the nameref variable is referenced, assigned to, unset, or has its
- 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
+ the ddeeccllaarree or llooccaall builtin commands (see the descriptions of ddeeccllaarree
+ and llooccaall below) to create a _n_a_m_e_r_e_f, or a reference to another vari-
+ able. This allows variables to be manipulated indirectly. Whenever
+ the nameref variable is referenced, assigned to, unset, or has its at-
+ tributes modified (other than using or changing the _n_a_m_e_r_e_f attribute
+ itself), the operation is actually performed on the variable specified
+ by the nameref variable's value. A nameref is commonly used within
shell functions to refer to a variable whose name is passed as an argu-
- ment to the function. For instance, if a variable name is passed to a
+ ment to the function. For instance, if a variable name is passed to a
shell function as its first argument, running
declare -n ref=$1
- inside the function creates a nameref variable rreeff whose value is the
+ inside the function creates a nameref variable rreeff whose value is the
variable name passed as the first argument. References and assignments
- to rreeff, and changes to its attributes, are treated as references,
- 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,
+ to rreeff, and changes to its attributes, are treated as references, as-
+ signments, and attribute modifications to the variable whose name was
+ passed as $$11. If the control variable in a ffoorr loop has the nameref
+ attribute, the list of words can be a list of shell variables, and a
+ name reference will be established for each word in the list, in turn,
when the loop is executed. Array variables cannot be given the nnaammeerreeff
- attribute. However, nameref variables can reference array variables
- and subscripted array variables. Namerefs can be unset using the --nn
- option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the
- name of a nameref variable as an argument, the variable referenced by
+ attribute. However, nameref variables can reference array variables
+ and subscripted array variables. Namerefs can be unset using the --nn
+ option to the uunnsseett builtin. Otherwise, if uunnsseett is executed with the
+ name of a nameref variable as an argument, the variable referenced by
the nameref variable will be unset.
PPoossiittiioonnaall PPaarraammeetteerrss
- A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits,
+ A _p_o_s_i_t_i_o_n_a_l _p_a_r_a_m_e_t_e_r is a parameter denoted by one or more digits,
other than the single digit 0. Positional parameters are assigned from
- the shell's arguments when it is invoked, and may be reassigned using
- the sseett builtin command. Positional parameters may not be assigned to
- with assignment statements. The positional parameters are temporarily
+ the shell's arguments when it is invoked, and may be reassigned using
+ the sseett builtin command. Positional parameters may not be assigned to
+ with assignment statements. The positional parameters are temporarily
replaced when a shell function is executed (see FFUUNNCCTTIIOONNSS below).
- When a positional parameter consisting of more than a single digit is
+ When a positional parameter consisting of more than a single digit is
expanded, it must be enclosed in braces (see EEXXPPAANNSSIIOONN below).
SSppeecciiaall PPaarraammeetteerrss
- The shell treats several parameters specially. These parameters may
+ The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
- ** Expands to the positional parameters, starting from one. When
- the expansion is not within double quotes, each positional
- parameter expands to a separate word. In contexts where it is
+ ** Expands to the positional parameters, starting from one. When
+ the expansion is not within double quotes, each positional pa-
+ rameter expands to a separate word. In contexts where it is
performed, those words are subject to further word splitting and
- pathname expansion. When the expansion occurs within double
- quotes, it expands to a single word with the value of each
- parameter separated by the first character of the IIFFSS special
- variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c
+ pathname expansion. When the expansion occurs within double
+ quotes, it expands to a single word with the value of each pa-
+ rameter separated by the first character of the IIFFSS special
+ variable. That is, "$$**" is equivalent to "$$11_c$$22_c......", where _c
is the first character of the value of the IIFFSS variable. If IIFFSS
- is unset, the parameters are separated by spaces. If IIFFSS is
+ is unset, the parameters are separated by spaces. If IIFFSS is
null, the parameters are joined without intervening separators.
- @@ Expands to the positional parameters, starting from one. In
- contexts where word splitting is performed, this expands each
- positional parameter to a separate word; if not within double
- quotes, these words are subject to word splitting. In contexts
- where word splitting is not performed, this expands to a single
- word with each positional parameter separated by a space. When
- the expansion occurs within double quotes, each parameter
- 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
+ @@ Expands to the positional parameters, starting from one. In
+ contexts where word splitting is performed, this expands each
+ positional parameter to a separate word; if not within double
+ quotes, these words are subject to word splitting. In contexts
+ where word splitting is not performed, this expands to a single
+ word with each positional parameter separated by a space. When
+ the expansion occurs within double quotes, each parameter ex-
+ pands to a separate word. That is, "$$@@" is equivalent to "$$11"
+ "$$22" ... If the double-quoted expansion occurs within a word,
+ the expansion of the first parameter is joined with the begin-
+ ning part of the original word, and the expansion of the last
+ parameter is joined with the last part of the original word.
+ When there are no positional parameters, "$$@@" and $$@@ expand to
nothing (i.e., they are removed).
## Expands to the number of positional parameters in decimal.
- ?? Expands to the exit status of the most recently executed fore-
+ ?? Expands to the exit status of the most recently executed fore-
ground pipeline.
- -- Expands to the current option flags as specified upon invoca-
- tion, by the sseett builtin command, or those set by the shell
- 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 current option flags as specified upon invoca-
+ tion, by the sseett builtin command, or those set by the shell it-
+ self (such as the --ii option).
+ $$ Expands to the process ID of the shell. In a () subshell, it
+ expands to the process ID of the current shell, not the sub-
shell.
- !! Expands to the process ID of the 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 simple command executed in the fore-
- ground, after expansion. Also set to the full pathname used to
- invoke each command executed and placed in the environment
- exported to that command. When checking mail, this parameter
- holds the name of the mail file currently being checked.
SShheellll VVaarriiaabblleess
The following variables are set by the shell:
- BBAASSHH Expands to the full filename used to invoke this instance of
+ __ At shell startup, set to the 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 simple command executed in the foreground, after
+ expansion. Also set to the full pathname used to invoke each
+ command executed and placed in the environment exported to that
+ command. When checking mail, this parameter holds the name of
+ the mail file currently being checked.
+ BBAASSHH Expands to the full filename used to invoke this instance of
bbaasshh.
BBAASSHHOOPPTTSS
- A colon-separated list of enabled shell options. Each word in
- the list is a valid argument for the --ss option to the sshhoopptt
+ A colon-separated list of enabled shell options. Each word in
+ the list is a valid argument for the --ss option to the sshhoopptt
builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options
- appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If
- this variable is in the environment when bbaasshh starts up, each
- shell option in the list will be enabled before reading any
+ appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If
+ this variable is in the environment when bbaasshh starts up, each
+ shell option in the list will be enabled before reading any
startup files. This variable is read-only.
BBAASSHHPPIIDD
- Expands to the process ID of the current bbaasshh process. This
- differs from $$$$ under certain circumstances, such as subshells
- that do not require bbaasshh to be re-initialized. Assignments to
- BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe-
+ Expands to the process ID of the current bbaasshh process. This
+ differs from $$$$ under certain circumstances, such as subshells
+ that do not require bbaasshh to be re-initialized. Assignments to
+ BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe-
cial properties, even if it is subsequently reset.
BBAASSHH__AALLIIAASSEESS
- An associative array variable whose members correspond to the
- internal list of aliases as maintained by the aalliiaass builtin.
- Elements added to this array appear in the alias list; however,
- unsetting array elements currently does not cause aliases to be
+ An associative array variable whose members correspond to the
+ internal list of aliases as maintained by the aalliiaass builtin.
+ Elements added to this array appear in the alias list; however,
+ unsetting array elements currently does not cause aliases to be
removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses
its special properties, even if it is subsequently reset.
BBAASSHH__AARRGGCC
- An array variable whose values are the number of parameters in
+ An array variable whose values are the number of parameters in
each frame of the current bbaasshh execution call stack. The number
- of parameters to the current subroutine (shell function or
- script executed with .. or ssoouurrccee) is at the top of the stack.
- When a subroutine is executed, the number of parameters passed
+ of parameters to the current subroutine (shell function or
+ script executed with .. or ssoouurrccee) is at the top of the stack.
+ When a subroutine is executed, the number of parameters passed
is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in
- extended debugging mode (see the description of the eexxttddeebbuugg
- option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the
+ extended debugging mode (see the description of the eexxttddeebbuugg op-
+ tion to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the
shell has started to execute a script, or referencing this vari-
- able when eexxttddeebbuugg is not set, may result in inconsistent val-
+ able when eexxttddeebbuugg is not set, may result in inconsistent val-
ues.
BBAASSHH__AARRGGVV
- An array variable containing all of the parameters in the cur-
+ An array variable containing all of the parameters in the cur-
rent bbaasshh execution call stack. The final parameter of the last
- subroutine call is at the top of the stack; the first parameter
+ subroutine call is at the top of the stack; the first parameter
of the initial call is at the bottom. When a subroutine is exe-
- cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The
- shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see
- the description of the eexxttddeebbuugg option to the sshhoopptt builtin
- below). Setting eexxttddeebbuugg after the shell has started to execute
- a script, or referencing this variable when eexxttddeebbuugg is not set,
+ cuted, the parameters supplied are pushed onto BBAASSHH__AARRGGVV. The
+ shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see
+ the description of the eexxttddeebbuugg option to the sshhoopptt builtin be-
+ low). Setting eexxttddeebbuugg after the shell has started to execute a
+ script, or referencing this variable when eexxttddeebbuugg is not set,
may result in inconsistent values.
BBAASSHH__AARRGGVV00
- When referenced, this variable expands to the name of the shell
+ When referenced, this variable expands to the name of the shell
or shell script (identical to $$00; see the description of special
- parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value
- assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it
+ parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value
+ assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it
loses its special properties, even if it is subsequently reset.
BBAASSHH__CCMMDDSS
- An associative array variable whose members correspond to the
- internal hash table of commands as maintained by the hhaasshh
+ 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;
- 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-
+ 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,
+ 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.
+ in which case it is the command executing at the time of the
+ trap. If BBAASSHH__CCOOMMMMAANNDD is unset, it loses its special proper-
+ ties, even if it is subsequently reset.
BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG
The command argument to the --cc invocation option.
BBAASSHH__LLIINNEENNOO
@@ -862,20 +874,20 @@ PPAARRAAMMEETTEERRSS
BBAASSHH__RREEMMAATTCCHH
An array variable whose members are assigned by the ==~~ binary
operator to the [[[[ conditional command. The element with index
- 0 is the portion of the string matching the entire regular
- expression. The element with index _n is the portion of the
- string matching the _nth parenthesized subexpression. This vari-
- able is read-only.
+ 0 is the portion of the string matching the entire regular ex-
+ pression. The element with index _n is the portion of the string
+ matching the _nth parenthesized subexpression.
BBAASSHH__SSOOUURRCCEE
- An array variable whose members are the source filenames where
- the corresponding shell function names in the FFUUNNCCNNAAMMEE array
- variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is
- defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from
+ An array variable whose members are the source filenames where
+ the corresponding shell function names in the FFUUNNCCNNAAMMEE array
+ variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is de-
+ fined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from
$${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}.
BBAASSHH__SSUUBBSSHHEELLLL
- Incremented by one within each subshell or subshell environment
- when the shell begins executing in that environment. The ini-
- tial value is 0.
+ Incremented by one within each subshell or subshell environment
+ when the shell begins executing in that environment. The ini-
+ tial value is 0. If BBAASSHH__SSUUBBSSHHEELLLL is unset, it loses its spe-
+ cial properties, even if it is subsequently reset.
BBAASSHH__VVEERRSSIINNFFOO
A readonly array variable whose members hold version information
for this instance of bbaasshh. The values assigned to the array
@@ -925,8 +937,8 @@ PPAARRAAMMEETTEERRSS
CCOOMMPP__WWOORRDDSS
An array variable (see AArrrraayyss below) consisting of the individ-
ual words in the current command line. The line is split into
- words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as
- described above. This variable is available only in shell func-
+ words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as de-
+ scribed above. This variable is available only in shell func-
tions invoked by the programmable completion facilities (see
PPrrooggrraammmmaabbllee CCoommpplleettiioonn below).
CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file
@@ -939,9 +951,9 @@ PPAARRAAMMEETTEERRSS
to members of this array variable may be used to modify directo-
ries already in the stack, but the ppuusshhdd and ppooppdd builtins must
be used to add and remove directories. Assignment to this vari-
- able will not change the current directory. If DDIIRRSSTTAACCKK is
- unset, it loses its special properties, even if it is subse-
- quently reset.
+ able will not change the current directory. If DDIIRRSSTTAACCKK is un-
+ set, it loses its special properties, even if it is subsequently
+ reset.
EEPPOOCCHHRREEAALLTTIIMMEE
Each time this parameter is referenced, it expands to the number
of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating
@@ -962,13 +974,13 @@ PPAARRAAMMEETTEERRSS
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.
+ it loses its special properties, even if it is subsequently re-
+ set.
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__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For in-
+ stance, $${{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.
@@ -978,50 +990,56 @@ PPAARRAAMMEETTEERRSS
is subsequently reset.
HHIISSTTCCMMDD
The history number, or index in the history list, of the current
- command. If HHIISSTTCCMMDD is unset, it loses its special properties,
- even if it is subsequently reset.
+ command. Assignments to HHIISSTTCCMMDD are ignored. If HHIISSTTCCMMDD is un-
+ set, 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
- reset.
+ RRAANNDDOOMM Each time this parameter is referenced, it expands to a random
+ integer between 0 and 32767. Assigning a value to RRAANNDDOOMM ini-
+ tializes (seeds) the sequence of random numbers. If RRAANNDDOOMM is
+ unset, it loses its special properties, even if it is subse-
+ quently reset.
RREEAADDLLIINNEE__LLIINNEE
The contents of the rreeaaddlliinnee line buffer, for use with "bind -x"
(see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
+ RREEAADDLLIINNEE__MMAARRKK
+ The position of the mark (saved insertion point) in the rreeaaddlliinnee
+ line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
+ below). The characters between the insertion point and the mark
+ are often called the _r_e_g_i_o_n.
RREEAADDLLIINNEE__PPOOIINNTT
The position of the insertion point in the rreeaaddlliinnee line buffer,
for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
@@ -1032,8 +1050,10 @@ PPAARRAAMMEETTEERRSS
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.
+ The number of seconds at shell invocation and the current time
+ is always determined by querying the system clock. If SSEECCOONNDDSS
+ is unset, it loses its special properties, even if it is subse-
+ quently 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
@@ -1043,27 +1063,35 @@ PPAARRAAMMEETTEERRSS
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.
+ SSRRAANNDDOOMM
+ This variable expands to a 32-bit pseudo-random number each time
+ it is referenced. The random number generator is not linear on
+ systems that support /dev/urandom or _a_r_c_4_r_a_n_d_o_m, so each re-
+ turned number has no relationship to the numbers preceding it.
+ The random number generator cannot be seeded, so assignments to
+ this variable have no effect. If SSRRAANNDDOOMM is unset, it loses its
+ special properties, even if it is subsequently reset.
UUIIDD Expands to the user ID of the current user, initialized at shell
startup. This variable is readonly.
- The following variables are used by the shell. In some cases, bbaasshh
- assigns a default value to a variable; these cases are noted below.
+ The following variables are used by the shell. In some cases, bbaasshh as-
+ signs 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
- 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
- described below (for example, ccoommppaatt4422 means that 4.2 and 42 are
- valid values). The current version is also a valid value.
+ SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below for a description of the various
+ compatibility levels and their effects. The value may be a dec-
+ imal number (e.g., 4.2) or an integer (e.g., 42) corresponding
+ to the desired compatibility 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 values corre-
+ spond to the compatibility levels described below under BBSSHHEELLLL--
+ COMPATIBILITYMMOODDEE. For example, 4.2 and 42 are valid values
+ that correspond to the ccoommppaatt4422 sshhoopptt option and set the compat-
+ ibility level to 42. The current version is also a valid value.
BBAASSHH__EENNVV
If this parameter is set when bbaasshh is executing a shell script,
its value is interpreted as a filename containing commands to
@@ -1073,16 +1101,16 @@ PPAARRAAMMEETTEERRSS
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
+ bbaasshh will write the trace output generated when _s_e_t _-_x is en-
+ abled 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
+ list of directories in which the shell looks for destination di-
+ rectories specified by the ccdd command. A sample value is
".:~:/usr".
CCHHIILLDD__MMAAXX
Set the number of exited child status values for the shell to
@@ -1098,13 +1126,13 @@ PPAARRAAMMEETTEERRSS
CCOOMMPPRREEPPLLYY
An array variable from which bbaasshh reads the possible completions
generated by a shell function invoked by the programmable com-
- pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each
- array element contains one possible completion.
+ pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each ar-
+ ray element contains one possible completion.
EEMMAACCSS If bbaasshh finds this variable in the environment when the shell
starts with value "t", it assumes that the shell is running in
an Emacs shell buffer and disables line editing.
- EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in _p_o_s_i_x
- _m_o_d_e.
+ EENNVV Expanded and executed similarly to BBAASSHH__EENNVV (see IINNVVOOCCAATTIIOONN
+ above) when an interactive shell is invoked in _p_o_s_i_x _m_o_d_e.
EEXXEECCIIGGNNOORREE
A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg)
defining the list of filenames to be ignored by command search
@@ -1133,8 +1161,8 @@ PPAARRAAMMEETTEERRSS
patterns in GGLLOOBBIIGGNNOORREE, it is removed from the list of matches.
HHIISSTTCCOONNTTRROOLL
A colon-separated list of values controlling how commands are
- saved on the history list. If the list of values includes
- _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not
+ saved on the history list. If the list of values includes _i_g_-
+ _n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not
saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines
matching the previous history entry to not be saved. A value of
_i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value
@@ -1162,17 +1190,17 @@ PPAARRAAMMEETTEERRSS
HHIISSTTSSIIZZEE after reading any startup files.
HHIISSTTIIGGNNOORREE
A colon-separated list of patterns used to decide which command
- lines should be saved on the history list. Each pattern is
- anchored at the beginning of the line and must match the com-
- plete line (no implicit `**' is appended). Each pattern is
- tested against the line after the checks specified by HHIISSTTCCOONN--
- TTRROOLL are applied. In addition to the normal shell pattern
- matching characters, `&&' matches the previous history line. `&&'
- may be escaped using a backslash; the backslash is removed
- before attempting a match. The second and subsequent lines of a
- multi-line compound command are not tested, and are added to the
- history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern
- matching honors the setting of the eexxttgglloobb shell option.
+ lines should be saved on the history list. Each pattern is an-
+ chored 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 HHIISSTTCCOONNTTRROOLL are
+ applied. In addition to the normal shell pattern matching char-
+ acters, `&&' matches the previous history line. `&&' may be es-
+ caped using a backslash; the backslash is removed before at-
+ tempting a match. The second and subsequent lines of a multi-
+ line compound command are not tested, and are added to the his-
+ tory regardless of the value of HHIISSTTIIGGNNOORREE. The pattern match-
+ ing 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
@@ -1195,14 +1223,14 @@ PPAARRAAMMEETTEERRSS
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 shell is running; the next time hostname completion is at-
+ tempted 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 af-
+ ter expansion and to split lines into words with the rreeaadd
builtin command. The default value is ``<space><tab><new-
line>''.
IIGGNNOORREEEEOOFF
@@ -1214,8 +1242,8 @@ PPAARRAAMMEETTEERRSS
default value is 10. If it does not exist, EEOOFF signifies the
end of input to the shell.
IINNPPUUTTRRCC
- The filename for the rreeaaddlliinnee startup file, overriding the
- default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below).
+ The filename for the rreeaaddlliinnee startup file, overriding the de-
+ fault of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below).
IINNSSIIDDEE__EEMMAACCSS
If this variable appears in the environment when the shell
starts, bbaasshh assumes that it is running inside an Emacs shell
@@ -1228,8 +1256,8 @@ PPAARRAAMMEETTEERRSS
LLCC__CCOOLLLLAATTEE
This variable determines the collation order used when sorting
the results of pathname expansion, and determines the behavior
- of range expressions, equivalence classes, and collating
- sequences within pathname expansion and pattern matching.
+ of range expressions, equivalence classes, and collating se-
+ quences 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
@@ -1248,78 +1276,80 @@ PPAARRAAMMEETTEERRSS
cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon
receipt of a SSIIGGWWIINNCCHH.
MMAAIILL If this parameter is set to a file or directory name and the
- MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the
- arrival of mail in the specified file or Maildir-format direc-
- tory.
+ MMAAIILLPPAATTHH variable is not set, bbaasshh informs the user of the ar-
+ rival of mail in the specified file or Maildir-format directory.
MMAAIILLCCHHEECCKK
- Specifies how often (in seconds) bbaasshh checks for mail. The
- default is 60 seconds. When it is time to check for mail, the
- shell does so before displaying the primary prompt. If this
- variable is unset, or set to a value that is not a number
+ Specifies how often (in seconds) bbaasshh checks for mail. The de-
+ fault is 60 seconds. When it is time to check for mail, the
+ shell does so before displaying the primary prompt. If this
+ variable is unset, or set to a value that is not a number
greater than or equal to zero, the shell disables mail checking.
MMAAIILLPPAATTHH
A colon-separated list of filenames to be checked for mail. The
message to be printed when mail arrives in a particular file may
- be specified by separating the filename from the message with a
- `?'. When used in the text of the message, $$__ expands to the
+ be specified by separating the filename from the message with a
+ `?'. When used in the text of the message, $$__ expands to the
name of the current mailfile. Example:
MMAAIILLPPAATTHH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has
mail!"'
- BBaasshh can be configured to supply a default value for this vari-
- able (there is no value by default), but the location of the
+ BBaasshh can be configured to supply a default value for this vari-
+ able (there is no value by default), but the location of the
user mail files that it uses is system dependent (e.g.,
/var/mail/$$UUSSEERR).
OOPPTTEERRRR If set to the value 1, bbaasshh displays error messages generated by
- the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
- OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a
+ the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
+ OOPPTTEERRRR is initialized to 1 each time the shell is invoked or a
shell script is executed.
- PPAATTHH The search path for commands. It is a colon-separated list of
- directories in which the shell looks for commands (see CCOOMMMMAANNDD
- EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the
+ PPAATTHH The search path for commands. It is a colon-separated list of
+ directories in which the shell looks for commands (see CCOOMMMMAANNDD
+ EEXXEECCUUTTIIOONN below). A zero-length (null) directory name in the
value of PPAATTHH indicates the current directory. A null directory
- name may appear as two adjacent colons, or as an initial or
- trailing colon. The default path is system-dependent, and is
+ name may appear as two adjacent colons, or as an initial or
+ trailing colon. The default path is system-dependent, and is
set by the administrator who installs bbaasshh. A common value is
- ``/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
+ ``/usr/local/bin:/usr/lo-
+ cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin''.
PPOOSSIIXXLLYY__CCOORRRREECCTT
- If this variable is in the environment when bbaasshh starts, the
- shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if
- the ----ppoossiixx invocation option had been supplied. If it is set
- while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the
- command _s_e_t _-_o _p_o_s_i_x had been executed. When the shell enters
+ If this variable is in the environment when bbaasshh starts, the
+ shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if
+ the ----ppoossiixx invocation option had been supplied. If it is set
+ while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the
+ command _s_e_t _-_o _p_o_s_i_x had been executed. When the shell enters
_p_o_s_i_x _m_o_d_e, it sets this variable if it was not already set.
PPRROOMMPPTT__CCOOMMMMAANNDD
- If set, the value is executed as a command prior to issuing each
- primary prompt.
+ If this variable is set, and is an array, the value of each set
+ element is executed as a command prior to issuing each primary
+ prompt. If this is set but not an array variable, its value is
+ used as a command to execute instead.
PPRROOMMPPTT__DDIIRRTTRRIIMM
- If set to a number greater than zero, the value is used as the
+ If set to a number greater than zero, the value is used as the
number of trailing directory components to retain when expanding
- the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below).
+ the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below).
Characters removed are replaced with an ellipsis.
- PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below)
- and displayed by interactive shells after reading a command and
+ PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below)
+ and displayed by interactive shells after reading a command and
before the command is executed.
- PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below)
- and used as the primary prompt string. The default value is
+ PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below)
+ and used as the primary prompt string. The default value is
``\\ss--\\vv\\$$ ''.
- PPSS22 The value of this parameter is expanded as with PPSS11 and used as
+ PPSS22 The value of this parameter is expanded as with PPSS11 and used as
the secondary prompt string. The default is ``>> ''.
PPSS33 The value of this parameter is used as the prompt for the sseelleecctt
command (see SSHHEELLLL GGRRAAMMMMAARR above).
- PPSS44 The value of this parameter is expanded as with PPSS11 and the
- value is printed before each command bbaasshh displays during an
- execution trace. The first character of the expanded value of
- PPSS44 is replicated multiple times, as necessary, to indicate mul-
- tiple levels of indirection. The default is ``++ ''.
- SSHHEELLLL The full pathname to the shell is kept in this environment vari-
- able. If it is not set when the shell starts, bbaasshh assigns to
- it the full pathname of the current user's login shell.
+ PPSS44 The value of this parameter is expanded as with PPSS11 and the
+ value is printed before each command bbaasshh displays during an ex-
+ ecution trace. The first character of the expanded value of PPSS44
+ is replicated multiple times, as necessary, to indicate multiple
+ levels of indirection. The default is ``++ ''.
+ SSHHEELLLL This variable expands to the full pathname to the shell. If it
+ is not set when the shell starts, bbaasshh assigns to it the full
+ pathname of the current user's login shell.
TTIIMMEEFFOORRMMAATT
- The value of this parameter is used as a format string specify-
- ing how the timing information for pipelines prefixed with the
- ttiimmee reserved word should be displayed. The %% character intro-
- duces an escape sequence that is expanded to a time value or
- other information. The escape sequences and their meanings are
+ The value of this parameter is used as a format string specify-
+ ing how the timing information for pipelines prefixed with the
+ ttiimmee reserved word should be displayed. The %% character intro-
+ duces an escape sequence that is expanded to a time value or
+ other information. The escape sequences and their meanings are
as follows; the braces denote optional portions.
%%%% A literal %%.
%%[[_p]][[ll]]RR The elapsed time in seconds.
@@ -1327,77 +1357,77 @@ PPAARRAAMMEETTEERRSS
%%[[_p]][[ll]]SS The number of CPU seconds spent in system mode.
%%PP The CPU percentage, computed as (%U + %S) / %R.
- The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number
+ The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number
of fractional digits after a decimal point. A value of 0 causes
no decimal point or fraction to be output. At most three places
- after the decimal point may be specified; values of _p greater
- than 3 are changed to 3. If _p is not specified, the value 3 is
+ after the decimal point may be specified; values of _p greater
+ than 3 are changed to 3. If _p is not specified, the value 3 is
used.
- The optional ll specifies a longer format, including minutes, of
- the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not
+ The optional ll specifies a longer format, including minutes, of
+ the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not
the fraction is included.
- If this variable is not set, bbaasshh acts as if it had the value
- $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null,
+ If this variable is not set, bbaasshh acts as if it had the value
+ $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null,
no timing information is displayed. A trailing newline is added
when the format string is displayed.
- TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the
- default timeout for the rreeaadd builtin. The sseelleecctt command termi-
+ TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the de-
+ fault timeout for the rreeaadd builtin. The sseelleecctt command termi-
nates if input does not arrive after TTMMOOUUTT seconds when input is
- coming from a terminal. In an interactive shell, the value is
+ coming from a terminal. In an interactive shell, the value is
interpreted as the number of seconds to wait for a line of input
after issuing the primary prompt. BBaasshh terminates after waiting
- for that number of seconds if a complete line of input does not
+ for that number of seconds if a complete line of input does not
arrive.
- TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which
+ TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which
bbaasshh creates temporary files for the shell's use.
aauuttoo__rreessuummee
This variable controls how the shell interacts with the user and
- job control. If this variable is set, single word simple com-
+ job control. If this variable is set, single word simple com-
mands without redirections are treated as candidates for resump-
tion of an existing stopped job. There is no ambiguity allowed;
- if there is more than one job beginning with the string typed,
- the job most recently accessed is selected. The _n_a_m_e of a
- stopped job, in this context, is the command line used to start
- it. If set to the value _e_x_a_c_t, the string supplied must match
- the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the
- string supplied needs to match a substring of the name of a
- stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo-
- gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set
- to any other value, the supplied string must be a prefix of a
+ if there is more than one job beginning with the string typed,
+ the job most recently accessed is selected. The _n_a_m_e of a
+ stopped job, in this context, is the command line used to start
+ it. If set to the value _e_x_a_c_t, the string supplied must match
+ the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the
+ string supplied needs to match a substring of the name of a
+ stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo-
+ gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL below). If set
+ to any other value, the supplied string must be a prefix of a
stopped job's name; this provides functionality analogous to the
%%_s_t_r_i_n_g job identifier.
hhiissttcchhaarrss
- The two or three characters which control history expansion and
+ The two or three characters which control history expansion and
tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN below). The first character
- is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals
- the start of a history expansion, normally `!!'. The second
- character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as
- shorthand for re-running the previous command entered, substi-
- tuting one string for another in the command. The default is
- `^^'. The optional third character is the character which indi-
- cates that the remainder of the line is a comment when found as
- the first character of a word, normally `##'. The history com-
+ is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals
+ the start of a history expansion, normally `!!'. The second
+ character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n character, which is used as
+ shorthand for re-running the previous command entered, substi-
+ tuting one string for another in the command. The default is
+ `^^'. The optional third character is the character which indi-
+ cates that the remainder of the line is a comment when found as
+ the first character of a word, normally `##'. The history com-
ment character causes history substitution to be skipped for the
- remaining words on the line. It does not necessarily cause the
+ remaining words on the line. It does not necessarily cause the
shell parser to treat the rest of the line as a comment.
AArrrraayyss
- BBaasshh provides one-dimensional indexed and associative array variables.
- Any variable may be used as an indexed array; the ddeeccllaarree builtin will
- explicitly declare an array. There is no maximum limit on the size of
- an array, nor any requirement that members be indexed or assigned con-
- tiguously. Indexed arrays are referenced using integers (including
+ BBaasshh provides one-dimensional indexed and associative array variables.
+ Any variable may be used as an indexed array; the ddeeccllaarree builtin will
+ explicitly declare an array. There is no maximum limit on the size of
+ an array, nor any requirement that members be indexed or assigned con-
+ tiguously. Indexed arrays are referenced using integers (including
arithmetic expressions) and are zero-based; associative arrays are ref-
erenced using arbitrary strings. Unless otherwise noted, indexed array
indices must be non-negative integers.
- An indexed array is created automatically if any variable is assigned
+ An indexed array is created automatically if any variable is assigned
to using the syntax _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as
an arithmetic expression that must evaluate to a number. To explicitly
- declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM--
- MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_-
+ declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM--
+ MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_-
_s_c_r_i_p_t is ignored.
Associative arrays are created using ddeeccllaarree --AA _n_a_m_e.
@@ -1405,19 +1435,28 @@ PPAARRAAMMEETTEERRSS
Attributes may be specified for an array variable using the ddeeccllaarree and
rreeaaddoonnllyy builtins. Each attribute applies to all members of an array.
- Arrays are assigned to using compound assignments of the form
- _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_-
- _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but
- _s_t_r_i_n_g. When assigning to indexed arrays, if the optional brackets and
- subscript are supplied, that index is assigned to; otherwise the index
- of the element assigned is the last index assigned to by the statement
- plus one. Indexing starts at zero.
-
- When assigning to an associative array, the subscript is required.
+ 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 may be 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. Each _v_a_l_u_e in the list is expanded using all the shell expan-
+ sions described below under EEXXPPAANNSSIIOONN. When assigning to indexed ar-
+ rays, if the optional brackets and subscript are supplied, that index
+ is assigned to; otherwise the index of the element assigned is the last
+ index assigned to by the statement plus one. Indexing starts at zero.
+
+ When assigning to an associative array, the words in a compound assign-
+ ment may be either assignment statements, for which the subscript is
+ required, or a list of words that is interpreted as a sequence of al-
+ ternating keys and values: _n_a_m_e=(( _k_e_y_1 _v_a_l_u_e_1 _k_e_y_2 _v_a_l_u_e_2 ...)). These
+ are treated identically to _n_a_m_e=(( [_k_e_y_1]=_v_a_l_u_e_1 [_k_e_y_2]=_v_a_l_u_e_2 ...)).
+ The first word in the list determines how the remaining words are in-
+ terpreted; all assignments in a list must be of the same type. When
+ using key/value pairs, the keys may not be missing or empty; a final
+ missing value is treated like the empty string.
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-
+ 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 in-
+ troduced 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
@@ -1431,18 +1470,18 @@ PPAARRAAMMEETTEERRSS
value of each array member separated by the first character of the IIFFSS
special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep-
arate word. When there are no array members, ${_n_a_m_e[@]} expands to
- nothing. If the double-quoted expansion occurs within a word, the
- expansion of the first parameter is joined with the beginning part of
- the original word, and the expansion of the last parameter is joined
- with the last part of the original word. This is analogous to the
- expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss
- above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_-
- _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele-
- ments in the array. If the _s_u_b_s_c_r_i_p_t used to reference an element of
- an indexed array evaluates to a number less than zero, it is inter-
- preted as relative to one greater than the maximum index of the array,
- so negative indices count back from the end of the array, and an index
- of -1 references the last element.
+ nothing. If the double-quoted expansion occurs within a word, the ex-
+ pansion of the first parameter is joined with the beginning part of the
+ original word, and the expansion of the last parameter is joined with
+ 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 elements in the ar-
+ ray. If the _s_u_b_s_c_r_i_p_t used to reference an element of an indexed array
+ evaluates to a number less than zero, it is interpreted as relative to
+ one greater than the maximum index of the array, so negative indices
+ 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
@@ -1457,22 +1496,22 @@ PPAARRAAMMEETTEERRSS
array variable _n_a_m_e. The treatment when in double quotes is similar to
the expansion of the special parameters _@ and _* within double quotes.
- The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t]
- destroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and
- associative arrays. Negative subscripts to indexed arrays are inter-
- preted as described above. Unsetting the last element of an array
- variable does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an
- array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the
- entire array.
+ The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] de-
+ stroys the array element at index _s_u_b_s_c_r_i_p_t, for both indexed and asso-
+ ciative arrays. Negative subscripts to indexed arrays are interpreted
+ as described above. Unsetting the last element of an array variable
+ does not unset the variable. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or
+ uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire
+ array.
When using a variable name with a subscript as an argument to a com-
- mand, such as with uunnsseett, without using the word expansion syntax
- described above, the argument is subject to pathname expansion. If
- pathname expansion is not desired, the argument should be quoted.
+ mand, such as with uunnsseett, without using the word expansion syntax de-
+ scribed above, the argument is subject to pathname expansion. If path-
+ name expansion is not desired, the argument should be quoted.
The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to
- specify an indexed array and a --AA option to specify an associative
- array. If both options are supplied, --AA takes precedence. The rreeaadd
+ specify an indexed array and a --AA option to specify an associative ar-
+ ray. If both options are supplied, --AA takes precedence. The rreeaadd
builtin accepts a --aa option to assign a list of words read from the
standard input to an array. The sseett and ddeeccllaarree builtins display array
values in a way that allows them to be reused as assignments.
@@ -1497,10 +1536,10 @@ EEXXPPAANNSSIIOONN
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
- increase the number of words of the expansion; other expansions expand
- a single word to a single word. The only exceptions to this are the
- expansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and
+ Only brace expansion, word splitting, and pathname expansion can in-
+ crease the number of words of the expansion; other expansions expand a
+ single word to a single word. The only exceptions to this are the ex-
+ pansions of "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and
$${{_n_a_m_e[[**]]}} as explained above (see PPAARRAAMMEETTEERRSS).
BBrraaccee EExxppaannssiioonn
@@ -1525,10 +1564,10 @@ EEXXPPAANNSSIIOONN
or _y begins with a zero, the shell attempts to force all generated
terms to contain the same number of digits, zero-padding where neces-
sary. When characters are supplied, the expression expands to each
- character lexicographically between _x and _y, inclusive, using the
- default C locale. Note that both _x and _y must be of the same type.
- When the increment is supplied, it is used as the difference between
- each term. The default increment is 1 or -1 as appropriate.
+ character lexicographically between _x and _y, inclusive, using the de-
+ fault C locale. Note that both _x and _y must be of the same type. When
+ the increment is supplied, it is used as the difference between each
+ term. The default increment is 1 or -1 as appropriate.
Brace expansion is performed before any other expansions, and any char-
acters special to other expansions are preserved in the result. It is
@@ -1536,9 +1575,9 @@ EEXXPPAANNSSIIOONN
the context of the expansion or the text between the braces.
A correctly-formed brace expansion must contain unquoted opening and
- closing braces, and at least one unquoted comma or a valid sequence
- expression. Any incorrectly formed brace expansion is left unchanged.
- A {{ or ,, may be quoted with a backslash to prevent its being considered
+ closing braces, and at least one unquoted comma or a valid sequence ex-
+ pression. Any incorrectly formed brace expansion is left unchanged. A
+ {{ or ,, may be quoted with a backslash to prevent its being considered
part of a brace expression. To avoid conflicts with parameter expan-
sion, the string $${{ is not considered eligible for brace expansion, and
inhibits brace expansion until the closing }}.
@@ -1572,8 +1611,8 @@ EEXXPPAANNSSIIOONN
wise, the tilde-prefix is replaced with the home directory associated
with the specified login name.
- If the tilde-prefix is a `~+', the value of the shell variable PPWWDD
- replaces the tilde-prefix. If the tilde-prefix is a `~-', the value of
+ If the tilde-prefix is a `~+', the value of the shell variable PPWWDD re-
+ places the tilde-prefix. If the tilde-prefix is a `~-', the value of
the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char-
acters following the tilde in the tilde-prefix consist of a number _N,
optionally prefixed by a `+' or a `-', the tilde-prefix is replaced
@@ -1587,9 +1626,9 @@ EEXXPPAANNSSIIOONN
Each variable assignment is checked for unquoted tilde-prefixes immedi-
ately following a :: or the first ==. In these cases, tilde expansion is
- also performed. Consequently, one may use filenames with tildes in
- assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the
- expanded value.
+ also performed. Consequently, one may use filenames with tildes in as-
+ signments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the ex-
+ panded value.
Bash also performs tilde expansion on words satisfying the conditions
of variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they
@@ -1604,9 +1643,9 @@ EEXXPPAANNSSIIOONN
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.
+ escaped by a backslash or within a quoted string, and not within an em-
+ bedded arithmetic expansion, command substitution, or parameter expan-
+ sion.
${_p_a_r_a_m_e_t_e_r}
The value of _p_a_r_a_m_e_t_e_r is substituted. The braces are required
@@ -1618,12 +1657,12 @@ EEXXPPAANNSSIIOONN
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 indirection. BBaasshh
- uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new
- _p_a_r_a_m_e_t_e_r; this is then expanded and that value is used in the rest of
+ uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new _p_a_-
+ _r_a_m_e_t_e_r; this is then expanded and that value is used in the rest of
the expansion, rather than the expansion of the original _p_a_r_a_m_e_t_e_r.
- This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde
- expansion, parameter expansion, command substitution, and arithmetic
- expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the
+ This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde ex-
+ pansion, parameter expansion, command substitution, and arithmetic ex-
+ pansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the
parameter referenced by _p_a_r_a_m_e_t_e_r instead of performing the complete
indirect expansion. The exceptions to this are the expansions of
${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point
@@ -1633,20 +1672,20 @@ EEXXPPAANNSSIIOONN
In each of the cases below, _w_o_r_d is subject to tilde expansion, parame-
ter expansion, command substitution, and arithmetic expansion.
- When not performing substring expansion, using the forms documented
- below (e.g., ::--), bbaasshh tests for a parameter that is unset or null.
- Omitting the colon results in a test only for a parameter that is
- unset.
+ When not performing substring expansion, using the forms documented be-
+ low (e.g., ::--), bbaasshh tests for a parameter that is unset or null.
+ Omitting the colon results in a test only for a parameter that is un-
+ set.
${_p_a_r_a_m_e_t_e_r::--_w_o_r_d}
UUssee DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the expan-
sion of _w_o_r_d is substituted. Otherwise, the value of _p_a_r_a_m_e_t_e_r
is substituted.
${_p_a_r_a_m_e_t_e_r::==_w_o_r_d}
- AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the
- expansion of _w_o_r_d is assigned to _p_a_r_a_m_e_t_e_r. The value of _p_a_r_a_m_-
- _e_t_e_r is then substituted. Positional parameters and special
- parameters may not be assigned to in this way.
+ AAssssiiggnn DDeeffaauulltt VVaalluueess. If _p_a_r_a_m_e_t_e_r is unset or null, the ex-
+ pansion of _w_o_r_d is assigned to _p_a_r_a_m_e_t_e_r. The value of _p_a_r_a_m_e_-
+ _t_e_r is then substituted. Positional parameters and special pa-
+ rameters may not be assigned to in this way.
${_p_a_r_a_m_e_t_e_r::??_w_o_r_d}
DDiissppllaayy EErrrroorr iiff NNuullll oorr UUnnsseett. If _p_a_r_a_m_e_t_e_r is null or unset,
the expansion of _w_o_r_d (or a message to that effect if _w_o_r_d is
@@ -1668,35 +1707,33 @@ EEXXPPAANNSSIIOONN
arithmetic expressions (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN below).
If _o_f_f_s_e_t evaluates to a number less than zero, the value is
- used as an offset in characters from the end of the value of
- _p_a_r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it
- is interpreted as an offset in characters from the end of the
- value of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the
- expansion is the characters between _o_f_f_s_e_t and that result.
- Note that a negative offset must be separated from the colon by
- at least one space to avoid being confused with the ::-- expan-
- sion.
-
- If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters
+ used as an offset in characters from the end of the value of _p_a_-
+ _r_a_m_e_t_e_r. If _l_e_n_g_t_h evaluates to a number less than zero, it is
+ interpreted as an offset in characters from the end of the value
+ of _p_a_r_a_m_e_t_e_r rather than a number of characters, and the expan-
+ sion is the characters between _o_f_f_s_e_t and that result. Note
+ that a negative offset must be separated from the colon by at
+ least one space to avoid being confused with the ::-- expansion.
+
+ If _p_a_r_a_m_e_t_e_r is @@, the result is _l_e_n_g_t_h positional parameters
beginning at _o_f_f_s_e_t. A negative _o_f_f_s_e_t is taken relative to one
- greater than the greatest positional parameter, so an offset of
- -1 evaluates to the last positional parameter. It is an expan-
+ greater than the greatest positional parameter, so an offset of
+ -1 evaluates to the last positional parameter. It is an expan-
sion error if _l_e_n_g_t_h evaluates to a number less than zero.
If _p_a_r_a_m_e_t_e_r is an indexed array name subscripted by @ or *, the
- result is the _l_e_n_g_t_h members of the array beginning with
- ${_p_a_r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to
- one greater than the maximum index of the specified array. It
- is an expansion error if _l_e_n_g_t_h evaluates to a number less than
- zero.
+ result is the _l_e_n_g_t_h members of the array beginning with ${_p_a_-
+ _r_a_m_e_t_e_r[_o_f_f_s_e_t]}. A negative _o_f_f_s_e_t is taken relative to one
+ greater than the maximum index of the specified array. It is an
+ expansion error if _l_e_n_g_t_h evaluates to a number less than zero.
- Substring expansion applied to an associative array produces
- undefined results.
+ Substring expansion applied to an associative array produces un-
+ defined results.
Substring indexing is zero-based unless the positional parame-
- ters are used, in which case the indexing starts at 1 by
- default. If _o_f_f_s_e_t is 0, and the positional parameters are
- used, $$00 is prefixed to the list.
+ ters are used, in which case the indexing starts at 1 by de-
+ fault. If _o_f_f_s_e_t is 0, and the positional parameters are used,
+ $$00 is prefixed to the list.
${!!_p_r_e_f_i_x**}
${!!_p_r_e_f_i_x@@}
@@ -1715,109 +1752,121 @@ EEXXPPAANNSSIIOONN
each key expands to a separate word.
${##_p_a_r_a_m_e_t_e_r}
- PPaarraammeetteerr lleennggtthh. The length in characters of the value of
- _p_a_r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value
- substituted is the number of positional parameters. If _p_a_r_a_m_e_-
- _t_e_r is an array name subscripted by ** or @@, the value substi-
- tuted is the number of elements in the array. If _p_a_r_a_m_e_t_e_r is
- an indexed array name subscripted by a negative number, that
- number is interpreted as relative to one greater than the maxi-
- mum index of _p_a_r_a_m_e_t_e_r, so negative indices count back from the
- end of the array, and an index of -1 references the last ele-
- ment.
+ PPaarraammeetteerr lleennggtthh. The length in characters of the value of _p_a_-
+ _r_a_m_e_t_e_r is substituted. If _p_a_r_a_m_e_t_e_r is ** or @@, the value sub-
+ stituted is the number of positional parameters. If _p_a_r_a_m_e_t_e_r
+ is an array name subscripted by ** or @@, the value substituted is
+ the number of elements in the array. If _p_a_r_a_m_e_t_e_r is an indexed
+ array name subscripted by a negative number, that number is in-
+ terpreted as relative to one greater than the maximum index of
+ _p_a_r_a_m_e_t_e_r, so negative indices count back from the end of the
+ array, and an index of -1 references the last element.
${_p_a_r_a_m_e_t_e_r##_w_o_r_d}
${_p_a_r_a_m_e_t_e_r####_w_o_r_d}
RReemmoovvee mmaattcchhiinngg pprreeffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce
a pattern just as in pathname expansion, and matched against the
expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt--
- tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of
- the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the
- expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern
- (the ``##'' case) or the longest matching pattern (the ``####''
- case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal
- operation is applied to each positional parameter in turn, and
- the expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array
- variable subscripted with @@ or **, the pattern removal operation
- is applied to each member of the array in turn, and the expan-
- sion is the resultant list.
+ tteerrnn MMaattcchhiinngg below. If the pattern matches the beginning of
+ the value of _p_a_r_a_m_e_t_e_r, then the result of the expansion is the
+ expanded value of _p_a_r_a_m_e_t_e_r with the shortest matching pattern
+ (the ``##'' case) or the longest matching pattern (the ``####''
+ case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the pattern removal op-
+ eration is applied to each positional parameter in turn, and the
+ expansion is the resultant list. If _p_a_r_a_m_e_t_e_r is an array vari-
+ able subscripted with @@ or **, the pattern removal operation is
+ applied to each member of the array in turn, and the expansion
+ is the resultant list.
${_p_a_r_a_m_e_t_e_r%%_w_o_r_d}
${_p_a_r_a_m_e_t_e_r%%%%_w_o_r_d}
RReemmoovvee mmaattcchhiinngg ssuuffffiixx ppaatttteerrnn. The _w_o_r_d is expanded to produce
a pattern just as in pathname expansion, and matched against the
expanded value of _p_a_r_a_m_e_t_e_r using the rules described under PPaatt--
- tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion
- of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the
- expansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest
- matching pattern (the ``%%'' case) or the longest matching pat-
- tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the
- pattern removal operation is applied to each positional parame-
+ tteerrnn MMaattcchhiinngg below. If the pattern matches a trailing portion
+ of the expanded value of _p_a_r_a_m_e_t_e_r, then the result of the ex-
+ pansion is the expanded value of _p_a_r_a_m_e_t_e_r with the shortest
+ matching pattern (the ``%%'' case) or the longest matching pat-
+ tern (the ``%%%%'' case) deleted. If _p_a_r_a_m_e_t_e_r is @@ or **, the
+ pattern removal operation is applied to each positional parame-
ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_-
- _e_t_e_r is an array variable subscripted with @@ or **, the pattern
- removal operation is applied to each member of the array in
+ _e_t_e_r is an array variable subscripted with @@ or **, the pattern
+ removal operation is applied to each member of the array in
turn, and the expansion is the resultant list.
${_p_a_r_a_m_e_t_e_r//_p_a_t_t_e_r_n//_s_t_r_i_n_g}
PPaatttteerrnn ssuubbssttiittuuttiioonn. The _p_a_t_t_e_r_n is expanded to produce a pat-
- tern just as in pathname expansion, _P_a_r_a_m_e_t_e_r is expanded and
- the longest match of _p_a_t_t_e_r_n against its value is replaced with
- _s_t_r_i_n_g. The match is performed using the rules described under
- PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches
- of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first
- match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at
- the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n
+ tern just as in pathname expansion, _P_a_r_a_m_e_t_e_r is expanded and
+ the longest match of _p_a_t_t_e_r_n against its value is replaced with
+ _s_t_r_i_n_g. The match is performed using the rules described under
+ PPaatttteerrnn MMaattcchhiinngg below. If _p_a_t_t_e_r_n begins with //, all matches
+ of _p_a_t_t_e_r_n are replaced with _s_t_r_i_n_g. Normally only the first
+ match is replaced. If _p_a_t_t_e_r_n begins with ##, it must match at
+ the beginning of the expanded value of _p_a_r_a_m_e_t_e_r. If _p_a_t_t_e_r_n
begins with %%, it must match at the end of the expanded value of
- _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted
- and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh
- shell option is enabled, the match is performed without regard
- to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **,
+ _p_a_r_a_m_e_t_e_r. If _s_t_r_i_n_g is null, matches of _p_a_t_t_e_r_n are deleted
+ and the // following _p_a_t_t_e_r_n may be omitted. If the nnooccaasseemmaattcchh
+ shell option is enabled, the match is performed without regard
+ to the case of alphabetic characters. If _p_a_r_a_m_e_t_e_r is @@ or **,
the substitution operation is applied to each positional parame-
ter in turn, and the expansion is the resultant list. If _p_a_r_a_m_-
_e_t_e_r is an array variable subscripted with @@ or **, the substitu-
- tion operation is applied to each member of the array in turn,
+ tion operation is applied to each member of the array in turn,
and the expansion is the resultant list.
${_p_a_r_a_m_e_t_e_r^^_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r^^^^_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r,,_p_a_t_t_e_r_n}
${_p_a_r_a_m_e_t_e_r,,,,_p_a_t_t_e_r_n}
- CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha-
- betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro-
+ CCaassee mmooddiiffiiccaattiioonn. This expansion modifies the case of alpha-
+ betic characters in _p_a_r_a_m_e_t_e_r. The _p_a_t_t_e_r_n is expanded to pro-
duce a pattern just as in pathname expansion. Each character in
- the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and,
- if it matches the pattern, its case is converted. The pattern
- should not attempt to match more than one character. The ^^
- operator converts lowercase letters matching _p_a_t_t_e_r_n to upper-
- case; the ,, operator converts matching uppercase letters to low-
- ercase. The ^^^^ and ,,,, expansions convert each matched character
- in the expanded value; the ^^ and ,, expansions match and convert
- only the first character in the expanded value. If _p_a_t_t_e_r_n is
- omitted, it is treated like a ??, which matches every character.
- If _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is
- applied to each positional parameter in turn, and the expansion
- is the resultant list. If _p_a_r_a_m_e_t_e_r is an array variable sub-
- scripted with @@ or **, the case modification operation is applied
- to each member of the array in turn, and the expansion is the
- resultant list.
+ the expanded value of _p_a_r_a_m_e_t_e_r is tested against _p_a_t_t_e_r_n, and,
+ if it matches the pattern, its case is converted. The pattern
+ should not attempt to match more than one character. The ^^ op-
+ erator converts lowercase letters matching _p_a_t_t_e_r_n to uppercase;
+ the ,, operator converts matching uppercase letters to lowercase.
+ The ^^^^ and ,,,, expansions convert each matched character in the
+ expanded value; the ^^ and ,, expansions match and convert only
+ the first character in the expanded value. If _p_a_t_t_e_r_n is omit-
+ ted, it is treated like a ??, which matches every character. If
+ _p_a_r_a_m_e_t_e_r is @@ or **, the case modification operation is applied
+ to each positional parameter in turn, and the expansion is the
+ resultant list. If _p_a_r_a_m_e_t_e_r is an array variable subscripted
+ with @@ or **, the case modification operation is applied to each
+ member of the array in turn, and the expansion is the resultant
+ list.
${_p_a_r_a_m_e_t_e_r@@_o_p_e_r_a_t_o_r}
PPaarraammeetteerr ttrraannssffoorrmmaattiioonn. The expansion is either a transforma-
- tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r
- itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a
+ tion of the value of _p_a_r_a_m_e_t_e_r or information about _p_a_r_a_m_e_t_e_r
+ itself, depending on the value of _o_p_e_r_a_t_o_r. Each _o_p_e_r_a_t_o_r is a
single letter:
- QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ UU The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with lowercase alphabetic characters converted to upper-
+ case.
+ uu The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with the first character converted to uppercase, if it is
+ alphabetic.
+ LL The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with uppercase alphabetic characters converted to lower-
+ case.
+ QQ The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
quoted in a format that can be reused as input.
- EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
- with backslash escape sequences expanded as with the
+ EE The expansion is a string that is the value of _p_a_r_a_m_e_t_e_r
+ with backslash escape sequences expanded as with the
$$''......'' quoting mechanism.
PP The expansion is a string that is the result of expanding
the value of _p_a_r_a_m_e_t_e_r as if it were a prompt string (see
PPRROOMMPPTTIINNGG below).
- AA The expansion is a string in the form of an assignment
- statement or ddeeccllaarree command that, if evaluated, will
+ AA The expansion is a string in the form of an assignment
+ statement or ddeeccllaarree command that, if evaluated, will
recreate _p_a_r_a_m_e_t_e_r with its attributes and value.
+ KK Produces a possibly-quoted version of the value of _p_a_r_a_m_-
+ _e_t_e_r, except that it prints the values of indexed and as-
+ sociative arrays as a sequence of quoted key-value pairs
+ (see AArrrraayyss above).
aa The expansion is a string consisting of flag values rep-
resenting _p_a_r_a_m_e_t_e_r's attributes.
@@ -1865,8 +1914,8 @@ EEXXPPAANNSSIIOONN
$$((((_e_x_p_r_e_s_s_i_o_n))))
The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a
- double quote inside the parentheses is not treated specially. All
- tokens in the expression undergo parameter and variable expansion, com-
+ double quote inside the parentheses is not treated specially. All to-
+ kens in the expression undergo parameter and variable expansion, com-
mand substitution, and quote removal. The result is treated as the
arithmetic expression to be evaluated. Arithmetic expansions may be
nested.
@@ -1913,37 +1962,37 @@ EEXXPPAANNSSIIOONN
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.
+ ter with no value is expanded within double quotes, a null argument re-
+ sults and is retained and passed to a command as an empty string. When
+ a quoted null argument appears as part of a word whose expansion is
+ non-null, the null argument is removed. That is, the word -d'' becomes
+ -d after word splitting and null argument removal.
Note that if no expansion occurs, no splitting is performed.
PPaatthhnnaammee EExxppaannssiioonn
After word splitting, unless the --ff option has been set, bbaasshh scans
each word for the characters **, ??, and [[. If one of these characters
- appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an
- alphabetically sorted list of filenames matching the pattern (see PPaatt--
- tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the
- shell option nnuullllgglloobb is not enabled, the word is left unchanged. If
- the nnuullllgglloobb option is set, and no matches are found, the word is
- removed. If the ffaaiillgglloobb shell option is set, and no matches are
- found, an error message is printed and the command is not executed. If
- the shell option nnooccaasseegglloobb is enabled, the match is performed without
- regard to the case of alphabetic characters. When a pattern is used
- for pathname expansion, the character ````..'''' at the start of a name or
- immediately following a slash must be matched explicitly, unless the
- shell option ddoottgglloobb is set. The filenames ````..'''' and ````....'''' must
- always be matched explicitly, even if ddoottgglloobb is set. In other cases,
- the ````..'''' character is not treated specially. When matching a path-
- name, the slash character must always be matched explicitly by a slash
- in the pattern, but in other matching contexts it can be matched by a
- special pattern character as described below under PPaatttteerrnn MMaattcchhiinngg.
- See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a
- description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and ddoottgglloobb shell
- options.
+ appears, and is not quoted, then the word is regarded as a _p_a_t_t_e_r_n, and
+ replaced with an alphabetically sorted list of filenames matching the
+ pattern (see PPaatttteerrnn MMaattcchhiinngg below). If no matching filenames are
+ found, and the shell option nnuullllgglloobb is not enabled, the word is left
+ unchanged. If the nnuullllgglloobb option is set, and no matches are found,
+ the word is removed. If the ffaaiillgglloobb shell option is set, and no
+ matches are found, an error message is printed and the command is not
+ executed. If the shell option nnooccaasseegglloobb is enabled, the match is per-
+ formed without regard to the case of alphabetic characters. When a
+ pattern is used for pathname expansion, the character ````..'''' at the
+ start of a name or immediately following a slash must be matched ex-
+ plicitly, unless the shell option ddoottgglloobb is set. The filenames ````..''''
+ and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set.
+ In other cases, the ````..'''' character is not treated specially. When
+ matching a pathname, the slash character must always be matched explic-
+ itly by a slash in the pattern, but in other matching contexts it can
+ be matched by a special pattern character as described below under PPaatt--
+ tteerrnn MMaattcchhiinngg. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN
+ CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullllgglloobb, ffaaiillgglloobb, and
+ ddoottgglloobb shell options.
The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file
names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching file
@@ -1972,22 +2021,22 @@ EEXXPPAANNSSIIOONN
** 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
+ single pattern will match all files and zero or more di-
+ rectories and subdirectories. If followed by a //, two
adjacent **s will match only directories and subdirecto-
ries.
?? Matches any single character.
[[......]] Matches any one of the enclosed characters. A pair of
characters separated by a hyphen denotes a _r_a_n_g_e _e_x_p_r_e_s_-
_s_i_o_n; any character that falls between those two charac-
- ters, inclusive, using the current locale's collating
- sequence and character set, is matched. If the first
- character following the [[ is a !! or a ^^ then any charac-
- ter not enclosed is matched. The sorting order of char-
- acters in range expressions is determined by the current
- locale and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell
- variables, if set. To obtain the traditional interpreta-
- tion of range expressions, where [[aa--dd]] is equivalent to
+ ters, inclusive, using the current locale's collating se-
+ quence and character set, is matched. If the first char-
+ acter following the [[ is a !! or a ^^ then any character
+ not enclosed is matched. The sorting order of characters
+ in range expressions is determined by the current locale
+ and the values of the LLCC__CCOOLLLLAATTEE or LLCC__AALLLL shell vari-
+ ables, if set. To obtain the traditional interpretation
+ of range expressions, where [[aa--dd]] is equivalent to
[[aabbccdd]], set value of the LLCC__AALLLL shell variable to CC, or
enable the gglloobbaasscciiiirraannggeess shell option. A -- may be
matched by including it as the first or last character in
@@ -2003,10 +2052,10 @@ EEXXPPAANNSSIIOONN
class. The wwoorrdd character class matches letters, digits,
and the character _.
- Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified
- using the syntax [[==_c==]], which matches all characters with
- the same collation weight (as defined by the current
- locale) as the character _c.
+ Within [[ and ]], an _e_q_u_i_v_a_l_e_n_c_e _c_l_a_s_s can be specified us-
+ ing the syntax [[==_c==]], which matches all characters with
+ the same collation weight (as defined by the current lo-
+ cale) as the character _c.
Within [[ and ]], the syntax [[.._s_y_m_b_o_l..]] matches the collat-
ing symbol _s_y_m_b_o_l.
@@ -2028,71 +2077,70 @@ EEXXPPAANNSSIIOONN
!!((_p_a_t_t_e_r_n_-_l_i_s_t))
Matches anything except one of the given patterns
- Complicated extended pattern matching against long strings is slow,
- especially when the patterns contain alternations and the strings con-
- tain multiple matches. Using separate matches against shorter strings,
- or using arrays of strings instead of a single long string, may be
- faster.
+ Complicated extended pattern matching against long strings is slow, es-
+ pecially when the patterns contain alternations and the strings contain
+ multiple matches. Using separate matches against shorter strings, or
+ using arrays of strings instead of a single long string, may be faster.
QQuuoottee RReemmoovvaall
After the preceding expansions, all unquoted occurrences of the charac-
- ters \\, '', and "" that did not result from one of the above expansions
+ ters \\, '', and "" that did not result from one of the above expansions
are removed.
RREEDDIIRREECCTTIIOONN
- Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d
- using a special notation interpreted by the shell. Redirection allows
- commands' file handles to be duplicated, opened, closed, made to refer
+ Before a command is executed, its input and output may be _r_e_d_i_r_e_c_t_e_d
+ using a special notation interpreted by the shell. 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
- the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect-
- ion persists beyond the scope of the command, allowing the shell pro-
+ file descriptor greater than or equal to 10 and assign it to _v_a_r_n_a_m_e.
+ If >&- or <&- is preceded by {_v_a_r_n_a_m_e}, the value of _v_a_r_n_a_m_e defines
+ the file descriptor to close. If {_v_a_r_n_a_m_e} is supplied, the redirect-
+ ion persists beyond the scope of the command, allowing the shell pro-
grammer to manage the file descriptor himself.
- 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
+ Note that the order of redirections is significant. For example, the
command
ls >> dirlist 2>>&&1
- directs both standard output and standard error to the file _d_i_r_l_i_s_t,
+ directs both standard output and standard error to the file _d_i_r_l_i_s_t,
while the command
ls 2>>&&1 >> dirlist
- directs only the standard output to file _d_i_r_l_i_s_t, because the standard
- error was duplicated from the standard output before the standard out-
+ directs only the standard output to file _d_i_r_l_i_s_t, because the standard
+ error was duplicated from the standard output before the standard out-
put was redirected to _d_i_r_l_i_s_t.
BBaasshh handles several filenames specially when they are used in redirec-
tions, as described in the following table. 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
+ 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.
@@ -2102,22 +2150,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:
@@ -2125,27 +2173,27 @@ RREEDDIIRREECCTTIIOONN
[_n]<<_w_o_r_d
RReeddiirreeccttiinngg OOuuttppuutt
- Redirection of output causes the file whose name results from the
- expansion of _w_o_r_d to be opened for writing on file descriptor _n, or the
+ Redirection of output causes the file whose name results from the ex-
+ pansion 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 re-
+ sults from the expansion of _w_o_r_d to be opened for appending on file de-
+ scriptor _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:
@@ -2153,12 +2201,12 @@ RREEDDIIRREECCTTIIOONN
[_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
- error:
+ There are two formats for redirecting standard output and standard er-
+ ror:
&&>>_w_o_r_d
and
@@ -2169,13 +2217,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
- DDeessccrriippttoorrss below) for compatibility reasons.
+ 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 DDee--
+ ssccrriippttoorrss 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:
@@ -2189,10 +2237,10 @@ 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 (or file descriptor _n if _n is specified) for a
+ 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:
@@ -2201,18 +2249,18 @@ RREEDDIIRREECCTTIIOONN
_h_e_r_e_-_d_o_c_u_m_e_n_t
_d_e_l_i_m_i_t_e_r
- No parameter and variable expansion, command substitution, arithmetic
- 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 \\<<nneewwlliinnee>> is ignored, and \\ must be used to quote the
- characters \\, $$, and ``.
+ No parameter and variable expansion, command substitution, arithmetic
+ 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 un-
+ quoted, all lines of the here-document are subjected to parameter ex-
+ pansion, command substitution, and arithmetic expansion, the character
+ sequence \\<<nneewwlliinnee>> is ignored, and \\ must be used to quote the charac-
+ ters \\, $$, and ``.
If the redirection operator is <<<<--, then all leading tab characters are
- stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This
- allows here-documents within shell scripts to be indented in a natural
+ stripped from input lines and the line containing _d_e_l_i_m_i_t_e_r. This al-
+ lows here-documents within shell scripts to be indented in a natural
fashion.
HHeerree SSttrriinnggss
@@ -2220,9 +2268,9 @@ RREEDDIIRREECCTTIIOONN
[_n]<<<<<<_w_o_r_d
- The _w_o_r_d undergoes tilde expansion, parameter and variable expansion,
- command substitution, arithmetic expansion, and quote removal. Path-
- name expansion and word splitting are not performed. The result is
+ The _w_o_r_d undergoes tilde expansion, parameter and variable expansion,
+ command substitution, arithmetic expansion, and quote removal. Path-
+ name expansion and word splitting are not performed. The result is
supplied as a single string, with a newline appended, to the command on
its standard input (or file descriptor _n if _n is specified).
@@ -2232,22 +2280,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
- standard input (file descriptor 0) is used.
+ 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 de-
+ scriptor open for input, a redirection error occurs. If _w_o_r_d evaluates
+ 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
@@ -2255,7 +2303,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.
@@ -2263,7 +2311,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
@@ -2271,146 +2319,146 @@ 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, and
- all lines that make up a compound command, before executing any of the
- commands on that line or the compound command. Aliases are expanded
- when a command is read, not when it is executed. Therefore, an alias
- definition appearing on the same line as another command does not take
- effect until the next line of input is read. The commands following
- the alias definition on that line are not affected by the new alias.
- This behavior is also an issue when functions are executed. Aliases
- are expanded when a function definition is read, not when the function
- is executed, because a function definition is itself a command. As a
- consequence, aliases defined in a function are not available until
- after that function is executed. To be safe, always put alias defini-
+ The rules concerning the definition and use of aliases are somewhat
+ confusing. BBaasshh always reads at least one complete line of input, and
+ all lines that make up a compound command, before executing any of the
+ commands on that line or the compound command. Aliases are expanded
+ when a command is read, not when it is executed. Therefore, an alias
+ definition appearing on the same line as another command does not take
+ effect until the next line of input is read. The commands following
+ the alias definition on that line are not affected by the new alias.
+ This behavior is also an issue when functions are executed. Aliases
+ are expanded when a function definition is read, not when the function
+ is executed, because a function definition is itself a command. As a
+ consequence, aliases defined in a function are not available until af-
+ ter that function is executed. To be safe, always put alias defini-
tions on a separate line, and do not use aalliiaass in compound commands.
For almost every purpose, aliases are superseded by shell functions.
FFUUNNCCTTIIOONNSS
- A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
- stores a series of commands for later execution. When the name of a
- shell function is used as a simple command name, the list of commands
+ A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
+ stores a series of commands for later execution. When the name of a
+ shell function is used as a simple command name, the list of commands
associated with that function name is executed. Functions are executed
- in the context of the current shell; no new process is created to
- 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 in-
+ terpret them (contrast this with the execution of a shell script).
+ When a function is executed, the arguments to the function become the
positional parameters during its execution. The special parameter ## is
- updated to reflect the change. Special parameter 00 is unchanged. The
- first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
+ updated to reflect the change. Special parameter 00 is unchanged. The
+ first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
tion while the function is executing.
- All other aspects of the shell execution environment are identical
- 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 be-
+ tween a function and its caller with these exceptions: the DDEEBBUUGG and
+ RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL
+ BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been
+ given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin
+ below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett
+ builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN
+ traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell
option has been enabled.
- Variables local to the function may be declared with the llooccaall builtin
+ Variables local to the function may be declared with the llooccaall builtin
command. Ordinarily, variables and their values are shared between the
- function and its caller. If a variable is declared llooccaall, the vari-
- able's visible scope is restricted to that function and its children
+ function and its caller. If a variable is declared llooccaall, the vari-
+ able's visible scope is restricted to that function and its children
(including the functions it calls). Local variables "shadow" variables
- with the same name declared at previous scopes. For instance, a local
- variable declared in a function hides a global variable of the same
- name: references and assignments refer to the local variable, leaving
- the global variable unmodified. When the function returns, the global
+ with the same name declared at previous scopes. For instance, a local
+ variable declared in a function hides a global variable of the same
+ name: references and assignments refer to the local variable, leaving
+ the global variable unmodified. When the function returns, the global
variable is once again visible.
- The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility
- within functions. With dynamic scoping, visible variables and their
- values are a result of the sequence of function calls that caused exe-
- cution to reach the current function. The value of a variable that a
- function sees depends on its value within its caller, if any, whether
- that caller is the "global" scope or another shell function. This is
- also the value that a local variable declaration "shadows", and the
+ The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility
+ within functions. With dynamic scoping, visible variables and their
+ values are a result of the sequence of function calls that caused exe-
+ cution to reach the current function. The value of a variable that a
+ function sees depends on its value within its caller, if any, whether
+ that caller is the "global" scope or another shell function. This is
+ also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
- For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1,
- and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from
+ For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1,
+ and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from
within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow-
ing any global variable named _v_a_r.
The uunnsseett builtin also acts using the same dynamic scope: if a variable
is local to the current scope, uunnsseett will unset it; otherwise the unset
- will refer to the variable found in any calling scope as described
- above. If a variable at the current local scope is unset, it will
- remain so until it is reset in that scope or until the function
- returns. Once the function returns, any instance of the variable at a
- previous scope will become visible. If the unset acts on a variable at
- a previous scope, any instance of a variable with that name that had
- been shadowed will become visible.
-
- The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0,
- defines a maximum function nesting level. Function invocations that
- exceed the limit cause the entire command to abort.
-
- If the builtin command rreettuurrnn is executed in a function, the function
- completes and execution resumes with the next command after the func-
- tion call. Any command associated with the RREETTUURRNN trap is executed
- before execution resumes. When a function completes, the values of the
- positional parameters and the special parameter ## are restored to the
+ will refer to the variable found in any calling scope as described
+ above. If a variable at the current local scope is unset, it will re-
+ main so until it is reset in that scope or until the function returns.
+ Once the function returns, any instance of the variable at a previous
+ scope will become visible. If the unset acts on a variable at a previ-
+ ous scope, any instance of a variable with that name that had been
+ shadowed will become visible.
+
+ The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, de-
+ fines a maximum function nesting level. Function invocations that ex-
+ ceed 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 be-
+ fore execution resumes. When a function completes, the values of the
+ positional parameters and the special parameter ## are restored to the
values they had prior to the function's execution.
- Function names and definitions may be listed with the --ff option to the
+ 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
+ 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.
Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit
- the depth of the function call stack and restrict the number of func-
- tion invocations. By default, no limit is imposed on the number of
- recursive calls.
+ the depth of the function call stack and restrict the number of func-
+ tion invocations. By default, no limit is imposed on the number of re-
+ cursive calls.
AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN
- The shell allows arithmetic expressions to be evaluated, under certain
- circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com-
+ The shell allows arithmetic expressions to be evaluated, under certain
+ circumstances (see the lleett and ddeeccllaarree builtin commands, the (((( com-
pound command, and AArriitthhmmeettiicc EExxppaannssiioonn). Evaluation is done in fixed-
- width integers with no check for overflow, though division by 0 is
- trapped and flagged as an error. The operators and their precedence,
- associativity, and values are the same as in the C language. The fol-
- lowing list of operators is grouped into levels of equal-precedence
- operators. The levels are listed in order of decreasing precedence.
+ width integers with no check for overflow, though division by 0 is
+ trapped and flagged as an error. The operators and their precedence,
+ associativity, and values are the same as in the C language. The fol-
+ lowing list of operators is grouped into levels of equal-precedence op-
+ erators. The levels are listed in order of decreasing precedence.
_i_d++++ _i_d----
variable post-increment and post-decrement
@@ -2437,53 +2485,55 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN
_e_x_p_r_1 ,, _e_x_p_r_2
comma
- Shell variables are allowed as operands; parameter expansion is per-
+ Shell variables are allowed as operands; parameter expansion is per-
formed before the expression is evaluated. Within an expression, shell
- variables may also be referenced by name without using the parameter
- expansion syntax. A shell variable that is null or unset evaluates to
+ variables may also be referenced by name without using the parameter
+ expansion syntax. A shell variable that is null or unset evaluates to
0 when referenced by name without using the parameter expansion syntax.
- The value of a variable is evaluated as an arithmetic expression when
- it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r
+ The value of a variable is evaluated as an arithmetic expression when
+ it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r
attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates
- to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on
+ to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on
to be used in an expression.
- Constants with a leading 0 are interpreted as octal numbers. A leading
- 0x or 0X denotes hexadecimal. Otherwise, numbers take the form
- [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64
- representing the arithmetic base, and _n is a number in that base. If
- _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits
- greater than 9 are represented by the lowercase letters, the uppercase
- letters, @, and _, in that order. If _b_a_s_e is less than or equal to 36,
- lowercase and uppercase letters may be used interchangeably to repre-
- sent numbers between 10 and 35.
-
- Operators are evaluated in order of precedence. Sub-expressions in
- parentheses are evaluated first and may override the precedence rules
+ Integer constants follow the C language definition, without suffixes or
+ character constants. Constants with a leading 0 are interpreted as oc-
+ tal numbers. A leading 0x or 0X denotes hexadecimal. Otherwise, num-
+ bers take the form [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal num-
+ ber between 2 and 64 representing the arithmetic base, and _n is a num-
+ ber in that base. If _b_a_s_e_# is omitted, then base 10 is used. When
+ specifying _n, if a non-digit is required, the digits greater than 9 are
+ represented by the lowercase letters, the uppercase letters, @, and _,
+ in that order. If _b_a_s_e is less than or equal to 36, lowercase and up-
+ percase letters may be used interchangeably to represent numbers be-
+ tween 10 and 35.
+
+ Operators are evaluated in order of precedence. Sub-expressions in
+ parentheses are evaluated first and may override the precedence rules
above.
CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
- Conditional expressions are used by the [[[[ compound command and the
- tteesstt and [[ builtin commands to test file attributes and perform string
- and arithmetic comparisons. The tteesstt abd [[ commands determine their
- behavior based on the number of arguments; see the descriptions of
+ Conditional expressions are used by the [[[[ compound command and the
+ tteesstt and [[ builtin commands to test file attributes and perform string
+ and arithmetic comparisons. The tteesstt and [[ commands determine their
+ behavior based on the number of arguments; see the descriptions of
those commands for any other command-specific actions.
- Expressions are formed from the following unary or binary primaries.
- BBaasshh handles several filenames specially when they are used in expres-
+ Expressions are formed from the following unary or binary primaries.
+ BBaasshh handles several filenames specially when they are used in expres-
sions. If the operating system on which bbaasshh is running provides these
- special files, bash will use them; otherwise it will emulate them
- internally with this behavior: If any _f_i_l_e argument to one of the pri-
+ special files, bash will use them; otherwise it will emulate them in-
+ ternally with this behavior: If any _f_i_l_e argument to one of the pri-
maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If
- the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n,
- _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively,
+ the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n,
+ _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively,
is checked.
Unless otherwise specified, primaries that operate on files follow sym-
bolic links and operate on the target of the link, rather than the link
itself.
- When used with [[[[, the << and >> operators sort lexicographically using
+ When used with [[[[, the << and >> operators sort lexicographically using
the current locale. The tteesstt command sorts using ASCII ordering.
--aa _f_i_l_e
@@ -2522,30 +2572,30 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
--LL _f_i_l_e
True if _f_i_l_e exists and is a symbolic link.
--NN _f_i_l_e
- True if _f_i_l_e exists and has been modified since it was last
+ True if _f_i_l_e exists and has been modified since it was last
read.
--OO _f_i_l_e
True if _f_i_l_e exists and is owned by the effective user id.
--SS _f_i_l_e
True if _f_i_l_e exists and is a socket.
_f_i_l_e_1 --eeff _f_i_l_e_2
- True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num-
+ True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num-
bers.
_f_i_l_e_1 -nntt _f_i_l_e_2
- True if _f_i_l_e_1 is newer (according to modification date) than
+ True if _f_i_l_e_1 is newer (according to modification date) than
_f_i_l_e_2, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not.
_f_i_l_e_1 -oott _f_i_l_e_2
- True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1
+ True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1
does not.
--oo _o_p_t_n_a_m_e
- True if the shell option _o_p_t_n_a_m_e is enabled. See the list of
- options under the description of the --oo option to the sseett
+ True if the shell option _o_p_t_n_a_m_e is enabled. See the list of
+ options under the description of the --oo option to the sseett
builtin below.
--vv _v_a_r_n_a_m_e
- True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a
+ True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a
value).
--RR _v_a_r_n_a_m_e
- True if the shell variable _v_a_r_n_a_m_e is set and is a name refer-
+ True if the shell variable _v_a_r_n_a_m_e is set and is a name refer-
ence.
--zz _s_t_r_i_n_g
True if the length of _s_t_r_i_n_g is zero.
@@ -2555,8 +2605,8 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
_s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2
_s_t_r_i_n_g_1 == _s_t_r_i_n_g_2
- True if the strings are equal. == should be used with the tteesstt
- command for POSIX conformance. When used with the [[[[ command,
+ True if the strings are equal. == should be used with the tteesstt
+ command for POSIX conformance. When used with the [[[[ command,
this performs pattern matching as described above (CCoommppoouunndd CCoomm--
mmaannddss).
@@ -2570,17 +2620,18 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically.
_a_r_g_1 OOPP _a_r_g_2
- OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic
- binary operators return true if _a_r_g_1 is equal to, not equal to,
- less than, less than or equal to, greater than, or greater than
- or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive
- or negative integers. When used with the [[[[ command, _A_r_g_1 and
- _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC
+ OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic
+ binary operators return true if _a_r_g_1 is equal to, not equal to,
+ less than, less than or equal to, greater than, or greater than
+ or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive
+ or negative integers. When used with the [[[[ command, _A_r_g_1 and
+ _A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC
EEVVAALLUUAATTIIOONN above).
SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN
- When a simple command is executed, the shell performs the following
- expansions, assignments, and redirections, from left to right.
+ When a simple command is executed, the shell performs the following ex-
+ pansions, assignments, and redirections, from left to right, in the
+ following order.
1. The words that the parser has marked as variable assignments
(those preceding the command name) and redirections are saved
@@ -2605,8 +2656,8 @@ SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN
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 af-
+ fect the current shell environment. A redirection error causes the
command to exit with a non-zero status.
If there is a command name left after expansion, execution proceeds as
@@ -2629,8 +2680,8 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN
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
+ taining an executable file by that name. BBaasshh uses a hash table to re-
+ member the full pathnames of executable files (see hhaasshh under SSHHEELLLL
BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is
performed only if the command is not found in the hash table. If the
search is unsuccessful, the shell searches for a defined shell function
@@ -2651,8 +2702,8 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN
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.
+ the locations of commands remembered by the parent (see hhaasshh below un-
+ der 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
@@ -2717,8 +2768,8 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN
Command substitution, commands grouped with parentheses, and asynchro-
nous commands are invoked in a subshell environment that is a duplicate
- of the shell environment, except that traps caught by the shell are
- reset to the values that the shell inherited from its parent at invoca-
+ of the shell environment, except that traps caught by the shell are re-
+ set 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.
@@ -2727,24 +2778,24 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN
the --ee option from the parent shell. When not in _p_o_s_i_x _m_o_d_e, bbaasshh
clears the --ee option in such subshells.
- If a command is followed by a && and job control is not active, the
- default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l.
- Otherwise, the invoked command inherits the file descriptors of the
- calling shell as modified by redirections.
+ If a command is followed by a && and job control is not active, the de-
+ fault standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. Oth-
+ erwise, the invoked command inherits the file descriptors of the call-
+ ing shell as modified by redirections.
EENNVVIIRROONNMMEENNTT
When a program is invoked it is given an array of strings called the
_e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form
_n_a_m_e=_v_a_l_u_e.
- The shell provides several ways to manipulate the environment. On
- invocation, the shell scans its own environment and creates a parameter
+ The shell provides several ways to manipulate the environment. On in-
+ vocation, 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
+ cesses. Executed commands inherit the environment. The eexxppoorrtt and ddee--
+ ccllaarree --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
+ ronment is modified, the new value becomes part of the environment, re-
+ placing 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.
@@ -2775,8 +2826,8 @@ EEXXIITT SSTTAATTUUSS
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 re-
+ turns 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,
@@ -2784,23 +2835,23 @@ EEXXIITT SSTTAATTUUSS
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.
+ return an exit status of 2 to indicate incorrect usage, generally in-
+ valid options or missing arguments.
- BBaasshh itself returns the exit status of the last command executed,
- unless a syntax error occurs, in which case it exits with a non-zero
+ BBaasshh itself returns the exit status of the last command executed, un-
+ less a syntax error occurs, in which case it exits with a non-zero
value. See also the eexxiitt builtin command below.
SSIIGGNNAALLSS
When bbaasshh is interactive, in the absence of any traps, it ignores
SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT
is caught and handled (so that the wwaaiitt builtin is interruptible). In
- all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh
- ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP.
+ all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ig-
+ nores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP.
Non-builtin commands run by bbaasshh have signal handlers set to the values
- inherited by the shell from its parent. When job control is not in
- effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to
+ inherited by the shell from its parent. When job control is not in ef-
+ fect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to
these inherited handlers. Commands run as a result of command substi-
tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT--
TTOOUU, and SSIIGGTTSSTTPP.
@@ -2810,8 +2861,8 @@ SSIIGGNNAALLSS
stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the
SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular
job, it should be removed from the jobs table with the ddiissoowwnn builtin
- (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP
- using ddiissoowwnn --hh.
+ (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP us-
+ ing ddiissoowwnn --hh.
If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a
SSIIGGHHUUPP to all jobs when an interactive login shell exits.
@@ -2824,10 +2875,10 @@ SSIIGGNNAALLSS
tus greater than 128, immediately after which the trap is executed.
JJOOBB CCOONNTTRROOLL
- _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the
- execution of processes and continue (_r_e_s_u_m_e) their execution at a later
- point. A user typically employs this facility via an interactive
- interface supplied jointly by the operating system kernel's terminal
+ _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the ex-
+ ecution of processes and continue (_r_e_s_u_m_e) their execution at a later
+ point. A user typically employs this facility via an interactive in-
+ terface supplied jointly by the operating system kernel's terminal
driver and bbaasshh.
The shell associates a _j_o_b with each pipeline. It keeps a table of
@@ -2861,8 +2912,8 @@ JJOOBB CCOONNTTRROOLL
ically ^^ZZ, Control-Z) while a process is running causes that process to
be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d
character (typically ^^YY, Control-Y) causes the process to be stopped
- when it attempts to read input from the terminal, and control to be
- returned to bbaasshh. The user may then manipulate the state of this job,
+ when it attempts to read input from the terminal, and control to be re-
+ turned to bbaasshh. The user may then manipulate the state of this job,
using the bbgg command to continue it in the background, the ffgg command
to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ
takes effect immediately, and has the additional side effect of causing
@@ -2872,18 +2923,18 @@ JJOOBB CCOONNTTRROOLL
ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be
referred to as %%nn. A job may also be referred to using a prefix of the
name used to start it, or using a substring that appears in its command
- line. For example, %%ccee refers to a stopped ccee job. If a prefix
- matches more than one job, bbaasshh reports an error. Using %%??ccee, on the
- other hand, refers to any job containing the string ccee in its command
- line. If the substring matches more than one job, bbaasshh reports an
- error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_-
- _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground
- or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using
- %%--. If there is only a single job, %%++ and %%-- can both be used to refer
- to that job. In output pertaining to jobs (e.g., the output of the
- jjoobbss command), the current job is always flagged with a ++, and the pre-
- vious job with a --. A single % (with no accompanying job specifica-
- tion) also refers to the current job.
+ line. For example, %%ccee refers to a stopped job whose command name be-
+ gins with ccee. If a prefix matches more than one job, bbaasshh reports an
+ error. Using %%??ccee, on the other hand, refers to any job containing the
+ string ccee in its command line. If the substring matches more than one
+ job, bbaasshh reports an error. The symbols %%%% and %%++ refer to the shell's
+ notion of the _c_u_r_r_e_n_t _j_o_b, which is the last job stopped while it was
+ in the foreground or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may
+ be referenced using %%--. If there is only a single job, %%++ and %%-- can
+ both be used to refer to that job. In output pertaining to jobs (e.g.,
+ the output of the jjoobbss command), the current job is always flagged with
+ a ++, and the previous job with a --. A single % (with no accompanying
+ job specification) also refers to the current job.
Simply naming a job can be used to bring it into the foreground: %%11 is
a synonym for ````ffgg %%11'''', bringing job 1 from the background into the
@@ -2894,8 +2945,8 @@ JJOOBB CCOONNTTRROOLL
bbaasshh waits until it is about to print a prompt before reporting changes
in a job's status so as to not interrupt any other output. If the --bb
option to the sseett builtin command is enabled, bbaasshh reports such changes
- immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that
- exits.
+ immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that ex-
+ its.
If an attempt to exit bbaasshh is made while jobs are stopped (or, if the
cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run-
@@ -2907,25 +2958,25 @@ JJOOBB CCOONNTTRROOLL
When the shell is waiting for a job or process using the wwaaiitt builtin,
and job control is enabled, wwaaiitt will return when the job changes
- state. The --ff option will force wwaaiitt to wait until the job or process
- terminates before returning.
+ state. The --ff option causes wwaaiitt to wait until the job or process ter-
+ minates before returning.
PPRROOMMPPTTIINNGG
When executing interactively, bbaasshh displays the primary prompt PPSS11 when
it is ready to read a command, and the secondary prompt PPSS22 when it
needs more input to complete a command. BBaasshh displays PPSS00 after it
- reads a command but before executing it. BBaasshh displays PPSS44 as
- described above before tracing each command when the --xx option is
- enabled. BBaasshh allows these prompt strings to be customized by insert-
- ing a number of backslash-escaped special characters that are decoded
- as follows:
+ reads a command but before executing it. BBaasshh displays PPSS44 as de-
+ scribed above before tracing each command when the --xx option is en-
+ abled. BBaasshh allows these prompt strings to be customized by inserting
+ a number of backslash-escaped special characters that are decoded as
+ follows:
\\aa an ASCII bell character (07)
\\dd the date in "Weekday Month Date" format (e.g., "Tue May
26")
\\DD{{_f_o_r_m_a_t}}
- the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is
- inserted into the prompt string; an empty _f_o_r_m_a_t results
- in a locale-specific time representation. The braces are
+ the _f_o_r_m_a_t is passed to _s_t_r_f_t_i_m_e(3) and the result is in-
+ serted into the prompt string; an empty _f_o_r_m_a_t results in
+ a locale-specific time representation. The braces are
required
\\ee an ASCII escape character (033)
\\hh the hostname up to the first `.'
@@ -2960,13 +3011,15 @@ PPRROOMMPPTTIINNGG
The command number and the history number are usually different: the
history number of a command is its position in the history list, which
- may include commands restored from the history file (see HHIISSTTOORRYY
- below), while the command number is the position in the sequence of
- commands executed during the current shell session. After the string
- is decoded, it is expanded via parameter expansion, command substitu-
- tion, arithmetic expansion, and quote removal, subject to the value of
- the pprroommppttvvaarrss shell option (see the description of the sshhoopptt command
- under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
+ may include commands restored from the history file (see HHIISSTTOORRYY be-
+ low), while the command number is the position in the sequence of com-
+ mands executed during the current shell session. After the string is
+ decoded, it is expanded via parameter expansion, command substitution,
+ arithmetic expansion, and quote removal, subject to the value of the
+ pprroommppttvvaarrss shell option (see the description of the sshhoopptt command under
+ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). This can have unwanted side effects if
+ escaped portions of the string appear within command substitution or
+ contain characters special to word expansion.
RREEAADDLLIINNEE
This is the library that handles reading input when using an interac-
@@ -3004,13 +3057,15 @@ RREEAADDLLIINNEE
RReeaaddlliinnee IInniittiiaalliizzaattiioonn
Readline is customized by putting commands in an initialization file
(the _i_n_p_u_t_r_c file). The name of this file is taken from the value of
- the IINNPPUUTTRRCC variable. If that variable is unset, the default is
- _~_/_._i_n_p_u_t_r_c. When a program which uses the readline library starts up,
- the initialization file is read, and the key bindings and variables are
- set. There are only a few basic constructs allowed in the readline
- initialization file. Blank lines are ignored. Lines beginning with a
- ## are comments. Lines beginning with a $$ indicate conditional con-
- structs. Other lines denote key bindings and variable settings.
+ the IINNPPUUTTRRCC variable. If that variable is unset, the default is _~_/_._i_n_-
+ _p_u_t_r_c. If that file does not exist or cannot be read, the ultimate
+ default is _/_e_t_c_/_i_n_p_u_t_r_c. When a program which uses the readline li-
+ brary starts up, the initialization file is read, and the key bindings
+ and variables are set. There are only a few basic constructs allowed
+ in the readline initialization file. Blank lines are ignored. Lines
+ beginning with a ## are comments. Lines beginning with a $$ indicate
+ conditional constructs. Other lines denote key bindings and variable
+ settings.
The default key-bindings may be changed with an _i_n_p_u_t_r_c file. Other
programs that use this library may add their own commands and bindings.
@@ -3102,6 +3157,7 @@ RREEAADDLLIINNEE
form
sseett _v_a_r_i_a_b_l_e_-_n_a_m_e _v_a_l_u_e
+ or using the bbiinndd builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
Except where noted, readline variables can take the values OOnn or OOffff
(without regard to case). Unrecognized variable names are ignored.
@@ -3159,9 +3215,9 @@ RREEAADDLLIINNEE
ber of possible completions generated by the ppoossssiibbllee--ccoommppllee--
ttiioonnss command. It may be set to any integer value greater than
or equal to zero. If the number of possible completions is
- greater than or equal to the value of this variable, the user is
- asked whether or not he wishes to view them; otherwise they are
- simply listed on the terminal.
+ greater than or equal to the value of this variable, readline
+ will ask whether or not the user wishes to view them; otherwise
+ they are simply listed on the terminal.
ccoonnvveerrtt--mmeettaa ((OOnn))
If set to OOnn, readline will convert characters with the eighth
bit set to an ASCII key sequence by stripping the eighth bit and
@@ -3189,7 +3245,7 @@ RREEAADDLLIINNEE
escapes to begin and end sequences of non-printing characters,
which can be used to embed a terminal control sequence into the
mode string.
- eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOffff))
+ eennaabbllee--bbrraacckkeetteedd--ppaassttee ((OOnn))
When set to OOnn, readline will configure the terminal in a way
that will enable it to insert each paste into the editing buffer
as a single string of characters, instead of treating each char-
@@ -3198,15 +3254,15 @@ RREEAADDLLIINNEE
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
- arrow keys.
+ pad when it is called. Some systems need this to enable the ar-
+ row keys.
eennaabbllee--mmeettaa--kkeeyy ((OOnn))
When set to OOnn, readline will try to enable any meta modifier
key the terminal claims to support when it is called. On many
terminals, the meta key is used to send eight-bit characters.
eexxppaanndd--ttiillddee ((OOffff))
- If set to OOnn, tilde expansion is performed when readline
- attempts word completion.
+ If set to OOnn, tilde expansion is performed when readline at-
+ tempts 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--
@@ -3224,165 +3280,166 @@ RREEAADDLLIINNEE
When set to OOnn, makes readline use a single line for display,
scrolling the input horizontally on a single screen line when it
becomes longer than the screen width rather than wrapping to a
- new line.
+ new line. This setting is automatically enabled for terminals
+ of height 1.
iinnppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will enable eight-bit input (that is, it
- 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. The default is _O_f_f,
- but readline will set it to _O_n if the locale contains eight-bit
+ If set to OOnn, readline will enable eight-bit input (that is, it
+ will not strip the eighth bit from the characters it reads), re-
+ gardless of what the terminal claims it can support. The name
+ mmeettaa--ffllaagg is a synonym for this variable. The default is _O_f_f,
+ but readline will set it to _O_n if the locale contains eight-bit
characters.
iisseeaarrcchh--tteerrmmiinnaattoorrss ((````CC--[[CC--JJ''''))
- The string of characters that should terminate an incremental
- search without subsequently executing the character as a com-
- mand. If this variable has not been given a value, the charac-
+ The string of characters that should terminate an incremental
+ search without subsequently executing the character as a com-
+ mand. If this variable has not been given a value, the charac-
ters _E_S_C and _C_-_J will terminate an incremental search.
kkeeyymmaapp ((eemmaaccss))
- Set the current readline keymap. The set of valid keymap names
- is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_-
- _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is
- equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
+ Set the current readline keymap. The set of valid keymap names
+ is _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_d_a_r_d_, _e_m_a_c_s_-_m_e_t_a_, _e_m_a_c_s_-_c_t_l_x_, _v_i_, _v_i_-_c_o_m_-
+ _m_a_n_d, and _v_i_-_i_n_s_e_r_t. _v_i is equivalent to _v_i_-_c_o_m_m_a_n_d; _e_m_a_c_s is
+ equivalent to _e_m_a_c_s_-_s_t_a_n_d_a_r_d. The default value is _e_m_a_c_s; the
value of eeddiittiinngg--mmooddee also affects the default keymap.
kkeeyysseeqq--ttiimmeeoouutt ((550000))
- Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when
- reading an ambiguous key sequence (one that can form a complete
+ Specifies the duration _r_e_a_d_l_i_n_e will wait for a character when
+ reading an ambiguous key sequence (one that can form a complete
key sequence using the input read so far, or can take additional
- input to complete a longer key sequence). If no input is
- received within the timeout, _r_e_a_d_l_i_n_e will use the shorter but
- complete key sequence. The value is specified in milliseconds,
- so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for
- additional input. If this variable is set to a value less than
- or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait
- until another key is pressed to decide which key sequence to
+ input to complete a longer key sequence). If no input is re-
+ ceived within the timeout, _r_e_a_d_l_i_n_e will use the shorter but
+ complete key sequence. The value is specified in milliseconds,
+ so a value of 1000 means that _r_e_a_d_l_i_n_e will wait one second for
+ additional input. If this variable is set to a value less than
+ or equal to zero, or to a non-numeric value, _r_e_a_d_l_i_n_e will wait
+ until another key is pressed to decide which key sequence to
complete.
mmaarrkk--ddiirreeccttoorriieess ((OOnn))
If set to OOnn, completed directory names have a slash appended.
mmaarrkk--mmooddiiffiieedd--lliinneess ((OOffff))
- If set to OOnn, history lines that have been modified are dis-
+ If set to OOnn, history lines that have been modified are dis-
played with a preceding asterisk (**).
mmaarrkk--ssyymmlliinnkkeedd--ddiirreeccttoorriieess ((OOffff))
If set to OOnn, completed names which are symbolic links to direc-
- tories have a slash appended (subject to the value of
- mmaarrkk--ddiirreeccttoorriieess).
+ tories have a slash appended (subject to the value of mmaarrkk--ddii--
+ rreeccttoorriieess).
mmaattcchh--hhiiddddeenn--ffiilleess ((OOnn))
- This variable, when set to OOnn, causes readline to match files
- whose names begin with a `.' (hidden files) when performing
- filename completion. If set to OOffff, the leading `.' must be
+ This variable, when set to OOnn, causes readline to match files
+ whose names begin with a `.' (hidden files) when performing
+ filename completion. If set to OOffff, the leading `.' must be
supplied by the user in the filename to be completed.
mmeennuu--ccoommpplleettee--ddiissppllaayy--pprreeffiixx ((OOffff))
- If set to OOnn, menu completion displays the common prefix of the
+ If set to OOnn, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling
through the list.
oouuttppuutt--mmeettaa ((OOffff))
- If set to OOnn, readline will display characters with the eighth
+ If set to OOnn, readline will display characters with the eighth
bit set directly rather than as a meta-prefixed escape sequence.
The default is _O_f_f, but readline will set it to _O_n if the locale
contains eight-bit characters.
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
- instead of ringing the bell.
+ which have more than one possible completion without any possi-
+ ble partial completion (the possible completions don't share a
+ common prefix) cause the matches to be listed immediately in-
+ stead of ringing the bell.
sshhooww--mmooddee--iinn--pprroommpptt ((OOffff))
- If set to OOnn, add a string to the beginning of the prompt indi-
- cating the editing mode: emacs, vi command, or vi insertion.
+ If set to OOnn, add a string to the beginning of the prompt indi-
+ cating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., _e_m_a_c_s_-_m_o_d_e_-_s_t_r_i_n_g).
sskkiipp--ccoommpplleetteedd--tteexxtt ((OOffff))
- If set to OOnn, this alters the default completion behavior when
- inserting a single match into the line. It's only active when
- performing completion in the middle of a word. If enabled,
- readline does not insert characters from the completion that
- match characters after point in the word being completed, so
+ If set to OOnn, this alters the default completion behavior when
+ inserting a single match into the line. It's only active when
+ performing completion in the middle of a word. If enabled,
+ readline does not insert characters from the completion that
+ match characters after point in the word being completed, so
portions of the word following the cursor are not duplicated.
vvii--ccmmdd--mmooddee--ssttrriinngg ((((ccmmdd))))
- If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
displayed immediately before the last line of the primary prompt
- when vi editing mode is active and in command mode. The value
+ when vi editing mode is active and in command mode. The value
is expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the \1 and \2 escapes to begin and end sequences of non-
- printing characters, which can be used to embed a terminal con-
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
trol sequence into the mode string.
vvii--iinnss--mmooddee--ssttrriinngg ((((iinnss))))
- If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
+ If the _s_h_o_w_-_m_o_d_e_-_i_n_-_p_r_o_m_p_t variable is enabled, this string is
displayed immediately before the last line of the primary prompt
when vi editing mode is active and in insertion mode. The value
is expanded like a key binding, so the standard set of meta- and
- control prefixes and backslash escape sequences is available.
- Use the \1 and \2 escapes to begin and end sequences of non-
- printing characters, which can be used to embed a terminal con-
+ control prefixes and backslash escape sequences is available.
+ Use the \1 and \2 escapes to begin and end sequences of non-
+ printing characters, which can be used to embed a terminal con-
trol sequence into the mode string.
vviissiibbllee--ssttaattss ((OOffff))
- If set to OOnn, a character denoting a file's type as reported by
- _s_t_a_t(2) is appended to the filename when listing possible com-
+ If set to OOnn, a character denoting a file's type as reported by
+ _s_t_a_t(2) is appended to the filename when listing possible com-
pletions.
RReeaaddlliinnee CCoonnddiittiioonnaall CCoonnssttrruuccttss
- Readline implements a facility similar in spirit to the conditional
- compilation features of the C preprocessor which allows key bindings
- and variable settings to be performed as the result of tests. There
+ Readline implements a facility similar in spirit to the conditional
+ compilation features of the C preprocessor which allows key bindings
+ and variable settings to be performed as the result of tests. There
are four parser directives used.
- $$iiff The $$iiff construct allows bindings to be made based on the edit-
- ing mode, the terminal being used, or the application using
+ $$iiff The $$iiff construct allows bindings to be made based on the edit-
+ ing mode, the terminal being used, or the application using
readline. The text of the test, after any comparison operator,
- extends to the end of the line; unless otherwise noted, no
+ extends to the end of the line; unless otherwise noted, no
characters are required to isolate it.
- mmooddee The mmooddee== form of the $$iiff directive is used to test
- whether readline is in emacs or vi mode. This may be
- used in conjunction with the sseett kkeeyymmaapp command, for
- 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 in-
+ stance, to set bindings in the _e_m_a_c_s_-_s_t_a_n_d_a_r_d and
+ _e_m_a_c_s_-_c_t_l_x keymaps only if readline is starting out in
emacs mode.
- tteerrmm The tteerrmm== form may be used to include terminal-specific
+ tteerrmm The tteerrmm== form may be used to include terminal-specific
key bindings, perhaps to bind the key sequences output by
the terminal's function keys. The word on the right side
of the == is tested against both the full name of the ter-
- minal and the portion of the terminal name before the
- first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d,
+ minal and the portion of the terminal name before the
+ first --. This allows _s_u_n to match both _s_u_n and _s_u_n_-_c_m_d,
for instance.
vveerrssiioonn
- The vveerrssiioonn test may be used to perform comparisons
- against specific readline versions. The vveerrssiioonn expands
- to the current readline version. The set of comparison
- operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>.
- The version number supplied on the right side of the
- operator consists of a major version number, an optional
+ The vveerrssiioonn test may be used to perform comparisons
+ against specific readline versions. The vveerrssiioonn expands
+ to the current readline version. The set of comparison
+ operators includes ==, (and ====), !!==, <<==, >>==, <<, and >>.
+ The version number supplied on the right side of the op-
+ erator consists of a major version number, an optional
decimal point, and an optional minor version (e.g., 77..11).
- If the minor version is omitted, it is assumed to be 00.
+ If the minor version is omitted, it is assumed to be 00.
The operator may be separated from the string vveerrssiioonn and
from the version number argument by whitespace.
aapppplliiccaattiioonn
The aapppplliiccaattiioonn construct is used to include application-
- specific settings. Each program using the readline
- library sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization
+ specific settings. Each program using the readline li-
+ brary sets the _a_p_p_l_i_c_a_t_i_o_n _n_a_m_e, and an initialization
file can test for a particular value. This could be used
- to bind key sequences to functions useful for a specific
- program. For instance, the following command adds a key
- sequence that quotes the current or previous word in
+ to bind key sequences to functions useful for a specific
+ program. For instance, the following command adds a key
+ sequence that quotes the current or previous word in
bbaasshh:
$$iiff Bash
@@ -3392,12 +3449,12 @@ RREEAADDLLIINNEE
_v_a_r_i_a_b_l_e
The _v_a_r_i_a_b_l_e construct provides simple equality tests for
- readline variables and values. The permitted comparison
- operators are _=, _=_=, and _!_=. The variable name must be
+ readline variables and values. The permitted comparison
+ operators are _=, _=_=, and _!_=. The variable name must be
separated from the comparison operator by whitespace; the
- operator may be separated from the value on the right
- hand side by whitespace. Both string and boolean vari-
- ables may be tested. Boolean variables must be tested
+ operator may be separated from the value on the right
+ hand side by whitespace. Both string and boolean vari-
+ ables may be tested. Boolean variables must be tested
against the values _o_n and _o_f_f.
$$eennddiiff This command, as seen in the previous example, terminates an $$iiff
@@ -3407,51 +3464,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
@@ -3467,100 +3524,104 @@ RREEAADDLLIINNEE
Move forward to the end of the next word. Words are composed of
alphanumeric characters (letters and digits).
bbaacckkwwaarrdd--wwoorrdd ((MM--bb))
- Move back to the start of the current or previous word. Words
+ Move back to the start of the current or previous word. Words
are composed of alphanumeric characters (letters and digits).
sshheellll--ffoorrwwaarrdd--wwoorrdd
- Move forward to the end of the next word. Words are delimited
+ Move forward to the end of the next word. Words are delimited
by non-quoted shell metacharacters.
sshheellll--bbaacckkwwaarrdd--wwoorrdd
- Move back to the start of the current or previous word. Words
+ Move back to the start of the current or previous word. Words
are delimited by non-quoted shell metacharacters.
pprreevviioouuss--ssccrreeeenn--lliinnee
- Attempt to move point to the same physical screen column on the
- previous physical screen line. This will not have the desired
- effect if the current Readline line does not take up more than
- one physical line or if point is not greater than the length of
+ Attempt to move point to the same physical screen column on the
+ previous physical screen line. This will not have the desired
+ effect if the current Readline line does not take up more than
+ one physical line or if point is not greater than the length of
the prompt plus the screen width.
nneexxtt--ssccrreeeenn--lliinnee
- Attempt to move point to the same physical screen column on the
+ Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
- if the current Readline line does not take up more than one
- physical line or if the length of the current Readline line is
+ if the current Readline line does not take up more than one
+ physical line or if the length of the current Readline line is
not greater than the length of the prompt plus the screen width.
+ cclleeaarr--ddiissppllaayy ((MM--CC--ll))
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line
+ at the top of the screen.
cclleeaarr--ssccrreeeenn ((CC--ll))
- Clear the screen leaving the current line at the top of the
- screen. With an argument, refresh the current line without
- clearing the screen.
+ Clear the screen, then redraw the current line, leaving the cur-
+ rent line at the top of the screen. With an argument, refresh
+ the current line without clearing the screen.
rreeddrraaww--ccuurrrreenntt--lliinnee
Refresh the current line.
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.
hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--bbaacckkwwaarrdd
Search backward through the history for the string of characters
- between the start of the current line and the current cursor
- position (the _p_o_i_n_t). The search string may match anywhere in a
+ between the start of the current line and the current cursor po-
+ sition (the _p_o_i_n_t). The search string may match anywhere in a
history line. This is a non-incremental search.
hhiissttoorryy--ssuubbssttrriinngg--sseeaarrcchh--ffoorrwwaarrdd
- Search forward through the history for the string of characters
+ 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.
+ string may match anywhere in a history line. This is a non-in-
+ cremental 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
- inserts the _nth word from the end of the previous command. Once
- the argument _n is computed, the argument is extracted as if the
+ insert the _nth word from the previous command (the words in the
+ previous command begin with word 0). A negative argument in-
+ serts the _nth word from the end of the previous command. Once
+ the argument _n is computed, the argument is extracted as if the
"!_n" history expansion had been specified.
yyaannkk--llaasstt--aarrgg ((MM--..,, MM--__))
- Insert the last argument to the previous command (the last word
+ 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.
@@ -3569,80 +3630,80 @@ RREEAADDLLIINNEE
tory expansion as well as all of the shell word expansions. See
HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history expansion.
hhiissttoorryy--eexxppaanndd--lliinnee ((MM--^^))
- Perform history expansion on the current line. See HHIISSTTOORRYY
- EEXXPPAANNSSIIOONN below for a description of history expansion.
+ Perform history expansion on the current line. See HHIISSTTOORRYY EEXX--
+ PPAANNSSIIOONN below for a description of history expansion.
mmaaggiicc--ssppaaccee
- Perform history expansion on the current line and insert a
+ Perform history expansion on the current line and insert a
space. See HHIISSTTOORRYY EEXXPPAANNSSIIOONN below for a description of history
expansion.
aalliiaass--eexxppaanndd--lliinnee
- Perform alias expansion on the current line. See AALLIIAASSEESS above
+ Perform alias expansion on the current line. See AALLIIAASSEESS above
for a description of alias expansion.
hhiissttoorryy--aanndd--aalliiaass--eexxppaanndd--lliinnee
Perform history and alias expansion on the current line.
iinnsseerrtt--llaasstt--aarrgguummeenntt ((MM--..,, MM--__))
A synonym for yyaannkk--llaasstt--aarrgg.
ooppeerraattee--aanndd--ggeett--nneexxtt ((CC--oo))
- Accept the current line for execution and fetch the next line
- relative to the current line from the history for editing. A
- numeric argument, if supplied, specifies the history entry to
+ Accept the current line for execution and fetch the next line
+ relative to the current line from the history for editing. A
+ numeric argument, if supplied, specifies the history entry to
use instead of the current line.
eeddiitt--aanndd--eexxeeccuuttee--ccoommmmaanndd ((CC--xx CC--ee))
- Invoke an editor on the current command line, and execute the
- result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL,
- $$EEDDIITTOORR, and _e_m_a_c_s as the editor, in that order.
+ Invoke an editor on the current command line, and execute the
+ result as shell commands. BBaasshh attempts to invoke $$VVIISSUUAALL, $$EEDD--
+ IITTOORR, and _e_m_a_c_s as the editor, in that order.
CCoommmmaannddss ffoorr CChhaannggiinngg TTeexxtt
_e_n_d_-_o_f_-_f_i_l_e ((uussuuaallllyy CC--dd))
- The character indicating end-of-file as set, for example, by
- ``stty''. If this character is read when there are no charac-
- ters on the line, and point is at the beginning of the line,
+ The character indicating end-of-file as set, for example, by
+ ``stty''. If this character is read when there are no charac-
+ ters on the line, and point is at the beginning of the line,
Readline interprets it as the end of input and returns EEOOFF.
ddeelleettee--cchhaarr ((CC--dd))
Delete the character at point. If this function is bound to the
same character as the tty EEOOFF character, as CC--dd commonly is, see
above for the effects.
bbaacckkwwaarrdd--ddeelleettee--cchhaarr ((RRuubboouutt))
- Delete the character behind the cursor. When given a numeric
+ Delete the character behind the cursor. When given a numeric
argument, save the deleted text on the kill ring.
ffoorrwwaarrdd--bbaacckkwwaarrdd--ddeelleettee--cchhaarr
- Delete the character under the cursor, unless the cursor is at
+ Delete the character under the cursor, unless the cursor is at
the end of the line, in which case the character behind the cur-
sor is deleted.
qquuootteedd--iinnsseerrtt ((CC--qq,, CC--vv))
- Add the next character typed to the line verbatim. This is how
+ Add the next character typed to the line verbatim. This is how
to insert characters like CC--qq, for example.
ttaabb--iinnsseerrtt ((CC--vv TTAABB))
Insert a tab character.
sseellff--iinnsseerrtt ((aa,, bb,, AA,, 11,, !!,, ......))
Insert the character typed.
ttrraannssppoossee--cchhaarrss ((CC--tt))
- Drag the character before point forward over the character at
- point, moving point forward as well. If point is at the end of
- the line, then this transposes the two characters before point.
+ Drag the character before point forward over the character at
+ point, moving point forward as well. If point is at the end of
+ the line, then this transposes the two characters before point.
Negative arguments have no effect.
ttrraannssppoossee--wwoorrddss ((MM--tt))
- Drag the word before point past the word after point, moving
- point over that word as well. If point is at the end of the
+ Drag the word before point past the word after point, moving
+ point over that word as well. If point is at the end of the
line, this transposes the last two words on the line.
uuppccaassee--wwoorrdd ((MM--uu))
- Uppercase the current (or following) word. With a negative
- argument, uppercase the previous word, but do not move point.
+ Uppercase the current (or following) word. With a negative ar-
+ gument, uppercase the previous word, but do not move point.
ddoowwnnccaassee--wwoorrdd ((MM--ll))
- Lowercase the current (or following) word. With a negative
- argument, lowercase the previous word, but do not move point.
+ Lowercase the current (or following) word. With a negative ar-
+ gument, lowercase the previous word, but do not move point.
ccaappiittaalliizzee--wwoorrdd ((MM--cc))
- Capitalize the current (or following) word. With a negative
- argument, capitalize the previous word, but do not move point.
+ Capitalize the current (or following) word. With a negative ar-
+ gument, capitalize the previous word, but do not move point.
oovveerrwwrriittee--mmooddee
- Toggle overwrite mode. With an explicit positive numeric argu-
+ Toggle overwrite mode. With an explicit positive numeric argu-
ment, switches to overwrite mode. With an explicit non-positive
numeric argument, switches to insert mode. This command affects
- only eemmaaccss mode; vvii mode does overwrite differently. Each call
+ only eemmaaccss mode; vvii mode does overwrite differently. Each call
to _r_e_a_d_l_i_n_e_(_) starts in insert mode. In overwrite mode, charac-
- ters bound to sseellff--iinnsseerrtt replace the text at point rather than
- pushing the text to the right. Characters bound to bbaacckk--
- wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a
+ ters bound to sseellff--iinnsseerrtt replace the text at point rather than
+ pushing the text to the right. Characters bound to bbaacckk--
+ wwaarrdd--ddeelleettee--cchhaarr replace the character before point with a
space. By default, this command is unbound.
KKiilllliinngg aanndd YYaannkkiinngg
@@ -3651,31 +3712,31 @@ RREEAADDLLIINNEE
bbaacckkwwaarrdd--kkiillll--lliinnee ((CC--xx RRuubboouutt))
Kill backward to the beginning of the line.
uunniixx--lliinnee--ddiissccaarrdd ((CC--uu))
- Kill backward from point to the beginning of the line. The
+ Kill backward from point to the beginning of the line. The
killed text is saved on the kill-ring.
kkiillll--wwhhoollee--lliinnee
- Kill all characters on the current line, no matter where point
+ Kill all characters on the current line, no matter where point
is.
kkiillll--wwoorrdd ((MM--dd))
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
same as those used by ffoorrwwaarrdd--wwoorrdd.
bbaacckkwwaarrdd--kkiillll--wwoorrdd ((MM--RRuubboouutt))
- Kill the word behind point. Word boundaries are the same as
+ Kill the word behind point. Word boundaries are the same as
those used by bbaacckkwwaarrdd--wwoorrdd.
sshheellll--kkiillll--wwoorrdd
- Kill from point to the end of the current word, or if between
- words, to the end of the next word. Word boundaries are the
+ Kill from point to the end of the current word, or if between
+ words, to the end of the next word. Word boundaries are the
same as those used by sshheellll--ffoorrwwaarrdd--wwoorrdd.
sshheellll--bbaacckkwwaarrdd--kkiillll--wwoorrdd
- Kill the word behind point. Word boundaries are the same as
+ Kill the word behind point. Word boundaries are the same as
those used by sshheellll--bbaacckkwwaarrdd--wwoorrdd.
uunniixx--wwoorrdd--rruubboouutt ((CC--ww))
- Kill the word behind point, using white space as a word bound-
+ Kill the word behind point, using white space as a word bound-
ary. The killed text is saved on the kill-ring.
uunniixx--ffiilleennaammee--rruubboouutt
- Kill the word behind point, using white space and the slash
- character as the word boundaries. The killed text is saved on
+ Kill the word behind point, using white space and the slash
+ character as the word boundaries. The killed text is saved on
the kill-ring.
ddeelleettee--hhoorriizzoonnttaall--ssppaaccee ((MM--\\))
Delete all spaces and tabs around point.
@@ -3684,58 +3745,57 @@ RREEAADDLLIINNEE
ccooppyy--rreeggiioonn--aass--kkiillll
Copy the text in the region to the kill buffer.
ccooppyy--bbaacckkwwaarrdd--wwoorrdd
- Copy the word before point to the kill buffer. The word bound-
+ Copy the word before point to the kill buffer. The word bound-
aries are the same as bbaacckkwwaarrdd--wwoorrdd.
ccooppyy--ffoorrwwaarrdd--wwoorrdd
- Copy the word following point to the kill buffer. The word
+ Copy the word following point to the kill buffer. The word
boundaries are the same as ffoorrwwaarrdd--wwoorrdd.
yyaannkk ((CC--yy))
Yank the top of the kill ring into the buffer at point.
yyaannkk--ppoopp ((MM--yy))
- Rotate the kill ring, and yank the new top. Only works follow-
+ Rotate the kill ring, and yank the new top. Only works follow-
ing yyaannkk or yyaannkk--ppoopp.
NNuummeerriicc AArrgguummeennttss
ddiiggiitt--aarrgguummeenntt ((MM--00,, MM--11,, ......,, MM----))
- Add this digit to the argument already accumulating, or start a
+ Add this digit to the argument already accumulating, or start a
new argument. M-- starts a negative argument.
uunniivveerrssaall--aarrgguummeenntt
- This is another way to specify an argument. If this command is
- followed by one or more digits, optionally with a leading minus
- sign, those digits define the argument. If the command is fol-
- lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the
- numeric argument, but is otherwise ignored. As a special case,
- if this command is immediately followed by a character that is
- neither a digit nor minus sign, the argument count for the next
- command is multiplied by four. The argument count is initially
- one, so executing this function the first time makes the argu-
+ This is another way to specify an argument. If this command is
+ followed by one or more digits, optionally with a leading minus
+ sign, those digits define the argument. If the command is fol-
+ lowed by digits, executing uunniivveerrssaall--aarrgguummeenntt again ends the nu-
+ meric argument, but is otherwise ignored. As a special case, if
+ this command is immediately followed by a character that is nei-
+ ther a digit nor minus sign, the argument count for the next
+ command is multiplied by four. The argument count is initially
+ one, so executing this function the first time makes the argu-
ment count four, a second time makes the argument count sixteen,
and so on.
CCoommpplleettiinngg
ccoommpplleettee ((TTAABB))
- Attempt to perform completion on the text before point. BBaasshh
+ Attempt to perform completion on the text before point. BBaasshh
attempts completion treating the text as a variable (if the text
- begins with $$), username (if the text begins with ~~), hostname
- (if the text begins with @@), or command (including aliases and
+ begins with $$), username (if the text begins with ~~), hostname
+ (if the text begins with @@), or command (including aliases and
functions) in turn. If none of these produces a match, filename
completion is attempted.
ppoossssiibbllee--ccoommpplleettiioonnss ((MM--??))
List the possible completions of the text before point.
iinnsseerrtt--ccoommpplleettiioonnss ((MM--**))
- Insert all completions of the text before point that would have
+ Insert all completions of the text before point that would have
been generated by ppoossssiibbllee--ccoommpplleettiioonnss.
mmeennuu--ccoommpplleettee
- Similar to ccoommpplleettee, but replaces the word to be completed with
- a single match from the list of possible completions. Repeated
- execution of mmeennuu--ccoommpplleettee steps through the list of possible
- completions, inserting each match in turn. At the end of the
+ Similar to ccoommpplleettee, but replaces the word to be completed with
+ a single match from the list of possible completions. Repeated
+ execution of mmeennuu--ccoommpplleettee steps through the list of possible
+ completions, inserting each match in turn. At the end of the
list of completions, the bell is rung (subject to the setting of
bbeellll--ssttyyllee) and the original text is restored. An argument of _n
- moves _n positions forward in the list of matches; a negative
- argument may be used to move backward through the list. This
- command is intended to be bound to TTAABB, but is unbound by
- default.
+ moves _n positions forward in the list of matches; a negative ar-
+ gument may be used to move backward through the list. This com-
+ mand is intended to be bound to TTAABB, but is unbound by default.
mmeennuu--ccoommpplleettee--bbaacckkwwaarrdd
Identical to mmeennuu--ccoommpplleettee, but moves backward through the list
of possible completions, as if mmeennuu--ccoommpplleettee had been given a
@@ -3857,18 +3917,18 @@ RREEAADDLLIINNEE
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.
+ If a numeric argument causes the comment character to be re-
+ moved, the line will be executed by the shell.
gglloobb--ccoommpplleettee--wwoorrdd ((MM--gg))
- The word before point is treated as a pattern for pathname
- expansion, with an asterisk implicitly appended. This pattern
- is used to generate a list of matching filenames for possible
- completions.
+ The word before point is treated as a pattern for pathname ex-
+ pansion, with an asterisk implicitly appended. This pattern is
+ used to generate a list of matching filenames for possible com-
+ pletions.
gglloobb--eexxppaanndd--wwoorrdd ((CC--xx **))
- The word before point is treated as a pattern for pathname
- expansion, and the list of matching filenames is inserted,
- replacing the word. If a numeric argument is supplied, an
- asterisk is appended before pathname expansion.
+ The word before point is treated as a pattern for pathname ex-
+ pansion, and the list of matching filenames is inserted, replac-
+ ing 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
@@ -3921,8 +3981,8 @@ RREEAADDLLIINNEE
--ff or --dd option is used for filename or directory name completion, the
shell variable FFIIGGNNOORREE is used to filter the matches.
- Any completions specified by a pathname expansion pattern to the --GG
- option are generated next. The words generated by the pattern need not
+ Any completions specified by a pathname expansion pattern to the --GG op-
+ tion are generated next. The words generated by the pattern need not
match the word being completed. The GGLLOOBBIIGGNNOORREE shell variable is not
used to filter the matches, but the FFIIGGNNOORREE variable is used.
@@ -3942,8 +4002,8 @@ RREEAADDLLIINNEE
variables are assigned values as described above under SShheellll VVaarriiaabblleess.
If a shell function is being invoked, the CCOOMMPP__WWOORRDDSS and CCOOMMPP__CCWWOORRDD
variables are also set. When the function or command is invoked, the
- first argument ($$11) is the name of the command whose arguments are
- being completed, the second argument ($$22) is the word being completed,
+ first argument ($$11) is the name of the command whose arguments are be-
+ ing completed, the second argument ($$22) is the word being completed,
and the third argument ($$33) is the word preceding the word being com-
pleted on the current command line. No filtering of the generated com-
pletions against the word being completed is performed; the function or
@@ -3975,8 +4035,8 @@ RREEAADDLLIINNEE
to the readline completion code as the list of possible completions.
If the previously-applied actions do not generate any matches, and the
- --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was
- defined, directory name completion is attempted.
+ --oo ddiirrnnaammeess option was supplied to ccoommpplleettee when the compspec was de-
+ fined, directory name completion is attempted.
If the --oo pplluussddiirrss option was supplied to ccoommpplleettee when the compspec
was defined, directory name completion is attempted and any matches are
@@ -4011,8 +4071,8 @@ RREEAADDLLIINNEE
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:
+ in a file corresponding to the name of the command, the following de-
+ fault completion function would load completions dynamically:
_completion_loader()
{
@@ -4045,20 +4105,20 @@ HHIISSTTOORRYY
history list to $$HHIISSTTFFIILLEE. If the hhiissttaappppeenndd shell option is enabled
(see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below), the
lines are appended to the history file, otherwise the history file is
- overwritten. If HHIISSTTFFIILLEE is unset, or if the history file is
- unwritable, the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable
- is set, time stamps are written to the history file, marked with the
- history comment character, so they may be preserved across shell ses-
- sions. This uses the history comment character to distinguish time-
- stamps from other history lines. After saving the history, the history
- file is truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTT--
- FFIILLEESSIIZZEE is unset, or set to null, a non-numeric value, or a numeric
- value less than zero, the history file is not truncated.
+ overwritten. If HHIISSTTFFIILLEE is unset, or if the history file is un-
+ writable, the history is not saved. If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is
+ set, time stamps are written to the history file, marked with the his-
+ tory comment character, so they may be preserved across shell sessions.
+ This uses the history comment character to distinguish timestamps from
+ other history lines. After saving the history, the history file is
+ truncated to contain no more than HHIISSTTFFIILLEESSIIZZEE lines. If HHIISSTTFFIILLEESSIIZZEE
+ is unset, or set to null, a non-numeric value, or a numeric value less
+ than zero, the history file is not truncated.
The builtin command ffcc (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) may be used
to list or edit and re-execute a portion of the history list. The hhiiss--
- ttoorryy builtin may be used to display or modify the history list and
- manipulate the history file. When using command-line editing, search
+ ttoorryy builtin may be used to display or modify the history list and ma-
+ nipulate the history file. When using command-line editing, search
commands are available in each editing mode that provide access to the
history list.
@@ -4070,8 +4130,8 @@ HHIISSTTOORRYY
necessary to preserve syntactic correctness. The lliitthhiisstt shell option
causes the shell to save the command with embedded newlines instead of
semicolons. See the description of the sshhoopptt builtin below under SSHHEELLLL
- BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell
- options.
+ BBUUIILLTTIINN CCOOMMMMAANNDDSS for information on setting and unsetting shell op-
+ tions.
HHIISSTTOORRYY EEXXPPAANNSSIIOONN
The shell supports a history expansion feature that is similar to the
@@ -4088,8 +4148,8 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
History expansion is performed immediately after a complete line is
read, before the shell breaks it into words, and is performed on each
- line individually without taking quoting on previous lines into
- account. It takes place in two parts. The first is to determine which
+ line individually without taking quoting on previous lines into ac-
+ count. It takes place in two parts. The first is to determine which
line from the history list to use during substitution. The second is
to select portions of that line for inclusion into the current one.
The line selected from the history is the _e_v_e_n_t, and the portions of
@@ -4099,9 +4159,9 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
_t_e_r-separated words surrounded by quotes are considered one word. His-
tory expansions are introduced by the appearance of the history expan-
sion character, which is !! by default. Only backslash (\\) and single
- quotes can quote the history expansion character, but the history
- expansion character is also treated as quoted if it immediately pre-
- cedes the closing double quote in a double-quoted string.
+ quotes can quote the history expansion character, but the history ex-
+ pansion 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,
@@ -4109,8 +4169,8 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
enabled, (( will also inhibit expansion.
Several shell options settable with the sshhoopptt builtin may be used to
- tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell
- option is enabled (see the description of the sshhoopptt builtin below), and
+ tailor the behavior of history expansion. If the hhiissttvveerriiffyy shell op-
+ tion is enabled (see the description of the sshhoopptt builtin below), and
rreeaaddlliinnee is being used, history substitutions are not immediately
passed to the shell parser. Instead, the expanded line is reloaded
into the rreeaaddlliinnee editing buffer for further modification. If rreeaaddlliinnee
@@ -4144,10 +4204,12 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
!!??_s_t_r_i_n_g[[??]]
Refer to the most recent command preceding the current position
in the history list containing _s_t_r_i_n_g. The trailing ?? may be
- omitted if _s_t_r_i_n_g is followed immediately by a newline.
+ omitted if _s_t_r_i_n_g is followed immediately by a newline. If
+ _s_t_r_i_n_g is missing, the string from the most recent search is
+ used; it is an error if there is no previous search string.
^^_s_t_r_i_n_g_1^^_s_t_r_i_n_g_2^^
Quick substitution. Repeat the previous command, replacing
- _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s/_s_t_r_i_n_g_1/_s_t_r_i_n_g_2/''
+ _s_t_r_i_n_g_1 with _s_t_r_i_n_g_2. Equivalent to ``!!:s^_s_t_r_i_n_g_1^_s_t_r_i_n_g_2^''
(see MMooddiiffiieerrss below).
!!## The entire command line typed so far.
@@ -4163,22 +4225,26 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
The zeroth word. For the shell, this is the command word.
_n The _nth word.
^^ The first argument. That is, word 1.
- $$ The last word. This is usually the last argument, but will
- 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.
+ $$ The last word. This is usually the last argument, but will ex-
+ pand to the zeroth word if there is only one word in the line.
+ %% The first word matched by the most recent `?_s_t_r_i_n_g?' search, if
+ the search string begins with a character that is part of a
+ word.
_x--_y A range of words; `-_y' abbreviates `0-_y'.
** All of the words but the zeroth. This is a synonym for `_1_-_$'.
It is not an error to use ** if there is just one word in the
event; the empty string is returned in that case.
xx** Abbreviates _x_-_$.
- xx-- Abbreviates _x_-_$ like xx**, but omits the last word.
+ xx-- Abbreviates _x_-_$ like xx**, but omits the last word. If xx is miss-
+ ing, it defaults to 0.
- 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
- or more of the following modifiers, each preceded by a `:'.
+ After the optional word designator, there may appear a sequence of one
+ or more of the following modifiers, each preceded by a `:'. These mod-
+ ify, or edit, the word or words selected from the history event.
hh Remove a trailing filename component, leaving only the head.
tt Remove all leading filename components, leaving the tail.
@@ -4187,24 +4253,26 @@ HHIISSTTOORRYY EEXXPPAANNSSIIOONN
pp Print the new command but do not execute it.
qq Quote the substituted words, escaping further substitutions.
xx Quote the substituted words as with qq, but break into words at
- bbllaannkkss and newlines.
+ bbllaannkkss and newlines. The qq and xx modifiers are mutually exclu-
+ sive; the last one supplied is used.
ss//_o_l_d//_n_e_w//
- Substitute _n_e_w for the first occurrence of _o_l_d in the event
- line. Any delimiter can be used in place of /. The final
- delimiter is optional if it is the last character of the event
- line. The delimiter may be quoted in _o_l_d and _n_e_w with a single
- backslash. If & appears in _n_e_w, it is replaced by _o_l_d. A sin-
- gle backslash will quote the &. If _o_l_d is null, it is set to
- the last _o_l_d substituted, or, if no previous history substitu-
- tions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
+ Substitute _n_e_w for the first occurrence of _o_l_d in the event
+ line. Any character may be used as the delimiter in place of /.
+ The final delimiter is optional if it is the last character of
+ the event line. The delimiter may be quoted in _o_l_d and _n_e_w with
+ a single backslash. If & appears in _n_e_w, it is replaced by _o_l_d.
+ A single backslash will quote the &. If _o_l_d is null, it is set
+ to the last _o_l_d substituted, or, if no previous history substi-
+ tutions took place, the last _s_t_r_i_n_g in a !!??_s_t_r_i_n_g[[??]] search.
+ If _n_e_w is null, each matching _o_l_d is deleted.
&& Repeat the previous substitution.
gg Cause changes to be applied over the entire event line. This is
used in conjunction with `::ss' (e.g., `::ggss//_o_l_d//_n_e_w//') or `::&&'.
If used with `::ss', any delimiter can be used in place of /, and
the final delimiter is optional if it is the last character of
the event line. An aa may be used as a synonym for gg.
- GG Apply the following `ss' modifier once to each word in the event
- line.
+ GG Apply the following `ss' or `&&' modifier once to each word in the
+ event line.
SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
Unless otherwise noted, each builtin command documented in this section
@@ -4223,8 +4291,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
.. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
- Read and execute commands from _f_i_l_e_n_a_m_e in the current shell
- environment and return the exit status of the last command exe-
+ Read and execute commands from _f_i_l_e_n_a_m_e in the current shell en-
+ vironment and return the exit status of the last command exe-
cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash,
filenames in PPAATTHH are used to find the directory containing
_f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable.
@@ -4232,15 +4300,15 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
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
+ tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po-
+ sitional parameters are unchanged. If the --TT option is enabled,
+ ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap
+ string is saved and restored around the call to ssoouurrccee, and
+ ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not
+ set, and the sourced file changes the DDEEBBUUGG trap, the new value
+ is retained when ssoouurrccee completes. The return status is the
+ status of the last command exited within the script (0 if no
+ commands are executed), and false if _f_i_l_e_n_a_m_e is not found or
cannot be read.
aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
@@ -4250,8 +4318,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
_v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word
to be checked for alias substitution when the alias is expanded.
For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup-
- plied, the name and value of the alias is printed. AAlliiaass
- returns true unless a _n_a_m_e is given for which no alias has been
+ plied, the name and value of the alias is printed. AAlliiaass re-
+ turns true unless a _n_a_m_e is given for which no alias has been
defined.
bbgg [_j_o_b_s_p_e_c ...]
@@ -4270,10 +4338,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d
Display current rreeaaddlliinnee key and function bindings, bind a key
sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee
- variable. Each non-option argument is a command as it would
- appear in _._i_n_p_u_t_r_c, but each binding or command must be passed
- as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'.
- Options, if supplied, have the following meanings:
+ variable. Each non-option argument is a command as it would ap-
+ pear in _._i_n_p_u_t_r_c, but each binding or command must be passed as
+ a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Op-
+ tions, if supplied, have the following meanings:
--mm _k_e_y_m_a_p
Use _k_e_y_m_a_p as the keymap to be affected by the subsequent
bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_-
@@ -4302,112 +4370,114 @@ 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
+ Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en-
+ tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
- lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the
- current location of the insertion point. If the executed
- command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD--
- LLIINNEE__PPOOIINNTT, those new values will be reflected in the
- editing state.
- --XX List all key sequences bound to shell commands and the
- associated commands in a format that can be reused as
- input.
-
- The return value is 0 unless an unrecognized option is given or
+ lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK
+ variables to the current location of the insertion point
+ and the saved insertion point (the mark), respectively.
+ If the executed command changes the value of any of RREEAADD--
+ LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new
+ values will be reflected in the editing state.
+ --XX List all key sequences bound to shell commands and the
+ associated commands in a format that can be reused as in-
+ put.
+
+ 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 ex-
+ ited. 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 di-
+ rectory names in CCDDPPAATTHH are separated by a colon (:). A null
+ directory name in CCDDPPAATTHH is the same as the current directory,
i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not
- used. The --PP option causes ccdd to use the physical directory
- structure by resolving symbolic links while traversing _d_i_r and
+ used. The --PP option causes ccdd to use the physical directory
+ structure by resolving symbolic links while traversing _d_i_r and
before processing instances of _._. in _d_i_r (see also the --PP option
to the sseett builtin command); the --LL option forces symbolic links
- to be followed by resolving the link after processing instances
+ to be followed by resolving the link after processing instances
of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing
- the immediately previous pathname component from _d_i_r, back to a
- slash or the beginning of _d_i_r. If the --ee option is supplied
- with --PP, and the current working directory cannot be success-
- fully determined after a successful directory change, ccdd will
- return an unsuccessful status. On systems that support it, the
- --@@ option presents the extended attributes associated with a
- file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
+ the immediately previous pathname component from _d_i_r, back to a
+ slash or the beginning of _d_i_r. If the --ee option is supplied
+ with --PP, and the current working directory cannot be success-
+ fully determined after a successful directory change, ccdd will
+ return an unsuccessful status. On systems that support it, the
+ --@@ option presents the extended attributes associated with a
+ file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
before the directory change is attempted. If a non-empty direc-
- tory name from CCDDPPAATTHH is used, or if -- is the first argument,
+ tory name from CCDDPPAATTHH is used, or if -- is the first argument,
and the directory change is successful, the absolute pathname of
- the new working directory is written to the standard output.
- The return value is true if the directory was successfully
+ the new working directory is written to the standard output.
+ The return value is true if the directory was successfully
changed; false otherwise.
ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...]
- Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
+ Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
lookup. Only builtin commands or commands found in the PPAATTHH are
- executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
- performed using a default value for PPAATTHH that is guaranteed to
- find all of the standard utilities. If either the --VV or --vv
- 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
+ executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
+ performed using a default value for PPAATTHH that is guaranteed to
+ find all of the standard utilities. If either the --VV or --vv op-
+ tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
+ option causes a single word indicating the command or filename
used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a
- more verbose description. If the --VV or --vv option is supplied,
- the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
+ more verbose description. If the --VV or --vv option is supplied,
+ the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
neither option is supplied and an error occurred or _c_o_m_m_a_n_d can-
- not be found, the exit status is 127. Otherwise, the exit sta-
+ not be found, the exit status is 127. Otherwise, the exit sta-
tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d.
ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d]
- Generate possible completion matches for _w_o_r_d according to the
- _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
- builtin with the exception of --pp and --rr, and write the matches
- to the standard output. When using the --FF or --CC options, the
- various shell variables set by the programmable completion
- facilities, while available, will not have useful values.
+ Generate possible completion matches for _w_o_r_d according to the
+ _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
+ builtin with the exception of --pp and --rr, and write the matches
+ to the standard output. When using the --FF or --CC options, the
+ various shell variables set by the programmable completion fa-
+ cilities, while available, will not have useful values.
The matches will be generated in the same way as if the program-
mable completion code had generated them directly from a comple-
- tion specification with the same flags. If _w_o_r_d is specified,
+ tion specification with the same flags. If _w_o_r_d is specified,
only those completions matching _w_o_r_d will be displayed.
- The return value is true unless an invalid option is supplied,
+ The return value is true unless an invalid option is supplied,
or no matches were generated.
- ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
- _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 [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
+ _p_a_t] [--WW _w_o_r_d_l_i_s_t]
+ [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
+ _f_i_x] _n_a_m_e [_n_a_m_e _._._.]
ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...]
Specify how arguments to each _n_a_m_e should be completed. If the
--pp option is supplied, or if no options are supplied, existing
@@ -4421,7 +4491,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
indicates that other supplied options and actions should apply
to ``empty'' command completion; that is, completion attempted
on a blank line. The --II option indicates that other supplied
- options and actions should apply to completion on the inital
+ options and actions should apply to completion on the initial
non-assignment word on the line, or after a command delimiter
such as ;; or ||, which is usually command name completion. If
multiple options are supplied, the --DD option takes precedence
@@ -4461,14 +4531,14 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
default).
nnoossoorrtt Tell readline not to sort the list of possible
completions alphabetically.
- nnoossppaaccee Tell readline not to append a space (the
- default) to words completed at the end of the
+ nnoossppaaccee Tell readline not to append a space (the de-
+ fault) to words completed at the end of the
line.
pplluussddiirrss
After any matches defined by the compspec are
- generated, directory name completion is
- attempted and any matches are added to the
- results of the other actions.
+ generated, directory name completion is at-
+ tempted and any matches are added to the results
+ of the other actions.
--AA _a_c_t_i_o_n
The _a_c_t_i_o_n may be one of the following to generate a
list of possible completions:
@@ -4517,13 +4587,13 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
--FF _f_u_n_c_t_i_o_n
The shell function _f_u_n_c_t_i_o_n is executed in the current
shell environment. When the function is executed, the
- first argument ($$11) is the name of the command whose
- arguments are being completed, the second argument ($$22)
- is the word being completed, and the third argument ($$33)
- is the word preceding the word being completed on the
- current command line. When it finishes, the possible
- completions are retrieved from the value of the CCOOMMPPRREE--
- PPLLYY array variable.
+ first argument ($$11) is the name of the command whose ar-
+ guments are being completed, the second argument ($$22) is
+ the word being completed, and the third argument ($$33) is
+ the word preceding the word being completed on the cur-
+ rent command line. When it finishes, the possible com-
+ pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY
+ array variable.
--GG _g_l_o_b_p_a_t
The pathname expansion pattern _g_l_o_b_p_a_t is expanded to
generate the possible completions.
@@ -4556,19 +4626,19 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
adding a completion specification.
ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e]
- Modify completion options for each _n_a_m_e according to the
- _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es
- are supplied. If no _o_p_t_i_o_ns are given, display the completion
- options for each _n_a_m_e or the current completion. The possible
- values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin
- described above. The --DD option indicates that other supplied
- options should apply to the ``default'' command completion; that
+ Modify completion options for each _n_a_m_e according to the _o_p_-
+ _t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are
+ supplied. If no _o_p_t_i_o_ns are given, display the completion op-
+ tions for each _n_a_m_e or the current completion. The possible
+ values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de-
+ scribed above. The --DD option indicates that other supplied op-
+ tions should apply to the ``default'' command completion; that
is, completion attempted on a command for which no completion
has previously been defined. The --EE option indicates that other
supplied options should apply to ``empty'' command completion;
that is, completion attempted on a blank line. The --II option
indicates that other supplied options should apply to completion
- on the inital non-assignment word on the line, or after a com-
+ on the initial non-assignment word on the line, or after a com-
mand delimiter such as ;; or ||, which is usually command name
completion.
@@ -4579,13 +4649,13 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccoonnttiinnuuee [_n]
Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or
sseelleecctt loop. If _n is specified, resume at the _nth enclosing
- loop. _n must be >= 1. If _n is greater than the number of
- enclosing loops, the last enclosing loop (the ``top-level''
- loop) is resumed. The return value is 0 unless _n is not greater
- than or equal to 1.
+ loop. _n must be >= 1. If _n is greater than the number of en-
+ closing loops, the last enclosing loop (the ``top-level'' loop)
+ is resumed. The return value is 0 unless _n is not greater than
+ or equal to 1.
- ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
- ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
+ ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
+ ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
Declare variables and/or give them attributes. If no _n_a_m_es are
given then display the values of variables. The --pp option will
display the attributes and values of each _n_a_m_e. When --pp is used
@@ -4593,18 +4663,22 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
are ignored. When --pp is supplied without _n_a_m_e arguments, it
will display the attributes and values of all variables having
the attributes specified by the additional options. If no other
- options are supplied with --pp, ddeeccllaarree will display the
- attributes and values of all shell variables. The --ff option
- will restrict the display to shell functions. The --FF option
- inhibits the display of function definitions; only the function
- name and attributes are printed. If the eexxttddeebbuugg shell option
- is enabled using sshhoopptt, the source file name and line number
- 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:
+ options are supplied with --pp, ddeeccllaarree will display the at-
+ tributes and values of all shell variables. The --ff option will
+ restrict the display to shell functions. The --FF option inhibits
+ the display of function definitions; only the function name and
+ attributes are printed. If the eexxttddeebbuugg shell option is enabled
+ using sshhoopptt, the source file name and line number where each
+ _n_a_m_e is defined are displayed as well. The --FF option implies
+ --ff. The --gg option forces variables to be created or modified at
+ the global scope, even when ddeeccllaarree is executed in a shell func-
+ tion. It is ignored in all other cases. The --II option causes
+ local variables to inherit the attributes (except the _n_a_m_e_r_e_f
+ attribute) and value of any existing variable with the same _n_a_m_e
+ at a surrounding scope. If there is no existing variable, the
+ local variable is initially unset. The following options can be
+ used to restrict output to variables with the specified attri-
+ bute or to give variables attributes:
--aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss
above).
--AA Each _n_a_m_e is an associative array variable (see AArrrraayyss
@@ -4625,82 +4699,81 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
attribute cannot be applied to array variables.
--rr Make _n_a_m_es readonly. These names cannot then be assigned
values by subsequent assignment statements or unset.
- --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions
- inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling
- shell. The trace attribute has no special meaning for
- variables.
- --uu When the variable is assigned a value, all lower-case
- characters are converted to upper-case. The lower-case
+ --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in-
+ herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell.
+ The trace attribute has no special meaning for variables.
+ --uu When the variable is assigned a value, all lower-case
+ characters are converted to upper-case. The lower-case
attribute is disabled.
- --xx Mark _n_a_m_es for export to subsequent commands via the
- environment.
+ --xx Mark _n_a_m_es for export to subsequent commands via the en-
+ vironment.
- Using `+' instead of `-' turns off the attribute instead, with
- the exceptions that ++aa and ++AA may not be used to destroy array
- variables and ++rr will not remove the readonly attribute. When
+ Using `+' instead of `-' turns off the attribute instead, with
+ the exceptions that ++aa and ++AA may not be used to destroy array
+ variables and ++rr will not remove the readonly attribute. When
used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as
- with the llooccaall command, unless the --gg option is supplied. If a
- variable name is followed by =_v_a_l_u_e, the value of the variable
- is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
- ment syntax to create array variables, additional attributes do
- not take effect until subsequent assignments. The return value
+ with the llooccaall command, unless the --gg option is supplied. If a
+ variable name is followed by =_v_a_l_u_e, the value of the variable
+ is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
+ ment syntax to create array variables, additional attributes do
+ not take effect until subsequent assignments. The return value
is 0 unless an invalid option is encountered, an attempt is made
to define a function using ``-f foo=bar'', an attempt is made to
- assign a value to a readonly variable, an attempt is made to
- assign a value to an array variable without using the compound
- assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
- valid shell variable name, an attempt is made to turn off read-
- only status for a readonly variable, an attempt is made to turn
+ assign a value to a readonly variable, an attempt is made to as-
+ sign a value to an array variable without using the compound as-
+ signment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
+ valid shell variable name, an attempt is made to turn off read-
+ only status for a readonly variable, an attempt is made to turn
off array status for an array variable, or an attempt is made to
display a non-existent function with --ff.
ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
- Without options, displays the list of currently remembered
- directories. The default display is on a single line with
- directory names separated by spaces. Directories are added to
- the list with the ppuusshhdd command; the ppooppdd command removes
- entries from the list. The current directory is always the
- 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
+ Without options, displays the list of currently remembered di-
+ rectories. The default display is on a single line with direc-
+ tory names separated by spaces. Directories are added to the
+ list with the ppuusshhdd command; the ppooppdd command removes entries
+ from the list. The current directory is always the first direc-
+ tory in the stack.
+ --cc Clears the directory stack by deleting all of the en-
+ tries.
+ --ll Produces a listing using full pathnames; the default
listing format uses a tilde to denote the home directory.
--pp Print the directory stack with one entry per line.
- --vv Print the directory stack with one entry per line, pre-
+ --vv Print the directory stack with one entry per line, pre-
fixing each entry with its index in the stack.
++_n Displays the _nth entry counting from the left of the list
shown by ddiirrss when invoked without options, starting with
zero.
- --_n Displays the _nth entry counting from the right of the
+ --_n Displays the _nth entry counting from the right of the
list shown by ddiirrss when invoked without options, starting
with zero.
- The return value is 0 unless an invalid option is supplied or _n
+ The return value is 0 unless an invalid option is supplied or _n
indexes beyond the end of the directory stack.
ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ]
- Without options, remove each _j_o_b_s_p_e_c from the table of active
- jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
- option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
- is given, each _j_o_b_s_p_e_c is not removed from the table, but is
- marked so that SSIIGGHHUUPP is not sent to the job if the shell
- receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option
- means to remove or mark all jobs; the --rr option without a _j_o_b_-
- _s_p_e_c argument restricts operation to running jobs. The return
- value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job.
+ Without options, remove each _j_o_b_s_p_e_c from the table of active
+ jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
+ option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
+ is given, each _j_o_b_s_p_e_c is not removed from the table, but is
+ marked so that SSIIGGHHUUPP is not sent to the job if the shell re-
+ ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means
+ to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar-
+ gument restricts operation to running jobs. The return value is
+ 0 unless a _j_o_b_s_p_e_c does not specify a valid job.
eecchhoo [--nneeEE] [_a_r_g ...]
- Output the _a_r_gs, separated by spaces, followed by a newline.
- The return status is 0 unless a write error occurs. If --nn is
+ Output the _a_r_gs, separated by spaces, followed by a newline.
+ The return status is 0 unless a write error occurs. If --nn is
specified, the trailing newline is suppressed. If the --ee option
- is given, interpretation of the following backslash-escaped
- characters is enabled. The --EE option disables the interpreta-
- tion of these escape characters, even on systems where they are
- interpreted by default. The xxppgg__eecchhoo shell option may be used
- to dynamically determine whether or not eecchhoo expands these
- escape characters by default. eecchhoo does not interpret ---- to
- mean the end of options. eecchhoo interprets the following escape
- sequences:
+ is given, interpretation of the following backslash-escaped
+ characters is enabled. The --EE option disables the interpreta-
+ tion of these escape characters, even on systems where they are
+ interpreted by default. The xxppgg__eecchhoo shell option may be used
+ to dynamically determine whether or not eecchhoo expands these es-
+ cape characters by default. eecchhoo does not interpret ---- to mean
+ the end of options. eecchhoo interprets the following escape se-
+ quences:
\\aa alert (bell)
\\bb backspace
\\cc suppress further output
@@ -4712,89 +4785,92 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
\\tt horizontal tab
\\vv vertical tab
\\\\ backslash
- \\00_n_n_n the eight-bit character whose value is the octal value
+ \\00_n_n_n the eight-bit character whose value is the octal value
_n_n_n (zero to three octal digits)
- \\xx_H_H the eight-bit character whose value is the hexadecimal
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
value _H_H (one or two hex digits)
- \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
+ \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H (one to four hex digits)
\\UU_H_H_H_H_H_H_H_H
- the Unicode (ISO/IEC 10646) character whose value is the
+ the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits)
eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...]
- Enable and disable builtin shell commands. Disabling a builtin
+ Enable and disable builtin shell commands. Disabling a builtin
allows a disk command which has the same name as a shell builtin
- to be executed without specifying a full pathname, even though
- the shell normally searches for builtins before disk commands.
- If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are
- enabled. For example, to use the tteesstt binary found via the PPAATTHH
- instead of the shell builtin version, run ``enable -n test''.
- The --ff option means to load the new builtin command _n_a_m_e from
+ to be executed without specifying a full pathname, even though
+ the shell normally searches for builtins before disk commands.
+ If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are en-
+ abled. For example, to use the tteesstt binary found via the PPAATTHH
+ instead of the shell builtin version, run ``enable -n test''.
+ The --ff option means to load the new builtin command _n_a_m_e from
shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading.
- The --dd option will delete a builtin previously loaded with --ff.
+ The --dd option will delete a builtin previously loaded with --ff.
If no _n_a_m_e arguments are given, or if the --pp option is supplied,
a list of shell builtins is printed. With no other option argu-
- ments, the list consists of all enabled shell builtins. If --nn
- is supplied, only disabled builtins are printed. If --aa is sup-
- plied, the list printed includes all builtins, with an indica-
- tion of whether or not each is enabled. If --ss is supplied, the
- output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
- value is 0 unless a _n_a_m_e is not a shell builtin or there is an
+ ments, the list consists of all enabled shell builtins. If --nn
+ is supplied, only disabled builtins are printed. If --aa is sup-
+ plied, the list printed includes all builtins, with an indica-
+ tion of whether or not each is enabled. If --ss is supplied, the
+ output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
+ value is 0 unless a _n_a_m_e is not a shell builtin or there is an
error loading a new builtin from a shared object.
eevvaall [_a_r_g ...]
- The _a_r_gs are read and concatenated together into a single com-
- mand. This command is then read and executed by the shell, and
- its exit status is returned as the value of eevvaall. If there are
+ The _a_r_gs are read and concatenated together into a single com-
+ mand. This command is then read and executed by the shell, and
+ its exit status is returned as the value of eevvaall. If there are
no _a_r_g_s, or only null arguments, eevvaall returns 0.
eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]]
- If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
- is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
+ If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
+ is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
the --ll option is supplied, the shell places a dash at the begin-
- ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what
- _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
- an empty environment. If --aa is supplied, the shell passes _n_a_m_e
+ ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_-
+ _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
+ an empty environment. If --aa is supplied, the shell passes _n_a_m_e
as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can-
- not be executed for some reason, a non-interactive shell exits,
- unless the eexxeeccffaaiill shell option is enabled. In that case, it
- returns failure. An interactive shell returns failure if the
- file cannot be executed. A subshell exits unconditionally if
- eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
- effect in the current shell, and the return status is 0. If
+ not be executed for some reason, a non-interactive shell exits,
+ unless the eexxeeccffaaiill shell option is enabled. In that case, it
+ returns failure. An interactive shell returns failure if the
+ file cannot be executed. A subshell exits unconditionally if
+ eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
+ effect in the current shell, and the return status is 0. If
there is a redirection error, the return status is 1.
eexxiitt [_n]
- Cause the shell to exit with a status of _n. If _n is omitted,
+ Cause the shell to exit with a status of _n. If _n is omitted,
the exit status is that of the last command executed. A trap on
EEXXIITT is executed before the shell terminates.
eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ...
eexxppoorrtt --pp
- The supplied _n_a_m_e_s are marked for automatic export to the envi-
- ronment of subsequently executed commands. If the --ff option is
- given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
- if the --pp option is supplied, a list of names of all exported
- variables is printed. The --nn option causes the export property
+ The supplied _n_a_m_e_s are marked for automatic export to the envi-
+ ronment of subsequently executed commands. If the --ff option is
+ given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
+ if the --pp option is supplied, a list of names of all exported
+ variables is printed. The --nn option causes the export property
to be removed from each _n_a_m_e. If a variable name is followed by
=_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns
an exit status of 0 unless an invalid option is encountered, one
- of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
+ of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
plied with a _n_a_m_e that is not a function.
ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t]
ffcc --ss [_p_a_t=_r_e_p] [_c_m_d]
- The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
- from the history list and displays or edits and re-executes
- them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
- the last command beginning with that string) or as a number (an
- index into the history list, where a negative number is used as
- an offset from the current command number). 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 first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
+ from the history list and displays or edits and re-executes
+ them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
+ the last command beginning with that string) or as a number (an
+ index into the history list, where a negative number is used as
+ an offset from the current command number). When listing, a
+ _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to
+ the current command (usually the ffcc command); otherwise 0 is
+ equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified,
+ it is set to the current command for listing (so that ``fc -l
+ -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If
+ _f_i_r_s_t is not specified, it is set to the previous command for
+ editing and -16 for listing.
The --nn option suppresses the command numbers when listing. The
--rr option reverses the order of the commands. If the --ll option
@@ -4811,8 +4887,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
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
+ If the first form is used, the return value is 0 unless an in-
+ valid option is encountered or _f_i_r_s_t or _l_a_s_t specify history
lines out of range. If the --ee option is supplied, the return
value is the value of the last command executed or failure if an
error occurs with the temporary file of commands. If the second
@@ -4829,73 +4905,74 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
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 _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g _._._.]
ggeettooppttss is used by shell procedures to parse positional parame-
ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog-
- nized; if a character is followed by a colon, the option is
- 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
+ nized; if a character is followed by a colon, the option is ex-
+ pected to have an argument, which should be separated from it by
+ white space. The colon and question mark characters may not be
+ used as option characters. Each time it is invoked, ggeettooppttss
places the next option in the shell variable _n_a_m_e, initializing
_n_a_m_e if it does not exist, and the index of the next argument to
be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to
- 1 each time the shell or a shell script is invoked. When an
- option requires an argument, ggeettooppttss places that argument into
- the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati-
- cally; it must be manually reset between multiple calls to
- ggeettooppttss within the same shell invocation if a new set of parame-
- ters is to be used.
+ 1 each time the shell or a shell script is invoked. When an op-
+ tion requires an argument, ggeettooppttss places that argument into the
+ variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically;
+ it must be manually reset between multiple calls to ggeettooppttss
+ within the same shell invocation if a new set of parameters is
+ to be used.
- When the end of options is encountered, ggeettooppttss exits with a
- return value greater than zero. OOPPTTIINNDD is set to the index of
- the first non-option argument, and _n_a_m_e is set to ?.
+ When the end of options is encountered, ggeettooppttss exits with a re-
+ turn value greater than zero. OOPPTTIINNDD is set to the index of the
+ first non-option argument, and _n_a_m_e is set to ?.
ggeettooppttss normally parses the positional parameters, but if more
- arguments are 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-
+ arguments are supplied as _a_r_g values, ggeettooppttss parses those in-
+ stead.
+
+ ggeettooppttss can report errors in two ways. If the first character
+ of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In
+ normal operation, diagnostic messages are printed when invalid
+ options or missing option arguments are encountered. If the
+ variable OOPPTTEERRRR is set to 0, no error messages will be dis-
played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon.
If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if
- not silent, prints an error message and unsets OOPPTTAARRGG. If
- ggeettooppttss is silent, the option character found is placed in
- OOPPTTAARRGG and no diagnostic message is printed.
-
- If a required argument is not found, and ggeettooppttss is not silent,
- a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
- diagnostic message is printed. If ggeettooppttss is silent, then a
- colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
+ not silent, prints an error message and unsets OOPPTTAARRGG. If
+ ggeettooppttss is silent, the option character found is placed in OOPP--
+ TTAARRGG and no diagnostic message is printed.
+
+ If a required argument is not found, and ggeettooppttss is not silent,
+ a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
+ diagnostic message is printed. If ggeettooppttss is silent, then a
+ colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
character found.
- ggeettooppttss returns true if an option, specified or unspecified, is
+ ggeettooppttss returns true if an option, specified or unspecified, is
found. It returns false if the end of options is encountered or
an error occurs.
hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e]
Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e
- is determined by searching the directories in $$PPAATTHH and remem-
+ is determined by searching the directories in $$PPAATTHH and remem-
bered. Any previously-remembered pathname is discarded. If the
--pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e
- is used as the full filename of the command. The --rr option
- causes the shell to forget all remembered locations. The --dd
- option causes the shell to forget the remembered location of
- each _n_a_m_e. If the --tt option is supplied, the full pathname to
- which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu-
- ments are supplied with --tt, the _n_a_m_e is printed before the
- hashed full pathname. The --ll option causes output to be dis-
- played in a format that may be reused as input. If no arguments
- are given, or if only --ll is supplied, information about remem-
- bered commands is printed. The return status is true unless a
- _n_a_m_e is not found or an invalid option is supplied.
+ is used as the full filename of the command. The --rr option
+ causes the shell to forget all remembered locations. The --dd op-
+ tion causes the shell to forget the remembered location of each
+ _n_a_m_e. If the --tt option is supplied, the full pathname to which
+ each _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments
+ are supplied with --tt, the _n_a_m_e is printed before the hashed full
+ pathname. The --ll option causes output to be displayed in a for-
+ mat that may be reused as input. If no arguments are given, or
+ if only --ll is supplied, information about remembered commands is
+ printed. The return status is true unless a _n_a_m_e is not found
+ or an invalid option is supplied.
hheellpp [--ddmmss] [_p_a_t_t_e_r_n]
- Display helpful information about builtin commands. If _p_a_t_t_e_r_n
- is specified, hheellpp gives detailed help on all commands matching
- _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
+ Display helpful information about builtin commands. If _p_a_t_t_e_r_n
+ is specified, hheellpp gives detailed help on all commands matching
+ _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
structures is printed.
--dd Display a short description of each _p_a_t_t_e_r_n
--mm Display the description of each _p_a_t_t_e_r_n in a manpage-like
@@ -4913,53 +4990,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
hhiissttoorryy --ss _a_r_g [_a_r_g _._._.]
With no options, display the command history list with line num-
bers. Lines listed with a ** have been modified. An argument of
- _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
- FFOORRMMAATT is set and not null, it is used as a format string for
- _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
- played history entry. No intervening blank is printed between
- the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
- supplied, it is used as the name of the history file; if not,
- the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
+ _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
+ FFOORRMMAATT is set and not null, it is used as a format string for
+ _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
+ played history entry. No intervening blank is printed between
+ the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
+ supplied, it is used as the name of the history file; if not,
+ the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
following meanings:
--cc Clear the history list by deleting all the entries.
--dd _o_f_f_s_e_t
- Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
+ Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
is negative, it is interpreted as relative to one greater
than the last history position, so negative indices count
- back from the end of the history, and an index of -1
+ back from the end of the history, and an index of -1
refers to the current hhiissttoorryy --dd command.
--dd _s_t_a_r_t-_e_n_d
- Delete the history entries between positions _s_t_a_r_t and
- _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
+ Delete the history entries between positions _s_t_a_r_t and
+ _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
and _e_n_d are interpreted as described above.
- --aa Append the ``new'' history lines to the history file.
- These are history lines entered since the beginning of
+ --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 ap-
+ pended to the history file since the beginning of the
current bbaasshh session.
- --rr Read the contents of the history file and append them to
+ --rr Read the contents of the history file and append them to
the current history list.
--ww Write the current history list to the history file, over-
writing the history file's contents.
- --pp Perform history substitution on the following _a_r_g_s and
- display the result on the standard output. Does not
- store the results in the history list. Each _a_r_g must be
+ --pp Perform history substitution on the following _a_r_g_s and
+ display the result on the standard output. Does not
+ store the results in the history list. Each _a_r_g must be
quoted to disable normal history expansion.
- --ss Store the _a_r_g_s in the history list as a single entry.
- The last command in the history list is removed before
+ --ss Store the _a_r_g_s in the history list as a single entry.
+ The last command in the history list is removed before
the _a_r_g_s are added.
- If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
- tion associated with each history entry is written to the his-
- tory file, marked with the history comment character. When the
- history file is read, lines beginning with the history comment
- character followed immediately by a digit are interpreted as
+ If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
+ tion associated with each history entry is written to the his-
+ tory file, marked with the history comment character. When the
+ history file is read, lines beginning with the history comment
+ character followed immediately by a digit are interpreted as
timestamps for the following history entry. The return value is
0 unless an invalid option is encountered, an error occurs while
- reading or writing the history file, an invalid _o_f_f_s_e_t is sup-
+ 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.
@@ -4968,147 +5045,154 @@ 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
+ --nn Display information only about jobs that have changed
status since the user was last notified of their status.
- --pp List only the process ID of the job's process group
+ --pp List only the process ID of the job's process group
leader.
--rr Display only running jobs.
--ss Display only stopped jobs.
- If _j_o_b_s_p_e_c is given, output is restricted to information about
- that job. The return status is 0 unless an invalid option is
+ If _j_o_b_s_p_e_c is given, output is restricted to information about
+ that job. The return status is 0 unless an invalid option is
encountered or an invalid _j_o_b_s_p_e_c is supplied.
If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in
- _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and
- executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status.
+ _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and ex-
+ ecutes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status.
kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ...
kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s]
- Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
- named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
- signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
- a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
- present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
- signal names. If any arguments are supplied when --ll is given,
- the names of the signals corresponding to the arguments are
+ Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
+ named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
+ signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
+ a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
+ present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
+ signal names. If any arguments are supplied when --ll is given,
+ the names of the signals corresponding to the arguments are
listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to
- --ll is a number specifying either a signal number or the exit
- status of a process terminated by a signal. The --LL option is
- equivalent to --ll. kkiillll returns true if at least one signal was
- successfully sent, or false if an error occurs or an invalid
- option is encountered.
+ --ll is a number specifying either a signal number or the exit
+ status of a process terminated by a signal. The --LL option is
+ equivalent to --ll. kkiillll returns true if at least one signal was
+ successfully sent, or false if an error occurs or an invalid op-
+ tion is encountered.
lleett _a_r_g [_a_r_g ...]
Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH--
- MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett
+ MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett
returns 1; 0 is returned otherwise.
llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ]
- For each argument, a local variable named _n_a_m_e is created, and
- assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
+ For each argument, a local variable named _n_a_m_e is created, and
+ assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
by ddeeccllaarree. When llooccaall is used within a function, it causes the
- variable _n_a_m_e to have a visible scope restricted to that func-
- tion and its children. If _n_a_m_e is -, the set of shell options
- is made local to the function in which llooccaall is invoked: shell
- options changed using the sseett builtin inside the function are
- restored to their original values when the function returns.
- With no operands, llooccaall writes a list of local variables to the
- standard output. It is an error to use llooccaall when not within a
- 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.
+ The restore is effected as if a series of sseett commands were exe-
+ cuted to restore the values that were in place before the func-
+ tion. With no operands, llooccaall writes a list of local variables
+ to the standard output. It is an error to use llooccaall when not
+ within a function. The return status is 0 unless llooccaall is used
+ outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a
+ readonly variable.
llooggoouutt Exit a login shell.
- mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
+ mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
- Read lines from the standard input into the indexed array vari-
- able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
- plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
+ Read lines from the standard input into the indexed array vari-
+ able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
+ plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
supplied, have the following meanings:
- --dd The first character of _d_e_l_i_m is used to terminate each
- input line, rather than newline. If _d_e_l_i_m is the empty
+ --dd The first character of _d_e_l_i_m is used to terminate each
+ input line, rather than newline. If _d_e_l_i_m is the empty
string, mmaappffiillee will terminate a line when it reads a NUL
character.
- --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
+ --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
copied.
- --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
+ --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
index is 0.
--ss Discard the first _c_o_u_n_t lines read.
- --tt Remove a trailing _d_e_l_i_m (default newline) from each line
+ --tt Remove a trailing _d_e_l_i_m (default newline) from each line
read.
- --uu Read lines from file descriptor _f_d instead of the stan-
+ --uu Read lines from file descriptor _f_d instead of the stan-
dard input.
- --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
+ --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
--cc option specifies _q_u_a_n_t_u_m.
- --cc Specify the number of lines read between each call to
+ --cc Specify the number of lines read between each call to
_c_a_l_l_b_a_c_k.
- If --CC is specified without --cc, the default quantum is 5000.
+ If --CC is specified without --cc, the default quantum is 5000.
When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next
array element to be assigned and the line to be assigned to that
- element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
+ element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
the line is read but before the array element is assigned.
- If not supplied with an explicit origin, mmaappffiillee will clear
- _a_r_r_a_y before assigning to it.
+ 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
- manipulated.
- ++_n Removes the _nth entry counting from the left of the list
- shown by ddiirrss, starting with zero. For example: ``popd
+ --nn Suppresses the normal change of directory when removing
+ directories from the stack, so that only the stack is ma-
+ nipulated.
+ ++_n Removes the _nth entry counting from the left of the list
+ shown by ddiirrss, starting with zero. For example: ``popd
+0'' removes the first directory, ``popd +1'' the second.
--_n Removes the _nth entry counting from the right of the list
- shown by ddiirrss, starting with zero. For example: ``popd
- -0'' removes the last directory, ``popd -1'' the next to
+ shown by ddiirrss, starting with zero. For example: ``popd
+ -0'' removes the last directory, ``popd -1'' the next to
last.
- If the ppooppdd command is successful, a ddiirrss is performed as well,
- and the return status is 0. ppooppdd returns false if an invalid
+ If the ppooppdd command is successful, a ddiirrss is performed as well,
+ and the return status is 0. ppooppdd returns false if an invalid
option is encountered, the directory stack is empty, a non-exis-
tent directory stack entry is specified, or the directory change
fails.
pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s]
- Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
- control of the _f_o_r_m_a_t. The --vv option causes the output to be
- assigned to the variable _v_a_r rather than being printed to the
+ Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
+ control of the _f_o_r_m_a_t. The --vv option causes the output to be
+ assigned to the variable _v_a_r rather than being printed to the
standard output.
- The _f_o_r_m_a_t is a character string which contains three types of
- objects: plain characters, which are simply copied to standard
- output, character escape sequences, which are converted and
- copied to the standard output, and format specifications, each
- of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
+ The _f_o_r_m_a_t is a character string which contains three types of
+ objects: plain characters, which are simply copied to standard
+ output, character escape sequences, which are converted and
+ copied to the standard output, and format specifications, each
+ of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff
interprets the following extensions:
%%bb causes pprriinnttff to expand backslash escape sequences in the
corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee.
- %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
+ %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
format that can be reused as shell input.
%%((_d_a_t_e_f_m_t))TT
- causes pprriinnttff to output the date-time string resulting
- from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
+ causes pprriinnttff to output the date-time string resulting
+ from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
The corresponding _a_r_g_u_m_e_n_t is an integer representing the
- number of seconds since the epoch. Two special argument
- values may be used: -1 represents the current time, and
- -2 represents the time the shell was invoked. If no
- argument is specified, conversion behaves as if -1 had
- been given. This is an exception to the usual pprriinnttff
- behavior.
+ number of seconds since the epoch. Two special argument
+ values may be used: -1 represents the current time, and
+ -2 represents the time the shell was invoked. If no ar-
+ gument is specified, conversion behaves as if -1 had been
+ given. This is an exception to the usual pprriinnttff behav-
+ ior.
+
+ The %b, %q, and %T directives all use the field width and preci-
+ sion arguments from the format specification and write that many
+ bytes from (or use that wide a field for) the expanded argument,
+ which usually contains more characters than the original.
Arguments to non-string format specifiers are treated as C con-
stants, except that a leading plus or minus sign is allowed, and
@@ -5125,8 +5209,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
ppuusshhdd [--nn] [_d_i_r]
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
- directory. With no arguments, ppuusshhdd exchanges the top two
- directories and returns 0, unless the directory stack is empty.
+ directory. With no arguments, ppuusshhdd exchanges the top two di-
+ rectories and returns 0, unless the directory stack is empty.
Arguments, if supplied, have the following meanings:
--nn Suppresses the normal change of directory when rotating
or adding directories to the stack, so that only the
@@ -5154,33 +5238,33 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command
is enabled. If the --LL option is used, the pathname printed may
contain symbolic links. The return status is 0 unless an error
- occurs while reading the name of the current directory or an
- invalid option is supplied.
+ occurs while reading the name of the current directory or an in-
+ valid option is supplied.
rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp
_p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...]
- One line is read from the standard input, or from the file
- descriptor _f_d supplied as an argument to the --uu option, split
- into words as described above under WWoorrdd SSpplliittttiinngg, and the
- first word is assigned to the first _n_a_m_e, the second word to the
- second _n_a_m_e, and so on. If there are more words than names, the
+ One line is read from the standard input, or from the file de-
+ scriptor _f_d supplied as an argument to the --uu option, split into
+ words as described above under WWoorrdd SSpplliittttiinngg, and the first
+ word is assigned to the first _n_a_m_e, the second word to the sec-
+ ond _n_a_m_e, and so on. If there are more words than names, the
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
+ words using the same rules the shell uses for expansion (de-
+ scribed above under WWoorrdd SSpplliittttiinngg). The backslash character
(\\) may be used to remove any special meaning for the next char-
acter read and for line continuation. Options, if supplied,
have the following meanings:
--aa _a_n_a_m_e
The words are assigned to sequential indices of the array
variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any
- new values are assigned. Other _n_a_m_e arguments are
- ignored.
+ new values are assigned. Other _n_a_m_e arguments are ig-
+ nored.
--dd _d_e_l_i_m
- The first character of _d_e_l_i_m is used to terminate the
- input line, rather than newline. If _d_e_l_i_m is the empty
+ The first character of _d_e_l_i_m is used to terminate the in-
+ put line, rather than newline. If _d_e_l_i_m is the empty
string, rreeaadd will terminate a line when it reads a NUL
character.
--ee If the standard input is coming from a terminal, rreeaaddlliinnee
@@ -5225,128 +5309,129 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
reading input from a terminal, pipe, or other special
file; it has no effect when reading from regular files.
If rreeaadd times out, rreeaadd saves any partial input read into
- the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd
- returns immediately, without trying to read any data.
- The exit status is 0 if input is available on the speci-
- fied file descriptor, non-zero otherwise. The exit sta-
- tus is greater than 128 if the timeout is exceeded.
+ the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re-
+ turns immediately, without trying to read any data. The
+ exit status is 0 if input is available on the specified
+ file descriptor, non-zero otherwise. The exit status is
+ greater than 128 if the timeout is exceeded.
--uu _f_d Read input from file descriptor _f_d.
- If no _n_a_m_e_s are supplied, the line read is assigned to the vari-
- able RREEPPLLYY. The exit status is zero, unless end-of-file is
- 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.
+ If no _n_a_m_e_s are supplied, the line read, without the ending de-
+ limiter but otherwise unmodified, is assigned to the variable
+ RREEPPLLYY. The exit status is zero, unless end-of-file is encoun-
+ tered, rreeaadd times out (in which case the status is greater than
+ 128), a variable assignment error (such as assigning to a read-
+ only variable) occurs, or an invalid file descriptor is supplied
+ as the argument to --uu.
rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...]
- The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s
- may not be changed by subsequent assignment. If the --ff option
- is supplied, the functions corresponding to the _n_a_m_e_s are so
- marked. The --aa option restricts the variables to indexed
- 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 ar-
+ rays; the --AA option restricts the variables to associative ar-
+ rays. If both options are supplied, --AA takes precedence. If no
+ _n_a_m_e arguments are given, or if the --pp option is supplied, a
list of all readonly names is printed. The other options may be
- used to restrict the output to a subset of the set of readonly
- names. The --pp option causes output to be displayed in a format
- that may be reused as input. If a variable name is followed by
- =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
- status is 0 unless an invalid option is encountered, one of the
+ used to restrict the output to a subset of the set of readonly
+ names. The --pp option causes output to be displayed in a format
+ that may be reused as input. If a variable name is followed by
+ =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
+ status is 0 unless an invalid option is encountered, one of the
_n_a_m_e_s is not a valid shell variable name, or --ff is supplied with
a _n_a_m_e that is not a function.
rreettuurrnn [_n]
- Causes a function to stop executing and return the value speci-
- fied by _n to its caller. If _n is omitted, the return status is
- that of the last command executed in the function body. If
- rreettuurrnn is executed by a trap handler, the last command used to
- determine the status is the last command executed before the
- trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the
- last command used to determine the status is the last command
- executed by the trap handler before rreettuurrnn was invoked. If
- rreettuurrnn is used outside a function, but during execution of a
- script by the .. (ssoouurrccee) command, it causes the shell to stop
- executing that script and return either _n or the exit status of
- the last command executed within the script as the exit status
- of the script. If _n is supplied, the return value is its least
- significant 8 bits. The return status is non-zero if rreettuurrnn is
- supplied a non-numeric argument, or is used outside a function
- and not during execution of a script by .. or ssoouurrccee. Any com-
- mand associated with the RREETTUURRNN trap is executed before execu-
- tion resumes after the function or script.
+ Causes a function to stop executing and return the value speci-
+ fied by _n to its caller. If _n is omitted, the return status is
+ that of the last command executed in the function body. If rree--
+ ttuurrnn is executed by a trap handler, the last command used to de-
+ termine the status is the last command executed before the trap
+ handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last
+ command used to determine the status is the last command exe-
+ cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn
+ is used outside a function, but during execution of a script by
+ the .. (ssoouurrccee) command, it causes the shell to stop executing
+ that script and return either _n or the exit status of the last
+ command executed within the script as the exit status of the
+ script. If _n is supplied, the return value is its least signif-
+ icant 8 bits. The return status is non-zero if rreettuurrnn is sup-
+ plied a non-numeric argument, or is used outside a function and
+ not during execution of a script by .. or ssoouurrccee. Any command
+ associated with the RREETTUURRNN trap is executed before execution re-
+ sumes after the function or script.
sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- Without options, the name and value of each shell variable are
+ Without options, the name and value of each shell variable are
displayed in a format that can be reused as input for setting or
resetting the currently-set variables. Read-only variables can-
- not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
- The output is sorted according to the current locale. When
- options are specified, they set or unset shell attributes. Any
- arguments remaining after option processing are treated as val-
+ not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
+ The output is sorted according to the current locale. When op-
+ tions are specified, they set or unset shell attributes. Any
+ arguments remaining after option processing are treated as val-
ues for the positional parameters and are assigned, in order, to
- $$11, $$22, ...... $$_n. Options, if specified, have the following
+ $$11, $$22, ...... $$_n. Options, if specified, have the following
meanings:
--aa Each variable or function that is created or modified is
- given the export attribute and marked for export to the
+ given the export attribute and marked for export to the
environment of subsequent commands.
- --bb Report the status of terminated background jobs immedi-
+ --bb Report the status of terminated background jobs immedi-
ately, rather than before the next primary prompt. This
is effective only when job control is enabled.
- --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
- single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
+ --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
+ single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
(see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status.
- The shell does not exit if the command that fails is
- part of the command list immediately following a wwhhiillee
- or uunnttiill keyword, part of the test following the iiff or
- eelliiff reserved words, part of any command executed in a
- &&&& or |||| list except the command following the final &&&&
+ The shell does not exit if the command that fails is
+ part of the command list immediately following a wwhhiillee
+ or uunnttiill keyword, part of the test following the iiff or
+ eelliiff reserved words, part of any command executed in a
+ &&&& or |||| list except the command following the final &&&&
or ||||, any command in a pipeline but the last, or if the
- command's return value is being inverted with !!. If a
- compound command other than a subshell returns a non-
- zero status because a command failed while --ee was being
- ignored, the shell does not exit. A trap on EERRRR, if
- set, is executed before the shell exits. This option
+ command's return value is being inverted with !!. If a
+ compound command other than a subshell returns a non-
+ zero status because a command failed while --ee was being
+ ignored, the shell does not exit. A trap on EERRRR, if
+ set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi-
- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
+ ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
above), and may cause subshells to exit before executing
all the commands in the subshell.
- If a compound command or shell function executes in a
- context where --ee is being ignored, none of the commands
- executed within the compound command or function body
- will be affected by the --ee setting, even if --ee is set
- and a command returns a failure status. If a compound
- command or shell function sets --ee while executing in a
- context where --ee is ignored, that setting will not have
- any effect until the compound command or the command
+ If a compound command or shell function executes in a
+ context where --ee is being ignored, none of the commands
+ executed within the compound command or function body
+ will be affected by the --ee setting, even if --ee is set
+ and a command returns a failure status. If a compound
+ command or shell function sets --ee while executing in a
+ context where --ee is ignored, that setting will not have
+ any effect until the compound command or the command
containing the function call completes.
--ff Disable pathname expansion.
- --hh Remember the location of commands as they are looked up
+ --hh Remember the location of commands as they are looked up
for execution. This is enabled by default.
- --kk All arguments in the form of assignment statements are
- placed in the environment for a command, not just those
+ --kk All arguments in the form of assignment statements are
+ placed in the environment for a command, not just those
that precede the command name.
- --mm Monitor mode. Job control is enabled. This option is
- on by default for interactive shells on systems that
- support it (see JJOOBB CCOONNTTRROOLL above). All processes run
+ --mm Monitor mode. Job control is enabled. This option is
+ on by default for interactive shells on systems that
+ support it (see JJOOBB CCOONNTTRROOLL above). All processes run
in a separate process group. When a background job com-
pletes, the shell prints a line containing its exit sta-
tus.
--nn Read commands but do not execute them. This may be used
- to check a shell script for syntax errors. This is
- ignored by interactive shells.
+ to check a shell script for syntax errors. This is ig-
+ nored by interactive shells.
--oo _o_p_t_i_o_n_-_n_a_m_e
The _o_p_t_i_o_n_-_n_a_m_e can be one of the following:
aalllleexxppoorrtt
Same as --aa.
bbrraacceeeexxppaanndd
Same as --BB.
- eemmaaccss Use an emacs-style command line editing inter-
+ eemmaaccss Use an emacs-style command line editing inter-
face. This is enabled by default when the shell
is interactive, unless the shell is started with
- the ----nnooeeddiittiinngg option. This also affects the
+ the ----nnooeeddiittiinngg option. This also affects the
editing interface used for rreeaadd --ee.
eerrrreexxiitt Same as --ee.
eerrrrttrraaccee
@@ -5360,9 +5445,9 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
HHIISSTTOORRYY. This option is on by default in inter-
active shells.
iiggnnoorreeeeooff
- The effect is as if the shell command
- ``IGNOREEOF=10'' had been executed (see SShheellll
- VVaarriiaabblleess above).
+ The effect is as if the shell command ``IG-
+ NOREEOF=10'' had been executed (see SShheellll VVaarrii--
+ aabblleess above).
kkeeyywwoorrdd Same as --kk.
mmoonniittoorr Same as --mm.
nnoocclloobbbbeerr
@@ -5376,450 +5461,452 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
pphhyyssiiccaall
Same as --PP.
ppiippeeffaaiill
- If set, the return value of a pipeline is the
- value of the last (rightmost) command to exit
- with a non-zero status, or zero if all commands
- in the pipeline exit successfully. This option
+ If set, the return value of a pipeline is the
+ value of the last (rightmost) command to exit
+ with a non-zero status, or zero if all commands
+ in the pipeline exit successfully. This option
is disabled by default.
- ppoossiixx Change the behavior of bbaasshh where the default
- operation differs from the POSIX standard to
- match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
+ ppoossiixx Change the behavior of bbaasshh where the default
+ operation differs from the POSIX standard to
+ match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
below for a reference to a document that details
how posix mode affects bash's behavior.
pprriivviilleeggeedd
Same as --pp.
vveerrbboossee Same as --vv.
- vvii Use a vi-style command line editing interface.
+ vvii Use a vi-style command line editing interface.
This also affects the editing interface used for
rreeaadd --ee.
xxttrraaccee Same as --xx.
If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the
- current options are printed. If ++oo is supplied with no
- _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
- current option settings is displayed on the standard
+ current options are printed. If ++oo is supplied with no
+ _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
+ current option settings is displayed on the standard
output.
- --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
- $$BBAASSHH__EENNVV files are not processed, shell functions are
- not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
- BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they
- appear in the environment, are ignored. If the shell is
- started with the effective user (group) id not equal to
- the real user (group) id, and the --pp option is not sup-
+ --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
+ $$BBAASSHH__EENNVV files are not processed, shell functions are
+ not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
+ BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
+ pear in the environment, are ignored. If the shell is
+ started with the effective user (group) id not equal to
+ the real user (group) id, and the --pp option is not sup-
plied, these actions are taken and the effective user id
- is set to the real user id. If the --pp option is sup-
- plied at startup, the effective user id is not reset.
- Turning this option off causes the effective user and
+ is set to the real user id. If the --pp option is sup-
+ plied at startup, the effective user id is not reset.
+ Turning this option off causes the effective user and
group ids to be set to the real user and group ids.
--tt Exit after reading and executing one command.
--uu Treat unset variables and parameters other than the spe-
- cial parameters "@" and "*" as an error when performing
- parameter expansion. If expansion is attempted on an
- unset variable or parameter, the shell prints an error
- message, and, if not interactive, exits with a non-zero
+ cial parameters "@" and "*" as an error when performing
+ parameter expansion. If expansion is attempted on an
+ unset variable or parameter, the shell prints an error
+ message, and, if not interactive, exits with a non-zero
status.
--vv Print shell input lines as they are read.
- --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
+ --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
command, sseelleecctt command, or arithmetic ffoorr command, dis-
- play the expanded value of PPSS44, followed by the command
+ play the expanded value of PPSS44, followed by the command
and its expanded arguments or associated word list.
- --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
+ --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
above). This is on by default.
- --CC If set, bbaasshh does not overwrite an existing file with
- the >>, >>&&, and <<>> redirection operators. This may be
+ --CC If set, bbaasshh does not overwrite an existing file with
+ the >>, >>&&, and <<>> redirection operators. This may be
overridden when creating output files by using the redi-
rection operator >>|| instead of >>.
--EE If set, any trap on EERRRR is inherited by shell functions,
- command substitutions, and commands executed in a sub-
- shell environment. The EERRRR trap is normally not inher-
+ command substitutions, and commands executed in a sub-
+ shell environment. The EERRRR trap is normally not inher-
ited in such cases.
--HH Enable !! style history substitution. This option is on
by default when the shell is interactive.
- --PP If set, the shell does not resolve symbolic links when
- executing commands such as ccdd that change the current
+ --PP If set, the shell does not resolve symbolic links when
+ executing commands such as ccdd that change the current
working directory. It uses the physical directory
structure instead. By default, bbaasshh follows the logical
- chain of directories when performing commands which
+ chain of directories when performing commands which
change the current directory.
- --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
- shell functions, command substitutions, and commands
- executed in a subshell environment. The DDEEBBUUGG and
- RREETTUURRNN traps are normally not inherited in such cases.
- ---- If no arguments follow this option, then the positional
+ --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
+ shell functions, command substitutions, and commands ex-
+ ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN
+ traps are normally not inherited in such cases.
+ ---- If no arguments follow this option, then the positional
parameters are unset. Otherwise, the positional parame-
- ters are set to the _a_r_gs, even if some of them begin
+ ters are set to the _a_r_gs, even if some of them begin
with a --.
- -- Signal the end of options, cause all remaining _a_r_gs to
+ -- Signal the end of options, cause all remaining _a_r_gs to
be assigned to the positional parameters. The --xx and --vv
options are turned off. If there are no _a_r_gs, the posi-
tional parameters remain unchanged.
- The options are off by default unless otherwise noted. Using +
- rather than - causes these options to be turned off. The
- options can also be specified as arguments to an invocation of
- the shell. The current set of options may be found in $$--. The
- return status is always true unless an invalid option is encoun-
+ The options are off by default unless otherwise noted. Using +
+ rather than - causes these options to be turned off. The op-
+ tions can also be specified as arguments to an invocation of the
+ shell. The current set of options may be found in $$--. The re-
+ turn status is always true unless an invalid option is encoun-
tered.
sshhiifftt [_n]
- The positional parameters from _n+1 ... are renamed to $$11 ........
- Parameters represented by the numbers $$## down to $$##-_n+1 are
- unset. _n must be a non-negative number less than or equal to
- $$##. If _n is 0, no parameters are changed. If _n is not given,
- it is assumed to be 1. If _n is greater than $$##, the positional
- parameters are not changed. The return status is greater than
- zero if _n is greater than $$## or less than zero; otherwise 0.
+ The positional parameters from _n+1 ... are renamed to $$11 ........
+ Parameters represented by the numbers $$## down to $$##-_n+1 are un-
+ set. _n must be a non-negative number less than or equal to $$##.
+ If _n is 0, no parameters are changed. If _n is not given, it is
+ assumed to be 1. If _n is greater than $$##, the positional param-
+ eters are not changed. The return status is greater than zero
+ if _n is greater than $$## or less than zero; otherwise 0.
sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...]
- Toggle the values of settings controlling optional shell behav-
- ior. The settings can be either those listed below, or, if the
+ Toggle the values of settings controlling optional shell behav-
+ ior. The settings can be either those listed below, or, if the
--oo option is used, those available with the --oo option to the sseett
builtin command. With no options, or with the --pp option, a list
- of all settable options is displayed, with an indication of
+ of all settable options is displayed, with an indication of
whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output
- is restricted to those options. The --pp option causes output to
- be displayed in a form that may be reused as input. Other
- options have the following meanings:
+ is restricted to those options. The --pp option causes output to
+ be displayed in a form that may be reused as input. Other op-
+ tions have the following meanings:
--ss Enable (set) each _o_p_t_n_a_m_e.
--uu Disable (unset) each _o_p_t_n_a_m_e.
- --qq Suppresses normal output (quiet mode); the return status
+ --qq Suppresses normal output (quiet mode); the return status
indicates whether the _o_p_t_n_a_m_e is set or unset. If multi-
- ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
- tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
+ ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
+ tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
wise.
- --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
+ --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
the --oo option to the sseett builtin.
- If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
- shows only those options which are set or unset, respectively.
- Unless otherwise noted, the sshhoopptt options are disabled (unset)
+ If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
+ shows only those options which are set or unset, respectively.
+ Unless otherwise noted, the sshhoopptt options are disabled (unset)
by default.
- The return status when listing options is zero if all _o_p_t_n_a_m_e_s
- are enabled, non-zero otherwise. When setting or unsetting
- options, the return status is zero unless an _o_p_t_n_a_m_e is not a
+ The return status when listing options is zero if all _o_p_t_n_a_m_e_s
+ are enabled, non-zero otherwise. When setting or unsetting op-
+ tions, the return status is zero unless an _o_p_t_n_a_m_e is not a
valid shell option.
The list of sshhoopptt options is:
aassssoocc__eexxppaanndd__oonnccee
- If set, the shell suppresses multiple evaluation of
- associative array subscripts during arithmetic expres-
- sion evaluation, while executing builtins that can per-
- form variable assignments, and while executing builtins
- that perform array dereferencing.
- aauuttooccdd If set, a command name that is the name of a directory
- is executed as if it were the argument to the ccdd com-
+ If set, the shell suppresses multiple evaluation of as-
+ sociative array subscripts during arithmetic expression
+ evaluation, while executing builtins that can perform
+ variable assignments, and while executing builtins that
+ perform array dereferencing.
+ aauuttooccdd If set, a command name that is the name of a directory
+ is executed as if it were the argument to the ccdd com-
mand. This option is only used by interactive shells.
ccddaabbllee__vvaarrss
- If set, an argument to the ccdd builtin command that is
- not a directory is assumed to be the name of a variable
+ If set, an argument to the ccdd builtin command that is
+ not a directory is assumed to be the name of a variable
whose value is the directory to change to.
ccddssppeellll If set, minor errors in the spelling of a directory com-
- ponent in a ccdd command will be corrected. The errors
+ ponent in a ccdd command will be corrected. The errors
checked for are transposed characters, a missing charac-
- ter, and one character too many. If a correction is
- found, the corrected filename is printed, and the com-
- mand proceeds. This option is only used by interactive
+ ter, and one character too many. If a correction is
+ found, the corrected filename is printed, and the com-
+ mand proceeds. This option is only used by interactive
shells.
cchheecckkhhaasshh
If set, bbaasshh checks that a command found in the hash ta-
- ble exists before trying to execute it. If a hashed
- command no longer exists, a normal path search is per-
+ ble exists before trying to execute it. If a hashed
+ command no longer exists, a normal path search is per-
formed.
cchheecckkjjoobbss
If set, bbaasshh lists the status of any stopped and running
- jobs before exiting an interactive shell. If any jobs
+ jobs before exiting an interactive shell. If any jobs
are running, this causes the exit to be deferred until a
- second exit is attempted without an intervening command
- (see JJOOBB CCOONNTTRROOLL above). The shell always postpones
- exiting if any jobs are stopped.
+ second exit is attempted without an intervening command
+ (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex-
+ iting if any jobs are stopped.
cchheecckkwwiinnssiizzee
- If set, bbaasshh checks the window size after each external
- (non-builtin) command and, if necessary, updates the
- values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
+ If set, bbaasshh checks the window size after each external
+ (non-builtin) command and, if necessary, updates the
+ values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
default.
- ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
- line command in the same history entry. This allows
- easy re-editing of multi-line commands. This option is
- enabled by default, but only has an effect if command
+ ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
+ line command in the same history entry. This allows
+ easy re-editing of multi-line commands. This option is
+ enabled by default, but only has an effect if command
history is enabled, as described above under HHIISSTTOORRYY.
ccoommppaatt3311
- If set, bbaasshh changes its behavior to that of version 3.1
- with respect to quoted arguments to the [[[[ conditional
- command's ==~~ operator and locale-specific string compar-
- ison when using the [[[[ conditional command's << and >>
- operators. Bash versions prior to bash-4.1 use ASCII
- collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur-
- rent locale's collation sequence and _s_t_r_c_o_l_l(3).
ccoommppaatt3322
- If set, bbaasshh changes its behavior to that of version 3.2
- with respect to locale-specific string comparison when
- using the [[[[ conditional command's << and >> operators
- (see previous item) 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
- in the list.
ccoommppaatt4411
- If set, bbaasshh, when in _p_o_s_i_x _m_o_d_e, treats a single quote
- in a double-quoted parameter expansion as a special
- character. The single quotes must match (an even num-
- ber) and the characters between the single quotes are
- considered quoted. This is the behavior of posix mode
- through version 4.1. The default bash behavior remains
- as in previous versions.
ccoommppaatt4422
- If set, bbaasshh does not process the replacement string in
- the pattern substitution word expansion using quote
- removal.
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).
ccoommppaatt4444
- If set, bbaasshh saves the positional parameters to
- BASH_ARGV and BASH_ARGC before they are used, regardless
- of whether or not extended debugging mode is enabled.
+ These control aspects of the shell's compatibility mode
+ (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below).
+
ccoommpplleettee__ffuullllqquuoottee
- If set, bbaasshh quotes all shell metacharacters in file-
- names and directory names when performing completion.
+ If set, bbaasshh quotes all shell metacharacters in file-
+ names and directory names when performing completion.
If not set, bbaasshh removes metacharacters such as the dol-
- lar sign from the set of characters that will be quoted
- in completed filenames when these metacharacters appear
- in shell variable references in words to be completed.
- This means that dollar signs in variable names that
- 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 ex-
+ pand to directories will not be quoted; however, any
+ dollar signs appearing in filenames will not be quoted,
+ either. This is active only when bash is using back-
+ slashes to quote completed filenames. This variable is
+ set by default, which is the default bash behavior in
versions through 4.2.
+
ddiirreexxppaanndd
- If set, bbaasshh replaces directory names with the results
- of word expansion when performing filename completion.
- This changes the contents of the readline editing buf-
- fer. If not set, bbaasshh attempts to preserve what the
+ If set, bbaasshh replaces directory names with the results
+ of word expansion when performing filename completion.
+ This changes the contents of the readline editing buf-
+ fer. If not set, bbaasshh attempts to preserve what the
user typed.
+
ddiirrssppeellll
- If set, bbaasshh attempts spelling correction on directory
- names during word completion if the directory name ini-
+ If set, bbaasshh attempts spelling correction on directory
+ names during word completion if the directory name ini-
tially supplied does not exist.
- ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
- the results of pathname expansion. The filenames ````..''''
- and ````....'''' must always be matched explicitly, even if
+
+ ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
+ the results of pathname expansion. The filenames ````..''''
+ and ````....'''' must always be matched explicitly, even if
ddoottgglloobb is set.
+
eexxeeccffaaiill
If set, a non-interactive shell will not exit if it can-
- not execute the file specified as an argument to the
- eexxeecc builtin command. An interactive shell does not
+ not execute the file specified as an argument to the
+ eexxeecc builtin command. An interactive shell does not
exit if eexxeecc fails.
+
eexxppaanndd__aalliiaasseess
- If set, aliases are expanded as described above under
+ If set, aliases are expanded as described above under
AALLIIAASSEESS. This option is enabled by default for interac-
tive shells.
+
eexxttddeebbuugg
- If set at shell invocation, 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:
+ If set at shell invocation, or in a shell startup file,
+ arrange to execute the debugger profile before the shell
+ starts, identical to the ----ddeebbuuggggeerr option. If set af-
+ ter invocation, behavior intended for use by debuggers
+ is enabled:
+
11.. The --FF option to the ddeeccllaarree builtin displays the
source file name and line number corresponding to
each function name supplied as an argument.
+
22.. If the command run by the DDEEBBUUGG trap returns a
non-zero value, the next command is skipped and
not executed.
+
33.. If the command run by the DDEEBBUUGG trap returns a
value of 2, and the shell is executing in a sub-
routine (a shell function or a shell script exe-
cuted by the .. or ssoouurrccee builtins), 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-
tion, shell functions, and subshells invoked with
(( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps.
+
66.. Error tracing is enabled: command substitution,
shell functions, and subshells invoked with ((
_c_o_m_m_a_n_d )) inherit the EERRRR trap.
+
eexxttgglloobb If set, the extended pattern matching features described
above under PPaatthhnnaammee EExxppaannssiioonn are enabled.
+
eexxttqquuoottee
If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
quotes. This option is enabled by default.
+
ffaaiillgglloobb
If set, patterns which fail to match filenames during
pathname expansion result in an expansion error.
+
ffoorrccee__ffiiggnnoorree
If set, the suffixes specified by the FFIIGGNNOORREE shell
variable cause words to be ignored when performing word
completion even if the ignored words are the only possi-
- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a
- description of FFIIGGNNOORREE. This option is enabled by
- default.
+ ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de-
+ scription of FFIIGGNNOORREE. This option is enabled by de-
+ fault.
+
gglloobbaasscciiiirraannggeess
If set, range expressions used in pattern matching
bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave
as if in the traditional C locale when performing com-
- parisons. That is, the current locale's collating
- 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.
+ parisons. That is, the current locale's collating se-
+ quence is not taken into account, so bb will not collate
+ between AA and BB, and upper-case and lower-case ASCII
+ characters will collate together.
+
gglloobbssttaarr
If set, the pattern **** used in a pathname expansion con-
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a //,
only directories and subdirectories match.
+
ggnnuu__eerrrrffmmtt
If set, shell error messages are written in the standard
GNU error message format.
+
hhiissttaappppeenndd
If set, the history list is appended to the file named
- by the value of the HHIISSTTFFIILLEE variable when the shell
- exits, rather than overwriting the file.
+ by the value of the HHIISSTTFFIILLEE variable when the shell ex-
+ its, rather than overwriting the file.
+
hhiissttrreeeeddiitt
If set, and rreeaaddlliinnee is being used, a user is given the
opportunity to re-edit a failed history substitution.
+
hhiissttvveerriiffyy
If set, and rreeaaddlliinnee is being used, the results of his-
tory substitution are not immediately passed to the
shell parser. Instead, the resulting line is loaded
into the rreeaaddlliinnee editing buffer, allowing further modi-
fication.
+
hhoossttccoommpplleettee
If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to
perform hostname completion when a word containing a @@
is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE
above). This is enabled by default.
+
hhuuppoonneexxiitt
If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter-
active login shell exits.
+
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
- in an interactive shell (see CCOOMMMMEENNTTSS above). This
- option is enabled by default.
+ in an interactive shell (see CCOOMMMMEENNTTSS above). This op-
+ tion is enabled by default.
+
llaassttppiippee
If set, and job control is not active, the shell runs
the last command of a pipeline not executed in the back-
ground in the current shell environment.
+
lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
commands are saved to the history with embedded newlines
rather than using semicolon separators where possible.
+
llooccaallvvaarr__iinnhheerriitt
If set, local variables inherit the value and attributes
of a variable of the same name that exists at a previous
- scope before any new value is assigned. The nameref
- attribute is not inherited.
+ scope before any new value is assigned. The nameref at-
+ tribute is not inherited.
+
llooccaallvvaarr__uunnsseett
If set, calling uunnsseett on local variables in previous
function scopes marks them so subsequent lookups find
them unset until that function returns. This is identi-
cal to the behavior of unsetting local variables at the
current function scope.
+
llooggiinn__sshheellll
The shell sets this option if it is started as a login
shell (see IINNVVOOCCAATTIIOONN above). The value may not be
changed.
+
mmaaiillwwaarrnn
If set, and a file that bbaasshh is checking for mail has
been accessed since the last time it was checked, the
message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
played.
+
nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn
- If set, and rreeaaddlliinnee is being used, bbaasshh will not
- attempt to search the PPAATTHH for possible completions when
+ If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
+ tempt to search the PPAATTHH for possible completions when
completion is attempted on an empty line.
+
nnooccaasseegglloobb
If set, bbaasshh matches filenames in a case-insensitive
fashion when performing pathname expansion (see PPaatthhnnaammee
EExxppaannssiioonn above).
+
nnooccaasseemmaattcchh
If set, bbaasshh matches patterns in a case-insensitive
fashion when performing matching while executing ccaassee or
[[[[ conditional commands, 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,
rather than themselves.
+
pprrooggccoommpp
If set, the programmable completion facilities (see PPrroo--
ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is
enabled by default.
+
pprrooggccoommpp__aalliiaass
If set, and programmable completion is enabled, bbaasshh
treats a command name that doesn't have any completions
as a possible alias and attempts alias expansion. If it
- has an alias, bbaasshh attempts programmable completion
- using the command word resulting from the expanded
- alias.
+ has an alias, bbaasshh attempts programmable completion us-
+ ing the command word resulting from the expanded alias.
+
pprroommppttvvaarrss
If set, prompt strings undergo parameter expansion, com-
- mand substitution, arithmetic expansion, and quote
- removal after being expanded as described in PPRROOMMPPTTIINNGG
+ mand substitution, arithmetic expansion, and quote re-
+ moval after being expanded as described in PPRROOMMPPTTIINNGG
above. This option is enabled by default.
+
rreessttrriicctteedd__sshheellll
- The shell sets this option if it is started in
- restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value
- may not be changed. This is not reset when the startup
- files are executed, allowing the startup files to dis-
+ The shell sets this option if it is started in re-
+ stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value
+ may not be changed. This is not reset when the startup
+ files are executed, allowing the startup files to dis-
cover whether or not a shell is restricted.
+
sshhiifftt__vveerrbboossee
- If set, the sshhiifftt builtin prints an error message when
+ If set, the sshhiifftt builtin prints an error message when
the shift count exceeds the number of positional parame-
ters.
+
ssoouurrcceeppaatthh
If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to
- find the directory containing the file supplied as an
+ find the directory containing the file supplied as an
argument. This option is enabled by default.
+
xxppgg__eecchhoo
- If set, the eecchhoo builtin expands backslash-escape
- sequences by default.
+ If set, the eecchhoo builtin expands backslash-escape se-
+ quences by default.
ssuussppeenndd [--ff]
- Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
+ Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
signal. A login shell cannot be suspended; the --ff option can be
used to override this and force the suspension. The return sta-
- tus is 0 unless the shell is a login shell and --ff is not sup-
+ tus is 0 unless the shell is a login shell and --ff is not sup-
plied, or if job control is not enabled.
tteesstt _e_x_p_r
[[ _e_x_p_r ]]
Return a status of 0 (true) or 1 (false) depending on the evalu-
ation of the conditional expression _e_x_p_r. Each operator and op-
- erand must be a separate argument. Expressions are composed of
- the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
- tteesstt does not accept any options, nor does it accept and ignore
+ erand must be a separate argument. Expressions are composed of
+ the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
+ tteesstt does not accept any options, nor does it accept and ignore
an argument of ---- as signifying the end of options.
- Expressions may be combined using the following operators,
- listed in decreasing order of precedence. The evaluation
- depends on the number of arguments; see below. Operator prece-
+ Expressions may be combined using the following operators,
+ listed in decreasing order of precedence. The evaluation de-
+ pends on the number of arguments; see below. Operator prece-
dence is used when there are five or more arguments.
!! _e_x_p_r True if _e_x_p_r is false.
(( _e_x_p_r ))
- Returns the value of _e_x_p_r. This may be used to override
+ Returns the value of _e_x_p_r. This may be used to override
the normal precedence of operators.
_e_x_p_r_1 -aa _e_x_p_r_2
True if both _e_x_p_r_1 and _e_x_p_r_2 are true.
@@ -5836,134 +5923,135 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
null.
2 arguments
If the first argument is !!, the expression is true if and
- only if the second argument is null. If the first argu-
- ment is one of the unary conditional operators listed
- above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
+ only if the second argument is null. If the first argu-
+ ment is one of the unary conditional operators listed
+ above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the expression is
true if the unary test is true. If the first argument is
not a valid unary conditional operator, the expression is
false.
3 arguments
The following conditions are applied in the order listed.
- If the second argument is one of the binary conditional
+ If the second argument is one of the binary conditional
operators listed above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the
result of the expression is the result of the binary test
- using the first and third arguments as operands. The --aa
- and --oo operators are considered binary operators when
- there are three arguments. If the first argument is !!,
- the value is the negation of the two-argument test using
+ using the first and third arguments as operands. The --aa
+ and --oo operators are considered binary operators when
+ there are three arguments. If the first argument is !!,
+ the value is the negation of the two-argument test using
the second and third arguments. If the first argument is
exactly (( and the third argument is exactly )), the result
- is the one-argument test of the second argument. Other-
+ is the one-argument test of the second argument. Other-
wise, the expression is false.
4 arguments
If the first argument is !!, the result is the negation of
- the three-argument expression composed of the remaining
+ the three-argument expression composed of the remaining
arguments. Otherwise, the expression is parsed and eval-
- uated according to precedence using the rules listed
+ uated according to precedence using the rules listed
above.
5 or more arguments
- The expression is parsed and evaluated according to
+ The expression is parsed and evaluated according to
precedence using the rules listed above.
- When used with tteesstt or [[, the << and >> operators sort lexico-
+ When used with tteesstt or [[, the << and >> operators sort lexico-
graphically using ASCII ordering.
- ttiimmeess Print the accumulated user and system times for the shell and
+ ttiimmeess Print the accumulated user and system times for the shell and
for processes run from the shell. The return status is 0.
ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...]
- The command _a_r_g is to be read and executed when the shell
- receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a
- single _s_i_g_s_p_e_c) or --, each specified signal is reset to its
- original disposition (the value it had upon entrance to the
- shell). If _a_r_g is the null string the signal specified by each
- _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes.
- If _a_r_g is not present and --pp has been supplied, then the trap
- commands associated with each _s_i_g_s_p_e_c are displayed. If no
- arguments are supplied or if only --pp is given, ttrraapp prints the
- list of commands associated with each signal. The --ll option
- causes the shell to print a list of signal names and their cor-
- responding numbers. Each _s_i_g_s_p_e_c is either a signal name
- defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are
- case insensitive and the SSIIGG prefix is optional.
-
- If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
- from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
- cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
- _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
- first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR
- above). Refer to the description of the eexxttddeebbuugg option to the
+ The command _a_r_g is to be read and executed when the shell re-
+ ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin-
+ gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi-
+ nal disposition (the value it had upon entrance to the shell).
+ If _a_r_g is the null string the signal specified by each _s_i_g_s_p_e_c
+ is ignored by the shell and by the commands it invokes. If _a_r_g
+ is not present and --pp has been supplied, then the trap commands
+ associated with each _s_i_g_s_p_e_c are displayed. If no arguments are
+ supplied or if only --pp is given, ttrraapp prints the list of com-
+ mands associated with each signal. The --ll option causes the
+ shell to print a list of signal names and their corresponding
+ numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_-
+ _n_a_l_._h>, or a signal number. Signal names are case insensitive
+ and the SSIIGG prefix is optional.
+
+ If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
+ from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
+ cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command,
+ _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the
+ first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR
+ above). Refer to the description of the eexxttddeebbuugg option to the
sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a
_s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell
function or a script executed with the .. or ssoouurrccee builtins fin-
ishes executing.
- If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
+ If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a
pipeline (which may consist of a single simple command), a list,
or a compound command returns a non-zero exit status, subject to
- the following conditions. The EERRRR trap is not executed if the
+ the following conditions. The EERRRR trap is not executed if the
failed command is part of the command list immediately following
- a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
+ a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement,
part of a command executed in a &&&& or |||| list except the command
- following the final &&&& or ||||, any command in a pipeline but the
- last, or if the command's return value is being inverted using
- !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee)
- option.
+ following the final &&&& or ||||, any command in a pipeline but the
+ last, or if the command's return value is being inverted using
+ !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op-
+ tion.
- Signals ignored upon entry to the shell cannot be trapped or
- reset. Trapped signals that are not being ignored are reset to
+ Signals ignored upon entry to the shell cannot be trapped or re-
+ set. Trapped signals that are not being ignored are reset to
their original values in a subshell or subshell environment when
- one is created. The return status is false if any _s_i_g_s_p_e_c is
+ one is created. The return status is false if any _s_i_g_s_p_e_c is
invalid; otherwise ttrraapp returns true.
ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...]
- With no options, indicate how each _n_a_m_e would be interpreted if
+ With no options, indicate how each _n_a_m_e would be interpreted if
used as a command name. If the --tt option is used, ttyyppee prints a
- string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
- _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
- builtin, or disk file, respectively. If the _n_a_m_e is not found,
- then nothing is printed, and an exit status of false is
- returned. If the --pp option is used, ttyyppee either returns the
- name of the disk file that would be executed if _n_a_m_e were speci-
- fied as a command name, or nothing if ``type -t name'' would not
- return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
+ string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
+ _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
+ builtin, or disk file, respectively. If the _n_a_m_e is not found,
+ then nothing is printed, and an exit status of false is re-
+ turned. If the --pp option is used, ttyyppee either returns the name
+ of the disk file that would be executed if _n_a_m_e were specified
+ as a command name, or nothing if ``type -t name'' would not re-
+ turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
even if ``type -t name'' would not return _f_i_l_e. If a command is
hashed, --pp and --PP print the hashed value, which is not necessar-
- ily the file that appears first in PPAATTHH. If the --aa option is
- used, ttyyppee prints all of the places that contain an executable
+ ily the file that appears first in PPAATTHH. If the --aa option is
+ used, ttyyppee prints all of the places that contain an executable
named _n_a_m_e. This includes aliases and functions, if and only if
the --pp option is not also used. The table of hashed commands is
- not consulted when using --aa. The --ff option suppresses shell
+ not consulted when using --aa. The --ff option suppresses shell
function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true
if all of the arguments are found, false if any are not found.
- uulliimmiitt [--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.
+ uulliimmiitt [--HHSS] --aa
+ uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_l_i_m_i_t]]
+ Provides control over the resources available to the shell and
+ to processes started by it, on systems that allow such control.
The --HH and --SS options specify that the hard or soft limit is set
- for the given resource. A hard limit cannot be increased by a
- non-root user once it is set; a soft limit may be increased up
- to the value of the hard limit. If neither --HH nor --SS is speci-
+ for the given resource. A hard limit cannot be increased by a
+ non-root user once it is set; a soft limit may be increased up
+ to the value of the hard limit. If neither --HH nor --SS is speci-
fied, both the soft and hard limits are set. The value of _l_i_m_i_t
can be a number in the unit specified for the resource or one of
the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the
- current hard limit, the current soft limit, and no limit,
- respectively. If _l_i_m_i_t is omitted, the current value of the
- soft limit of the resource is printed, unless the --HH option is
- given. When more than one resource is specified, the limit name
- and unit are printed before the value. Other options are inter-
- preted as follows:
- --aa All current limits are reported
+ current hard limit, the current soft limit, and no limit, re-
+ spectively. If _l_i_m_i_t is omitted, the current value of the soft
+ limit of the resource is printed, unless the --HH option is given.
+ When more than one resource is specified, the limit name and
+ unit, if appropriate, are printed before the value. Other op-
+ tions are interpreted as follows:
+ --aa All current limits are reported; no limits are set
--bb The maximum socket buffer size
--cc The maximum size of core files created
--dd The maximum size of a process's data segment
--ee The maximum scheduling priority ("nice")
- --ff The maximum size of files written by the shell and its
+ --ff The maximum size of files written by the shell and its
children
--ii The maximum number of pending signals
--kk The maximum number of kqueues that may be allocated
--ll The maximum size that may be locked into memory
- --mm The maximum resident set size (many systems do not honor
+ --mm The maximum resident set size (many systems do not honor
this limit)
--nn The maximum number of open file descriptors (most systems
do not allow this value to be set)
@@ -5972,71 +6060,213 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS
--rr The maximum real-time scheduling priority
--ss The maximum stack size
--tt The maximum amount of cpu time in seconds
- --uu The maximum number of processes available to a single
+ --uu The maximum number of processes available to a single
user
- --vv The maximum amount of virtual memory available to the
+ --vv The maximum amount of virtual memory available to the
shell and, on some systems, to its children
--xx The maximum number of file locks
--PP The maximum number of pseudoterminals
+ --RR The maximum time a real-time process can run before
+ blocking, in microseconds
--TT The maximum number of threads
If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
new value of the specified resource. If no option is given,
then --ff is assumed. Values are in 1024-byte increments, except
- for --tt, which is in seconds; --pp, which is in units of 512-byte
- blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values;
- and, when in posix mode, --cc and --ff, which are in 512-byte incre-
- ments. The return status is 0 unless an invalid option or argu-
- ment is supplied, or an error occurs while setting a new limit.
+ for --tt, which is in seconds; --RR, which is in microseconds; --pp,
+ which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and
+ --uu, which are unscaled values; and, when in posix mode, --cc and
+ --ff, which are in 512-byte increments. The return status is 0
+ unless an invalid option or argument is supplied, or an error
+ occurs while setting a new limit.
uummaasskk [--pp] [--SS] [_m_o_d_e]
The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with
- a digit, it is interpreted as an octal number; otherwise it is
- interpreted as a symbolic mode mask similar to that accepted by
- _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
- printed. The --SS option causes the mask to be printed in sym-
- bolic form; the default output is an octal number. If the --pp
+ a digit, it is interpreted as an octal number; otherwise it is
+ interpreted as a symbolic mode mask similar to that accepted by
+ _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is
+ printed. The --SS option causes the mask to be printed in sym-
+ bolic form; the default output is an octal number. If the --pp
option is supplied, and _m_o_d_e is omitted, the output is in a form
that may be reused as input. The return status is 0 if the mode
- was successfully changed or if no _m_o_d_e argument was supplied,
+ was successfully changed or if no _m_o_d_e argument was supplied,
and false otherwise.
uunnaalliiaass [-aa] [_n_a_m_e ...]
- Remove each _n_a_m_e from the list of defined aliases. If --aa is
- supplied, all alias definitions are removed. The return value
+ Remove each _n_a_m_e from the list of defined aliases. If --aa is
+ supplied, all alias definitions are removed. The return value
is true unless a supplied _n_a_m_e is not a defined alias.
uunnsseett [-ffvv] [-nn] [_n_a_m_e ...]
- For each _n_a_m_e, remove the corresponding variable or function.
+ For each _n_a_m_e, remove the corresponding variable or function.
If the --vv option is given, each _n_a_m_e refers to a shell variable,
- and that variable is removed. Read-only variables may not be
- unset. If --ff is specified, each _n_a_m_e refers to a shell func-
- tion, and the function definition is removed. If the --nn option
- is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
- _n_a_m_e will be unset rather than the variable it references. --nn
- has no effect if the --ff option is supplied. If no options are
- supplied, each _n_a_m_e refers to a variable; if there is no vari-
- able by that name, 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
+ and that variable is removed. Read-only variables may not be
+ unset. If --ff is specified, each _n_a_m_e refers to a shell func-
+ tion, and the function definition is removed. If the --nn option
+ is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute,
+ _n_a_m_e will be unset rather than the variable it references. --nn
+ has no effect if the --ff option is supplied. If no options are
+ supplied, each _n_a_m_e refers to a variable; if there is no vari-
+ able by that name, a function with that name, if any, is unset.
+ Each unset variable or function is removed from the environment
+ passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS,
+ BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD,
+ CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC--
+ NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are
unset, they lose their special properties, even if they are sub-
sequently reset. The exit status is true unless a _n_a_m_e is read-
only.
- wwaaiitt [--ffnn] [_i_d _._._.]
+ wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.]
Wait for each specified child process and return its termination
- status. Each _i_d may be a process ID or a job specification; if
- a job spec is given, all processes in that job's pipeline are
- waited for. If _i_d is not given, 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 the --ff option is supplied, and job
- control is enabled, wwaaiitt forces _i_d to terminate before returning
- its status, instead of returning when it changes status. If _i_d
- specifies a non-existent process or job, the return status is
- 127. Otherwise, the return status is the exit status of the
- last process or job waited for.
+ status. Each _i_d may be a process ID or a job specification; if
+ a job spec is given, all processes in that job's pipeline are
+ waited for. If _i_d is not given, wwaaiitt waits for all running
+ background jobs and the last-executed process substitution, if
+ its process id is the same as $$!!, and the return status is zero.
+ If the --nn option is supplied, wwaaiitt waits for a single job from
+ the list of _i_ds or, if no _i_ds are supplied, any job, to complete
+ and returns its exit status. If none of the supplied arguments
+ is a child of the shell, or if no arguments are supplied and the
+ shell has no unwaited-for children, the exit status is 127. If
+ the --pp option is supplied, the process or job identifier of the
+ job for which the exit status is returned is assigned to the
+ variable _v_a_r_n_a_m_e named by the option argument. The variable
+ will be unset initially, before any assignment. This is useful
+ only when the --nn option is supplied. Supplying the --ff option,
+ when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
+ minate before returning its status, instead of returning when it
+ changes status. If _i_d specifies a non-existent process or job,
+ the return status is 127. Otherwise, the return status is the
+ exit status of the last process or job waited for.
+
+SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
+ Bash-4.0 introduced the concept of a `shell compatibility level', spec-
+ ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm--
+ ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility
+ level -- each option is mutually exclusive. The compatibility level is
+ intended to allow users to select behavior from previous versions that
+ is incompatible with newer versions while they migrate scripts to use
+ current features and behavior. It's intended to be a temporary solu-
+ tion.
+
+ This section does not mention behavior that is standard for a particu-
+ lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the
+ regexp matching operator quotes special regexp characters in the word,
+ which is default behavior in bash-3.2 and above).
+
+ If a user enables, say, ccoommppaatt3322, it may affect the behavior of other
+ compatibility levels up to and including the current compatibility
+ level. The idea is that each compatibility level controls behavior
+ that changed in that version of bbaasshh, but that behavior may have been
+ present in earlier versions. For instance, the change to use locale-
+ based comparisons with the [[[[ command came in bash-4.1, and earlier
+ versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable
+ ASCII-based comparisons as well. That granularity may not be suffi-
+ cient for all uses, and as a result users should employ compatibility
+ levels carefully. Read the documentation for a particular feature to
+ find out the current behavior.
+
+ Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as-
+ signed to this variable (a decimal version number like 4.2, or an inte-
+ ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com-
+ patibility level.
+
+ Starting with bash-4.4, Bash has begun deprecating older compatibility
+ levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM--
+ PPAATT.
+
+ Bash-5.0 is the final version for which there will be an individual
+ shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on
+ bash-5.0 and later versions.
+
+ The following table describes the behavior changes controlled by each
+ compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for
+ setting the compatibility level to _N_N using one of the following mecha-
+ nisms. For versions prior to bash-5.0, the compatibility level may be
+ set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and
+ later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re-
+ quired for bash-5.1 and later versions.
+
+ ccoommppaatt3311
+ +o quoting the rhs of the [[[[ command's regexp matching oper-
+ ator (=~) has no special effect
+
+ ccoommppaatt3322
+ +o interrupting a command list such as "a ; b ; c" causes
+ the execution of the next command in the list (in
+ bash-4.0 and later versions, the shell acts as if it re-
+ ceived the interrupt, so interrupting one command in a
+ list aborts the execution of the entire list)
+
+ ccoommppaatt4400
+ +o the << and >> operators to the [[[[ command do not consider
+ the current locale when comparing strings; they use ASCII
+ ordering. Bash versions prior to bash-4.1 use ASCII col-
+ lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current
+ locale's collation sequence and _s_t_r_c_o_l_l(3).
+
+ ccoommppaatt4411
+ +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still
+ be recognized as a reserved word (this is POSIX interpre-
+ tation 267)
+ +o in _p_o_s_i_x mode, the parser requires that an even number of
+ single quotes occur in the _w_o_r_d portion of a double-
+ quoted parameter expansion and treats them specially, so
+ that characters within the single quotes are considered
+ quoted (this is POSIX interpretation 221)
+
+ ccoommppaatt4422
+ +o the replacement string in double-quoted pattern substitu-
+ tion does not undergo quote removal, as it does in ver-
+ sions after bash-4.2
+ +o in posix mode, single quotes are considered special when
+ expanding the _w_o_r_d portion of a double-quoted parameter
+ expansion and can be used to quote a closing brace or
+ other special character (this is part of POSIX interpre-
+ tation 221); in later versions, single quotes are not
+ special within double-quoted word expansions
+
+ ccoommppaatt4433
+ +o the shell does not print a warning message if an attempt
+ is made to use a quoted compound assignment as an argu-
+ ment to declare (declare -a foo='(1 2)'). Later versions
+ warn that this usage is deprecated
+ +o word expansion errors are considered non-fatal errors
+ that cause the current command to fail, even in posix
+ mode (the default behavior is to make them fatal errors
+ that cause the shell to exit)
+ +o when executing a shell function, the loop state
+ (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in
+ that function will break or continue loops in the calling
+ context. Bash-4.4 and later reset the loop state to pre-
+ vent this
+
+ ccoommppaatt4444
+ +o the shell sets up the values used by BBAASSHH__AARRGGVV and
+ BBAASSHH__AARRGGCC so they can expand to the shell's positional
+ parameters even if extended debugging mode is not enabled
+ +o a subshell inherits loops from its parent context, so
+ bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit.
+ Bash-5.0 and later reset the loop state to prevent the
+ exit
+ +o variable assignments preceding builtins like eexxppoorrtt and
+ rreeaaddoonnllyy that set attributes continue to affect variables
+ with the same name in the calling environment even if the
+ shell is not in posix mode
+
+ ccoommppaatt5500
+ +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro-
+ duce slightly more randomness. If the shell compatibility
+ level is set to 50 or lower, it reverts to the method
+ from bash-5.0 and previous versions, so seeding the ran-
+ dom number generator by assigning a value to RRAANNDDOOMM will
+ produce the same sequence as in bash-5.0
+ +o If the command hash table is empty, bash versions prior
+ to bash-5.1 printed an informational message to that ef-
+ fect, even when producing output that can be reused as
+ input. Bash-5.1 suppresses that message when the --ll op-
+ tion is supplied.
RREESSTTRRIICCTTEEDD SSHHEELLLL
If bbaasshh is started with the name rrbbaasshh, or the --rr option is supplied at
@@ -6047,13 +6277,17 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL
+o changing directories with ccdd
- +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, EENNVV, or BBAASSHH__EENNVV
+ +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV,
+ or BBAASSHH__EENNVV
+o specifying command names containing //
- +o specifying a filename containing a // as an argument to the ..
+ +o specifying a filename containing a // as an argument to the ..
builtin command
+ +o specifying a filename containing a slash as an argument to the
+ hhiissttoorryy builtin command
+
+o specifying a filename containing a slash as an argument to the
--pp option to the hhaasshh builtin command
@@ -6168,4 +6402,4 @@ BBUUGGSS
-GNU Bash 5.0 2018 December 7 BASH(1)
+GNU Bash 5.1 2020 October 29 BASH(1)
diff --git a/doc/bash.1 b/doc/bash.1
index e6cd08db..5af7d428 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Fri Dec 7 09:48:47 EST 2018
+.\" Last Change: Wed Sep 23 09:28:31 EDT 2020
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2018 December 7" "GNU Bash 5.0"
+.TH BASH 1 "2020 October 29" "GNU Bash 5.1"
.\"
.\" 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-2018 by the Free Software Foundation, Inc.
-.if t Bash is Copyright \(co 1989-2018 by the Free Software Foundation, Inc.
+.if n Bash is Copyright (C) 1989-2020 by the Free Software Foundation, Inc.
+.if t Bash is Copyright \(co 1989-2020 by the Free Software Foundation, Inc.
.SH DESCRIPTION
.B Bash
is an \fBsh\fR-compatible command language interpreter that
@@ -396,7 +396,7 @@ files, the
option has no effect.
A non-interactive shell invoked with the name
.B sh
-does not attempt to read any other startup files.
+does not attempt to read any other startup files.
When invoked as
.BR sh ,
.B bash
@@ -452,7 +452,6 @@ and the effective user id is set to the real user id.
If the \fB\-p\fP option is supplied at invocation, the startup behavior is
the same, but the effective user id is not reset.
.SH DEFINITIONS
-.PP
The following definitions are used throughout the rest of this
document.
.PD 0
@@ -481,7 +480,6 @@ A character that, when unquoted, separates words. One of the following:
.if t \fB| & ; ( ) < > space tab newline\fP
.if n \fB| & ; ( ) < > space tab newline\fP
.RE
-.PP
.TP
.B control operator
A \fItoken\fP that performs a control function. It is one of the following
@@ -495,14 +493,17 @@ symbols:
.SH "RESERVED WORDS"
\fIReserved words\fP are words that have a special meaning to the shell.
The following words are recognized as reserved when unquoted and either
-the first word of a simple command (see
+the first word of a command (see
.SM
.B SHELL GRAMMAR
-below) or the third word of a
+below), the third word of a
.B case
or
+.B select
+command
+(only \fBin\fP is valid), or the third word of a
.B for
-command:
+command (only \fBin\fP and \fBdo\fP are valid):
.if t .RS
.PP
.B
@@ -511,7 +512,6 @@ command:
.if t .RE
.SH "SHELL GRAMMAR"
.SS Simple Commands
-.PP
A \fIsimple command\fP is a sequence of optional variable assignments
followed by \fBblank\fP-separated words and redirections, and
terminated by a \fIcontrol operator\fP. The first word
@@ -522,7 +522,6 @@ The return value of a \fIsimple command\fP is its exit status, or
128+\fIn\^\fP if the command is terminated by signal
.IR n .
.SS Pipelines
-.PP
A \fIpipeline\fP is a sequence of one or more commands separated by
one of the control operators
.B |
@@ -599,7 +598,6 @@ If the \fBlastpipe\fP option is enabled using the \fBshopt\fP builtin
(see the description of \fBshopt\fP below),
the last element of a pipeline may be run by the shell process.
.SS Lists
-.PP
A \fIlist\fP is a sequence of one or more pipelines separated by one
of the operators
.BR ; ,
@@ -657,7 +655,6 @@ An OR list has the form
.RS
.PP
\fIcommand1\fP \fB||\fP \fIcommand2\fP
-.PP
.RE
.PP
.I command2
@@ -668,7 +665,6 @@ The return status of
AND and OR lists is the exit status of the last command
executed in the list.
.SS Compound Commands
-.PP
A \fIcompound command\fP is one of the following.
In most cases a \fIlist\fP in a command's description may be separated from
the rest of the command by one or more newlines, and may be followed by a
@@ -742,7 +738,9 @@ 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
-a POSIX extended regular expression and matched accordingly (as in \fIregex\fP(3)).
+a POSIX extended regular expression and matched accordingly
+(using the POSIX \fIregcomp\fP and \fIregexec\fP interfaces
+usually described 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
@@ -757,16 +755,25 @@ 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
+.if t .sp 0.5
+.if n .sp 1
+The pattern will match if it matches any part of the string.
+Anchor the pattern using the \fB^\fP and \fB$\fP regular expression
+operators to force it to match the entire string.
+The array variable
.SM
-.BR BASH_REMATCH .
+.B BASH_REMATCH
+records which parts of the string matched the pattern.
The element of
.SM
.B BASH_REMATCH
-with index 0 is the portion of the string
-matching the entire regular expression.
-The element of
+with index 0 contains the portion of
+the string matching the entire regular expression.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the remaining
+.SM
+.B BASH_REMATCH
+indices. The element of
.SM
.B BASH_REMATCH
with index \fIn\fP is the portion of the
@@ -893,7 +900,8 @@ Using \fB;&\fP in place of \fB;;\fP causes execution to continue with
the \fIlist\fP associated with the next set of patterns.
Using \fB;;&\fP in place of \fB;;\fP causes the shell to test the next
pattern list in the statement, if any, and execute any associated \fIlist\fP
-on a successful match.
+on a successful match,
+continuing the case statement execution as if the pattern list had not matched.
The exit status is zero if no
pattern matches. Otherwise, it is the exit status of the
last command executed in \fIlist\fP.
@@ -930,7 +938,6 @@ is the exit status
of the last command executed in \fIlist-2\fP, or zero if
none was executed.
.SS Coprocesses
-.PP
A \fIcoprocess\fP is a shell command preceded by the \fBcoproc\fP reserved
word.
A coprocess is executed asynchronously in a subshell, as if the command
@@ -977,17 +984,16 @@ Since the coprocess is created as an asynchronous command,
the \fBcoproc\fP command always returns success.
The return status of a coprocess is the exit status of \fIcommand\fP.
.SS Shell Function Definitions
-.PP
A shell function is an object that is called like a simple command and
executes a compound command with a new set of positional parameters.
Shell functions are declared as follows:
.TP
-\fIname\fP () \fIcompound\-command\fP [\fIredirection\fP]
+\fIfname\fP () \fIcompound\-command\fP [\fIredirection\fP]
.PD 0
.TP
-\fBfunction\fP \fIname\fP [()] \fIcompound\-command\fP [\fIredirection\fP]
+\fBfunction\fP \fIfname\fP [()] \fIcompound\-command\fP [\fIredirection\fP]
.PD
-This defines a function named \fIname\fP.
+This defines a function named \fIfname\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
@@ -997,10 +1003,13 @@ That command is usually a \fIlist\fP of commands between { and }, but
may be any command listed under \fBCompound Commands\fP above,
with one exception: If the \fBfunction\fP reserved word is used, but the
parentheses are not supplied, the braces are required.
-\fIcompound\-command\fP is executed whenever \fIname\fP is specified as the
+\fIcompound\-command\fP is executed whenever \fIfname\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
+When in \fIposix mode\fP, \fIfname\fP must be a valid shell \fIname\fP
+and may not be the name of one of the
POSIX \fIspecial builtins\fP.
+In default mode, a function name can be any unquoted shell word that does
+not contain \fB$\fP.
Any redirections (see
.SM
.B REDIRECTION
@@ -1178,8 +1187,12 @@ not been present.
.PP
A double-quoted string preceded by a dollar sign (\fB$\fP\(dq\fIstring\fP\(dq)
will cause the string to be translated according to the current locale.
-If the current locale is \fBC\fP or \fBPOSIX\fP, the dollar sign
-is ignored.
+The \fIgettext\fP infrastructure performs the message catalog lookup and
+translation, using the \fBLC_MESSAGES\fP and \fBTEXTDOMAIN\fP shell
+variables.
+If the current locale is \fBC\fP or \fBPOSIX\fP,
+or if there are no translations available,
+the dollar sign is ignored.
If the string is translated and replaced, the replacement is
double-quoted.
.SH PARAMETERS
@@ -1308,7 +1321,6 @@ Namerefs can be unset using the \fB\-n\fP option to the \fBunset\fP builtin.
Otherwise, if \fBunset\fP is executed with the name of a nameref variable
as an argument, the variable referenced by the nameref variable will be unset.
.SS Positional Parameters
-.PP
A
.I positional parameter
is a parameter denoted by one or more
@@ -1329,7 +1341,6 @@ digit is expanded, it must be enclosed in braces (see
.B EXPANSION
below).
.SS Special Parameters
-.PP
The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
.PD 0
@@ -1387,7 +1398,7 @@ Expands to the exit status of the most recently executed foreground
pipeline.
.TP
.B \-
-Expands to the current option flags as specified upon invocation,
+Expands to the current option flags as specified upon invocation,
by the
.B set
builtin command, or those set by the shell itself
@@ -1425,9 +1436,14 @@ executed, if one is present. Otherwise, it is set
to the filename used to invoke
.BR bash ,
as given by argument zero.
+.PD
+.SS Shell Variables
+The following variables are set by the shell:
+.PP
+.PD 0
.TP
.B _
-At shell startup, set to the absolute pathname used to invoke the
+At shell startup, set to the 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 simple
@@ -1436,12 +1452,6 @@ Also set to the full pathname used to invoke each command executed
and placed in the environment exported to that command.
When checking mail, this parameter holds the name of the mail file
currently being checked.
-.PD
-.SS Shell Variables
-.PP
-The following variables are set by the shell:
-.PP
-.PD 0
.TP
.B BASH
Expands to the full filename used to invoke this instance of
@@ -1562,6 +1572,10 @@ subsequently reset.
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.
+If
+.B BASH_COMMAND
+is unset, it loses its special properties, even if it is
+subsequently reset.
.TP
.B BASH_EXECUTION_STRING
The command argument to the \fB\-c\fP invocation option.
@@ -1595,7 +1609,6 @@ The element with index 0 is the portion of the string
matching the entire regular expression.
The element with index \fIn\fP is the portion of the
string matching the \fIn\fPth parenthesized subexpression.
-This variable is read-only.
.TP
.B BASH_SOURCE
An array variable whose members are the source filenames
@@ -1612,6 +1625,10 @@ The shell function
Incremented by one within each subshell or subshell environment when
the shell begins executing in that environment.
The initial value is 0.
+If
+.B BASH_SUBSHELL
+is unset, it loses its special properties, even if it is
+subsequently reset.
.TP
.B BASH_VERSINFO
A readonly array variable whose members hold version information for
@@ -1809,6 +1826,10 @@ subsequently reset.
.B HISTCMD
The history number, or index in the history list, of the current
command.
+Assignments to
+.SM
+.B HISTCMD
+are ignored.
If
.SM
.B HISTCMD
@@ -1892,12 +1913,13 @@ The current working directory as set by the
command.
.TP
.B RANDOM
-Each time this parameter is referenced, a random integer between
-0 and 32767 is
-generated. The sequence of random numbers may be initialized by assigning
+Each time this parameter is referenced, it expands to a random integer
+between 0 and 32767.
+Assigning
a value to
.SM
-.BR RANDOM .
+.BR RANDOM
+initializes (seeds) the sequence of random numbers.
If
.SM
.B RANDOM
@@ -1915,6 +1937,19 @@ line buffer, for use with
.B "SHELL BUILTIN COMMANDS"
below).
.TP
+.B READLINE_MARK
+The position of the mark (saved insertion point) in the
+.B readline
+line buffer, for use with
+.if t \f(CWbind -x\fP
+.if n "bind -x"
+(see
+.SM
+.B "SHELL BUILTIN COMMANDS"
+below).
+The characters between the insertion point and the mark are often
+called the \fIregion\fP.
+.TP
.B READLINE_POINT
The position of the insertion point in the
.B readline
@@ -1940,6 +1975,8 @@ value is assigned to
the value returned upon subsequent
references is
the number of seconds since the assignment plus the value assigned.
+The number of seconds at shell invocation and the current time is always
+determined by querying the system clock.
If
.SM
.B SECONDS
@@ -1972,6 +2009,19 @@ Incremented by one each time an instance of
.B bash
is started.
.TP
+.B SRANDOM
+This variable expands to a 32-bit pseudo-random number each time it is
+referenced. The random number generator is not linear on systems that
+support \f(CW/dev/urandom\fP or \fIarc4random\fP, so each returned number
+has no relationship to the numbers preceding it.
+The random number generator cannot be seeded, so assignments to this
+variable have no effect.
+If
+.SM
+.B SRANDOM
+is unset, it loses its special properties,
+even if it is subsequently reset.
+.TP
.B UID
Expands to the user ID of the current user, initialized at shell startup.
This variable is readonly.
@@ -1986,9 +2036,10 @@ below.
.TP
.B BASH_COMPAT
The value is used to set the shell's compatibility level.
-See the description of the \fBshopt\fP builtin below under
-\fBSHELL BUILTIN COMMANDS\fP
-for a description of the various compatibility
+See
+.SM
+.B SHELL COMPATIBILITY MODE
+below for a description of the various compatibility
levels and their effects.
The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42)
corresponding to the desired compatibility level.
@@ -1997,9 +2048,13 @@ level is set to the default for the current version.
If \fBBASH_COMPAT\fP 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 \fBshopt\fP builtin described below (for example,
-\fBcompat42\fP means that 4.2 and 42 are valid values).
+The valid values correspond to the compatibility levels
+described below under
+.SM
+.BR BSHELL COMPATIBILITY MODE .
+For example, 4.2 and 42 are valid values that correspond
+to the \fBcompat42\fP \fBshopt\fP option
+and set the compatibility level to 42.
The current version is also a valid value.
.TP
.B BASH_ENV
@@ -2081,10 +2136,11 @@ it assumes that the shell is running in an Emacs shell buffer and disables
line editing.
.TP
.B ENV
-Similar to
+Expanded and executed similarly to
.SM
-.BR BASH_ENV ;
-used when the shell is invoked in \fIposix mode\fP.
+.B BASH_ENV
+(see \fBINVOCATION\fP above)
+when an interactive shell is invoked in \fIposix mode\fP.
.TP
.B EXECIGNORE
A colon-separated list of shell patterns (see \fBPattern Matching\fP)
@@ -2112,7 +2168,7 @@ filename completion (see
.SM
.B READLINE
below).
-A filename whose suffix matches one of the entries in
+A filename whose suffix matches one of the entries in
.SM
.B FIGNORE
is excluded from the list of matched filenames.
@@ -2421,8 +2477,11 @@ When the shell enters \fIposix mode\fP, it sets this variable if it was
not already set.
.TP
.B PROMPT_COMMAND
-If set, the value is executed as a command prior to issuing each primary
-prompt.
+If this variable is set, and is an array,
+the value of each set element is executed as a command
+prior to issuing each primary prompt.
+If this is set but not an array variable,
+its value is used as a command to execute instead.
.TP
.B PROMPT_DIRTRIM
If set to a number greater than zero, the value is used as the number of
@@ -2475,7 +2534,7 @@ is replicated multiple times, as necessary, to indicate multiple
levels of indirection. The default is ``\fB+ \fP''.
.TP
.B SHELL
-The full pathname to the shell is kept in this environment variable.
+This variable expands to the full pathname to the shell.
If it is not set when the shell starts,
.B bash
assigns to it the full pathname of the current user's login shell.
@@ -2635,14 +2694,28 @@ builtins. Each attribute applies to all members of an array.
.PP
Arrays are assigned to using compound assignments of the form
\fIname\fP=\fB(\fPvalue\fI1\fP ... value\fIn\fP\fB)\fP, where each
-\fIvalue\fP is of the form [\fIsubscript\fP]=\fIstring\fP.
+\fIvalue\fP may be of the form [\fIsubscript\fP]=\fIstring\fP.
Indexed array assignments do not require anything but \fIstring\fP.
+Each \fIvalue\fP in the list is expanded using all the shell expansions
+described below under
+.SM
+.BR EXPANSION .
When assigning to indexed arrays, if the optional brackets and subscript
are supplied, that index is assigned to;
otherwise the index of the element assigned is the last index assigned
to by the statement plus one. Indexing starts at zero.
.PP
-When assigning to an associative array, the subscript is required.
+When assigning to an associative array, the words in a compound assignment
+may be either assignment statements, for which the subscript is required,
+or a list of words that is interpreted as a sequence of alternating keys
+and values:
+\fIname\fP=\fB( \fP\fIkey1 value1 key2 value2\fP ...\fB)\fP.
+These are treated identically to
+\fIname\fP=\fB(\fP [\fIkey1\fP]=\fIvalue1\fP [\fIkey2\fP]=\fIvalue2\fP ...\fB)\fP.
+The first word in the list determines how the remaining words
+are interpreted; all assignments in a list must be of the same type.
+When using key/value pairs, the keys may not be missing or empty;
+a final missing value is treated like the empty string.
.PP
This syntax is also accepted by the
.B declare
@@ -2781,7 +2854,6 @@ as explained above (see
.SM
.BR PARAMETERS ).
.SS Brace Expansion
-.PP
.I "Brace expansion"
is a mechanism by which arbitrary strings
may be generated. This mechanism is similar to
@@ -2879,7 +2951,6 @@ command (see
.B SHELL BUILTIN COMMANDS
below).
.SS Tilde Expansion
-.PP
If a word begins with an unquoted tilde character (`\fB~\fP'), all of
the characters preceding the first unquoted slash (or all characters,
if there is no unquoted slash) are considered a \fItilde-prefix\fP.
@@ -2942,7 +3013,6 @@ when they appear as arguments to simple commands.
Bash does not do this, except for the \fIdeclaration\fP commands listed
above, when in \fIposix mode\fP.
.SS Parameter Expansion
-.PP
The `\fB$\fP' character introduces parameter expansion,
command substitution, or arithmetic expansion. The parameter name
or symbol to be expanded may be enclosed in braces, which
@@ -3306,6 +3376,18 @@ or information about \fIparameter\fP itself, depending on the value of
.RS
.PD 0
.TP
+.B U
+The expansion is a string that is the value of \fIparameter\fP with lowercase
+alphabetic characters converted to uppercase.
+.TP
+.B u
+The expansion is a string that is the value of \fIparameter\fP with the first
+character converted to uppercase, if it is alphabetic.
+.TP
+.B L
+The expansion is a string that is the value of \fIparameter\fP with uppercase
+alphabetic characters converted to lowercase.
+.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.
@@ -3323,6 +3405,12 @@ 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 K
+Produces a possibly-quoted version of the value of \fIparameter\fP,
+except that it prints the values of
+indexed and associative arrays as a sequence of quoted key-value pairs
+(see \fBArrays\fP above).
+.TP
.B a
The expansion is a string consisting of flag values representing
\fIparameter\fP's attributes.
@@ -3349,7 +3437,6 @@ 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
the command name. There are two forms:
.RS
@@ -3387,7 +3474,6 @@ escape the inner backquotes with backslashes.
If the substitution appears within double quotes, word splitting and
pathname expansion are not performed on the results.
.SS Arithmetic Expansion
-.PP
Arithmetic expansion allows the evaluation of an arithmetic expression
and the substitution of the result. The format for arithmetic expansion is:
.RS
@@ -3413,7 +3499,6 @@ is invalid,
.B bash
prints a message indicating failure and no substitution occurs.
.SS Process Substitution
-.PP
\fIProcess substitution\fP allows a process's input or output to be
referred to using a filename.
It takes the form of
@@ -3437,7 +3522,6 @@ simultaneously with parameter and variable expansion,
command substitution,
and arithmetic expansion.
.SS Word Splitting
-.PP
The shell scans the results of
parameter expansion,
command substitution,
@@ -3522,7 +3606,6 @@ null argument removal.
Note that if no expansion occurs, no splitting
is performed.
.SS Pathname Expansion
-.PP
After word splitting,
unless the
.B \-f
@@ -3533,7 +3616,7 @@ scans each word for the characters
.BR ? ,
and
.BR [ .
-If one of these characters appears, then the word is
+If one of these characters appears, and is not quoted, then the word is
regarded as a
.IR pattern ,
and replaced with an alphabetically sorted list of
@@ -3782,7 +3865,6 @@ contain multiple matches.
Using separate matches against shorter strings, or using arrays of
strings instead of a single long string, may be faster.
.SS Quote Removal
-.PP
After the preceding expansions, all unquoted occurrences of the
characters
.BR \e ,
@@ -3898,7 +3980,6 @@ Redirections using file descriptors greater than 9 should be used with
care, as they may conflict with file descriptors the shell uses
internally.
.SS Redirecting Input
-.PP
Redirection of input causes the file whose name results from
the expansion of
.I word
@@ -3914,7 +3995,6 @@ The general format for redirecting input is:
[\fIn\fP]\fB<\fP\fIword\fP
.RE
.SS Redirecting Output
-.PP
Redirection of output causes the file whose name results from
the expansion of
.I word
@@ -3951,7 +4031,6 @@ option to the
builtin command is not enabled, the redirection is attempted even
if the file named by \fIword\fP exists.
.SS Appending Redirected Output
-.PP
Redirection of output in this fashion
causes the file whose name results from
the expansion of
@@ -3967,9 +4046,7 @@ The general format for appending output is:
.PP
[\fIn\fP]\fB>>\fP\fIword\fP
.RE
-.PP
.SS Redirecting Standard Output and Standard Error
-.PP
This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -4000,7 +4077,6 @@ When using the second form, \fIword\fP may not expand to a number or
(see \fBDuplicating File Descriptors\fP below) for compatibility
reasons.
.SS Appending Standard Output and Standard Error
-.PP
This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -4022,7 +4098,6 @@ This is semantically equivalent to
.PP
(see \fBDuplicating File Descriptors\fP below).
.SS Here Documents
-.PP
This type of redirection instructs the shell to read input from the
current source until a line containing only
.I delimiter
@@ -4089,7 +4164,6 @@ 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
.RS
.PP
@@ -4138,7 +4212,6 @@ As a special case, if \fIn\fP is omitted, and \fIword\fP does not
expand to one or more digits or \fB\-\fP, the standard output and standard
error are redirected as described previously.
.SS "Moving File Descriptors"
-.PP
The redirection operator
.RS
.PP
@@ -4160,7 +4233,6 @@ moves the file descriptor \fIdigit\fP to file descriptor
.IR n ,
or the standard output (file descriptor 1) if \fIn\fP is not specified.
.SS "Opening File Descriptors for Reading and Writing"
-.PP
The redirection operator
.RS
.PP
@@ -4384,7 +4456,7 @@ shell option is enabled).
Functions may be exported so that subshells
automatically have them defined with the
.B \-f
-option to the
+option to the
.B export
builtin.
A function definition may be deleted using the \fB\-f\fP option to
@@ -4478,6 +4550,8 @@ A null value evaluates to 0.
A shell variable need not have its \fIinteger\fP attribute
turned on to be used in an expression.
.PP
+Integer constants follow the C language definition, without suffixes or
+character constants.
Constants with a leading 0 are interpreted as octal numbers.
A leading 0x or 0X denotes hexadecimal.
Otherwise, numbers take the form [\fIbase#\fP]n, where the optional \fIbase\fP
@@ -4485,6 +4559,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,
+if a non-digit is required,
the digits greater than 9 are represented by the lowercase letters,
the uppercase letters, @, and _, in that order.
If \fIbase\fP is less than or equal to 36, lowercase and uppercase
@@ -4498,7 +4573,7 @@ rules above.
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.
-The \fBtest\fP abd \fB[\fP commands determine their behavior based on
+The \fBtest\fP and \fB[\fP commands determine their behavior based on
the number of arguments; see the descriptions of those commands for any
other command-specific actions.
.PP
@@ -4674,14 +4749,15 @@ When used with the \fB[[\fP command,
.I Arg1
and
.I Arg2
-are evaluated as arithmetic expressions (see
+are evaluated as arithmetic expressions (see
.SM
.B "ARITHMETIC EVALUATION"
above).
.PD
.SH "SIMPLE COMMAND EXPANSION"
When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in
+the following order.
.IP 1.
The words that the parser has marked as variable assignments (those
preceding the command name) and redirections are saved for later
@@ -4917,7 +4993,6 @@ invokes an external command, the variable
is set to the full filename of the command and passed to that
command in its environment.
.SH "EXIT STATUS"
-.PP
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
@@ -5088,7 +5163,7 @@ Background processes which attempt to read from (write to when
terminal are sent a
.SM
.B SIGTTIN (SIGTTOU)
-signal by the kernel's terminal driver,
+signal by the kernel's terminal driver,
which, unless caught, suspends the process.
.PP
If the operating system on which
@@ -5135,8 +5210,9 @@ start it, or using a substring that appears in its command line.
For example,
.B %ce
refers to a stopped
-.B ce
-job. If a prefix matches more than one job,
+job whose command name begins with
+.BR ce .
+If a prefix matches more than one job,
.B bash
reports an error. Using
.BR %?ce ,
@@ -5211,7 +5287,7 @@ jobs are terminated.
.PP
When the shell is waiting for a job or process using the \fBwait\fP
builtin, and job control is enabled, \fBwait\fP will return when the
-job changes state. The \fB\-f\fP option will force \fBwait\fP to wait
+job changes state. The \fB\-f\fP option causes \fBwait\fP to wait
until the job or process terminates before returning.
.SH PROMPTING
When executing interactively,
@@ -5359,6 +5435,9 @@ command under
.SM
.B "SHELL BUILTIN COMMANDS"
below).
+This can have unwanted side effects if escaped portions of the string
+appear within command substitution or contain characters special to
+word expansion.
.SH READLINE
This is the library that handles reading input when using an interactive
shell, unless the
@@ -5386,7 +5465,6 @@ options to the
.B set
builtin.
.SS "Readline Notation"
-.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,
@@ -5422,7 +5500,6 @@ 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"
-.PP
Readline is customized by putting commands in an initialization
file (the \fIinputrc\fP file).
The name of this file is taken from the value of the
@@ -5430,6 +5507,8 @@ The name of this file is taken from the value of the
.B INPUTRC
variable. If that variable is unset, the default is
.IR ~/.inputrc .
+If that file does not exist or cannot be read, the ultimate default is
+.IR /etc/inputrc .
When a program which uses the readline library starts up, the
initialization file is read, and the key bindings and variables
are set.
@@ -5476,7 +5555,6 @@ and
In addition to command names, readline allows keys to be bound
to a string that is inserted when the key is pressed (a \fImacro\fP).
.SS "Readline Key Bindings"
-.PP
The syntax for controlling key bindings in the
.I inputrc
file is simple. All that is required is the name of the
@@ -5627,7 +5705,6 @@ builtin command (see
.B SHELL BUILTIN COMMANDS
below).
.SS "Readline Variables"
-.PP
Readline has variables that can be used to further customize its
behavior. A variable may be set in the
.I inputrc
@@ -5636,6 +5713,10 @@ file with a statement of the form
.PP
\fBset\fP \fIvariable\-name\fP \fIvalue\fP
.RE
+or using the \fBbind\fP builtin command (see
+.SM
+.B SHELL BUILTIN COMMANDS
+below).
.PP
Except where noted, readline variables can take the values
.B On
@@ -5714,11 +5795,11 @@ replaced with an ellipsis when displaying possible completions.
This determines when the user is queried about viewing
the number of possible completions
generated by the \fBpossible\-completions\fP command.
-It may be set to any integer value greater than or equal to
-zero. If the number of possible completions is greater than
-or equal to the value of this variable, the user is asked whether
-or not he wishes to view them; otherwise they are simply listed
-on the terminal.
+It may be set to any integer value greater than or equal to zero.
+If the number of possible completions is greater than
+or equal to the value of this variable,
+readline will ask whether or not the user wishes to view them;
+otherwise they are simply listed on the terminal.
.TP
.B convert\-meta (On)
If set to \fBOn\fP, readline will convert characters with the
@@ -5757,7 +5838,7 @@ Use the \e1 and \e2 escapes to begin and end sequences of
non-printing characters, which can be used to embed a terminal control
sequence into the mode string.
.TP
-.B enable\-bracketed\-paste (Off)
+.B enable\-bracketed\-paste (On)
When set to \fBOn\fP, readline will configure the terminal in a way
that will enable it to insert each paste into the editing buffer as a
single string of characters, instead of treating each character as if
@@ -5798,6 +5879,7 @@ the maximum number of history entries will be set to 500.
When set to \fBOn\fP, makes readline use a single line for display,
scrolling the input horizontally on a single screen line when it
becomes longer than the screen width rather than wrapping to a new line.
+This setting is automatically enabled for terminals of height 1.
.TP
.B input\-meta (Off)
If set to \fBOn\fP, readline will enable eight-bit input (that is,
@@ -5943,7 +6025,6 @@ by \fIstat\fP(2) is appended to the filename when listing possible
completions.
.PD
.SS "Readline Conditional Constructs"
-.PP
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
@@ -5995,7 +6076,7 @@ The version number supplied on the right side of the operator consists
of a major version number, an optional decimal point, and an optional
minor version (e.g., \fB7.1\fP). If the minor version is omitted, it
is assumed to be \fB0\fP.
-The operator may be separated from the string \fBversion\fP
+The operator may be separated from the string \fBversion\fP
and from the version number argument by whitespace.
.IP \fBapplication\fP
The \fBapplication\fP construct is used to include
@@ -6041,7 +6122,6 @@ would read \fI/etc/inputrc\fP:
.fi
.RE
.SS Searching
-.PP
Readline provides commands for searching through the command history
(see
.SM
@@ -6084,7 +6164,6 @@ 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.
.SS "Readline Command Names"
-.PP
The following is a list of the names of the commands and the default
key sequences to which they are bound.
Command names without an accompanying key sequence are unbound by default.
@@ -6093,7 +6172,6 @@ position, and \fImark\fP refers to a cursor position saved by the
\fBset\-mark\fP command.
The text between the point and mark is referred to as the \fIregion\fP.
.SS Commands for Moving
-.PP
.PD 0
.TP
.B beginning\-of\-line (C\-a)
@@ -6127,7 +6205,7 @@ Words are delimited by non-quoted shell metacharacters.
.B previous\-screen\-line
Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
-Readline line does not take up more than one physical line or if point is not
+Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
.TP
.B next\-screen\-line
@@ -6137,8 +6215,15 @@ Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
.TP
+.B clear\-display (M\-C\-l)
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+.TP
.B clear\-screen (C\-l)
-Clear the screen leaving the current line at the top of the screen.
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
With an argument, refresh the current line without clearing the
screen.
.TP
@@ -6146,7 +6231,6 @@ screen.
Refresh the current line.
.PD
.SS Commands for Manipulating the History
-.PP
.PD 0
.TP
.B accept\-line (Newline, Return)
@@ -6199,7 +6283,7 @@ between the start of the current line and the point.
This is a non-incremental search.
.TP
.B history\-substring\-search\-backward
-Search backward through the history for the string of characters
+Search backward through the history for the string of characters
between the start of the current line and the current cursor
position (the \fIpoint\fP).
The search string may match anywhere in a history line.
@@ -6288,7 +6372,6 @@ commands.
and \fIemacs\fP as the editor, in that order.
.PD
.SS Commands for Changing Text
-.PP
.PD 0
.TP
.B \fIend\-of\-file\fP (usually C\-d)
@@ -6363,7 +6446,6 @@ Characters bound to \fBbackward\-delete\-char\fP replace the character
before point with a space. By default, this command is unbound.
.PD
.SS Killing and Yanking
-.PP
.PD 0
.TP
.B kill\-line (C\-k)
@@ -6434,7 +6516,6 @@ or
.BR yank\-pop .
.PD
.SS Numeric Arguments
-.PP
.PD 0
.TP
.B digit\-argument (M\-0, M\-1, ..., M\-\-)
@@ -6456,7 +6537,6 @@ first time makes the argument count four, a second time makes the
argument count sixteen, and so on.
.PD
.SS Completing
-.PP
.PD 0
.TP
.B complete (TAB)
@@ -6561,7 +6641,6 @@ enclosed within braces so the list is available to the shell (see
above).
.PD
.SS Keyboard Macros
-.PP
.PD 0
.TP
.B start\-kbd\-macro (C\-x (\^)
@@ -6580,7 +6659,6 @@ Print the last keyboard macro defined in a format suitable for the
\fIinputrc\fP file.
.PD
.SS Miscellaneous
-.PP
.PD 0
.TP
.B re\-read\-init\-file (C\-x C\-r)
@@ -6594,8 +6672,8 @@ ring the terminal's bell (subject to the setting of
.TP
.B do\-lowercase\-version (M\-A, M\-B, M\-\fIx\fP, ...)
If the metafied character \fIx\fP is uppercase, run the command
-that is bound to the corresponding metafied lowercase character.
-The behavior is undefined if \fIx\fP is already lowercase.
+that is bound to the corresponding metafied lowercase character.
+The behavior is undefined if \fIx\fP is already lowercase.
.TP
.B prefix\-meta (ESC)
Metafy the next character typed.
@@ -6698,7 +6776,6 @@ Display version information about the current instance of
.BR bash .
.PD
.SS Programmable Completion
-.PP
When word completion is attempted for an argument to a command for
which a completion specification (a \fIcompspec\fP) has been defined
using the \fBcomplete\fP builtin (see
@@ -7016,7 +7093,6 @@ builtin below under
.B "SHELL BUILTIN COMMANDS"
for information on setting and unsetting shell options.
.SH "HISTORY EXPANSION"
-.PP
The shell supports a history expansion feature that
is similar to the history expansion in
.BR csh .
@@ -7110,7 +7186,6 @@ The shell uses
the history comment character to mark history timestamps when
writing the history file.
.SS Event Designators
-.PP
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
@@ -7148,6 +7223,8 @@ history list containing
The trailing \fB?\fP may be omitted if
.I string
is followed immediately by a newline.
+If \fIstring\fP is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
.TP
.B \d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u
Quick substitution. Repeat the previous command, replacing
@@ -7155,14 +7232,13 @@ Quick substitution. Repeat the previous command, replacing
with
.IR string2 .
Equivalent to
-``!!:s/\fIstring1\fP/\fIstring2\fP/''
+``!!:s\d\s+2^\s-2\u\fIstring1\fP\d\s+2^\s-2\u\fIstring2\fP\d\s+2^\s-2\u''
(see \fBModifiers\fP below).
.TP
.B !#
The entire command line typed so far.
.PD
.SS Word Designators
-.PP
Word designators are used to select desired words from the event.
A
.B :
@@ -7195,7 +7271,8 @@ The last word. This is usually the last argument, but will expand to the
zeroth word if there is only one word in the line.
.TP
.B %
-The word matched by the most recent `?\fIstring\fR?' search.
+The first word matched by the most recent `?\fIstring\fR?' search,
+if the search string begins with a character that is part of a word.
.TP
.I x\fB\-\fPy
A range of words; `\-\fIy\fR' abbreviates `0\-\fIy\fR'.
@@ -7212,17 +7289,17 @@ Abbreviates \fIx\-$\fP.
.TP
.B x\-
Abbreviates \fIx\-$\fP like \fBx*\fP, but omits the last word.
+If \fBx\fP is missing, it defaults to 0.
.PD
.PP
If a word designator is supplied without an event specification, the
previous command is used as the event.
.SS Modifiers
-.PP
After the optional word designator, there may appear a sequence of
one or more of the following modifiers, each preceded by a `:'.
+These modify, or edit, the word or words selected from the history event.
.PP
.PD 0
-.PP
.TP
.B h
Remove a trailing filename component, leaving only the head.
@@ -7249,15 +7326,19 @@ Quote the substituted words as with
but break into words at
.B blanks
and newlines.
+The \fBq\fP and \fBx\fP modifiers are mutually exclusive; the last one
+supplied is used.
.TP
.B s/\fIold\fP/\fInew\fP/
Substitute
.I new
for the first occurrence of
.I old
-in the event line. Any delimiter can be used in place of /. The
-final delimiter is optional if it is the last character of the
-event line. The delimiter may be quoted in
+in the event line.
+Any character may be used as the delimiter in place of /.
+The final delimiter is optional if it is the last character of the
+event line.
+The delimiter may be quoted in
.I old
and
.I new
@@ -7265,7 +7346,8 @@ with a single backslash. If & appears in
.IR new ,
it is replaced by
.IR old .
-A single backslash will quote the &. If
+A single backslash will quote the &.
+If
.I old
is null, it is set to the last
.I old
@@ -7275,6 +7357,11 @@ the last
in a
.B !?\fIstring\fR\fB[?]\fR
search.
+If
+.I new
+is null, each matching
+.I old
+is deleted.
.TP
.B &
Repeat the previous substitution.
@@ -7289,7 +7376,8 @@ if it is the last character of the event line.
An \fBa\fP may be used as a synonym for \fBg\fP.
.TP
.B G
-Apply the following `\fBs\fP' modifier once to each word in the event line.
+Apply the following `\fBs\fP' or `\fB&\fP' modifier once to each word
+in the event line.
.PD
.SH "SHELL BUILTIN COMMANDS"
.\" start of bash_builtins
@@ -7484,13 +7572,19 @@ When \fIshell\-command\fP is executed, the shell sets the
variable to the contents of the \fBreadline\fP line buffer and the
.SM
.B READLINE_POINT
-variable to the current location of the insertion point.
-If the executed command changes the value of
+and
.SM
-.B READLINE_LINE
-or
+.B READLINE_MARK
+variables to the current location of the insertion point and the saved
+insertion point (the mark), respectively.
+If the executed command changes the value of any of
+.SM
+.BR READLINE_LINE ,
.SM
.BR READLINE_POINT ,
+or
+.SM
+.BR READLINE_MARK ,
those new values will be reflected in the editing state.
.TP
.B \-X
@@ -7675,9 +7769,9 @@ will be displayed.
The return value is true unless an invalid option is supplied, or no
matches were generated.
.TP
-\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP] [\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP]
+\fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIcomp-option\fP] [\fB\-DEI\fP] [\fB\-A\fP \fIaction\fP] [\fB\-G\fP \fIglobpat\fP] [\fB\-W\fP \fIwordlist\fP]
.br
-[\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP]
+[\fB\-F\fP \fIfunction\fP] [\fB\-C\fP \fIcommand\fP] [\fB\-X\fP \fIfilterpat\fP] [\fB\-P\fP \fIprefix\fP] [\fB\-S\fP \fIsuffix\fP] \fIname\fP [\fIname ...\fP]
.PD 0
.TP
\fBcomplete\fP \fB\-pr\fP [\fB\-DEI\fP] [\fIname\fP ...]
@@ -7696,7 +7790,7 @@ The \fB\-E\fP option indicates that other supplied options and actions should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The \fB\-I\fP option indicates that other supplied options and actions should
-apply to completion on the inital non-assignment word on the line, or after
+apply to completion on the initial non-assignment word on the line, or after
a command delimiter such as \fB;\fP or \fB|\fP, which is usually command
name completion.
If multiple options are supplied, the \fB\-D\fP option takes precedence
@@ -7914,7 +8008,7 @@ The \fB\-E\fP option indicates that other supplied options should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The \fB\-I\fP option indicates that other supplied options should
-apply to completion on the inital non-assignment word on the line,
+apply to completion on the initial non-assignment word on the line,
or after a command delimiter such as \fB;\fP or \fB|\fP, which is usually
command name completion.
.sp 1
@@ -7940,10 +8034,10 @@ is greater than the number of enclosing loops, the last enclosing loop
(the ``top-level'' loop) is resumed.
The return value is 0 unless \fIn\fP is not greater than or equal to 1.
.TP
-\fBdeclare\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBdeclare\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
.PD 0
.TP
-\fBtypeset\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
+\fBtypeset\fP [\fB\-aAfFgiIlnrtux\fP] [\fB\-p\fP] [\fIname\fP[=\fIvalue\fP] ...]
.PD
Declare variables and/or give them attributes.
If no \fIname\fPs are given then display the values of variables.
@@ -7978,6 +8072,13 @@ The
option forces variables to be created or modified at the global scope,
even when \fBdeclare\fP is executed in a shell function.
It is ignored in all other cases.
+The
+.B \-I
+option causes local variables to inherit the attributes
+(except the \fInameref\fP attribute)
+and value of any existing variable with the same
+\fIname\fP at a surrounding scope.
+If there is no existing variable, the local variable is initially unset.
The following options can
be used to restrict output to variables with the specified attribute or
to give variables attributes:
@@ -8363,7 +8464,12 @@ 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).
+When listing, a \fIfirst\fP or \fIlast\fP of
+0 is equivalent to \-1 and \-0 is equivalent to the current
+command (usually the \fBfc\fP command); otherwise 0 is equivalent to \-1
+and \-0 is invalid.
+If
.I last
is not specified, it is set to
the current command for listing (so that
@@ -8457,7 +8563,7 @@ does not specify a valid job or
.I jobspec
specifies a job that was started without job control.
.TP
-\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIargs\fP]
+\fBgetopts\fP \fIoptstring\fP \fIname\fP [\fIarg ...\fP]
.B getopts
is used by shell procedures to parse positional parameters.
.I optstring
@@ -8503,8 +8609,9 @@ and \fIname\fP is set to ?.
.sp 1
.B getopts
normally parses the positional parameters, but if more arguments are
-given in
-.IR args ,
+supplied as
+.I arg
+values,
.B getopts
parses those instead.
.sp 1
@@ -8855,6 +8962,8 @@ 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.
+The restore is effected as if a series of \fBset\fP commands were executed
+to restore the values that were in place before the function.
With no operands,
.B local
writes a list of local variables to the standard output. It is
@@ -9033,6 +9142,11 @@ If no argument is specified, conversion behaves as if \-1 had been given.
This is an exception to the usual \fBprintf\fP behavior.
.PD
.PP
+The %b, %q, and %T directives all use the field width and precision
+arguments from the format specification and write that many bytes from
+(or use that wide a field for) the expanded argument, which usually
+contains more characters than the original.
+.PP
Arguments to non-string format specifiers are treated as C constants,
except that a leading plus or minus sign is allowed, and if the leading
character is a single or double quote, the value is the ASCII value of
@@ -9227,7 +9341,9 @@ Read input from file descriptor \fIfd\fP.
.PP
If no
.I names
-are supplied, the line read is assigned to the variable
+are supplied, the line read,
+without the ending delimiter but otherwise unmodified,
+is assigned to the variable
.SM
.BR REPLY .
The exit status is zero, unless end-of-file is encountered, \fBread\fP
@@ -9830,72 +9946,27 @@ This option is enabled by default, but only has an effect if command
history is enabled, as described above under
.SM
.BR HISTORY .
+.PD 0
.TP 8
.B compat31
-If set,
-.B bash
-changes its behavior to that of version 3.1 with respect to quoted
-arguments to the \fB[[\fP conditional command's \fB=~\fP operator
-and locale-specific string comparison when using the \fB[[\fP
-conditional command's \fB<\fP and \fB>\fP operators.
-Bash versions prior to bash-4.1 use ASCII collation and
-.IR strcmp (3);
-bash-4.1 and later use the current locale's collation sequence and
-.IR strcoll (3).
.TP 8
.B compat32
-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)
-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,
-.B bash
-changes its behavior to that of version 4.0 with respect to locale-specific
-string comparison when using the \fB[[\fP
-conditional command's \fB<\fP and \fB>\fP operators (see description of
-\fBcompat31\fP)
-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.
.TP 8
.B compat41
-If set,
-.BR bash ,
-when in \fIposix mode\fP, 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.
.TP 8
.B compat42
-If set,
-.B bash
-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 compat44
-If set,
-.B bash
-saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
-used, regardless of whether or not extended debugging mode is enabled.
+.PD
+These control aspects of the shell's compatibility mode
+(see
+.SM
+.B "SHELL COMPATIBILITY MODE"
+below).
.TP 8
.B complete_fullquote
If set,
@@ -9960,7 +10031,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 at shell invocation, arrange to execute the debugger profile
+If set at shell invocation,
+or in a shell startup file,
+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
@@ -10239,7 +10312,8 @@ Return a status of 0 (true) or 1 (false) depending on
the evaluation of the conditional expression
.IR expr .
Each operator and operand must be a separate argument.
-Expressions are composed of the primaries described above under
+.if \n(zZ=0 Expressions are composed of the primaries described above under
+.if \n(zZ=1 Expressions are composed of the primaries described in the \fBbash\fP manual page under
.SM
.BR "CONDITIONAL EXPRESSIONS" .
\fBtest\fP does not accept any options, nor does it accept and ignore
@@ -10536,7 +10610,11 @@ 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\-HSabcdefiklmnpqrstuvxPT\fP [\fIlimit\fP]]
+\fBulimit\fP [\fB\-HS\fP] \fB\-a\fP
+.PD 0
+.TP
+\fBulimit\fP [\fB\-HS\fP] [\fB\-bcdefiklmnpqrstuvxPRT\fP [\fIlimit\fP]]
+.PD
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
@@ -10559,13 +10637,14 @@ If
.I limit
is omitted, the current value of the soft limit of the resource is
printed, unless the \fB\-H\fP option is given. When more than one
-resource is specified, the limit name and unit are printed before the value.
+resource is specified, the limit name and unit, if appropriate,
+are printed before the value.
Other options are interpreted as follows:
.RS
.PD 0
.TP
.B \-a
-All current limits are reported
+All current limits are reported; no limits are set
.TP
.B \-b
The maximum socket buffer size
@@ -10626,6 +10705,9 @@ The maximum number of file locks
.B \-P
The maximum number of pseudoterminals
.TP
+.B \-R
+The maximum time a real-time process can run before blocking, in microseconds
+.TP
.B \-T
The maximum number of threads
.PD
@@ -10641,6 +10723,8 @@ If no option is given, then
is assumed. Values are in 1024-byte increments, except for
.BR \-t ,
which is in seconds;
+.BR \-R ,
+which is in microseconds;
.BR \-p ,
which is in units of 512-byte blocks;
.BR \-P ,
@@ -10716,34 +10800,52 @@ attribute, \fIname\fP will be unset rather than the variable it
references.
\fB\-n\fP has no effect if the \fB\-f\fP option is supplied.
If no options are supplied, each \fIname\fP refers to a variable; if
-there is no variable by that name, any function with that name is
+there is no variable by that name, a function with that name, if any, is
unset.
Each unset variable or function is removed from the environment
passed to subsequent commands.
If any of
.SM
-.BR COMP_WORDBREAKS ,
+.BR BASH_ALIASES ,
.SM
-.BR RANDOM ,
+.BR BASH_ARGV0 ,
.SM
-.BR SECONDS ,
+.BR BASH_CMDS ,
.SM
-.BR LINENO ,
+.BR BASH_COMMAND ,
.SM
-.BR HISTCMD ,
+.BR BASH_SUBSHELL ,
+.SM
+.BR BASHPID ,
+.SM
+.BR COMP_WORDBREAKS ,
+.SM
+.BR DIRSTACK ,
+.SM
+.BR EPOCHREALTIME ,
+.SM
+.BR EPOCHSECONDS ,
.SM
.BR FUNCNAME ,
.SM
.BR GROUPS ,
+.SM
+.BR HISTCMD ,
+.SM
+.BR LINENO ,
+.SM
+.BR RANDOM ,
+.SM
+.BR SECONDS ,
or
.SM
-.B DIRSTACK
+.B SRANDOM
are unset, they lose their special properties, even if they are
subsequently reset. The exit status is true unless a
.I name
is readonly.
.TP
-\fBwait\fP [\fB\-fn\fP] [\fIid ...\fP]
+\fBwait\fP [\fB\-fn\fP] [\fP\-p\fP \fIvarname\fP] [\fIid ...\fP]
Wait for each specified child process and return its termination status.
Each
.I id
@@ -10751,18 +10853,229 @@ may be a process
ID or a job specification; if a job spec is given, all processes
in that job's pipeline are waited for. If
.I id
-is not given, all currently active child processes
-are waited for, and the return status is zero.
-If the \fB\-n\fP option is supplied, \fBwait\fP waits for any job to
-terminate and returns its exit status.
-If the \fB\-f\fP option is supplied, and job control is enabled,
-\fBwait\fP forces \fIid\fP to terminate before returning its status,
-instead of returning when it changes status.
+is not given,
+\fBwait\fP waits for all running background jobs and
+the last-executed process substitution, if its process id is the same as
+\fB$!\fP,
+and the return status is zero.
+If the \fB\-n\fP option is supplied,
+\fBwait\fP waits for a single job
+from the list of \fIid\fPs or, if no \fIid\fPs are supplied, any job,
+to complete and returns its exit status.
+If none of the supplied arguments is a child of the shell, or if no arguments
+are supplied and the shell has no unwaited-for children, the exit status
+is 127.
+If the \fB\-p\fP option is supplied, the process or job identifier of the job
+for which the exit status is returned is assigned to the variable
+\fIvarname\fP named by the option argument.
+The variable will be unset initially, before any assignment.
+This is useful only when the \fB\-n\fP option is supplied.
+Supplying the \fB\-f\fP option, when job control is enabled,
+forces \fBwait\fP to wait for \fIid\fP to terminate before returning
+its status, instead of returning when it changes status.
If
.I id
specifies a non-existent process or job, the return status is
127. Otherwise, the return status is the exit status of the last
process or job waited for.
+.SH "SHELL COMPATIBILITY MODE"
+Bash-4.0 introduced the concept of a `shell compatibility level', specified
+as a set of options to the shopt builtin
+.BR compat31 ,
+.BR compat32 ,
+.BR compat40 ,
+.BR compat41 ,
+and so on).
+There is only one current
+compatibility level -- each option is mutually exclusive.
+The compatibility level is intended to allow users to select behavior
+from previous versions that is incompatible with newer versions
+while they migrate scripts to use current features and
+behavior. It's intended to be a temporary solution.
+.PP
+This section does not mention behavior that is standard for a particular
+version (e.g., setting \fBcompat32\fP means that quoting the rhs of the regexp
+matching operator quotes special regexp characters in the word, which is
+default behavior in bash-3.2 and above).
+.PP
+If a user enables, say, \fBcompat32\fP, it may affect the behavior of other
+compatibility levels up to and including the current compatibility level.
+The idea is that each compatibility level controls behavior that changed
+in that version of \fBbash\fP,
+but that behavior may have been present in earlier versions.
+For instance, the change to use locale-based comparisons with the \fB[[\fP
+command came in bash-4.1, and earlier versions used ASCII-based comparisons,
+so enabling \fBcompat32\fP will enable ASCII-based comparisons as well.
+That granularity may not be sufficient for
+all uses, and as a result users should employ compatibility levels carefully.
+Read the documentation for a particular feature to find out the
+current behavior.
+.PP
+Bash-4.3 introduced a new shell variable:
+.SM
+.BR BASH_COMPAT .
+The value assigned
+to this variable (a decimal version number like 4.2, or an integer
+corresponding to the \fBcompat\fP\fINN\fP option, like 42) determines the
+compatibility level.
+.PP
+Starting with bash-4.4, Bash has begun deprecating older compatibility
+levels.
+Eventually, the options will be removed in favor of
+.SM
+.BR BASH_COMPAT .
+.PP
+Bash-5.0 is the final version for which there will be an individual shopt
+option for the previous version. Users should use
+.SM
+.B BASH_COMPAT
+on bash-5.0 and later versions.
+.PP
+The following table describes the behavior changes controlled by each
+compatibility level setting.
+The \fBcompat\fP\fINN\fP tag is used as shorthand for setting the
+compatibility level
+to \fINN\fP using one of the following mechanisms.
+For versions prior to bash-5.0, the compatibility level may be set using
+the corresponding \fBcompat\fP\fINN\fP shopt option.
+For bash-4.3 and later versions, the
+.SM
+.B BASH_COMPAT
+variable is preferred,
+and it is required for bash-5.1 and later versions.
+.TP
+\fBcompat31\fP
+.PD 0
+.RS
+.IP \(bu
+quoting the rhs of the \fB[[\fP command's regexp matching operator (=~)
+has no special effect
+.RE
+.PD
+.TP
+\fBcompat32\fP
+.PD 0
+.RS
+.IP \(bu
+interrupting a command list such as "a ; b ; c" causes the execution
+of the next command in the list (in bash-4.0 and later versions,
+the shell acts as if it received the interrupt, so
+interrupting one command in a list aborts the execution of the
+entire list)
+.RE
+.PD
+.TP
+\fBcompat40\fP
+.PD 0
+.RS
+.IP \(bu
+the \fB<\fP and \fB>\fP operators to the \fB[[\fP command do not
+consider the current locale when comparing strings; they use ASCII
+ordering.
+Bash versions prior to bash-4.1 use ASCII collation and
+.IR strcmp (3);
+bash-4.1 and later use the current locale's collation sequence and
+.IR strcoll (3).
+.RE
+.PD
+.TP
+\fBcompat41\fP
+.PD 0
+.RS
+.IP \(bu
+in \fIposix\fP mode, \fBtime\fP may be followed by options and still be
+recognized as a reserved word (this is POSIX interpretation 267)
+.IP \(bu
+in \fIposix\fP mode, the parser requires that an even number of single
+quotes occur in the \fIword\fP portion of a double-quoted
+parameter expansion and treats them specially, so that characters within
+the single quotes are considered quoted
+(this is POSIX interpretation 221)
+.RE
+.PD
+.TP
+\fBcompat42\fP
+.PD 0
+.RS
+.IP \(bu
+the replacement string in double-quoted pattern substitution does not
+undergo quote removal, as it does in versions after bash-4.2
+.IP \(bu
+in posix mode, single quotes are considered special when expanding
+the \fIword\fP portion of a double-quoted parameter expansion
+and can be used to quote a closing brace or other special character
+(this is part of POSIX interpretation 221);
+in later versions, single quotes
+are not special within double-quoted word expansions
+.RE
+.PD
+.TP
+\fBcompat43\fP
+.PD 0
+.RS
+.IP \(bu
+the shell does not print a warning message if an attempt is made to
+use a quoted compound assignment as an argument to declare
+(declare -a foo='(1 2)'). Later versions warn that this usage is
+deprecated
+.IP \(bu
+word expansion errors are considered non-fatal errors that cause the
+current command to fail, even in posix mode
+(the default behavior is to make them fatal errors that cause the shell
+to exit)
+.IP \(bu
+when executing a shell function, the loop state (while/until/etc.)
+is not reset, so \fBbreak\fP or \fBcontinue\fP in that function will break
+or continue loops in the calling context. Bash-4.4 and later reset
+the loop state to prevent this
+.RE
+.PD
+.TP
+\fBcompat44\fP
+.PD 0
+.RS
+.IP \(bu
+the shell sets up the values used by
+.SM
+.B BASH_ARGV
+and
+.SM
+.B BASH_ARGC
+so they can expand to the shell's positional parameters even if extended
+debugging mode is not enabled
+.IP \(bu
+a subshell inherits loops from its parent context, so \fBbreak\fP
+or \fBcontinue\fP will cause the subshell to exit.
+Bash-5.0 and later reset the loop state to prevent the exit
+.IP \(bu
+variable assignments preceding builtins like \fBexport\fP and \fBreadonly\fP
+that set attributes continue to affect variables with the same
+name in the calling environment even if the shell is not in posix
+mode
+.RE
+.PD
+.TP
+\fBcompat50\fP
+.PD 0
+.RS
+.IP \(bu
+Bash-5.1 changed the way
+.SM
+.B $RANDOM
+is generated to introduce slightly
+more randomness. If the shell compatibility level is set to 50 or
+lower, it reverts to the method from bash-5.0 and previous versions,
+so seeding the random number generator by assigning a value to
+.SM
+.B RANDOM
+will produce the same sequence as in bash-5.0
+.IP \(bu
+If the command hash table is empty, bash versions prior to bash-5.1
+printed an informational message to that effect, even when producing
+output that can be reused as input. Bash-5.1 suppresses that message
+when the \fB\-l\fP option is supplied.
+.RE
+.PD
.\" bash_builtins
.if \n(zZ=1 .ig zZ
.SH "RESTRICTED SHELL"
@@ -10791,6 +11104,8 @@ setting or unsetting the values of
.SM
.BR PATH ,
.SM
+.BR HISTFILE ,
+.SM
.BR ENV ,
or
.SM
@@ -10806,6 +11121,10 @@ as an argument to the
builtin command
.IP \(bu
specifying a filename containing a slash as an argument to the
+.B history
+builtin command
+.IP \(bu
+specifying a filename containing a slash as an argument to the
.B \-p
option to the
.B hash
@@ -10948,7 +11267,6 @@ Comments and bug reports concerning
this manual page should be directed to
.IR chet.ramey@case.edu .
.SH BUGS
-.PP
It's too big and too slow.
.PP
There are some subtle differences between
diff --git a/doc/bash.html b/doc/bash.html
index 3da23fb6..adb9e760 100644
--- a/doc/bash.html
+++ b/doc/bash.html
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
-<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2018 December 7<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2020 October 29<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -54,7 +54,7 @@ bash - GNU Bourne-Again SHell
<H3>COPYRIGHT</H3>
-Bash is Copyright &#169; 1989-2018 by the Free Software Foundation, Inc.
+Bash is Copyright &#169; 1989-2020 by the Free Software Foundation, Inc.
<A NAME="lbAE">&nbsp;</A>
<H3>DESCRIPTION</H3>
@@ -522,7 +522,7 @@ option has no effect.
A non-interactive shell invoked with the name
<B>sh</B>
-does not attempt to read any other startup files.
+does not attempt to read any other startup files.
When invoked as
<B>sh</B>,
@@ -598,8 +598,6 @@ the same, but the effective user id is not reset.
<A NAME="lbAI">&nbsp;</A>
<H3>DEFINITIONS</H3>
-<P>
-
The following definitions are used throughout the rest of this
document.
@@ -639,10 +637,6 @@ A character that, when unquoted, separates words. One of the following:
</DL>
-</DL>
-<P>
-
-<DL COMPACT>
<DT><B>control operator</B>
<DD>
@@ -662,17 +656,21 @@ symbols:
<I>Reserved words</I> are words that have a special meaning to the shell.
The following words are recognized as reserved when unquoted and either
-the first word of a simple command (see
+the first word of a command (see
<FONT SIZE=-1><B>SHELL GRAMMAR</B>
</FONT>
-below) or the third word of a
+below), the third word of a
<B>case</B>
or
+<B>select</B>
+
+command
+(only <B>in</B> is valid), or the third word of a
<B>for</B>
-command:
+command (only <B>in</B> and <B>do</B> are valid):
<DL COMPACT><DT><DD>
<P>
@@ -690,8 +688,6 @@ command:
<A NAME="lbAL">&nbsp;</A>
<H4>Simple Commands</H4>
-<P>
-
A <I>simple command</I> is a sequence of optional variable assignments
followed by <B>blank</B>-separated words and redirections, and
terminated by a <I>control operator</I>. The first word
@@ -706,8 +702,6 @@ The return value of a <I>simple command</I> is its exit status, or
<A NAME="lbAM">&nbsp;</A>
<H4>Pipelines</H4>
-<P>
-
A <I>pipeline</I> is a sequence of one or more commands separated by
one of the control operators
<B>|</B>
@@ -802,8 +796,6 @@ the last element of a pipeline may be run by the shell process.
<A NAME="lbAN">&nbsp;</A>
<H4>Lists</H4>
-<P>
-
A <I>list</I> is a sequence of one or more pipelines separated by one
of the operators
<B>;</B>,
@@ -885,8 +877,6 @@ An OR list has the form
<P>
<I>command1</I> <B>||</B> <I>command2</I>
-<P>
-
</DL>
<P>
@@ -903,8 +893,6 @@ executed in the list.
<A NAME="lbAO">&nbsp;</A>
<H4>Compound Commands</H4>
-<P>
-
A <I>compound command</I> is one of the following.
In most cases a <I>list</I> in a command's description may be separated from
the rest of the command by one or more newlines, and may be followed by a
@@ -980,7 +968,9 @@ to be matched as a string.
An additional binary operator, <B>=~</B>, is available, with the same
precedence as <B>==</B> and <B>!=</B>.
When it is used, the string to the right of the operator is considered
-a POSIX extended regular expression and matched accordingly (as in <I>regex</I>(3)).
+a POSIX extended regular expression and matched accordingly
+(using the POSIX <I>regcomp</I> and <I>regexec</I> interfaces
+usually described in <I>regex</I>(3)).
The return value is 0 if the string matches
the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the conditional
@@ -996,18 +986,29 @@ 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
-<FONT SIZE=-1><B>BASH_REMATCH</B>.
+<P>
+
+
+The pattern will match if it matches any part of the string.
+Anchor the pattern using the <B>^</B> and <B>$</B> regular expression
+operators to force it to match the entire string.
+The array variable
+<FONT SIZE=-1><B>BASH_REMATCH</B>
</FONT>
+records which parts of the string matched the pattern.
The element of
<FONT SIZE=-1><B>BASH_REMATCH</B>
</FONT>
-with index 0 is the portion of the string
-matching the entire regular expression.
-The element of
+with index 0 contains the portion of
+the string matching the entire regular expression.
+Substrings matched by parenthesized subexpressions within the regular
+expression are saved in the remaining
+<FONT SIZE=-1><B>BASH_REMATCH</B>
+
+</FONT>
+indices. The element of
<FONT SIZE=-1><B>BASH_REMATCH</B>
</FONT>
@@ -1155,7 +1156,8 @@ Using <B>;&amp;</B> in place of <B>;;</B> causes execution to continue with
the <I>list</I> associated with the next set of patterns.
Using <B>;;&amp;</B> in place of <B>;;</B> causes the shell to test the next
pattern list in the statement, if any, and execute any associated <I>list</I>
-on a successful match.
+on a successful match,
+continuing the case statement execution as if the pattern list had not matched.
The exit status is zero if no
pattern matches. Otherwise, it is the exit status of the
last command executed in <I>list</I>.
@@ -1194,8 +1196,6 @@ none was executed.
<A NAME="lbAP">&nbsp;</A>
<H4>Coprocesses</H4>
-<P>
-
A <I>coprocess</I> is a shell command preceded by the <B>coproc</B> reserved
word.
A coprocess is executed asynchronously in a subshell, as if the command
@@ -1253,17 +1253,15 @@ The return status of a coprocess is the exit status of <I>command</I>.
<A NAME="lbAQ">&nbsp;</A>
<H4>Shell Function Definitions</H4>
-<P>
-
A shell function is an object that is called like a simple command and
executes a compound command with a new set of positional parameters.
Shell functions are declared as follows:
<DL COMPACT>
-<DT><I>name</I> () <I>compound-command</I> [<I>redirection</I>]<DD>
+<DT><I>fname</I> () <I>compound-command</I> [<I>redirection</I>]<DD>
-<DT><B>function</B> <I>name</I> [()] <I>compound-command</I> [<I>redirection</I>]<DD>
+<DT><B>function</B> <I>fname</I> [()] <I>compound-command</I> [<I>redirection</I>]<DD>
-This defines a function named <I>name</I>.
+This defines a function named <I>fname</I>.
The reserved word <B>function</B> is optional.
If the <B>function</B> reserved word is supplied, the parentheses are optional.
The <I>body</I> of the function is the compound command
@@ -1274,10 +1272,13 @@ That command is usually a <I>list</I> of commands between { and }, but
may be any command listed under <B>Compound Commands</B> above,
with one exception: If the <B>function</B> reserved word is used, but the
parentheses are not supplied, the braces are required.
-<I>compound-command</I> is executed whenever <I>name</I> is specified as the
+<I>compound-command</I> is executed whenever <I>fname</I> is specified as the
name of a simple command.
-When in <I>posix mode</I>, <I>name</I> may not be the name of one of the
+When in <I>posix mode</I>, <I>fname</I> must be a valid shell <I>name</I>
+and may not be the name of one of the
POSIX <I>special builtins</I>.
+In default mode, a function name can be any unquoted shell word that does
+not contain <B>$</B>.
Any redirections (see
<FONT SIZE=-1><B>REDIRECTION</B>
@@ -1517,8 +1518,12 @@ not been present.
A double-quoted string preceded by a dollar sign (<B>$</B>dq<I>string</I>dq)
will cause the string to be translated according to the current locale.
-If the current locale is <B>C</B> or <B>POSIX</B>, the dollar sign
-is ignored.
+The <I>gettext</I> infrastructure performs the message catalog lookup and
+translation, using the <B>LC_MESSAGES</B> and <B>TEXTDOMAIN</B> shell
+variables.
+If the current locale is <B>C</B> or <B>POSIX</B>,
+or if there are no translations available,
+the dollar sign is ignored.
If the string is translated and replaced, the replacement is
double-quoted.
<A NAME="lbAT">&nbsp;</A>
@@ -1684,8 +1689,6 @@ as an argument, the variable referenced by the nameref variable will be unset.
<A NAME="lbAU">&nbsp;</A>
<H4>Positional Parameters</H4>
-<P>
-
A
<I>positional parameter</I>
@@ -1713,8 +1716,6 @@ below).
<A NAME="lbAV">&nbsp;</A>
<H4>Special Parameters</H4>
-<P>
-
The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
@@ -1784,7 +1785,7 @@ pipeline.
<DT><B>-</B>
<DD>
-Expands to the current option flags as specified upon invocation,
+Expands to the current option flags as specified upon invocation,
by the
<B>set</B>
@@ -1834,10 +1835,20 @@ to the filename used to invoke
<B>bash</B>,
as given by argument zero.
+
+</DL>
+<A NAME="lbAW">&nbsp;</A>
+<H4>Shell Variables</H4>
+
+The following variables are set by the shell:
+<P>
+
+
+<DL COMPACT>
<DT><B>_</B>
<DD>
-At shell startup, set to the absolute pathname used to invoke the
+At shell startup, set to the 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 simple
@@ -1846,18 +1857,6 @@ Also set to the full pathname used to invoke each command executed
and placed in the environment exported to that command.
When checking mail, this parameter holds the name of the mail file
currently being checked.
-
-</DL>
-<A NAME="lbAW">&nbsp;</A>
-<H4>Shell Variables</H4>
-
-<P>
-
-The following variables are set by the shell:
-<P>
-
-
-<DL COMPACT>
<DT><B>BASH</B>
<DD>
@@ -2009,6 +2008,11 @@ subsequently reset.
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.
+If
+<B>BASH_COMMAND</B>
+
+is unset, it loses its special properties, even if it is
+subsequently reset.
<DT><B>BASH_EXECUTION_STRING</B>
<DD>
@@ -2049,7 +2053,6 @@ The element with index 0 is the portion of the string
matching the entire regular expression.
The element with index <I>n</I> is the portion of the
string matching the <I>n</I>th parenthesized subexpression.
-This variable is read-only.
<DT><B>BASH_SOURCE</B>
<DD>
@@ -2069,6 +2072,11 @@ The shell function
Incremented by one within each subshell or subshell environment when
the shell begins executing in that environment.
The initial value is 0.
+If
+<B>BASH_SUBSHELL</B>
+
+is unset, it loses its special properties, even if it is
+subsequently reset.
<DT><B>BASH_VERSINFO</B>
<DD>
@@ -2310,6 +2318,11 @@ subsequently reset.
<DD>
The history number, or index in the history list, of the current
command.
+Assignments to
+<FONT SIZE=-1><B>HISTCMD</B>
+
+</FONT>
+are ignored.
If
<FONT SIZE=-1><B>HISTCMD</B>
@@ -2418,13 +2431,14 @@ command.
<DT><B>RANDOM</B>
<DD>
-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
+Each time this parameter is referenced, it expands to a random integer
+between 0 and 32767.
+Assigning
a value to
-<FONT SIZE=-1><B>RANDOM</B>.
+<FONT SIZE=-1><B>RANDOM</B>
</FONT>
+initializes (seeds) the sequence of random numbers.
If
<FONT SIZE=-1><B>RANDOM</B>
@@ -2445,6 +2459,22 @@ line buffer, for use with
</FONT>
below).
+<DT><B>READLINE_MARK</B>
+
+<DD>
+The position of the mark (saved insertion point) in the
+<B>readline</B>
+
+line buffer, for use with
+<TT>bind -x</TT>
+
+(see
+<FONT SIZE=-1><B>SHELL BUILTIN COMMANDS</B>
+
+</FONT>
+below).
+The characters between the insertion point and the mark are often
+called the <I>region</I>.
<DT><B>READLINE_POINT</B>
<DD>
@@ -2478,6 +2508,8 @@ value is assigned to
the value returned upon subsequent
references is
the number of seconds since the assignment plus the value assigned.
+The number of seconds at shell invocation and the current time is always
+determined by querying the system clock.
If
<FONT SIZE=-1><B>SECONDS</B>
@@ -2519,6 +2551,21 @@ Incremented by one each time an instance of
<B>bash</B>
is started.
+<DT><B>SRANDOM</B>
+
+<DD>
+This variable expands to a 32-bit pseudo-random number each time it is
+referenced. The random number generator is not linear on systems that
+support <TT>/dev/urandom</TT> or <I>arc4random</I>, so each returned number
+has no relationship to the numbers preceding it.
+The random number generator cannot be seeded, so assignments to this
+variable have no effect.
+If
+<FONT SIZE=-1><B>SRANDOM</B>
+
+</FONT>
+is unset, it loses its special properties,
+even if it is subsequently reset.
<DT><B>UID</B>
<DD>
@@ -2541,9 +2588,11 @@ below.
<DD>
The value is used to set the shell's compatibility level.
-See the description of the <B>shopt</B> builtin below under
-<B>SHELL BUILTIN COMMANDS</B>
-for a description of the various compatibility
+See
+<FONT SIZE=-1><B>SHELL COMPATIBILITY MODE</B>
+
+</FONT>
+below for a description of the various compatibility
levels and their effects.
The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42)
corresponding to the desired compatibility level.
@@ -2552,9 +2601,14 @@ level is set to the default for the current version.
If <B>BASH_COMPAT</B> 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 <B>shopt</B> builtin described below (for example,
-<B>compat42</B> means that 4.2 and 42 are valid values).
+The valid values correspond to the compatibility levels
+described below under
+<FONT SIZE=-1><B>BSHELL</B>COMPATIBILITY<B>MODE</B>.
+
+</FONT>
+For example, 4.2 and 42 are valid values that correspond
+to the <B>compat42</B> <B>shopt</B> option
+and set the compatibility level to 42.
The current version is also a valid value.
<DT><B>BASH_ENV</B>
@@ -2654,11 +2708,12 @@ line editing.
<DT><B>ENV</B>
<DD>
-Similar to
-<FONT SIZE=-1><B>BASH_ENV</B>;
+Expanded and executed similarly to
+<FONT SIZE=-1><B>BASH_ENV</B>
</FONT>
-used when the shell is invoked in <I>posix mode</I>.
+(see <B>INVOCATION</B> above)
+when an interactive shell is invoked in <I>posix mode</I>.
<DT><B>EXECIGNORE</B>
<DD>
@@ -2691,7 +2746,7 @@ filename completion (see
</FONT>
below).
-A filename whose suffix matches one of the entries in
+A filename whose suffix matches one of the entries in
<FONT SIZE=-1><B>FIGNORE</B>
</FONT>
@@ -3078,8 +3133,11 @@ not already set.
<DT><B>PROMPT_COMMAND</B>
<DD>
-If set, the value is executed as a command prior to issuing each primary
-prompt.
+If this variable is set, and is an array,
+the value of each set element is executed as a command
+prior to issuing each primary prompt.
+If this is set but not an array variable,
+its value is used as a command to execute instead.
<DT><B>PROMPT_DIRTRIM</B>
<DD>
@@ -3148,7 +3206,7 @@ levels of indirection. The default is ``<B>+ </B>''.
<DT><B>SHELL</B>
<DD>
-The full pathname to the shell is kept in this environment variable.
+This variable expands to the full pathname to the shell.
If it is not set when the shell starts,
<B>bash</B>
@@ -3348,15 +3406,30 @@ builtins. Each attribute applies to all members of an array.
Arrays are assigned to using compound assignments of the form
<I>name</I>=<B>(</B>value<I>1</I> ... value<I>n</I><B>)</B>, where each
-<I>value</I> is of the form [<I>subscript</I>]=<I>string</I>.
+<I>value</I> may be of the form [<I>subscript</I>]=<I>string</I>.
Indexed array assignments do not require anything but <I>string</I>.
+Each <I>value</I> in the list is expanded using all the shell expansions
+described below under
+<FONT SIZE=-1><B>EXPANSION</B>.
+
+</FONT>
When assigning to indexed arrays, if the optional brackets and subscript
are supplied, that index is assigned to;
otherwise the index of the element assigned is the last index assigned
to by the statement plus one. Indexing starts at zero.
<P>
-When assigning to an associative array, the subscript is required.
+When assigning to an associative array, the words in a compound assignment
+may be either assignment statements, for which the subscript is required,
+or a list of words that is interpreted as a sequence of alternating keys
+and values:
+<I>name</I>=<B>( </B><I>key1 value1 key2 value2</I> ...<B>)</B>.
+These are treated identically to
+<I>name</I>=<B>(</B> [<I>key1</I>]=<I>value1</I> [<I>key2</I>]=<I>value2</I> ...<B>)</B>.
+The first word in the list determines how the remaining words
+are interpreted; all assignments in a list must be of the same type.
+When using key/value pairs, the keys may not be missing or empty;
+a final missing value is treated like the empty string.
<P>
This syntax is also accepted by the
@@ -3536,8 +3609,6 @@ as explained above (see
<A NAME="lbAZ">&nbsp;</A>
<H4>Brace Expansion</H4>
-<P>
-
<I>Brace expansion</I>
is a mechanism by which arbitrary strings
@@ -3662,8 +3733,6 @@ below).
<A NAME="lbBA">&nbsp;</A>
<H4>Tilde Expansion</H4>
-<P>
-
If a word begins with an unquoted tilde character (`<B>~</B>'), all of
the characters preceding the first unquoted slash (or all characters,
if there is no unquoted slash) are considered a <I>tilde-prefix</I>.
@@ -3743,8 +3812,6 @@ above, when in <I>posix mode</I>.
<A NAME="lbBB">&nbsp;</A>
<H4>Parameter Expansion</H4>
-<P>
-
The `<B>$</B>' character introduces parameter expansion,
command substitution, or arithmetic expansion. The parameter name
or symbol to be expanded may be enclosed in braces, which
@@ -4151,6 +4218,21 @@ or information about <I>parameter</I> itself, depending on the value of
<DL COMPACT><DT><DD>
<DL COMPACT>
+<DT><B>U</B>
+
+<DD>
+The expansion is a string that is the value of <I>parameter</I> with lowercase
+alphabetic characters converted to uppercase.
+<DT><B>u</B>
+
+<DD>
+The expansion is a string that is the value of <I>parameter</I> with the first
+character converted to uppercase, if it is alphabetic.
+<DT><B>L</B>
+
+<DD>
+The expansion is a string that is the value of <I>parameter</I> with uppercase
+alphabetic characters converted to lowercase.
<DT><B>Q</B>
<DD>
@@ -4172,6 +4254,13 @@ The expansion is a string that is the result of expanding the value of
The expansion is a string in the form of
an assignment statement or <B>declare</B> command that, if
evaluated, will recreate <I>parameter</I> with its attributes and value.
+<DT><B>K</B>
+
+<DD>
+Produces a possibly-quoted version of the value of <I>parameter</I>,
+except that it prints the values of
+indexed and associative arrays as a sequence of quoted key-value pairs
+(see <B>Arrays</B> above).
<DT><B>a</B>
<DD>
@@ -4212,8 +4301,6 @@ expansion as described below.
<A NAME="lbBC">&nbsp;</A>
<H4>Command Substitution</H4>
-<P>
-
<I>Command substitution</I> allows the output of a command to replace
the command name. There are two forms:
<DL COMPACT><DT><DD>
@@ -4264,8 +4351,6 @@ pathname expansion are not performed on the results.
<A NAME="lbBD">&nbsp;</A>
<H4>Arithmetic Expansion</H4>
-<P>
-
Arithmetic expansion allows the evaluation of an arithmetic expression
and the substitution of the result. The format for arithmetic expansion is:
<DL COMPACT><DT><DD>
@@ -4301,8 +4386,6 @@ prints a message indicating failure and no substitution occurs.
<A NAME="lbBE">&nbsp;</A>
<H4>Process Substitution</H4>
-<P>
-
<I>Process substitution</I> allows a process's input or output to be
referred to using a filename.
It takes the form of
@@ -4329,8 +4412,6 @@ and arithmetic expansion.
<A NAME="lbBF">&nbsp;</A>
<H4>Word Splitting</H4>
-<P>
-
The shell scans the results of
parameter expansion,
command substitution,
@@ -4439,8 +4520,6 @@ is performed.
<A NAME="lbBG">&nbsp;</A>
<H4>Pathname Expansion</H4>
-<P>
-
After word splitting,
unless the
<B>-f</B>
@@ -4456,7 +4535,7 @@ scans each word for the characters
and
<B>[</B>.
-If one of these characters appears, then the word is
+If one of these characters appears, and is not quoted, then the word is
regarded as a
<I>pattern</I>,
@@ -4780,8 +4859,6 @@ strings instead of a single long string, may be faster.
<A NAME="lbBH">&nbsp;</A>
<H4>Quote Removal</H4>
-<P>
-
After the preceding expansions, all unquoted occurrences of the
characters
<B>\</B>,
@@ -4934,8 +5011,6 @@ internally.
<A NAME="lbBJ">&nbsp;</A>
<H4>Redirecting Input</H4>
-<P>
-
Redirection of input causes the file whose name results from
the expansion of
<I>word</I>
@@ -4959,8 +5034,6 @@ The general format for redirecting input is:
<A NAME="lbBK">&nbsp;</A>
<H4>Redirecting Output</H4>
-<P>
-
Redirection of output causes the file whose name results from
the expansion of
<I>word</I>
@@ -5013,8 +5086,6 @@ if the file named by <I>word</I> exists.
<A NAME="lbBL">&nbsp;</A>
<H4>Appending Redirected Output</H4>
-<P>
-
Redirection of output in this fashion
causes the file whose name results from
the expansion of
@@ -5036,13 +5107,9 @@ The general format for appending output is:
[<I>n</I>]<B>&gt;&gt;</B><I>word</I>
</DL>
-<P>
-
<A NAME="lbBM">&nbsp;</A>
<H4>Redirecting Standard Output and Standard Error</H4>
-<P>
-
This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -5084,8 +5151,6 @@ reasons.
<A NAME="lbBN">&nbsp;</A>
<H4>Appending Standard Output and Standard Error</H4>
-<P>
-
This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -5117,8 +5182,6 @@ This is semantically equivalent to
<A NAME="lbBO">&nbsp;</A>
<H4>Here Documents</H4>
-<P>
-
This type of redirection instructs the shell to read input from the
current source until a line containing only
<I>delimiter</I>
@@ -5211,8 +5274,6 @@ standard input (or file descriptor <I>n</I> if <I>n</I> is specified).
<A NAME="lbBQ">&nbsp;</A>
<H4>Duplicating File Descriptors</H4>
-<P>
-
The redirection operator
<DL COMPACT><DT><DD>
<P>
@@ -5282,8 +5343,6 @@ error are redirected as described previously.
<A NAME="lbBR">&nbsp;</A>
<H4>Moving File Descriptors</H4>
-<P>
-
The redirection operator
<DL COMPACT><DT><DD>
<P>
@@ -5316,8 +5375,6 @@ or the standard output (file descriptor 1) if <I>n</I> is not specified.
<A NAME="lbBS">&nbsp;</A>
<H4>Opening File Descriptors for Reading and Writing</H4>
-<P>
-
The redirection operator
<DL COMPACT><DT><DD>
<P>
@@ -5597,7 +5654,7 @@ Functions may be exported so that subshells
automatically have them defined with the
<B>-f</B>
-option to the
+option to the
<B>export</B>
builtin.
@@ -5719,6 +5776,8 @@ A shell variable need not have its <I>integer</I> attribute
turned on to be used in an expression.
<P>
+Integer constants follow the C language definition, without suffixes or
+character constants.
Constants with a leading 0 are interpreted as octal numbers.
A leading 0x or 0X denotes hexadecimal.
Otherwise, numbers take the form [<I>base#</I>]n, where the optional <I>base</I>
@@ -5726,6 +5785,7 @@ is a decimal number between 2 and 64 representing the arithmetic
base, and <I>n</I> is a number in that base.
If <I>base#</I> is omitted, then base 10 is used.
When specifying <I>n</I>,
+if a non-digit is required,
the digits greater than 9 are represented by the lowercase letters,
the uppercase letters, @, and _, in that order.
If <I>base</I> is less than or equal to 36, lowercase and uppercase
@@ -5742,7 +5802,7 @@ rules above.
Conditional expressions are used by the <B>[[</B> compound command and
the <B>test</B> and <B>[</B> builtin commands to test file attributes
and perform string and arithmetic comparisons.
-The <B>test</B> abd <B>[</B> commands determine their behavior based on
+The <B>test</B> and <B>[</B> commands determine their behavior based on
the number of arguments; see the descriptions of those commands for any
other command-specific actions.
<P>
@@ -5958,7 +6018,7 @@ When used with the <B>[[</B> command,
and
<I>Arg2</I>
-are evaluated as arithmetic expressions (see
+are evaluated as arithmetic expressions (see
<FONT SIZE=-1><B>ARITHMETIC EVALUATION</B>
</FONT>
@@ -5969,7 +6029,8 @@ above).
<H3>SIMPLE COMMAND EXPANSION</H3>
When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in
+the following order.
<DL COMPACT>
<DT>1.<DD>
The words that the parser has marked as variable assignments (those
@@ -6261,8 +6322,6 @@ command in its environment.
<A NAME="lbCB">&nbsp;</A>
<H3>EXIT STATUS</H3>
-<P>
-
The exit status of an executed command is the value returned by the
<I>waitpid</I> system call or equivalent function. Exit statuses
fall between 0 and 255, though, as explained below, the shell may
@@ -6487,7 +6546,7 @@ terminal are sent a
<FONT SIZE=-1><B>SIGTTIN (SIGTTOU)</B>
</FONT>
-signal by the kernel's terminal driver,
+signal by the kernel's terminal driver,
which, unless caught, suspends the process.
<P>
@@ -6551,9 +6610,10 @@ For example,
<B>%ce</B>
refers to a stopped
-<B>ce</B>
+job whose command name begins with
+<B>ce</B>.
-job. If a prefix matches more than one job,
+If a prefix matches more than one job,
<B>bash</B>
reports an error. Using
@@ -6653,7 +6713,7 @@ jobs are terminated.
When the shell is waiting for a job or process using the <B>wait</B>
builtin, and job control is enabled, <B>wait</B> will return when the
-job changes state. The <B>-f</B> option will force <B>wait</B> to wait
+job changes state. The <B>-f</B> option causes <B>wait</B> to wait
until the job or process terminates before returning.
<A NAME="lbCE">&nbsp;</A>
<H3>PROMPTING</H3>
@@ -6851,6 +6911,9 @@ command under
</FONT>
below).
+This can have unwanted side effects if escaped portions of the string
+appear within command substitution or contain characters special to
+word expansion.
<A NAME="lbCF">&nbsp;</A>
<H3>READLINE</H3>
@@ -6890,8 +6953,6 @@ builtin.
<A NAME="lbCG">&nbsp;</A>
<H4>Readline Notation</H4>
-<P>
-
In this section, the Emacs-style notation is used to denote
keystrokes. Control keys are denoted by C-<I>key</I>, e.g., C-n
means Control-N. Similarly,
@@ -6936,8 +6997,6 @@ on the kill ring.
<A NAME="lbCH">&nbsp;</A>
<H4>Readline Initialization</H4>
-<P>
-
Readline is customized by putting commands in an initialization
file (the <I>inputrc</I> file).
The name of this file is taken from the value of the
@@ -6947,6 +7006,9 @@ The name of this file is taken from the value of the
variable. If that variable is unset, the default is
<A HREF="file:~/.inputrc"><I>~/.inputrc</I></A>.
+If that file does not exist or cannot be read, the ultimate default is
+<A HREF="file:/etc/inputrc"><I>/etc/inputrc</I></A>.
+
When a program which uses the readline library starts up, the
initialization file is read, and the key bindings and variables
are set.
@@ -7015,8 +7077,6 @@ to a string that is inserted when the key is pressed (a <I>macro</I>).
<A NAME="lbCI">&nbsp;</A>
<H4>Readline Key Bindings</H4>
-<P>
-
The syntax for controlling key bindings in the
<I>inputrc</I>
@@ -7222,8 +7282,6 @@ below).
<A NAME="lbCJ">&nbsp;</A>
<H4>Readline Variables</H4>
-<P>
-
Readline has variables that can be used to further customize its
behavior. A variable may be set in the
<I>inputrc</I>
@@ -7235,6 +7293,11 @@ file with a statement of the form
<B>set</B> <I>variable-name</I> <I>value</I>
</DL>
+or using the <B>bind</B> builtin command (see
+<FONT SIZE=-1><B>SHELL BUILTIN COMMANDS</B>
+
+</FONT>
+below).
<P>
Except where noted, readline variables can take the values
@@ -7332,11 +7395,11 @@ replaced with an ellipsis when displaying possible completions.
This determines when the user is queried about viewing
the number of possible completions
generated by the <B>possible-completions</B> command.
-It may be set to any integer value greater than or equal to
-zero. If the number of possible completions is greater than
-or equal to the value of this variable, the user is asked whether
-or not he wishes to view them; otherwise they are simply listed
-on the terminal.
+It may be set to any integer value greater than or equal to zero.
+If the number of possible completions is greater than
+or equal to the value of this variable,
+readline will ask whether or not the user wishes to view them;
+otherwise they are simply listed on the terminal.
<DT><B>convert-meta (On)</B>
<DD>
@@ -7382,7 +7445,7 @@ 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.
-<DT><B>enable-bracketed-paste (Off)</B>
+<DT><B>enable-bracketed-paste (On)</B>
<DD>
When set to <B>On</B>, readline will configure the terminal in a way
@@ -7431,6 +7494,7 @@ the maximum number of history entries will be set to 500.
When set to <B>On</B>, makes readline use a single line for display,
scrolling the input horizontally on a single screen line when it
becomes longer than the screen width rather than wrapping to a new line.
+This setting is automatically enabled for terminals of height 1.
<DT><B>input-meta (Off)</B>
<DD>
@@ -7605,8 +7669,6 @@ completions.
<A NAME="lbCK">&nbsp;</A>
<H4>Readline Conditional Constructs</H4>
-<P>
-
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
@@ -7672,7 +7734,7 @@ The version number supplied on the right side of the operator consists
of a major version number, an optional decimal point, and an optional
minor version (e.g., <B>7.1</B>). If the minor version is omitted, it
is assumed to be <B>0</B>.
-The operator may be separated from the string <B>version</B>
+The operator may be separated from the string <B>version</B>
and from the version number argument by whitespace.
<DT><B>application</B><DD>
The <B>application</B> construct is used to include
@@ -7726,8 +7788,6 @@ would read <A HREF="file:/etc/inputrc"><I>/etc/inputrc</I></A>:
<A NAME="lbCL">&nbsp;</A>
<H4>Searching</H4>
-<P>
-
Readline provides commands for searching through the command history
(see
<FONT SIZE=-1><B>HISTORY</B>
@@ -7779,8 +7839,6 @@ typed by the user or be part of the contents of the current line.
<A NAME="lbCM">&nbsp;</A>
<H4>Readline Command Names</H4>
-<P>
-
The following is a list of the names of the commands and the default
key sequences to which they are bound.
Command names without an accompanying key sequence are unbound by default.
@@ -7791,8 +7849,6 @@ The text between the point and mark is referred to as the <I>region</I>.
<A NAME="lbCN">&nbsp;</A>
<H4>Commands for Moving</H4>
-<P>
-
<DL COMPACT>
<DT><B>beginning-of-line (C-a)</B>
@@ -7836,7 +7892,7 @@ Words are delimited by non-quoted shell metacharacters.
<DD>
Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
-Readline line does not take up more than one physical line or if point is not
+Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
<DT><B>next-screen-line</B>
@@ -7846,10 +7902,18 @@ physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
+<DT><B>clear-display (M-C-l)</B>
+
+<DD>
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
<DT><B>clear-screen (C-l)</B>
<DD>
-Clear the screen leaving the current line at the top of the screen.
+Clear the screen,
+then redraw the current line,
+leaving the current line at the top of the screen.
With an argument, refresh the current line without clearing the
screen.
<DT><B>redraw-current-line</B>
@@ -7861,8 +7925,6 @@ Refresh the current line.
<A NAME="lbCO">&nbsp;</A>
<H4>Commands for Manipulating the History</H4>
-<P>
-
<DL COMPACT>
<DT><B>accept-line (Newline, Return)</B>
@@ -7929,7 +7991,7 @@ This is a non-incremental search.
<DT><B>history-substring-search-backward</B>
<DD>
-Search backward through the history for the string of characters
+Search backward through the history for the string of characters
between the start of the current line and the current cursor
position (the <I>point</I>).
The search string may match anywhere in a history line.
@@ -8038,8 +8100,6 @@ and <I>emacs</I> as the editor, in that order.
<A NAME="lbCP">&nbsp;</A>
<H4>Commands for Changing Text</H4>
-<P>
-
<DL COMPACT>
<DT><B></B><I>end-of-file</I> (usually C-d)
@@ -8132,8 +8192,6 @@ before point with a space. By default, this command is unbound.
<A NAME="lbCQ">&nbsp;</A>
<H4>Killing and Yanking</H4>
-<P>
-
<DL COMPACT>
<DT><B>kill-line (C-k)</B>
@@ -8227,8 +8285,6 @@ or
<A NAME="lbCR">&nbsp;</A>
<H4>Numeric Arguments</H4>
-<P>
-
<DL COMPACT>
<DT><B>digit-argument (M-0, M-1, ..., M--)</B>
@@ -8257,8 +8313,6 @@ argument count sixteen, and so on.
<A NAME="lbCS">&nbsp;</A>
<H4>Completing</H4>
-<P>
-
<DL COMPACT>
<DT><B>complete (TAB)</B>
@@ -8388,8 +8442,6 @@ above).
<A NAME="lbCT">&nbsp;</A>
<H4>Keyboard Macros</H4>
-<P>
-
<DL COMPACT>
<DT><B>start-kbd-macro (C-x ()</B>
@@ -8416,8 +8468,6 @@ Print the last keyboard macro defined in a format suitable for the
<A NAME="lbCU">&nbsp;</A>
<H4>Miscellaneous</H4>
-<P>
-
<DL COMPACT>
<DT><B>re-read-init-file (C-x C-r)</B>
@@ -8436,8 +8486,8 @@ ring the terminal's bell (subject to the setting of
<DD>
If the metafied character <I>x</I> is uppercase, run the command
-that is bound to the corresponding metafied lowercase character.
-The behavior is undefined if <I>x</I> is already lowercase.
+that is bound to the corresponding metafied lowercase character.
+The behavior is undefined if <I>x</I> is already lowercase.
<DT><B>prefix-meta (ESC)</B>
<DD>
@@ -8567,8 +8617,6 @@ Display version information about the current instance of
<A NAME="lbCV">&nbsp;</A>
<H4>Programmable Completion</H4>
-<P>
-
When word completion is attempted for an argument to a command for
which a completion specification (a <I>compspec</I>) has been defined
using the <B>complete</B> builtin (see
@@ -8960,8 +9008,6 @@ for information on setting and unsetting shell options.
<A NAME="lbCX">&nbsp;</A>
<H3>HISTORY EXPANSION</H3>
-<P>
-
The shell supports a history expansion feature that
is similar to the history expansion in
<B>csh</B>.
@@ -9080,8 +9126,6 @@ writing the history file.
<A NAME="lbCY">&nbsp;</A>
<H4>Event Designators</H4>
-<P>
-
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
@@ -9133,6 +9177,8 @@ The trailing <B>?</B> may be omitted if
<I>string</I>
is followed immediately by a newline.
+If <I>string</I> is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
<DT><B></B><FONT SIZE=+2><B>^</B></FONT><B></B><I>string1</I><FONT SIZE=+2>^</FONT><I>string2</I><FONT SIZE=+2>^</FONT>
<DD>
@@ -9143,7 +9189,7 @@ with
<I>string2</I>.
Equivalent to
-``!!:s/<I>string1</I>/<I>string2</I>/''
+``!!:s<FONT SIZE=+2>^</FONT><I>string1</I><FONT SIZE=+2>^</FONT><I>string2</I><FONT SIZE=+2>^</FONT>''
(see <B>Modifiers</B> below).
<DT><B>!#</B>
@@ -9154,8 +9200,6 @@ The entire command line typed so far.
<A NAME="lbCZ">&nbsp;</A>
<H4>Word Designators</H4>
-<P>
-
Word designators are used to select desired words from the event.
A
<B>:</B>
@@ -9201,7 +9245,8 @@ zeroth word if there is only one word in the line.
<DT><B>%</B>
<DD>
-The word matched by the most recent `?<I>string</I>?' search.
+The first word matched by the most recent `?<I>string</I>?' search,
+if the search string begins with a character that is part of a word.
<DT><I>x</I><B>-</B>y
<DD>
@@ -9223,6 +9268,7 @@ Abbreviates <I>x-$</I>.
<DD>
Abbreviates <I>x-$</I> like <B>x*</B>, but omits the last word.
+If <B>x</B> is missing, it defaults to 0.
</DL>
<P>
@@ -9232,15 +9278,12 @@ previous command is used as the event.
<A NAME="lbDA">&nbsp;</A>
<H4>Modifiers</H4>
-<P>
-
After the optional word designator, there may appear a sequence of
one or more of the following modifiers, each preceded by a `:'.
+These modify, or edit, the word or words selected from the history event.
<P>
-<P>
-
<DL COMPACT>
<DT><B>h</B>
@@ -9277,6 +9320,8 @@ but break into words at
<B>blanks</B>
and newlines.
+The <B>q</B> and <B>x</B> modifiers are mutually exclusive; the last one
+supplied is used.
<DT><B>s/</B><I>old</I>/<I>new</I>/
<DD>
@@ -9286,9 +9331,11 @@ Substitute
for the first occurrence of
<I>old</I>
-in the event line. Any delimiter can be used in place of /. The
-final delimiter is optional if it is the last character of the
-event line. The delimiter may be quoted in
+in the event line.
+Any character may be used as the delimiter in place of /.
+The final delimiter is optional if it is the last character of the
+event line.
+The delimiter may be quoted in
<I>old</I>
and
@@ -9300,7 +9347,8 @@ with a single backslash. If &amp; appears in
it is replaced by
<I>old</I>.
-A single backslash will quote the &amp;. If
+A single backslash will quote the &amp;.
+If
<I>old</I>
is null, it is set to the last
@@ -9314,6 +9362,13 @@ in a
<B>!?</B><I>string</I><B>[?]</B>
search.
+If
+<I>new</I>
+
+is null, each matching
+<I>old</I>
+
+is deleted.
<DT><B>&amp;</B>
<DD>
@@ -9331,7 +9386,8 @@ An <B>a</B> may be used as a synonym for <B>g</B>.
<DT><B>G</B>
<DD>
-Apply the following `<B>s</B>' modifier once to each word in the event line.
+Apply the following `<B>s</B>' or `<B>&amp;</B>' modifier once to each word
+in the event line.
</DL>
<A NAME="lbDB">&nbsp;</A>
@@ -9562,15 +9618,23 @@ variable to the contents of the <B>readline</B> line buffer and the
<FONT SIZE=-1><B>READLINE_POINT</B>
</FONT>
-variable to the current location of the insertion point.
-If the executed command changes the value of
-<FONT SIZE=-1><B>READLINE_LINE</B>
+and
+<FONT SIZE=-1><B>READLINE_MARK</B>
+
+</FONT>
+variables to the current location of the insertion point and the saved
+insertion point (the mark), respectively.
+If the executed command changes the value of any of
+<FONT SIZE=-1><B>READLINE_LINE</B>,
</FONT>
-or
<FONT SIZE=-1><B>READLINE_POINT</B>,
</FONT>
+or
+<FONT SIZE=-1><B>READLINE_MARK</B>,
+
+</FONT>
those new values will be reflected in the editing state.
<DT><B>-X</B>
@@ -9796,10 +9860,10 @@ will be displayed.
<P>
The return value is true unless an invalid option is supplied, or no
matches were generated.
-<DT><B>complete</B> [<B>-abcdefgjksuv</B>] [<B>-o</B> <I>comp-option</I>] [<B>-DEI</B>] [<B>-A</B> <I>action</I>] [<B>-G</B> <I>globpat</I>] [<B>-W</B> <I>wordlist</I>] [<B>-F</B> <I>function</I>] [<B>-C</B> <I>command</I>]<DD>
+<DT><B>complete</B> [<B>-abcdefgjksuv</B>] [<B>-o</B> <I>comp-option</I>] [<B>-DEI</B>] [<B>-A</B> <I>action</I>] [<B>-G</B> <I>globpat</I>] [<B>-W</B> <I>wordlist</I>]<DD>
<BR>
-[<B>-X</B> <I>filterpat</I>] [<B>-P</B> <I>prefix</I>] [<B>-S</B> <I>suffix</I>] <I>name</I> [<I>name ...</I>]
+[<B>-F</B> <I>function</I>] [<B>-C</B> <I>command</I>] [<B>-X</B> <I>filterpat</I>] [<B>-P</B> <I>prefix</I>] [<B>-S</B> <I>suffix</I>] <I>name</I> [<I>name ...</I>]
<DT><B>complete</B> <B>-pr</B> [<B>-DEI</B>] [<I>name</I> ...]<DD>
@@ -9817,7 +9881,7 @@ The <B>-E</B> option indicates that other supplied options and actions should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The <B>-I</B> option indicates that other supplied options and actions should
-apply to completion on the inital non-assignment word on the line, or after
+apply to completion on the initial non-assignment word on the line, or after
a command delimiter such as <B>;</B> or <B>|</B>, which is usually command
name completion.
If multiple options are supplied, the <B>-D</B> option takes precedence
@@ -10070,7 +10134,7 @@ The <B>-E</B> option indicates that other supplied options should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The <B>-I</B> option indicates that other supplied options should
-apply to completion on the inital non-assignment word on the line,
+apply to completion on the initial non-assignment word on the line,
or after a command delimiter such as <B>;</B> or <B>|</B>, which is usually
command name completion.
<P>
@@ -10101,9 +10165,9 @@ must be >= 1. If
is greater than the number of enclosing loops, the last enclosing loop
(the ``top-level'' loop) is resumed.
The return value is 0 unless <I>n</I> is not greater than or equal to 1.
-<DT><B>declare</B> [<B>-aAfFgilnrtux</B>] [<B>-p</B>] [<I>name</I>[=<I>value</I>] ...]<DD>
+<DT><B>declare</B> [<B>-aAfFgiIlnrtux</B>] [<B>-p</B>] [<I>name</I>[=<I>value</I>] ...]<DD>
-<DT><B>typeset</B> [<B>-aAfFgilnrtux</B>] [<B>-p</B>] [<I>name</I>[=<I>value</I>] ...]<DD>
+<DT><B>typeset</B> [<B>-aAfFgiIlnrtux</B>] [<B>-p</B>] [<I>name</I>[=<I>value</I>] ...]<DD>
Declare variables and/or give them attributes.
If no <I>name</I>s are given then display the values of variables.
@@ -10146,6 +10210,14 @@ The
option forces variables to be created or modified at the global scope,
even when <B>declare</B> is executed in a shell function.
It is ignored in all other cases.
+The
+<B>-I</B>
+
+option causes local variables to inherit the attributes
+(except the <I>nameref</I> attribute)
+and value of any existing variable with the same
+<I>name</I> at a surrounding scope.
+If there is no existing variable, the local variable is initially unset.
The following options can
be used to restrict output to variables with the specified attribute or
to give variables attributes:
@@ -10624,7 +10696,12 @@ 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).
+When listing, a <I>first</I> or <I>last</I> of
+0 is equivalent to -1 and -0 is equivalent to the current
+command (usually the <B>fc</B> command); otherwise 0 is equivalent to -1
+and -0 is invalid.
+If
<I>last</I>
is not specified, it is set to
@@ -10738,7 +10815,7 @@ does not specify a valid job or
<I>jobspec</I>
specifies a job that was started without job control.
-<DT><B>getopts</B> <I>optstring</I> <I>name</I> [<I>args</I>]<DD>
+<DT><B>getopts</B> <I>optstring</I> <I>name</I> [<I>arg ...</I>]<DD>
<B>getopts</B>
is used by shell procedures to parse positional parameters.
@@ -10797,9 +10874,10 @@ and <I>name</I> is set to ?.
<B>getopts</B>
normally parses the positional parameters, but if more arguments are
-given in
-<I>args</I>,
+supplied as
+<I>arg</I>
+values,
<B>getopts</B>
parses those instead.
@@ -11232,6 +11310,8 @@ If <I>name</I> is -, the set of shell options is made local to the function
in which <B>local</B> is invoked: shell options changed using the
<B>set</B> builtin inside the function are restored to their original values
when the function returns.
+The restore is effected as if a series of <B>set</B> commands were executed
+to restore the values that were in place before the function.
With no operands,
<B>local</B>
@@ -11452,6 +11532,12 @@ This is an exception to the usual <B>printf</B> behavior.
</DL>
<P>
+The %b, %q, and %T directives all use the field width and precision
+arguments from the format specification and write that many bytes from
+(or use that wide a field for) the expanded argument, which usually
+contains more characters than the original.
+<P>
+
Arguments to non-string format specifiers are treated as C constants,
except that a leading plus or minus sign is allowed, and if the leading
character is a single or double quote, the value is the ASCII value of
@@ -11684,7 +11770,9 @@ Read input from file descriptor <I>fd</I>.
If no
<I>names</I>
-are supplied, the line read is assigned to the variable
+are supplied, the line read,
+without the ending delimiter but otherwise unmodified,
+is assigned to the variable
<FONT SIZE=-1><B>REPLY</B>.
</FONT>
@@ -12463,88 +12551,35 @@ history is enabled, as described above under
<FONT SIZE=-1><B>HISTORY</B>.
</FONT>
+
<DT><B>compat31</B>
<DD>
-If set,
-<B>bash</B>
-
-changes its behavior to that of version 3.1 with respect to quoted
-arguments to the <B>[[</B> conditional command's <B>=~</B> operator
-and locale-specific string comparison when using the <B>[[</B>
-conditional command's <B>&lt;</B> and <B>&gt;</B> operators.
-Bash versions prior to bash-4.1 use ASCII collation and
-<I>strcmp</I>(3);
-
-bash-4.1 and later use the current locale's collation sequence and
-<I>strcoll</I>(3).
-
<DT><B>compat32</B>
<DD>
-If set,
-<B>bash</B>
-
-changes its behavior to that of version 3.2 with respect to
-locale-specific string comparison when using the <B>[[</B>
-conditional command's <B>&lt;</B> and <B>&gt;</B> 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.
<DT><B>compat40</B>
<DD>
-If set,
-<B>bash</B>
-
-changes its behavior to that of version 4.0 with respect to locale-specific
-string comparison when using the <B>[[</B>
-conditional command's <B>&lt;</B> and <B>&gt;</B> operators (see description of
-<B>compat31</B>)
-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.
<DT><B>compat41</B>
<DD>
-If set,
-<B>bash</B>,
-
-when in <I>posix mode</I>, 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.
<DT><B>compat42</B>
<DD>
-If set,
-<B>bash</B>
-
-does not process the replacement string in the pattern substitution word
-expansion using quote removal.
<DT><B>compat43</B>
<DD>
-If set,
-<B>bash</B>
-
-does not print a warning message if an attempt is made to use a quoted compound
-array assignment as an argument to <B>declare</B>,
-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 <B>break</B> or
-<B>continue</B> in a shell function to affect loops in the caller's context).
<DT><B>compat44</B>
<DD>
-If set,
-<B>bash</B>
-saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
-used, regardless of whether or not extended debugging mode is enabled.
+These control aspects of the shell's compatibility mode
+(see
+<FONT SIZE=-1><B>SHELL COMPATIBILITY MODE</B>
+
+</FONT>
+below).
<DT><B>complete_fullquote</B>
<DD>
@@ -12628,7 +12663,9 @@ This option is enabled by default for interactive shells.
<DT><B>extdebug</B>
<DD>
-If set at shell invocation, arrange to execute the debugger profile
+If set at shell invocation,
+or in a shell startup file,
+arrange to execute the debugger profile
before the shell starts, identical to the <B>--debugger</B> option.
If set after invocation, behavior intended for use by debuggers is enabled:
<DL COMPACT><DT><DD>
@@ -12979,6 +13016,7 @@ the evaluation of the conditional expression
Each operator and operand must be a separate argument.
Expressions are composed of the primaries described above under
+
<FONT SIZE=-1><B>CONDITIONAL EXPRESSIONS</B>.
</FONT>
@@ -13351,7 +13389,10 @@ option suppresses shell function lookup, as with the <B>command</B> builtin.
returns true if all of the arguments are found, false if
any are not found.
-<DT><B>ulimit</B> [<B>-HSabcdefiklmnpqrstuvxPT</B> [<I>limit</I>]]<DD>
+<DT><B>ulimit</B> [<B>-HS</B>] <B>-a</B><DD>
+
+<DT><B>ulimit</B> [<B>-HS</B>] [<B>-bcdefiklmnpqrstuvxPRT</B> [<I>limit</I>]]<DD>
+
Provides control over the resources available to the shell and to
processes started by it, on systems that allow such control.
The <B>-H</B> and <B>-S</B> options specify that the hard or soft limit is
@@ -13379,7 +13420,8 @@ If
is omitted, the current value of the soft limit of the resource is
printed, unless the <B>-H</B> option is given. When more than one
-resource is specified, the limit name and unit are printed before the value.
+resource is specified, the limit name and unit, if appropriate,
+are printed before the value.
Other options are interpreted as follows:
<DL COMPACT><DT><DD>
@@ -13387,7 +13429,7 @@ Other options are interpreted as follows:
<DT><B>-a</B>
<DD>
-All current limits are reported
+All current limits are reported; no limits are set
<DT><B>-b</B>
<DD>
@@ -13466,6 +13508,10 @@ The maximum number of file locks
<DD>
The maximum number of pseudoterminals
+<DT><B>-R</B>
+
+<DD>
+The maximum time a real-time process can run before blocking, in microseconds
<DT><B>-T</B>
<DD>
@@ -13489,6 +13535,9 @@ is assumed. Values are in 1024-byte increments, except for
<B>-t</B>,
which is in seconds;
+<B>-R</B>,
+
+which is in microseconds;
<B>-p</B>,
which is in units of 512-byte blocks;
@@ -13586,24 +13635,39 @@ attribute, <I>name</I> will be unset rather than the variable it
references.
<B>-n</B> has no effect if the <B>-f</B> option is supplied.
If no options are supplied, each <I>name</I> refers to a variable; if
-there is no variable by that name, any function with that name is
+there is no variable by that name, a function with that name, if any, is
unset.
Each unset variable or function is removed from the environment
passed to subsequent commands.
If any of
-<FONT SIZE=-1><B>COMP_WORDBREAKS</B>,
+<FONT SIZE=-1><B>BASH_ALIASES</B>,
</FONT>
-<FONT SIZE=-1><B>RANDOM</B>,
+<FONT SIZE=-1><B>BASH_ARGV0</B>,
</FONT>
-<FONT SIZE=-1><B>SECONDS</B>,
+<FONT SIZE=-1><B>BASH_CMDS</B>,
</FONT>
-<FONT SIZE=-1><B>LINENO</B>,
+<FONT SIZE=-1><B>BASH_COMMAND</B>,
</FONT>
-<FONT SIZE=-1><B>HISTCMD</B>,
+<FONT SIZE=-1><B>BASH_SUBSHELL</B>,
+
+</FONT>
+<FONT SIZE=-1><B>BASHPID</B>,
+
+</FONT>
+<FONT SIZE=-1><B>COMP_WORDBREAKS</B>,
+
+</FONT>
+<FONT SIZE=-1><B>DIRSTACK</B>,
+
+</FONT>
+<FONT SIZE=-1><B>EPOCHREALTIME</B>,
+
+</FONT>
+<FONT SIZE=-1><B>EPOCHSECONDS</B>,
</FONT>
<FONT SIZE=-1><B>FUNCNAME</B>,
@@ -13612,8 +13676,20 @@ If any of
<FONT SIZE=-1><B>GROUPS</B>,
</FONT>
+<FONT SIZE=-1><B>HISTCMD</B>,
+
+</FONT>
+<FONT SIZE=-1><B>LINENO</B>,
+
+</FONT>
+<FONT SIZE=-1><B>RANDOM</B>,
+
+</FONT>
+<FONT SIZE=-1><B>SECONDS</B>,
+
+</FONT>
or
-<FONT SIZE=-1><B>DIRSTACK</B>
+<FONT SIZE=-1><B>SRANDOM</B>
</FONT>
are unset, they lose their special properties, even if they are
@@ -13621,7 +13697,7 @@ subsequently reset. The exit status is true unless a
<I>name</I>
is readonly.
-<DT><B>wait</B> [<B>-fn</B>] [<I>id ...</I>]<DD>
+<DT><B>wait</B> [<B>-fn</B>] [-p <I>varname</I>] [<I>id ...</I>]<DD>
Wait for each specified child process and return its termination status.
Each
<I>id</I>
@@ -13631,23 +13707,266 @@ ID or a job specification; if a job spec is given, all processes
in that job's pipeline are waited for. If
<I>id</I>
-is not given, all currently active child processes
-are waited for, and the return status is zero.
-If the <B>-n</B> option is supplied, <B>wait</B> waits for any job to
-terminate and returns its exit status.
-If the <B>-f</B> option is supplied, and job control is enabled,
-<B>wait</B> forces <I>id</I> to terminate before returning its status,
-instead of returning when it changes status.
+is not given,
+<B>wait</B> waits for all running background jobs and
+the last-executed process substitution, if its process id is the same as
+<B>$!</B>,
+and the return status is zero.
+If the <B>-n</B> option is supplied,
+<B>wait</B> waits for a single job
+from the list of <I>id</I>s or, if no <I>id</I>s are supplied, any job,
+to complete and returns its exit status.
+If none of the supplied arguments is a child of the shell, or if no arguments
+are supplied and the shell has no unwaited-for children, the exit status
+is 127.
+If the <B>-p</B> option is supplied, the process or job identifier of the job
+for which the exit status is returned is assigned to the variable
+<I>varname</I> named by the option argument.
+The variable will be unset initially, before any assignment.
+This is useful only when the <B>-n</B> option is supplied.
+Supplying the <B>-f</B> option, when job control is enabled,
+forces <B>wait</B> to wait for <I>id</I> to terminate before returning
+its status, instead of returning when it changes status.
If
<I>id</I>
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.
+</DL>
+<A NAME="lbDC">&nbsp;</A>
+<H3>SHELL COMPATIBILITY MODE</H3>
+
+Bash-4.0 introduced the concept of a `shell compatibility level', specified
+as a set of options to the shopt builtin
+<B>compat31</B>,
+
+<B>compat32</B>,
+
+<B>compat40</B>,
+
+<B>compat41</B>,
+
+and so on).
+There is only one current
+compatibility level -- each option is mutually exclusive.
+The compatibility level is intended to allow users to select behavior
+from previous versions that is incompatible with newer versions
+while they migrate scripts to use current features and
+behavior. It's intended to be a temporary solution.
+<P>
+
+This section does not mention behavior that is standard for a particular
+version (e.g., setting <B>compat32</B> means that quoting the rhs of the regexp
+matching operator quotes special regexp characters in the word, which is
+default behavior in bash-3.2 and above).
+<P>
+
+If a user enables, say, <B>compat32</B>, it may affect the behavior of other
+compatibility levels up to and including the current compatibility level.
+The idea is that each compatibility level controls behavior that changed
+in that version of <B>bash</B>,
+but that behavior may have been present in earlier versions.
+For instance, the change to use locale-based comparisons with the <B>[[</B>
+command came in bash-4.1, and earlier versions used ASCII-based comparisons,
+so enabling <B>compat32</B> will enable ASCII-based comparisons as well.
+That granularity may not be sufficient for
+all uses, and as a result users should employ compatibility levels carefully.
+Read the documentation for a particular feature to find out the
+current behavior.
+<P>
+
+Bash-4.3 introduced a new shell variable:
+<FONT SIZE=-1><B>BASH_COMPAT</B>.
+
+</FONT>
+The value assigned
+to this variable (a decimal version number like 4.2, or an integer
+corresponding to the <B>compat</B><I>NN</I> option, like 42) determines the
+compatibility level.
+<P>
+
+Starting with bash-4.4, Bash has begun deprecating older compatibility
+levels.
+Eventually, the options will be removed in favor of
+<FONT SIZE=-1><B>BASH_COMPAT</B>.
+
+</FONT>
+<P>
+
+Bash-5.0 is the final version for which there will be an individual shopt
+option for the previous version. Users should use
+<FONT SIZE=-1><B>BASH_COMPAT</B>
+
+</FONT>
+on bash-5.0 and later versions.
+<P>
+
+The following table describes the behavior changes controlled by each
+compatibility level setting.
+The <B>compat</B><I>NN</I> tag is used as shorthand for setting the
+compatibility level
+to <I>NN</I> using one of the following mechanisms.
+For versions prior to bash-5.0, the compatibility level may be set using
+the corresponding <B>compat</B><I>NN</I> shopt option.
+For bash-4.3 and later versions, the
+<FONT SIZE=-1><B>BASH_COMPAT</B>
+
+</FONT>
+variable is preferred,
+and it is required for bash-5.1 and later versions.
+<DL COMPACT>
+<DT><B>compat31</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+quoting the rhs of the <B>[[</B> command's regexp matching operator (=~)
+has no special effect
+</DL></DL>
+
+
+<DT><B>compat32</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+interrupting a command list such as &quot;a ; b ; c&quot; causes the execution
+of the next command in the list (in bash-4.0 and later versions,
+the shell acts as if it received the interrupt, so
+interrupting one command in a list aborts the execution of the
+entire list)
+</DL></DL>
+
+
+<DT><B>compat40</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+the <B>&lt;</B> and <B>&gt;</B> operators to the <B>[[</B> command do not
+consider the current locale when comparing strings; they use ASCII
+ordering.
+Bash versions prior to bash-4.1 use ASCII collation and
+<I>strcmp</I>(3);
+
+bash-4.1 and later use the current locale's collation sequence and
+<I>strcoll</I>(3).
+
+</DL></DL>
+
+
+<DT><B>compat41</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+in <I>posix</I> mode, <B>time</B> may be followed by options and still be
+recognized as a reserved word (this is POSIX interpretation 267)
+<DT>*<DD>
+in <I>posix</I> mode, the parser requires that an even number of single
+quotes occur in the <I>word</I> portion of a double-quoted
+parameter expansion and treats them specially, so that characters within
+the single quotes are considered quoted
+(this is POSIX interpretation 221)
+</DL></DL>
+
+
+<DT><B>compat42</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+the replacement string in double-quoted pattern substitution does not
+undergo quote removal, as it does in versions after bash-4.2
+<DT>*<DD>
+in posix mode, single quotes are considered special when expanding
+the <I>word</I> portion of a double-quoted parameter expansion
+and can be used to quote a closing brace or other special character
+(this is part of POSIX interpretation 221);
+in later versions, single quotes
+are not special within double-quoted word expansions
+</DL></DL>
+
+
+<DT><B>compat43</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+the shell does not print a warning message if an attempt is made to
+use a quoted compound assignment as an argument to declare
+(declare -a foo='(1 2)'). Later versions warn that this usage is
+deprecated
+<DT>*<DD>
+word expansion errors are considered non-fatal errors that cause the
+current command to fail, even in posix mode
+(the default behavior is to make them fatal errors that cause the shell
+to exit)
+<DT>*<DD>
+when executing a shell function, the loop state (while/until/etc.)
+is not reset, so <B>break</B> or <B>continue</B> in that function will break
+or continue loops in the calling context. Bash-4.4 and later reset
+the loop state to prevent this
+</DL></DL>
+
+
+<DT><B>compat44</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+the shell sets up the values used by
+<FONT SIZE=-1><B>BASH_ARGV</B>
+
+</FONT>
+and
+<FONT SIZE=-1><B>BASH_ARGC</B>
+
+</FONT>
+so they can expand to the shell's positional parameters even if extended
+debugging mode is not enabled
+<DT>*<DD>
+a subshell inherits loops from its parent context, so <B>break</B>
+or <B>continue</B> will cause the subshell to exit.
+Bash-5.0 and later reset the loop state to prevent the exit
+<DT>*<DD>
+variable assignments preceding builtins like <B>export</B> and <B>readonly</B>
+that set attributes continue to affect variables with the same
+name in the calling environment even if the shell is not in posix
+mode
+</DL></DL>
+
+
+<DT><B>compat50</B><DD>
+
+<DL COMPACT><DT><DD>
+<DL COMPACT>
+<DT>*<DD>
+Bash-5.1 changed the way
+<FONT SIZE=-1><B>$RANDOM</B>
+
+</FONT>
+is generated to introduce slightly
+more randomness. If the shell compatibility level is set to 50 or
+lower, it reverts to the method from bash-5.0 and previous versions,
+so seeding the random number generator by assigning a value to
+<FONT SIZE=-1><B>RANDOM</B>
+
+</FONT>
+will produce the same sequence as in bash-5.0
+<DT>*<DD>
+If the command hash table is empty, bash versions prior to bash-5.1
+printed an informational message to that effect, even when producing
+output that can be reused as input. Bash-5.1 suppresses that message
+when the <B>-l</B> option is supplied.
+</DL></DL>
+
+
</DL>
-<A NAME="lbDC">&nbsp;</A>
+<A NAME="lbDD">&nbsp;</A>
<H3>RESTRICTED SHELL</H3>
@@ -13682,6 +14001,9 @@ setting or unsetting the values of
<FONT SIZE=-1><B>PATH</B>,
</FONT>
+<FONT SIZE=-1><B>HISTFILE</B>,
+
+</FONT>
<FONT SIZE=-1><B>ENV</B>,
</FONT>
@@ -13703,6 +14025,11 @@ as an argument to the
builtin command
<DT>*<DD>
specifying a filename containing a slash as an argument to the
+<B>history</B>
+
+builtin command
+<DT>*<DD>
+specifying a filename containing a slash as an argument to the
<B>-p</B>
option to the
@@ -13769,7 +14096,7 @@ turns off any restrictions in the shell spawned to execute the
script.
-<A NAME="lbDD">&nbsp;</A>
+<A NAME="lbDE">&nbsp;</A>
<H3>SEE ALSO</H3>
@@ -13785,7 +14112,7 @@ script.
<DT><I>readline</I>(3)<DD>
</DL>
-<A NAME="lbDE">&nbsp;</A>
+<A NAME="lbDF">&nbsp;</A>
<H3>FILES</H3>
@@ -13822,7 +14149,7 @@ The individual login shell cleanup file, executed when a login shell exits
Individual <I>readline</I> initialization file
</DL>
-<A NAME="lbDF">&nbsp;</A>
+<A NAME="lbDG">&nbsp;</A>
<H3>AUTHORS</H3>
Brian Fox, Free Software Foundation
@@ -13835,7 +14162,7 @@ Chet Ramey, Case Western Reserve University
<BR>
<A HREF="mailto:chet.ramey@case.edu">chet.ramey@case.edu</A>
-<A NAME="lbDG">&nbsp;</A>
+<A NAME="lbDH">&nbsp;</A>
<H3>BUG REPORTS</H3>
If you find a bug in
@@ -13886,11 +14213,9 @@ Comments and bug reports concerning
this manual page should be directed to
<I><A HREF="mailto:chet.ramey@case.edu">chet.ramey@case.edu</A></I>.
-<A NAME="lbDH">&nbsp;</A>
+<A NAME="lbDI">&nbsp;</A>
<H3>BUGS</H3>
-<P>
-
It's too big and too slow.
<P>
@@ -13932,7 +14257,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
-<TH ALIGN=LEFT width=33%>GNU Bash 5.0<TH ALIGN=CENTER width=33%>2018 December 7<TH ALIGN=RIGHT width=33%>BASH(1)
+<TH ALIGN=LEFT width=33%>GNU Bash 5.1<TH ALIGN=CENTER width=33%>2020 October 29<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -14029,15 +14354,16 @@ There may be only one active coprocess at a time.
<DT><A HREF="#lbDA">Modifiers</A><DD>
</DL>
<DT><A HREF="#lbDB">SHELL BUILTIN COMMANDS</A><DD>
-<DT><A HREF="#lbDC">RESTRICTED SHELL</A><DD>
-<DT><A HREF="#lbDD">SEE ALSO</A><DD>
-<DT><A HREF="#lbDE">FILES</A><DD>
-<DT><A HREF="#lbDF">AUTHORS</A><DD>
-<DT><A HREF="#lbDG">BUG REPORTS</A><DD>
-<DT><A HREF="#lbDH">BUGS</A><DD>
+<DT><A HREF="#lbDC">SHELL COMPATIBILITY MODE</A><DD>
+<DT><A HREF="#lbDD">RESTRICTED SHELL</A><DD>
+<DT><A HREF="#lbDE">SEE ALSO</A><DD>
+<DT><A HREF="#lbDF">FILES</A><DD>
+<DT><A HREF="#lbDG">AUTHORS</A><DD>
+<DT><A HREF="#lbDH">BUG REPORTS</A><DD>
+<DT><A HREF="#lbDI">BUGS</A><DD>
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
-Time: 02 January 2019 09:14:47 EST
+Time: 18 November 2020 15:13:09 EST
</BODY>
</HTML>
diff --git a/doc/bash.info b/doc/bash.info
index 39f32125..2fd137a9 100644
--- a/doc/bash.info
+++ b/doc/bash.info
@@ -1,13 +1,13 @@
-This is bash.info, produced by makeinfo version 6.5 from
+This is bash.info, produced by makeinfo version 6.7 from
bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.0, 7 December 2018).
+Bash shell (version 5.1, 29 October 2020).
- This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.0.
+ This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.1.
- Copyright (C) 1988-2018 Free Software Foundation, Inc.
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -27,11 +27,11 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.0, 7 December 2018). The Bash home page is
+Bash shell (version 5.1, 29 October 2020). The Bash home page is
<http://www.gnu.org/software/bash/>.
- This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.0.
+ This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.1.
Bash contains features that appear in other popular shells, and some
features that only appear in Bash. Some of the shells that Bash has
@@ -474,9 +474,13 @@ File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting
...................................
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.
+string to be translated according to the current locale. The GETTEXT
+infrastructure performs the message catalog lookup and translation,
+using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained
+below. See the gettext documentation for additional details. If the
+current locale is 'C' or 'POSIX', or if there are no translations
+available, the dollar sign is ignored. If the string is translated and
+replaced, the replacement is double-quoted.
Some systems use the message catalog selected by the 'LC_MESSAGES'
shell variable. Others create the name of the message catalog from the
@@ -517,6 +521,7 @@ construct, or in some other grouping.
* Menu:
+* Reserved Words:: Words that have special meaning to the shell.
* Simple Commands:: The most common type of command.
* Pipelines:: Connecting the input and output of several
commands.
@@ -526,9 +531,30 @@ construct, or in some other grouping.
* GNU Parallel:: Running commands in parallel.

-File: bash.info, Node: Simple Commands, Next: Pipelines, Up: Shell Commands
+File: bash.info, Node: Reserved Words, Next: Simple Commands, Up: Shell Commands
-3.2.1 Simple Commands
+3.2.1 Reserved Words
+--------------------
+
+Reserved words are words that have special meaning to the shell. They
+are used to begin and end the shell's compound commands.
+
+ The following words are recognized as reserved when unquoted and the
+first word of a command (see below for exceptions):
+
+'if' 'then' 'elif' 'else' 'fi' 'time'
+'for' 'in' 'until' 'while' 'do' 'done'
+'case' 'esac' 'coproc''select''function'
+'{' '}' '[[' ']]' '!'
+
+'in' is recognized as a reserved word if it is the third word of a
+'case' or 'select' command. 'in' and 'do' are recognized as reserved
+words if they are the third word in a 'for' command.
+
+
+File: bash.info, Node: Simple Commands, Next: Pipelines, Prev: Reserved Words, Up: Shell Commands
+
+3.2.2 Simple Commands
---------------------
A simple command is the kind of command encountered most often. It's
@@ -544,7 +570,7 @@ 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
+3.2.3 Pipelines
---------------
A 'pipeline' is a sequence of one or more commands separated by one of
@@ -604,7 +630,7 @@ 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
+3.2.4 Lists of Commands
-----------------------
A 'list' is a sequence of one or more pipelines separated by one of the
@@ -652,7 +678,7 @@ command executed in the list.

File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up: Shell Commands
-3.2.4 Compound Commands
+3.2.5 Compound Commands
-----------------------
* Menu:
@@ -678,7 +704,7 @@ 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
+3.2.5.1 Looping Constructs
..........................
Bash supports the following looping constructs.
@@ -742,7 +768,7 @@ 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
+3.2.5.2 Conditional Constructs
..............................
'if'
@@ -815,7 +841,8 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
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.
+ associated COMMAND-LIST on a successful match, continuing the case
+ statement execution as if the pattern list had not matched.
The return status is zero if no PATTERN is matched. Otherwise, the
return status is the exit status of the COMMAND-LIST executed.
@@ -892,7 +919,8 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
An additional binary operator, '=~', is available, with the same
precedence as '==' and '!='. When it is used, the string to the
right of the operator is considered a POSIX extended regular
- expression and matched accordingly (as in regex3)). The return
+ expression and matched accordingly (using the POSIX 'regcomp' and
+ 'regexec' interfaces usually described in regex(3)). The return
value is 0 if the string matches the pattern, and 1 otherwise. If
the regular expression is syntactically incorrect, the conditional
expression's return value is 2. If the 'nocasematch' shell option
@@ -904,18 +932,24 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
normal quoting characters lose their meanings between brackets. If
the pattern is stored in a shell variable, quoting the variable
expansion forces the entire pattern to be matched as a string.
+
+ The pattern will match if it matches any part of the string.
+ Anchor the pattern using the '^' and '$' regular expression
+ operators to force it to match the entire string. The array
+ variable 'BASH_REMATCH' records which parts of the string matched
+ the pattern. The element of 'BASH_REMATCH' with index 0 contains
+ the portion of the string matching the entire regular expression.
Substrings matched by parenthesized subexpressions within the
- regular expression are saved in the 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.
+ regular expression are saved in the remaining 'BASH_REMATCH'
+ indices. The element of 'BASH_REMATCH' with index N is the portion
+ of the string matching the Nth parenthesized subexpression.
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 ]]
+ variable LINE) if there is a sequence of characters anywhere in the
+ value consisting of any number, including zero, of characters in
+ the 'space' character class, zero or one instances of 'a', then a
+ 'b':
+ [[ $line =~ [[:space:]]*(a)?b ]]
That means values like 'aab' and ' aaaaaab' will match, as will a
line containing a 'b' anywhere in its value.
@@ -928,7 +962,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:
to the shell's quote removal. Using a shell variable to store the
pattern decreases these problems. For example, the following is
equivalent to the above:
- pattern='[[:space:]]*?(a)b'
+ pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
If you want to match a character that's special to the regular
@@ -979,7 +1013,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev:

File: bash.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands
-3.2.4.3 Grouping Commands
+3.2.5.3 Grouping Commands
.........................
Bash provides two ways to group a list of commands to be executed as a
@@ -1016,7 +1050,7 @@ LIST.

File: bash.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Commands, Up: Shell Commands
-3.2.5 Coprocesses
+3.2.6 Coprocesses
-----------------
A 'coprocess' is a shell command preceded by the 'coproc' reserved word.
@@ -1056,7 +1090,7 @@ coprocess is the exit status of COMMAND.

File: bash.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands
-3.2.6 GNU Parallel
+3.2.7 GNU Parallel
------------------
There are ways to run commands in parallel that are not built into Bash.
@@ -1082,21 +1116,27 @@ 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
+ printf '%s\n' * | parallel mv {} destdir
As you can see, the {} is replaced with each line read from standard
input. While using 'ls' will work in most instances, it is not
-sufficient to deal with all filenames. If you need to accommodate
-special characters in filenames, you can use
+sufficient to deal with all filenames. 'printf' is a shell builtin, and
+therefore is not subject to the kernel's limit on the number of
+arguments to a program, so you can use '*' (but see below about the
+'dotglob' shell option). If you need to accommodate special characters
+in filenames, you can use
- find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+ printf '%s\0' * | parallel -0 mv {} destdir
as alluded to above.
This will run as many 'mv' commands as there are files in the current
directory. You can emulate a parallel 'xargs' by adding the '-X'
option:
- find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
+ printf '%s\0' * | parallel -0 -X mv {} destdir
+
+ (You may have to modify the pattern if you have the 'dotglob' option
+enabled.)
GNU Parallel can replace certain common idioms that operate on lines
read from a file (in this case, filenames listed one per line):
@@ -1162,27 +1202,28 @@ 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 ]
+ FNAME () COMPOUND-COMMAND [ REDIRECTIONS ]
or
- function NAME [()] COMPOUND-COMMAND [ REDIRECTIONS ]
+ function FNAME [()] COMPOUND-COMMAND [ REDIRECTIONS ]
- This defines a shell function named NAME. The reserved word
+ This defines a shell function named FNAME. The reserved word
'function' is optional. If the 'function' reserved word is supplied,
the parentheses are optional. The BODY of the function is the compound
command COMPOUND-COMMAND (*note Compound Commands::). That command is
usually a LIST enclosed between { and }, but may be any compound command
listed above, with one exception: If the 'function' reserved word is
used, but the parentheses are not supplied, the braces are required.
-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::).
+COMPOUND-COMMAND is executed whenever FNAME is specified as the name of
+a command. When the shell is in POSIX mode (*note Bash POSIX Mode::),
+FNAME must be a valid shell NAME and may not be the same as one of the
+special builtins (*note Special Builtins::). In default mode, a
+function name can be any unquoted shell word that does not contain '$'.
+Any redirections (*note Redirections::) associated with the shell
+function are performed when the function is executed. A function
+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.
@@ -1409,7 +1450,7 @@ only be referenced; assignment to them is not allowed.
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
+ filename 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
@@ -1465,16 +1506,6 @@ only be referenced; assignment to them is not allowed.
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 simple command executed in the
- foreground, 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
@@ -1576,7 +1607,7 @@ expression. Any incorrectly formed brace expansion is left unchanged.
A { or ',' may be quoted with a backslash to prevent its being
considered part of a brace expression. To avoid conflicts with
parameter expansion, the string '${' is not considered eligible for
-brace expansion, and inhibits brace expansion until the closing '}'..
+brace expansion, and inhibits brace expansion until the closing '}'.
This construct is typically used as shorthand when the common prefix
of the strings to be generated is longer than in the above example:
@@ -1852,7 +1883,7 @@ omitted, the operator tests only for existence.
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, '$0' is
prefixed to the list.
'${!PREFIX*}'
@@ -1898,15 +1929,15 @@ omitted, the operator tests only for existence.
'${PARAMETER%%WORD}'
The WORD is expanded to produce a pattern and matched according to
the rules described below (*note Pattern Matching::). If the
- pattern matches If the pattern matches a trailing portion of the
- expanded value of PARAMETER, then the result of the expansion is
- the value of PARAMETER with the shortest matching pattern (the '%'
- case) or the longest matching pattern (the '%%' case) deleted. If
- 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.
+ 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}'
@@ -1957,6 +1988,16 @@ omitted, the operator tests only for existence.
or information about PARAMETER itself, depending on the value of
OPERATOR. Each OPERATOR is a single letter:
+ 'U'
+ The expansion is a string that is the value of PARAMETER with
+ lowercase alphabetic characters converted to uppercase.
+ 'u'
+ The expansion is a string that is the value of PARAMETER with
+ the first character converted to uppercase, if it is
+ alphabetic.
+ 'L'
+ The expansion is a string that is the value of PARAMETER with
+ uppercase alphabetic characters converted to lowercase.
'Q'
The expansion is a string that is the value of PARAMETER
quoted in a format that can be reused as input.
@@ -1972,6 +2013,11 @@ omitted, the operator tests only for existence.
The expansion is a string in the form of an assignment
statement or 'declare' command that, if evaluated, will
recreate PARAMETER with its attributes and value.
+ 'K'
+ Produces a possibly-quoted version of the value of PARAMETER,
+ except that it prints the values of indexed and associative
+ arrays as a sequence of quoted key-value pairs (*note
+ Arrays::).
'a'
The expansion is a string consisting of flag values
representing PARAMETER's attributes.
@@ -1983,7 +2029,7 @@ omitted, the operator tests only for existence.
and the expansion is the resultant list.
The result of the expansion is subject to word splitting and
- pathname expansion as described below.
+ filename expansion as described below.

File: bash.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions
@@ -2116,15 +2162,16 @@ File: bash.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word Sp
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.
+If one of these characters appears, and is not quoted, 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
@@ -2275,7 +2322,7 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or
<&- is preceded by {VARNAME}, the value of VARNAME defines the file
descriptor to close. If {VARNAME} is supplied, the redirection persists
beyond the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor's lifetime manually.
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is '<', the
@@ -2440,7 +2487,7 @@ A variant of here documents, the format is:
[N]<<< WORD
The WORD undergoes tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and quote removal. Pathname
+command substitution, arithmetic expansion, and quote removal. Filename
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).
@@ -2517,7 +2564,8 @@ File: bash.info, Node: Simple Command Expansion, Next: Command Search and Exec
------------------------------
When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in the
+following order.
1. The words that the parser has marked as variable assignments (those
preceding the command name) and redirections are saved for later
@@ -2824,20 +2872,28 @@ of commands remembered by the parent (see the description of 'hash' in
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.
+interpreter for the program and, depending on the operating system, one
+or more optional arguments for that interpreter. 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
+ The arguments to the interpreter consist of one or more optional
+arguments 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.
+the arguments supplied to the script. The details of how the
+interpreter line is split into an interpreter name and a set of
+arguments vary across systems. 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 a single argument
+to a maximum of 32 characters, so it's not portable to assume that using
+more than one argument will work.
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.
+interpret the script, even if it is executed under another shell. It's
+a common idiom to use 'env' to find 'bash' even if it's been installed
+in another directory: '#!/usr/bin/env bash' will find the first
+occurrence of 'bash' in '$PATH'.

File: bash.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top
@@ -3028,7 +3084,7 @@ standard.
supplied with a name that is not a shell function.
'getopts'
- getopts OPTSTRING NAME [ARGS]
+ getopts OPTSTRING NAME [ARG ...]
'getopts' is used by shell scripts to parse positional parameters.
OPTSTRING contains the option characters to be recognized; if a
@@ -3050,7 +3106,8 @@ standard.
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.
+ arguments are supplied as ARG values, '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
@@ -3145,12 +3202,12 @@ standard.
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.
+ Parameters represented by the numbers '$#' down to '$#'-N+1 are
+ unset. N must be a non-negative number less than or equal to '$#'.
+ If N is 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'
'['
@@ -3316,9 +3373,11 @@ standard.
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.
+ is no variable by that name, a function with that name, if any, is
+ unset. Readonly variables and functions may not be unset. Some
+ shell variables lose their special behavior if they are unset; such
+ behavior is noted in the description of the individual variables.
+ The return status is zero unless a NAME is readonly.

File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands
@@ -3409,10 +3468,12 @@ standard.
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.
+ buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables
+ to the current location of the insertion point and the saved
+ insertion point (the MARK), respectively. If the executed
+ command changes the value of any of 'READLINE_LINE',
+ 'READLINE_POINT', or 'READLINE_MARK', those new values will be
+ reflected in the editing state.
'-X'
List all key sequences bound to shell commands and the
@@ -3468,7 +3529,7 @@ standard.
non-zero if not.
'declare'
- declare [-aAfFgilnrtux] [-p] [NAME[=VALUE] ...]
+ declare [-aAfFgiIlnrtux] [-p] [NAME[=VALUE] ...]
Declare variables and give them attributes. If no NAMEs are given,
then display the values of variables instead.
@@ -3494,6 +3555,11 @@ standard.
global scope, even when 'declare' is executed in a shell function.
It is ignored in all other cases.
+ The '-I' option causes local variables to inherit the attributes
+ (except the NAMEREF attribute) and value of any existing variable
+ with the same NAME at a surrounding scope. If there is no existing
+ variable, the local variable is initially unset.
+
The following options can be used to restrict output to variables
with the specified attributes or to give variables attributes:
@@ -3680,9 +3746,11 @@ standard.
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.
+ their original values when the function returns. The restore is
+ effected as if a series of 'set' commands were executed to restore
+ the values that were in place before the function. 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]
@@ -3768,6 +3836,11 @@ standard.
conversion behaves as if -1 had been given. This is an
exception to the usual 'printf' behavior.
+ The %b, %q, and %T directives all use the field width and precision
+ arguments from the format specification and write that many bytes
+ from (or use that wide a field for) the expanded argument, which
+ usually contains more characters than the original.
+
Arguments to non-string format specifiers are treated as C 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
@@ -3795,13 +3868,7 @@ standard.
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'.
+ next character read and for line continuation.
Options, if supplied, have the following meanings:
@@ -3866,13 +3933,21 @@ standard.
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
+ read any data. The exit status is 0 if input is available on
the specified file descriptor, non-zero otherwise. The exit
status is greater than 128 if the timeout is exceeded.
'-u FD'
Read input from file descriptor FD.
+ If no NAMEs are supplied, the line read, without the ending
+ delimiter but otherwise unmodified, 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'.
+
'readarray'
readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
[-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
@@ -3926,7 +4001,8 @@ standard.
shell. It is a synonym for the 'declare' builtin command.
'ulimit'
- ulimit [-HSabcdefiklmnpqrstuvxPT] [LIMIT]
+ ulimit [-HS] -a
+ ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [LIMIT]
'ulimit' provides control over the resources available to processes
started by the shell, on systems that allow such control. If an
@@ -3939,7 +4015,7 @@ standard.
Change and report the hard limit associated with a resource.
'-a'
- All current limits are reported.
+ All current limits are reported; no limits are set.
'-b'
The maximum socket buffer size.
@@ -4002,6 +4078,10 @@ standard.
'-P'
The maximum number of pseudoterminals.
+ '-R'
+ The maximum time a real-time process can run before blocking,
+ in microseconds.
+
'-T'
The maximum number of threads.
@@ -4012,14 +4092,16 @@ standard.
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.
+ printed, unless the '-H' option is supplied. When more than one
+ resource is specified, the limit name and unit, if appropriate, are
+ printed before the value. 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; '-R', which is in
+ microseconds; '-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.
@@ -4424,57 +4506,14 @@ This builtin allows you to change additional shell optional behavior.
(*note Bash History Facilities::).
'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).
-
'compat44'
- If set, Bash saves the positional parameters to BASH_ARGV and
- BASH_ARGC before they are used, regardless of whether or not
- extended debugging mode is enabled.
+ These control aspects of the shell's compatibility mode (*note
+ Shell Compatibility Mode::).
'complete_fullquote'
If set, Bash quotes all shell metacharacters in filenames and
@@ -4518,10 +4557,10 @@ This builtin allows you to change additional shell optional behavior.
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:
+ If set at shell invocation, or in a shell startup file,
+ 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
@@ -4714,11 +4753,6 @@ This builtin allows you to change additional shell optional behavior.
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
@@ -4832,6 +4866,16 @@ normally treat them specially.
variables for controlling the job control facilities (*note Job Control
Variables::).
+'_'
+ ($_, an underscore.) At shell startup, set to the 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 simple command executed in the foreground,
+ 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.
+
'BASH'
The full pathname used to execute the current instance of Bash.
@@ -4905,22 +4949,25 @@ Variables::).
'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.
+ which case it is the command executing at the time of the trap. If
+ 'BASH_COMMAND' is unset, it loses its special properties, even if
+ it is subsequently reset.
'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.
+ Shell Compatibility Mode::, 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 values correspond to the
+ compatibility levels described below (*note Shell Compatibility
+ Mode::). For example, 4.2 and 42 are valid values that correspond
+ to the 'compat42' 'shopt' option and set the compatibility level to
+ 42. The current version is also a valid value.
'BASH_ENV'
If this variable is set when Bash is invoked to execute a shell
@@ -4949,7 +4996,7 @@ Variables::).
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.
+ subexpression.
'BASH_SOURCE'
An array variable whose members are the source filenames where the
@@ -4961,7 +5008,8 @@ Variables::).
'BASH_SUBSHELL'
Incremented by one within each subshell or subshell environment
when the shell begins executing in that environment. The initial
- value is 0.
+ value is 0. If 'BASH_SUBSHELL' is unset, it loses its special
+ properties, even if it is subsequently reset.
'BASH_VERSINFO'
A readonly array variable (*note Arrays::) whose members hold
@@ -5085,8 +5133,9 @@ Variables::).
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::).
+ Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
+ Files::) when an interactive shell is invoked in POSIX Mode (*note
+ Bash POSIX Mode::).
'EPOCHREALTIME'
Each time this parameter is referenced, it expands to the number of
@@ -5182,8 +5231,9 @@ Variables::).
'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.
+ command. Assignments to 'HISTCMD' are ignored. 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
@@ -5322,7 +5372,8 @@ Variables::).
'LINENO'
The line number in the script or shell function currently
- executing.
+ executing. If 'LINENO' is unset, it loses its special properties,
+ even if it is subsequently reset.
'LINES'
Used by the 'select' command to determine the column length for
@@ -5376,8 +5427,10 @@ Variables::).
readonly.
'PROMPT_COMMAND'
- If set, the value is interpreted as a command to execute before the
- printing of each primary prompt ('$PS1').
+ If this variable is set, and is an array, the value of each set
+ element is interpreted as a command to execute before printing the
+ primary prompt ('$PS1'). If this is set but not an array variable,
+ its value is used as a command to execute instead.
'PROMPT_DIRTRIM'
If set to a number greater than zero, the value is used as the
@@ -5386,7 +5439,7 @@ Variables::).
Prompt::). Characters removed are replaced with an ellipsis.
'PS0'
- The value of this parameter is expanded like PS1 and displayed by
+ The value of this parameter is expanded like 'PS1' and displayed by
interactive shells after reading a command and before the command
is executed.
@@ -5407,14 +5460,21 @@ Variables::).
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.
+ Each time this parameter is referenced, it expands to a random
+ integer between 0 and 32767. Assigning a value to this variable
+ seeds the random number generator. If 'RANDOM' is unset, it loses
+ its special properties, even if it is subsequently reset.
'READLINE_LINE'
The contents of the Readline line buffer, for use with 'bind -x'
(*note Bash Builtins::).
+'READLINE_MARK'
+ The position of the MARK (saved insertion point) in the Readline
+ line buffer, for use with 'bind -x' (*note Bash Builtins::). The
+ characters between the insertion point and the mark are often
+ called the REGION.
+
'READLINE_POINT'
The position of the insertion point in the Readline line buffer,
for use with 'bind -x' (*note Bash Builtins::).
@@ -5426,12 +5486,15 @@ Variables::).
This variable expands to the number of seconds since the shell was
started. Assignment to this variable resets the count to the value
assigned, and the expanded value becomes the value assigned plus
- the number of seconds since the assignment.
+ the number of seconds since the assignment. The number of seconds
+ at shell invocation and the current time is always determined by
+ querying the system clock. If 'SECONDS' is unset, it loses its
+ special properties, even if it is subsequently reset.
'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.
+ This environment variable expands to the full pathname to the
+ shell. If it is not set when the shell starts, Bash assigns to it
+ the full pathname of the current user's login shell.
'SHELLOPTS'
A colon-separated list of enabled shell options. Each word in the
@@ -5447,6 +5510,15 @@ Variables::).
This is intended to be a count of how deeply your Bash shells are
nested.
+'SRANDOM'
+ This variable expands to a 32-bit pseudo-random number each time it
+ is referenced. The random number generator is not linear on
+ systems that support '/dev/urandom' or 'arc4random', so each
+ returned number has no relationship to the numbers preceding it.
+ The random number generator cannot be seeded, so assignments to
+ this variable have no effect. If 'SRANDOM' is unset, it loses its
+ special properties, even if it is subsequently reset.
+
'TIMEFORMAT'
The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the 'time'
@@ -5529,6 +5601,8 @@ This chapter describes features unique to Bash.
* The Restricted Shell:: A more controlled mode of shell execution.
* Bash POSIX Mode:: Making Bash behave more closely to what
the POSIX standard specifies.
+* Shell Compatibility Mode:: How Bash supports behavior that was present
+ in earlier versions and has changed.

File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features
@@ -5866,9 +5940,9 @@ several ways.
See *note Controlling the Prompt::, for a complete list of prompt
string escape sequences.
- 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
- command before printing the primary prompt, '$PS1' (*note Bash
- Variables::).
+ 4. Bash executes the values of the set elements of the
+ 'PROMPT_COMMANDS' array variable as commands 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.
@@ -6158,15 +6232,17 @@ 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.
+ Integer constants follow the C language definition, without suffixes
+or character constants. 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, if a non-digit is required, the digits greater than 9 are
+represented by the lowercase letters, the uppercase letters, '@', and
+'_', in that order. If 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
@@ -6251,7 +6327,7 @@ The syntax
is also accepted; the SUBSCRIPT is ignored.
Associative arrays are created using
- declare -A NAME.
+ 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
@@ -6259,13 +6335,24 @@ 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 may be 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.
+ Each VALUE in the list undergoes all the shell expansions described
+above (*note Shell Expansions::).
+
+ When assigning to an associative array, the words in a compound
+assignment may be either assignment statements, for which the subscript
+is required, or a list of words that is interpreted as a sequence of
+alternating keys and values: NAME=(KEY1 VALUE1 KEY2 VALUE2 ... ). These
+are treated identically to NAME=( [KEY1]=VALUE1 [KEY2]=VALUE2 ... ).
+The first word in the list determines how the remaining words are
+interpreted; all assignments in a list must be of the same type. When
+using key/value pairs, the keys may not be missing or empty; a final
+missing value is treated like the empty string.
This syntax is also accepted by the 'declare' builtin. Individual
array elements may be assigned to using the 'NAME[SUBSCRIPT]=VALUE'
@@ -6436,10 +6523,10 @@ File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Pr
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.
+Bash examines the value of the array variable 'PROMPT_COMMANDS' just
+before printing each primary prompt. If any elements in
+'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in
+numeric order, just as if it had been typed on the command line.
In addition, the following table describes the special characters
which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
@@ -6513,7 +6600,9 @@ 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 The Shopt
-Builtin::).
+Builtin::). This can have unwanted side effects if escaped portions of
+the string appear within command substitution or contain characters
+special to word expansion.

File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features
@@ -6528,11 +6617,13 @@ 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.
+ * Setting or unsetting the values of the 'SHELL', 'PATH', 'HISTFILE',
+ '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
+ 'history' 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
@@ -6555,8 +6646,20 @@ with the exception that the following are disallowed or not performed:
Shell Scripts::), 'rbash' turns off any restrictions in the shell
spawned to execute the script.
+ The restricted shell mode is only one component of a useful
+restricted environment. It should be accompanied by setting 'PATH' to a
+value that allows execution of only a few verified commands (commands
+that allow shell escapes are particularly vulnerable), leaving the user
+in a non-writable directory other than his home directory after login,
+not allowing the restricted shell to execute shell scripts, and cleaning
+the environment of variables that cause some commands to modify their
+behavior (e.g., 'VISUAL' or 'PAGER').
+
+ Modern systems provide more secure ways to implement a restricted
+environment, such as 'jails', 'zones', or 'containers'.
+

-File: bash.info, Node: Bash POSIX Mode, Prev: The Restricted Shell, Up: Bash Features
+File: bash.info, Node: Bash POSIX Mode, Next: Shell Compatibility Mode, Prev: The Restricted Shell, Up: Bash Features
6.11 Bash POSIX Mode
====================
@@ -6577,106 +6680,108 @@ startup files.
re-search '$PATH' to find the new location. This is also available
with 'shopt -s checkhash'.
- 3. The message printed by the job control code and builtins when a job
- exits with a non-zero status is 'Done(status)'.
+ 3. Bash will not insert a command without the execute bit set into the
+ command hash table, even if it returns it as a (last-ditch) result
+ from a '$PATH' search.
4. The message printed by the job control code and builtins when a job
+ exits with a non-zero status is 'Done(status)'.
+
+ 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'.
- 5. Alias expansion is always enabled, even in non-interactive shells.
+ 6. Alias expansion is always enabled, even in non-interactive shells.
- 6. Reserved words appearing in a context where reserved words are
+ 7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. 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.
- 8. The POSIX startup files are executed ('$ENV') rather than the
+ 9. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 9. Tilde expansion is only performed on assignments preceding a
+ 10. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 10. The default history file is '~/.sh_history' (this is the default
+ 11. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 11. Redirection operators do not perform filename expansion on the
+ 12. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 12. Redirection operators do not perform word splitting on the word in
+ 13. Redirection operators do not perform word splitting on the word in
the redirection.
- 13. Function names must be valid shell 'name's. That is, they may not
+ 14. 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.
- 14. Function names may not be the same as one of the POSIX special
+ 15. Function names may not be the same as one of the POSIX special
builtins.
- 15. POSIX special builtins are found before shell functions during
+ 16. POSIX special builtins are found before shell functions during
command lookup.
- 16. When printing shell function definitions (e.g., by 'type'), Bash
+ 17. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 17. Literal tildes that appear as the first character in elements of
+ 18. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 18. The 'time' reserved word may be used by itself as a command. When
+ 19. 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.
- 19. When parsing and expanding a ${...} expansion that appears within
+ 20. 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.
- 20. The parser does not recognize 'time' as a reserved word if the
+ 21. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 21. The '!' character does not introduce history expansion within a
+ 22. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 22. If a POSIX special builtin returns an error status, a
+ 23. 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.
- 23. A non-interactive shell exits with an error status if a variable
+ 24. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. 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.
- 25. A non-interactive shell exits with an error status if the
+ 26. 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.
- 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 27. Non-interactive shells exit if a syntax error in an arithmetic
+ 28. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 28. Non-interactive shells exit if a parameter expansion error occurs.
+ 29. Non-interactive shells exit if a parameter expansion error occurs.
- 29. Non-interactive shells exit if there is a syntax error in a script
+ 30. 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.
- 30. Process substitution is not available.
-
31. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
@@ -6687,39 +6792,38 @@ startup files.
33. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. 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.
-
- 35. The 'command' builtin does not prevent builtins that take
+ 34. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 36. The 'bg' builtin uses the required format to describe each job
+ 35. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 37. The output of 'kill -l' prints all the signal names on a single
+ 36. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 38. The 'kill' builtin does not accept signal names with a 'SIG'
+ 37. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 39. The 'export' and 'readonly' builtin commands display their output
+ 38. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 40. The 'trap' builtin displays signal names without the leading
+ 39. The 'trap' builtin displays signal names without the leading
'SIG'.
- 41. 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.
+ 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ and those that were ignored when the shell started.
+
42. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
@@ -6806,6 +6910,137 @@ specifying the '--enable-strict-posix-default' to 'configure' when
building (*note Optional Features::).

+File: bash.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: Bash Features
+
+6.12 Shell Compatibility Mode
+=============================
+
+Bash-4.0 introduced the concept of a 'shell compatibility level',
+specified as a set of options to the shopt builtin ('compat31',
+'compat32', 'compat40', 'compat41', and so on). There is only one
+current compatibility level - each option is mutually exclusive. The
+compatibility level is intended to allow users to select behavior from
+previous versions that is incompatible with newer versions while they
+migrate scripts to use current features and behavior. It's intended to
+be a temporary solution.
+
+ This section does not mention behavior that is standard for a
+particular version (e.g., setting 'compat32' means that quoting the rhs
+of the regexp matching operator quotes special regexp characters in the
+word, which is default behavior in bash-3.2 and above).
+
+ If a user enables, say, 'compat32', it may affect the behavior of
+other compatibility levels up to and including the current compatibility
+level. The idea is that each compatibility level controls behavior that
+changed in that version of Bash, but that behavior may have been present
+in earlier versions. For instance, the change to use locale-based
+comparisons with the '[[' command came in bash-4.1, and earlier versions
+used ASCII-based comparisons, so enabling 'compat32' will enable
+ASCII-based comparisons as well. That granularity may not be sufficient
+for all uses, and as a result users should employ compatibility levels
+carefully. Read the documentation for a particular feature to find out
+the current behavior.
+
+ Bash-4.3 introduced a new shell variable: 'BASH_COMPAT'. The value
+assigned to this variable (a decimal version number like 4.2, or an
+integer corresponding to the 'compat'NN option, like 42) determines the
+compatibility level.
+
+ Starting with bash-4.4, Bash has begun deprecating older
+compatibility levels. Eventually, the options will be removed in favor
+of 'BASH_COMPAT'.
+
+ Bash-5.0 is the final version for which there will be an individual
+shopt option for the previous version. Users should use 'BASH_COMPAT'
+on bash-5.0 and later versions.
+
+ The following table describes the behavior changes controlled by each
+compatibility level setting. The 'compat'NN tag is used as shorthand
+for setting the compatibility level to NN using one of the following
+mechanisms. For versions prior to bash-5.0, the compatibility level may
+be set using the corresponding 'compat'NN shopt option. For bash-4.3
+and later versions, the 'BASH_COMPAT' variable is preferred, and it is
+required for bash-5.1 and later versions.
+
+'compat31'
+ * quoting the rhs of the '[[' command's regexp matching operator
+ (=~) has no special effect
+
+'compat32'
+ * interrupting a command list such as "a ; b ; c" causes the
+ execution of the next command in the list (in bash-4.0 and
+ later versions, the shell acts as if it received the
+ interrupt, so interrupting one command in a list aborts the
+ execution of the entire list)
+
+'compat40'
+ * the '<' and '>' operators to the '[[' command do not consider
+ the current locale when comparing strings; they use ASCII
+ ordering. Bash versions prior to bash-4.1 use ASCII collation
+ and strcmp(3); bash-4.1 and later use the current locale's
+ collation sequence and strcoll(3).
+
+'compat41'
+ * in posix mode, 'time' may be followed by options and still be
+ recognized as a reserved word (this is POSIX interpretation
+ 267)
+ * in posix mode, the parser requires that an even number of
+ single quotes occur in the WORD portion of a double-quoted
+ ${...} parameter expansion and treats them specially, so that
+ characters within the single quotes are considered quoted
+ (this is POSIX interpretation 221)
+
+'compat42'
+ * the replacement string in double-quoted pattern substitution
+ does not undergo quote removal, as it does in versions after
+ bash-4.2
+ * in posix mode, single quotes are considered special when
+ expanding the WORD portion of a double-quoted ${...} parameter
+ expansion and can be used to quote a closing brace or other
+ special character (this is part of POSIX interpretation 221);
+ in later versions, single quotes are not special within
+ double-quoted word expansions
+
+'compat43'
+ * the shell does not print a warning message if an attempt is
+ made to use a quoted compound assignment as an argument to
+ declare (declare -a foo='(1 2)'). Later versions warn that
+ this usage is deprecated
+ * word expansion errors are considered non-fatal errors that
+ cause the current command to fail, even in posix mode (the
+ default behavior is to make them fatal errors that cause the
+ shell to exit)
+ * when executing a shell function, the loop state
+ (while/until/etc.) is not reset, so 'break' or 'continue' in
+ that function will break or continue loops in the calling
+ context. Bash-4.4 and later reset the loop state to prevent
+ this
+
+'compat44'
+ * the shell sets up the values used by 'BASH_ARGV' and
+ 'BASH_ARGC' so they can expand to the shell's positional
+ parameters even if extended debugging mode is not enabled
+ * a subshell inherits loops from its parent context, so 'break'
+ or 'continue' will cause the subshell to exit. Bash-5.0 and
+ later reset the loop state to prevent the exit
+ * variable assignments preceding builtins like 'export' and
+ 'readonly' that set attributes continue to affect variables
+ with the same name in the calling environment even if the
+ shell is not in posix mode
+
+'compat50 (set using BASH_COMPAT)'
+ * Bash-5.1 changed the way '$RANDOM' is generated to introduce
+ slightly more randomness. If the shell compatibility level is
+ set to 50 or lower, it reverts to the method from bash-5.0 and
+ previous versions, so seeding the random number generator by
+ assigning a value to 'RANDOM' will produce the same sequence
+ as in bash-5.0
+ * If the command hash table is empty, Bash versions prior to
+ bash-5.1 printed an informational message to that effect, even
+ when producing output that can be reused as input. Bash-5.1
+ suppresses that message when the '-l' option is supplied.
+
+
File: bash.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top
7 Job Control
@@ -6884,10 +7119,10 @@ 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 job whose command name begins with
+'ce'. 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
@@ -6911,8 +7146,8 @@ another warning, and any stopped jobs are terminated.
When the shell is waiting for a job or process using the 'wait'
builtin, and job control is enabled, 'wait' will return when the job
-changes state. The '-f' option will force 'wait' to wait until the job
-or process terminates before returning.
+changes state. The '-f' option causes 'wait' to wait until the job or
+process terminates before returning.

File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control
@@ -6990,20 +7225,29 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre
option is encountered.
'wait'
- wait [-fn] [JOBSPEC or PID ...]
+ wait [-fn] [-p VARNAME] [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 the '-f' option is
- supplied, and job control is enabled, 'wait' forces each PID or
- JOBSPEC to terminate before returning its status, intead of
- returning when it changes status. If neither JOBSPEC nor PID
- specifies an active child process of the shell, the return status
- is 127.
+ the job are waited for. If no arguments are given, 'wait' waits
+ for all running background jobs and the last-executed process
+ substitution, if its process id is the same as $!, and the return
+ status is zero. If the '-n' option is supplied, 'wait' waits for a
+ single job from the list of PIDS or JOBSPECS or, if no arguments
+ are supplied, any job, to complete and returns its exit status. If
+ none of the supplied arguments is a child of the shell, or if no
+ arguments are supplied and the shell has no unwaited-for children,
+ the exit status is 127. If the '-p' option is supplied, the
+ process or job identifier of the job for which the exit status is
+ returned is assigned to the variable VARNAME named by the option
+ argument. The variable will be unset initially, before any
+ assignment. This is useful only when the '-n' option is supplied.
+ Supplying the '-f' option, when job control is enabled, forces
+ 'wait' to wait for each PID or JOBSPEC to terminate before
+ returning its status, intead of returning when it changes 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 ... ]
@@ -7342,7 +7586,9 @@ 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'.
+ultimate default is '/etc/inputrc'. The 'bind' builtin command can also
+be used to set Readline keybindings and variables. *Note Bash
+Builtins::.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
@@ -7459,11 +7705,11 @@ Variable Settings
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'.
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, they are simply
+ listed. This variable must be set to an integer value greater
+ than or equal to 0. A negative value means Readline should
+ never ask. The default limit is '100'.
'convert-meta'
If set to 'on', Readline will convert characters with the
@@ -7505,7 +7751,7 @@ Variable Settings
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'.
+ editing commands. The default is 'On'.
'enable-keypad'
When set to 'on', Readline will try to enable the application
@@ -7542,7 +7788,9 @@ Variable Settings
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. This variable is automatically set to 'on'
+ for terminals of height 1. By default, this variable is set
+ to 'off'.
'input-meta'
If set to 'on', Readline will enable eight-bit input (it will
@@ -7988,8 +8236,8 @@ variable assignment, and conditional syntax.
# 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
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
@@ -8053,11 +8301,11 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B
Move back to the start of the current or previous word. Words are
composed of letters and digits.
-'shell-forward-word ()'
+'shell-forward-word (M-C-f)'
Move forward to the end of the next word. Words are delimited by
non-quoted shell metacharacters.
-'shell-backward-word ()'
+'shell-backward-word (M-C-b)'
Move back to the start of the current or previous word. Words are
delimited by non-quoted shell metacharacters.
@@ -8075,8 +8323,13 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
+'clear-display (M-C-l)'
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
'clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
+ Clear the screen, then redraw the current line, leaving the current
line at the top of the screen.
'redraw-current-line ()'
@@ -8112,10 +8365,14 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C
'reverse-search-history (C-r)'
Search backward starting at the current line and moving 'up'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
'forward-search-history (C-s)'
Search forward starting at the current line and moving 'down'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
'non-incremental-reverse-search-history (M-p)'
Search backward starting at the current line and moving 'up'
@@ -8174,6 +8431,13 @@ File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: C
history expansion facilities are used to extract the last argument,
as if the '!$' history expansion had been specified.
+'operate-and-get-next (C-o)'
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+

File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
@@ -8216,6 +8480,11 @@ File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: C
was bound to 'self-insert' instead of executing any editing
commands.
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It uses the concept of an _active
+ mark_: when the mark is active, Readline redisplay uses the
+ terminal's standout mode to denote the region.
+
'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
@@ -8260,10 +8529,14 @@ File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: C
-------------------------
'kill-line (C-k)'
- Kill the text from point to the end of the line.
+ Kill the text from point to the end of the line. With a negative
+ numeric argument, kill backward from the cursor to the beginning of
+ the current line.
'backward-kill-line (C-x Rubout)'
Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the current line.
'unix-line-discard (C-u)'
Kill backward from the cursor to the beginning of the current line.
@@ -8281,7 +8554,7 @@ File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: C
Kill the word behind point. Word boundaries are the same as
'backward-word'.
-'shell-kill-word ()'
+'shell-kill-word (M-C-d)'
Kill from point to the end of the current word, or if between
words, to the end of the next word. Word boundaries are the same
as 'shell-forward-word'.
@@ -8290,6 +8563,13 @@ File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: C
Kill the word behind point. Word boundaries are the same as
'shell-backward-word'.
+'shell-transpose-words (M-C-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line. Word
+ boundaries are the same as 'shell-forward-word' and
+ '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.
@@ -8611,12 +8891,6 @@ File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bin
'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. A
- numeric argument, if supplied, specifies the history entry to use
- instead of the current line.
-
'edit-and-execute-command (C-x C-e)'
Invoke an editor on the current command line, and execute the
result as shell commands. Bash attempts to invoke '$VISUAL',
@@ -8829,8 +9103,8 @@ happening.
that other supplied options and actions should apply to "empty"
command completion; that is, completion attempted on a blank line.
The '-I' option indicates that other supplied options and actions
- should apply to completion on the inital non-assignment word on the
- line, or after a command delimiter such as ';' or '|', which is
+ should apply to completion on the initial non-assignment word on
+ the line, or after a command delimiter such as ';' or '|', which is
usually command name completion. If multiple options are supplied,
the '-D' option takes precedence over '-E', and both take
precedence over '-I'. If any of '-D', '-E', or '-I' are supplied,
@@ -9031,8 +9305,8 @@ happening.
'-E' option indicates that other supplied options should apply to
"empty" command completion; that is, completion attempted on a
blank line. The '-I' option indicates that other supplied options
- should apply to completion on the inital non-assignment word on the
- line, or after a command delimiter such as ';' or '|', which is
+ should apply to completion on the initial non-assignment word on
+ the line, or after a command delimiter such as ';' or '|', which is
usually command name completion.
If multiple options are supplied, the '-D' option takes precedence
@@ -9139,8 +9413,8 @@ 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.
+beginning with '$' or '${', 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.
@@ -9149,7 +9423,7 @@ we attempt word completion for a 'cd' command.
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
+project now lives at <https://github.com/scop/bash-completion/>. There
are ports for other systems such as Solaris and Mac OS X.
An older version of the bash_completion package is distributed with
@@ -9245,22 +9519,28 @@ history file.
FIRST and LAST may be specified as a string (to locate the most
recent command beginning with that string) or as a number (an index
into the history list, where a negative number is used as an offset
- from the current command number). If LAST is not specified, it is
- set to FIRST. If FIRST is not specified, it is set to the previous
- 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.
+ from the current command number).
+
+ When listing, a FIRST or LAST of 0 is equivalent to -1 and -0 is
+ equivalent to the current command (usually the 'fc' command);
+ otherwise 0 is equivalent to -1 and -0 is invalid.
+
+ 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.
+ interpreted 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
@@ -9433,11 +9713,13 @@ the current position in the history list.
'!?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.
+ omitted if the STRING is followed immediately by a newline. If
+ STRING is missing, the string from the most recent search is used;
+ it is an error if there is no previous search string.
'^STRING1^STRING2^'
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.
@@ -9484,7 +9766,8 @@ separated by single spaces.
The last argument.
'%'
- The word matched by the most recent '?STRING?' search.
+ The first word matched by the most recent '?STRING?' search, if the
+ search string begins with a character that is part of a word.
'X-Y'
A range of words; '-Y' abbreviates '0-Y'.
@@ -9498,7 +9781,8 @@ separated by single spaces.
Abbreviates 'X-$'
'X-'
- Abbreviates 'X-$' like 'X*', but omits the last word.
+ Abbreviates 'X-$' like 'X*', but omits the last word. If 'x' is
+ missing, it defaults to 0.
If a word designator is supplied without an event specification, the
previous command is used as the event.
@@ -9510,7 +9794,8 @@ File: bash.info, Node: Modifiers, Prev: Word Designators, Up: History Interac
---------------
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 ':'. These modify,
+or edit, the word or words selected from the history event.
'h'
Remove a trailing pathname component, leaving only the head.
@@ -9533,15 +9818,19 @@ more of the following modifiers, each preceded by a ':'.
'x'
Quote the substituted words as with 'q', but break into words at
- spaces, tabs, and newlines.
+ spaces, tabs, and newlines. The 'q' and 'x' modifiers are mutually
+ exclusive; the last one supplied is used.
'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 character may be used as the delimiter 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 '&'. If OLD is null, it is set to the last OLD
+ substituted, or, if no previous history substitutions took place,
+ the last STRING in a !?STRING'[?]' search. If NEW is is null, each
+ matching OLD is deleted. The final delimiter is optional if it is
+ the last character on the input line.
'&'
Repeat the previous substitution.
@@ -9552,7 +9841,8 @@ more of the following modifiers, each preceded by a ':'.
conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
'G'
- Apply the following 's' modifier once to each word in the event.
+ Apply the following 's' or '&' modifier once to each word in the
+ event.

File: bash.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top
@@ -10962,18 +11252,18 @@ D.1 Index of Shell Builtin Commands
* :: Bourne Shell Builtins.
(line 11)
* [: Bourne Shell Builtins.
- (line 269)
+ (line 270)
* 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)
+* builtin: Bash Builtins. (line 104)
+* caller: Bash Builtins. (line 113)
* cd: Bourne Shell Builtins.
(line 44)
-* command: Bash Builtins. (line 128)
+* command: Bash Builtins. (line 130)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
@@ -10982,13 +11272,13 @@ D.1 Index of Shell Builtin Commands
(line 237)
* continue: Bourne Shell Builtins.
(line 85)
-* declare: Bash Builtins. (line 148)
+* declare: Bash Builtins. (line 150)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
- (line 92)
-* echo: Bash Builtins. (line 246)
-* enable: Bash Builtins. (line 295)
+ (line 101)
+* echo: Bash Builtins. (line 253)
+* enable: Bash Builtins. (line 302)
* eval: Bourne Shell Builtins.
(line 94)
* exec: Bourne Shell Builtins.
@@ -11004,52 +11294,52 @@ D.1 Index of Shell Builtin Commands
* getopts: Bourne Shell Builtins.
(line 143)
* hash: Bourne Shell Builtins.
- (line 186)
-* help: Bash Builtins. (line 324)
+ (line 187)
+* help: Bash Builtins. (line 331)
* history: Bash History Builtins.
- (line 40)
+ (line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
-* let: Bash Builtins. (line 343)
-* local: Bash Builtins. (line 351)
-* logout: Bash Builtins. (line 365)
-* mapfile: Bash Builtins. (line 370)
+* let: Bash Builtins. (line 350)
+* local: Bash Builtins. (line 358)
+* logout: Bash Builtins. (line 374)
+* mapfile: Bash Builtins. (line 379)
* popd: Directory Stack Builtins.
(line 35)
-* printf: Bash Builtins. (line 416)
+* printf: Bash Builtins. (line 425)
* pushd: Directory Stack Builtins.
(line 53)
* pwd: Bourne Shell Builtins.
- (line 206)
-* read: Bash Builtins. (line 460)
-* readarray: Bash Builtins. (line 554)
+ (line 207)
+* read: Bash Builtins. (line 474)
+* readarray: Bash Builtins. (line 570)
* readonly: Bourne Shell Builtins.
- (line 216)
+ (line 217)
* return: Bourne Shell Builtins.
- (line 235)
+ (line 236)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
- (line 256)
+ (line 257)
* shopt: The Shopt Builtin. (line 9)
-* source: Bash Builtins. (line 563)
+* source: Bash Builtins. (line 579)
* suspend: Job Control Builtins.
- (line 104)
+ (line 113)
* test: Bourne Shell Builtins.
- (line 269)
+ (line 270)
* times: Bourne Shell Builtins.
- (line 348)
+ (line 349)
* trap: Bourne Shell Builtins.
- (line 354)
-* type: Bash Builtins. (line 568)
-* typeset: Bash Builtins. (line 600)
-* ulimit: Bash Builtins. (line 606)
+ (line 355)
+* type: Bash Builtins. (line 584)
+* typeset: Bash Builtins. (line 616)
+* ulimit: Bash Builtins. (line 622)
* umask: Bourne Shell Builtins.
- (line 403)
-* unalias: Bash Builtins. (line 705)
+ (line 404)
+* unalias: Bash Builtins. (line 728)
* unset: Bourne Shell Builtins.
- (line 421)
+ (line 422)
* wait: Job Control Builtins.
(line 76)
@@ -11064,9 +11354,9 @@ D.2 Index of Shell Reserved Words
* !: Pipelines. (line 9)
* [[: Conditional Constructs.
- (line 124)
+ (line 125)
* ]]: Conditional Constructs.
- (line 124)
+ (line 125)
* {: Command Grouping. (line 21)
* }: Command Grouping. (line 21)
* case: Conditional Constructs.
@@ -11088,7 +11378,7 @@ D.2 Index of Shell Reserved Words
* in: Conditional Constructs.
(line 28)
* select: Conditional Constructs.
- (line 82)
+ (line 83)
* then: Conditional Constructs.
(line 7)
* time: Pipelines. (line 9)
@@ -11115,35 +11405,35 @@ D.3 Parameter and Variable Index
* $0: Special Parameters. (line 62)
* $?: Special Parameters. (line 43)
* $@: Special Parameters. (line 23)
-* $_: Special Parameters. (line 71)
+* $_: Bash Variables. (line 14)
* *: Special Parameters. (line 9)
* -: Special Parameters. (line 46)
* 0: Special Parameters. (line 61)
* ?: Special Parameters. (line 42)
* @: Special Parameters. (line 22)
-* _: Special Parameters. (line 70)
+* _: Bash Variables. (line 13)
* 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 32)
-* BASH_ARGC: Bash Variables. (line 41)
-* BASH_ARGV: Bash Variables. (line 54)
-* BASH_ARGV0: Bash Variables. (line 66)
-* BASH_CMDS: Bash Variables. (line 74)
-* BASH_COMMAND: Bash Variables. (line 83)
-* BASH_COMPAT: Bash Variables. (line 88)
-* BASH_ENV: Bash Variables. (line 103)
-* BASH_EXECUTION_STRING: Bash Variables. (line 109)
-* BASH_LINENO: Bash Variables. (line 112)
-* BASH_LOADABLES_PATH: Bash Variables. (line 120)
-* BASH_REMATCH: Bash Variables. (line 124)
-* BASH_SOURCE: Bash Variables. (line 132)
-* BASH_SUBSHELL: Bash Variables. (line 139)
-* BASH_VERSINFO: Bash Variables. (line 144)
-* BASH_VERSION: Bash Variables. (line 167)
-* BASH_XTRACEFD: Bash Variables. (line 170)
+* BASH: Bash Variables. (line 23)
+* BASHOPTS: Bash Variables. (line 26)
+* BASHPID: Bash Variables. (line 35)
+* BASH_ALIASES: Bash Variables. (line 42)
+* BASH_ARGC: Bash Variables. (line 51)
+* BASH_ARGV: Bash Variables. (line 64)
+* BASH_ARGV0: Bash Variables. (line 76)
+* BASH_CMDS: Bash Variables. (line 84)
+* BASH_COMMAND: Bash Variables. (line 93)
+* BASH_COMPAT: Bash Variables. (line 100)
+* BASH_ENV: Bash Variables. (line 116)
+* BASH_EXECUTION_STRING: Bash Variables. (line 122)
+* BASH_LINENO: Bash Variables. (line 125)
+* BASH_LOADABLES_PATH: Bash Variables. (line 133)
+* BASH_REMATCH: Bash Variables. (line 137)
+* BASH_SOURCE: Bash Variables. (line 145)
+* BASH_SUBSHELL: Bash Variables. (line 152)
+* BASH_VERSINFO: Bash Variables. (line 158)
+* BASH_VERSION: Bash Variables. (line 181)
+* BASH_XTRACEFD: Bash Variables. (line 184)
* bell-style: Readline Init File Syntax.
(line 38)
* bind-tty-special-chars: Readline Init File Syntax.
@@ -11152,12 +11442,12 @@ D.3 Parameter and Variable Index
(line 50)
* CDPATH: Bourne Shell Variables.
(line 9)
-* CHILD_MAX: Bash Variables. (line 181)
+* CHILD_MAX: Bash Variables. (line 195)
* colored-completion-prefix: Readline Init File Syntax.
(line 55)
* colored-stats: Readline Init File Syntax.
(line 62)
-* COLUMNS: Bash Variables. (line 188)
+* COLUMNS: Bash Variables. (line 202)
* comment-begin: Readline Init File Syntax.
(line 68)
* completion-display-width: Readline Init File Syntax.
@@ -11170,157 +11460,159 @@ D.3 Parameter and Variable Index
(line 91)
* completion-query-items: Readline Init File Syntax.
(line 98)
-* COMPREPLY: Bash Variables. (line 240)
-* COMP_CWORD: Bash Variables. (line 194)
-* COMP_KEY: Bash Variables. (line 223)
-* COMP_LINE: Bash Variables. (line 200)
-* COMP_POINT: Bash Variables. (line 205)
-* COMP_TYPE: Bash Variables. (line 213)
-* COMP_WORDBREAKS: Bash Variables. (line 227)
-* COMP_WORDS: Bash Variables. (line 233)
+* COMPREPLY: Bash Variables. (line 254)
+* COMP_CWORD: Bash Variables. (line 208)
+* COMP_KEY: Bash Variables. (line 237)
+* COMP_LINE: Bash Variables. (line 214)
+* COMP_POINT: Bash Variables. (line 219)
+* COMP_TYPE: Bash Variables. (line 227)
+* COMP_WORDBREAKS: Bash Variables. (line 241)
+* COMP_WORDS: Bash Variables. (line 247)
* convert-meta: Readline Init File Syntax.
(line 108)
-* COPROC: Bash Variables. (line 246)
-* DIRSTACK: Bash Variables. (line 250)
+* COPROC: Bash Variables. (line 260)
+* DIRSTACK: Bash Variables. (line 264)
* 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 260)
+* EMACS: Bash Variables. (line 274)
* 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 265)
-* EPOCHREALTIME: Bash Variables. (line 269)
-* EPOCHSECONDS: Bash Variables. (line 277)
-* EUID: Bash Variables. (line 284)
-* EXECIGNORE: Bash Variables. (line 288)
+* ENV: Bash Variables. (line 279)
+* EPOCHREALTIME: Bash Variables. (line 284)
+* EPOCHSECONDS: Bash Variables. (line 292)
+* EUID: Bash Variables. (line 299)
+* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
(line 161)
-* FCEDIT: Bash Variables. (line 301)
-* FIGNORE: Bash Variables. (line 305)
-* FUNCNAME: Bash Variables. (line 311)
-* FUNCNEST: Bash Variables. (line 328)
-* GLOBIGNORE: Bash Variables. (line 333)
-* GROUPS: Bash Variables. (line 340)
-* histchars: Bash Variables. (line 346)
-* HISTCMD: Bash Variables. (line 361)
-* HISTCONTROL: Bash Variables. (line 366)
-* HISTFILE: Bash Variables. (line 382)
-* HISTFILESIZE: Bash Variables. (line 386)
-* HISTIGNORE: Bash Variables. (line 397)
+* FCEDIT: Bash Variables. (line 316)
+* FIGNORE: Bash Variables. (line 320)
+* FUNCNAME: Bash Variables. (line 326)
+* FUNCNEST: Bash Variables. (line 343)
+* GLOBIGNORE: Bash Variables. (line 348)
+* GROUPS: Bash Variables. (line 355)
+* histchars: Bash Variables. (line 361)
+* HISTCMD: Bash Variables. (line 376)
+* HISTCONTROL: Bash Variables. (line 382)
+* HISTFILE: Bash Variables. (line 398)
+* HISTFILESIZE: Bash Variables. (line 402)
+* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
(line 165)
* history-size: Readline Init File Syntax.
(line 171)
-* HISTSIZE: Bash Variables. (line 417)
-* HISTTIMEFORMAT: Bash Variables. (line 424)
+* HISTSIZE: Bash Variables. (line 433)
+* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 180)
-* HOSTFILE: Bash Variables. (line 432)
-* HOSTNAME: Bash Variables. (line 443)
-* HOSTTYPE: Bash Variables. (line 446)
+* HOSTFILE: Bash Variables. (line 448)
+* HOSTNAME: Bash Variables. (line 459)
+* HOSTTYPE: Bash Variables. (line 462)
* IFS: Bourne Shell Variables.
(line 18)
-* IGNOREEOF: Bash Variables. (line 449)
+* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
- (line 187)
-* INPUTRC: Bash Variables. (line 459)
-* INSIDE_EMACS: Bash Variables. (line 463)
+ (line 189)
+* INPUTRC: Bash Variables. (line 475)
+* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
- (line 195)
+ (line 197)
* keymap: Readline Init File Syntax.
- (line 202)
-* LANG: Bash Variables. (line 469)
-* LC_ALL: Bash Variables. (line 473)
-* LC_COLLATE: Bash Variables. (line 477)
-* LC_CTYPE: Bash Variables. (line 484)
-* LC_MESSAGES: Locale Translation. (line 11)
-* LC_MESSAGES <1>: Bash Variables. (line 489)
-* LC_NUMERIC: Bash Variables. (line 493)
-* LC_TIME: Bash Variables. (line 497)
-* LINENO: Bash Variables. (line 501)
-* LINES: Bash Variables. (line 505)
-* MACHTYPE: Bash Variables. (line 511)
+ (line 204)
+* LANG: Bash Variables. (line 485)
+* LC_ALL: Bash Variables. (line 489)
+* LC_COLLATE: Bash Variables. (line 493)
+* LC_CTYPE: Bash Variables. (line 500)
+* LC_MESSAGES: Locale Translation. (line 15)
+* LC_MESSAGES <1>: Bash Variables. (line 505)
+* LC_NUMERIC: Bash Variables. (line 509)
+* LC_TIME: Bash Variables. (line 513)
+* LINENO: Bash Variables. (line 517)
+* LINES: Bash Variables. (line 522)
+* MACHTYPE: Bash Variables. (line 528)
* MAIL: Bourne Shell Variables.
(line 22)
-* MAILCHECK: Bash Variables. (line 515)
+* MAILCHECK: Bash Variables. (line 532)
* MAILPATH: Bourne Shell Variables.
(line 27)
-* MAPFILE: Bash Variables. (line 523)
+* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
- (line 232)
+ (line 234)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 237)
+ (line 239)
* match-hidden-files: Readline Init File Syntax.
- (line 242)
+ (line 244)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 249)
+ (line 251)
* meta-flag: Readline Init File Syntax.
- (line 187)
-* OLDPWD: Bash Variables. (line 527)
+ (line 189)
+* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
-* OPTERR: Bash Variables. (line 530)
+* OPTERR: Bash Variables. (line 547)
* OPTIND: Bourne Shell Variables.
(line 38)
-* OSTYPE: Bash Variables. (line 534)
+* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
- (line 254)
+ (line 256)
* page-completions: Readline Init File Syntax.
- (line 260)
+ (line 262)
* PATH: Bourne Shell Variables.
(line 42)
-* PIPESTATUS: Bash Variables. (line 537)
-* POSIXLY_CORRECT: Bash Variables. (line 542)
-* PPID: Bash Variables. (line 552)
-* PROMPT_COMMAND: Bash Variables. (line 556)
-* PROMPT_DIRTRIM: Bash Variables. (line 560)
-* PS0: Bash Variables. (line 566)
+* PIPESTATUS: Bash Variables. (line 554)
+* POSIXLY_CORRECT: Bash Variables. (line 559)
+* PPID: Bash Variables. (line 569)
+* PROMPT_COMMAND: Bash Variables. (line 573)
+* PROMPT_DIRTRIM: Bash Variables. (line 579)
+* PS0: Bash Variables. (line 585)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
-* PS3: Bash Variables. (line 571)
-* PS4: Bash Variables. (line 576)
-* PWD: Bash Variables. (line 584)
-* RANDOM: Bash Variables. (line 587)
-* READLINE_LINE: Bash Variables. (line 592)
-* READLINE_POINT: Bash Variables. (line 596)
-* REPLY: Bash Variables. (line 600)
+* PS3: Bash Variables. (line 590)
+* PS4: Bash Variables. (line 595)
+* PWD: Bash Variables. (line 603)
+* RANDOM: Bash Variables. (line 606)
+* READLINE_LINE: Bash Variables. (line 612)
+* READLINE_MARK: Bash Variables. (line 616)
+* READLINE_POINT: Bash Variables. (line 622)
+* REPLY: Bash Variables. (line 626)
* revert-all-at-newline: Readline Init File Syntax.
- (line 270)
-* SECONDS: Bash Variables. (line 603)
-* SHELL: Bash Variables. (line 609)
-* SHELLOPTS: Bash Variables. (line 614)
-* SHLVL: Bash Variables. (line 623)
+ (line 272)
+* SECONDS: Bash Variables. (line 629)
+* SHELL: Bash Variables. (line 638)
+* SHELLOPTS: Bash Variables. (line 643)
+* SHLVL: Bash Variables. (line 652)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 276)
+ (line 278)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 282)
+ (line 284)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 291)
+ (line 293)
* skip-completed-text: Readline Init File Syntax.
- (line 297)
-* TEXTDOMAIN: Locale Translation. (line 11)
-* TEXTDOMAINDIR: Locale Translation. (line 11)
-* TIMEFORMAT: Bash Variables. (line 628)
-* TMOUT: Bash Variables. (line 666)
-* TMPDIR: Bash Variables. (line 678)
-* UID: Bash Variables. (line 682)
+ (line 299)
+* SRANDOM: Bash Variables. (line 657)
+* TEXTDOMAIN: Locale Translation. (line 15)
+* TEXTDOMAINDIR: Locale Translation. (line 15)
+* TIMEFORMAT: Bash Variables. (line 666)
+* TMOUT: Bash Variables. (line 704)
+* TMPDIR: Bash Variables. (line 716)
+* UID: Bash Variables. (line 720)
* vi-cmd-mode-string: Readline Init File Syntax.
- (line 310)
+ (line 312)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 321)
+ (line 323)
* visible-stats: Readline Init File Syntax.
- (line 332)
+ (line 334)

File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -11340,21 +11632,22 @@ D.4 Function Index
* 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)
+ (line 11)
* backward-kill-word (M-<DEL>): Commands For Killing.
- (line 24)
+ (line 28)
* 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)
+* capitalize-word (M-c): Commands For Text. (line 66)
* character-search (C-]): Miscellaneous Commands.
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
(line 47)
-* clear-screen (C-l): Commands For Moving. (line 48)
+* clear-display (M-C-l): Commands For Moving. (line 48)
+* clear-screen (C-l): Commands For Moving. (line 53)
* complete (<TAB>): Commands For Completion.
(line 6)
* complete-command (M-!): Commands For Completion.
@@ -11370,24 +11663,24 @@ D.4 Function Index
* complete-variable (M-$): Commands For Completion.
(line 64)
* copy-backward-word (): Commands For Killing.
- (line 58)
+ (line 69)
* copy-forward-word (): Commands For Killing.
- (line 63)
+ (line 74)
* copy-region-as-kill (): Commands For Killing.
- (line 54)
+ (line 65)
* 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)
+ (line 57)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
(line 110)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
-* downcase-word (M-l): Commands For Text. (line 57)
+* downcase-word (M-l): Commands For Text. (line 62)
* dump-functions (): Miscellaneous Commands.
(line 74)
* dump-macros (): Miscellaneous Commands.
@@ -11397,7 +11690,7 @@ D.4 Function Index
* dynamic-complete-history (M-<TAB>): Commands For Completion.
(line 90)
* edit-and-execute-command (C-x C-e): Miscellaneous Commands.
- (line 140)
+ (line 134)
* 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.
@@ -11408,7 +11701,7 @@ D.4 Function Index
* 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)
+ (line 33)
* forward-word (M-f): Commands For Moving. (line 18)
* glob-complete-word (M-g): Miscellaneous Commands.
(line 92)
@@ -11421,13 +11714,13 @@ D.4 Function Index
* history-expand-line (M-^): Miscellaneous Commands.
(line 118)
* history-search-backward (): Commands For History.
- (line 53)
+ (line 57)
* history-search-forward (): Commands For History.
- (line 47)
+ (line 51)
* history-substring-search-backward (): Commands For History.
- (line 65)
+ (line 69)
* history-substring-search-forward (): Commands For History.
- (line 59)
+ (line 63)
* insert-comment (M-#): Miscellaneous Commands.
(line 61)
* insert-completions (M-*): Commands For Completion.
@@ -11437,11 +11730,11 @@ D.4 Function Index
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
- (line 50)
+ (line 61)
* kill-whole-line (): Commands For Killing.
- (line 15)
-* kill-word (M-d): Commands For Killing.
(line 19)
+* kill-word (M-d): Commands For Killing.
+ (line 23)
* magic-space (): Miscellaneous Commands.
(line 121)
* menu-complete (): Commands For Completion.
@@ -11452,12 +11745,12 @@ D.4 Function Index
(line 17)
* next-screen-line (): Commands For Moving. (line 41)
* non-incremental-forward-search-history (M-n): Commands For History.
- (line 41)
+ (line 45)
* non-incremental-reverse-search-history (M-p): Commands For History.
- (line 35)
-* operate-and-get-next (C-o): Miscellaneous Commands.
- (line 134)
-* overwrite-mode (): Commands For Text. (line 65)
+ (line 39)
+* operate-and-get-next (C-o): Commands For History.
+ (line 96)
+* overwrite-mode (): Commands For Text. (line 70)
* possible-command-completions (C-x !): Commands For Completion.
(line 86)
* possible-completions (M-?): Commands For Completion.
@@ -11479,7 +11772,7 @@ D.4 Function Index
* 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 52)
+* redraw-current-line (): Commands For Moving. (line 57)
* reverse-search-history (C-r): Commands For History.
(line 27)
* revert-line (M-r): Miscellaneous Commands.
@@ -11488,38 +11781,40 @@ D.4 Function Index
* set-mark (C-@): Miscellaneous Commands.
(line 33)
* shell-backward-kill-word (): Commands For Killing.
- (line 33)
-* shell-backward-word (): Commands For Moving. (line 30)
+ (line 37)
+* shell-backward-word (M-C-b): Commands For Moving. (line 30)
* shell-expand-line (M-C-e): Miscellaneous Commands.
(line 113)
-* shell-forward-word (): Commands For Moving. (line 26)
-* shell-kill-word (): Commands For Killing.
- (line 28)
+* shell-forward-word (M-C-f): Commands For Moving. (line 26)
+* shell-kill-word (M-C-d): Commands For Killing.
+ (line 32)
+* shell-transpose-words (M-C-t): Commands For Killing.
+ (line 41)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
* tilde-expand (M-&): Miscellaneous Commands.
(line 30)
-* transpose-chars (C-t): Commands For Text. (line 42)
-* transpose-words (M-t): Commands For Text. (line 48)
+* transpose-chars (C-t): Commands For Text. (line 47)
+* transpose-words (M-t): Commands For Text. (line 53)
* undo (C-_ or C-x C-u): Miscellaneous Commands.
(line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
- (line 41)
+ (line 52)
* unix-line-discard (C-u): Commands For Killing.
- (line 12)
+ (line 16)
* unix-word-rubout (C-w): Commands For Killing.
- (line 37)
-* upcase-word (M-u): Commands For Text. (line 53)
+ (line 48)
+* upcase-word (M-u): Commands For Text. (line 58)
* yank (C-y): Commands For Killing.
- (line 68)
+ (line 79)
* yank-last-arg (M-. or M-_): Commands For History.
- (line 80)
+ (line 84)
* yank-nth-arg (M-C-y): Commands For History.
- (line 71)
+ (line 75)
* yank-pop (M-y): Commands For Killing.
- (line 71)
+ (line 82)

File: bash.info, Node: Concept Index, Prev: Function Index, Up: Indexes
@@ -11566,6 +11861,10 @@ D.5 Concept Index
* commands, shell: Shell Commands. (line 6)
* commands, simple: Simple Commands. (line 6)
* comments, shell: Comments. (line 6)
+* Compatibility Level: Shell Compatibility Mode.
+ (line 6)
+* Compatibility Mode: Shell Compatibility Mode.
+ (line 6)
* completion builtins: Programmable Completion Builtins.
(line 6)
* configuration: Basic Installation. (line 6)
@@ -11655,6 +11954,7 @@ D.5 Concept Index
(line 23)
* redirection: Redirections. (line 6)
* reserved word: Definitions. (line 70)
+* reserved words: Reserved Words. (line 6)
* restricted shell: The Restricted Shell.
(line 6)
* return status: Definitions. (line 75)
@@ -11697,120 +11997,127 @@ Node: Single Quotes14955
Node: Double Quotes15303
Node: ANSI-C Quoting16581
Node: Locale Translation17840
-Node: Comments18736
-Node: Shell Commands19354
-Node: Simple Commands20226
-Node: Pipelines20857
-Node: Lists23789
-Node: Compound Commands25580
-Node: Looping Constructs26592
-Node: Conditional Constructs29087
-Node: Command Grouping40170
-Node: Coprocesses41649
-Node: GNU Parallel43552
-Node: Shell Functions47610
-Node: Shell Parameters54693
-Node: Positional Parameters59106
-Node: Special Parameters60006
-Node: Shell Expansions63760
-Node: Brace Expansion65883
-Node: Tilde Expansion68607
-Node: Shell Parameter Expansion71224
-Node: Command Substitution85680
-Node: Arithmetic Expansion87035
-Node: Process Substitution87967
-Node: Word Splitting89087
-Node: Filename Expansion91031
-Node: Pattern Matching93561
-Node: Quote Removal97547
-Node: Redirections97842
-Node: Executing Commands107400
-Node: Simple Command Expansion108070
-Node: Command Search and Execution110000
-Node: Command Execution Environment112376
-Node: Environment115360
-Node: Exit Status117019
-Node: Signals118689
-Node: Shell Scripts120656
-Node: Shell Builtin Commands123171
-Node: Bourne Shell Builtins125209
-Node: Bash Builtins145959
-Node: Modifying Shell Behavior174884
-Node: The Set Builtin175229
-Node: The Shopt Builtin185642
-Node: Special Builtins203284
-Node: Shell Variables204263
-Node: Bourne Shell Variables204700
-Node: Bash Variables206804
-Node: Bash Features237264
-Node: Invoking Bash238163
-Node: Bash Startup Files244176
-Node: Interactive Shells249279
-Node: What is an Interactive Shell?249689
-Node: Is this Shell Interactive?250338
-Node: Interactive Shell Behavior251153
-Node: Bash Conditional Expressions254640
-Node: Shell Arithmetic259217
-Node: Aliases262034
-Node: Arrays264654
-Node: The Directory Stack270020
-Node: Directory Stack Builtins270804
-Node: Controlling the Prompt273772
-Node: The Restricted Shell276538
-Node: Bash POSIX Mode278363
-Node: Job Control289296
-Node: Job Control Basics289756
-Node: Job Control Builtins294724
-Node: Job Control Variables299451
-Node: Command Line Editing300607
-Node: Introduction and Notation302278
-Node: Readline Interaction303901
-Node: Readline Bare Essentials305092
-Node: Readline Movement Commands306875
-Node: Readline Killing Commands307835
-Node: Readline Arguments309753
-Node: Searching310797
-Node: Readline Init File312983
-Node: Readline Init File Syntax314130
-Node: Conditional Init Constructs334569
-Node: Sample Init File338765
-Node: Bindable Readline Commands341882
-Node: Commands For Moving343086
-Node: Commands For History344935
-Node: Commands For Text349230
-Node: Commands For Killing352618
-Node: Numeric Arguments355099
-Node: Commands For Completion356238
-Node: Keyboard Macros360429
-Node: Miscellaneous Commands361116
-Node: Readline vi Mode367069
-Node: Programmable Completion367976
-Node: Programmable Completion Builtins375756
-Node: A Programmable Completion Example386449
-Node: Using History Interactively391689
-Node: Bash History Facilities392373
-Node: Bash History Builtins395378
-Node: History Interaction399909
-Node: Event Designators403529
-Node: Word Designators404748
-Node: Modifiers406385
-Node: Installing Bash407787
-Node: Basic Installation408924
-Node: Compilers and Options412182
-Node: Compiling For Multiple Architectures412923
-Node: Installation Names414616
-Node: Specifying the System Type415434
-Node: Sharing Defaults416150
-Node: Operation Controls416823
-Node: Optional Features417781
-Node: Reporting Bugs428299
-Node: Major Differences From The Bourne Shell429493
-Node: GNU Free Documentation License446345
-Node: Indexes471522
-Node: Builtin Index471976
-Node: Reserved Word Index478803
-Node: Variable Index481251
-Node: Function Index497002
-Node: Concept Index510305
+Node: Comments18993
+Node: Shell Commands19611
+Node: Reserved Words20549
+Node: Simple Commands21305
+Node: Pipelines21959
+Node: Lists24891
+Node: Compound Commands26682
+Node: Looping Constructs27694
+Node: Conditional Constructs30189
+Node: Command Grouping41760
+Node: Coprocesses43239
+Node: GNU Parallel45142
+Node: Shell Functions49443
+Node: Shell Parameters56650
+Node: Positional Parameters61063
+Node: Special Parameters61963
+Node: Shell Expansions65187
+Node: Brace Expansion67310
+Node: Tilde Expansion70033
+Node: Shell Parameter Expansion72650
+Node: Command Substitution87779
+Node: Arithmetic Expansion89134
+Node: Process Substitution90066
+Node: Word Splitting91186
+Node: Filename Expansion93130
+Node: Pattern Matching95679
+Node: Quote Removal99665
+Node: Redirections99960
+Node: Executing Commands109530
+Node: Simple Command Expansion110200
+Node: Command Search and Execution112154
+Node: Command Execution Environment114530
+Node: Environment117514
+Node: Exit Status119173
+Node: Signals120843
+Node: Shell Scripts122810
+Node: Shell Builtin Commands125822
+Node: Bourne Shell Builtins127860
+Node: Bash Builtins148789
+Node: Modifying Shell Behavior178898
+Node: The Set Builtin179243
+Node: The Shopt Builtin189656
+Node: Special Builtins204566
+Node: Shell Variables205545
+Node: Bourne Shell Variables205982
+Node: Bash Variables208086
+Node: Bash Features240720
+Node: Invoking Bash241733
+Node: Bash Startup Files247746
+Node: Interactive Shells252849
+Node: What is an Interactive Shell?253259
+Node: Is this Shell Interactive?253908
+Node: Interactive Shell Behavior254723
+Node: Bash Conditional Expressions258237
+Node: Shell Arithmetic262814
+Node: Aliases265754
+Node: Arrays268374
+Node: The Directory Stack274383
+Node: Directory Stack Builtins275167
+Node: Controlling the Prompt278135
+Node: The Restricted Shell281085
+Node: Bash POSIX Mode283679
+Node: Shell Compatibility Mode294715
+Node: Job Control301371
+Node: Job Control Basics301831
+Node: Job Control Builtins306827
+Node: Job Control Variables312227
+Node: Command Line Editing313383
+Node: Introduction and Notation315054
+Node: Readline Interaction316677
+Node: Readline Bare Essentials317868
+Node: Readline Movement Commands319651
+Node: Readline Killing Commands320611
+Node: Readline Arguments322529
+Node: Searching323573
+Node: Readline Init File325759
+Node: Readline Init File Syntax327018
+Node: Conditional Init Constructs347556
+Node: Sample Init File351752
+Node: Bindable Readline Commands354876
+Node: Commands For Moving356080
+Node: Commands For History358131
+Node: Commands For Text362924
+Node: Commands For Killing366573
+Node: Numeric Arguments369606
+Node: Commands For Completion370745
+Node: Keyboard Macros374936
+Node: Miscellaneous Commands375623
+Node: Readline vi Mode381307
+Node: Programmable Completion382214
+Node: Programmable Completion Builtins389994
+Node: A Programmable Completion Example400689
+Node: Using History Interactively405936
+Node: Bash History Facilities406620
+Node: Bash History Builtins409625
+Node: History Interaction414354
+Node: Event Designators417974
+Node: Word Designators419328
+Node: Modifiers421088
+Node: Installing Bash422899
+Node: Basic Installation424036
+Node: Compilers and Options427294
+Node: Compiling For Multiple Architectures428035
+Node: Installation Names429728
+Node: Specifying the System Type430546
+Node: Sharing Defaults431262
+Node: Operation Controls431935
+Node: Optional Features432893
+Node: Reporting Bugs443411
+Node: Major Differences From The Bourne Shell444605
+Node: GNU Free Documentation License461457
+Node: Indexes486634
+Node: Builtin Index487088
+Node: Reserved Word Index493915
+Node: Variable Index496363
+Node: Function Index512260
+Node: Concept Index525770

End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/bash.pdf b/doc/bash.pdf
index 54c061ec..d8d784ee 100644
--- a/doc/bash.pdf
+++ b/doc/bash.pdf
Binary files differ
diff --git a/doc/bash.ps b/doc/bash.ps
index 8b3b7338..bd38ef3b 100644
--- a/doc/bash.ps
+++ b/doc/bash.ps
@@ -1,13 +1,13 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.22.3
-%%CreationDate: Wed Jan 2 09:14:38 2019
+%%Creator: groff version 1.22.4
+%%CreationDate: Wed Nov 18 15:13:06 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Courier
%%+ font Symbol
-%%DocumentSuppliedResources: procset grops 1.22 3
-%%Pages: 81
+%%DocumentSuppliedResources: procset grops 1.22 4
+%%Pages: 83
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -16,7 +16,7 @@
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
-%%BeginResource: procset grops 1.22 3
+%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
@@ -245,7 +245,7 @@ BP
108 96 Q(ain SHell)-.05 E F1(SYNOPSIS)72 112.8 Q/F2 10/Times-Bold@0 SF
(bash)108 124.8 Q F0([options] [command_string | \214le])2.5 E F1
(COPYRIGHT)72 141.6 Q F0(Bash is Cop)108 153.6 Q
-(yright \251 1989-2018 by the Free Softw)-.1 E(are F)-.1 E
+(yright \251 1989-2020 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
@@ -264,21 +264,21 @@ F0 2.718(,c)C .218(an be used as options when the shell is in)-2.718 F
-.2(vo)-.4 G -.1(ke).2 G 2.718(d. In).1 F(addition,)2.719 E F2(bash)
2.719 E F0 .219(interprets the follo)2.719 F .219(wing options)-.25 F
(when it is in)108 276 Q -.2(vo)-.4 G -.1(ke).2 G(d:).1 E F2<ad63>108
-292.8 Q F0 .881(If the)158 292.8 R F2<ad63>3.381 E F0 .881(option is pr\
-esent, then commands are read from the \214rst non-option ar)3.381 F
-(gument)-.18 E F3(com-)3.38 E(mand_string)158 304.8 Q F0 5.743(.I).22 G
-3.243(ft)-5.743 G .743(here are ar)-3.243 F .743(guments after the)-.18
-F F3(command_string)3.243 E F0 3.243(,t).22 G .744(he \214rst ar)-3.243
-F .744(gument is assigned)-.18 F(to)158 316.8 Q F2($0)2.919 E F0 .419
+292.8 Q F0 .868(If the)158 292.8 R F2<ad63>3.368 E F0 .867(option is pr\
+esent, then commands are read from the \214rst non-option ar)3.368 F
+(gument)-.18 E F3(com-)3.567 E(mand_string)158 304.8 Q F0 5.726(.I).22 G
+3.226(ft)-5.726 G .726(here are ar)-3.226 F .727(guments after the)-.18
+F F3(command_string)3.427 E F0 3.227(,t).22 G .727(he \214rst ar)-3.227
+F .727(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 F2<ad69>108 340.8 Q F0(If the)158
340.8 Q F2<ad69>2.5 E F0(option is present, the shell is)2.5 E F3(inter)
-2.5 E(active)-.15 E F0(.).18 E F2<ad6c>108 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
+2.51 E(active)-.15 E F0(.).18 E F2<ad6c>108 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 F2<ad72>108 364.8 Q F0(If the)158 364.8 Q F2<ad72>2.5 E F0
(option is present, the shell becomes)2.5 E F3 -.37(re)2.5 G(stricted)
@@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E
1.598(instead of the standard personal initialization \214le)4.279 F F3
(~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti)
144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E
-(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(1)193.455 E 0 Cg EP
+(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(1)195.395 E 0 Cg EP
%%Page: 2 2
%%BeginPageSetup
BP
@@ -355,20 +355,20 @@ F1<ad6c>2.5 E F0(.)A F1(\255\255noediting)108 112.8 Q F0
(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 .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.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.697(da).1 G(s)-2.697 E 2.5(al)144 177.6 S(ogin shell \(see)-2.5 E/F3 9
+(he personal initialization \214les)-2.517 F F2(~/.bash_pr)143.5 165.6 Q
+(o\214le)-.45 E F0(,).18 E F2(~/.bash_lo)2.305 E(gin)-.1 E F0 2.805(,o)
+.24 G(r)-2.805 E F2(~/.pr)2.305 E(o\214le)-.45 E F0 5.305(.B).18 G 2.805
+(yd)-5.305 G(ef)-2.805 E(ault,)-.1 E F1(bash)2.805 E F0 .305
+(reads these \214les when it is in)2.805 F -.2(vo)-.4 G -.1(ke).2 G
+2.805(da).1 G(s)-2.805 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 F1<adad6e6f72>108 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.783
-(Change the beha)144 235.2 R 1.782(vior of)-.2 F F1(bash)4.282 E F0
+-.25 E F1<adad6e6f72>108 194.4 Q(c)-.18 E F0 .161(Do not read and e)144
+194.4 R -.15(xe)-.15 G .162(cute the personal initialization \214le).15
+F F2(~/.bashr)2.162 E(c)-.37 E F0 .162(if the shell is interacti)2.972 F
+-.15(ve)-.25 G 5.162(.T).15 G .162(his op-)-5.162 F(tion 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.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 .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
@@ -411,7 +411,7 @@ F4(INV)72 463.2 Q(OCA)-.493 E(TION)-1.04 E F0(A)108 475.2 Q F2(lo)2.5 E
(guments \(unless)-.18 F F1<ad73>2.734 E F0 .233
(is speci\214ed\) and without the)2.734 F F1<ad63>2.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
+etermined by)108 504 R F2(isatty)3.019 E F0 .509(\(3\)\), or one).32 F
.946(started with the)108 516 R F1<ad69>3.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)
@@ -438,10 +438,11 @@ etermined by)108 504 R F2(isatty)3.01 E F0 .51(\(3\)\), or one).32 F
(~/.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 .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
+(cutes commands from).15 F .076(the \214rst one that e)108 621.6 R .076
+(xists and is readable.)-.15 F(The)5.076 E F1(\255\255nopr)2.576 E
+(o\214le)-.18 E F0 .076
+(option may be used when the shell is started to in-)2.576 F
+(hibit 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
@@ -462,8 +463,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035
Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25
G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806
(un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15
-F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(2)
-193.455 E 0 Cg EP
+F(ariable)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(2)
+195.395 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
@@ -493,10 +494,10 @@ F2(bash)3.417 E F0 .917(is in)3.417 F -.2(vo)-.4 G -.1(ke).2 G 3.417(dw)
(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 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 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
+4.173 E(o\214le)-.45 E F0(and)3.203 E F4(~/.pr)2.523 E(o\214le)-.45 E F0
+3.023(,i).18 G 3.024(nt)-3.023 G .524(hat order)-3.024 F 5.524(.T)-.55 G
+(he)-5.524 E F2(\255\255nopr)3.024 E(o\214le)-.18 E F0 .524
+(option may be used to inhibit this beha)3.024 F(vior)-.2 E(.)-.55 E
.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 F2(sh)2.918 E F0(,)A F2(bash)2.918 E F0
@@ -544,18 +545,17 @@ G(nd)-2.869 E(the)108 350.4 Q F2<adad72>2.919 E(c\214le)-.18 E F0 .419
(ut neither)-.2 F F4 -.1(rs)2.919 G(hd).1 E F0(nor)2.919 E F4(sshd)2.919
E F0 .418(generally in)2.919 F -.2(vo)-.4 G -.1(ke).2 G
(the shell with those options or allo)108 362.4 Q 2.5(wt)-.25 G
-(hem to be speci\214ed.)-2.5 E 1.207
-(If the shell is started with the ef)108 379.2 R(fecti)-.25 E 1.507 -.15
-(ve u)-.25 H 1.208
+(hem to be speci\214ed.)-2.5 E .433(If the shell is started with the ef)
+108 379.2 R(fecti)-.25 E .733 -.15(ve u)-.25 H .433
(ser \(group\) id not equal to the real user \(group\) id, and the).15 F
-F2<ad70>3.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 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
+F2<ad70>2.934 E F0(op-)2.934 E 1.124(tion is not supplied, no startup \
+\214les are read, shell functions are not inherited from the en)108
+391.2 R 1.124(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 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 F2<ad70>3.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)
@@ -581,9145 +581,9479 @@ F4(tok)2.5 E(en)-.1 E F0(that performs a control function.)2.5 E
-.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
+.313(ed when unquoted and either the \214rst w)-.15 F .314
+(ord of a command \(see)-.1 F F1 .314(SHELL GRAMMAR)2.814 F F0(belo)
+2.564 E .314(w\), the third)-.25 F -.1(wo)108 628.8 S .644(rd of a).1 F
+F2(case)3.144 E F0(or)3.144 E F2(select)3.143 E F0 .643(command \(only)
+3.143 F F2(in)3.143 E F0 .643(is v)3.143 F .643(alid\), or the third w)
+-.25 F .643(ord of a)-.1 F F2 -.25(fo)3.143 G(r).25 E F0 .643
+(command \(only)3.143 F F2(in)3.143 E F0(and)3.143 E F2(do)3.143 E F0
+(are v)108 640.8 Q(alid\):)-.25 E F2 11.295(!c)144 657.6 S 8.795
+(ase copr)-11.295 F 8.795(oc do done elif else esac \214 f)-.18 F 8.795
(or function if in select then)-.25 F 7.5(until while { } time [[ ]])144
-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 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 722.4 Q
-(gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E
-(guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.)
--2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(3)193.455 E 0 Cg
-EP
+669.6 R F6(SHELL GRAMMAR)72 686.4 Q F2(Simple Commands)87 698.4 Q F0(A)
+108 710.4 Q F4 .389(simple command)2.889 F F0 .389
+(is a sequence of optional v)2.889 F .388(ariable assignments follo)-.25
+F .388(wed by)-.25 F F2(blank)2.888 E F0 .388(-separated w)B .388
+(ords and)-.1 F .815(redirections, and terminated by a)108 722.4 R F4
+(contr)3.315 E .815(ol oper)-.45 F(ator)-.15 E F0 5.815(.T)C .815
+(he \214rst w)-5.815 F .816(ord speci\214es the command to be e)-.1 F
+-.15(xe)-.15 G(cuted,).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(3)195.395 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(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 F2<ad70>A F0(]] [ ! ])A F1(command)2.5 E F0
-2.5([[)2.5 G F2(|)-2.5 E/F3 10/Symbol SF<ef>A 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 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 206.4 Q 2.5(yr)-.15 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(and is passed as ar)108 84 Q(gument zero.)-.18 E(The remaining w)5 E
+(ords are passed as ar)-.1 E(guments to the in)-.18 E -.2(vo)-.4 G -.1
+(ke).2 G 2.5(dc).1 G(ommand.)-2.5 E(The return v)108 100.8 Q(alue of a)
+-.25 E/F1 10/Times-Italic@0 SF(simple command)2.5 E F0(is its e)2.5 E
+(xit status, or 128+)-.15 E F1(n)A F0
+(if the command is terminated by signal)3.333 E F1(n)2.86 E F0(.).24 E
+/F2 10/Times-Bold@0 SF(Pipelines)87 117.6 Q F0(A)108 129.6 Q F1
+(pipeline)2.996 E F0 .496(is a sequence of one or more commands separat\
+ed by one of the control operators)2.996 F F2(|)2.996 E F0(or)2.996 E F2
+(|&)2.996 E F0 5.496(.T)C(he)-5.496 E(format for a pipeline is:)108
+141.6 Q([)144 158.4 Q F2(time)A F0([)2.5 E F2<ad70>A F0(]] [ ! ])A F1
+(command)2.5 E F0 2.5([[)2.5 G F2(|)-2.5 E/F3 10/Symbol SF<ef>A F2(|&)A
+F0(])A F1(command2)2.5 E F0(... ])2.5 E .231(The standard output of)108
+175.2 R F1(command)2.931 E F0 .232
+(is connected via a pipe to the standard input of)3.502 F F1(command2)
+2.932 E F0 5.232(.T).02 G .232(his connec-)-5.232 F .643
+(tion is performed before an)108 187.2 R 3.143(yr)-.15 G .642
+(edirections speci\214ed by the command \(see)-3.143 F/F4 9/Times-Bold@0
+SF(REDIRECTION)3.142 E F0(belo)2.892 E 3.142(w\). If)-.25 F F2(|&)3.142
+E F0(is)3.142 E(used,)108 199.2 Q F1(command)2.663 E F0 1.263 -.55('s s)
+D .163(tandard error).55 F 2.663(,i)-.4 G 2.663(na)-2.663 G .163
+(ddition to its standard output, is connected to)-2.663 F F1(command2)
+2.664 E F0 1.264 -.55('s s)D .164(tandard in-).55 F .438
+(put through the pipe; it is shorthand for)108 211.2 R F2 .437(2>&1 |)
+2.937 F F0 5.437(.T)C .437
+(his implicit redirection of the standard error to the stan-)-5.437 F
+(dard output is performed after an)108 223.2 Q 2.5(yr)-.15 G
(edirections speci\214ed by the command.)-2.5 E .48
-(The return status of a pipeline is the e)108 223.2 R .48
+(The return status of a pipeline is the e)108 240 R .48
(xit status of the last command, unless the)-.15 F F2(pipefail)2.98 E F0
-.48(option is enabled.)2.98 F(If)108 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
+.48(option is enabled.)2.98 F(If)108 252 Q F2(pipefail)2.687 E F0 .187
+(is enabled, the pipeline')2.687 F 2.687(sr)-.55 G .186
+(eturn status is the v)-2.687 F .186
+(alue of the last \(rightmost\) command to e)-.25 F .186(xit with a)-.15
+F .61(non-zero status, or zero if all commands e)108 264 R .611
+(xit successfully)-.15 F 5.611(.I)-.65 G 3.111(ft)-5.611 G .611
+(he reserv)-3.111 F .611(ed w)-.15 F(ord)-.1 E F2(!)3.111 E F0 .611
+(precedes a pipeline, the)5.611 F -.15(ex)108 276 S .55
(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
-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 300 S
-.139(cution are reported when the pipeline terminates.).15 F(The)5.139 E
-F2<ad70>2.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
+(all commands in the pipeline to terminate before returning a v)108 288
+Q(alue.)-.25 E .298(If the)108 304.8 R F2(time)2.799 E F0(reserv)2.799 E
+.299(ed w)-.15 F .299(ord precedes a pipeline, the elapsed as well as u\
+ser and system time consumed by its)-.1 F -.15(exe)108 316.8 S .14
+(cution are reported when the pipeline terminates.).15 F(The)5.139 E F2
+<ad70>2.639 E F0 .139(option changes the output format to that spec-)
+2.639 F .302(i\214ed by POSIX.)108 328.8 R .303(When the shell is in)
+5.302 F F1 .303(posix mode)2.803 F F0 2.803(,i)C 2.803(td)-2.803 G .303
(oes not recognize)-2.803 F F2(time)2.803 E F0 .303(as a reserv)2.803 F
-.303(ed w)-.15 F .302(ord if the ne)-.1 F(xt)-.15 E(tok)108 324 Q .735
+.303(ed w)-.15 F .303(ord if the ne)-.1 F(xt)-.15 E(tok)108 340.8 Q .736
(en be)-.1 F .736(gins with a `-'.)-.15 F(The)5.736 E F4(TIMEFORMA)3.236
E(T)-.855 E F0 -.25(va)2.986 G .736
-(riable may be set to a format string that speci\214es ho).25 F 3.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
-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 .655
-(Each command in a pipeline is e)108 405.6 R -.15(xe)-.15 G .656
-(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.656 E
-F4 .656(COMMAND EXE-)3.156 F 1.106(CUTION ENVIR)108 417.6 R(ONMENT)-.27
-E F0 1.106(for a description of a subshell en)3.356 F 3.606
-(vironment. If)-.4 F(the)3.606 E F2(lastpipe)3.606 E F0 1.105
-(option is enabled)3.606 F .744(using the)108 429.6 R F2(shopt)3.244 E
-F0 -.2(bu)3.244 G .744(iltin \(see the description of).2 F F2(shopt)
-3.245 E F0(belo)3.245 E .745
-(w\), the last element of a pipeline may be run by)-.25 F
-(the shell process.)108 441.6 Q F2(Lists)87 458.4 Q F0(A)108 470.4 Q F1
-(list)2.85 E F0 .35(is a sequence of one or more pipelines separated by\
- one of the operators)2.85 F F2(;)2.849 E F0(,)A F2(&)2.849 E F0(,)A F2
-(&&)2.849 E F0 2.849(,o)C(r)-2.849 E F2(||)2.849 E F0 2.849(,a)C .349
-(nd option-)-2.849 F(ally terminated by one of)108 482.4 Q F2(;)2.5 E F0
-(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2(<newline>)2.5 E F0(.)A .96
-(Of these list operators,)108 499.2 R F2(&&)3.46 E F0(and)3.46 E F2(||)
-3.46 E F0(ha)3.46 E 1.26 -.15(ve e)-.2 H .961(qual precedence, follo).15
-F .961(wed by)-.25 F F2(;)3.461 E F0(and)3.461 E F2(&)3.461 E F0 3.461
-(,w)C .961(hich ha)-3.461 F 1.261 -.15(ve e)-.2 H .961(qual prece-).15 F
-(dence.)108 511.2 Q 2.5(As)108 528 S(equence of one or more ne)-2.5 E
+(riable may be set to a format string that speci\214es ho).25 F 3.235
+(wt)-.25 G(he)-3.235 E .879
+(timing information should be displayed; see the description of)108
+352.8 R F4(TIMEFORMA)3.38 E(T)-.855 E F0(under)3.13 E F2 .88(Shell V)
+3.38 F(ariables)-.92 E F0(be-)3.38 E(lo)108 364.8 Q -.65(w.)-.25 G .162
+(When the shell is in)108 381.6 R F1 .162(posix mode)2.662 F F0(,)A F2
+(time)2.662 E F0 .162(may be follo)2.662 F .161(wed by a ne)-.25 F 2.661
+(wline. In)-.25 F .161(this case, the shell displays the to-)2.661 F
+.243(tal user and system time consumed by the shell and its children.)
+108 393.6 R(The)5.243 E F4(TIMEFORMA)2.743 E(T)-.855 E F0 -.25(va)2.493
+G .243(riable may be used).25 F
+(to specify the format of the time information.)108 405.6 Q .656
+(Each command in a pipeline is e)108 422.4 R -.15(xe)-.15 G .655
+(cuted as a separate process \(i.e., in a subshell\).).15 F(See)5.655 E
+F4 .655(COMMAND EXE-)3.155 F .05(CUTION ENVIR)108 434.4 R(ONMENT)-.27 E
+F0 .051(for a description of a subshell en)2.3 F 2.551(vironment. If)-.4
+F(the)2.551 E F2(lastpipe)2.551 E F0 .051(option is enabled us-)2.551 F
+.416(ing the)108 446.4 R F2(shopt)2.916 E F0 -.2(bu)2.916 G .416
+(iltin \(see the description of).2 F F2(shopt)2.916 E F0(belo)2.916 E
+.416(w\), the last element of a pipeline may be run by the)-.25 F
+(shell process.)108 458.4 Q F2(Lists)87 475.2 Q F0(A)108 487.2 Q F1
+(list)2.849 E F0 .349(is a sequence of one or more pipelines separated \
+by one of the operators)2.849 F F2(;)2.85 E F0(,)A F2(&)2.85 E F0(,)A F2
+(&&)2.85 E F0 2.85(,o)C(r)-2.85 E F2(||)2.85 E F0 2.85(,a)C .35
+(nd option-)-2.85 F(ally terminated by one of)108 499.2 Q F2(;)2.5 E F0
+(,)A F2(&)2.5 E F0 2.5(,o)C(r)-2.5 E F2(<newline>)2.5 E F0(.)A .961
+(Of these list operators,)108 516 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 528 Q 2.5(As)108 544.8 S(equence of one or more ne)-2.5 E
(wlines may appear in a)-.25 E F1(list)2.5 E F0
(instead of a semicolon to delimit commands.)2.5 E .029
-(If a command is terminated by the control operator)108 544.8 R F2(&)
+(If a command is terminated by the control operator)108 561.6 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.528 E(kgr)-.2 E(ound)-.45 E F0
-(in)2.528 E 2.678(as)108 556.8 S 2.678(ubshell. The)-2.678 F .178
+(cutes the command in the).15 F F1(bac)2.529 E(kgr)-.2 E(ound)-.45 E F0
+(in)2.529 E 2.678(as)108 573.6 S 2.678(ubshell. The)-2.678 F .178
(shell does not w)2.678 F .178
(ait for the command to \214nish, and the return status is 0.)-.1 F .178
-(These are referred)5.178 F .779(to as)108 568.8 R F1(async)3.279 E(hr)
--.15 E(onous)-.45 E F0 3.279(commands. Commands)3.279 F .779
-(separated by a)3.279 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15
-G .778(cuted sequentially; the shell w).15 F .778(aits for)-.1 F
-(each command to terminate in turn.)108 580.8 Q
+(These are referred)5.178 F .778(to as)108 585.6 R F1(async)3.278 E(hr)
+-.15 E(onous)-.45 E F0 3.278(commands. Commands)3.278 F .779
+(separated by a)3.278 F F2(;)3.279 E F0 .779(are e)3.279 F -.15(xe)-.15
+G .779(cuted sequentially; the shell w).15 F .779(aits for)-.1 F
+(each command to terminate in turn.)108 597.6 Q
(The return status is the e)5 E(xit status of the last command e)-.15 E
--.15(xe)-.15 G(cuted.).15 E .937(AND and OR lists are sequences of one \
-or more pipelines separated by the)108 597.6 R F2(&&)3.437 E F0(and)
-3.437 E F2(||)3.437 E F0 .937(control operators,)3.437 F(respecti)108
-609.6 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E
+-.15(xe)-.15 G(cuted.).15 E .172(AND and OR lists are sequences of one \
+or more pipelines separated by the)108 614.4 R F2(&&)2.671 E F0(and)
+2.671 E F2(||)2.671 E F0 .171(control operators, re-)2.671 F(specti)108
+626.4 Q -.15(ve)-.25 G(ly).15 E 5(.A)-.65 G(ND and OR lists are e)-5 E
-.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 626.4 Q F2(&&)
-2.5 E F1(command2)2.5 E(command2)108.2 643.2 Q F0(is e)2.52 E -.15(xe)
--.15 G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e)
-2.5 E(xit status of zero \(success\).)-.15 E(An OR list has the form)108
-660 Q F1(command1)144 676.8 Q F2(||)2.5 E F1(command2)2.5 E(command2)
-108.2 693.6 Q F0 .435(is e)2.955 F -.15(xe)-.15 G .435
+2.5(nA)-5 G(ND list has the form)-2.5 E F1(command1)144 643.2 Q F2(&&)
+2.5 E F1(command2)2.5 E(command2)108.2 660 Q F0(is e)2.52 E -.15(xe)-.15
+G(cuted if, and only if,).15 E F1(command1)2.7 E F0(returns an e)2.5 E
+(xit status of zero \(success\).)-.15 E(An OR list has the form)108
+676.8 Q F1(command1)144 693.6 Q F2(||)2.5 E F1(command2)2.5 E(command2)
+108.2 710.4 Q F0 .434(is e)2.954 F -.15(xe)-.15 G .434
(cuted if, and only if,).15 F F1(command1)3.135 E F0 .435
-(returns a non-zero e)2.935 F .435(xit status.)-.15 F .434
-(The return status of AND)5.434 F(and OR lists is the e)108 705.6 Q
+(returns a non-zero e)2.935 F .435(xit status.)-.15 F .435
+(The return status of AND)5.435 F(and OR lists is the e)108 722.4 Q
(xit status of the last command e)-.15 E -.15(xe)-.15 G
-(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295
-E(4)193.455 E 0 Cg EP
+(cuted in the list.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(4)195.395 E 0 Cg EP
%%Page: 5 5
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.053
-(compound command)3.553 F F0 1.053(is one of the follo)3.553 F 3.553
-(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.054
-(in a command')3.554 F 3.554(sd)-.55 G 1.054(escription may be)-3.554 F
-1.027(separated from the rest of the command by one or more ne)108 108 R
-1.026(wlines, and may be follo)-.25 F 1.026(wed by a ne)-.25 F 1.026
+SF(Compound Commands)87 84 Q F0(A)108 96 Q/F2 10/Times-Italic@0 SF 1.054
+(compound command)3.554 F F0 1.054(is one of the follo)3.554 F 3.553
+(wing. In)-.25 F 1.053(most cases a)3.553 F F2(list)3.553 E F0 1.053
+(in a command')3.553 F 3.553(sd)-.55 G 1.053(escription may be)-3.553 F
+1.026(separated from the rest of the command by one or more ne)108 108 R
+1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 F 1.027
(wline in)-.25 F(place of a semicolon.)108 120 Q(\()108 136.8 Q F2(list)
-A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.511 F -.15(xe)-.15 G .011
+A F0(\))A F2(list)144 136.8 Q F0 .011(is e)2.512 F -.15(xe)-.15 G .011
(cuted in a subshell en).15 F .011(vironment \(see)-.4 F/F3 9
/Times-Bold@0 SF .011(COMMAND EXECUTION ENVIR)2.511 F(ONMENT)-.27 E F0
-(belo)2.262 E(w\).)-.25 E -1.11(Va)144 148.8 S 1.064
-(riable assignments and b)1.11 F 1.064(uiltin commands that af)-.2 F
-1.064(fect the shell')-.25 F 3.564(se)-.55 G -.4(nv)-3.564 G 1.064
-(ironment do not remain in).4 F(ef)144 160.8 Q
-(fect after the command completes.)-.25 E(The return status is the e)5 E
-(xit status of)-.15 E F2(list)2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E
-F0 2.5(;})C F2(list)144 177.6 Q F0 .401(is simply e)2.901 F -.15(xe)-.15
-G .401(cuted in the current shell en).15 F(vironment.)-.4 E F2(list)
-5.401 E F0 .402(must be terminated with a ne)2.901 F .402(wline or)-.25
-F 3.215(semicolon. This)144 189.6 R .715(is kno)3.215 F .715(wn as a)
--.25 F F2(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715
-(he return status is the e)-5.715 F .714(xit status of)-.15 F F2(list)
-3.214 E F0 5.714(.N)C(ote)-5.714 E .219(that unlik)144 201.6 R 2.719(et)
--.1 G .219(he metacharacters)-2.719 F F1(\()2.719 E F0(and)2.719 E F1
-(\))2.719 E F0(,)A F1({)2.719 E F0(and)2.719 E F1(})2.719 E F0(are)2.719
-E F2 -.37(re)2.72 G .22(served wor).37 F(ds)-.37 E F0 .22
-(and must occur where a reserv)2.72 F(ed)-.15 E -.1(wo)144 213.6 S .257
-(rd is permitted to be recognized.).1 F .257(Since the)5.257 F 2.757(yd)
--.15 G 2.756(on)-2.757 G .256(ot cause a w)-2.756 F .256(ord break, the)
--.1 F 2.756(ym)-.15 G .256(ust be separated)-2.756 F(from)144 225.6 Q F2
+(belo)2.261 E(w\).)-.25 E -1.11(Va)144 148.8 S .016
+(riable assignments and b)1.11 F .016(uiltin commands that af)-.2 F .016
+(fect the shell')-.25 F 2.517(se)-.55 G -.4(nv)-2.517 G .017
+(ironment do not remain in ef-).4 F(fect after the command completes.)
+144 160.8 Q(The return status is the e)5 E(xit status of)-.15 E F2(list)
+2.5 E F0(.)A({)108 177.6 Q F2(list)2.5 E F0 2.5(;})C F2(list)144 177.6 Q
+F0 .402(is simply e)2.902 F -.15(xe)-.15 G .401
+(cuted in the current shell en).15 F(vironment.)-.4 E F2(list)5.401 E F0
+.401(must be terminated with a ne)2.901 F .401(wline or)-.25 F 3.214
+(semicolon. This)144 189.6 R .714(is kno)3.214 F .714(wn as a)-.25 F F2
+(gr)3.215 E .715(oup command)-.45 F F0 5.715(.T)C .715
+(he return status is the e)-5.715 F .715(xit status of)-.15 F F2(list)
+3.215 E F0 5.715(.N)C(ote)-5.715 E .22(that unlik)144 201.6 R 2.72(et)
+-.1 G .22(he metacharacters)-2.72 F F1(\()2.72 E F0(and)2.72 E F1(\))
+2.72 E F0(,)A F1({)2.72 E F0(and)2.72 E F1(})2.719 E F0(are)2.719 E F2
+-.37(re)2.719 G .219(served wor).37 F(ds)-.37 E F0 .219
+(and must occur where a reserv)2.719 F(ed)-.15 E -.1(wo)144 213.6 S .256
+(rd is permitted to be recognized.).1 F .256(Since the)5.256 F 2.756(yd)
+-.15 G 2.756(on)-2.756 G .257(ot cause a w)-2.756 F .257(ord break, the)
+-.1 F 2.757(ym)-.15 G .257(ust be separated)-2.757 F(from)144 225.6 Q F2
(list)2.5 E F0(by whitespace or another shell metacharacter)2.5 E(.)-.55
E(\(\()108 242.4 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F0(\)\))A(The)144
-254.4 Q F2 -.2(ex)2.551 G(pr).2 E(ession)-.37 E F0 .051(is e)2.551 F
+254.4 Q F2 -.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.552(wu)-.25 G(nder)-2.552 E F3 .052(ARITHMETIC EV)2.552 F(ALU)-1.215 E
+2.551(wu)-.25 G(nder)-2.551 E F3 .051(ARITHMETIC EV)2.551 F(ALU)-1.215 E
(A-)-.54 E(TION)144 266.4 Q/F4 9/Times-Roman@0 SF(.)A F0 .411(If the v)
-4.911 F .411(alue of the e)-.25 F .411(xpression is non-zero, the retur\
-n status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q
+4.91 F .411(alue of the e)-.25 F .411(xpression is non-zero, the return\
+ status is 0; otherwise the return status)-.15 F(is 1.)144 278.4 Q
(This is e)5 E(xactly equi)-.15 E -.25(va)-.25 G(lent to).25 E F1(let ")
2.5 E F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(")A F0(.)A F1([[)108 295.2 Q
-F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 1.299
+F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(]])2.5 E F0 .003
(Return a status of 0 or 1 depending on the e)144 307.2 R -.25(va)-.25 G
-1.3(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)3.8 G
-(pr).2 E(ession)-.37 E F0(.)A 2.274
-(Expressions are composed of the primaries described belo)144 319.2 R
-4.773(wu)-.25 G(nder)-4.773 E F3(CONDITION)4.773 E 2.273(AL EXPRES-)-.18
-F(SIONS)144 331.2 Q F4(.)A F0 -.8(Wo)5.632 G 1.133
-(rd splitting and pathname e).8 F 1.133
-(xpansion are not performed on the w)-.15 F 1.133(ords between the)-.1 F
-F1([[)3.633 E F0(and)144 343.2 Q F1(]])2.964 E F0 2.964(;t)C .464
-(ilde e)-2.964 F .464(xpansion, parameter and v)-.15 F .464(ariable e)
--.25 F .463(xpansion, arithmetic e)-.15 F .463
-(xpansion, command substi-)-.15 F 1.081
-(tution, process substitution, and quote remo)144 355.2 R -.25(va)-.15 G
-3.581(la).25 G 1.081(re performed.)-3.581 F 1.081
-(Conditional operators such as)6.081 F F1<ad66>3.581 E F0
-(must be unquoted to be recognized as primaries.)144 367.2 Q
+.003(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)2.503
+G(pr).2 E(ession)-.37 E F0 5.003(.E)C(x-)-5.003 E .758
+(pressions are composed of the primaries described belo)144 319.2 R
+3.259(wu)-.25 G(nder)-3.259 E F3(CONDITION)3.259 E .759(AL EXPRESSIONS)
+-.18 F F4(.)A F0 -.8(Wo)144 331.2 S .029(rd splitting and pathname e).8
+F .029(xpansion are not performed on the w)-.15 F .029(ords between the)
+-.1 F F1([[)2.528 E F0(and)2.528 E F1(]])2.528 E F0 2.528(;t)C(ilde)
+-2.528 E -.15(ex)144 343.2 S 3.968(pansion, parameter and v).15 F 3.969
+(ariable e)-.25 F 3.969(xpansion, arithmetic e)-.15 F 3.969
+(xpansion, command substitution,)-.15 F .571
+(process substitution, and quote remo)144 355.2 R -.25(va)-.15 G 3.071
+(la).25 G .571(re performed.)-3.071 F .571
+(Conditional operators such as)5.571 F F1<ad66>3.07 E F0 .57(must be)
+3.07 F(unquoted to be recognized as primaries.)144 367.2 Q
(When used with)144 385.2 Q F1([[)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E
F0(and)2.5 E F1(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using the current locale.)-.15 E .503(When the)144
-403.2 R F1(==)3.003 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\
+(xicographically using the current locale.)-.15 E .502(When the)144
+403.2 R F1(==)3.002 E F0(and)3.002 E F1(!=)3.002 E F0 .502(operators ar\
e used, the string to the right of the operator is considered a pat-)
3.002 F .81(tern and matched according to the rules described belo)144
415.2 R 3.31(wu)-.25 G(nder)-3.31 E F1 -.1(Pa)3.31 G(tter).1 E 3.31(nM)
-.15 G(atching)-3.31 E F0 3.31(,a)C 3.31(si)-3.31 G 3.31(ft)-3.31 G(he)
--3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 1.39
-(shell option were enabled.)3.89 F(The)6.39 E F1(=)3.889 E F0 1.389
-(operator is equi)3.889 F -.25(va)-.25 G 1.389(lent to).25 F F1(==)3.889
-E F0 6.389(.I)C 3.889(ft)-6.389 G(he)-3.889 E F1(nocasematch)3.889 E F0
-(shell)3.889 E .271
-(option is enabled, the match is performed without re)144 439.2 R -.05
-(ga)-.15 G .272(rd to the case of alphabetic characters.).05 F(The)5.272
-E 1.068(return v)144 451.2 R 1.068(alue is 0 if the string matches \()
--.25 F F1(==)A F0 3.568(\)o)C 3.568(rd)-3.568 G 1.068(oes not match \()
--3.568 F F1(!=)A F0 3.568(\)t)C 1.067(he pattern, and 1 otherwise.)
--3.568 F(An)144 463.2 Q 2.5(yp)-.15 G(art of the pattern may be quoted \
-to force the quoted portion to be matched as a string.)-2.5 E .243
+-3.31 E F1(ext-)3.31 E(glob)144 427.2 Q F0 .313
+(shell option were enabled.)2.813 F(The)5.313 E F1(=)2.813 E F0 .313
+(operator is equi)2.813 F -.25(va)-.25 G .313(lent to).25 F F1(==)2.813
+E F0 5.313(.I)C 2.813(ft)-5.313 G(he)-2.813 E F1(nocasematch)2.813 E F0
+.314(shell op-)2.814 F .03
+(tion is enabled, the match is performed without re)144 439.2 R -.05(ga)
+-.15 G .029(rd to the case of alphabetic characters.).05 F .029(The re-)
+5.029 F .258(turn v)144 451.2 R .259(alue is 0 if the string matches \()
+-.25 F F1(==)A F0 2.759(\)o)C 2.759(rd)-2.759 G .259(oes not match \()
+-2.759 F F1(!=)A F0 2.759(\)t)C .259(he pattern, and 1 otherwise.)-2.759
+F(An)5.259 E(y)-.15 E(part of the pattern may be quoted to force the qu\
+oted portion to be matched as a string.)144 463.2 Q .243
(An additional binary operator)144 481.2 R(,)-.4 E F1(=~)2.743 E F0
2.743(,i)C 2.743(sa)-2.743 G -.25(va)-2.943 G .243
(ilable, with the same precedence as).25 F F1(==)2.743 E F0(and)2.743 E
F1(!=)2.743 E F0 5.243(.W)C .243(hen it is)-5.243 F .182
(used, the string to the right of the operator is considered a POSIX e)
-144 493.2 R .182(xtended re)-.15 F .181(gular e)-.15 F .181
-(xpression and)-.15 F .207(matched accordingly \(as in)144 505.2 R F2
--.37(re)2.707 G -.1(ge)-.03 G(x)-.1 E F0 2.707(\(3\)\). The)B .207
-(return v)2.707 F .207
-(alue is 0 if the string matches the pattern, and 1)-.25 F 3.346
-(otherwise. If)144 517.2 R .846(the re)3.346 F .846(gular e)-.15 F .845
-(xpression is syntactically incorrect, the conditional e)-.15 F
-(xpression')-.15 E 3.345(sr)-.55 G(eturn)-3.345 E -.25(va)144 529.2 S
-.666(lue is 2.).25 F .667(If the)5.667 F F1(nocasematch)3.167 E F0 .667
-(shell option is enabled, the match is performed without re)3.167 F -.05
-(ga)-.15 G .667(rd to).05 F .593(the case of alphabetic characters.)144
-541.2 R(An)5.593 E 3.093(yp)-.15 G .592
-(art of the pattern may be quoted to force the quoted por)-3.093 F(-)-.2
-E 1.016(tion to be matched as a string.)144 553.2 R(Brack)6.016 E 1.016
-(et e)-.1 F 1.016(xpressions in re)-.15 F 1.016(gular e)-.15 F 1.016
-(xpressions must be treated care-)-.15 F(fully)144 565.2 Q 4.436(,s)-.65
-G 1.936
-(ince normal quoting characters lose their meanings between brack)-4.436
-F 4.435(ets. If)-.1 F 1.935(the pattern is)4.435 F .264
-(stored in a shell v)144 577.2 R .264(ariable, quoting the v)-.25 F .264
-(ariable e)-.25 F .265
-(xpansion forces the entire pattern to be matched as)-.15 F 3.774(as)144
-589.2 S 3.774(tring. Substrings)-3.774 F 1.274
-(matched by parenthesized sube)3.774 F 1.273(xpressions within the re)
--.15 F 1.273(gular e)-.15 F 1.273(xpression are)-.15 F(sa)144 601.2 Q
--.15(ve)-.2 G 3.096(di).15 G 3.097(nt)-3.096 G .597(he array v)-3.097 F
-(ariable)-.25 E F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E F4(.)A F0
-.597(The element of)5.097 F F3 -.27(BA)3.097 G(SH_REMA).27 E(TCH)-.855 E
-F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049
-(the portion of the string matching the entire re)144 613.2 R .049
-(gular e)-.15 F 2.549(xpression. The)-.15 F .049(element of)2.549 F F3
--.27(BA)2.549 G(SH_REMA).27 E(TCH)-.855 E F0(with inde)144 625.2 Q(x)
--.15 E F2(n)2.5 E F0(is the portion of the string matching the)2.5 E F2
-(n)2.5 E F0(th parenthesized sube)A(xpression.)-.15 E .785
-(Expressions may be combined using the follo)144 643.2 R .786
+144 493.2 R .182(xtended re)-.15 F .182(gular e)-.15 F .182
+(xpression and)-.15 F 2.624(matched accordingly \(using the POSIX)144
+505.2 R F2 -.37(re)5.124 G(gcomp)-.03 E F0(and)5.124 E F2 -.37(re)5.124
+G -.1(ge)-.03 G(xec)-.1 E F0(interf)5.123 E 2.623
+(aces usually described in)-.1 F F2 -.37(re)144 517.2 S -.1(ge)-.03 G(x)
+-.1 E F0 3.271(\(3\)\). The)B .771(return v)3.271 F .772
+(alue is 0 if the string matches the pattern, and 1 otherwise.)-.25 F
+.772(If the re)5.772 F(gular)-.15 E -.15(ex)144 529.2 S .509
+(pression is syntactically incorrect, the conditional e).15 F
+(xpression')-.15 E 3.008(sr)-.55 G .508(eturn v)-3.008 F .508
+(alue is 2.)-.25 F .508(If the)5.508 F F1(nocase-)3.008 E(match)144
+541.2 Q F0 1.307
+(shell option is enabled, the match is performed without re)3.806 F -.05
+(ga)-.15 G 1.307(rd to the case of alphabetic).05 F 3.063
+(characters. An)144 553.2 R 3.063(yp)-.15 G .563(art of the pattern may\
+ be quoted to force the quoted portion to be matched as a)-3.063 F 2.943
+(string. Brack)144 565.2 R .443(et e)-.1 F .443(xpressions in re)-.15 F
+.443(gular e)-.15 F .443(xpressions must be treated carefully)-.15 F
+2.944(,s)-.65 G .444(ince normal quoting)-2.944 F .615
+(characters lose their meanings between brack)144 577.2 R 3.115(ets. If)
+-.1 F .614(the pattern is stored in a shell v)3.115 F .614
+(ariable, quot-)-.25 F(ing the v)144 589.2 Q(ariable e)-.25 E
+(xpansion forces the entire pattern to be matched as a string.)-.15 E
+.838(The pattern will match if it matches an)144 607.2 R 3.338(yp)-.15 G
+.838(art of the string.)-3.338 F .839(Anchor the pattern using the)5.839
+F F1(^)3.339 E F0(and)3.339 E F1($)3.339 E F0(re)144 619.2 Q .847
+(gular e)-.15 F .846
+(xpression operators to force it to match the entire string.)-.15 F .846
+(The array v)5.846 F(ariable)-.25 E F3 -.27(BA)3.346 G(SH_RE-).27 E(MA)
+144 631.2 Q(TCH)-.855 E F0 .321
+(records which parts of the string matched the pattern.)2.571 F .322
+(The element of)5.322 F F3 -.27(BA)2.822 G(SH_REMA).27 E(TCH)-.855 E F0
+.583(with inde)144 643.2 R 3.083(x0)-.15 G .582
+(contains the portion of the string matching the entire re)-.001 F .582
+(gular e)-.15 F 3.082(xpression. Substrings)-.15 F .249
+(matched by parenthesized sube)144 655.2 R .249
+(xpressions within the re)-.15 F .249(gular e)-.15 F .249
+(xpression are sa)-.15 F -.15(ve)-.2 G 2.749(di).15 G 2.75(nt)-2.749 G
+.25(he remaining)-2.75 F F3 -.27(BA)144 667.2 S(SH_REMA).27 E(TCH)-.855
+E F0 1.13(indices. The element of)3.38 F F3 -.27(BA)3.63 G(SH_REMA).27 E
+(TCH)-.855 E F0 1.13(with inde)3.38 F(x)-.15 E F2(n)3.63 E F0 1.13
+(is the portion of the)3.63 F(string matching the)144 679.2 Q F2(n)2.5 E
+F0(th parenthesized sube)A(xpression.)-.15 E .785
+(Expressions may be combined using the follo)144 697.2 R .786
(wing operators, listed in decreasing order of prece-)-.25 F(dence:)144
-655.2 Q F1(\()144 673.2 Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F1(\))
-2.5 E F0 .523(Returns the v)180 685.2 R .522(alue of)-.25 F F2 -.2(ex)
-3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522(his may be used to o)
--5.522 F -.15(ve)-.15 G .522(rride the normal precedence of).15 F
-(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E
-(5)193.455 E 0 Cg EP
+709.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(5)195.395 E 0 Cg
+EP
%%Page: 6 6
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(!)144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37 E
-F0 -.35(Tr)180 96 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0
-(is f)2.74 E(alse.)-.1 E F2 -.2(ex)144 108 S(pr).2 E(ession1)-.37 E F1
-(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 120 S
-(ue if both).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(and)2.5 E F2
--.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(are true.)2.52 E F2 -.2(ex)144
-132 S(pr).2 E(ession1)-.37 E F1(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E
-(ession2)-.37 E F0 -.35(Tr)180 144 S(ue if either).35 E F2 -.2(ex)2.5 G
-(pr).2 E(ession1)-.37 E F0(or)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37
-E F0(is true.)2.52 E(The)144 160.8 Q F1(&&)3.64 E F0(and)3.64 E F1(||)
-3.64 E F0 1.14(operators do not e)3.64 F -.25(va)-.25 G(luate).25 E F2
--.2(ex)3.641 G(pr).2 E(ession2)-.37 E F0 1.141(if the v)3.641 F 1.141
-(alue of)-.25 F F2 -.2(ex)3.641 G(pr).2 E(ession1)-.37 E F0 1.141
-(is suf)3.641 F 1.141(\214cient to)-.25 F(determine the return v)144
-172.8 Q(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1
--.25(fo)108 189.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)
-2.5 E F2(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2
-(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 201.6 R
-.424(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F
-.423(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F
-(ariable)-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653
-(each element of this list in turn, and)144 213.6 R F2(list)3.153 E F0
+SF(\()144 84 Q/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E(ession)-.37
+E F1(\))2.5 E F0 .523(Returns the v)180 96 R .522(alue of)-.25 F F2 -.2
+(ex)3.022 G(pr).2 E(ession)-.37 E F0 5.522(.T)C .522
+(his may be used to o)-5.522 F -.15(ve)-.15 G .522
+(rride the normal precedence of).15 F(operators.)180 108 Q F1(!)144 120
+Q F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0 -.35(Tr)180 132 S(ue if).35 E
+F2 -.2(ex)2.5 G(pr).2 E(ession)-.37 E F0(is f)2.74 E(alse.)-.1 E F2 -.2
+(ex)144 144 S(pr).2 E(ession1)-.37 E F1(&&)2.5 E F2 -.2(ex)2.5 G(pr).2 E
+(ession2)-.37 E F0 -.35(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G
+(pr).2 E(ession1)-.37 E F0(and)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)
+-.37 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr).2 E(ession1)-.37 E F1
+(||)2.5 E F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 180 S
+(ue if either).35 E F2 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E
+F2 -.2(ex)2.5 G(pr).2 E(ession2)-.37 E F0(is true.)2.52 E(The)144 196.8
+Q F1(&&)2.675 E F0(and)2.675 E F1(||)2.675 E F0 .175(operators do not e)
+2.675 F -.25(va)-.25 G(luate).25 E F2 -.2(ex)2.675 G(pr).2 E(ession2)
+-.37 E F0 .175(if the v)2.675 F .175(alue of)-.25 F F2 -.2(ex)2.676 G
+(pr).2 E(ession1)-.37 E F0 .176(is suf)2.676 F .176(\214cient to de-)
+-.25 F(termine the return v)144 208.8 Q
+(alue of the entire conditional e)-.25 E(xpression.)-.15 E F1 -.25(fo)
+108 225.6 S(r).25 E F2(name)2.5 E F0 2.5([[)2.5 G F1(in)A F0([)2.5 E F2
+(wor)2.5 E 2.5(d.)-.37 G(..)-2.5 E F0 2.5(]];])2.5 G F1(do)A F2(list)2.5
+E F0(;)2.5 E F1(done)2.5 E F0 .424(The list of w)144 237.6 R .424
+(ords follo)-.1 F(wing)-.25 E F1(in)2.924 E F0 .423(is e)2.924 F .423
+(xpanded, generating a list of items.)-.15 F .423(The v)5.423 F(ariable)
+-.25 E F2(name)2.923 E F0 .423(is set to)2.923 F .653
+(each element of this list in turn, and)144 249.6 R F2(list)3.153 E F0
.653(is e)3.153 F -.15(xe)-.15 G .653(cuted each time.).15 F .653
(If the)5.653 F F1(in)3.153 E F2(wor)3.153 E(d)-.37 E F0 .653
(is omitted, the)3.153 F F1 -.25(fo)3.153 G(r).25 E F0 .649(command e)
-144 225.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648
+144 261.6 R -.15(xe)-.15 G(cutes).15 E F2(list)3.149 E F0 .648
(once for each positional parameter that is set \(see)3.148 F/F3 9
/Times-Bold@0 SF -.666(PA)3.148 G(RAMETERS).666 E F0(belo)2.898 E(w\).)
--.25 E .153(The return status is the e)144 237.6 R .153
+-.25 E .153(The return status is the e)144 273.6 R .153
(xit status of the last command that e)-.15 F -.15(xe)-.15 G 2.654
(cutes. If).15 F .154(the e)2.654 F .154(xpansion of the items)-.15 F
-(follo)144 249.6 Q(wing)-.25 E F1(in)2.5 E F0
+(follo)144 285.6 Q(wing)-.25 E F1(in)2.5 E F0
(results in an empty list, no commands are e)2.5 E -.15(xe)-.15 G
-(cuted, and the return status is 0.).15 E F1 -.25(fo)108 266.4 S(r).25 E
+(cuted, and the return status is 0.).15 E F1 -.25(fo)108 302.4 S(r).25 E
F0(\(\()2.5 E F2 -.2(ex)2.5 G(pr1).2 E F0(;)2.5 E F2 -.2(ex)2.5 G(pr2).2
E F0(;)2.5 E F2 -.2(ex)2.5 G(pr3).2 E F0(\)\) ;)2.5 E F1(do)2.5 E F2
(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0 1.236(First, the arithmetic e)
-144 278.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e)
+144 314.4 R(xpression)-.15 E F2 -.2(ex)3.736 G(pr1).2 E F0 1.235(is e)
3.736 F -.25(va)-.25 G 1.235
(luated according to the rules described belo).25 F 3.735(wu)-.25 G
-(nder)-3.735 E F3 .561(ARITHMETIC EV)144 290.4 R(ALU)-1.215 E -.855(AT)
+(nder)-3.735 E F3 .561(ARITHMETIC EV)144 326.4 R(ALU)-1.215 E -.855(AT)
-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 .561(The arithmetic e)
5.061 F(xpression)-.15 E F2 -.2(ex)3.061 G(pr2).2 E F0 .562(is then e)
3.062 F -.25(va)-.25 G .562(luated repeatedly until).25 F .592(it e)144
-302.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F
+338.4 R -.25(va)-.25 G .592(luates to zero.).25 F .592(Each time)5.592 F
F2 -.2(ex)3.092 G(pr2).2 E F0 -.25(eva)3.092 G .592
(luates to a non-zero v).25 F(alue,)-.25 E F2(list)3.092 E F0 .591(is e)
3.092 F -.15(xe)-.15 G .591(cuted and the arith-).15 F .228(metic e)144
-314.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F
+350.4 R(xpression)-.15 E F2 -.2(ex)2.728 G(pr3).2 E F0 .229(is e)2.728 F
-.25(va)-.25 G 2.729(luated. If).25 F(an)2.729 E 2.729(ye)-.15 G .229
(xpression is omitted, it beha)-2.879 F -.15(ve)-.2 G 2.729(sa).15 G
2.729(si)-2.729 G 2.729(fi)-2.729 G 2.729(te)-2.729 G -.25(va)-2.979 G
-.229(luates to 1.).25 F .228(The return v)144 326.4 R .228
+.229(luates to 1.).25 F .228(The return v)144 362.4 R .228
(alue is the e)-.25 F .228(xit status of the last command in)-.15 F F2
(list)2.728 E F0 .227(that is e)2.728 F -.15(xe)-.15 G .227(cuted, or f)
.15 F .227(alse if an)-.1 F 2.727(yo)-.15 G 2.727(ft)-2.727 G(he)-2.727
-E -.15(ex)144 338.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1
-(select)108 355.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)
+E -.15(ex)144 374.4 S(pressions is in).15 E -.25(va)-.4 G(lid.).25 E F1
+(select)108 391.2 Q F2(name)2.5 E F0([)2.5 E F1(in)2.5 E F2(wor)2.5 E(d)
-.37 E F0 2.5(];)2.5 G F1(do)A F2(list)2.5 E F0(;)2.5 E F1(done)2.5 E F0
-.432(The list of w)144 367.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in)
+.432(The list of w)144 403.2 R .432(ords follo)-.1 F(wing)-.25 E F1(in)
2.932 E F0 .432(is e)2.932 F .432(xpanded, generating a list of items.)
-.15 F .433(The set of e)5.433 F .433(xpanded w)-.15 F(ords)-.1 E .843
-(is printed on the standard error)144 379.2 R 3.342(,e)-.4 G .842
+(is printed on the standard error)144 415.2 R 3.342(,e)-.4 G .842
(ach preceded by a number)-3.342 F 5.842(.I)-.55 G 3.342(ft)-5.842 G(he)
-3.342 E F1(in)3.342 E F2(wor)3.342 E(d)-.37 E F0 .842
(is omitted, the posi-)3.342 F .201(tional parameters are printed \(see)
-144 391.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701
+144 427.2 R F3 -.666(PA)2.701 G(RAMETERS).666 E F0(belo)2.451 E 2.701
(w\). The)-.25 F F3(PS3)2.701 E F0 .201(prompt is then displayed and a)
-2.451 F .214(line read from the standard input.)144 403.2 R .213
+2.451 F .214(line read from the standard input.)144 439.2 R .213
(If the line consists of a number corresponding to one of the dis-)5.214
-F 1.537(played w)144 415.2 R 1.537(ords, then the v)-.1 F 1.537(alue of)
+F 1.537(played w)144 451.2 R 1.537(ords, then the v)-.1 F 1.537(alue of)
-.25 F F2(name)4.397 E F0 1.537(is set to that w)4.217 F 4.037(ord. If)
-.1 F 1.538(the line is empty)4.038 F 4.038(,t)-.65 G 1.538(he w)-4.038
-F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 427.2 R 2.566
+F 1.538(ords and)-.1 F .066(prompt are displayed ag)144 463.2 R 2.566
(ain. If)-.05 F .065(EOF is read, the command completes.)2.566 F(An)
5.065 E 2.565(yo)-.15 G .065(ther v)-2.565 F .065(alue read causes)-.25
-F F2(name)144.36 439.2 Q F0 .953(to be set to null.)3.633 F .953
+F F2(name)144.36 475.2 Q F0 .953(to be set to null.)3.633 F .953
(The line read is sa)5.953 F -.15(ve)-.2 G 3.454(di).15 G 3.454(nt)
-3.454 G .954(he v)-3.454 F(ariable)-.25 E F3(REPL)3.454 E(Y)-.828 E F4
(.)A F0(The)5.454 E F2(list)3.544 E F0 .954(is e)4.134 F -.15(xe)-.15 G
-.954(cuted after).15 F .072(each selection until a)144 451.2 R F1(br)
+.954(cuted after).15 F .072(each selection until a)144 487.2 R F1(br)
2.571 E(eak)-.18 E F0 .071(command is e)2.571 F -.15(xe)-.15 G 2.571
(cuted. The).15 F -.15(ex)2.571 G .071(it status of).15 F F1(select)
2.571 E F0 .071(is the e)2.571 F .071(xit status of the)-.15 F
-(last command e)144 463.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5 E
+(last command e)144 499.2 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.59 E
F0 2.5(,o).68 G 2.5(rz)-2.5 G(ero if no commands were e)-2.5 E -.15(xe)
--.15 G(cuted.).15 E F1(case)108 480 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E
+-.15 G(cuted.).15 E F1(case)108 516 Q F2(wor)2.5 E(d)-.37 E F1(in)2.5 E
F0 2.5([[)2.5 G(\(])-2.5 E F2(pattern)2.5 E F0([)2.5 E F1(|)2.5 E F2
(pattern)2.5 E F0 2.5(].)2.5 G(.. \))-2.5 E F2(list)2.5 E F0(;; ] ...)
-2.5 E F1(esac)2.5 E F0(A)144 492 Q F1(case)3.264 E F0 .764
+2.5 E F1(esac)2.5 E F0(A)144 528 Q F1(case)3.264 E F0 .764
(command \214rst e)3.264 F(xpands)-.15 E F2(wor)3.264 E(d)-.37 E F0
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 2.218
-(matching rules described under)144 504 R F1 -.1(Pa)4.718 G(tter).1 E
-4.718(nM)-.15 G(atching)-4.718 E F0(belo)4.718 E 6.017 -.65(w. T)-.25 H
-(he).65 E F2(wor)4.717 E(d)-.37 E F0 2.217(is e)4.717 F 2.217
-(xpanded using tilde)-.15 F -.15(ex)144 516 S 3.968
-(pansion, parameter and v).15 F 3.969(ariable e)-.25 F 3.969
-(xpansion, arithmetic e)-.15 F 3.969(xpansion, command substitution,)
--.15 F .042(process substitution and quote remo)144 528 R -.25(va)-.15 G
-2.542(l. Each).25 F F2(pattern)2.542 E F0 -.15(ex)2.542 G .042
-(amined is e).15 F .041(xpanded using tilde e)-.15 F(xpansion,)-.15 E .8
-(parameter and v)144 540 R .8(ariable e)-.25 F .8
-(xpansion, arithmetic e)-.15 F .8
-(xpansion, command substitution, and process sub-)-.15 F 2.583
-(stitution. If)144 552 R(the)2.583 E F1(nocasematch)2.583 E F0 .083
-(shell option is enabled, the match is performed without re)2.583 F -.05
-(ga)-.15 G .082(rd to the).05 F .278(case of alphabetic characters.)144
-564 R .279(When a match is found, the corresponding)5.278 F F2(list)
-2.779 E F0 .279(is e)2.779 F -.15(xe)-.15 G 2.779(cuted. If).15 F(the)
-2.779 E F1(;;)2.779 E F0 .812(operator is used, no subsequent matches a\
-re attempted after the \214rst pattern match.)144 576 R(Using)5.812 E F1
-(;&)3.312 E F0(in)3.312 E .007(place of)144 588 R F1(;;)2.507 E F0 .007
-(causes e)2.507 F -.15(xe)-.15 G .007(cution to continue with the).15 F
-F2(list)2.507 E F0 .007(associated with the ne)2.507 F .007
-(xt set of patterns.)-.15 F(Using)5.008 E F1(;;&)144 600 Q F0 .561
-(in place of)3.061 F F1(;;)3.061 E F0 .561
-(causes the shell to test the ne)3.061 F .56
-(xt pattern list in the statement, if an)-.15 F 1.86 -.65(y, a)-.15 H
-.56(nd e).65 F -.15(xe)-.15 G(cute).15 E(an)144 612 Q 2.568(ya)-.15 G
-(ssociated)-2.568 E F2(list)2.568 E F0 .068(on a successful match.)2.568
-F .068(The e)5.068 F .068(xit status is zero if no pattern matches.)-.15
-F(Otherwise,)5.069 E(it is the e)144 624 Q
-(xit status of the last command e)-.15 E -.15(xe)-.15 G(cuted in).15 E
-F2(list)2.5 E F0(.)A F1(if)108 640.8 Q F2(list)2.5 E F0(;)A F1(then)2.5
-E F2(list)2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E
-F2(list)2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0
-2.5(;])C F1<8c>A F0(The)144 652.8 Q F1(if)2.978 E F2(list)3.068 E F0
-.478(is e)3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978
-F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0
-.478(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)
-2.978 E F1(elif)2.977 E F2(list)2.977 E F0 1.087(is e)144 664.8 R -.15
-(xe)-.15 G 1.087(cuted in turn, and if its e).15 F 1.087
+F2(pattern)3.264 E F0 .765(in turn, using the)3.264 F .884
+(matching rules described under)144 540 R F1 -.1(Pa)3.384 G(tter).1 E
+3.384(nM)-.15 G(atching)-3.384 E F0(belo)3.384 E 4.684 -.65(w. T)-.25 H
+(he).65 E F2(wor)3.384 E(d)-.37 E F0 .884(is e)3.384 F .883
+(xpanded using tilde e)-.15 F(x-)-.15 E .95(pansion, parameter and v)144
+552 R .95(ariable e)-.25 F .95(xpansion, arithmetic e)-.15 F .95
+(xpansion, command substitution, process)-.15 F .181
+(substitution and quote remo)144 564 R -.25(va)-.15 G 2.681(l. Each).25
+F F2(pattern)2.681 E F0 -.15(ex)2.681 G .181(amined is e).15 F .181
+(xpanded using tilde e)-.15 F .18(xpansion, param-)-.15 F .103
+(eter and v)144 576 R .103(ariable e)-.25 F .103(xpansion, arithmetic e)
+-.15 F .103(xpansion, command substitution, and process substitution.)
+-.15 F .687(If the)144 588 R F1(nocasematch)3.187 E F0 .687
+(shell option is enabled, the match is performed without re)3.187 F -.05
+(ga)-.15 G .687(rd to the case of).05 F .464(alphabetic characters.)144
+600 R .464(When a match is found, the corresponding)5.464 F F2(list)
+2.964 E F0 .464(is e)2.964 F -.15(xe)-.15 G 2.964(cuted. If).15 F(the)
+2.964 E F1(;;)2.964 E F0(opera-)2.964 E .675(tor is used, no subsequent\
+ matches are attempted after the \214rst pattern match.)144 612 R(Using)
+5.674 E F1(;&)3.174 E F0 .674(in place)3.174 F(of)144 624 Q F1(;;)2.866
+E F0 .366(causes e)2.866 F -.15(xe)-.15 G .366
+(cution to continue with the).15 F F2(list)2.866 E F0 .367
+(associated with the ne)2.866 F .367(xt set of patterns.)-.15 F(Using)
+5.367 E F1(;;&)2.867 E F0 .596(in place of)144 636 R F1(;;)3.096 E F0
+.596(causes the shell to test the ne)3.096 F .595
+(xt pattern list in the statement, if an)-.15 F 1.895 -.65(y, a)-.15 H
+.595(nd e).65 F -.15(xe)-.15 G .595(cute an).15 F(y)-.15 E(associated)
+144 648 Q F2(list)2.96 E F0 .461
+(on a successful match, continuing the case statement e)2.96 F -.15(xe)
+-.15 G .461(cution as if the pattern list).15 F .677(had not matched.)
+144 660 R .677(The e)5.677 F .677
+(xit status is zero if no pattern matches.)-.15 F .676
+(Otherwise, it is the e)5.677 F .676(xit status of)-.15 F
+(the last command e)144 672 Q -.15(xe)-.15 G(cuted in).15 E F2(list)2.5
+E F0(.)A F1(if)108 688.8 Q F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list)
+2.5 E F0 2.5(;[)C F1(elif)A F2(list)2.5 E F0(;)A F1(then)2.5 E F2(list)
+2.5 E F0 2.5(;].)C(.. [)-2.5 E F1(else)2.5 E F2(list)2.5 E F0 2.5(;])C
+F1<8c>A F0(The)144 700.8 Q F1(if)2.977 E F2(list)3.067 E F0 .478(is e)
+3.658 F -.15(xe)-.15 G 2.978(cuted. If).15 F .478(its e)2.978 F .478
+(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 .478
+(is e)2.978 F -.15(xe)-.15 G 2.978(cuted. Otherwise,).15 F(each)2.978 E
+F1(elif)2.978 E F2(list)2.978 E F0 1.088(is e)144 712.8 R -.15(xe)-.15 G
+1.088(cuted in turn, and if its e).15 F 1.087
(xit status is zero, the corresponding)-.15 F F1(then)3.587 E F2(list)
-3.587 E F0 1.088(is e)3.588 F -.15(xe)-.15 G 1.088(cuted and the).15 F
-.104(command completes.)144 676.8 R .103(Otherwise, the)5.104 F F1(else)
-2.603 E F2(list)2.603 E F0 .103(is e)2.603 F -.15(xe)-.15 G .103
-(cuted, if present.).15 F .103(The e)5.103 F .103(xit status is the e)
--.15 F .103(xit sta-)-.15 F(tus of the last command e)144 688.8 Q -.15
-(xe)-.15 G(cuted, or zero if no condition tested true.).15 E F1(while)
-108 705.6 Q F2(list-1)2.5 E F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1
-(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(6)193.455
-E 0 Cg EP
+3.587 E F0 1.087(is e)3.587 F -.15(xe)-.15 G 1.087(cuted and the).15 F
+1.239(command completes.)144 724.8 R 1.239(Otherwise, the)6.239 F F1
+(else)3.739 E F2(list)3.739 E F0 1.239(is e)3.739 F -.15(xe)-.15 G 1.239
+(cuted, if present.).15 F 1.24(The e)6.239 F 1.24(xit status is the e)
+-.15 F(xit)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(6)
+195.395 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(until)108 84 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5
-E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 96 Q F1(while)3.45 E
-F0 .95(command continuously e)3.45 F -.15(xe)-.15 G .95(cutes the list)
-.15 F F2(list-2)3.45 E F0 .95(as long as the last command in the list)
-3.45 F F2(list-1)144 108 Q F0 .205(returns an e)2.705 F .205
-(xit status of zero.)-.15 F(The)5.205 E F1(until)2.705 E F0 .205
-(command is identical to the)2.705 F F1(while)2.705 E F0 .205
-(command, e)2.705 F(xcept)-.15 E .599(that the test is ne)144 120 R -.05
-(ga)-.15 G(ted:).05 E F2(list-2)3.189 E F0 .599(is e)3.119 F -.15(xe)
--.15 G .6(cuted as long as the last command in).15 F F2(list-1)3.19 E F0
-.6(returns a non-zero)3.1 F -.15(ex)144 132 S .205(it status.).15 F .205
-(The e)5.205 F .205(xit status of the)-.15 F F1(while)2.705 E F0(and)
-2.705 E F1(until)2.704 E F0 .204(commands is the e)2.704 F .204
-(xit status of the last command)-.15 F -.15(exe)144 144 S(cuted in).15 E
-F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e)-.1
-E -.15(xe)-.15 G(cuted.).15 E F1(Copr)87 160.8 Q(ocesses)-.18 E F0(A)108
-172.8 Q F2(copr)3.712 E(ocess)-.45 E F0 1.212
-(is a shell command preceded by the)3.712 F F1(copr)3.713 E(oc)-.18 E F0
-(reserv)3.713 E 1.213(ed w)-.15 F 3.713(ord. A)-.1 F 1.213
-(coprocess is e)3.713 F -.15(xe)-.15 G 1.213(cuted asyn-).15 F .575(chr\
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(status of the last command e)144 84 Q -.15(xe)-.15 G
+(cuted, or zero if no condition tested true.).15 E/F1 10/Times-Bold@0 SF
+(while)108 100.8 Q/F2 10/Times-Italic@0 SF(list-1)2.5 E F0(;)A F1(do)2.5
+E F2(list-2)2.5 E F0(;)A F1(done)2.5 E(until)108 112.8 Q F2(list-1)2.5 E
+F0(;)A F1(do)2.5 E F2(list-2)2.5 E F0(;)A F1(done)2.5 E F0(The)144 124.8
+Q F1(while)3.45 E F0 .95(command continuously e)3.45 F -.15(xe)-.15 G
+.95(cutes the list).15 F F2(list-2)3.45 E F0 .95
+(as long as the last command in the list)3.45 F F2(list-1)144 136.8 Q F0
+.205(returns an e)2.705 F .205(xit status of zero.)-.15 F(The)5.205 E F1
+(until)2.705 E F0 .205(command is identical to the)2.705 F F1(while)
+2.705 E F0 .205(command, e)2.705 F(xcept)-.15 E .6(that the test is ne)
+144 148.8 R -.05(ga)-.15 G(ted:).05 E F2(list-2)3.19 E F0 .6(is e)3.12 F
+-.15(xe)-.15 G .599(cuted as long as the last command in).15 F F2
+(list-1)3.189 E F0 .599(returns a non-zero)3.099 F -.15(ex)144 160.8 S
+.204(it status.).15 F .204(The e)5.204 F .204(xit status of the)-.15 F
+F1(while)2.704 E F0(and)2.704 E F1(until)2.704 E F0 .205
+(commands is the e)2.704 F .205(xit status of the last command)-.15 F
+-.15(exe)144 172.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)
+-2.5 G(ero if none w)-2.5 E(as e)-.1 E -.15(xe)-.15 G(cuted.).15 E F1
+(Copr)87 189.6 Q(ocesses)-.18 E F0(A)108 201.6 Q F2(copr)3.713 E(ocess)
+-.45 E F0 1.213(is a shell command preceded by the)3.713 F F1(copr)3.712
+E(oc)-.18 E F0(reserv)3.712 E 1.212(ed w)-.15 F 3.712(ord. A)-.1 F 1.212
+(coprocess is e)3.712 F -.15(xe)-.15 G 1.212(cuted asyn-).15 F .574(chr\
onously in a subshell, as if the command had been terminated with the)
-108 184.8 R F1(&)3.074 E F0 .574(control operator)3.074 F 3.074(,w)-.4 G
-.574(ith a tw)-3.074 F(o-)-.1 E -.1(wa)108 196.8 S 2.5(yp).1 G
+108 213.6 R F1(&)3.075 E F0 .575(control operator)3.075 F 3.075(,w)-.4 G
+.575(ith a tw)-3.075 F(o-)-.1 E -.1(wa)108 225.6 S 2.5(yp).1 G
(ipe established between the e)-2.5 E -.15(xe)-.15 G
(cuting shell and the coprocess.).15 E(The format for a coprocess is:)
-108 213.6 Q F1(copr)144 230.4 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27
+108 242.4 Q F1(copr)144 259.2 Q(oc)-.18 E F0([)2.5 E F2 -.27(NA)C(ME).27
E F0(])A F2(command)2.5 E F0([)2.5 E F2 -.37(re)C(dir).37 E(ections)-.37
-E F0(])A .708(This creates a coprocess named)108 247.2 R F2 -.27(NA)
-3.208 G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0
-.708(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)
-3.209 E(OC)-.3 E F0(.)A F2 -.27(NA)5.709 G(ME).27 E F0 .64
-(must not be supplied if)108 259.2 R F2(command)3.14 E F0 .64(is a)3.14
-F F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G
-.64(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108
-271.2 S 1.44(rd of the simple command.).1 F 1.44
-(When the coprocess is e)6.44 F -.15(xe)-.15 G 1.44
-(cuted, the shell creates an array v).15 F 1.44(ariable \(see)-.25 F F1
-(Arrays)108 283.2 Q F0(belo)3.671 E 1.171(w\) named)-.25 F F2 -.27(NA)
-3.671 G(ME).27 E F0 1.171(in the conte)3.671 F 1.171(xt of the e)-.15 F
--.15(xe)-.15 G 1.171(cuting shell.).15 F 1.17(The standard output of)
-6.17 F F2(command)3.87 E F0(is)4.44 E 2.029
-(connected via a pipe to a \214le descriptor in the e)108 295.2 R -.15
-(xe)-.15 G 2.029
-(cuting shell, and that \214le descriptor is assigned to).15 F F2 -.27
-(NA)108 307.2 S(ME).27 E F0 3.857([0]. The)B 1.357(standard input of)
-3.857 F F2(command)4.057 E F0 1.356
-(is connected via a pipe to a \214le descriptor in the e)4.627 F -.15
-(xe)-.15 G(cuting).15 E .103
-(shell, and that \214le descriptor is assigned to)108 319.2 R F2 -.27
-(NA)2.603 G(ME).27 E F0 2.603([1]. This)B .103
-(pipe is established before an)2.603 F 2.604(yr)-.15 G .104
-(edirections spec-)-2.604 F 1.272(i\214ed by the command \(see)108 331.2
-R/F3 9/Times-Bold@0 SF(REDIRECTION)3.771 E F0(belo)3.521 E 3.771
-(w\). The)-.25 F 1.271(\214le descriptors can be utilized as ar)3.771 F
-1.271(guments to)-.18 F 1.719
-(shell commands and redirections using standard w)108 343.2 R 1.719
-(ord e)-.1 F 4.219(xpansions. Other)-.15 F 1.72(than those created to e)
-4.219 F -.15(xe)-.15 G(cute).15 E .945
-(command and process substitutions, the \214le descriptors are not a)108
-355.2 R -.25(va)-.2 G .945(ilable in subshells.).25 F .944
-(The process ID of)5.944 F .597(the shell spa)108 367.2 R .597
-(wned to e)-.15 F -.15(xe)-.15 G .597(cute the coprocess is a).15 F -.25
-(va)-.2 G .597(ilable as the v).25 F .597(alue of the v)-.25 F(ariable)
--.25 E F2 -.27(NA)3.097 G(ME).27 E F0 3.097(_PID. The)B F1(wait)3.098 E
-F0 -.2(bu)108 379.2 S(iltin command may be used to w).2 E
+E F0(])A .709(This creates a coprocess named)108 276 R F2 -.27(NA)3.208
+G(ME).27 E F0 5.708(.I)C(f)-5.708 E F2 -.27(NA)3.208 G(ME).27 E F0 .708
+(is not supplied, the def)3.208 F .708(ault name is)-.1 F F1(COPR)3.208
+E(OC)-.3 E F0(.)A F2 -.27(NA)5.708 G(ME).27 E F0 .64
+(must not be supplied if)108 288 R F2(command)3.14 E F0 .64(is a)3.14 F
+F2 .64(simple command)3.14 F F0 .64(\(see abo)3.14 F -.15(ve)-.15 G .64
+(\); otherwise, it is interpreted as the \214rst).15 F -.1(wo)108 300 S
+.349(rd of the simple command.).1 F .348(When the coprocess is e)5.348 F
+-.15(xe)-.15 G .348(cuted, the shell creates an array v).15 F .348
+(ariable \(see)-.25 F F1(Ar)2.848 E(-)-.37 E(rays)108 312 Q F0(belo)
+3.095 E .595(w\) named)-.25 F F2 -.27(NA)3.095 G(ME).27 E F0 .595
+(in the conte)3.095 F .595(xt of the e)-.15 F -.15(xe)-.15 G .595
+(cuting shell.).15 F .596(The standard output of)5.595 F F2(command)
+3.296 E F0 .596(is con-)3.866 F .387
+(nected via a pipe to a \214le descriptor in the e)108 324 R -.15(xe)
+-.15 G .387(cuting shell, and that \214le descriptor is assigned to).15
+F F2 -.27(NA)2.886 G(ME).27 E F0([0].)A .57(The standard input of)108
+336 R F2(command)3.27 E F0 .571
+(is connected via a pipe to a \214le descriptor in the e)3.84 F -.15(xe)
+-.15 G .571(cuting shell, and that).15 F 1.221
+(\214le descriptor is assigned to)108 348 R F2 -.27(NA)3.721 G(ME).27 E
+F0 3.721([1]. This)B 1.221(pipe is established before an)3.721 F 3.72
+(yr)-.15 G 1.22(edirections speci\214ed by the)-3.72 F 1.58
+(command \(see)108 360 R/F3 9/Times-Bold@0 SF(REDIRECTION)4.08 E F0
+(belo)3.83 E 4.08(w\). The)-.25 F 1.581
+(\214le descriptors can be utilized as ar)4.08 F 1.581
+(guments to shell com-)-.18 F .149
+(mands and redirections using standard w)108 372 R .149(ord e)-.1 F
+2.649(xpansions. Other)-.15 F .148(than those created to e)2.649 F -.15
+(xe)-.15 G .148(cute command and).15 F 2.462
+(process substitutions, the \214le descriptors are not a)108 384 R -.25
+(va)-.2 G 2.463(ilable in subshells.).25 F 2.463
+(The process ID of the shell)7.463 F(spa)108 396 Q 1.115(wned to e)-.15
+F -.15(xe)-.15 G 1.115(cute the coprocess is a).15 F -.25(va)-.2 G 1.115
+(ilable as the v).25 F 1.115(alue of the v)-.25 F(ariable)-.25 E F2 -.27
+(NA)3.615 G(ME).27 E F0 3.615(_PID. The)B F1(wait)3.615 E F0 -.2(bu)
+3.615 G(iltin).2 E(command may be used to w)108 408 Q
(ait for the coprocess to terminate.)-.1 E .336
-(Since the coprocess is created as an asynchronous command, the)108 396
-R F1(copr)2.836 E(oc)-.18 E F0 .335(command al)2.835 F -.1(wa)-.1 G .335
-(ys returns success.).1 F(The return status of a coprocess is the e)108
-408 Q(xit status of)-.15 E F2(command)2.5 E F0(.)A F1
-(Shell Function De\214nitions)87 424.8 Q F0 2.697(As)108 436.8 S .198
-(hell function is an object that is called lik)-2.697 F 2.698(eas)-.1 G
-.198(imple command and e)-2.698 F -.15(xe)-.15 G .198
-(cutes a compound command with).15 F 2.5(an)108 448.8 S .5 -.25(ew s)
+(Since the coprocess is created as an asynchronous command, the)108
+424.8 R F1(copr)2.836 E(oc)-.18 E F0 .336(command al)2.836 F -.1(wa)-.1
+G .336(ys returns success.).1 F
+(The return status of a coprocess is the e)108 436.8 Q(xit status of)
+-.15 E F2(command)2.5 E F0(.)A F1(Shell Function De\214nitions)87 453.6
+Q F0 2.698(As)108 465.6 S .198
+(hell function is an object that is called lik)-2.698 F 2.698(eas)-.1 G
+.198(imple command and e)-2.698 F -.15(xe)-.15 G .197
+(cutes a compound command with).15 F 2.5(an)108 477.6 S .5 -.25(ew s)
-2.5 H(et of positional parameters.).25 E
-(Shell functions are declared as follo)5 E(ws:)-.25 E F2(name)108 465.6
+(Shell functions are declared as follo)5 E(ws:)-.25 E F2(fname)108 494.4
Q F0(\(\))2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C
-(dir).37 E(ection)-.37 E F0(])A F1(function)108 477.6 Q F2(name)2.5 E F0
-([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C(dir)
-.37 E(ection)-.37 E F0(])A 1.403(This de\214nes a function named)144
-489.6 R F2(name)3.902 E F0 6.402(.T)C 1.402(he reserv)-6.402 F 1.402
-(ed w)-.15 F(ord)-.1 E F1(function)3.902 E F0 1.402(is optional.)3.902 F
-1.402(If the)6.402 F F1(function)3.902 E F0(reserv)144 501.6 Q .162
-(ed w)-.15 F .162(ord is supplied, the parentheses are optional.)-.1 F
-(The)5.162 E F2(body)2.662 E F0 .162(of the function is the compound)
-2.662 F(command)144 513.6 Q F2(compound\255command)2.784 E F0(\(see)
-3.354 E F1 .084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G
-2.584(\). That).15 F .084(command is usually a)2.584 F F2(list)144 525.6
-Q F0 .044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F
+(dir).37 E(ection)-.37 E F0(])A F1(function)108 506.4 Q F2(fname)2.5 E
+F0([\(\)])2.5 E F2(compound\255command)2.5 E F0([)2.5 E F2 -.37(re)C
+(dir).37 E(ection)-.37 E F0(])A .216(This de\214nes a function named)144
+518.4 R F2(fname)2.716 E F0 5.217(.T)C .217(he reserv)-5.217 F .217
+(ed w)-.15 F(ord)-.1 E F1(function)2.717 E F0 .217(is optional.)2.717 F
+.217(If the)5.217 F F1(function)2.717 E F0(re-)2.717 E(serv)144 530.4 Q
+.68(ed w)-.15 F .68(ord is supplied, the parentheses are optional.)-.1 F
+(The)5.68 E F2(body)3.18 E F0 .68(of the function is the compound)3.18 F
+(command)144 542.4 Q F2(compound\255command)2.784 E F0(\(see)3.354 E F1
+.084(Compound Commands)2.584 F F0(abo)2.584 E -.15(ve)-.15 G 2.584
+(\). That).15 F .084(command is usually a)2.584 F F2(list)144 554.4 Q F0
+.044(of commands between { and }, b)2.544 F .044(ut may be an)-.2 F
2.544(yc)-.15 G .044(ommand listed under)-2.544 F F1 .044
-(Compound Commands)2.544 F F0(abo)144 537.6 Q -.15(ve)-.15 G 2.902(,w)
-.15 G .402(ith one e)-2.902 F .402(xception: If the)-.15 F F1(function)
+(Compound Commands)2.544 F F0(abo)144 566.4 Q -.15(ve)-.15 G 2.901(,w)
+.15 G .401(ith one e)-2.901 F .401(xception: If the)-.15 F F1(function)
2.901 E F0(reserv)2.901 E .401(ed w)-.15 F .401(ord is used, b)-.1 F
-.401(ut the parentheses are not sup-)-.2 F .047
-(plied, the braces are required.)144 549.6 R F2(compound\255command)
-5.047 E F0 .047(is e)2.547 F -.15(xe)-.15 G .047(cuted whene).15 F -.15
-(ve)-.25 G(r).15 E F2(name)2.547 E F0 .047(is speci\214ed as the)2.547 F
-1.68(name of a simple command.)144 561.6 R 1.68(When in)6.68 F F2 1.68
-(posix mode)4.18 F F0(,)A F2(name)4.179 E F0 1.679
-(may not be the name of one of the)4.179 F(POSIX)144 573.6 Q F2 .014
-(special b)2.513 F(uiltins)-.2 E F0 5.014(.A)C .314 -.15(ny r)-5.014 H
-.014(edirections \(see).15 F F3(REDIRECTION)2.514 E F0(belo)2.264 E .014
-(w\) speci\214ed when a function is)-.25 F 1.12
-(de\214ned are performed when the function is e)144 585.6 R -.15(xe)-.15
-G 3.619(cuted. The).15 F -.15(ex)3.619 G 1.119
-(it status of a function de\214nition is).15 F .217(zero unless a synta\
-x error occurs or a readonly function with the same name already e)144
-597.6 R 2.717(xists. When)-.15 F -.15(exe)144 609.6 S .546(cuted, the e)
-.15 F .546(xit status of a function is the e)-.15 F .545
-(xit status of the last command e)-.15 F -.15(xe)-.15 G .545
-(cuted in the body).15 F(.)-.65 E(\(See)144 621.6 Q F3(FUNCTIONS)2.5 E
-F0(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF
-(COMMENTS)72 638.4 Q F0 .982(In a non-interacti)108 650.4 R 1.282 -.15
-(ve s)-.25 H .982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H
-.982(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G
-(_comments).1 E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2
-(bu)108 662.4 S .952(iltin is enabled \(see).2 F F3 .952(SHELL B)3.452 F
-(UIL)-.09 E .952(TIN COMMANDS)-.828 F F0(belo)3.202 E .952(w\), a w)-.25
-F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951
-(causes that w)3.451 F(ord)-.1 E .604
-(and all remaining characters on that line to be ignored.)108 674.4 R
+.402(ut the parentheses are not sup-)-.2 F 1.046
+(plied, the braces are required.)144 578.4 R F2(compound\255command)
+6.046 E F0 1.046(is e)3.546 F -.15(xe)-.15 G 1.046(cuted whene).15 F
+-.15(ve)-.25 G(r).15 E F2(fname)3.546 E F0 1.045(is speci\214ed as)3.546
+F .365(the name of a simple command.)144 590.4 R .365(When in)5.365 F F2
+.366(posix mode)2.865 F F0(,)A F2(fname)2.866 E F0 .366(must be a v)
+2.866 F .366(alid shell)-.25 F F2(name)2.866 E F0 .366(and may)2.866 F
+.894(not be the name of one of the POSIX)144 602.4 R F2 .893(special b)
+3.393 F(uiltins)-.2 E F0 5.893(.I)C 3.393(nd)-5.893 G(ef)-3.393 E .893
+(ault mode, a function name can be)-.1 F(an)144 614.4 Q 3.649(yu)-.15 G
+1.149(nquoted shell w)-3.649 F 1.15(ord that does not contain)-.1 F F1
+($)3.65 E F0 6.15(.A)C 1.45 -.15(ny r)-6.15 H 1.15(edirections \(see).15
+F F3(REDIRECTION)3.65 E F0(belo)3.4 E(w\))-.25 E .417(speci\214ed when \
+a function is de\214ned are performed when the function is e)144 626.4 R
+-.15(xe)-.15 G 2.916(cuted. The).15 F -.15(ex)2.916 G .416(it status).15
+F .733(of a function de\214nition is zero unless a syntax error occurs \
+or a readonly function with the same)144 638.4 R .178(name already e)144
+650.4 R 2.678(xists. When)-.15 F -.15(exe)2.678 G .178(cuted, the e).15
+F .178(xit status of a function is the e)-.15 F .177
+(xit status of the last com-)-.15 F(mand e)144 662.4 Q -.15(xe)-.15 G
+(cuted in the body).15 E 5(.\()-.65 G(See)-5 E F3(FUNCTIONS)2.5 E F0
+(belo)2.25 E -.65(w.)-.25 G(\)).65 E/F4 10.95/Times-Bold@0 SF(COMMENTS)
+72 679.2 Q F0 .982(In a non-interacti)108 691.2 R 1.282 -.15(ve s)-.25 H
+.982(hell, or an interacti).15 F 1.282 -.15(ve s)-.25 H .982
+(hell in which the).15 F F1(interacti)3.482 E -.1(ve)-.1 G(_comments).1
+E F0 .982(option to the)3.482 F F1(shopt)3.482 E F0 -.2(bu)108 703.2 S
+.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 715.2 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 686.4 Q F0
+.15 F F1(interacti)3.105 E -.1(ve)-.1 G(_com-).1 E(ments)108 727.2 Q F0
1.337(option enabled does not allo)3.837 F 3.837(wc)-.25 G 3.836
(omments. The)-3.837 F F1(interacti)3.836 E -.1(ve)-.1 G(_comments).1 E
-F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108
-698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(7)193.455 E 0 Cg EP
+F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(GNU Bash 5.1)72
+768 Q(2020 October 29)141.235 E(7)195.395 E 0 Cg EP
%%Page: 8 8
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
-/Times-Bold@0 SF -.11(QU)72 84 S -.438(OT).11 G(ING).438 E/F2 10
-/Times-Italic@0 SF(Quoting)108 96 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(interacti)108 84 Q
+.3 -.15(ve s)-.25 H(hells.).15 E/F1 10.95/Times-Bold@0 SF -.11(QU)72
+100.8 S -.438(OT).11 G(ING).438 E/F2 10/Times-Italic@0 SF(Quoting)108
+112.8 Q F0 .477(is used to remo)2.977 F .777 -.15(ve t)-.15 H .477
+(he special meaning of certain characters or w).15 F .477
+(ords to the shell.)-.1 F .478(Quoting can be)5.478 F .185
(used to disable special treatment for special characters, to pre)108
-108 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 120 Q -.15(ve)
--.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108 136.8
-R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288(listed abo)
-2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF
-(DEFINITIONS)2.788 E F0 .288
+124.8 R -.15(ve)-.25 G .185(nt reserv).15 F .184(ed w)-.15 F .184
+(ords from being recognized as)-.1 F(such, and to pre)108 136.8 Q -.15
+(ve)-.25 G(nt parameter e).15 E(xpansion.)-.15 E .288(Each of the)108
+153.6 R F2(metac)2.788 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 .288
+(listed abo)2.788 F .588 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0
+SF(DEFINITIONS)2.788 E F0 .288
(has special meaning to the shell and must be)2.538 F
-(quoted if it is to represent itself.)108 148.8 Q 1.345
-(When the command history e)108 165.6 R 1.344(xpansion f)-.15 F 1.344
+(quoted if it is to represent itself.)108 165.6 Q 1.345
+(When the command history e)108 182.4 R 1.344(xpansion f)-.15 F 1.344
(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 177.6 Q(xpansion)-.2 E F0(character)2.5 E 2.5
+-.25 F F2(history e)108 194.4 Q(xpansion)-.2 E F0(character)2.5 E 2.5
(,u)-.4 G(sually)-2.5 E/F4 10/Times-Bold@0 SF(!)2.5 E F0 2.5(,m)C
(ust be quoted to pre)-2.5 E -.15(ve)-.25 G(nt history e).15 E
-(xpansion.)-.15 E(There are three quoting mechanisms: the)108 194.4 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 2.974(An)108 211.2 S .474
-(on-quoted backslash \()-2.974 F F4(\\)A F0 2.974(\)i)C 2.974(st)-2.974
-G(he)-2.974 E F2 .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 223.2
-Q 1.554(ws, with the e)-.25 F 1.553(xception of <ne)-.15 F 4.053
+(xpansion.)-.15 E(There are three quoting mechanisms: the)108 211.2 Q F2
+(escape c)2.69 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G
+(ingle quotes, and double quotes.)-2.5 E 2.962(An)108 228 S .463
+(on-quoted backslash \()-2.962 F F4(\\)A F0 2.963(\)i)C 2.963(st)-2.963
+G(he)-2.963 E F2 .463(escape c)3.153 F(har)-.15 E(acter)-.15 E F0 5.463
+(.I).73 G 2.963(tp)-5.463 G(reserv)-2.963 E .463(es the literal v)-.15 F
+.463(alue of the ne)-.25 F .463(xt character that)-.15 F(follo)108 240 Q
+1.554(ws, with the e)-.25 F 1.553(xception of <ne)-.15 F 4.053
(wline>. If)-.25 F(a)4.053 E F4(\\)4.053 E F0(<ne)A 1.553
-(wline> pair appears, and the backslash is not itself)-.25 F 1.122
-(quoted, the)108 235.2 R F4(\\)3.622 E F0(<ne)A 1.122
+(wline> pair appears, and the backslash is not itself)-.25 F .347
+(quoted, the)108 252 R F4(\\)2.847 E F0(<ne)A .347
(wline> 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 247.2 Q(fecti)-.25 E -.15(ve)-.25 G(ly ignored\).).15 E .295
-(Enclosing characters in single quotes preserv)108 264 R .295
+-.15(ve)-.15 G 2.848(df).15 G .348(rom the input stream and ef-)-2.848 F
+(fecti)108 264 Q -.15(ve)-.25 G(ly ignored\).).15 E .295
+(Enclosing characters in single quotes preserv)108 280.8 R .295
(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 276 Q -.15(ve)-.25
-G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033
-(Enclosing characters in double quotes preserv)108 292.8 R .034
+(gle quote may not occur between single quotes, e)108 292.8 Q -.15(ve)
+-.25 G 2.5(nw).15 G(hen preceded by a backslash.)-2.5 E .033
+(Enclosing characters in double quotes preserv)108 309.6 R .034
(es the literal v)-.15 F .034
(alue of all characters within the quotes, with the)-.25 F -.15(ex)108
-304.8 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A
+321.6 S .108(ception of).15 F F4($)2.608 E F0(,)A F4<92>2.608 E F0(,)A
F4(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107
(xpansion is enabled,)-.15 F F4(!)2.607 E F0 5.107(.W)C .107
(hen the shell is in)-5.107 F F2 .107(posix mode)2.607 F F0 2.607(,t)C
-(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F 1.397
-(special meaning within double quotes, e)108 316.8 R -.15(ve)-.25 G
-3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.)
--.15 F 1.398(The characters)6.398 F F4($)3.898 E F0(and)3.898 E F4<92>
-3.898 E F0 .045(retain their special meaning within double quotes.)108
-328.8 R .044(The backslash retains its special meaning only when fol-)
-5.045 F(lo)108 340.8 Q .601(wed by one of the follo)-.25 F .602
+(he)-2.607 E F4(!)2.607 E F0 .107(has no)2.607 F .46
+(special meaning within double quotes, e)108 333.6 R -.15(ve)-.25 G 2.96
+(nw).15 G .46(hen history e)-2.96 F .46(xpansion is enabled.)-.15 F .46
+(The characters)5.46 F F4($)2.96 E F0(and)2.96 E F4<92>2.96 E F0(re-)
+2.96 E .563(tain their special meaning within double quotes.)108 345.6 R
+.562(The backslash retains its special meaning only when fol-)5.563 F
+(lo)108 357.6 Q .601(wed by one of the follo)-.25 F .602
(wing characters:)-.25 F F4($)3.102 E F0(,)A F4<92>3.102 E F0(,)A F4(")
3.935 E F0(,).833 E F4(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F4(<newline>)
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 352.8 R .131
+(double quotes by preceding it with a backslash.)108 369.6 R .131
(If enabled, history e)5.131 F .13(xpansion will be performed unless an)
-.15 F F4(!)2.63 E F0
-(appearing in double quotes is escaped using a backslash.)108 364.8 Q
+(appearing in double quotes is escaped using a backslash.)108 381.6 Q
(The backslash preceding the)5 E F4(!)2.5 E F0(is not remo)5 E -.15(ve)
--.15 G(d.).15 E(The special parameters)108 381.6 Q F4(*)2.5 E F0(and)2.5
+-.15 G(d.).15 E(The special parameters)108 398.4 Q F4(*)2.5 E F0(and)2.5
E F4(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H
(pecial meaning when in double quotes \(see).15 E F3 -.666(PA)2.5 G
-(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 398.4 S .211
+(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 415.2 S .211
(rds of the form).8 F F4($)2.711 E F0<08>A F2(string)A F0 2.711<0861>C
.211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w)-5.211 F
.211(ord e)-.1 F .212(xpands to)-.15 F F2(string)2.712 E F0 2.712(,w)C
.212(ith backslash-escaped char)-2.712 F(-)-.2 E .605
-(acters replaced as speci\214ed by the ANSI C standard.)108 410.4 R .604
+(acters replaced as speci\214ed by the ANSI C standard.)108 427.2 R .604
(Backslash escape sequences, if present, are decoded)5.605 F(as follo)
-108 422.4 Q(ws:)-.25 E F4(\\a)144 434.4 Q F0(alert \(bell\))180 434.4 Q
-F4(\\b)144 446.4 Q F0(backspace)180 446.4 Q F4(\\e)144 458.4 Q(\\E)144
-470.4 Q F0(an escape character)180 470.4 Q F4(\\f)144 482.4 Q F0
-(form feed)180 482.4 Q F4(\\n)144 494.4 Q F0(ne)180 494.4 Q 2.5(wl)-.25
-G(ine)-2.5 E F4(\\r)144 506.4 Q F0(carriage return)180 506.4 Q F4(\\t)
-144 518.4 Q F0(horizontal tab)180 518.4 Q F4(\\v)144 530.4 Q F0 -.15(ve)
-180 530.4 S(rtical tab).15 E F4(\\\\)144 542.4 Q F0(backslash)180 542.4
-Q F4<5c08>144 554.4 Q F0(single quote)180 554.4 Q F4(\\")144 566.4 Q F0
-(double quote)180 566.4 Q F4(\\?)144 578.4 Q F0(question mark)180 578.4
-Q F4(\\)144 590.4 Q F2(nnn)A F0(the eight-bit character whose v)180
-590.4 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
-(\(one to three octal digits\))2.5 E F4(\\x)144 602.4 Q F2(HH)A F0
-(the eight-bit character whose v)180 602.4 Q(alue is the he)-.25 E
+108 439.2 Q(ws:)-.25 E F4(\\a)144 451.2 Q F0(alert \(bell\))180 451.2 Q
+F4(\\b)144 463.2 Q F0(backspace)180 463.2 Q F4(\\e)144 475.2 Q(\\E)144
+487.2 Q F0(an escape character)180 487.2 Q F4(\\f)144 499.2 Q F0
+(form feed)180 499.2 Q F4(\\n)144 511.2 Q F0(ne)180 511.2 Q 2.5(wl)-.25
+G(ine)-2.5 E F4(\\r)144 523.2 Q F0(carriage return)180 523.2 Q F4(\\t)
+144 535.2 Q F0(horizontal tab)180 535.2 Q F4(\\v)144 547.2 Q F0 -.15(ve)
+180 547.2 S(rtical tab).15 E F4(\\\\)144 559.2 Q F0(backslash)180 559.2
+Q F4<5c08>144 571.2 Q F0(single quote)180 571.2 Q F4(\\")144 583.2 Q F0
+(double quote)180 583.2 Q F4(\\?)144 595.2 Q F0(question mark)180 595.2
+Q F4(\\)144 607.2 Q F2(nnn)A F0(the eight-bit character whose v)180
+607.2 Q(alue is the octal v)-.25 E(alue)-.25 E F2(nnn)2.5 E F0
+(\(one to three octal digits\))2.5 E F4(\\x)144 619.2 Q F2(HH)A F0
+(the eight-bit character whose v)180 619.2 Q(alue is the he)-.25 E
(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 614.4 Q F2(HHHH)A F0
-1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 626.4 R 1.507
+-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F4(\\u)144 631.2 Q F2(HHHH)A F0
+1.506(the Unicode \(ISO/IEC 10646\) character whose v)180 643.2 R 1.507
(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.007 E F0(\(one to four he)180 638.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F4
-(\\U)144 650.4 Q F2(HHHHHHHH)A F0 .548
-(the Unicode \(ISO/IEC 10646\) character whose v)180 662.4 R .547
+4.007 E F0(\(one to four he)180 655.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F4
+(\\U)144 667.2 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 679.2 R .547
(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.047 E(HHH)180 674.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E F4(\\c)144 686.4 Q F2(x)A F0 2.5(ac)180 686.4 S(ontrol-)
--2.5 E F2(x)A F0(character)2.5 E(The e)108 703.2 Q(xpanded result is si\
-ngle-quoted, as if the dollar sign had not been present.)-.15 E 2.64(Ad)
-108 720 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F
-F4($)A F0(")A F2(string)A F0 .14
-("\) will cause the string to be translated according)B(GNU Bash 5.0)72
-768 Q(2018 December 7)139.295 E(8)193.455 E 0 Cg EP
+3.047 E(HHH)180 691.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
+(igits\))-2.5 E F4(\\c)144 703.2 Q F2(x)A F0 2.5(ac)180 703.2 S(ontrol-)
+-2.5 E F2(x)A F0(character)2.5 E(The e)108 720 Q(xpanded result is sing\
+le-quoted, as if the dollar sign had not been present.)-.15 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(8)195.395 E 0 Cg EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .496
-(to the current locale.)108 84 R .495(If the current locale is)5.496 F
-/F1 10/Times-Bold@0 SF(C)2.995 E F0(or)2.995 E F1(POSIX)2.995 E F0 2.995
-(,t)C .495(he dollar sign is ignored.)-2.995 F .495
-(If the string is trans-)5.495 F
-(lated and replaced, the replacement is double-quoted.)108 96 Q/F2 10.95
-/Times-Bold@0 SF -.81(PA)72 112.8 S(RAMETERS).81 E F0(A)108 124.8 Q/F3
-10/Times-Italic@0 SF(par)4.592 E(ameter)-.15 E F0 .842
-(is an entity that stores v)4.072 F 3.342(alues. It)-.25 F .842
-(can be a)3.342 F F3(name)3.343 E F0 3.343(,an).18 G(umber)-3.343 E
-3.343(,o)-.4 G 3.343(ro)-3.343 G .843(ne of the special characters)
--3.343 F .823(listed belo)108 136.8 R 3.323(wu)-.25 G(nder)-3.323 E F1
-.823(Special P)3.323 F(arameters)-.1 E F0 5.823(.A)C F3(variable)-2.21 E
-F0 .823(is a parameter denoted by a)3.503 F F3(name)3.323 E F0 5.823(.A)
-.18 G -.25(va)-2.5 G .823(riable has a).25 F F3(value)108 148.8 Q F0
-.368(and zero or more)2.868 F F3(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.64(Ad)108 84 S
+.14(ouble-quoted string preceded by a dollar sign \()-2.64 F/F1 10
+/Times-Bold@0 SF($)A F0(")A/F2 10/Times-Italic@0 SF(string)A F0 .14
+("\) will cause the string to be translated according)B .31
+(to the current locale.)108 96 R(The)5.31 E F2 -.1(ge)2.809 G(tte).1 E
+(xt)-.2 E F0 .309(infrastructure performs the message catalog lookup an\
+d translation, using)2.809 F(the)108 108 Q F1(LC_MESSA)2.625 E(GES)-.55
+E F0(and)2.625 E F1(TEXTDOMAIN)2.625 E F0 .125(shell v)2.625 F 2.625
+(ariables. If)-.25 F .126(the current locale is)2.626 F F1(C)2.626 E F0
+(or)2.626 E F1(POSIX)2.626 E F0 2.626(,o)C 2.626(ri)-2.626 G 2.626(ft)
+-2.626 G(here)-2.626 E .362(are no translations a)108 120 R -.25(va)-.2
+G .362(ilable, the dollar sign is ignored.).25 F .362
+(If the string is translated and replaced, the replace-)5.362 F
+(ment is double-quoted.)108 132 Q/F3 10.95/Times-Bold@0 SF -.81(PA)72
+148.8 S(RAMETERS).81 E F0(A)108 160.8 Q F2(par)4.574 E(ameter)-.15 E F0
+.824(is an entity that stores v)4.054 F 3.324(alues. It)-.25 F .824
+(can be a)3.324 F F2(name)3.685 E F0 3.325(,an).18 G(umber)-3.325 E
+3.325(,o)-.4 G 3.325(ro)-3.325 G .825(ne of the special characters)
+-3.325 F .802(listed belo)108 172.8 R 3.302(wu)-.25 G(nder)-3.302 E F1
+.802(Special P)3.302 F(arameters)-.1 E F0 5.802(.A)C F2(variable)-2.21 E
+F0 .802(is a parameter denoted by a)3.482 F F2(name)3.662 E F0 5.801(.A)
+.18 G -.25(va)-2.5 G .801(riable has a).25 F F2(value)108 184.8 Q F0
+.368(and zero or more)2.868 F F2(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C
(ttrib)-5.369 E .369(utes are assigned using the)-.2 F F1(declar)2.869 E
(e)-.18 E F0 -.2(bu)2.869 G .369(iltin command \(see).2 F F1(declar)
-2.869 E(e)-.18 E F0(belo)108 160.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9
+2.869 E(e)-.18 E F0(belo)108 196.8 Q 2.5(wi)-.25 G(n)-2.5 E/F4 9
/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E/F5 9
-/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 177.6 S .255
+/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 213.6 S .255
(arameter is set if it has been assigned a v)-2.755 F 2.754(alue. The)
-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F 2.754
(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 F
-(may be unset only by using the)108 189.6 Q F1(unset)2.5 E F0 -.2(bu)2.5
+(may be unset only by using the)108 225.6 Q F1(unset)2.5 E F0 -.2(bu)2.5
G(iltin command \(see).2 E F4(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
--.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 206.4 Q F3(variable)2.79 E F0
-(may be assigned to by a statement of the form)2.68 E F3(name)144 223.2
-Q F0(=[)A F3(value)A F0(])A(If)108 240 Q F3(value)3.022 E F0 .232
+-.828 E F0(belo)2.25 E(w\).)-.25 E(A)108 242.4 Q F2(variable)2.79 E F0
+(may be assigned to by a statement of the form)2.68 E F2(name)144 259.2
+Q F0(=[)A F2(value)A F0(])A(If)108 276 Q F2(value)3.022 E F0 .232
(is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232
-(ariable is assigned the null string.)-.25 F(All)5.233 E F3(values)3.023
+(ariable is assigned the null string.)-.25 F(All)5.233 E F2(values)3.023
E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15
-F .515(and v)108 252 R .515(ariable e)-.25 F .515
+F .515(and v)108 288 R .515(ariable e)-.25 F .515
(xpansion, command substitution, arithmetic e)-.15 F .515
(xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see)
--3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 264 Q 2.698(w\). If)
+-3.015 E F4(EXP)3.015 E(ANSION)-.666 E F0(belo)108 300 Q 2.698(w\). If)
-.25 F .198(the v)2.698 F .198(ariable has its)-.25 F F1(integer)2.698 E
-F0(attrib)2.698 E .198(ute set, then)-.2 F F3(value)2.988 E F0 .198
+F0(attrib)2.698 E .198(ute set, then)-.2 F F2(value)2.988 E F0 .198
(is e)2.878 F -.25(va)-.25 G .199(luated as an arithmetic e).25 F .199
(xpression e)-.15 F -.15(ve)-.25 G(n).15 E .902(if the $\(\(...\)\) e)
-108 276 R .902(xpansion is not used \(see)-.15 F F1 .901
+108 312 R .902(xpansion is not used \(see)-.15 F F1 .901
(Arithmetic Expansion)3.401 F F0(belo)3.401 E 3.401(w\). W)-.25 F .901
-(ord splitting is not performed,)-.8 F 1.178(with the e)108 288 R 1.178
+(ord splitting is not performed,)-.8 F 1.178(with the e)108 324 R 1.178
(xception of)-.15 F F1("$@")3.678 E F0 1.178(as e)3.678 F 1.179
(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F1 1.179(Special P)
3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179
-(xpansion is not)-.15 F 3.649(performed. Assignment)108 300 R 1.149
+(xpansion is not)-.15 F 3.649(performed. Assignment)108 336 R 1.149
(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F1
(alias)3.648 E F0(,)A F1(declar)3.648 E(e)-.18 E F0(,)A F1(typeset)3.648
-E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 312 S(adonly).18 E F0
+E F0(,)A F1(export)3.648 E F0(,)A F1 -.18(re)108 348 S(adonly).18 E F0
3.288(,a)C(nd)-3.288 E F1(local)3.288 E F0 -.2(bu)3.288 G .788
-(iltin commands \().2 F F3(declar)A(ation)-.15 E F0 3.288
-(commands\). When)3.288 F(in)3.289 E F3 .789(posix mode)3.289 F F0 3.289
+(iltin commands \().2 F F2(declar)A(ation)-.15 E F0 3.288
+(commands\). When)3.288 F(in)3.289 E F2 .789(posix mode)3.289 F F0 3.289
(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496
-(appear in a command after one or more instances of the)108 324 R F1
+(appear in a command after one or more instances of the)108 360 R F1
(command)3.996 E F0 -.2(bu)3.996 G 1.496
-(iltin and retain these assignment).2 F(statement properties.)108 336 Q
-.376(In the conte)108 352.8 R .376
+(iltin and retain these assignment).2 F(statement properties.)108 372 Q
+.376(In the conte)108 388.8 R .376
(xt where an assignment statement is assigning a v)-.15 F .376
(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377
(x, the +=)-.15 F 1.631
-(operator can be used to append to or add to the v)108 364.8 R(ariable')
+(operator can be used to append to or add to the v)108 400.8 R(ariable')
-.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This)
--.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 376.8 S
+-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 412.8 S
.163(iltin commands such as).2 F F1(declar)2.664 E(e)-.18 E F0 .164
-(that accept assignment statements \()2.664 F F3(declar)A(ation)-.15 E
+(that accept assignment statements \()2.664 F F2(declar)A(ation)-.15 E
F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252
-(applied to a v)108 388.8 R .252(ariable for which the)-.25 F F3(inte)
+(applied to a v)108 424.8 R .252(ariable for which the)-.25 F F2(inte)
2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2
-F F3(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251
+F F2(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251
(luated as an arithmetic e).25 F(xpres-)-.15 E .05
-(sion and added to the v)108 400.8 R(ariable')-.25 E 2.55(sc)-.55 G .05
+(sion and added to the v)108 436.8 R(ariable')-.25 E 2.55(sc)-.55 G .05
(urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55
(luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E
-.459(able using compound assignment \(see)108 412.8 R F1(Arrays)2.959 E
+.459(able using compound assignment \(see)108 448.8 R F1(Arrays)2.959 E
F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G
.459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne)
-108 424.8 R 2.765(wv)-.25 G .265(alues are appended to the array be)
+108 460.8 R 2.765(wv)-.25 G .265(alues are appended to the array be)
-3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm)
-.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108
-436.8 Q -.15(xe)-.15 G 3.402(da).15 G .902
+472.8 Q -.15(xe)-.15 G 3.402(da).15 G .902
(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G<ad76>.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 448.8
-S(lued v).25 E(ariable,)-.25 E F3(value)2.5 E F0(is e)2.5 E
+5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 484.8
+S(lued v).25 E(ariable,)-.25 E F2(value)2.5 E F0(is e)2.5 E
(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G
-(alue.)-2.75 E 3.382(Av)108 465.6 S .882(ariable can be assigned the)
--3.632 F F3(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882
+(alue.)-2.75 E 3.382(Av)108 501.6 S .882(ariable can be assigned the)
+-3.632 F F2(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882
(ute using the)-.2 F F1<ad6e>3.382 E F0 .882(option to the)3.382 F F1
(declar)3.382 E(e)-.18 E F0(or)3.383 E F1(local)3.383 E F0 -.2(bu)3.383
-G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 477.6 R
+G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 513.6 R
F1(declar)2.816 E(e)-.18 E F0(and)2.816 E F1(local)2.816 E F0(belo)2.816
-E .316(w\) to create a)-.25 F F3(namer)2.815 E(ef)-.37 E F0 2.815(,o)C
-2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04
-(able. This)108 489.6 R(allo)4.04 E 1.54(ws v)-.25 F 1.54
-(ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54
-E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54
-(ariable is referenced,)-.25 F .54
-(assigned to, unset, or has its attrib)108 501.6 R .54
-(utes modi\214ed \(other than using or changing the)-.2 F F3(namer)3.04
-E(ef)-.37 E F0(attrib)3.04 E .54(ute itself\),)-.2 F .352
-(the operation is actually performed on the v)108 513.6 R .352
-(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.852(sv)
--.55 G 2.852(alue. A)-3.102 F .352(nameref is)2.852 F .972
-(commonly used within shell functions to refer to a v)108 525.6 R .971
+E .316(w\) to create a)-.25 F F2(namer)2.815 E(ef)-.37 E F0 2.815(,o)C
+2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 2.918
+(able. This)108 525.6 R(allo)2.918 E .418(ws v)-.25 F .418
+(ariables to be manipulated indirectly)-.25 F 5.419(.W)-.65 G(hene)
+-5.419 E -.15(ve)-.25 G 2.919(rt).15 G .419(he nameref v)-2.919 F .419
+(ariable is referenced, as-)-.25 F .133
+(signed to, unset, or has its attrib)108 537.6 R .132
+(utes modi\214ed \(other than using or changing the)-.2 F F2(namer)2.632
+E(ef)-.37 E F0(attrib)2.632 E .132(ute itself\), the)-.2 F 1.356
+(operation is actually performed on the v)108 549.6 R 1.357
+(ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 3.857(sv)
+-.55 G 3.857(alue. A)-4.107 F 1.357(nameref is)3.857 F .972
+(commonly used within shell functions to refer to a v)108 561.6 R .971
(ariable whose name is passed as an ar)-.25 F .971(gument to the)-.18 F
-2.5(function. F)108 537.6 R(or instance, if a v)-.15 E
+2.5(function. F)108 573.6 R(or instance, if a v)-.15 E
(ariable name is passed to a shell function as its \214rst ar)-.25 E
-(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 555.6 Q
-F0 .302(inside the function creates a nameref v)108 573.6 R(ariable)-.25
+(gument, running)-.18 E/F6 10/Courier@0 SF(declare -n ref=$1)144 591.6 Q
+F0 .302(inside the function creates a nameref v)108 609.6 R(ariable)-.25
E F1 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v)
-.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E
-3.592(ment. References)108 585.6 R 1.092(and assignments to)3.592 F F1
+3.592(ment. References)108 621.6 R 1.092(and assignments to)3.592 F F1
-.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib)
-3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143
-(ments, and attrib)108 597.6 R .144(ute modi\214cations to the v)-.2 F
+(ments, and attrib)108 633.6 R .144(ute modi\214cations to the v)-.2 F
.144(ariable whose name w)-.25 F .144(as passed as)-.1 F F1($1)2.644 E
F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144
-(ariable in a)-.25 F F1 -.25(fo)108 609.6 S(r).25 E F0 .868
+(ariable in a)-.25 F F1 -.25(fo)108 645.6 S(r).25 E F0 .868
(loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867
(ords can be a list of shell v)-.1 F .867
(ariables, and a name reference)-.25 F .509
-(will be established for each w)108 621.6 R .509
+(will be established for each w)108 657.6 R .509
(ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009
(cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108
-633.6 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F1(namer)4.193 E(ef)
--.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G
-2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692
-(ariables can reference array v)-.25 F 1.692(ariables and subscripted)
--.25 F .101(array v)108 645.6 R 2.601(ariables. Namerefs)-.25 F .101
-(can be unset using the)2.601 F F1<ad6e>2.602 E F0 .102(option to the)
-2.602 F F1(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F
-(if)2.602 E F1(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E
-.443(cuted with the name of a nameref v)108 657.6 R .442
-(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442
+669.6 Q -.15(ve)-.25 G 3.032(nt).15 G(he)-3.032 E F1(namer)3.032 E(ef)
+-.18 E F0(attrib)3.032 E 3.032(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G
+1.332 -.4(r, n).15 H .532(ameref v).4 F .531
+(ariables can reference array v)-.25 F .531(ariables and subscripted ar)
+-.25 F(-)-.2 E .533(ray v)108 681.6 R 3.033(ariables. Namerefs)-.25 F
+.533(can be unset using the)3.033 F F1<ad6e>3.033 E F0 .533
+(option to the)3.033 F F1(unset)3.033 E F0 -.2(bu)3.034 G 3.034
+(iltin. Otherwise,).2 F(if)3.034 E F1(unset)3.034 E F0 .534(is e)3.034 F
+-.15(xe)-.15 G(-).15 E .443(cuted with the name of a nameref v)108 693.6
+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 669.6 Q F1 -.2(Po)87 686.4 S(sitional P).2 E
-(arameters)-.1 E F0(A)108 698.4 Q F3 .705(positional par)4.455 F(ameter)
--.15 E F0 .706(is a parameter denoted by one or more digits, other than\
- the single digit 0.)3.935 F(Posi-)5.706 E .445
-(tional parameters are assigned from the shell')108 710.4 R 2.944(sa)
--.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1
-(ke).2 G .444(d, and may be reassigned using).1 F(the)108 722.4 Q F1
-(set)3.333 E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional\
- parameters may not be assigned to with assignment statements.)5.833 F
-(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(9)193.455 E
-0 Cg EP
+(will be unset.)108 705.6 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(9)195.395 E 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(positional parame\
-ters are temporarily replaced when a shell function is e)108 84 Q -.15
-(xe)-.15 G(cuted \(see).15 E/F1 9/Times-Bold@0 SF(FUNCTIONS)2.5 E F0
-(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\
-f more than a single digit is e)108 100.8 R 1.403
-(xpanded, it must be enclosed in)-.15 F(braces \(see)108 112.8 Q F1(EXP)
-2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E/F2 10/Times-Bold@0 SF
-(Special P)87 129.6 Q(arameters)-.1 E F0 1.674(The shell treats se)108
-141.6 R -.15(ve)-.25 G 1.674(ral parameters specially).15 F 6.675(.T)
--.65 G 1.675(hese parameters may only be referenced; assignment to)
--6.675 F(them is not allo)108 153.6 Q(wed.)-.25 E F2(*)108 165.6 Q F0
-.224(Expands to the positional parameters, starting from one.)144 165.6
-R .223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
-(quotes, each positional parameter e)144 177.6 R .662
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF -.2(Po)87 84 S(sitional P).2 E(arameters)-.1 E F0(A)108 96 Q/F2 10
+/Times-Italic@0 SF .705(positional par)4.455 F(ameter)-.15 E F0 .706(is\
+ a parameter denoted by one or more digits, other than the single digit\
+ 0.)3.935 F(Posi-)5.706 E .445
+(tional parameters are assigned from the shell')108 108 R 2.944(sa)-.55
+G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke)
+.2 G .444(d, and may be reassigned using).1 F(the)108 120 Q F1(set)3.333
+E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\
+ may not be assigned to with assignment statements.)5.833 F(The)5.834 E
+(positional parameters are temporarily replaced when a shell function i\
+s e)108 132 Q -.15(xe)-.15 G(cuted \(see).15 E/F3 9/Times-Bold@0 SF
+(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.404(When a positional par\
+ameter consisting of more than a single digit is e)108 148.8 R 1.403
+(xpanded, it must be enclosed in)-.15 F(braces \(see)108 160.8 Q F3(EXP)
+2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F1(Special P)87 177.6 Q
+(arameters)-.1 E F0 1.674(The shell treats se)108 189.6 R -.15(ve)-.25 G
+1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675
+(hese parameters may only be referenced; assignment to)-6.675 F
+(them is not allo)108 201.6 Q(wed.)-.25 E F1(*)108 213.6 Q F0 .224
+(Expands to the positional parameters, starting from one.)144 213.6 R
+.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662
+(quotes, each positional parameter e)144 225.6 R .662
(xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662
-(xts where it is performed,)-.15 F 1.082(those w)144 189.6 R 1.082
+(xts where it is performed,)-.15 F 1.082(those w)144 237.6 R 1.082
(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e)
-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E
-.914(occurs within double quotes, it e)144 201.6 R .914
+.914(occurs within double quotes, it e)144 249.6 R .914
(xpands to a single w)-.15 F .915(ord with the v)-.1 F .915
(alue of each parameter sepa-)-.25 F .891
-(rated by the \214rst character of the)144 213.6 R F1(IFS)3.39 E F0 .89
-(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F2($*)A F0
+(rated by the \214rst character of the)144 261.6 R F3(IFS)3.39 E F0 .89
+(special v)3.14 F 3.39(ariable. That)-.25 F .89(is, ")3.39 F F1($*)A F0
3.39("i)C 3.39(se)-3.39 G(qui)-3.39 E -.25(va)-.25 G .89(lent to ").25 F
-F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A
-(where)144 225.6 Q F3(c)3.532 E F0 .832
-(is the \214rst character of the v)3.642 F .832(alue of the)-.25 F F1
-(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If).25 F F1(IFS)3.332 E F0
-.833(is unset, the parameters are)3.082 F(separated by spaces.)144 237.6
-Q(If)5 E F1(IFS)2.5 E F0
+F1($1)A F2(c)A F1($2)A F2(c)A F1(...)A F0(",)A(where)144 273.6 Q F2(c)
+3.532 E F0 .832(is the \214rst character of the v)3.642 F .832
+(alue of the)-.25 F F3(IFS)3.332 E F0 -.25(va)3.082 G 3.332(riable. If)
+.25 F F3(IFS)3.332 E F0 .833(is unset, the parameters are)3.082 F
+(separated by spaces.)144 285.6 Q(If)5 E F3(IFS)2.5 E F0
(is null, the parameters are joined without interv)2.25 E
-(ening separators.)-.15 E F2(@)108 249.6 Q F0 .722
-(Expands to the positional parameters, starting from one.)144 249.6 R
+(ening separators.)-.15 E F1(@)108 297.6 Q F0 .722
+(Expands to the positional parameters, starting from one.)144 297.6 R
.722(In conte)5.722 F .722(xts where w)-.15 F .722(ord splitting is per)
--.1 F(-)-.2 E 1.165(formed, this e)144 261.6 R 1.165
+-.1 F(-)-.2 E 1.165(formed, this e)144 309.6 R 1.165
(xpands each positional parameter to a separate w)-.15 F 1.165
-(ord; if not within double quotes,)-.1 F .655(these w)144 273.6 R .655
+(ord; if not within double quotes,)-.1 F .655(these w)144 321.6 R .655
(ords are subject to w)-.1 F .655(ord splitting.)-.1 F .655(In conte)
5.655 F .655(xts where w)-.15 F .654
-(ord splitting is not performed, this)-.1 F -.15(ex)144 285.6 S .748
+(ord splitting is not performed, this)-.1 F -.15(ex)144 333.6 S .748
(pands to a single w).15 F .748
(ord with each positional parameter separated by a space.)-.1 F .748
(When the e)5.748 F(xpan-)-.15 E 1.091
-(sion occurs within double quotes, each parameter e)144 297.6 R 1.091
-(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F2
-($@)A F0 3.59("i)C(s)-3.59 E(equi)144 309.6 Q -.25(va)-.25 G .412
-(lent to ").25 F F2($1)A F0 2.912("")C F2($2)-2.912 E F0 2.912(".)C
+(sion occurs within double quotes, each parameter e)144 345.6 R 1.091
+(xpands to a separate w)-.15 F 3.59(ord. That)-.1 F 1.09(is, ")3.59 F F1
+($@)A F0 3.59("i)C(s)-3.59 E(equi)144 357.6 Q -.25(va)-.25 G .412
+(lent to ").25 F F1($1)A F0 2.912("")C F1($2)-2.912 E F0 2.912(".)C
2.912(.. If)-2.912 F .413(the double-quoted e)2.913 F .413
(xpansion occurs within a w)-.15 F .413(ord, the e)-.1 F .413
(xpansion of)-.15 F .38(the \214rst parameter is joined with the be)144
-321.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e)
--.1 F .379(xpansion of the)-.15 F 1.774
-(last parameter is joined with the last part of the original w)144 333.6
-R 4.274(ord. When)-.1 F 1.774(there are no positional)4.274 F
-(parameters, ")144 345.6 Q F2($@)A F0 2.5("a)C(nd)-2.5 E F2($@)2.5 E F0
+369.6 R .379(ginning part of the original w)-.15 F .379(ord, and the e)
+-.1 F .379(xpansion of the)-.15 F .771
+(last parameter is joined with the last part of the original w)144 381.6
+R 3.271(ord. When)-.1 F .772(there are no positional pa-)3.271 F
+(rameters, ")144 393.6 Q F1($@)A F0 2.5("a)C(nd)-2.5 E F1($@)2.5 E F0
-.15(ex)2.5 G(pand to nothing \(i.e., the).15 E 2.5(ya)-.15 G(re remo)
--2.5 E -.15(ve)-.15 G(d\).).15 E F2(#)108 357.6 Q F0
-(Expands to the number of positional parameters in decimal.)144 357.6 Q
-F2(?)108 369.6 Q F0(Expands to the e)144 369.6 Q
+-2.5 E -.15(ve)-.15 G(d\).).15 E F1(#)108 405.6 Q F0
+(Expands to the number of positional parameters in decimal.)144 405.6 Q
+F1(?)108 417.6 Q F0(Expands to the e)144 417.6 Q
(xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15
-E(ground pipeline.)-.15 E F2<ad>108 381.6 Q F0 .882
-(Expands to the current option \215ags as speci\214ed upon in)144 381.6
-R -.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G
+E(ground pipeline.)-.15 E F1<ad>108 429.6 Q F0 .882
+(Expands to the current option \215ags as speci\214ed upon in)144 429.6
+R -.2(vo)-.4 G .881(cation, by the).2 F F1(set)3.381 E F0 -.2(bu)3.381 G
.881(iltin command, or).2 F(those set by the shell itself \(such as the)
-144 393.6 Q F2<ad69>2.5 E F0(option\).)2.5 E F2($)108 405.6 Q F0 .214
-(Expands to the process ID of the shell.)144 405.6 R .214
+144 441.6 Q F1<ad69>2.5 E F0(option\).)2.5 E F1($)108 453.6 Q F0 .214
+(Expands to the process ID of the shell.)144 453.6 R .214
(In a \(\) subshell, it e)5.214 F .214
(xpands to the process ID of the current)-.15 F
-(shell, not the subshell.)144 417.6 Q F2(!)108 429.6 Q F0 .499(Expands \
+(shell, not the subshell.)144 465.6 Q F1(!)108 477.6 Q F0 .499(Expands \
to the process ID of the job most recently placed into the background, \
-whether e)144 429.6 R -.15(xe)-.15 G(cuted).15 E
-(as an asynchronous command or using the)144 441.6 Q F2(bg)2.5 E F0 -.2
-(bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E
-(w\).)-.25 E F2(0)108 453.6 Q F0 1.691
-(Expands to the name of the shell or shell script.)144 453.6 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 465.6 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 F2<ad63>3.077 E F0 .368
-(option, then)144 477.6 R F2($0)2.869 E F0 .369
-(is set to the \214rst ar)2.869 F .369(gument after the string to be e)
--.18 F -.15(xe)-.15 G .369(cuted, if one is present.).15 F(Other)5.369 E
-(-)-.2 E(wise, it is set to the \214lename used to in)144 489.6 Q -.2
-(vo)-.4 G -.1(ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25
-(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E
-F2(_)108 501.6 Q F0 .055
-(At shell startup, set to the absolute pathname used to in)144 501.6 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 513.6 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 525.6 Q .752(vious simple command e)-.25 F -.15(xe)-.15 G
-.752(cuted in the fore).15 F .751(ground, after e)-.15 F 3.251
-(xpansion. Also)-.15 F .751(set to the full path-)3.251 F .156
-(name used to in)144 537.6 R -.2(vo)-.4 G .356 -.1(ke e).2 H .156
-(ach command e).1 F -.15(xe)-.15 G .157(cuted and placed in the en).15 F
-.157(vironment e)-.4 F .157(xported to that com-)-.15 F 4.937
-(mand. When)144 549.6 R 2.436(checking mail, this parameter holds the n\
-ame of the mail \214le currently being)4.937 F(check)144 561.6 Q(ed.)-.1
-E F2(Shell V)87 578.4 Q(ariables)-.92 E F0(The follo)108 590.4 Q(wing v)
--.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA)108 607.2 S(SH).3
-E F0(Expands to the full \214lename used to in)144 607.2 Q -.2(vo)-.4 G
-.2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E F0(.)A F2 -.3(BA)108
-619.2 S(SHOPTS).3 E F0 2.548(Ac)144 631.2 S .049
-(olon-separated list of enabled shell options.)-2.548 F .049(Each w)
+whether e)144 477.6 R -.15(xe)-.15 G(cuted).15 E
+(as an asynchronous command or using the)144 489.6 Q F1(bg)2.5 E F0 -.2
+(bu)2.5 G(iltin \(see).2 E F3(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E
+(w\).)-.25 E F1(0)108 501.6 Q F0 .886
+(Expands to the name of the shell or shell script.)144 501.6 R .886
+(This is set at shell initialization.)5.886 F(If)5.887 E F1(bash)3.387 E
+F0 .887(is in-)3.387 F -.2(vo)144 513.6 S -.1(ke).2 G 2.668(dw).1 G .168
+(ith a \214le of commands,)-2.668 F F1($0)2.668 E F0 .167
+(is set to the name of that \214le.)2.667 F(If)5.167 E F1(bash)2.667 E
+F0 .167(is started with the)2.667 F F1<ad63>2.667 E F0(op-)2.667 E .895
+(tion, then)144 525.6 R F1($0)3.395 E F0 .895(is set to the \214rst ar)
+3.395 F .895(gument after the string to be e)-.18 F -.15(xe)-.15 G .896
+(cuted, if one is present.).15 F(Other)5.896 E(-)-.2 E
+(wise, it is set to the \214lename used to in)144 537.6 Q -.2(vo)-.4 G
+-.1(ke).2 G F1(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5
+H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F1
+(Shell V)87 554.4 Q(ariables)-.92 E F0(The follo)108 566.4 Q(wing v)-.25
+E(ariables are set by the shell:)-.25 E F1(_)108 583.2 Q F0 1.526
+(At shell startup, set to the pathname used to in)144 583.2 R -.2(vo)-.4
+G 1.725 -.1(ke t).2 H 1.525(he shell or shell script being e).1 F -.15
+(xe)-.15 G 1.525(cuted as).15 F .173(passed in the en)144 595.2 R .173
+(vironment or ar)-.4 F .173(gument list.)-.18 F(Subsequently)5.173 E
+2.673(,e)-.65 G .173(xpands to the last ar)-2.823 F .174
+(gument to the pre-)-.18 F .337(vious simple command e)144 607.2 R -.15
+(xe)-.15 G .337(cuted in the fore).15 F .336(ground, after e)-.15 F
+2.836(xpansion. Also)-.15 F .336(set to the full pathname)2.836 F .365
+(used to in)144 619.2 R -.2(vo)-.4 G .565 -.1(ke e).2 H .365
+(ach command e).1 F -.15(xe)-.15 G .366(cuted and placed in the en).15 F
+.366(vironment e)-.4 F .366(xported to that command.)-.15 F(When checki\
+ng mail, this parameter holds the name of the mail \214le currently bei\
+ng check)144 631.2 Q(ed.)-.1 E F1 -.3(BA)108 643.2 S(SH).3 E F0
+(Expands to the full \214lename used to in)144 643.2 Q -.2(vo)-.4 G .2
+-.1(ke t).2 H(his instance of).1 E F1(bash)2.5 E F0(.)A F1 -.3(BA)108
+655.2 S(SHOPTS).3 E F0 2.549(Ac)144 667.2 S .049
+(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 F2<ad73>2.549 E F0 1.398(option to the)144 643.2
-R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1
-1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo)
-3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144
-655.2 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as)
-2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977
-(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F
-(vironment)-.4 E(when)144 667.2 Q F2(bash)3.142 E F0 .642(starts up, ea\
-ch shell option in the list will be enabled before reading an)3.142 F
-3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 679.2 Q
-(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 691.2 S(SHPID).3 E
-F0 .187(Expands to the process ID of the current)144 703.2 R F2(bash)
-2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F
-F2($$)2.688 E F0 .188(under certain circum-)2.688 F .548
-(stances, such as subshells that do not require)144 715.2 R F2(bash)
-3.048 E F0 .548(to be re-initialized.)3.048 F .548(Assignments to)5.548
-F F1 -.27(BA)3.048 G(SHPID).27 E F0(ha)144 727.2 Q .3 -.15(ve n)-.2 H
-2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F2 -.3(BA)2.5 G(SHPID).3 E
-F0(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
-(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(10)188.455 E 0 Cg
-EP
+(gument for the)-.18 F F1<ad73>2.548 E F0 .115(option to the)144 679.2 R
+F1(shopt)2.616 E F0 -.2(bu)2.616 G .116(iltin command \(see).2 F F3 .116
+(SHELL B)2.616 F(UIL)-.09 E .116(TIN COMMANDS)-.828 F F0(belo)2.366 E
+2.616(w\). The)-.25 F .116(options ap-)2.616 F 1.067(pearing in)144
+691.2 R F3 -.27(BA)3.567 G(SHOPTS).27 E F0 1.067(are those reported as)
+3.317 F F2(on)3.797 E F0(by)3.807 E F1(shopt)3.567 E F0 6.066(.I)C 3.566
+(ft)-6.066 G 1.066(his v)-3.566 F 1.066(ariable is in the en)-.25 F
+(vironment)-.4 E(when)144 703.2 Q F1(bash)3.141 E F0 .642(starts up, ea\
+ch shell option in the list will be enabled before reading an)3.141 F
+3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 715.2 Q
+(ariable is read-only)-.25 E(.)-.65 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(10)190.395 E 0 Cg EP
%%Page: 11 11
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.3(BA)108 84 S(SH_ALIASES).3 E F0 1.195(An associati)144 96 R 1.495
--.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose members corresp\
-ond to the internal list of aliases as main-)-.25 F .16(tained by the)
-144 108 R F1(alias)2.66 E F0 -.2(bu)2.66 G 2.66(iltin. Elements).2 F .16
+SF -.3(BA)108 84 S(SHPID).3 E F0 .188
+(Expands to the process ID of the current)144 96 R F1(bash)2.688 E F0
+2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F F1($$)
+2.687 E F0 .187(under certain circum-)2.687 F .548
+(stances, such as subshells that do not require)144 108 R F1(bash)3.048
+E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 F/F2 9
+/Times-Bold@0 SF -.27(BA)3.049 G(SHPID).27 E F0(ha)144 120 Q .3 -.15
+(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G 2.5(ect. If).25 F F1 -.3(BA)2.5
+G(SHPID).3 E F0(is unset, it loses its special properties, e)2.5 E -.15
+(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
+(ubsequently reset.)-2.5 E F1 -.3(BA)108 132 S(SH_ALIASES).3 E F0 1.195
+(An associati)144 144 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195
+(ariable whose members correspond to the internal list of aliases as ma\
+in-)-.25 F .16(tained by the)144 156 R F1(alias)2.66 E F0 -.2(bu)2.66 G
+2.66(iltin. Elements).2 F .16
(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 120 R
+(array elements currently does not cause aliases to be remo)144 168 R
-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If)
-9.503 E F1 -.3(BA)144 132 S(SH_ALIASES).3 E F0
+9.502 E F1 -.3(BA)144 180 S(SH_ALIASES).3 E F0
(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1 -.3(BA)108 144 S(SH_ARGC).3 E F0 .935(An array v)144 156 R
-.935(ariable whose v)-.25 F .934
+-2.5 E F1 -.3(BA)108 192 S(SH_ARGC).3 E F0 .934(An array v)144 204 R
+.934(ariable whose v)-.25 F .934
(alues are the number of parameters in each frame of the current)-.25 F
-F1(bash)3.434 E F0 -.15(exe)144 168 S .535(cution call stack.).15 F .535
+F1(bash)3.435 E F0 -.15(exe)144 216 S .535(cution call stack.).15 F .535
(The number of parameters to the current subroutine \(shell function or\
- script)5.535 F -.15(exe)144 180 S .142(cuted with).15 F F1(.)2.642 E F0
-(or)2.642 E F1(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa)-2.642 G
-2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141
-(When a subroutine is e)5.141 F -.15(xe)-.15 G .141
-(cuted, the number of).15 F 2.63(parameters passed is pushed onto)144
-192 R/F2 9/Times-Bold@0 SF -.27(BA)5.13 G(SH_ARGC).27 E/F3 9
-/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F2 -.27(BA)5.131 G
-(SH_ARGC).27 E F0 2.631(only when in)4.881 F -.15(ex)144 204 S .284
-(tended deb).15 F .284(ugging mode \(see the description of the)-.2 F F1
-(extdeb)2.784 E(ug)-.2 E F0 .283(option to the)2.783 F F1(shopt)2.783 E
-F0 -.2(bu)2.783 G .283(iltin belo).2 F(w\).)-.25 E(Setting)144 216 Q F1
-(extdeb)3.362 E(ug)-.2 E F0 .862(after the shell has started to e)3.362
-F -.15(xe)-.15 G .863(cute a script, or referencing this v).15 F .863
-(ariable when)-.25 F F1(extdeb)144 228 Q(ug)-.2 E F0
-(is not set, may result in inconsistent v)2.5 E(alues.)-.25 E F1 -.3(BA)
-108 240 S(SH_ARGV).3 E F0 .98(An array v)144 252 R .979
-(ariable containing all of the parameters in the current)-.25 F F1(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 the top of the\
- stack; the \214rst parameter of the initial)144 264 R 1.424
-(call is at the bottom.)144 276 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 288 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets)
-6.697 F F2 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F
-2.197(xtended deb)-.15 F 2.197(ugging mode \(see the)-.2 F .966
-(description of the)144 300 R F1(extdeb)3.466 E(ug)-.2 E F0 .966
-(option to the)3.466 F F1(shopt)3.466 E F0 -.2(bu)3.466 G .966
-(iltin belo).2 F 3.466(w\). Setting)-.25 F F1(extdeb)3.465 E(ug)-.2 E F0
-.965(after the shell)3.465 F .319(has started to e)144 312 R -.15(xe)
--.15 G .319(cute a script, or referencing this v).15 F .319
-(ariable when)-.25 F F1(extdeb)2.82 E(ug)-.2 E F0 .32
-(is not set, may result in)2.82 F(inconsistent v)144 324 Q(alues.)-.25 E
-F1 -.3(BA)108 336 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144
-348 R .251(ariable e)-.25 F .251
+ script)5.535 F -.15(exe)144 228 S .141(cuted with).15 F F1(.)2.641 E F0
+(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)-2.641 G
+2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142
+(When a subroutine is e)5.142 F -.15(xe)-.15 G .142
+(cuted, the number of).15 F 1.265(parameters passed is pushed onto)144
+240 R F2 -.27(BA)3.765 G(SH_ARGC).27 E/F3 9/Times-Roman@0 SF(.)A F0
+1.265(The shell sets)5.765 F F2 -.27(BA)3.765 G(SH_ARGC).27 E F0 1.265
+(only when in e)3.515 F(x-)-.15 E .947(tended deb)144 252 R .947
+(ugging mode \(see the description of the)-.2 F F1(extdeb)3.447 E(ug)-.2
+E F0 .947(option to the)3.447 F F1(shopt)3.447 E F0 -.2(bu)3.448 G .948
+(iltin belo).2 F(w\).)-.25 E(Setting)144 264 Q F1(extdeb)3.363 E(ug)-.2
+E F0 .863(after the shell has started to e)3.363 F -.15(xe)-.15 G .862
+(cute a script, or referencing this v).15 F .862(ariable when)-.25 F F1
+(extdeb)144 276 Q(ug)-.2 E F0(is not set, may result in inconsistent v)
+2.5 E(alues.)-.25 E F1 -.3(BA)108 288 S(SH_ARGV).3 E F0 .206(An array v)
+144 300 R .206(ariable containing all of the parameters in the current)
+-.25 F F1(bash)2.706 E F0 -.15(exe)2.706 G .207(cution call stack.).15 F
+.207(The \214-)5.207 F .567(nal parameter of the last subroutine call i\
+s at the top of the stack; the \214rst parameter of the initial)144 312
+R 1.424(call is at the bottom.)144 324 R 1.424(When a subroutine is e)
+6.424 F -.15(xe)-.15 G 1.424
+(cuted, the parameters supplied are pushed onto).15 F F2 -.27(BA)144 336
+S(SH_ARGV).27 E F3(.)A F0 .854(The shell sets)5.354 F F2 -.27(BA)3.354 G
+(SH_ARGV).27 E F0 .853(only when in e)3.104 F .853(xtended deb)-.15 F
+.853(ugging mode \(see the de-)-.2 F .475(scription of the)144 348 R F1
+(extdeb)2.975 E(ug)-.2 E F0 .475(option to the)2.975 F F1(shopt)2.975 E
+F0 -.2(bu)2.975 G .475(iltin belo).2 F 2.975(w\). Setting)-.25 F F1
+(extdeb)2.976 E(ug)-.2 E F0 .476(after the shell has)2.976 F .45
+(started to e)144 360 R -.15(xe)-.15 G .45
+(cute a script, or referencing this v).15 F .45(ariable when)-.25 F F1
+(extdeb)2.95 E(ug)-.2 E F0 .45(is not set, may result in in-)2.95 F
+(consistent v)144 372 Q(alues.)-.25 E F1 -.3(BA)108 384 S(SH_ARGV0).3 E
+F0 .25(When referenced, this v)144 396 R .25(ariable e)-.25 F .251
(xpands to the name of the shell or shell script \(identical to)-.15 F
-F1($0)2.75 E F0 2.75(;s)C(ee)-2.75 E 1.224
-(the description of special parameter 0 abo)144 360 R -.15(ve)-.15 G
-3.724(\). Assignment).15 F(to)3.724 E F1 -.3(BA)3.724 G(SH_ARGV0).3 E F0
-1.225(causes the v)3.724 F(alue)-.25 E .247
-(assigned to also be assigned to)144 372 R F1($0)2.747 E F0 5.247(.I)C
-(f)-5.247 E F1 -.3(BA)2.747 G(SH_ARGV0).3 E F0 .247
-(is unset, it loses its special properties, e)2.747 F -.15(ve)-.25 G(n)
-.15 E(if it is subsequently reset.)144 384 Q F1 -.3(BA)108 396 S
-(SH_CMDS).3 E F0 .667(An associati)144 408 R .967 -.15(ve a)-.25 H .667
-(rray v).15 F .668(ariable whose members correspond to the internal has\
-h table of commands)-.25 F .196(as maintained by the)144 420 R F1(hash)
-2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195
+F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 E .041
+(the description of special parameter 0 abo)144 408 R -.15(ve)-.15 G
+2.541(\). Assignment).15 F(to)2.541 E F1 -.3(BA)2.541 G(SH_ARGV0).3 E F0
+.04(causes the v)2.541 F .04(alue as-)-.25 F .216
+(signed to also be assigned to)144 420 R F1($0)2.716 E F0 5.216(.I)C(f)
+-5.216 E F1 -.3(BA)2.716 G(SH_ARGV0).3 E F0 .216
+(is unset, it loses its special properties, e)2.716 F -.15(ve)-.25 G
+2.716(ni).15 G(f)-2.716 E(it is subsequently reset.)144 432 Q F1 -.3(BA)
+108 444 S(SH_CMDS).3 E F0 .668(An associati)144 456 R .968 -.15(ve a)
+-.25 H .668(rray v).15 F .668(ariable whose members correspond to the i\
+nternal hash table of commands)-.25 F .195(as maintained by the)144 468
+R F1(hash)2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196
(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15
(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\
-t cause command names to be remo)144 432 R -.15(ve)-.15 G 3.352(df).15 G
-.853(rom the hash)-3.352 F 2.5(table. If)144 444 R F1 -.3(BA)2.5 G
+t cause command names to be remo)144 480 R -.15(ve)-.15 G 3.352(df).15 G
+.852(rom the hash)-3.352 F 2.5(table. If)144 492 R F1 -.3(BA)2.5 G
(SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15
(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F1 -.3(BA)108 456 S(SH_COMMAND).3 E F0 1.243
-(The command currently being e)144 468 R -.15(xe)-.15 G 1.243
-(cuted or about to be e).15 F -.15(xe)-.15 G 1.242
-(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F
-(command as the result of a trap, in which case it is the command e)144
-480 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108
-492 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 504 Q
-(gument to the)-.18 E F1<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
-(cation option.).2 E F1 -.3(BA)108 516 S(SH_LINENO).3 E F0 .692
-(An array v)144 528 R .692(ariable whose members are the line numbers i\
-n source \214les where each corresponding)-.25 F .97(member of)144 540 R
+(ubsequently reset.)-2.5 E F1 -.3(BA)108 504 S(SH_COMMAND).3 E F0 1.242
+(The command currently being e)144 516 R -.15(xe)-.15 G 1.243
+(cuted or about to be e).15 F -.15(xe)-.15 G 1.243
+(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F
+.263(command as the result of a trap, in which case it is the command e)
+144 528 R -.15(xe)-.15 G .262(cuting at the time of the trap.).15 F(If)
+144 540 Q F1 -.3(BA)2.5 G(SH_COMMAND).3 E F0
+(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
+-2.5 E F1 -.3(BA)108 552 S(SH_EXECUTION_STRING).3 E F0(The command ar)
+144 564 Q(gument to the)-.18 E F1<ad63>2.5 E F0(in)2.5 E -.2(vo)-.4 G
+(cation option.).2 E F1 -.3(BA)108 576 S(SH_LINENO).3 E F0 .692
+(An array v)144 588 R .692(ariable whose members are the line numbers i\
+n source \214les where each corresponding)-.25 F .97(member of)144 600 R
F2(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si).1 G -1.9 -.4(nv o)
-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 10
/Times-Italic@0 SF($i)A F1(]})A F0 .969
-(is the line number in the source)3.469 F 14.671(\214le \()144 552 R F1
+(is the line number in the source)3.469 F 14.671(\214le \()144 612 R F1
(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171
E F1(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F1(]})A F0 -.1(wa)17.172 G
-17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 564 Q(ASH_LINENO[)
+17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 624 Q(ASH_LINENO[)
-.3 E F4($i-1)A F1(]})A F0 .115
(if referenced within another shell function\).)2.615 F(Use)5.115 E F2
(LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144
-576 Q(.)-.55 E F1 -.3(BA)108 588 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
--.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 600 S 1.57(olon-separated list of\
+636 Q(.)-.55 E F1 -.3(BA)108 648 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E
+-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 660 S 1.57(olon-separated list of\
directories in which the shell looks for dynamically loadable b)-4.07 F
-(uiltins)-.2 E(speci\214ed by the)144 612 Q F1(enable)2.5 E F0(command.)
-2.5 E F1 -.3(BA)108 624 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144
-636 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506
+(uiltins)-.2 E(speci\214ed by the)144 672 Q F1(enable)2.5 E F0(command.)
+2.5 E F1 -.3(BA)108 684 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144
+696 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506
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 648 R .007
+(conditional com-)2.505 F 2.506(mand. The)144 708 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 660 R(x)-.15 E
-F4(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F
-F4(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5
-(sion. This)144 672 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E
-F1 -.3(BA)108 684 S(SH_SOURCE).3 E F0 .125(An array v)144 696 R .125(ar\
-iable whose members are the source \214lenames where the corresponding \
-shell function)-.25 F .781(names in the)144 708 R F2(FUNCN)3.28 E(AME)
--.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78
-(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A
-F0(is)3.28 E(de\214ned in the \214le)144 720 Q F1(${B)2.5 E(ASH_SOURCE[)
--.3 E F4($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[)
--.3 E F4($i+1)A F1(]})A F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(11)188.455 E 0 Cg EP
+-.15 F(xpression.)-.15 E 4.331(The element with inde)144 720 R(x)-.15 E
+F4(n)6.831 E F0 4.331(is the portion of the string matching the)6.831 F
+F4(n)6.83 E F0 4.33(th parenthesized)B(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(11)190.395 E 0 Cg EP
%%Page: 12 12
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.3(BA)108 84 S(SH_SUBSHELL).3 E F0 .296
-(Incremented by one within each subshell or subshell en)144 96 R .296
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sube)144 84 Q
+(xpression.)-.15 E/F1 10/Times-Bold@0 SF -.3(BA)108 96 S(SH_SOURCE).3 E
+F0 .125(An array v)144 108 R .125(ariable whose members are the source \
+\214lenames where the corresponding shell function)-.25 F .781
+(names in the)144 120 R/F2 9/Times-Bold@0 SF(FUNCN)3.28 E(AME)-.18 E F0
+.78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78
+(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E/F3 10
+/Times-Italic@0 SF($i)A F1(]})A F0(is)3.28 E(de\214ned in the \214le)144
+132 Q F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i)A F1(]})A F0(and called from)
+2.5 E F1(${B)2.5 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)
+108 144 S(SH_SUBSHELL).3 E F0 .296
+(Incremented by one within each subshell or subshell en)144 156 R .296
(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G
-(cuting).15 E(in that en)144 108 Q 2.5(vironment. The)-.4 F(initial v)
-2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 120 S(SH_VERSINFO).3 E F0 2.645
-(Ar)144 132 S .145(eadonly array v)-2.645 F .144
-(ariable whose members hold v)-.25 F .144
-(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144
-(.T)C(he)-5.144 E -.25(va)144 144 S
+(cuting).15 E 1.277(in that en)144 168 R 3.777(vironment. The)-.4 F
+1.277(initial v)3.777 F 1.277(alue is 0.)-.25 F(If)6.277 E F1 -.3(BA)
+3.777 G(SH_SUBSHELL).3 E F0 1.276(is unset, it loses its special)3.777 F
+(properties, e)144 180 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5
+(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 -.3(BA)108 192 S
+(SH_VERSINFO).3 E F0 2.644(Ar)144 204 S .144(eadonly array v)-2.644 F
+.144(ariable whose members hold v)-.25 F .144
+(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145
+(.T)C(he)-5.145 E -.25(va)144 216 S
(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3
-(BA)144 162 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 162 Q
-(ersion number \(the)-.15 E/F2 10/Times-Italic@0 SF -.37(re)2.5 G(lease)
-.37 E F0(\).)A F1 -.3(BA)144 174 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0
-(The minor v)264 174 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1
-E F0(\).)A F1 -.3(BA)144 186 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0
-(The patch le)264 186 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 198 S
-(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 198 Q(uild v)-.2 E
-(ersion.)-.15 E F1 -.3(BA)144 210 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0
-(The release status \(e.g.,)264 210 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA)
-144 222 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 222 Q(alue of)
--.25 E/F3 9/Times-Bold@0 SF(MA)2.5 E(CHTYPE)-.495 E/F4 9/Times-Roman@0
-SF(.)A F1 -.3(BA)108 234 S(SH_VERSION).3 E F0
-(Expands to a string describing the v)144 246 Q
+(BA)144 234 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 234 Q
+(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3
+(BA)144 246 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 246 Q
+(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA)
+144 258 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 258 Q -.15
+(ve)-.25 G(l.).15 E F1 -.3(BA)144 270 S(SH_VERSINFO[).3 E F0(3)A F1(])A
+F0(The b)264 270 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 282 S
+(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 282 Q
+F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 294 S(SH_VERSINFO[).3 E F0(5)A F1
+(])A F0(The v)264 294 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9
+/Times-Roman@0 SF(.)A F1 -.3(BA)108 306 S(SH_VERSION).3 E F0
+(Expands to a string describing the v)144 318 Q
(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108
-258 Q(ORD)-.1 E F0 .396(An inde)144 270 R 2.896(xi)-.15 G(nto)-2.896 E
+330 Q(ORD)-.1 E F0 .397(An inde)144 342 R 2.897(xi)-.15 G(nto)-2.897 E
F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396
-(ord containing the current cursor position.)-.1 F .397(This v)5.397 F
-(ari-)-.25 E 1.181(able is a)144 282 R -.25(va)-.2 G 1.181
+(ord containing the current cursor position.)-.1 F .396(This v)5.396 F
+(ari-)-.25 E 1.18(able is a)144 354 R -.25(va)-.2 G 1.181
(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 294 Q(ogrammable Completion)-.18 E
-F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 306 Q F0(The k)144 318 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 F1(Pr)144 366 Q(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 378 Q F0(The k)144 390 Q .3
-.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 330 Q F0 1.207
-(The current command line.)144 342 R 1.208(This v)6.208 F 1.208
+H(he current completion function.).1 E F1(COMP_LINE)108 402 Q F0 1.208
+(The current command line.)144 414 R 1.208(This v)6.208 F 1.208
(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 354 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 366 Q(w\).)-.25 E F1(COMP_POINT)108 378 Q F0 .666(The inde)
-144 390 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
+(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F
+1.037(mands in)144 426 R -.2(vo)-.4 G -.1(ke).2 G 3.537(db).1 G 3.537
+(yt)-3.537 G 1.037(he programmable completion f)-3.537 F 1.037
+(acilities \(see)-.1 F F1(Pr)3.537 E 1.037(ogrammable Completion)-.18 F
+F0(be-)3.537 E(lo)144 438 Q(w\).)-.25 E F1(COMP_POINT)108 450 Q F0 .667
+(The inde)144 462 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666
+(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166
(ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15
-F .667(If the)5.667 F .535
+F .666(If the)5.666 F .534
(current cursor position is at the end of the current command, the v)144
-402 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1
-(${#COMP_LINE})144 414 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 426 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
+474 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1
+(${#COMP_LINE})144 486 Q F0 5.705(.T)C .705(his v)-5.705 F .704
+(ariable is a)-.25 F -.25(va)-.2 G .704
+(ilable only in shell functions and e).25 F .704(xternal commands in-)
+-.15 F -.2(vo)144 498 S -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G
(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
-438 Q F0 .042(Set to an inte)144 450 R .042(ger v)-.15 F .041(alue corr\
+510 Q F0 .041(Set to an inte)144 522 R .041(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 462 R F2 -.5(TA)2.837 G(B).5 E F0
-2.837(,f)C .337(or normal completion,)-2.837 F F2(?)2.837 E F0 2.837(,f)
-C .337(or listing completions after successi)-2.837 F .638 -.15(ve t)
--.25 H(abs,).15 E F2(!)144 474 Q F0 4.092(,f)C 1.592
-(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np)
--4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092
-E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092
-F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 486 R F2(%)4.052 E
-F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v)6.552 F
-1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552
-(ilable only in shell functions and).25 F -.15(ex)144 498 S 2.929
-(ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429
-(yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929
-(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144
-510 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 522 Q(ORDBREAKS)-.1 E F0
-1.335(The set of characters that the)144 534 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 546 R F3(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626
-(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G
-3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G
-(ubse-)-3.125 E(quently reset.)144 558 Q F1(COMP_W)108 570 Q(ORDS)-.1 E
-F0 .653(An array v)144 582 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 594 R
-1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332
-G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3
-(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144
-606 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 618 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 630 Q(OC)-.3 E F0 .169(An array v)
-144 642 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E
+-.25 F .338(function to be called:)144 534 R F3 -.5(TA)2.837 G(B).5 E F0
+2.837(,f)C .337(or normal completion,)-2.837 F F3(?)2.837 E F0 2.837(,f)
+C .337(or listing completions after successi)-2.837 F .637 -.15(ve t)
+-.25 H(abs,).15 E F3(!)144 546 Q F0 3.067(,f)C .567
+(or listing alternati)-3.067 F -.15(ve)-.25 G 3.067(so).15 G 3.067(np)
+-3.067 G .567(artial w)-3.067 F .567(ord completion,)-.1 F F3(@)3.067 E
+F0 3.067(,t)C 3.067(ol)-3.067 G .567(ist completions if the w)-3.067 F
+.567(ord is not un-)-.1 F .418(modi\214ed, or)144 558 R F3(%)2.918 E F0
+2.918(,f)C .418(or menu completion.)-2.918 F .417(This v)5.417 F .417
+(ariable is a)-.25 F -.25(va)-.2 G .417
+(ilable only in shell functions and e).25 F(xter)-.15 E(-)-.2 E .704
+(nal commands in)144 570 R -.2(vo)-.4 G -.1(ke).2 G 3.204(db).1 G 3.204
+(yt)-3.204 G .704(he programmable completion f)-3.204 F .704
+(acilities \(see)-.1 F F1(Pr)3.204 E .704(ogrammable Comple-)-.18 F
+(tion)144 582 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 594 Q(ORDBREAKS)
+-.1 E F0 1.336(The set of characters that the)144 606 R F1 -.18(re)3.836
+G(adline).18 E F0 1.336(library treats as w)3.836 F 1.335
+(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If)
+144 618 R F2(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626
+(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G
+3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G
+(ubse-)-3.126 E(quently reset.)144 630 Q F1(COMP_W)108 642 Q(ORDS)-.1 E
+F0 .654(An array v)144 654 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E
+F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w)
+-.25 F .653(ords in the current command)-.1 F 3.191(line. The)144 666 R
+.692(line is split into w)3.192 F .692(ords as)-.1 F F1 -.18(re)3.192 G
+(adline).18 E F0 -.1(wo)3.192 G .692(uld split it, using).1 F F2(COMP_W)
+3.192 E(ORDBREAKS)-.09 E F0 .692(as de-)2.942 F 1.558(scribed abo)144
+678 R -.15(ve)-.15 G 6.558(.T).15 G 1.558(his v)-6.558 F 1.558
+(ariable is a)-.25 F -.25(va)-.2 G 1.558
+(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 4.057
+(db).1 G 4.057(yt)-4.057 G 1.557(he programmable)-4.057 F(completion f)
+144 690 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E
+F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 702 Q(OC)-.3 E F0 .168(An array v)
+144 714 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E
.169
(w\) created to hold the \214le descriptors for output from and input)
--.25 F(to an unnamed coprocess \(see)144 654 Q F1(Copr)2.5 E(ocesses)
--.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 666 Q -.55(AC)
--.9 G(K).55 E F0 2.26(An array v)144 678 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 690 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 702 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 714 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 726 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.851
-(ni).15 G(f)-2.851 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(12)
-188.455 E 0 Cg EP
+-.25 F(to an unnamed coprocess \(see)144 726 Q F1(Copr)2.5 E(ocesses)
+-.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(12)190.395 E 0 Cg EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(it is subsequently reset.)144 84 Q/F1 10/Times-Bold@0 SF(EPOCHREAL)108
-96 Q(TIME)-.92 E F0 .338(Each time this parameter is referenced, it e)
-144 108 R .337(xpands to the number of seconds since the Unix Epoch)-.15
-F(\(see)144 120 Q/F2 10/Times-Italic@0 SF(time)2.916 E F0 .416
-(\(3\)\) as a \215oating point v)B .417
-(alue with micro-second granularity)-.25 F 5.417(.A)-.65 G .417
-(ssignments to)-5.417 F/F3 9/Times-Bold@0 SF(EPOCHRE-)2.917 E(AL)144 132
-Q(TIME)-.828 E F0 1.091(are ignored.)3.341 F(If)6.091 E F3(EPOCHREAL)
-3.59 E(TIME)-.828 E F0 1.09
-(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G 3.59
-(ni).15 G 3.59(fi)-3.59 G 3.59(ti)-3.59 G(s)-3.59 E(subsequently reset.)
-144 144 Q F1(EPOCHSECONDS)108 156 Q F0 .337
-(Each time this parameter is referenced, it e)144 168 R .338
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(DIRST)108 84 Q -.55(AC)-.9 G(K).55 E F0 .79(An array v)144 96 R .79
+(ariable \(see)-.25 F F1(Arrays)3.29 E F0(belo)3.289 E .789
+(w\) containing the current contents of the directory stack.)-.25 F(Di-)
+5.789 E .099(rectories appear in the stack in the order the)144 108 R
+2.599(ya)-.15 G .099(re displayed by the)-2.599 F F1(dirs)2.599 E F0 -.2
+(bu)2.599 G 2.599(iltin. Assigning).2 F .099(to mem-)2.599 F .84
+(bers of this array v)144 120 R .84
+(ariable may be used to modify directories already in the stack, b)-.25
+F .84(ut the)-.2 F F1(pushd)3.34 E F0(and)144 132 Q F1(popd)3.45 E F0
+-.2(bu)3.45 G .951(iltins must be used to add and remo).2 F 1.251 -.15
+(ve d)-.15 H 3.451(irectories. Assignment).15 F .951(to this v)3.451 F
+.951(ariable will)-.25 F .379(not change the current directory)144 144 R
+5.379(.I)-.65 G(f)-5.379 E/F2 9/Times-Bold@0 SF(DIRST)2.879 E -.495(AC)
+-.81 G(K).495 E F0 .378(is unset, it loses its special properties, e)
+2.629 F -.15(ve)-.25 G 2.878(ni).15 G 2.878(fi)-2.878 G 2.878(ti)-2.878
+G(s)-2.878 E(subsequently reset.)144 156 Q F1(EPOCHREAL)108 168 Q(TIME)
+-.92 E F0 .337(Each time this parameter is referenced, it e)144 180 R
+.338(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)
+144 192 Q/F3 10/Times-Italic@0 SF(time)2.917 E F0 .417
+(\(3\)\) as a \215oating point v)B .416
+(alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416
+(ssignments to)-5.416 F F2(EPOCHRE-)2.916 E(AL)144 204 Q(TIME)-.828 E F0
+1.09(are ignored.)3.34 F(If)6.09 E F2(EPOCHREAL)3.59 E(TIME)-.828 E F0
+1.09(is unset, it loses its special properties, e)3.34 F -.15(ve)-.25 G
+3.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s)-3.591 E
+(subsequently reset.)144 216 Q F1(EPOCHSECONDS)108 228 Q F0 .338
+(Each time this parameter is referenced, it e)144 240 R .337
(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144
-180 Q F2(time)4.042 E F0 4.042(\(3\)\). Assignments)B(to)4.042 E F3
-(EPOCHSECONDS)4.042 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3
-(EPOCHSECONDS)4.041 E F0 1.541(is unset, it)3.791 F
-(loses its special properties, e)144 192 Q -.15(ve)-.25 G 2.5(ni).15 G
+252 Q F3(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F2
+(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F2
+(EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 F
+(loses its special properties, e)144 264 Q -.15(ve)-.25 G 2.5(ni).15 G
2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1
-(EUID)108 204 Q F0 1.103(Expands to the ef)144 204 R(fecti)-.25 E 1.403
+(EUID)108 276 Q F0 1.104(Expands to the ef)144 276 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 216 Q(.)-.65 E F1(FUNCN)108 228 Q(AME)
--.2 E F0 .479(An array v)144 240 R .479
+1.103(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103
+(ariable is)-.25 F(readonly)144 288 Q(.)-.65 E F1(FUNCN)108 300 Q(AME)
+-.2 E F0 .478(An array v)144 312 R .479
(ariable containing the names of all shell functions currently in the e)
--.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276
-(The element with inde)144 252 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 264 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 276 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 288 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
-G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144
-306 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
+-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277
+(The element with inde)144 324 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276
+(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15
+G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384
+(element \(the one with the highest inde)144 336 R .384(x\) is)-.15 F/F4
+10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385
+(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076
+(tion is e)144 348 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to)
+2.576 E F2(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H
+2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F2(FUNCN)2.575 E
+(AME)-.18 E F0 .075(is unset, it loses its)2.325 F
+(special properties, e)144 360 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .11(This v)144
+378 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO)
.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 318 S(ME).2 E F0
+(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 390 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 330 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
+(to describe the)3.904 F .012(call stack.)144 402 R -.15(Fo)5.012 G
+2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F3($i)A
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 342 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 354 Q F1(GR)108 366 Q(OUPS)-.3 E F0 1.229
-(An array v)144 378 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 390 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
+-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 1.184
+(at line number)144 414 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F3($i)A F1
+(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G
+1.183(iltin displays the current call stack using).2 F
+(this information.)144 426 Q F1(GR)108 438 Q(OUPS)-.3 E F0 1.228
+(An array v)144 450 R 1.228(ariable containing the list of groups of wh\
+ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E
+.572(ments to)144 462 R F2(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872
+-.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F2
(GR)3.072 E(OUPS)-.27 E F0 .572
(is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G
-3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E
-(subsequently reset.)144 402 Q F1(HISTCMD)108 414 Q F0 .356
-(The history number)144 426 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 438 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 450 Q(AME)-.2 E F0
-(Automatically set to the name of the current host.)144 462 Q F1
-(HOSTTYPE)108 474 Q F0 .222(Automatically set to a string that uniquely\
- describes the type of machine on which)144 486 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 498 R(def)
-2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 510 Q F0 1.408(Each\
- time this parameter is referenced, the shell substitutes a decimal num\
-ber representing the)144 522 R .078(current sequential line number \(st\
-arting with 1\) within a script or function.)144 534 R .079
-(When not in a script or)5.078 F .307(function, the v)144 546 R .307
+3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E
+(subsequently reset.)144 474 Q F1(HISTCMD)108 486 Q F0 2.81
+(The history number)144 498 R 5.31(,o)-.4 G 5.31(ri)-5.31 G(nde)-5.31 E
+5.311(xi)-.15 G 5.311(nt)-5.311 G 2.811
+(he history list, of the current command.)-5.311 F 2.811(Assignments to)
+7.811 F F2(HISTCMD)144 510 Q F0 1.135(are ignored.)3.385 F(If)6.135 E F2
+(HISTCMD)3.635 E F0 1.135(is unset, it loses its special properties, e)
+3.385 F -.15(ve)-.25 G 3.634(ni).15 G 3.634(fi)-3.634 G 3.634(ti)-3.634
+G 3.634(ss)-3.634 G(ubse-)-3.634 E(quently reset.)144 522 Q F1(HOSTN)108
+534 Q(AME)-.2 E F0(Automatically set to the name of the current host.)
+144 546 Q F1(HOSTTYPE)108 558 Q F0 .222(Automatically set to a string t\
+hat uniquely describes the type of machine on which)144 570 R F1(bash)
+2.723 E F0 .223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144
+582 R(def)2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 594 Q F0
+1.408(Each time this parameter is referenced, the shell substitutes a d\
+ecimal number representing the)144 606 R .078(current sequential line n\
+umber \(starting with 1\) within a script or function.)144 618 R .079
+(When not in a script or)5.078 F .307(function, the v)144 630 R .307
(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E
-F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F
-(special properties, e)144 558 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 570 Q
+F2(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F
+(special properties, e)144 642 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA)108 654 Q
(CHTYPE)-.55 E F0 .898(Automatically set to a string that fully describ\
-es the system type on which)144 582 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 594 Q F2
+es the system type on which)144 666 R F1(bash)3.398 E F0 .899(is e)3.398
+F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 678 Q F3
(cpu-company-system)2.5 E F0 2.5(format. The)2.5 F(def)2.5 E
-(ault is system-dependent.)-.1 E F1(MAPFILE)108 606 Q F0 .294
-(An array v)144 618 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0
+(ault is system-dependent.)-.1 E F1(MAPFILE)108 690 Q F0 .294
+(An array v)144 702 R .294(ariable \(see)-.25 F F1(Arrays)2.794 E F0
(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 630 S(riable name is supplied.).25 E F1
-(OLDPWD)108 642 Q F0(The pre)144 654 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 666 Q(ARG)-.9 E F0 1.626(The v)144 678 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 F3
-(SHELL)4.127 E -.09(BU)144 690 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(OPTIND)108 702 Q F0 1.652(The inde)144 714 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 F3(SHELL)4.151 E -.09(BU)144 726
-S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 5.0)
-72 768 Q(2018 December 7)139.295 E(13)188.455 E 0 Cg EP
+(iltin when no).2 F -.25(va)144 714 S(riable name is supplied.).25 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(13)190.395 E 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(OSTYPE)108 84 Q F0 .329(Automatically set to a string that describes\
- the operating system on which)144 96 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 108 Q
-(ault is system-dependent.)-.1 E F1(PIPEST)108 120 Q -.95(AT)-.9 G(US)
-.95 E F0 .61(An array v)144 132 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
+SF(OLDPWD)108 84 Q F0(The pre)144 96 Q(vious w)-.25 E
+(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
+(OPT)108 108 Q(ARG)-.9 E F0 1.626(The v)144 120 R 1.627
+(alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F
+F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F/F2 9
+/Times-Bold@0 SF(SHELL)4.127 E -.09(BU)144 132 S(IL).09 E(TIN COMMANDS)
+-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OPTIND)108 144 Q F0 1.652
+(The inde)144 156 R 4.152(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152
+F 1.652(xt ar)-.15 F 1.652(gument to be processed by the)-.18 F F1
+(getopts)4.151 E F0 -.2(bu)4.151 G 1.651(iltin command \(see).2 F F2
+(SHELL)4.151 E -.09(BU)144 168 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
+2.25 E(w\).)-.25 E F1(OSTYPE)108 180 Q F0 .329(Automatically set to a s\
+tring that describes the operating system on which)144 192 R F1(bash)
+2.83 E F0 .33(is e)2.83 F -.15(xe)-.15 G 2.83(cuting. The).15 F(def)144
+204 Q(ault is system-dependent.)-.1 E F1(PIPEST)108 216 Q -.95(AT)-.9 G
+(US).95 E F0 .61(An array v)144 228 R .61(ariable \(see)-.25 F F1
+(Arrays)3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61
(xit status v)-.15 F .61(alues from the processes in)-.25 F
-(the most-recently-e)144 144 Q -.15(xe)-.15 G(cuted fore).15 E
+(the most-recently-e)144 240 Q -.15(xe)-.15 G(cuted fore).15 E
(ground pipeline \(which may contain only a single command\).)-.15 E F1
-(PPID)108 156 Q F0(The process ID of the shell')144 156 Q 2.5(sp)-.55 G
+(PPID)108 252 Q F0(The process ID of the shell')144 252 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 168 Q F0(The current w)144 168 Q
+F1(PWD)108 264 Q F0(The current w)144 264 Q
(orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1
-(RANDOM)108 180 Q F0 .565
-(Each time this parameter is referenced, a random inte)144 192 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 204
-R .01(alue to)-.25 F/F2 9/Times-Bold@0 SF(RANDOM)2.51 E/F3 9
-/Times-Roman@0 SF(.)A F0(If)4.51 E F2(RANDOM)2.51 E F0(is)2.26 E
-(unset, it loses its special properties, e)144 216 Q -.15(ve)-.25 G 2.5
-(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
--2.5 E F1(READLINE_LINE)108 228 Q F0 1.546(The contents of the)144 240 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.547(SHELL B)4.047 F(UIL)-.09
-E 1.547(TIN COM-)-.828 F(MANDS)144 252 Q F0(belo)2.25 E(w\).)-.25 E F1
-(READLINE_POINT)108 264 Q F0 .314
-(The position of the insertion point in the)144 276 R F1 -.18(re)2.813 G
+(RANDOM)108 276 Q F0 .417(Each time this parameter is referenced, it e)
+144 288 R .417(xpands to a random inte)-.15 F .417
+(ger between 0 and 32767.)-.15 F(As-)5.417 E .551(signing a v)144 300 R
+.551(alue to)-.25 F F2(RANDOM)3.051 E F0 .551
+(initializes \(seeds\) the sequence of random numbers.)2.801 F(If)5.55 E
+F2(RANDOM)3.05 E F0(is)2.8 E(unset, it loses its special properties, e)
+144 312 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5
+(ss)-2.5 G(ubsequently reset.)-2.5 E F1(READLINE_LINE)108 324 Q F0 1.546
+(The contents of the)144 336 R F1 -.18(re)4.047 G(adline).18 E F0 1.547
+(line b)4.047 F(uf)-.2 E(fer)-.25 E 4.047(,f)-.4 G 1.547(or use with)
+-4.047 F/F3 10/Courier@0 SF 1.547(bind -x)4.047 F F0(\(see)4.047 E F2
+1.547(SHELL B)4.047 F(UIL)-.09 E 1.547(TIN COM-)-.828 F(MANDS)144 348 Q
+F0(belo)2.25 E(w\).)-.25 E F1(READLINE_MARK)108 360 Q F0 .107
+(The position of the mark \(sa)144 372 R -.15(ve)-.2 G 2.607(di).15 G
+.107(nsertion point\) in the)-2.607 F F1 -.18(re)2.606 G(adline).18 E F0
+.106(line b)2.606 F(uf)-.2 E(fer)-.25 E 2.606(,f)-.4 G .106(or use with)
+-2.606 F F3 .106(bind -x)2.606 F F0(\(see)144 384 Q F2 1.016(SHELL B)
+3.516 F(UIL)-.09 E 1.016(TIN COMMANDS)-.828 F F0(belo)3.266 E 3.516
+(w\). The)-.25 F 1.017(characters between the insertion point and the)
+3.516 F(mark are often called the)144 396 Q/F4 10/Times-Italic@0 SF -.37
+(re)2.5 G(gion)-.03 E F0(.)A F1(READLINE_POINT)108 408 Q F0 .314
+(The position of the insertion point in the)144 420 R F1 -.18(re)2.813 G
(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 .313(bind -x)2.813 F F0(\(see)2.813 E F2
-(SHELL)2.813 E -.09(BU)144 288 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
-2.25 E(w\).)-.25 E F1(REPL)108 300 Q(Y)-.92 E F0
-(Set to the line of input read by the)144 312 Q F1 -.18(re)2.5 G(ad).18
+.313(or use with)-2.813 F F3 .313(bind -x)2.813 F F0(\(see)2.813 E F2
+(SHELL)2.813 E -.09(BU)144 432 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)
+2.25 E(w\).)-.25 E F1(REPL)108 444 Q(Y)-.92 E F0
+(Set to the line of input read by the)144 456 Q F1 -.18(re)2.5 G(ad).18
E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.)
--.18 E F1(SECONDS)108 324 Q F0 .795(Each time this parameter is referen\
-ced, the number of seconds since shell in)144 336 R -.2(vo)-.4 G .795
-(cation is returned.).2 F .713(If a v)144 348 R .712
-(alue is assigned to)-.25 F F2(SECONDS)3.212 E F3(,)A F0 .712(the v)
-2.962 F .712(alue returned upon subsequent references is the number)-.25
-F .407(of seconds since the assignment plus the v)144 360 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 372 Q -.15(ve)
--.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G
-(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 384 Q F0 3.263(Ac)144 396 S
-.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w)
+-.18 E F1(SECONDS)108 468 Q F0 .795(Each time this parameter is referen\
+ced, the number of seconds since shell in)144 480 R -.2(vo)-.4 G .795
+(cation is returned.).2 F .713(If a v)144 492 R .712
+(alue is assigned to)-.25 F F2(SECONDS)3.212 E/F5 9/Times-Roman@0 SF(,)A
+F0 .712(the v)2.962 F .712
+(alue returned upon subsequent references is the number)-.25 F .627
+(of seconds since the assignment plus the v)144 504 R .627
+(alue assigned.)-.25 F .628(The number of seconds at shell in)5.627 F
+-.2(vo)-.4 G(ca-).2 E .458(tion and the current time is al)144 516 R -.1
+(wa)-.1 G .458(ys determined by querying the system clock.).1 F(If)5.457
+E F2(SECONDS)2.957 E F0 .457(is un-)2.707 F
+(set, it loses its special properties, e)144 528 Q -.15(ve)-.25 G 2.5
+(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)
+-2.5 E F1(SHELLOPTS)108 540 Q F0 3.262(Ac)144 552 S .763
+(olon-separated list of enabled shell options.)-3.262 F .763(Each w)
5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763
-(gument for the)-.18 F F1<ad6f>144 408 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 420 R F2
-(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10
-/Times-Italic@0 SF(on)2.749 E F0(by)2.759 E F1 .019(set \255o)2.519 F F0
-5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .019
-(ariable is in the en)-.25 F(vironment)-.4 E(when)144 432 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 444 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 456 Q
-(VL)-.92 E F0(Incremented by one each time an instance of)144 468 Q F1
-(bash)2.5 E F0(is started.)2.5 E F1(UID)108 480 Q F0
-(Expands to the user ID of the current user)144 480 Q 2.5(,i)-.4 G
+(gument for the)-.18 F F1<ad6f>144 564 Q F0 1.174(option to the)3.674 F
+F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173
+(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E
+3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 576 R F2
+(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F F4(on)2.749 E
+F0(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G
+.019(his v)-2.519 F .02(ariable is in the en)-.25 F(vironment)-.4 E
+(when)144 588 Q F1(bash)3.142 E F0 .642(starts up, each shell option in\
+ the list will be enabled before reading an)3.142 F 3.141(ys)-.15 G .641
+(tartup \214les.)-3.141 F(This v)144 600 Q(ariable is read-only)-.25 E
+(.)-.65 E F1(SHL)108 612 Q(VL)-.92 E F0
+(Incremented by one each time an instance of)144 624 Q F1(bash)2.5 E F0
+(is started.)2.5 E F1(SRANDOM)108 636 Q F0 .76(This v)144 648 R .76
+(ariable e)-.25 F .761(xpands to a 32-bit pseudo-random number each tim\
+e it is referenced. The random)-.15 F .565
+(number generator is not linear on systems that support)144 660 R F3
+(/dev/urandom)3.064 E F0(or)3.064 E F4(ar)3.064 E(c4r)-.37 E(andom)-.15
+E F0 3.064(,s)C 3.064(oe)-3.064 G(ach)-3.064 E .788
+(returned number has no relationship to the numbers preceding it.)144
+672 R .788(The random number generator)5.788 F .088
+(cannot be seeded, so assignments to this v)144 684 R .087(ariable ha)
+-.25 F .387 -.15(ve n)-.2 H 2.587(oe).15 G -.25(ff)-2.587 G 2.587
+(ect. If).25 F F2(SRANDOM)2.587 E F0 .087(is unset, it loses its)2.337 F
+(special properties, e)144 696 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5
+G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(UID)108 708 Q
+F0(Expands to the user ID of the current user)144 708 Q 2.5(,i)-.4 G
(nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25
-E(.)-.65 E .994(The follo)108 496.8 R .994(wing v)-.25 F .994
+E(.)-.65 E .993(The follo)108 724.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 .993
-(alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 508.8
-Q -.65(w.)-.25 G F1 -.3(BA)108 525.6 S(SH_COMP).3 E -.95(AT)-.74 G F0
-1.192(The v)144 537.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 549.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 561.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 573.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 585.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 597.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 609.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 621.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 633.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 645.6 S(SH_ENV).3 E F0 .505
-(If this parameter is set when)144 657.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 669.6 R F5
-(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354(he v)-5.354 F .354
-(alue of)-.25 F F2 -.27(BA)2.854 G(SH_ENV).27 E F0 .354(is subjected)
-2.604 F .525(to parameter e)144 681.6 R .525
-(xpansion, command substitution, and arithmetic e)-.15 F .525
-(xpansion before being interpreted)-.15 F(as a \214lename.)144 693.6 Q
-F2 -.666(PA)5 G(TH)-.189 E F0
-(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA)
-108 705.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 717.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 729.6 R F4 3.114(set -x)5.614 F F0 3.114
-(is enabled to that \214le descriptor)5.614 F 8.114(.T)-.55 G 3.114
-(he \214le descriptor is closed when)-8.114 F(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(14)188.455 E 0 Cg EP
+(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994
+(alue to a v)-.25 F(ariable;)-.25 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(14)190.395 E 0 Cg EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0
-SF -.27(BA)144 84 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 F1 -.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 96 R 7.531(.N)-.55 G 2.531
-(ote that setting)-7.531 F F1 -.27(BA)144 108 S(SH_XTRA).27 E(CEFD)-.495
-E F0 .74(to 2 \(the standard error \214le descriptor\) and then unsetti\
-ng it will result in the)2.991 F(standard error being closed.)144 120 Q
-/F2 10/Times-Bold@0 SF(CDP)108 132 Q -.95(AT)-.74 G(H).95 E F0 1.247
-(The search path for the)144 144 R F2(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 156 R F2
-(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/F3 10/Courier@0 SF(".:~:/usr")144 168 Q F0(.)A F2
-(CHILD_MAX)108 180 Q F0 .997(Set the number of e)144 192 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 204 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
-216 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)
--.25 E F2(COLUMNS)108 228 Q F0 .828(Used by the)144 240 R F2(select)
-3.328 E F0 .829(compound command to determine the terminal width when p\
-rinting selection)3.328 F 4.507(lists. Automatically)144 252 R 2.007
-(set if the)4.507 F F2(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 264 Q F1(SIGWINCH)2.5 E/F4 9
-/Times-Roman@0 SF(.)A F2(COMPREPL)108 276 Q(Y)-.92 E F0 .847(An array v)
-144 288 R .848(ariable from which)-.25 F F2(bash)3.348 E F0 .848
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(these cases are noted belo)108 84 Q -.65(w.)-.25 G/F1 10/Times-Bold@0
+SF -.3(BA)108 100.8 S(SH_COMP).3 E -.95(AT)-.74 G F0 .503(The v)144
+112.8 R .502(alue is used to set the shell')-.25 F 3.002(sc)-.55 G .502
+(ompatibility le)-3.002 F -.15(ve)-.25 G 3.002(l. See).15 F/F2 9
+/Times-Bold@0 SF .502(SHELL COMP)3.002 F -.855(AT)-.666 G .502
+(IBILITY MODE).855 F F0(be-)2.752 E(lo)144 124.8 Q 2.662(wf)-.25 G .162
+(or a description of the v)-2.662 F .162(arious compatibility le)-.25 F
+-.15(ve)-.25 G .162(ls and their ef).15 F 2.663(fects. The)-.25 F -.25
+(va)2.663 G .163(lue may be a dec-).25 F .33
+(imal number \(e.g., 4.2\) or an inte)144 136.8 R .33
+(ger \(e.g., 42\) corresponding to the desired compatibility le)-.15 F
+-.15(ve)-.25 G 2.83(l. If).15 F F1 -.3(BA)144 148.8 S(SH_COMP).3 E -.95
+(AT)-.74 G F0 .86
+(is unset or set to the empty string, the compatibility le)4.31 F -.15
+(ve)-.25 G 3.361(li).15 G 3.361(ss)-3.361 G .861(et to the def)-3.361 F
+(ault)-.1 E .39(for the current v)144 160.8 R 2.89(ersion. If)-.15 F F1
+-.3(BA)2.89 G(SH_COMP).3 E -.95(AT)-.74 G F0 .39(is set to a v)3.84 F
+.39(alue that is not one of the v)-.25 F .39(alid compati-)-.25 F .277
+(bility le)144 172.8 R -.15(ve)-.25 G .278
+(ls, the shell prints an error message and sets the compatibility le).15
+F -.15(ve)-.25 G 2.778(lt).15 G 2.778(ot)-2.778 G .278(he def)-2.778 F
+.278(ault for the)-.1 F 1.401(current v)144 184.8 R 3.901(ersion. The)
+-.15 F -.25(va)3.901 G 1.401(lid v).25 F 1.401
+(alues correspond to the compatibility le)-.25 F -.15(ve)-.25 G 1.401
+(ls described belo).15 F 3.9(wu)-.25 G(nder)-3.9 E F2(BSHELL)144 196.8 Q
+/F3 9/Times-Roman@0 SF(COMP)A -.999(AT)-.828 G(IBILITY).999 E F2(MODE)A
+F3(.)A F0 -.15(Fo)4.997 G 2.997(re).15 G .497(xample, 4.2 and 42 are v)
+-3.147 F .497(alid v)-.25 F .498(alues that correspond to the)-.25 F F1
+.774(compat42 shopt)144 208.8 R F0 .774
+(option and set the compatibility le)3.274 F -.15(ve)-.25 G 3.274(lt).15
+G 3.274(o4)-3.274 G 3.274(2. The)-3.274 F .774(current v)3.274 F .773
+(ersion is also a v)-.15 F(alid)-.25 E -.25(va)144 220.8 S(lue.).25 E F1
+-.3(BA)108 232.8 S(SH_ENV).3 E F0 .505(If this parameter is set when)144
+244.8 R F1(bash)3.005 E F0 .505(is e)3.005 F -.15(xe)-.15 G .506
+(cuting a shell script, its v).15 F .506
+(alue is interpreted as a \214lename)-.25 F .391
+(containing commands to initialize the shell, as in)144 256.8 R/F4 10
+/Times-Italic@0 SF(~/.bashr)2.39 E(c)-.37 E F0 5.39(.T).31 G .39(he v)
+-5.39 F .39(alue of)-.25 F F2 -.27(BA)2.89 G(SH_ENV).27 E F0 .39
+(is subjected)2.64 F .525(to parameter e)144 268.8 R .525
+(xpansion, command substitution, and arithmetic e)-.15 F .525
+(xpansion before being interpreted)-.15 F(as a \214lename.)144 280.8 Q
+F2 -.666(PA)5 G(TH)-.189 E F0
+(is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA)
+108 292.8 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 304.8
+R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25
+F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F
+(-)-.2 E 3.114(ated when)144 316.8 R/F5 10/Courier@0 SF 3.114(set -x)
+5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T)
+-.55 G 3.114(he \214le descriptor is closed when)-8.114 F F2 -.27(BA)144
+328.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne)
+2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F2 -.27(BA)2.638
+G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \
+empty string causes the trace output to be sent to the standard error)
+144 340.8 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA)
+144 352.8 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\
+ \214le descriptor\) and then unsetting it will result in the)2.991 F
+(standard error being closed.)144 364.8 Q F1(CDP)108 376.8 Q -.95(AT)
+-.74 G(H).95 E F0 1.247(The search path for the)144 388.8 R F1(cd)3.747
+E F0 3.747(command. This)3.747 F 1.248
+(is a colon-separated list of directories in which the)3.747 F 3.796
+(shell looks for destination directories speci\214ed by the)144 400.8 R
+F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795
+(alue is)-.25 F F5(".:~:/usr")144 412.8 Q F0(.)A F1(CHILD_MAX)108 424.8
+Q F0 .997(Set the number of e)144 436.8 R .997(xited child status v)-.15
+F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997
+(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144
+448.8 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077
+(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077
+(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 460.8 Q
+2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E
+F1(COLUMNS)108 472.8 Q F0 .828(Used by the)144 484.8 R F1(select)3.328 E
+F0 .829(compound command to determine the terminal width when printing \
+selection)3.328 F 3.466(lists. Automatically)144 496.8 R .966
+(set if the)3.466 F F1(checkwinsize)3.466 E F0 .966
+(option is enabled or in an interacti)3.466 F 1.266 -.15(ve s)-.25 H
+.966(hell upon re-).15 F(ceipt of a)144 508.8 Q F2(SIGWINCH)2.5 E F3(.)A
+F1(COMPREPL)108 520.8 Q(Y)-.92 E F0 .847(An array v)144 532.8 R .848
+(ariable from which)-.25 F F1(bash)3.348 E F0 .848
(reads the possible completions generated by a shell function)3.348 F
-(in)144 300 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G
-.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F2
+(in)144 544.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt)-2.785 G
+.285(he programmable completion f)-2.785 F .285(acility \(see)-.1 F F1
(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
-312 Q F2(EMA)108 324 Q(CS)-.55 E F0(If)144 336 Q F2(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 F3(t)2.536 E
+556.8 Q F1(EMA)108 568.8 Q(CS)-.55 E F0(If)144 580.8 Q F1(bash)2.535 E
+F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036
+(vironment when the shell starts with v)-.4 F(alue)-.25 E F5(t)2.536 E
F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F
-(shell is running in an Emacs shell b)144 348 Q(uf)-.2 E
-(fer and disables line editing.)-.25 E F2(ENV)108 360 Q F0(Similar to)
-144 360 Q F1 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0
-(used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G
-(n)-2.5 E/F5 10/Times-Italic@0 SF(posix mode)2.5 E F0(.)A F2(EXECIGNORE)
-108 372 Q F0 2.717(Ac)144 384 S .217
-(olon-separated list of shell patterns \(see)-2.717 F F2 -.1(Pa)2.717 G
-(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .216
-(e\214ning the list of \214lenames to be)-2.717 F .116
-(ignored by command search using)144 396 R F2 -.74(PA)2.616 G(TH)-.21 E
-F0 5.116(.F)C .117
-(iles whose full pathnames match one of these patterns)-5.116 F 1.433
-(are not considered e)144 408 R -.15(xe)-.15 G 1.432
+(shell is running in an Emacs shell b)144 592.8 Q(uf)-.2 E
+(fer and disables line editing.)-.25 E F1(ENV)108 604.8 Q F0 .671
+(Expanded and e)144 604.8 R -.15(xe)-.15 G .671(cuted similarly to).15 F
+F2 -.27(BA)3.17 G(SH_ENV).27 E F0(\(see)2.92 E F1(INV)3.17 E(OCA)-.45 E
+(TION)-.95 E F0(abo)3.17 E -.15(ve)-.15 G 3.17(\)w).15 G .67
+(hen an interacti)-3.17 F -.15(ve)-.25 G(shell is in)144 616.8 Q -.2(vo)
+-.4 G -.1(ke).2 G 2.5(di).1 G(n)-2.5 E F4(posix mode)2.5 E F0(.)A F1
+(EXECIGNORE)108 628.8 Q F0 2.716(Ac)144 640.8 S .216
+(olon-separated list of shell patterns \(see)-2.716 F F1 -.1(Pa)2.717 G
+(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217
+(e\214ning the list of \214lenames to be)-2.717 F .117
+(ignored by command search using)144 652.8 R F1 -.74(PA)2.617 G(TH)-.21
+E F0 5.117(.F)C .116
+(iles whose full pathnames match one of these patterns)-5.117 F 1.432
+(are not considered e)144 664.8 R -.15(xe)-.15 G 1.432
(cutable \214les for the purposes of completion and command e).15 F -.15
-(xe)-.15 G 1.432(cution via).15 F F2 -.74(PA)144 420 S(TH)-.21 E F0
-2.908(lookup. This)2.908 F .408(does not af)2.908 F .408(fect the beha)
--.25 F .408(vior of the)-.2 F F2([)2.908 E F0(,)A F2(test)2.908 E F0
-2.908(,a)C(nd)-2.908 E F2([[)2.908 E F0 2.909(commands. Full)2.908 F
-(pathnames)2.909 E .364(in the command hash table are not subject to)144
-432 R F2(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
-(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 444 R
-1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
+(xe)-.15 G 1.433(cution via).15 F F1 -.74(PA)144 676.8 S(TH)-.21 E F0
+2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha)
+-.25 F .408(vior of the)-.2 F F1([)2.908 E F0(,)A F1(test)2.908 E F0
+2.908(,a)C(nd)-2.908 E F1([[)2.908 E F0 2.908(commands. Full)2.908 F
+(pathnames)2.908 E .364(in the command hash table are not subject to)144
+688.8 R F1(EXECIGNORE)2.864 E F0 5.364(.U)C .364(se this v)-5.364 F .364
+(ariable to ignore shared)-.25 F 1.37(library \214les that ha)144 700.8
+R 1.67 -.15(ve t)-.2 H 1.37(he e).15 F -.15(xe)-.15 G 1.37
(cutable bit set, b).15 F 1.37(ut are not e)-.2 F -.15(xe)-.15 G 1.37
(cutable \214les.).15 F 1.37(The pattern matching)6.37 F
-(honors the setting of the)144 456 Q F2(extglob)2.5 E F0(shell option.)
-2.5 E F2(FCEDIT)108 468 Q F0(The def)144 480 Q(ault editor for the)-.1 E
-F2(fc)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F2(FIGNORE)108 492 Q F0
-2.599(Ac)144 504 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E
-.098(es to ignore when performing \214lename completion \(see)-.15 F F1
-(READLINE)2.598 E F0(belo)144 516 Q 2.704(w\). A)-.25 F .204
-(\214lename whose suf)2.704 F .205(\214x matches one of the entries in)
--.25 F F1(FIGNORE)2.705 E F0 .205(is e)2.455 F .205
-(xcluded from the list)-.15 F(of matched \214lenames.)144 528 Q 2.5(As)5
-G(ample v)-2.5 E(alue is)-.25 E F3(".o:~")2.5 E F0(.)A F2(FUNCNEST)108
-540 Q F0 .231(If set to a numeric v)144 552 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 564 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
-2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F2
-(GLOBIGNORE)108 576 Q F0 2.923(Ac)144 588 S .423(olon-separated list of\
- patterns de\214ning the set of \214le names to be ignored by pathname \
-e)-2.923 F(xpan-)-.15 E 2.948(sion. If)144 600 R 2.948<618c>2.948 G .448
-(le name matched by a pathname e)-2.948 F .447
-(xpansion pattern also matches one of the patterns in)-.15 F F1
-(GLOBIGNORE)144 612 Q F4(,)A F0(it is remo)2.25 E -.15(ve)-.15 G 2.5(df)
-.15 G(rom the list of matches.)-2.5 E F2(HISTCONTR)108 624 Q(OL)-.3 E F0
-2.653(Ac)144 636 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 648 R .491
-(alues includes)-.25 F F5(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 F2(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 660 R 3.057(Av)5.557 G
-.557(alue of)-3.307 F F5(ignor)3.067 E(edups)-.37 E F0 .557
-(causes lines matching the pre)3.327 F .558
-(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.926
-(Av)144 672 S .426(alue of)-3.176 F F5(ignor)2.936 E(eboth)-.37 E F0
-.426(is shorthand for)3.206 F F5(ignor)2.926 E(espace)-.37 E F0(and)
-2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.501 G
-.425(lue of).25 F F5(er)3.115 E(asedups)-.15 E F0(causes)3.195 E .698
-(all pre)144 684 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 696 Q -.15(ve)-.2 G 2.764(d. An).15 F 2.764(yv)-.15 G .264
-(alue not in the abo)-3.014 F .563 -.15(ve l)-.15 H .263
-(ist is ignored.).15 F(If)5.263 E F1(HISTCONTR)2.763 E(OL)-.27 E F0 .263
-(is unset, or does not include)2.513 F 2.941(av)144 708 S .441(alid v)
--3.191 F .441(alue, all lines read by the shell parser are sa)-.25 F
--.15(ve)-.2 G 2.942(do).15 G 2.942(nt)-2.942 G .442
-(he history list, subject to the v)-2.942 F .442(alue of)-.25 F F1
-(HISTIGNORE)144 720 Q F4(.)A F0 1.981(The second and subsequent lines o\
-f a multi-line compound command are not)6.482 F(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(15)188.455 E 0 Cg EP
+(honors the setting of the)144 712.8 Q F1(extglob)2.5 E F0
+(shell option.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(15)
+190.395 E 0 Cg EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(tested, and are added to the history re)144 84 Q -.05(ga)-.15 G
-(rdless of the v).05 E(alue of)-.25 E/F1 9/Times-Bold@0 SF(HISTCONTR)2.5
-E(OL)-.27 E/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF(HISTFILE)108
-96 Q F0 .181(The name of the \214le in which command history is sa)144
-108 R -.15(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F1(HIST)2.681 E(OR)
--.162 E(Y)-.315 E F0(belo)2.431 E 2.682(w\). The)-.25 F(def)2.682 E .182
-(ault v)-.1 F(alue)-.25 E(is)144 120 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 132 Q F0 1.623
-(The maximum number of lines contained in the history \214le.)144 144 R
-1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144
-156 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 168 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
-180 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 192 R
-1.022(alues less than zero inhibit truncation.)-.25 F 1.022
-(The shell sets the def)6.022 F 1.022(ault v)-.1 F 1.022(alue to the v)
--.25 F 1.021(alue of)-.25 F F3(HISTSIZE)144 204 Q F0(after reading an)
-2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F3(HISTIGNORE)108 216 Q F0
-2.657(Ac)144 228 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 240 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 252 R F3(*)A F0 3.125('i)C 3.125(sa)-3.125 G 3.125
-(ppended\). Each)-3.125 F .626(pattern is tested ag)3.125 F .626
-(ainst the line after the checks speci\214ed by)-.05 F F1(HISTCONTR)144
-264 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(FCEDIT)108 84 Q F0(The def)144 96 Q(ault editor for the)-.1 E F1(fc)
+2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E F1(FIGNORE)108 108 Q F0 2.598
+(Ac)144 120 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E .098
+(es to ignore when performing \214lename completion \(see)-.15 F/F2 9
+/Times-Bold@0 SF(READLINE)2.599 E F0(belo)144 132 Q 2.705(w\). A)-.25 F
+.205(\214lename whose suf)2.705 F .205
+(\214x matches one of the entries in)-.25 F F2(FIGNORE)2.705 E F0 .205
+(is e)2.455 F .204(xcluded from the list)-.15 F(of matched \214lenames.)
+144 144 Q 2.5(As)5 G(ample v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
+(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 156 Q F0 .23(If set to a numeric v)
+144 168 R .231
+(alue greater than 0, de\214nes a maximum function nesting le)-.25 F
+-.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E
+(cations that e)144 180 Q(xceed this nesting le)-.15 E -.15(ve)-.25 G
+2.5(lw).15 G(ill cause the current command to abort.)-2.5 E F1
+(GLOBIGNORE)108 192 Q F0 2.924(Ac)144 204 S .423(olon-separated list of\
+ patterns de\214ning the set of \214le names to be ignored by pathname \
+e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 216 R 2.947<618c>2.947 G .447
+(le name matched by a pathname e)-2.947 F .448
+(xpansion pattern also matches one of the patterns in)-.15 F F2
+(GLOBIGNORE)144 228 Q/F4 9/Times-Roman@0 SF(,)A F0(it is remo)2.25 E
+-.15(ve)-.15 G 2.5(df).15 G(rom the list of matches.)-2.5 E F1
+(HISTCONTR)108 240 Q(OL)-.3 E F0 2.654(Ac)144 252 S .153
+(olon-separated list of v)-2.654 F .153(alues controlling ho)-.25 F
+2.653(wc)-.25 G .153(ommands are sa)-2.653 F -.15(ve)-.2 G 2.653(do).15
+G 2.653(nt)-2.653 G .153(he history list.)-2.653 F .153(If the list)
+5.153 F .49(of v)144 264 R .49(alues includes)-.25 F/F5 10
+/Times-Italic@0 SF(ignor)3 E(espace)-.37 E F0 2.99(,l).18 G .49
+(ines which be)-2.99 F .49(gin with a)-.15 F F1(space)2.99 E F0 .49
+(character are not sa)2.99 F -.15(ve)-.2 G 2.99(di).15 G 2.99(nt)-2.99 G
+.49(he his-)-2.99 F .558(tory list.)144 276 R 3.058(Av)5.558 G .558
+(alue of)-3.308 F F5(ignor)3.068 E(edups)-.37 E F0 .558
+(causes lines matching the pre)3.328 F .557
+(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.925
+(Av)144 288 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0
+.426(is shorthand for)3.205 F F5(ignor)2.926 E(espace)-.37 E F0(and)
+2.926 E F5(ignor)2.926 E(edups)-.37 E F0 5.426(.A)C -.25(va)-2.5 G .426
+(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699
+(all pre)144 300 R .698
+(vious lines matching the current line to be remo)-.25 F -.15(ve)-.15 G
+3.198(df).15 G .698(rom the history list before that line is)-3.198 F
+(sa)144 312 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263
+(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263
+(ist is ignored.).15 F(If)5.263 E F2(HISTCONTR)2.763 E(OL)-.27 E F0 .264
+(is unset, or does not include)2.513 F 2.942(av)144 324 S .442(alid v)
+-3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F
+-.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441
+(he history list, subject to the v)-2.941 F .441(alue of)-.25 F F2
+(HISTIGNORE)144 336 Q F4(.)A F0 1.981(The second and subsequent lines o\
+f a multi-line compound command are not)6.481 F
+(tested, and are added to the history re)144 348 Q -.05(ga)-.15 G
+(rdless of the v).05 E(alue of)-.25 E F2(HISTCONTR)2.5 E(OL)-.27 E F4(.)
+A F1(HISTFILE)108 360 Q F0 .181
+(The name of the \214le in which command history is sa)144 372 R -.15
+(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F2(HIST)2.681 E(OR)-.162 E(Y)
+-.315 E F0(belo)2.431 E 2.681(w\). The)-.25 F(def)2.681 E .181(ault v)
+-.1 F(alue)-.25 E(is)144 384 Q F5(~/.bash_history)2.5 E F0 5(.I)C 2.5
+(fu)-5 G(nset, the command history is not sa)-2.5 E -.15(ve)-.2 G 2.5
+(dw).15 G(hen a shell e)-2.5 E(xits.)-.15 E F1(HISTFILESIZE)108 396 Q F0
+1.622(The maximum number of lines contained in the history \214le.)144
+408 R 1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25
+(va)144 420 S .125(lue, the history \214le is truncated, if necessary)
+.25 F 2.625(,t)-.65 G 2.624(oc)-2.625 G .124
+(ontain no more than that number of lines by re-)-2.624 F(mo)144 432 Q
+.065(ving the oldest entries.)-.15 F .066(The history \214le is also tr\
+uncated to this size after writing it when a shell)5.065 F -.15(ex)144
+444 S 2.928(its. If).15 F .428(the v)2.928 F .428
+(alue is 0, the history \214le is truncated to zero size.)-.25 F .427
+(Non-numeric v)5.427 F .427(alues and numeric)-.25 F -.25(va)144 456 S
+.152(lues less than zero inhibit truncation.).25 F .152
+(The shell sets the def)5.152 F .152(ault v)-.1 F .152(alue to the v)
+-.25 F .152(alue of)-.25 F F1(HISTSIZE)2.652 E F0(after reading an)144
+468 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 480 Q F0
+2.658(Ac)144 492 S .158(olon-separated list of patterns used to decide \
+which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G
+2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 504 R .707
+(Each pattern is anchored at the be)5.707 F .708
+(ginning of the line and must match the complete line)-.15 F .626
+(\(no implicit `)144 516 R F1(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126
+(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625
+(ainst the line after the checks speci\214ed by)-.05 F F2(HISTCONTR)144
+528 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793
(In addition to the normal shell pattern matching characters, `)6.793 F
-F3(&)A F0(')A 2.514(matches the pre)144 276 R 2.514(vious history line.)
--.25 F(`)7.514 E F3(&)A F0 5.014('m)C 2.514
-(ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 288
-Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F
-.852(The second and subsequent lines of a multi-line compound)5.852 F
-1.269(command are not tested, and are added to the history re)144 300 R
--.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F1
-(HISTIGNORE)3.77 E F2(.)A F0
-(The pattern matching honors the setting of the)144 312 Q F3(extglob)2.5
-E F0(shell option.)2.5 E F3(HISTSIZE)108 324 Q F0 1.387
-(The number of commands to remember in the command history \(see)144 336
-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 348 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 360 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 372 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E
-F3(HISTTIMEFORMA)108 384 Q(T)-.95 E F0 .951(If this v)144 396 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
-(\(3\) to print the)B .673
-(time stamp associated with each history entry displayed by the)144 408
-R F3(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 420 R
+F1(&)A F0(')A 1.44(matches the pre)144 540 R 1.44(vious history line.)
+-.25 F(`)6.44 E F1(&)A F0 3.94('m)C 1.44
+(ay be escaped using a backslash; the backslash is re-)-3.94 F(mo)144
+552 Q -.15(ve)-.15 G 3.95(db).15 G 1.45(efore attempting a match.)-3.95
+F 1.45(The second and subsequent lines of a multi-line compound)6.45 F
+1.269(command are not tested, and are added to the history re)144 564 R
+-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2
+(HISTIGNORE)3.769 E F4(.)A F0
+(The pattern matching honors the setting of the)144 576 Q F1(extglob)2.5
+E F0(shell option.)2.5 E F1(HISTSIZE)108 588 Q F0 1.387
+(The number of commands to remember in the command history \(see)144 600
+R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If)
+-.25 F(the)3.888 E -.25(va)144 612 S .413(lue is 0, commands are not sa)
+.25 F -.15(ve)-.2 G 2.913(di).15 G 2.913(nt)-2.913 G .413
+(he history list.)-2.913 F .413(Numeric v)5.413 F .412
+(alues less than zero result in e)-.25 F(v-)-.25 E .343
+(ery command being sa)144 624 R -.15(ve)-.2 G 2.843(do).15 G 2.843(nt)
+-2.843 G .343(he history list \(there is no limit\).)-2.843 F .344
+(The shell sets the def)5.343 F .344(ault v)-.1 F .344(alue to)-.25 F
+(500 after reading an)144 636 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1
+(HISTTIMEFORMA)108 648 Q(T)-.95 E F0 .952(If this v)144 660 R .952
+(ariable is set and not null, its v)-.25 F .951
+(alue is used as a format string for)-.25 F F5(strftime)3.451 E F0 .951
+(\(3\) to print the)B .672
+(time stamp associated with each history entry displayed by the)144 672
+R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v)
+3.173 F .673(ariable is)-.25 F .144
+(set, time stamps are written to the history \214le so the)144 684 R
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 432 Q
-F3(HOME)108 444 Q F0 1.27
-(The home directory of the current user; the def)144 456 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 468 S(lue of this v).25 E
-(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F3
-(HOSTFILE)108 480 Q F0 1.015
-(Contains the name of a \214le in the same format as)144 492 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 504 R .551
-(The list of possible hostname completions may be changed while)5.551 F
-1.058(the shell is running; the ne)144 516 R 1.059
-(xt time hostname completion is attempted after the v)-.15 F 1.059
-(alue is changed,)-.25 F F3(bash)144 528 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 540 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 552
-Q(When)5 E F1(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.)
-2.25 E F3(IFS)108 564 Q F0(The)144 564 Q F4 .556(Internal F)3.636 F .556
-(ield Separ)-.45 F(ator)-.15 E F0 .556(that is used for w)3.786 F .556
-(ord splitting after e)-.1 F .555(xpansion and to split lines into)-.15
-F -.1(wo)144 576 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
-(`<space><tab><ne)-.74 E(wline>')-.25 E('.)-.74 E F3(IGNOREEOF)108 588 Q
-F0 .503(Controls the action of an interacti)144 600 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 612 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 624 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 636 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 648 Q F0 1.436(The \214lename for the)144 660 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 672 Q(w\).)-.25
-E F3(INSIDE_EMA)108 684 Q(CS)-.55 E F0 .886(If this v)144 696 R .886
-(ariable appears in the en)-.25 F .886(vironment when the shell starts,)
--.4 F F3(bash)3.386 E F0 .887(assumes that it is running)3.386 F
-(inside an Emacs shell b)144 708 Q(uf)-.2 E
-(fer and may disable line editing, depending on the v)-.25 E(alue of)
--.25 E F3(TERM)2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(16)188.455 E 0 Cg EP
+(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\
+ character to distinguish timestamps from other history lines.)144 696 Q
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(16)190.395 E 0 Cg EP
%%Page: 17 17
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(LANG)108 84 Q F0 1.24(Used to determine the locale cate)144 84 R
-1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.239
+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 .55
+(needs to complete a hostname.)144 144 R .551
+(The list of possible hostname completions may be changed while)5.551 F
+1.059(the shell is running; the ne)144 156 R 1.059
+(xt time hostname completion is attempted after the v)-.15 F 1.058
+(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138
+(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e)
+-2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF
+(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .139(ut has no v)-.2 F .139
+(alue, or)-.25 F .518(does not name a readable \214le,)144 180 R F1
+(bash)3.018 E F0 .518(attempts to read)3.018 F F2(/etc/hosts)4.683 E F0
+.517(to obtain the list of possible host-)4.683 F(name completions.)144
+192 Q(When)5 E F3(HOSTFILE)2.5 E F0
+(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The)
+144 204 Q F2 .555(Internal F)3.635 F .555(ield Separ)-.45 F(ator)-.15 E
+F0 .555(that is used for w)3.785 F .556(ord splitting after e)-.1 F .556
+(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the)
+.1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E
+(The def)5 E(ault v)-.1 E(alue is `)-.25 E(`<space><tab><ne)-.74 E
+(wline>')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503
+(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H
+.503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503
+(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v)
+144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3
+(EOF)3.076 E F0 .426
+(characters which must be typed as the \214rst characters)2.676 F .303
+(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G
+2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302
+(xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302
+(umeric v).15 F .302(alue, or has)-.25 F(no v)144 276 Q(alue, the def)
+-.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E
+F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1
+(INPUTRC)108 288 Q F0 .26(The \214lename for the)144 300 R F1 -.18(re)
+2.76 G(adline).18 E F0 .26(startup \214le, o)2.76 F -.15(ve)-.15 G .26
+(rriding the def).15 F .261(ault of)-.1 F F2(~/.inputr)4.427 E(c)-.37 E
+F0(\(see)4.427 E F3(READLINE)2.761 E F0(be-)2.511 E(lo)144 312 Q(w\).)
+-.25 E F1(INSIDE_EMA)108 324 Q(CS)-.55 E F0 .034(If this v)144 336 R
+.034(ariable appears in the en)-.25 F .034
+(vironment when the shell starts,)-.4 F F1(bash)2.533 E F0 .033
+(assumes that it is running in-)2.533 F(side an Emacs shell b)144 348 Q
+(uf)-.2 E(fer and may disable line editing, depending on the v)-.25 E
+(alue of)-.25 E F1(TERM)2.5 E F0(.)A F1(LANG)108 360 Q F0 1.239
+(Used to determine the locale cate)144 360 R 1.239(gory for an)-.15 F
+3.739(yc)-.15 G(ate)-3.739 E 1.24
(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E
-(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 108 Q F0 .973
-(This v)144 120 R .973(ariable o)-.25 F -.15(ve)-.15 G .973
-(rrides the v).15 F .973(alue of)-.25 F/F2 9/Times-Bold@0 SF(LANG)3.473
-E F0 .973(and an)3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0
--.25(va)3.473 G .974(riable specifying a locale cate-).25 F(gory)144 132
-Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .412(This v)144 156 R .412
-(ariable determines the collation order used when sorting the results o\
-f pathname e)-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144
-168 R 1.464(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va)
--.25 G 1.465(lence classes, and collating sequences).25 F
-(within pathname e)144 180 Q(xpansion and pattern matching.)-.15 E F1
-(LC_CTYPE)108 192 Q F0 1.936(This v)144 204 R 1.936
+(starting with)144 372 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 384 Q F0 .974
+(This v)144 396 R .974(ariable o)-.25 F -.15(ve)-.15 G .974
+(rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an)
+3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G
+.973(riable specifying a locale cate-).25 F(gory)144 408 Q(.)-.65 E F1
+(LC_COLLA)108 420 Q(TE)-.95 E F0 .411(This v)144 432 R .412(ariable det\
+ermines the collation order used when sorting the results of pathname e)
+-.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 444 R 1.465
+(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G
+1.464(lence classes, and collating sequences).25 F(within pathname e)144
+456 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 468 Q F0
+1.935(This v)144 480 R 1.936
(ariable determines the interpretation of characters and the beha)-.25 F
-1.935(vior of character classes)-.2 F(within pathname e)144 216 Q
-(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 228 Q(GES)-.55 E
-F0(This v)144 240 Q(ariable determines the locale used to translate dou\
+1.936(vior of character classes)-.2 F(within pathname e)144 492 Q
+(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 504 Q(GES)-.55 E
+F0(This v)144 516 Q(ariable determines the locale used to translate dou\
ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC)
-108 252 Q F0(This v)144 264 Q(ariable determines the locale cate)-.25 E
-(gory used for number formatting.)-.15 E F1(LC_TIME)108 276 Q F0(This v)
-144 288 Q(ariable determines the locale cate)-.25 E
-(gory used for data and time formatting.)-.15 E F1(LINES)108 300 Q F0
-.054(Used by the)144 300 R F1(select)2.554 E F0 .054(compound command t\
-o determine the column length for printing selection lists.)2.554 F .265
-(Automatically set if the)144 312 R F1(checkwinsize)2.765 E F0 .264
-(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264
-(hell upon receipt of a).15 F F2(SIGWINCH)144 324 Q/F3 9/Times-Roman@0
-SF(.)A F1(MAIL)108 336 Q F0 1.201
-(If this parameter is set to a \214le or directory name and the)144 336
-R F2(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.202
-(riable is not set,).25 F F1(bash)3.702 E F0
-(informs the user of the arri)144 348 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
+108 528 Q F0(This v)144 540 Q(ariable determines the locale cate)-.25 E
+(gory used for number formatting.)-.15 E F1(LC_TIME)108 552 Q F0(This v)
+144 564 Q(ariable determines the locale cate)-.25 E
+(gory used for data and time formatting.)-.15 E F1(LINES)108 576 Q F0
+.055(Used by the)144 576 R F1(select)2.555 E F0 .054(compound command t\
+o determine the column length for printing selection lists.)2.555 F .264
+(Automatically set if the)144 588 R F1(checkwinsize)2.764 E F0 .264
+(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265
+(hell upon receipt of a).15 F F3(SIGWINCH)144 600 Q/F4 9/Times-Roman@0
+SF(.)A F1(MAIL)108 612 Q F0 .422
+(If this parameter is set to a \214le or directory name and the)144 612
+R F3(MAILP)2.921 E -.855(AT)-.666 G(H).855 E F0 -.25(va)2.671 G .421
+(riable is not set,).25 F F1(bash)2.921 E F0(in-)2.921 E
+(forms the user of the arri)144 624 Q -.25(va)-.25 G 2.5(lo).25 G 2.5
(fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E
-(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 360 Q F0 .099
-(Speci\214es ho)144 372 R 2.599(wo)-.25 G .099(ften \(in seconds\))
--2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
-5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223
+(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 636 Q F0 .098
+(Speci\214es ho)144 648 R 2.598(wo)-.25 G .098(ften \(in seconds\))
+-2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def)
+5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224
(to check for mail, the shell does so before displaying the primary pro\
-mpt.)144 384 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F
-(or set to a v)144 396 Q(alue that is not a number greater than or equa\
-l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 408 Q
--.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 420 S .49
+mpt.)144 660 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F
+(or set to a v)144 672 Q(alue that is not a number greater than or equa\
+l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 684 Q
+-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 696 S .49
(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 432 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \
+144 708 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 444 Q(xt of the message,)
+ with a `?'.)-2.62 F(When used in the te)144 720 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 456 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
+(pands to the name of the current mail\214le.).15 E(Example:)5 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(17)190.395 E 0 Cg EP
+%%Page: 18 18
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(MAILP)144 84 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y)
-.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H
-(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 468 Q F0 .015
+(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 96 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 480 Q
-(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 492 Q F0 .389
-(If set to the v)144 504 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 516 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 528 Q -.15(xe)
--.15 G(cuted.).15 E F1 -.74(PA)108 540 S(TH)-.21 E F0 .587
-(The search path for commands.)144 540 R .588
+ser mail \214les that it uses is system dependent \(e.g., /v)144 108 Q
+(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 120 Q F0 .39
+(If set to the v)144 132 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389
+(displays error messages generated by the)2.889 F F1(getopts)2.889 E F0
+-.2(bu)2.889 G .389(iltin command \(see).2 F/F2 9/Times-Bold@0 SF .359
+(SHELL B)144 144 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0(belo)2.609 E
+(w\).)-.25 E F2(OPTERR)5.359 E F0 .36
+(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1
+(ke).2 G(d).1 E(or a shell script is e)144 156 Q -.15(xe)-.15 G(cuted.)
+.15 E F1 -.74(PA)108 168 S(TH)-.21 E F0 .588
+(The search path for commands.)144 168 R .587
(It is a colon-separated list of directories in which the shell looks)
-5.587 F .472(for commands \(see)144 552 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 564 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 576 R .868
-(The def)5.868 F .867(ault path is system-dependent, and is set by the)
--.1 F(administrator who installs)144 588 Q F1(bash)2.5 E F0 5(.A)C
-(common v)-2.5 E(alue is)-.25 E/F4 10/Courier@0 SF
-(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 600 Q
-F0(.)A F1(POSIXL)108 612 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 624 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 636 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 648 Q F1(bash)
-4.498 E F0(enables)4.498 E F5 1.997(posix mode)4.497 F F0 4.497(,a)C
-4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F4 1.997
-(set -o posix)4.497 F F0 1.997(had been e)4.497 F -.15(xe)-.15 G(cuted.)
-.15 E(When the shell enters)144 660 Q F5(posix mode)2.5 E F0 2.5(,i)C
+5.588 F .471(for commands \(see)144 180 R F2 .471(COMMAND EXECUTION)
+2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472
+(zero-length \(null\) directory name in the)2.972 F -.25(va)144 192 S
+.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535
+(indicates the current directory)2.786 F 5.535(.A)-.65 G .535
+(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent)
+-3.035 E .867(colons, or as an initial or trailing colon.)144 204 R .868
+(The def)5.868 F .868(ault path is system-dependent, and is set by the)
+-.1 F(administrator who installs)144 216 Q F1(bash)2.5 E F0 5(.A)C
+(common v)-2.5 E(alue is)-.25 E/F3 10/Courier@0 SF
+(/usr/local/bin:/usr/lo-)2.5 E(cal/sbin:/usr/bin:/usr/sbin:/bin:/sbin)
+144 228 Q F0(.)A F1(POSIXL)108 240 Q(Y_CORRECT)-.92 E F0 .471(If this v)
+144 252 R .471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1
+(bash)2.971 E F0 .471(starts, the shell enters)2.971 F/F4 10
+/Times-Italic@0 SF .472(posix mode)2.972 F F0 .472(before reading)2.972
+F .011(the startup \214les, as if the)144 264 R F1(\255\255posix)2.511 E
+F0(in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F
+.011(If it is set while the shell is)5.011 F(running,)144 276 Q F1(bash)
+4.497 E F0(enables)4.497 E F4 1.997(posix mode)4.497 F F0 4.497(,a)C
+4.497(si)-4.497 G 4.497(ft)-4.497 G 1.997(he command)-4.497 F F3 1.997
+(set -o posix)4.497 F F0 1.998(had been e)4.497 F -.15(xe)-.15 G(cuted.)
+.15 E(When the shell enters)144 288 Q F4(posix mode)2.5 E F0 2.5(,i)C
2.5(ts)-2.5 G(ets this v)-2.5 E(ariable if it w)-.25 E
-(as not already set.)-.1 E F1(PR)108 672 Q(OMPT_COMMAND)-.3 E F0
-(If set, the v)144 684 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 696 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
-(If set to a number greater than zero, the v)144 708 R .676
+(as not already set.)-.1 E F1(PR)108 300 Q(OMPT_COMMAND)-.3 E F0 .155
+(If this v)144 312 R .155(ariable is set, and is an array)-.25 F 2.655
+(,t)-.65 G .155(he v)-2.655 F .155(alue of each set element is e)-.25 F
+-.15(xe)-.15 G .155(cuted as a command prior).15 F .407
+(to issuing each primary prompt.)144 324 R .407(If this is set b)5.407 F
+.407(ut not an array v)-.2 F .407(ariable, its v)-.25 F .407
+(alue is used as a com-)-.25 F(mand to e)144 336 Q -.15(xe)-.15 G
+(cute instead.).15 E F1(PR)108 348 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676
+(If set to a number greater than zero, the v)144 360 R .676
(alue is used as the number of trailing directory compo-)-.25 F .923
-(nents to retain when e)144 720 R .923(xpanding the)-.15 F F1(\\w)3.423
+(nents to retain when e)144 372 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
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(17)188.455 E 0 Cg EP
-%%Page: 18 18
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Characters remo)
-144 84 Q -.15(ve)-.15 G 2.5(da).15 G(re replaced with an ellipsis.)-2.5
-E/F1 10/Times-Bold@0 SF(PS0)108 96 Q F0 1.174(The v)144 96 R 1.174
-(alue of this parameter is e)-.25 F 1.174(xpanded \(see)-.15 F/F2 9
-/Times-Bold@0 SF(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174
+(Characters remo)144 384 Q -.15(ve)-.15 G 2.5(da).15 G
+(re replaced with an ellipsis.)-2.5 E F1(PS0)108 396 Q F0 1.174(The v)
+144 396 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see)
+-.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 108 Q
--.15(xe)-.15 G(cuted.).15 E F1(PS1)108 120 Q F0 .065(The v)144 120 R
+(shells after reading a command and before the command is e)144 408 Q
+-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 420 Q F0 .064(The v)144 420 R
.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR)
2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065
-(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 132 R
+(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 432 R
(def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0
--.74('')2.5 G(.).74 E F1(PS2)108 144 Q F0 .117(The v)144 144 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 156 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G
-(.).74 E F1(PS3)108 168 Q F0 1.116(The v)144 168 R 1.115
+-.74('')2.5 G(.).74 E F1(PS2)108 444 Q F0 .118(The v)144 444 R .118
+(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1)
+2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The)
+5.117 E(def)144 456 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G
+(.).74 E F1(PS3)108 468 Q F0 1.115(The v)144 468 R 1.115
(alue of this parameter is used as the prompt for the)-.25 F F1(select)
-3.615 E F0 1.115(command \(see)3.615 F F2 1.115(SHELL GRAM-)3.615 F(MAR)
-144 180 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 192 Q F0 .1
-(The v)144 192 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 204 Q F0 .335
-(displays during an e)2.835 F -.15(xe)-.15 G .335(cution trace.).15 F
+3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR)
+144 480 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 492 Q F0
+.101(The v)144 492 R .101(alue of this parameter is e)-.25 F .101
+(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1
+(alue is printed before each command)-.25 F F1(bash)144 504 Q F0 .334
+(displays during an e)2.834 F -.15(xe)-.15 G .335(cution trace.).15 F
.335(The \214rst character of the e)5.335 F .335(xpanded v)-.15 F .335
-(alue of)-.25 F F2(PS4)2.834 E F0 .334(is repli-)2.584 F
-(cated multiple times, as necessary)144 216 Q 2.5(,t)-.65 G 2.5(oi)-2.5
+(alue of)-.25 F F2(PS4)2.835 E F0 .335(is repli-)2.585 F
+(cated multiple times, as necessary)144 516 Q 2.5(,t)-.65 G 2.5(oi)-2.5
G(ndicate multiple le)-2.5 E -.15(ve)-.25 G(ls of indirection.).15 E
(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 -.74('')2.5 G(.).74 E F1
-(SHELL)108 228 Q F0 .663(The full pathname to the shell is k)144 240 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 252 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 264 Q(T)-.95 E F0 .827
-(The v)144 276 R .826
+(SHELL)108 528 Q F0 .543(This v)144 540 R .543(ariable e)-.25 F .543
+(xpands to the full pathname to the shell.)-.15 F .542
+(If it is not set when the shell starts,)5.543 F F1(bash)3.042 E F0
+(assigns to it the full pathname of the current user')144 552 Q 2.5(sl)
+-.55 G(ogin shell.)-2.5 E F1(TIMEFORMA)108 564 Q(T)-.95 E F0 .826(The v)
+144 576 R .826
(alue of this parameter is used as a format string specifying ho)-.25 F
-3.326(wt)-.25 G .826(he timing information for)-3.326 F .648
-(pipelines pre\214x)144 288 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 300 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 312 Q
-(ws; the braces denote optional portions.)-.25 E F1(%%)144 330 Q F0 2.5
-(Al)194 330 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 342 Q/F3 10
-/Times-Italic@0 SF(p)A F1(][l]R)A F0(The elapsed time in seconds.)194
-342 Q F1(%[)144 354 Q F3(p)A F1(][l]U)A F0
-(The number of CPU seconds spent in user mode.)194 354 Q F1(%[)144 366 Q
-F3(p)A F1(][l]S)A F0(The number of CPU seconds spent in system mode.)194
-366 Q F1(%P)144 378 Q F0
-(The CPU percentage, computed as \(%U + %S\) / %R.)194 378 Q .87
-(The optional)144 394.8 R F3(p)3.37 E F0 .87(is a digit specifying the)
-3.37 F F3(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
-(he number of fractional digits after a decimal)-3.37 F 2.526(point. A)
-144 406.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 418.8 R .537(alues of)-.25 F F3
-(p)3.037 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.538 E
-F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 430.8 Q
-(alue 3 is used.)-.25 E .668(The optional)144 447.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 459.6 Q F3(p)2.5 E F0
-(determines whether or not the fraction is included.)2.5 E 13.364
-(If this v)144 476.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 488.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
+3.327(wt)-.25 G .827(he timing information for)-3.327 F .649
+(pipelines pre\214x)144 588 R .649(ed with the)-.15 F F1(time)3.149 E F0
+(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F
+(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711
+(an escape sequence that is e)144 600 R .711(xpanded to a time v)-.15 F
+.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F
+(and their meanings are as follo)144 612 Q
+(ws; the braces denote optional portions.)-.25 E F1(%%)144 630 Q F0 2.5
+(Al)194 630 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 642 Q F4(p)A F1
+(][l]R)A F0(The elapsed time in seconds.)194 642 Q F1(%[)144 654 Q F4(p)
+A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 654 Q
+F1(%[)144 666 Q F4(p)A F1(][l]S)A F0
+(The number of CPU seconds spent in system mode.)194 666 Q F1(%P)144 678
+Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 678 Q .87
+(The optional)144 694.8 R F4(p)3.37 E F0 .87(is a digit specifying the)
+3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87
+(he number of fractional digits after a decimal)-3.37 F 2.525(point. A)
+144 706.8 R -.25(va)2.525 G .025
+(lue of 0 causes no decimal point or fraction to be output.).25 F .026
+(At most three places after the)5.025 F .538
+(decimal point may be speci\214ed; v)144 718.8 R .538(alues of)-.25 F F4
+(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E
+F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 730.8 Q
+(alue 3 is used.)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
+(18)190.395 E 0 Cg EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .667(The optional)
+144 84 R/F1 10/Times-Bold@0 SF(l)3.167 E F0 .668
+(speci\214es a longer format, including minutes, of the form)3.168 F/F2
+10/Times-Italic@0 SF(MM)3.168 E F0(m)A F2(SS)A F0(.)A F2(FF)A F0 3.168
+(s. The)B -.25(va)3.168 G(lue).25 E(of)144 96 Q F2(p)2.5 E F0
+(determines whether or not the fraction is included.)2.5 E 13.365
+(If this v)144 112.8 R 13.365(ariable is not set,)-.25 F F1(bash)15.865
+E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr)
+144 124.8 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113
(.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
-500.4 R(trailing ne)2.5 E
+136.8 R(trailing ne)2.5 E
(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108
-512.4 Q F0 .941(If set to a v)144 524.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 536.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 548.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 560.4
+148.8 Q F0 .941(If set to a v)144 160.8 R .941(alue greater than zero,)
+-.25 F/F3 9/Times-Bold@0 SF(TMOUT)3.441 E F0 .941(is treated as the def)
+3.191 F .941(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0
+-.2(bu)3.441 G(iltin.).2 E(The)144 172.8 Q F1(select)2.81 E F0 .31
+(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H
+(fter).15 E F3(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F
+.886(ing from a terminal.)144 184.8 R .886(In an interacti)5.886 F 1.185
+-.15(ve s)-.25 H .885(hell, the v).15 F .885
+(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 196.8
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 572.4
-Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 584.4 Q F0 .39(If set,)144 596.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 608.4 Q 2.5(su)
--.55 G(se.)-2.5 E F1(auto_r)108 620.4 Q(esume)-.18 E F0 .531(This v)144
-632.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 644.4 R
+F(number of seconds if a complete line of input does not arri)144 208.8
+Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 220.8 Q F0 .391(If set,)144 232.8
+R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391
+(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39
+(creates temporary \214les for the)2.89 F(shell')144 244.8 Q 2.5(su)-.55
+G(se.)-2.5 E F1(auto_r)108 256.8 Q(esume)-.18 E F0 .53(This v)144 268.8
+R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531
+(he shell interacts with the user and job control.)-3.03 F .531
+(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 280.8 R
.538(ord simple commands without redirections are treated as candidates\
- for resumption of an)-.1 F -.15(ex)144 656.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
-668.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 680.4 Q 1.133
+ for resumption of an)-.1 F -.15(ex)144 292.8 S .366(isting stopped job)
+.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366
+(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F
+1.125(the string typed, the job most recently accessed is selected.)144
+304.8 R(The)6.125 E F2(name)3.985 E F0 1.124(of a stopped job, in this)
+3.805 F(conte)144 316.8 Q 1.132
(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 692.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 704.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 716.4 Q F1(%?)3.333 E
-F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27
+6.133 F(alue)-.25 E F2 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133
+(he string supplied must)-3.633 F .606
+(match the name of a stopped job e)144 328.8 R .606(xactly; if set to)
+-.15 F F2(substring)3.445 E F0 3.105(,t).22 G .605
+(he string supplied needs to match a)-3.105 F .884
+(substring of the name of a stopped job)144 340.8 R 5.884(.T)-.4 G(he)
+-5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885
+(vides functionality analogous to)-.15 F(the)144 352.8 Q F1(%?)3.334 E
+F0 .834(job identi\214er \(see)5.834 F F3 .834(JOB CONTR)3.334 F(OL)-.27
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 728.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(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(18)188.455 E 0 Cg EP
-%%Page: 19 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(identi\214er)144
-84 Q(.)-.55 E/F1 10/Times-Bold@0 SF(histchars)108 96 Q F0 2.069(The tw)
-144 108 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 9/Times-Bold@0 SF(HIST)4.57 E(OR)
--.162 E(Y)-.315 E(EXP)144 120 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 10
-/Times-Italic@0 SF 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 132 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 144 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 156 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 168 R(-)-.2 E 1.293(acter of a w)144 180 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 192 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 204 Q F1(Arrays)87 220.8 Q(Bash)
-108 232.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 244.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 256.8 R 2.828(,n)-.65 G .328(or an)-2.828 F 2.828(yr)
--.15 G .329(equirement that members be inde)-2.828 F -.15(xe)-.15 G
-2.829(do).15 G 2.829(ra)-2.829 G .329(ssigned contiguously)-2.829 F
-5.329(.I)-.65 G(nde)-5.329 E -.15(xe)-.15 G 2.829(da).15 G .329
-(rrays are refer)-2.829 F(-)-.2 E 1.595(enced using inte)108 268.8 R
+-.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315
+(must be a pre\214x of a stopped job')144 364.8 R 2.816(sn)-.55 G .316
+(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F
+F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 376.8 Q(.)-.55
+E F1(histchars)108 388.8 Q F0 .546(The tw)144 400.8 R 3.046(oo)-.1 G
+3.046(rt)-3.046 G .546(hree characters which control history e)-3.046 F
+.545(xpansion and tok)-.15 F .545(enization \(see)-.1 F F3(HIST)3.045 E
+(OR)-.162 E 2.795(YE)-.315 G(X-)-2.795 E -.666(PA)144 412.8 S(NSION).666
+E F0(belo)2.987 E 3.237(w\). The)-.25 F .737(\214rst character is the)
+3.237 F F2 .737(history e)3.237 F(xpansion)-.2 E F0(character)3.238 E
+3.238(,t)-.4 G .738(he character which sig-)-3.238 F .761
+(nals the start of a history e)144 424.8 R .761(xpansion, normally `)
+-.15 F F1(!)A F0 3.261('. The)B .76(second character is the)3.261 F F2
+(quic)3.26 E 3.26(ks)-.2 G(ubstitution)-3.26 E F0(character)144 436.8 Q
+3.476(,w)-.4 G .977(hich is used as shorthand for re-running the pre)
+-3.476 F .977(vious command entered, substituting)-.25 F .131
+(one string for another in the command.)144 448.8 R .131(The def)5.131 F
+.131(ault is `)-.1 F F1(^)A F0 2.63('. The)B .13
+(optional third character is the char)2.63 F(-)-.2 E .276(acter which i\
+ndicates that the remainder of the line is a comment when found as the \
+\214rst character)144 460.8 R .46(of a w)144 472.8 R .46
+(ord, normally `)-.1 F F1(#)A F0 2.959('. The)B .459
+(history comment character causes history substitution to be skipped)
+2.959 F .466(for the remaining w)144 484.8 R .466(ords on the line.)-.1
+F .467(It does not necessarily cause the shell parser to treat the rest)
+5.467 F(of the line as a comment.)144 496.8 Q F1(Arrays)87 513.6 Q(Bash)
+108 525.6 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15
+(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a)
+-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89
+(ariable may be used as an)-3.641 F(inde)108 537.6 Q -.15(xe)-.15 G
+2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2
+(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15
+F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F
+.329(an array)108 549.6 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr)
+-.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G
+2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F
+5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328
+(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 561.6 R
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
-280.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G
+573.6 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 297.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 309.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 321.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 333.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 350.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 367.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 379.2 Q(.)-.65 E 1.647
-(Arrays are assigned to using compound assignments of the form)108 396 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 408 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 420 R -.15(xe)-.15 G 2.663(da).15 G .163
-(rrays, if the optional brack)-2.663 F .163
-(ets and subscript are supplied, that inde)-.1 F 2.664(xi)-.15 G 2.664
-(sa)-2.664 G(ssigned)-2.664 E 1.411(to; otherwise the inde)108 432 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 444 Q
-(xing starts at zero.)-.15 E(When assigning to an associati)108 460.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 477.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
-489.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
+(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 590.4 R -.15(xe)
+-.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F
+4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F
+F2(name)4.962 E F0([)A F2(sub-)A(script)108 602.4 Q F0(]=)A F2(value)A
+F0 5.506(.T)C(he)-5.506 E F2(subscript)3.346 E F0 .507
+(is treated as an arithmetic e)3.687 F .507(xpression that must e)-.15 F
+-.25(va)-.25 G .507(luate to a number).25 F 5.507(.T)-.55 G 3.007(oe)
+-6.307 G(x-)-3.157 E 1.193(plicitly declare an inde)108 614.4 R -.15(xe)
+-.15 G 3.693(da).15 G(rray)-3.693 E 3.693(,u)-.65 G(se)-3.693 E F1
+(declar)3.693 E 3.693<65ad>-.18 G(a)-3.693 E F2(name)3.693 E F0(\(see)
+3.692 E F3 1.192(SHELL B)3.692 F(UIL)-.09 E 1.192(TIN COMMANDS)-.828 F
+F0(belo)3.442 E(w\).)-.25 E F1(de-)6.192 E(clar)108 626.4 Q 2.5<65ad>
+-.18 G(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0
+(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E
+(Associati)108 643.2 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E
+F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108
+660 Q .94(utes may be speci\214ed for an array v)-.2 F .941
+(ariable using the)-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1
+-.18(re)3.441 G(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F
+(attrib)3.441 E(ute)-.2 E(applies to all members of an array)108 672 Q
+(.)-.65 E 1.647
+(Arrays are assigned to using compound assignments of the form)108 688.8
+R F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647
+(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each)
+-4.147 F F2(value)108 700.8 Q F0 .211(may be of the form [)2.711 F F2
+(subscript)A F0(]=)A F2(string)A F0 5.211(.I)C(nde)-5.211 E -.15(xe)-.15
+G 2.711(da).15 G .212(rray assignments do not require an)-2.711 F .212
+(ything b)-.15 F(ut)-.2 E F2(string)2.712 E F0(.)A(Each)108 712.8 Q F2
+(value)2.53 E F0 .029(in the list is e)2.529 F .029
+(xpanded using all the shell e)-.15 F .029(xpansions described belo)-.15
+F 2.529(wu)-.25 G(nder)-2.529 E F3(EXP)2.529 E(ANSION)-.666 E/F4 9
+/Times-Roman@0 SF(.)A F0(When)4.529 E .995(assigning to inde)108 724.8 R
+-.15(xe)-.15 G 3.495(da).15 G .995(rrays, if the optional brack)-3.495 F
+.996(ets and subscript are supplied, that inde)-.1 F 3.496(xi)-.15 G
+3.496(sa)-3.496 G .996(ssigned to;)-3.496 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(19)190.395 E 0 Cg EP
+%%Page: 20 20
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .417
+(otherwise the inde)108 84 R 2.917(xo)-.15 G 2.917(ft)-2.917 G .417
+(he element assigned is the last inde)-2.917 F 2.917(xa)-.15 G .416
+(ssigned to by the statement plus one.)-2.917 F(Inde)5.416 E(x-)-.15 E
+(ing starts at zero.)108 96 Q 1.288(When assigning to an associati)108
+112.8 R 1.588 -.15(ve a)-.25 H(rray).15 E 3.788(,t)-.65 G 1.288(he w)
+-3.788 F 1.288(ords in a compound assignment may be either assignment)
+-.1 F .608
+(statements, for which the subscript is required, or a list of w)108
+124.8 R .608(ords that is interpreted as a sequence of alter)-.1 F(-)-.2
+E 1.956(nating k)108 136.8 R -.15(ey)-.1 G 4.456(sa).15 G 1.956(nd v)
+-4.456 F(alues:)-.25 E/F1 10/Times-Italic@0 SF(name)4.456 E F0(=)A/F2 10
+/Times-Bold@0 SF(\()A F1 -.1(ke)4.456 G 1.957(y1 value1 k)-.2 F -.3(ey)
+-.1 G 4.457(2v).3 G(alue2)-4.457 E F0(...)4.457 E F2(\))A F0 6.957(.T)C
+1.957(hese are treated identically to)-6.957 F F1(name)4.457 E F0(=)A F2
+(\()A F0([)108 148.8 Q F1 -.1(ke)C(y1)-.2 E F0(]=)A F1(value1)A F0([)
+3.133 E F1 -.1(ke)C(y2)-.2 E F0(]=)A F1(value2)A F0(...)3.133 E F2(\))A
+F0 5.633(.T)C .633(he \214rst w)-5.633 F .633
+(ord in the list determines ho)-.1 F 3.132(wt)-.25 G .632
+(he remaining w)-3.132 F .632(ords are inter)-.1 F(-)-.2 E .153
+(preted; all assignments in a list must be of the same type.)108 160.8 R
+.154(When using k)5.154 F -.15(ey)-.1 G(/v).15 E .154(alue pairs, the k)
+-.25 F -.15(ey)-.1 G 2.654(sm).15 G .154(ay not be)-2.654 F
+(missing or empty; a \214nal missing v)108 172.8 Q(alue is treated lik)
+-.25 E 2.5(et)-.1 G(he empty string.)-2.5 E .24
+(This syntax is also accepted by the)108 189.6 R F2(declar)2.74 E(e)-.18
+E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239
+(vidual array elements may be assigned to using the)-.25 F F1(name)108
+201.6 Q F0([)A F1(subscript)A F0(]=)A F1(value)A F0 1.917
+(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917
(hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray)
--4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.916(is sub-)
-4.597 F .115(scripted by a ne)108 501.6 R -.05(ga)-.15 G(ti).05 E .415
--.15(ve n)-.25 H(umber).15 E 2.615(,t)-.4 G .115
-(hat number is interpreted as relati)-2.615 F .415 -.15(ve t)-.25 H
-2.615(oo).15 G .116(ne greater than the maximum inde)-2.615 F(x)-.15 E
-(of)108 513.6 Q F3(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 525.6 Q(An)108 542.4 Q
-3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${)
--3.575 F F3(name)A F0([)A F3(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 554.4 R 4.041(xpansion. If)-.15 F F3
-(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E
+-4.417 E 4.417(,i)-.65 G(f)-4.417 E F1(name)4.777 E F0 1.917(is sub-)
+4.597 F .116(scripted by a ne)108 213.6 R -.05(ga)-.15 G(ti).05 E .416
+-.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115
+(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H
+2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E
+(of)108 225.6 Q F1(name)2.676 E F0 2.676(,s)C 2.676(on)-2.676 G -2.25
+-.15(eg a)-2.676 H(ti).15 E .476 -.15(ve i)-.25 H .177
+(ndices count back from the end of the array).15 F 2.677(,a)-.65 G .177
+(nd an inde)-2.677 F 2.677(xo)-.15 G 2.677<66ad>-2.677 G 2.677(1r)-2.677
+G .177(eferences the last el-)-2.677 F(ement.)108 237.6 Q(An)108 254.4 Q
+3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${)
+-3.576 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.075
+(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541
+(con\215icts with pathname e)108 266.4 R 4.041(xpansion. If)-.15 F F1
+(subscript)4.041 E F0(is)4.041 E F2(@)4.041 E F0(or)4.041 E F2(*)4.041 E
F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541
-(xpands to all members of)-.15 F F3(name)4.041 E F0(.)A 1.056
-(These subscripts dif)108 566.4 R 1.056(fer only when the w)-.25 F 1.057
-(ord appears within double quotes.)-.1 F 1.057(If the w)6.057 F 1.057
-(ord is double-quoted,)-.1 F(${)108 578.4 Q F3(name)A F0 .521([*]} e)B
-.521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52
+(xpands to all members of)-.15 F F1(name)4.042 E F0(.)A 1.057
+(These subscripts dif)108 278.4 R 1.057(fer only when the w)-.25 F 1.057
+(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056
+(ord is double-quoted,)-.1 F(${)108 290.4 Q F1(name)A F0 .52([*]} e)B
+.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.374(of the)108 590.4 R F2(IFS)3.874 E F0 1.374(special v)3.624 F 1.375
-(ariable, and ${)-.25 F F3(name)A F0 1.375([@]} e)B 1.375
-(xpands each element of)-.15 F F3(name)3.875 E F0 1.375(to a separate w)
-3.875 F 3.875(ord. When)-.1 F 2.028(there are no array members, ${)108
-602.4 R F3(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 614.4 R .759(ord, the e)-.1 F .759
+1.375(of the)108 302.4 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375
+(special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375
+([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.374
+(to a separate w)3.875 F 3.874(ord. When)-.1 F 2.027
+(there are no array members, ${)108 314.4 R F1(name)A F0 2.028([@]} e)B
+2.028(xpands to nothing.)-.15 F 2.028(If the double-quoted e)7.028 F
+2.028(xpansion occurs)-.15 F .759(within a w)108 326.4 R .759
+(ord, the e)-.1 F .759
(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
-626.4 R .516(xpansion of the last parameter is joined with the last par\
-t of the original w)-.15 F 3.015(ord. This)-.1 F .515(is analogous)3.015
-F .227(to the e)108 638.4 R .228(xpansion of the special parameters)-.15
-F F1(*)2.728 E F0(and)2.728 E F1(@)2.728 E F0(\(see)2.728 E F1 .228
-(Special P)2.728 F(arameters)-.1 E F0(abo)2.728 E -.15(ve)-.15 G 2.728
-(\). ${#).15 F F3(name)A F0([)A F3(subscript)A F0(]})A -.15(ex)108 650.4
-S .886(pands to the length of ${).15 F F3(name)A F0([)A F3(subscript)A
-F0 3.386(]}. If)B F3(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or)
-3.386 E F1(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886
-(xpansion is the number of ele-)-.15 F .294(ments in the array)108 662.4
-R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F3(subscript)3.135 E F0
+(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108
+338.4 R .516(xpansion of the last parameter is joined with the last par\
+t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016
+F .228(to the e)108 350.4 R .228(xpansion of the special parameters)-.15
+F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228
+(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727
+(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 362.4
+S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A
+F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or)
+3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886
+(xpansion is the number of ele-)-.15 F .295(ments in the array)108 374.4
+R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E F0
.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G
-2.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 674.4 R .929 -.15(ve t)
--.25 H 3.128(oo).15 G .628(ne greater than the maximum inde)-3.128 F
-3.128(xo)-.15 G 3.128(ft)-3.128 G .628(he array)-3.128 F 3.128(,s)-.65 G
-3.128(on)-3.128 G -2.25 -.15(eg a)-3.128 H(ti).15 E -.15(ve)-.25 G
-(indices count back from the end of the array)108 686.4 Q 2.5(,a)-.65 G
+2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294
+(luates to a number).25 F .628
+(less than zero, it is interpreted as relati)108 386.4 R .928 -.15(ve t)
+-.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F
+3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G
+3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G
+(indices count back from the end of the array)108 398.4 Q 2.5(,a)-.65 G
(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
-703.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
+415.2 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G
.595(lent to referencing the array with a subscript of).25 F 2.5(0. An)
-108 715.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
-E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F1(bash)2.5 E
-F0(will create an array if necessary)2.5 E(.)-.65 E(GNU Bash 5.0)72 768
-Q(2018 December 7)139.295 E(19)188.455 E 0 Cg EP
-%%Page: 20 20
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An array v)108 84
-Q(ariable is considered set if a subscript has been assigned a v)-.25 E
+108 427.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25
+E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E
+F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 444 Q
+(ariable is considered set if a subscript has been assigned a v)-.25 E
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 100.8 R -.15(ey)-.1 G 2.918(s\()
-.15 G .418(indices\) of an array as well as the v)-2.918 F 2.917
-(alues. ${)-.25 F/F1 10/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF
-(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1(!)A F2(name)A F0([)A F2(*)A
-F0(]})A -.15(ex)108 112.8 S .749
-(pand to the indices assigned in array v).15 F(ariable)-.25 E F2(name)
-3.249 E F0 5.749(.T)C .75
+.417(It is possible to obtain the k)108 460.8 R -.15(ey)-.1 G 2.918(s\()
+.15 G .418(indices\) of an array as well as the v)-2.918 F 2.918
+(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F2
+(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 472.8 S .75
+(pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name)
+3.249 E F0 5.749(.T)C .749
(he treatment when in double quotes is similar to)-5.749 F(the e)108
-124.8 Q(xpansion of the special parameters)-.15 E F2(@)2.5 E F0(and)2.5
-E F2(*)2.5 E F0(within double quotes.)2.5 E(The)108 141.6 Q F1(unset)
-2.767 E F0 -.2(bu)2.767 G .267(iltin is used to destro).2 F 2.767(ya)-.1
-G(rrays.)-2.767 E F1(unset)5.267 E F2(name)2.767 E F0([)A F2(subscript)A
+484.8 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5
+E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 501.6 Q F2(unset)
+2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1
+G(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A
F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x)
--.15 E F2(sub-)2.766 E(script)108 153.6 Q F0 3.974(,f)C 1.474
-(or both inde)-3.974 F -.15(xe)-.15 G 3.974(da).15 G 1.474(nd associati)
--3.974 F 1.774 -.15(ve a)-.25 H 3.974(rrays. Ne).15 F -.05(ga)-.15 G(ti)
-.05 E 1.774 -.15(ve s)-.25 H 1.474(ubscripts to inde).15 F -.15(xe)-.15
-G 3.975(da).15 G 1.475(rrays are interpreted as)-3.975 F .615
-(described abo)108 165.6 R -.15(ve)-.15 G 5.615(.U).15 G .615
-(nsetting the last element of an array v)-5.615 F .614
-(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.614 E F2
-(name)3.114 E F0(,)A(where)108 177.6 Q F2(name)2.5 E F0(is an array)2.5
-E 2.5(,o)-.65 G(r)-2.5 E F1(unset)2.5 E F2(name)2.5 E F0([)A F2
-(subscript)A F0(], where)A F2(subscript)2.5 E F0(is)2.5 E F1(*)2.5 E F0
-(or)2.5 E F1(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G
-(he entire array)-2.5 E(.)-.65 E .847(When using a v)108 194.4 R .848
-(ariable name with a subscript as an ar)-.25 F .848
-(gument to a command, such as with)-.18 F F1(unset)3.348 E F0 3.348(,w)C
-(ithout)-3.348 E .345(using the w)108 206.4 R .345(ord e)-.1 F .345
-(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 2.845(,t).15 G .345
-(he ar)-2.845 F .344(gument is subject to pathname e)-.18 F 2.844
-(xpansion. If)-.15 F(path-)2.844 E(name e)108 218.4 Q
+-.15 E F1(sub-)2.767 E(script)108 513.6 Q F0 2.858(,f)C .358
+(or both inde)-2.858 F -.15(xe)-.15 G 2.858(da).15 G .358(nd associati)
+-2.858 F .658 -.15(ve a)-.25 H 2.858(rrays. Ne).15 F -.05(ga)-.15 G(ti)
+.05 E .658 -.15(ve s)-.25 H .358(ubscripts to inde).15 F -.15(xe)-.15 G
+2.858(da).15 G .358(rrays are interpreted as de-)-2.858 F 1.204
+(scribed abo)108 525.6 R -.15(ve)-.15 G 6.204(.U).15 G 1.204
+(nsetting the last element of an array v)-6.204 F 1.205
+(ariable does not unset the v)-.25 F(ariable.)-.25 E F2(unset)6.205 E F1
+(name)3.705 E F0(,)A(where)108 537.6 Q F1(name)2.5 E F0(is an array)2.5
+E 2.5(,o)-.65 G(r)-2.5 E F2(unset)2.5 E F1(name)2.5 E F0([)A F1
+(subscript)A F0(], where)A F1(subscript)2.5 E F0(is)2.5 E F2(*)2.5 E F0
+(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E -.15(ve)-.15 G 2.5(st).15 G
+(he entire array)-2.5 E(.)-.65 E .029(When using a v)108 554.4 R .029
+(ariable name with a subscript as an ar)-.25 F .028
+(gument to a command, such as with)-.18 F F2(unset)2.528 E F0 2.528(,w)C
+.028(ithout us-)-2.528 F .937(ing the w)108 566.4 R .937(ord e)-.1 F
+.937(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 3.437(,t).15 G
+.937(he ar)-3.437 F .938(gument is subject to pathname e)-.18 F 3.438
+(xpansion. If)-.15 F(path-)3.438 E(name e)108 578.4 Q
(xpansion is not desired, the ar)-.15 E(gument should be quoted.)-.18 E
-(The)108 235.2 Q F1(declar)3.573 E(e)-.18 E F0(,)A F1(local)3.573 E F0
-3.573(,a)C(nd)-3.573 E F1 -.18(re)3.573 G(adonly).18 E F0 -.2(bu)3.573 G
-1.073(iltins each accept a).2 F F1<ad61>3.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 F1<ad41>3.574 E F0 .339
-(option to specify an associati)108 247.2 R .638 -.15(ve a)-.25 H(rray)
-.15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,)
--2.838 F F1<ad41>2.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 259.2 R F1<ad61>2.941 E F0 .441
-(option to assign a list of w)2.941 F .441
-(ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he)
--5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2
-(bu)108 271.2 S(iltins display array v).2 E(alues in a w)-.25 E
-(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F3 10.95
-/Times-Bold@0 SF(EXP)72 288 Q(ANSION)-.81 E F0 .76(Expansion is perform\
-ed on the command line after it has been split into w)108 300 R 3.26
+(The)108 595.2 Q F2(declar)2.684 E(e)-.18 E F0(,)A F2(local)2.684 E F0
+2.684(,a)C(nd)-2.684 E F2 -.18(re)2.684 G(adonly).18 E F0 -.2(bu)2.684 G
+.184(iltins each accept a).2 F F2<ad61>2.684 E F0 .184
+(option to specify an inde)2.684 F -.15(xe)-.15 G 2.683(da).15 G .183
+(rray and a)-2.683 F F2<ad41>2.683 E F0(op-)2.683 E .041
+(tion to specify an associati)108 607.2 R .341 -.15(ve a)-.25 H(rray).15
+E 5.041(.I)-.65 G 2.541(fb)-5.041 G .041(oth options are supplied,)
+-2.541 F F2<ad41>2.541 E F0(tak)2.541 E .041(es precedence.)-.1 F(The)
+5.041 E F2 -.18(re)2.542 G(ad).18 E F0 -.2(bu)2.542 G .042(iltin ac-).2
+F .864(cepts a)108 619.2 R F2<ad61>3.364 E F0 .864
+(option to assign a list of w)3.364 F .864
+(ords read from the standard input to an array)-.1 F 5.863(.T)-.65 G(he)
+-5.863 E F2(set)3.363 E F0(and)3.363 E F2(declar)3.363 E(e)-.18 E F0 -.2
+(bu)108 631.2 S(iltins display array v).2 E(alues in a w)-.25 E
+(ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95
+/Times-Bold@0 SF(EXP)72 648 Q(ANSION)-.81 E F0 .76(Expansion is perform\
+ed on the command line after it has been split into w)108 660 R 3.26
(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 312 S .369(pansion performed:).15 F F2(br)
-2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .369(tilde e)
-2.869 F(xpansion)-.2 E F0(,).24 E F2(par)2.869 E .369
-(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F2 .37
-(command sub-)2.869 F(stitution)108 324 Q F0(,).24 E F2(arithmetic e)2.5
-E(xpansion)-.2 E F0(,).24 E F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E
-F0 2.5(,a).22 G(nd)-2.5 E F2(pathname e)2.5 E(xpansion)-.2 E F0(.).24 E
-.419(The order of e)108 340.8 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 352.8 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 364.8 Q .257
-(On systems that can support it, there is an additional e)108 381.6 R
-.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F2(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 393.6 Q 2.5(,v)-.4 G
+(inds of)-3.26 F -.15(ex)108 672 S .201(pansion performed:).15 F F1(br)
+2.971 E .201(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .201(tilde e)
+2.831 F(xpansion)-.2 E F0(,).24 E F1(par)3.951 E .201
+(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .2
+(command sub-)2.901 F(stitution)108 684 Q F0(,).24 E F1(arithmetic e)
+2.83 E(xpansion)-.2 E F0(,).24 E F1(wor)2.84 E 2.5(ds)-.37 G(plitting)
+-2.5 E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)3.75 E(xpansion)-.2 E F0
+(.).24 E .418(The order of e)108 700.8 R .418(xpansions is: brace e)-.15
+F .418(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F
+.419(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 712.8
+S .196(pansion, and command substitution \(done in a left-to-right f).15
+F .195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-)
+-.15 E(sion.)108 724.8 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
+(20)190.395 E 0 Cg EP
+%%Page: 21 21
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .257
+(On systems that can support it, there is an additional e)108 84 R .257
+(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E/F1 10/Times-Italic@0 SF
+(pr)2.757 E .257(ocess substitution)-.45 F F0 5.257(.T)C .257
+(his is per)-5.257 F(-)-.2 E
+(formed at the same time as tilde, parameter)108 96 Q 2.5(,v)-.4 G
(ariable, and arithmetic e)-2.75 E(xpansion and command substitution.)
--.15 E .002(After these e)108 410.4 R .003
+-.15 E .003(After these e)108 112.8 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 422.4 Q .3 -.15(ve b)-.2 H
-(een quoted themselv).15 E(es \()-.15 E F2(quote r)A(emo)-.37 E(val)-.1
-E F0(\).)A 1.191(Only brace e)108 439.2 R 1.191(xpansion, w)-.15 F 1.191
-(ord splitting, and pathname e)-.1 F 1.191
-(xpansion can increase the number of w)-.15 F 1.19(ords of the)-.1 F
--.15(ex)108 451.2 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15
-F 1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665
-(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the)
--.15 F -.15(ex)108 463.2 S 1.245(pansions of ").15 F F1($@)A F0 3.745
-("a)C 1.245(nd ")-3.745 F F1(${)A F2(name)A F1([@]})A F0 1.245
-(", and, in most cases,)B F1($*)3.745 E F0(and)3.745 E F1(${)3.744 E F2
-(name)A F1([*]})A F0 1.244(as e)3.744 F 1.244(xplained abo)-.15 F 1.544
--.15(ve \()-.15 H(see).15 E/F4 9/Times-Bold@0 SF -.666(PA)108 475.2 S
-(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 492 Q
-F2(Br)108.58 504 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
+-.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002
+(nless the)-2.502 F(y)-.15 E(ha)108 124.8 Q .3 -.15(ve b)-.2 H
+(een quoted themselv).15 E(es \()-.15 E F1(quote r)A(emo)-.37 E(val)-.1
+E F0(\).)A .171(Only brace e)108 141.6 R .171(xpansion, w)-.15 F .171
+(ord splitting, and pathname e)-.1 F .171
+(xpansion can increase the number of w)-.15 F .172(ords of the e)-.1 F
+(x-)-.15 E .777(pansion; other e)108 153.6 R .776(xpansions e)-.15 F
+.776(xpand a single w)-.15 F .776(ord to a single w)-.1 F 3.276
+(ord. The)-.1 F .776(only e)3.276 F .776(xceptions to this are the e)
+-.15 F(x-)-.15 E .695(pansions of ")108 165.6 R/F2 10/Times-Bold@0 SF
+($@)A F0 3.195("a)C .695(nd ")-3.195 F F2(${)A F1(name)A F2([@]})A F0
+.696(", and, in most cases,)B F2($*)3.196 E F0(and)3.196 E F2(${)3.196 E
+F1(name)A F2([*]})A F0 .696(as e)3.196 F .696(xplained abo)-.15 F .996
+-.15(ve \()-.15 H(see).15 E/F3 9/Times-Bold@0 SF -.666(PA)3.196 G(-).666
+E(RAMETERS)108 177.6 Q/F4 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87
+194.4 Q F1(Br)108.58 206.4 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606
(is a mechanism by which arbitrary strings may be generated.)3.346 F
-.606(This mechanism is similar)5.606 F(to)108 516 Q F2 .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 218.4 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 528 R F2(pr)2.651 E(eamble)
--.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151
+(he)-2.915 E .074(form of an optional)108 230.4 R F1(pr)3.823 E(eamble)
+-.37 E F0 2.573(,f).18 G(ollo)-2.573 E .073
(wed by either a series of comma-separated strings or a sequence e)-.25
-F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 540 R .563
-(wed by an optional)-.25 F F2(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 552 R .659(xpanding left to)-.15 F(right.)108
-564 Q .719(Brace e)108 580.8 R .719(xpansions may be nested.)-.15 F .719
-(The results of each e)5.719 F .719
+F(xpres-)-.15 E .489(sion between a pair of braces, follo)108 242.4 R
+.489(wed by an optional)-.25 F F1(postscript)4.239 E F0 5.49(.T).68 G
+.49(he preamble is pre\214x)-5.49 F .49(ed to each string)-.15 F .659(c\
+ontained within the braces, and the postscript is then appended to each\
+ resulting string, e)108 254.4 R .658(xpanding left to)-.15 F(right.)108
+266.4 Q .718(Brace e)108 283.2 R .719(xpansions may be nested.)-.15 F
+.719(The results of each e)5.719 F .719
(xpanded string are not sorted; left to right order is)-.15 F(preserv)
-108 592.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 609.6 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742
-(es the form)-.1 F F1({)3.242 E F2(x)A F1(..)A F2(y)A F1([..)A F2(incr)A
-F1(]})A F0 3.242(,w)C(here)-3.242 E F2(x)3.242 E F0(and)3.243 E F2(y)
-3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,)
--.15 F(and)108 621.6 Q F2(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G
+108 295.2 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0
+(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As)
+108 312 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743
+(es the form)-.1 F F2({)3.243 E F1(x)A F2(..)A F1(y)A F2([..)A F1(incr)A
+F2(]})A F0 3.243(,w)C(here)-3.243 E F1(x)3.243 E F0(and)3.242 E F1(y)
+3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,)
+-.15 F(and)108 324 Q F1(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G
.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G
.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532
-(xpression e)-.15 F .531(xpands to each)-.15 F .077(number between)108
-633.6 R F2(x)2.577 E F0(and)2.577 E F2(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 F2(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 645.6 R .015(When either)5.015 F F2(x)2.515 E F0(or)
-2.515 E F2(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 657.6 R
-6.143(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F
-(xpression)-.15 E -.15(ex)108 669.6 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 .983
-(that both)108 681.6 R F2(x)3.483 E F0(and)3.483 E F2(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 693.6 Q(The def)5 E
-(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108
-710.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 1.208
-(are preserv)108 722.4 R 1.208(ed in the result.)-.15 F 1.209
-(It is strictly te)6.209 F(xtual.)-.15 E F1(Bash)6.209 E F0 1.209
-(does not apply an)3.709 F 3.709(ys)-.15 G 1.209
-(yntactic interpretation to the)-3.709 F(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(20)188.455 E 0 Cg EP
-%%Page: 21 21
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(conte)108 84 Q
+(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108
+336 R F1(x)2.578 E F0(and)2.578 E F1(y)2.578 E F0 2.578(,i)C(nclusi)
+-2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077
+(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .077
+(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014
+(same width.)108 348 R .014(When either)5.014 F F1(x)2.514 E F0(or)2.514
+E F1(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell attempts \
+to force all generated terms to contain)-.15 F 1.143
+(the same number of digits, zero-padding where necessary)108 360 R 6.143
+(.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F(xpression)
+-.15 E -.15(ex)108 372 S 1.064(pands to each character le).15 F 1.064
+(xicographically between)-.15 F F1(x)3.564 E F0(and)3.564 E F1(y)3.564 E
+F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G 1.064
+(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .245
+(that both)108 384 R F1(x)2.745 E F0(and)2.745 E F1(y)2.745 E F0 .245
+(must be of the same type.)2.745 F .244
+(When the increment is supplied, it is used as the dif)5.245 F .244
+(ference be-)-.25 F(tween each term.)108 396 Q(The def)5 E
+(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108
+412.8 R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581
+(ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582
+(haracters special to other e)-3.082 F(xpansions)-.15 E .016
+(are preserv)108 424.8 R .016(ed in the result.)-.15 F .016
+(It is strictly te)5.016 F(xtual.)-.15 E F2(Bash)5.016 E F0 .015
+(does not apply an)2.516 F 2.515(ys)-.15 G .015
+(yntactic interpretation to the con-)-2.515 F(te)108 436.8 Q
(xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.)
--.15 E 3.633(Ac)108 100.8 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 112.8 R 3.441
-(alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441
-(ncorrectly formed brace e)-5.941 F 3.441(xpansion is left)-.15 F 2.755
-(unchanged. A)108 124.8 R/F1 10/Times-Bold@0 SF({)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 136.8 R 2.91(oa)-.8 G -.2(vo)-3.11 G .41
-(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F
-F1(${)2.911 E F0 .411(is not considered eligible for brace e)2.911 F
-(xpan-)-.15 E(sion, and inhibits brace e)108 148.8 Q
-(xpansion until the closing)-.15 E F1(})2.5 E F0(.)A 1.476(This constru\
+-.15 E 2.501(Ac)108 453.6 S .001(orrectly-formed brace e)-2.501 F .001(\
+xpansion must contain unquoted opening and closing braces, and at least\
+ one un-)-.15 F .458(quoted comma or a v)108 465.6 R .458
+(alid sequence e)-.25 F 2.958(xpression. An)-.15 F 2.958(yi)-.15 G .458
+(ncorrectly formed brace e)-2.958 F .457(xpansion is left unchanged.)
+-.15 F(A)108 477.6 Q F2({)2.521 E F0(or)2.521 E F2(,)2.521 E F0 .021
+(may be quoted with a backslash to pre)2.521 F -.15(ve)-.25 G .022
+(nt its being considered part of a brace e).15 F 2.522(xpression. T)-.15
+F 2.522(oa)-.8 G -.2(vo)-2.722 G(id).2 E .172
+(con\215icts with parameter e)108 489.6 R .172(xpansion, the string)-.15
+F F2(${)2.672 E F0 .172(is not considered eligible for brace e)2.672 F
+.172(xpansion, and inhibits)-.15 F(brace e)108 501.6 Q
+(xpansion until the closing)-.15 E F2(})2.5 E F0(.)A 1.476(This constru\
ct is typically used as shorthand when the common pre\214x of the strin\
-gs to be generated is)108 165.6 R(longer than in the abo)108 177.6 Q .3
+gs to be generated is)108 518.4 R(longer than in the abo)108 530.4 Q .3
-.15(ve ex)-.15 H(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144
-194.4 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 206.4 Q(cho)144
-218.4 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 235.2 R .618
+547.2 Q -.65(w,)-.25 G(dist,b).65 E(ugs})-.2 E(or)108 559.2 Q(cho)144
+571.2 Q(wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15
+E(w_e)-.25 E(x}})-.15 E .618(Brace e)108 588 R .618
(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 247.2 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 259.2 Q -.15
+.618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618
+(does not treat open-)3.118 F .247
+(ing or closing braces specially when the)108 600 R 2.747(ya)-.15 G .247
+(ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248
+(es them in the output.)-.15 F F2(Bash)5.248 E F0(remo)108 612 Q -.15
(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 10/Times-Italic@0 SF(\214le{1,2})108 271.2 Q F0
-.515(appears identically in the output.)3.015 F .515(The same w)5.515 F
-.515(ord is output as)-.1 F F2 .514(\214le1 \214le2)4.925 F F0 .514
-(after e)3.034 F .514(xpansion by)-.15 F F1(bash)3.014 E F0(.)A .436
-(If strict compatibility with)108 283.2 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 .437
-(xpansion with the)-.15 F F1(+B)108 295.2 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 312 S(lde Expansion).18 E F0 1.087(If a w)108 324 R 1.087(ord be)-.1
-F 1.087(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.086
+(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh)
+3.53 E F0(as)3.53 E F1(\214le{1,2})108 624 Q F0 .514
+(appears identically in the output.)3.014 F .515(The same w)5.515 F .515
+(ord is output as)-.1 F F1 .515(\214le1 \214le2)4.925 F F0 .515(after e)
+3.035 F .515(xpansion by)-.15 F F2(bash)3.015 E F0(.)A .437
+(If strict compatibility with)108 636 R F2(sh)2.936 E F0 .436
+(is desired, start)2.936 F F2(bash)2.936 E F0 .436(with the)2.936 F F2
+(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436
+(xpansion with the)-.15 F F2(+B)108 648 Q F0(option to the)2.5 E F2(set)
+2.5 E F0(command \(see)2.5 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)
+-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 664.8 S(lde Expansion)
+.18 E F0 1.086(If a w)108 676.8 R 1.086(ord be)-.1 F 1.086
+(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.087
('\), all of the characters preceding the \214rst unquoted)B .185(slash\
\(or all characters, if there is no unquoted slash\) are considered a)
-108 336 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn)
--5.185 G .185(one of the characters)-2.685 F .726(in the tilde-pre\214x\
- are quoted, the characters in the tilde-pre\214x follo)108 348 R .725
-(wing the tilde are treated as a possible)-.25 F F2(lo)108 360 Q .522
-(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522
+108 688.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn)
+-5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\
+ are quoted, the characters in the tilde-pre\214x follo)108 700.8 R .726
+(wing the tilde are treated as a possible)-.25 F F1(lo)108 712.8 Q .523
+(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523
(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 F3(HOME)108 372 Q/F4 9
-/Times-Roman@0 SF(.)A F0(If)4.787 E F3(HOME)2.787 E F0 .287
-(is unset, the home directory of the user e)2.537 F -.15(xe)-.15 G .286
-(cuting the shell is substituted instead.).15 F(Other)5.286 E(-)-.2 E(w\
-ise, the tilde-pre\214x is replaced with the home directory associated \
-with the speci\214ed login name.)108 384 Q .092
-(If the tilde-pre\214x is a `~+', the v)108 400.8 R .092
-(alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092
-(replaces the tilde-pre\214x.)2.342 F .093(If the tilde-pre\214x is)
-5.093 F 3.404(a`)108 412.8 S .904(~\255', the v)-3.404 F .904
-(alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0
-.904(if it is set, is substituted.)3.154 F .903(If the characters follo)
-5.903 F .903(wing the)-.25 F 1.641
-(tilde in the tilde-pre\214x consist of a number)108 424.8 R F2(N)4.141
-E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.642
-(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.438(replaced w\
-ith the corresponding element from the directory stack, as it w)108
-436.8 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu)
-108 448.8 S .454(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.954(dw).1 G
-.454(ith the tilde-pre\214x as an ar)-2.954 F 2.954(gument. If)-.18 F
-.454(the characters follo)2.954 F .455
-(wing the tilde in the tilde-pre\214x)-.25 F
-(consist of a number without a leading `+' or `\255', `+' is assumed.)
-108 460.8 Q(If the login name is in)108 477.6 Q -.25(va)-.4 G
-(lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E
-(ord is unchanged.)-.1 E .167(Each v)108 494.4 R .167
-(ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x)
--.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E
-F0 .167(or the \214rst)2.667 F F1(=)2.666 E F0 5.166(.I)C(n)-5.166 E
-.467(these cases, tilde e)108 506.4 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
-518.4 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT)
--.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H)
-.855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E
-(alue.)-.25 E .024(Bash also performs tilde e)108 535.2 R .024
-(xpansion on w)-.15 F .023(ords satisfying the conditions of v)-.1 F
-.023(ariable assignments \(as described)-.25 F(abo)108 547.2 Q .769 -.15
-(ve u)-.15 H(nder).15 E F3 -.666(PA)2.969 G(RAMETERS).666 E F4(\))A F0
-.469(when the)2.719 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469
-(guments to simple commands.)-.18 F .47(Bash does not do this,)5.469 F
--.15(ex)108 559.2 S(cept for the).15 E F2(declar)2.5 E(ation)-.15 E F0
-(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F2
-(posix mode)2.5 E F0(.)A F1 -.1(Pa)87 576 S(rameter Expansion).1 E F0
-1.606(The `)108 588 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 600 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 612 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 624
-Q 1.189
-(When braces are used, the matching ending brace is the \214rst `)108
-640.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
-652.8 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15
-(ex)108 664.8 S(pansion.).15 E(${)108 681.6 Q F2(par)A(ameter)-.15 E F0
-(})A 1.204(The v)144 693.6 R 1.204(alue of)-.25 F F2(par)3.704 E(ameter)
--.15 E F0 1.204(is substituted.)3.704 F 1.204
-(The braces are required when)6.204 F F2(par)4.955 E(ameter)-.15 E F0
-1.205(is a positional)4.435 F .264
-(parameter with more than one digit, or when)144 705.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.676
-(be interpreted as part of its name.)144 717.6 R(The)7.677 E F2(par)
-5.177 E(ameter)-.15 E F0 2.677(is a shell parameter as described abo)
-5.177 F -.15(ve)-.15 G F1 -.74(PA)144 729.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(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(21)188.455 E 0 Cg
-EP
+-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 724.8 Q F4
+(.)A F0(If)6.735 E F3(HOME)4.735 E F0 2.236
+(is unset, the home directory of the user e)4.486 F -.15(xe)-.15 G 2.236
+(cuting the shell is substituted instead.).15 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(21)190.395 E 0 Cg EP
%%Page: 22 22
%%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 .347
-(If the \214rst character of)108 84 R/F1 10/Times-Italic@0 SF(par)2.846
-E(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F
-/F2 10/Times-Bold@0 SF(!)A F0 .346(\), and)B F1(par)2.846 E(ameter)-.15
-E F0 .346(is not a)2.846 F F1(namer)2.846 E(ef)-.37 E F0 2.846(,i)C
-2.846(ti)-2.846 G(ntroduces)-2.846 E 2.906(al)108 96 S -2.15 -.25(ev e)
--2.906 H 2.906(lo).25 G 2.906(fi)-2.906 G(ndirection.)-2.906 E F2(Bash)
-5.406 E F0 .406(uses the v)2.906 F .406(alue formed by e)-.25 F .406
-(xpanding the rest of)-.15 F F1(par)2.906 E(ameter)-.15 E F0 .406
-(as the ne)2.906 F(w)-.25 E F1(par)2.907 E(ame-)-.15 E(ter)108 108 Q F0
-2.579(;t)C .079(his is then e)-2.579 F .079(xpanded and that v)-.15 F
-.079(alue is used in the rest of the e)-.25 F .078
-(xpansion, rather than the e)-.15 F .078(xpansion of the)-.15 F
-(original)108 120 Q F1(par)2.542 E(ameter)-.15 E F0 5.042(.T)C .042
-(his is kno)-5.042 F .042(wn as)-.25 F F1(indir)2.543 E .043(ect e)-.37
-F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .043
-(alue is subject to tilde e)-.25 F .043(xpansion, parameter)-.15 F -.15
-(ex)108 132 S .249(pansion, command substitution, and arithmetic e).15 F
-2.749(xpansion. If)-.15 F F1(par)2.749 E(ameter)-.15 E F0 .248
-(is a nameref, this e)2.749 F .248(xpands to the)-.15 F 1.51
-(name of the parameter referenced by)108 144 R F1(par)4.01 E(ameter)-.15
-E F0 1.51(instead of performing the complete indirect e)4.01 F
-(xpansion.)-.15 E .388(The e)108 156 R .387(xceptions to this are the e)
--.15 F .387(xpansions of ${)-.15 F F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A
-F0 2.887(}a)C .387(nd ${)-2.887 F F2(!)A F1(name)A F0([)A F1(@)A F0 .387
-(]} described belo)B 4.187 -.65(w. T)-.25 H .387(he e).65 F(xclama-)-.15
-E(tion point must immediately follo)108 168 Q 2.5(wt)-.25 G
-(he left brace in order to introduce indirection.)-2.5 E .334
-(In each of the cases belo)108 184.8 R -.65(w,)-.25 G F1(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
-196.8 Q(xpansion.)-.15 E 1.09(When not performing substring e)108 213.6
-R 1.089(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25
-G(e.g.,)-3.589 E F2(:-)3.589 E F0(\),)A F2(bash)3.589 E F0 1.089
-(tests for a)3.589 F(parameter that is unset or null.)108 225.6 Q(Omitt\
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(Otherwise, the ti\
+lde-pre\214x is replaced with the home directory associated with the sp\
+eci\214ed login name.)108 84 Q .093
+(If the tilde-pre\214x is a `~+', the v)108 100.8 R .092
+(alue of the shell v)-.25 F(ariable)-.25 E/F1 9/Times-Bold@0 SF(PWD)
+2.592 E F0 .092(replaces the tilde-pre\214x.)2.342 F .092
+(If the tilde-pre\214x is)5.092 F 3.403(a`)108 112.8 S .903
+(~\255', the v)-3.403 F .903(alue of the shell v)-.25 F(ariable)-.25 E
+F1(OLDPWD)3.404 E/F2 9/Times-Roman@0 SF(,)A F0 .904
+(if it is set, is substituted.)3.154 F .904(If the characters follo)
+5.904 F .904(wing the)-.25 F .88
+(tilde in the tilde-pre\214x consist of a number)108 124.8 R/F3 10
+/Times-Italic@0 SF(N)3.38 E F0 3.38(,o)C .88(ptionally pre\214x)-3.38 F
+.879(ed by a `+' or a `\255', the tilde-pre\214x is re-)-.15 F .138(pla\
+ced with the corresponding element from the directory stack, as it w)108
+136.8 R .138(ould be displayed by the)-.1 F/F4 10/Times-Bold@0 SF(dirs)
+2.639 E F0 -.2(bu)2.639 G(iltin).2 E(in)108 148.8 Q -.2(vo)-.4 G -.1(ke)
+.2 G 2.839(dw).1 G .338(ith the tilde-pre\214x as an ar)-2.839 F 2.838
+(gument. If)-.18 F .338(the characters follo)2.838 F .338
+(wing the tilde in the tilde-pre\214x consist)-.25 F
+(of a number without a leading `+' or `\255', `+' is assumed.)108 160.8
+Q(If the login name is in)108 177.6 Q -.25(va)-.4 G(lid, or the tilde e)
+.25 E(xpansion f)-.15 E(ails, the w)-.1 E(ord is unchanged.)-.1 E .166
+(Each v)108 194.4 R .167(ariable assignment is check)-.25 F .167
+(ed for unquoted tilde-pre\214x)-.1 F .167(es immediately follo)-.15 F
+.167(wing a)-.25 F F4(:)2.667 E F0 .167(or the \214rst)2.667 F F4(=)
+2.667 E F0 5.167(.I)C(n)-5.167 E .468(these cases, tilde e)108 206.4 R
+.468(xpansion is also performed.)-.15 F(Consequently)5.467 E 2.967(,o)
+-.65 G .467(ne may use \214lenames with tildes in assign-)-2.967 F
+(ments to)108 218.4 Q F1 -.666(PA)2.5 G(TH)-.189 E F2(,)A F1(MAILP)2.25
+E -.855(AT)-.666 G(H).855 E F2(,)A F0(and)2.25 E F1(CDP)2.5 E -.855(AT)
+-.666 G(H).855 E F2(,)A F0(and the shell assigns the e)2.25 E(xpanded v)
+-.15 E(alue.)-.25 E .023(Bash also performs tilde e)108 235.2 R .023
+(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F
+.024(ariable assignments \(as described)-.25 F(abo)108 247.2 Q .77 -.15
+(ve u)-.15 H(nder).15 E F1 -.666(PA)2.97 G(RAMETERS).666 E F2(\))A F0
+.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469
+(guments to simple commands.)-.18 F .469(Bash does not do this,)5.469 F
+-.15(ex)108 259.2 S(cept for the).15 E F3(declar)2.5 E(ation)-.15 E F0
+(commands listed abo)2.5 E -.15(ve)-.15 G 2.5(,w).15 G(hen in)-2.5 E F3
+(posix mode)2.5 E F0(.)A F4 -.1(Pa)87 276 S(rameter Expansion).1 E F0
+.199(The `)108 288 R F4($)A F0 2.699('c)C .199
+(haracter introduces parameter e)-2.699 F .199
+(xpansion, command substitution, or arithmetic e)-.15 F 2.7
+(xpansion. The)-.15 F(pa-)2.7 E .314(rameter name or symbol to be e)108
+300 R .314(xpanded may be enclosed in braces, which are optional b)-.15
+F .314(ut serv)-.2 F 2.813(et)-.15 G 2.813(op)-2.813 G(rotect)-2.813 E
+.414(the v)108 312 R .414(ariable to be e)-.25 F .414
+(xpanded from characters immediately follo)-.15 F .415
+(wing it which could be interpreted as part of)-.25 F(the name.)108 324
+Q 1.19(When braces are used, the matching ending brace is the \214rst `)
+108 340.8 R F4(})A F0 3.689('n)C 1.189
+(ot escaped by a backslash or within a)-3.689 F .821
+(quoted string, and not within an embedded arithmetic e)108 352.8 R .822
+(xpansion, command substitution, or parameter e)-.15 F(x-)-.15 E
+(pansion.)108 364.8 Q(${)108 381.6 Q F3(par)A(ameter)-.15 E F0(})A .106
+(The v)144 393.6 R .106(alue of)-.25 F F3(par)2.606 E(ameter)-.15 E F0
+.106(is substituted.)2.606 F .106(The braces are required when)5.106 F
+F3(par)3.856 E(ameter)-.15 E F0 .106(is a positional pa-)3.336 F .11
+(rameter with more than one digit, or when)144 405.6 R F3(par)3.86 E
+(ameter)-.15 E F0 .111(is follo)3.341 F .111
+(wed by a character which is not to be)-.25 F .208
+(interpreted as part of its name.)144 417.6 R(The)5.208 E F3(par)2.708 E
+(ameter)-.15 E F0 .208(is a shell parameter as described abo)2.708 F
+-.15(ve)-.15 G F4 -.74(PA)2.858 G(RAME-).74 E(TERS)144 429.6 Q F0 2.5
+(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F4(Arrays)A
+F0(\).)A .346(If the \214rst character of)108 446.4 R F3(par)2.846 E
+(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \()-.15 F
+F4(!)A F0 .346(\), and)B F3(par)2.846 E(ameter)-.15 E F0 .346(is not a)
+2.846 F F3(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G
+(ntroduces)-2.847 E 2.907(al)108 458.4 S -2.15 -.25(ev e)-2.907 H 2.907
+(lo).25 G 2.906(fi)-2.907 G(ndirection.)-2.906 E F4(Bash)5.406 E F0 .406
+(uses the v)2.906 F .406(alue formed by e)-.25 F .406
+(xpanding the rest of)-.15 F F3(par)2.906 E(ameter)-.15 E F0 .406
+(as the ne)2.906 F(w)-.25 E F3(par)2.906 E(ame-)-.15 E(ter)108 470.4 Q
+F0 2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F
+.079(alue is used in the rest of the e)-.25 F .079
+(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F
+(original)108 482.4 Q F3(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043
+(his is kno)-5.043 F .043(wn as)-.25 F F3(indir)2.543 E .043(ect e)-.37
+F(xpansion)-.2 E F0 5.043(.T)C .043(he v)-5.043 F .042
+(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15
+(ex)108 494.4 S .248(pansion, command substitution, and arithmetic e).15
+F 2.748(xpansion. If)-.15 F F3(par)2.749 E(ameter)-.15 E F0 .249
+(is a nameref, this e)2.749 F .249(xpands to the)-.15 F 1.51
+(name of the parameter referenced by)108 506.4 R F3(par)4.01 E(ameter)
+-.15 E F0 1.51(instead of performing the complete indirect e)4.01 F
+(xpansion.)-.15 E .387(The e)108 518.4 R .387
+(xceptions to this are the e)-.15 F .387(xpansions of ${)-.15 F F4(!)A
+F3(pr)A(e\214x)-.37 E F4(*)A F0 2.887(}a)C .387(nd ${)-2.887 F F4(!)A F3
+(name)A F0([)A F3(@)A F0 .387(]} described belo)B 4.188 -.65(w. T)-.25 H
+.388(he e).65 F(xclama-)-.15 E(tion point must immediately follo)108
+530.4 Q 2.5(wt)-.25 G(he left brace in order to introduce indirection.)
+-2.5 E .334(In each of the cases belo)108 547.2 R -.65(w,)-.25 G F3(wor)
+3.484 E(d)-.37 E F0 .334(is subject to tilde e)2.834 F .334
+(xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15
+F(and arithmetic e)108 559.2 Q(xpansion.)-.15 E .066
+(When not performing substring e)108 576 R .067
+(xpansion, using the forms documented belo)-.15 F 2.567(w\()-.25 G
+(e.g.,)-2.567 E F4(:-)2.567 E F0(\),)A F4(bash)2.567 E F0 .067
+(tests for a pa-)2.567 F(rameter that is unset or null.)108 588 Q(Omitt\
ing the colon results in a test only for a parameter that is unset.)5 E
-(${)108 242.4 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(})
-A F2 .722(Use Default V)144 254.4 R(alues)-.92 E F0 5.722(.I)C(f)-5.722
-E F1(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F
-.723(xpansion of)-.15 F F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.)
-3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 266.4 Q(alue of)-.25 E F1
-(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 278.4 Q F1
-(par)A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.005
-(Assign Default V)144 290.4 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F1
-(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 F1(wor)4.844 E(d)-.37 E F0 2.004
-(is assigned to)5.274 F F1(par)144 302.4 Q(ameter)-.15 E F0 5.278(.T).73
-G .278(he v)-5.278 F .278(alue of)-.25 F F1(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 314.4 Q(ay)-.1 E(.)-.65 E
-(${)108 326.4 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A
-F2 .535(Display Err)144 338.4 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 350.4 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 shell, if it is not)3.931 F
-(interacti)144 362.4 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 374.4 Q F1(par)A(ameter)-.15 E F2(:+)A F1
-(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 386.4 R .745(nate V)-.15 F
+(${)108 604.8 Q F3(par)A(ameter)-.15 E F4<3aad>A F3(wor)A(d)-.37 E F0(})
+A F4 .723(Use Default V)144 616.8 R(alues)-.92 E F0 5.723(.I)C(f)-5.723
+E F3(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F
+.722(xpansion of)-.15 F F3(wor)3.562 E(d)-.37 E F0 .722(is substituted.)
+3.992 F(Other)5.722 E(-)-.2 E(wise, the v)144 628.8 Q(alue of)-.25 E F3
+(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 640.8 Q F3
+(par)A(ameter)-.15 E F4(:=)A F3(wor)A(d)-.37 E F0(})A F4 .811
+(Assign Default V)144 652.8 R(alues)-.92 E F0 5.812(.I)C(f)-5.812 E F3
+(par)4.562 E(ameter)-.15 E F0 .812(is unset or null, the e)4.042 F .812
+(xpansion of)-.15 F F3(wor)3.652 E(d)-.37 E F0 .812(is assigned to)4.082
+F F3(pa-)4.562 E -.15(ra)144 664.8 S(meter).15 E F0 5.742(.T).73 G .742
+(he v)-5.742 F .742(alue of)-.25 F F3(par)4.492 E(ameter)-.15 E F0 .742
+(is then substituted.)3.972 F .741
+(Positional parameters and special parame-)5.742 F
+(ters may not be assigned to in this w)144 676.8 Q(ay)-.1 E(.)-.65 E(${)
+108 688.8 Q F3(par)A(ameter)-.15 E F4(:?)A F3(wor)A(d)-.37 E F0(})A F4
+.535(Display Err)144 700.8 R .535(or if Null or Unset)-.18 F F0 5.535
+(.I)C(f)-5.535 E F3(par)4.285 E(ameter)-.15 E F0 .535
+(is null or unset, the e)3.765 F .535(xpansion of)-.15 F F3(wor)3.035 E
+(d)-.37 E F0 .535(\(or a mes-)3.035 F .013(sage to that ef)144 712.8 R
+.013(fect if)-.25 F F3(wor)2.853 E(d)-.37 E F0 .013(is not present\) is\
+ written to the standard error and the shell, if it is not in-)3.283 F
+(teracti)144 724.8 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,)
+-2.65 F(the v)2.5 E(alue of)-.25 E F3(par)2.5 E(ameter)-.15 E F0
+(is substituted.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
+(22)190.395 E 0 Cg EP
+%%Page: 23 23
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10
+/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(:+)A F1
+(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 96 R .745(nate V)-.15 F
(alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0
.745(is null or unset, nothing is substituted, otherwise the e)3.975 F
-(xpan-)-.15 E(sion of)144 398.4 Q F1(wor)2.84 E(d)-.37 E F0
-(is substituted.)3.27 E(${)108 410.4 Q F1(par)A(ameter)-.15 E F2(:)A F1
-(of)A(fset)-.18 E F0(})A(${)108 422.4 Q F1(par)A(ameter)-.15 E F2(:)A F1
+(xpan-)-.15 E(sion of)144 108 Q F1(wor)2.84 E(d)-.37 E F0
+(is substituted.)3.27 E(${)108 120 Q F1(par)A(ameter)-.15 E F2(:)A F1
+(of)A(fset)-.18 E F0(})A(${)108 132 Q F1(par)A(ameter)-.15 E F2(:)A F1
(of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion)
-144 434.4 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502
-E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E
-(ameter)-.15 E F0 .002(starting at the)2.502 F 1.082
-(character speci\214ed by)144 446.4 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
-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 458.4 Q
-1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722
-(fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length)
-3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043
-(substring of the v)144 470.4 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 482.4 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 494.4 Q
-(w\).)-.25 E(If)144 518.4 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
+144 144 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E
+F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E
+(ameter)-.15 E F0 .002(starting at the)2.502 F .235
+(character speci\214ed by)144 156 R F1(of)2.735 E(fset)-.18 E F0 5.235
+(.I)C(f)-5.235 E F1(par)2.735 E(ameter)-.15 E F0(is)2.735 E F2(@)2.735 E
+F0 2.735(,a)C 2.735(ni)-2.735 G(nde)-2.735 E -.15(xe)-.15 G 2.735(da).15
+G .235(rray subscripted by)-2.735 F F2(@)2.735 E F0(or)2.735 E F2(*)
+2.735 E F0 2.735(,o)C 2.735(ra)-2.735 G 2.735(na)-2.735 G(s-)-2.735 E
+(sociati)144 168 Q 1.578 -.15(ve a)-.25 H 1.278
+(rray name, the results dif).15 F 1.277(fer as described belo)-.25 F
+5.077 -.65(w. I)-.25 H(f).65 E F1(length)3.777 E F0 1.277(is omitted, e)
+3.777 F 1.277(xpands to the)-.15 F .042(substring of the v)144 180 R
+.042(alue of)-.25 F F1(par)2.542 E(ameter)-.15 E F0 .043
+(starting at the character speci\214ed by)2.542 F F1(of)2.543 E(fset)
+-.18 E F0 .043(and e)2.543 F .043(xtending to the)-.15 F .847
+(end of the v)144 192 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 E F1
+(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .846
+(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV)3.346 F
+(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 204 Q(w\).)-.25 E
+(If)144 228 Q F1(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 G .529
+(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 530.4 R .045(alue of)-.25 F F1(par)2.546 E(ameter)
+.046(end of the v)144 240 R .046(alue of)-.25 F F1(par)2.546 E(ameter)
-.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G
.046(luates to a number less than zero, it is interpreted as an).25 F
-(of)144 542.4 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 554.4 R
-.557(xpansion is the characters between)-.15 F F1(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 566.4 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 590.4 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)
-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 .6(is tak)144 602.4 R .6
+(of)144 252 Q .202(fset in characters from the end of the v)-.25 F .202
+(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .203
+(rather than a number of characters, and)2.702 F .558(the e)144 264 R
+.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E
+F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga)
+-.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25
+F(separated from the colon by at least one space to a)144 276 Q -.2(vo)
+-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G
+(pansion.).15 E(If)144 300 Q F1(par)2.958 E(ameter)-.15 E F0(is)2.958 E
+F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 E
+F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of)
+2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15
+(ve)-.25 G F1(of)3.109 E(fset)-.18 E F0 .6(is tak)144 312 R .6
(en relati)-.1 F .9 -.15(ve t)-.25 H 3.1(oo).15 G .6
(ne greater than the greatest positional parameter)-3.1 F 3.1(,s)-.4 G
3.1(oa)-3.1 G 3.1(no)-3.1 G -.25(ff)-3.1 G .6(set of \2551 e).25 F -.25
-(va)-.25 G(luates).25 E .64(to the last positional parameter)144 614.4 R
-5.64(.I)-.55 G 3.14(ti)-5.64 G 3.14(sa)-3.14 G 3.139(ne)-3.14 G .639
-(xpansion error if)-3.289 F F1(length)3.139 E F0 -.25(eva)3.139 G .639
-(luates to a number less than).25 F(zero.)144 626.4 Q(If)144 650.4 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 662.4 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 674.4 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 686.4 Q(Substring e)144
-710.4 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H
-(rray produces unde\214ned results.).15 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(22)188.455 E 0 Cg EP
-%%Page: 23 23
+(va)-.25 G(luates).25 E .639(to the last positional parameter)144 324 R
+5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G
+.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64
+(luates to a number less than).25 F(zero.)144 336 Q(If)144 360 Q F1(par)
+3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014
+(da).15 G .514(rray name subscripted by @ or *, the result is the)-3.014
+F F1(length)3.014 E F0 .513(members of)3.013 F 1.081(the array be)144
+372 R 1.081(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A
+(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga)-.15 G(ti).05 E -.15
+(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082(is tak)3.582 F 1.082
+(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo).15 G 1.082(ne greater)
+-3.582 F 1.08(than the maximum inde)144 384 R 3.58(xo)-.15 G 3.58(ft)
+-3.58 G 1.08(he speci\214ed array)-3.58 F 6.079(.I)-.65 G 3.579(ti)
+-6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079(xpansion error if)
+-3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079(luates to a).25 F
+(number less than zero.)144 396 Q(Substring e)144 420 Q
+(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H
+(rray produces unde\214ned results.).15 E .82(Substring inde)144 444 R
+.821(xing is zero-based unless the positional parameters are used, in w\
+hich case the in-)-.15 F(de)144 456 Q .159(xing starts at 1 by def)-.15
+F 2.659(ault. If)-.1 F F1(of)2.659 E(fset)-.18 E F0 .159
+(is 0, and the positional parameters are used,)2.659 F F2($0)2.659 E F0
+.159(is pre\214x)2.659 F .158(ed to)-.15 F(the list.)144 468 Q(${)108
+484.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(*)A F0(})A(${)108 496.8 Q F2(!)A
+F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 .084(Names matching pr)144 508.8
+R(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F
+.084(ariables whose names be)-.25 F .085(gin with)-.15 F F1(pr)2.585 E
+(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258
+(rated by the \214rst character of the)144 520.8 R F3(IFS)2.758 E F0
+.257(special v)2.507 F 2.757(ariable. When)-.25 F F1(@)2.757 E F0 .257
+(is used and the e)2.757 F .257(xpansion appears)-.15 F
+(within double quotes, each v)144 532.8 Q(ariable name e)-.25 E
+(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 549.6 Q F2(!)A F1(name)
+A F0([)A F1(@)A F0(]})A(${)108 561.6 Q F2(!)A F1(name)A F0([)A F1(*)A F0
+(]})A F2 1.136(List of array k)144 573.6 R(eys)-.1 E F0 6.136(.I)C(f)
+-6.136 E F1(name)3.636 E F0 1.136(is an array v)3.636 F 1.136
+(ariable, e)-.25 F 1.136(xpands to the list of array indices \(k)-.15 F
+-.15(ey)-.1 G 1.137(s\) as-).15 F .397(signed in)144 585.6 R F1(name)
+2.897 E F0 5.397(.I)C(f)-5.397 E F1(name)2.897 E F0 .397
+(is not an array)2.897 F 2.897(,e)-.65 G .397(xpands to 0 if)-3.047 F F1
+(name)2.897 E F0 .397(is set and null otherwise.)2.897 F(When)5.397 E F1
+(@)2.897 E F0(is used and the e)144 597.6 Q
+(xpansion appears within double quotes, each k)-.15 E .3 -.15(ey ex)-.1
+H(pands to a separate w).15 E(ord.)-.1 E(${)108 614.4 Q F2(#)A F1(par)A
+(ameter)-.15 E F0(})A F2 -.1(Pa)144 626.4 S .47(rameter length).1 F F0
+5.47(.T)C .471(he length in characters of the v)-5.47 F .471(alue of)
+-.25 F F1(par)2.971 E(ameter)-.15 E F0 .471(is substituted.)2.971 F(If)
+5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 638.4 Q F0(is)3.627 E F2(*)
+2.897 E F0(or)2.897 E F2(@)2.897 E F0 2.897(,t)C .397(he v)-2.897 F .397
+(alue substituted is the number of positional parameters.)-.25 F(If)
+5.396 E F1(par)4.146 E(ameter)-.15 E F0 .396(is an ar)3.626 F(-)-.2 E
+.78(ray name subscripted by)144 650.4 R F2(*)3.28 E F0(or)3.28 E F2(@)
+3.28 E F0 3.28(,t)C .78(he v)-3.28 F .781
+(alue substituted is the number of elements in the array)-.25 F 5.781
+(.I)-.65 G(f)-5.781 E F1(par)145.25 662.4 Q(ameter)-.15 E F0 .456
+(is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456
+(rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756
+-.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455
+(hat number is interpreted)-2.955 F .972(as relati)144 674.4 R 1.272
+-.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde)
+-3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0
+3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273
+-.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array)
+144 686.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5
+G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 703.2 Q F1
+(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(GNU Bash 5.1)72 768
+Q(2020 October 29)141.235 E(23)190.395 E 0 Cg EP
+%%Page: 24 24
%%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.931
-(Substring inde)144 84 R 1.931(xing is zero-based unless the positional\
- parameters are used, in which case the)-.15 F(inde)144 96 Q .306
-(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F/F1 10
-/Times-Italic@0 SF(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 108 Q(${)108 124.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2
-(*)A F0(})A(${)108 136.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2
-.085(Names matching pr)144 148.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 160.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 172.8 Q
-(ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108
-189.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 201.6 Q F2(!)A F1
-(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 213.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 225.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 237.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
-254.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 266.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 278.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 290.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 302.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 314.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 326.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 343.2 Q F1
-(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 355.2 Q F1
-(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 367.2
-Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F
-(n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196
-(is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F
-.544(name e)144 379.2 R .544(xpansion, and matched ag)-.15 F .544
-(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F1(par)
-4.294 E(ameter)-.15 E F0 .543(using the rules described)3.774 F(under)
-144 391.2 Q F2 -.1(Pa)3.221 G(tter).1 E 3.221(nM)-.15 G(atching)-3.221 E
-F0(belo)3.221 E 4.521 -.65(w. I)-.25 H 3.221(ft).65 G .721
-(he pattern matches the be)-3.221 F .722(ginning of the v)-.15 F .722
-(alue of)-.25 F F1(par)3.222 E(ameter)-.15 E F0(,).73 E 1.152
-(then the result of the e)144 403.2 R 1.151(xpansion is the e)-.15 F
-1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1(par)4.901 E(ameter)-.15 E
-F0 1.151(with the shortest matching)4.381 F .183(pattern \(the `)144
-415.2 R(`)-.74 E F2(#)A F0 1.663 -.74('' c)D .184
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10
+/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(##)A F1
+(wor)A(d)-.37 E F0(})A F2(Remo)144 96 Q 1.396 -.1(ve m)-.1 H 1.196
+(atching pr).1 F 1.196(e\214x patter)-.18 F(n)-.15 E F0 6.196(.T)C(he)
+-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196(is e)4.466 F 1.196
+(xpanded to produce a pattern just as in path-)-.15 F .543(name e)144
+108 R .544(xpansion, and matched ag)-.15 F .544(ainst the e)-.05 F .544
+(xpanded v)-.15 F .544(alue of)-.25 F F1(par)4.294 E(ameter)-.15 E F0
+.544(using the rules described)3.774 F(under)144 120 Q F2 -.1(Pa)3.133 G
+(tter).1 E 3.133(nM)-.15 G(atching)-3.133 E F0(belo)3.132 E 4.432 -.65
+(w. I)-.25 H 3.132(ft).65 G .632(he pattern matches the be)-3.132 F .632
+(ginning of the v)-.15 F .632(alue of)-.25 F F1(par)4.382 E(ameter)-.15
+E F0(,).73 E 1.151(then the result of the e)144 132 R 1.151
+(xpansion is the e)-.15 F 1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F1
+(par)4.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F
+.184(pattern \(the `)144 144 R(`)-.74 E F2(#)A F0 1.664 -.74('' c)D .184
(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(##)A F0
-1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.184 E F1(par)3.934 E
-(ameter)-.15 E F0(is)3.414 E F2(@)2.684 E F0(or)144 427.2 Q F2(*)3.019 E
-F0 3.019(,t)C .518(he pattern remo)-3.019 F -.25(va)-.15 G 3.018(lo).25
+1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F1(par)3.933 E
+(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 156 Q F2(*)3.018 E
+F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25
G .518
(peration is applied to each positional parameter in turn, and the e)
--3.018 F(xpan-)-.15 E 1.121(sion is the resultant list.)144 439.2 R(If)
-6.121 E F1(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F
-1.121(ariable subscripted with)-.25 F F2(@)3.621 E F0(or)3.621 E F2(*)
-3.622 E F0 3.622(,t)C 1.122(he pattern)-3.622 F(remo)144 451.2 Q -.25
-(va)-.15 G 2.53(lo).25 G .03
-(peration is applied to each member of the array in turn, and the e)
--2.53 F .03(xpansion is the resultant)-.15 F(list.)144 463.2 Q(${)108
-480 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 492
-Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144
-504 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 516
-S .459(pansion, and matched ag).15 F .459(ainst the e)-.05 F .459
-(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.208 E(ameter)-.15 E F0
-.458(using the rules described under)3.688 F F2 -.1(Pa)144 528 S(tter).1
-E 4.592(nM)-.15 G(atching)-4.592 E F0(belo)4.592 E 5.892 -.65(w. I)-.25
-H 4.592(ft).65 G 2.092(he pattern matches a trailing portion of the e)
--4.592 F 2.093(xpanded v)-.15 F 2.093(alue of)-.25 F F1(par)144 540 Q
-(ameter)-.15 E F0 3.15(,t).73 G .65(hen the result of the e)-3.15 F .65
-(xpansion is the e)-.15 F .65(xpanded v)-.15 F .65(alue of)-.25 F F1
-(par)4.4 E(ameter)-.15 E F0 .65(with the shortest)3.88 F 1.084
-(matching pattern \(the `)144 552 R(`)-.74 E F2(%)A F0 2.564 -.74('' c)D
-1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2
-(%%)A F0 2.565 -.74('' c)D 1.085(ase\) deleted.).74 F(If)6.085 E F1(par)
-145.25 564 Q(ameter)-.15 E F0(is)3.39 E F2(@)2.66 E F0(or)2.66 E F2(*)
-2.66 E F0 2.66(,t)C .16(he pattern remo)-2.66 F -.25(va)-.15 G 2.659(lo)
-.25 G .159(peration is applied to each positional parameter in turn,)
--2.659 F .509(and the e)144 576 R .509(xpansion is the resultant list.)
--.15 F(If)5.509 E F1(par)4.259 E(ameter)-.15 E F0 .51(is an array v)
-3.739 F .51(ariable subscripted with)-.25 F F2(@)3.01 E F0(or)3.01 E F2
-(*)3.01 E F0(,)A .423(the pattern remo)144 588 R -.25(va)-.15 G 2.923
-(lo).25 G .422
+-3.018 F(xpan-)-.15 E .304(sion is the resultant list.)144 168 R(If)
+5.304 E F1(par)4.054 E(ameter)-.15 E F0 .303(is an array v)3.533 F .303
+(ariable subscripted with)-.25 F F2(@)2.803 E F0(or)2.803 E F2(*)2.803 E
+F0 2.803(,t)C .303(he pattern re-)-2.803 F(mo)144 180 Q -.25(va)-.15 G
+2.987(lo).25 G .487
(peration is applied to each member of the array in turn, and the e)
--2.923 F .422(xpansion is)-.15 F(the resultant list.)144 600 Q(${)108
-616.8 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0
-(})A F2 -.1(Pa)144 628.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 640.8 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2
+-2.987 F .487(xpansion is the resultant)-.15 F(list.)144 192 Q(${)108
+208.8 Q F1(par)A(ameter)-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108
+220.8 Q F1(par)A(ameter)-.15 E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)
+144 232.8 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15
+E F0 5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F
+.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144
+244.8 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458
+(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0
+.459(using the rules described under)3.689 F F2 -.1(Pa)144 256.8 S(tter)
+.1 E 3.314(nM)-.15 G(atching)-3.314 E F0(belo)3.314 E 4.614 -.65(w. I)
+-.25 H 3.314(ft).65 G .814
+(he pattern matches a trailing portion of the e)-3.314 F .814(xpanded v)
+-.15 F .814(alue of)-.25 F F1(pa-)4.564 E -.15(ra)144 268.8 S(meter).15
+E F0 3.816(,t).73 G 1.316(hen the result of the e)-3.816 F 1.317
+(xpansion is the e)-.15 F 1.317(xpanded v)-.15 F 1.317(alue of)-.25 F F1
+(par)5.067 E(ameter)-.15 E F0 1.317(with the shortest)4.547 F 1.085
+(matching pattern \(the `)144 280.8 R(`)-.74 E F2(%)A F0 2.565 -.74
+('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74
+E F2(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1
+(par)145.25 292.8 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659
+E F2(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15
+G 2.659(lo).25 G .16
+(peration is applied to each positional parameter in turn,)-2.659 F .51
+(and the e)144 304.8 R .51(xpansion is the resultant list.)-.15 F(If)
+5.51 E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509
+(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E
+F0(,)A .422(the pattern remo)144 316.8 R -.25(va)-.15 G 2.922(lo).25 G
+.422(peration is applied to each member of the array in turn, and the e)
+-2.922 F .423(xpansion is)-.15 F(the resultant list.)144 328.8 Q(${)108
+345.6 Q F1(par)A(ameter)-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0
+(})A F2 -.1(Pa)144 357.6 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607
+E F0 6.107(.T)C(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F
+1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)
+-.15 E(sion,)144 369.6 Q F1 -.8(Pa)3.7 G -.15(ra).8 G(meter).15 E F0 1.2
(is e)3.7 F 1.2(xpanded and the longest match of)-.15 F F1(pattern)3.7 E
F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F1
-(string)144 652.8 Q F0 5.396(.T)C .396
-(he match is performed using the rules described under)-5.396 F F2 -.1
-(Pa)2.897 G(tter).1 E 2.897(nM)-.15 G(atching)-2.897 E F0(belo)2.897 E
-4.197 -.65(w. I)-.25 H(f).65 E F1(pat-)2.897 E(tern)144 664.8 Q F0(be)
-2.57 E .07(gins with)-.15 F F2(/)2.57 E F0 2.57(,a)C .07(ll matches of)
--2.57 F F1(pattern)2.57 E F0 .069(are replaced with)2.569 F F1(string)
-2.569 E F0 5.069(.N)C .069(ormally only the \214rst match is)-5.069 F
-2.579(replaced. If)144 676.8 R F1(pattern)2.579 E F0(be)2.579 E .079
-(gins with)-.15 F F2(#)2.579 E F0 2.579(,i)C 2.579(tm)-2.579 G .079
-(ust match at the be)-2.579 F .08(ginning of the e)-.15 F .08(xpanded v)
--.15 F .08(alue of)-.25 F F1(par)2.58 E(am-)-.15 E(eter)144 688.8 Q F0
-5.762(.I)C(f)-5.762 E F1(pattern)3.262 E F0(be)3.261 E .761(gins with)
--.15 F F2(%)3.261 E F0 3.261(,i)C 3.261(tm)-3.261 G .761
-(ust match at the end of the e)-3.261 F .761(xpanded v)-.15 F .761
-(alue of)-.25 F F1(par)3.261 E(ameter)-.15 E F0 5.761(.I)C(f)-5.761 E F1
-(string)144 700.8 Q F0 .957(is null, matches of)3.457 F F1(pattern)3.457
-E F0 .958(are deleted and the)3.457 F F2(/)3.458 E F0(follo)3.458 E
-(wing)-.25 E F1(pattern)3.458 E F0 .958(may be omitted.)3.458 F .958
-(If the)5.958 F F2(nocasematch)144 712.8 Q F0 .492
+(string)144 381.6 Q F0 5.397(.T)C .397
+(he match is performed using the rules described under)-5.397 F F2 -.1
+(Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E
+4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 393.6 Q F0(be)
+2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069
+(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with)
+2.569 F F1(string)2.57 E F0 5.07(.N)C .07
+(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 405.6 R
+F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58
+(,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079
+(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1
+(par)2.579 E(am-)-.15 E(eter)144 417.6 Q F0 5.761(.I)C(f)-5.761 E F1
+(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F2(%)3.261 E F0
+3.261(,i)C 3.261(tm)-3.261 G .761(ust match at the end of the e)-3.261 F
+.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E
+F0 5.762(.I)C(f)-5.762 E F1(string)144 429.6 Q F0 .958
+(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958
+(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E
+F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F
+F2(nocasematch)144 441.6 Q F0 .492
(shell option is enabled, the match is performed without re)2.992 F -.05
-(ga)-.15 G .492(rd to the case of alpha-).05 F .883(betic characters.)
-144 724.8 R(If)5.883 E F1(par)4.633 E(ameter)-.15 E F0(is)4.113 E F2(@)
-3.383 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .884
-(he substitution operation is applied to each positional)-3.383 F
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(23)188.455 E 0 Cg EP
-%%Page: 24 24
+(ga)-.15 G .492(rd to the case of alpha-).05 F .884(betic characters.)
+144 453.6 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@)
+3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883
+(he substitution operation is applied to each positional)-3.383 F 1.002
+(parameter in turn, and the e)144 465.6 R 1.002
+(xpansion is the resultant list.)-.15 F(If)6.002 E F1(par)4.752 E
+(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F
+.159(scripted with)144 477.6 R F2(@)2.659 E F0(or)2.659 E F2(*)2.659 E
+F0 2.659(,t)C .159(he substitution operation is applied to each member \
+of the array in turn, and)-2.659 F(the e)144 489.6 Q
+(xpansion is the resultant list.)-.15 E(${)108 506.4 Q F1(par)A(ameter)
+-.15 E F2(^)A F1(pattern)A F0(})A(${)108 518.4 Q F1(par)A(ameter)-.15 E
+F2(^^)A F1(pattern)A F0(})A(${)108 530.4 Q F1(par)A(ameter)-.15 E F2(,)A
+F1(pattern)A F0(})A(${)108 542.4 Q F1(par)A(ameter)-.15 E F2(,,)A F1
+(pattern)A F0(})A F2 .437(Case modi\214cation)144 554.4 R F0 5.437(.T)C
+.437(his e)-5.437 F .438
+(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par)
+2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 566.4 Q
+F0 .374(is e)2.874 F .374
+(xpanded to produce a pattern just as in pathname e)-.15 F 2.874
+(xpansion. Each)-.15 F .373(character in the e)2.873 F(x-)-.15 E .513
+(panded v)144 578.4 R .513(alue of)-.25 F F1(par)3.013 E(ameter)-.15 E
+F0 .513(is tested ag)3.013 F(ainst)-.05 E F1(pattern)3.013 E F0 3.013
+(,a)C .514(nd, if it matches the pattern, its case is con-)-3.013 F -.15
+(ve)144 590.4 S 2.823(rted. The).15 F .323
+(pattern should not attempt to match more than one character)2.823 F
+5.322(.T)-.55 G(he)-5.322 E F2(^)2.822 E F0 .322(operator con)2.822 F
+-.15(ve)-.4 G(rts).15 E(lo)144 602.4 Q .18(wercase letters matching)-.25
+F F1(pattern)2.681 E F0 .181(to uppercase; the)2.681 F F2(,)2.681 E F0
+.181(operator con)2.681 F -.15(ve)-.4 G .181
+(rts matching uppercase letters).15 F .085(to lo)144 614.4 R 2.585
+(wercase. The)-.25 F F2(^^)2.585 E F0(and)2.585 E F2(,,)2.585 E F0 -.15
+(ex)2.585 G .085(pansions con).15 F -.15(ve)-.4 G .085
+(rt each matched character in the e).15 F .085(xpanded v)-.15 F .085
+(alue; the)-.25 F F2(^)2.585 E F0(and)144 626.4 Q F2(,)3.59 E F0 -.15
+(ex)3.59 G 1.09(pansions match and con).15 F -.15(ve)-.4 G 1.091
+(rt only the \214rst character in the e).15 F 1.091(xpanded v)-.15 F
+3.591(alue. If)-.25 F F1(pattern)3.591 E F0(is)3.591 E 1.121
+(omitted, it is treated lik)144 638.4 R 3.621(ea)-.1 G F2(?)A F0 3.621
+(,w)C 1.121(hich matches e)-3.621 F -.15(ve)-.25 G 1.121(ry character)
+.15 F 6.12(.I)-.55 G(f)-6.12 E F1(par)4.87 E(ameter)-.15 E F0(is)4.35 E
+F2(@)3.62 E F0(or)3.62 E F2(*)3.62 E F0 3.62(,t)C 1.12(he case)-3.62 F
+.339(modi\214cation operation is applied to each positional parameter i\
+n turn, and the e)144 650.4 R .34(xpansion is the re-)-.15 F .25
+(sultant list.)144 662.4 R(If)5.25 E F1(par)4 E(ameter)-.15 E F0 .25
+(is an array v)3.48 F .249(ariable subscripted with)-.25 F F2(@)2.749 E
+F0(or)2.749 E F2(*)2.749 E F0 2.749(,t)C .249
+(he case modi\214cation oper)-2.749 F(-)-.2 E
+(ation is applied to each member of the array in turn, and the e)144
+674.4 Q(xpansion is the resultant list.)-.15 E(${)108 691.2 Q F1(par)A
+(ameter)-.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 703.2 S
+.86(rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F
+.86(xpansion is either a transformation of the v)-.15 F .86(alue of)-.25
+F F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 715.2 R
+F1(par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F
+.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153
+E F1(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144
+727.2 Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(24)190.395 E 0
+Cg EP
+%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.002
-(parameter in turn, and the e)144 84 R 1.002
-(xpansion is the resultant list.)-.15 F(If)6.002 E/F1 10/Times-Italic@0
-SF(par)4.752 E(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.001
-(ariable sub-)-.25 F .158(scripted with)144 96 R/F2 10/Times-Bold@0 SF
-(@)2.658 E F0(or)2.659 E F2(*)2.659 E F0 2.659(,t)C .159(he substitutio\
-n operation is applied to each member of the array in turn, and)-2.659 F
-(the e)144 108 Q(xpansion is the resultant list.)-.15 E(${)108 124.8 Q
-F1(par)A(ameter)-.15 E F2(^)A F1(pattern)A F0(})A(${)108 136.8 Q F1(par)
-A(ameter)-.15 E F2(^^)A F1(pattern)A F0(})A(${)108 148.8 Q F1(par)A
-(ameter)-.15 E F2(,)A F1(pattern)A F0(})A(${)108 160.8 Q F1(par)A
-(ameter)-.15 E F2(,,)A F1(pattern)A F0(})A F2 .438(Case modi\214cation)
-144 172.8 R F0 5.438(.T)C .438(his e)-5.438 F .437
-(xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par)
-2.937 E(ameter)-.15 E F0 5.437(.T)C(he)-5.437 E F1(pattern)144 184.8 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 196.8
-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
-208.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 220.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.547(letters to lo)144 232.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 244.8 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 256.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 268.8 R
-(xpansion)-.15 E .468(is the resultant list.)144 280.8 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(tion operation is appli\
-ed to each member of the array in turn, and the e)144 292.8 Q
-(xpansion is the resultant list.)-.15 E(${)108 309.6 Q F1(par)A(ameter)
--.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 321.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 .153(or information about)144 333.6 R F1
-(par)2.653 E(ameter)-.15 E F0 .153(itself, depending on the v)2.653 F
-.153(alue of)-.25 F F1(oper)2.653 E(ator)-.15 E F0 5.154(.E)C(ach)-5.154
-E F1(oper)2.654 E(ator)-.15 E F0 .154(is a sin-)2.654 F(gle letter:)144
-345.6 Q F2(Q)144 369.6 Q F0 1.065(The e)180 369.6 R 1.065
-(xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F1(par)
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(U)144 84 Q F0 .142(The e)180 84 R .142
+(xpansion is a string that is the v)-.15 F .142(alue of)-.25 F/F2 10
+/Times-Italic@0 SF(par)2.642 E(ameter)-.15 E F0 .142(with lo)2.642 F
+.143(wercase alphabetic charac-)-.25 F(ters con)180 96 Q -.15(ve)-.4 G
+(rted to uppercase.).15 E F1(u)144 108 Q F0 .43(The e)180 108 R .43
+(xpansion is a string that is the v)-.15 F .429(alue of)-.25 F F2(par)
+2.929 E(ameter)-.15 E F0 .429(with the \214rst character con)2.929 F
+-.15(ve)-.4 G(rted).15 E(to uppercase, if it is alphabetic.)180 120 Q F1
+(L)144 132 Q F0 .124(The e)180 132 R .124
+(xpansion is a string that is the v)-.15 F .124(alue of)-.25 F F2(par)
+2.624 E(ameter)-.15 E F0 .125(with uppercase alphabetic charac-)2.625 F
+(ters con)180 144 Q -.15(ve)-.4 G(rted to lo).15 E(wercase.)-.25 E F1(Q)
+144 156 Q F0 1.065(The e)180 156 R 1.065
+(xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F2(par)
3.565 E(ameter)-.15 E F0 1.064(quoted in a format that can be)3.565 F
-(reused as input.)180 381.6 Q F2(E)144 393.6 Q F0 .44(The e)180 393.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 .441(with backslash escape sequences)2.941
-F -.15(ex)180 405.6 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E
-F0(quoting mechanism.)2.5 E F2(P)144 417.6 Q F0 1.073(The e)180 417.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 429.6 Q F2(PR)
-2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 441.6 Q F0 1.137
-(The e)180 441.6 R 1.138
+(reused as input.)180 168 Q F1(E)144 180 Q F0 .44(The e)180 180 R .441
+(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F2(par)
+2.941 E(ameter)-.15 E F0 .441(with backslash escape sequences)2.941 F
+-.15(ex)180 192 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0
+(quoting mechanism.)2.5 E F1(P)144 204 Q F0 1.073(The e)180 204 R 1.073
+(xpansion is a string that is the result of e)-.15 F 1.073
+(xpanding the v)-.15 F 1.073(alue of)-.25 F F2(par)3.573 E(ameter)-.15 E
+F0 1.073(as if it)3.573 F(were a prompt string \(see)180 216 Q F1(PR)2.5
+E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 228 Q F0 1.137(The e)
+180 228 R 1.138
(xpansion is a string in the form of an assignment statement or)-.15 F
-F2(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 453.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 465.6 Q F0
-(The e)180 465.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 482.4 Q F1(par)5.331 E(ameter)-.15 E F0
-(is)4.811 E F2(@)4.081 E F0(or)4.081 E F2(*)4.081 E F0 4.081(,t)C 1.58
-(he operation is applied to each positional parameter in turn, and the)
--4.081 F -.15(ex)144 494.4 S .129(pansion is the resultant list.).15 F
-(If)5.129 E F1(par)3.879 E(ameter)-.15 E F0 .129(is an array v)3.359 F
-.13(ariable subscripted with)-.25 F F2(@)2.63 E F0(or)2.63 E F2(*)2.63 E
-F0 2.63(,t)C .13(he oper)-2.63 F(-)-.2 E
-(ation is applied to each member of the array in turn, and the e)144
-506.4 Q(xpansion is the resultant list.)-.15 E 1.85(The result of the e)
-144 530.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 542.4 Q -.65(w.)-.25 G F2(Command Substitution)87 559.2 Q F1
-1.697(Command substitution)108 571.2 R F0(allo)4.197 E 1.697
+F1(declar)3.638 E(e)-.18 E F0(command)3.638 E(that, if e)180 240 Q -.25
+(va)-.25 G(luated, will recreate).25 E F2(par)2.5 E(ameter)-.15 E F0
+(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(K)144 252 Q F0
+1.34(Produces a possibly-quoted v)180 252 R 1.339(ersion of the v)-.15 F
+1.339(alue of)-.25 F F2(par)3.839 E(ameter)-.15 E F0 3.839(,e)C 1.339
+(xcept that it prints the)-3.989 F -.25(va)180 264 S .257(lues of inde)
+.25 F -.15(xe)-.15 G 2.757(da).15 G .257(nd associati)-2.757 F .557 -.15
+(ve a)-.25 H .257(rrays as a sequence of quoted k).15 F -.15(ey)-.1 G
+(-v).15 E .257(alue pairs \(see)-.25 F F1(Ar)2.758 E(-)-.37 E(rays)180
+276 Q F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(a)144 288 Q F0(The e)180
+288 Q(xpansion is a string consisting of \215ag v)-.15 E
+(alues representing)-.25 E F2(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D
+(ttrib).55 E(utes.)-.2 E(If)144 304.8 Q F2(par)4.403 E(ameter)-.15 E F0
+(is)3.883 E F1(@)3.153 E F0(or)3.153 E F1(*)3.153 E F0 3.153(,t)C .653(\
+he operation is applied to each positional parameter in turn, and the e)
+-3.153 F(x-)-.15 E .403(pansion is the resultant list.)144 316.8 R(If)
+5.403 E F2(par)4.153 E(ameter)-.15 E F0 .403(is an array v)3.633 F .403
+(ariable subscripted with)-.25 F F1(@)2.903 E F0(or)2.903 E F1(*)2.903 E
+F0 2.903(,t)C .403(he opera-)-2.903 F
+(tion is applied to each member of the array in turn, and the e)144
+328.8 Q(xpansion is the resultant list.)-.15 E .708(The result of the e)
+144 352.8 R .708(xpansion is subject to w)-.15 F .708
+(ord splitting and pathname e)-.1 F .708(xpansion as described be-)-.15
+F(lo)144 364.8 Q -.65(w.)-.25 G F1(Command Substitution)87 381.6 Q F2
+1.697(Command substitution)108 393.6 R F0(allo)4.197 E 1.697
(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 583.2 Q F2($\()144 600 Q F1
-(command)A F2(\))1.666 E F0(or)108 612 Q F2<92>144 624 Q F1(command)A F2
-<92>A(Bash)108 640.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
+(There are tw)6.698 F(o)-.1 E(forms:)108 405.6 Q F1($\()144 422.4 Q F2
+(command)A F1(\))1.666 E F0(or)108 434.4 Q F1<92>144 446.4 Q F2(command)
+A F1<92>A(Bash)108 463.2 Q F0 .089(performs the e)2.589 F .089
+(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.589 E F0
.088(in a subshell en)2.589 F .088(vironment and replacing the command)
-.4 F .41(substitution with the standard output of the command, with an)
-108 652.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
+108 475.2 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.)
-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b)
-108 664.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
+108 487.2 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F
-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.)
--.1 F .192(The command substitution)5.192 F F2($\(cat)2.691 E F1(\214le)
-2.691 E F2(\))A F0(can be replaced by the equi)108 676.8 Q -.25(va)-.25
-G(lent b).25 E(ut f)-.2 E(aster)-.1 E F2($\(<)2.5 E F1(\214le)2.5 E F2
+-.1 F .192(The command substitution)5.192 F F1($\(cat)2.691 E F2(\214le)
+2.691 E F1(\))A F0(can be replaced by the equi)108 499.2 Q -.25(va)-.25
+G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1
(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\
- used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 E
-.315(when follo)108 705.6 R .315(wed by)-.25 F F2($)2.815 E F0(,)A F2
-<92>2.815 E F0 2.815(,o)C(r)-2.815 E F2(\\)2.815 E F0 5.315(.T)C .314(h\
-e \214rst backquote not preceded by a backslash terminates the command \
-sub-)-5.315 F 3.886(stitution. When)108 717.6 R 1.386(using the $\()
-3.886 F F1(command).833 E F0 3.886(\)f)1.666 G 1.387
+ used, backslash retains its literal meaning e)108 516 R(xcept)-.15 E
+.315(when follo)108 528 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1<92>
+2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(he \
+\214rst backquote not preceded by a backslash terminates the command su\
+b-)-5.315 F 3.886(stitution. When)108 540 R 1.386(using the $\()3.886 F
+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 729.6 Q(.)-.65 E(GNU Bash 5.0)72
-768 Q(2018 December 7)139.295 E(24)188.455 E 0 Cg EP
-%%Page: 25 25
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .894
-(Command substitutions may be nested.)108 84 R 2.494 -.8(To n)5.894 H
+(mand; none are treated specially)108 552 Q(.)-.65 E .894
+(Command substitutions may be nested.)108 568.8 R 2.494 -.8(To n)5.894 H
.894(est when using the backquoted form, escape the inner back-).8 F
-(quotes with backslashes.)108 96 Q .422
-(If the substitution appears within double quotes, w)108 112.8 R .422
+(quotes with backslashes.)108 580.8 Q .422
+(If the substitution appears within double quotes, w)108 597.6 R .422
(ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15
-F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF
-(Arithmetic Expansion)87 141.6 Q F0 1.035(Arithmetic e)108 153.6 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 165.6 Q(xpansion is:)-.15 E F1($\(\()
-144 182.4 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1
-(\)\))A F0(The)108 199.2 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
+F(on the results.)108 609.6 Q F1(Arithmetic Expansion)87 626.4 Q F0
+1.035(Arithmetic e)108 638.4 R 1.035(xpansion allo)-.15 F 1.035
+(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F
+1.034(xpression and the substitution of the result.)-.15 F
+(The format for arithmetic e)108 650.4 Q(xpansion is:)-.15 E F1($\(\()
+144 667.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 684 Q
+F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165
+(is treated as if it were within double quotes, b)2.905 F .166
(ut a double quote inside the parentheses is not)-.2 F .231
-(treated specially)108 211.2 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231
+(treated specially)108 696 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231
(ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v)
--.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059
-(tution, and quote remo)108 223.2 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 235.2 S(pansions may be nested.).15 E 1.379(The e)108 252 R
--.25(va)-.25 G 1.378
+-.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F .048
+(tution, and quote remo)108 708 R -.25(va)-.15 G 2.548(l. The).25 F .048
+(result is treated as the arithmetic e)2.548 F .048(xpression to be e)
+-.15 F -.25(va)-.25 G 2.549(luated. Arithmetic).25 F -.15(ex)2.549 G(-)
+.15 E(pansions may be nested.)108 720 Q(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(25)190.395 E 0 Cg EP
+%%Page: 26 26
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.379(The e)108 84
+R -.25(va)-.25 G 1.378
(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 264 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 280.8 Q
-(ocess Substitution)-.18 E F2(Pr)108 292.8 Q .405(ocess substitution)
+-.25 G(nder)-3.878 E/F1 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F
+(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F2 9/Times-Roman@0 SF(.)A F0
+(If)5.878 E/F3 10/Times-Italic@0 SF -.2(ex)108 96 S(pr).2 E(ession)-.37
+E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E/F4 10/Times-Bold@0 SF(bash)
+2.5 E F0(prints a message indicating f)2.5 E
+(ailure and no substitution occurs.)-.1 E F4(Pr)87 112.8 Q
+(ocess Substitution)-.18 E F3(Pr)108 124.8 Q .405(ocess substitution)
-.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 304.8 Q F1(<\()3.251 E F2
-(list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E
-F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751
+(It tak)5.405 F .405(es the form)-.1 F(of)108 136.8 Q F4(<\()3.251 E F3
+(list)A F4(\)).833 E F0(or)3.251 E F4(>\()3.251 E F3(list)A F4(\)).833 E
+F0 5.751(.T)C .751(he process)-5.751 F F3(list)3.251 E F0 .751
(is run asynchronously)3.251 F 3.251(,a)-.65 G .751
(nd its input or output appears as a \214lename.)-3.251 F .147
-(This \214lename is passed as an ar)108 316.8 R .148
+(This \214lename is passed as an ar)108 148.8 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 328.8 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 340.8 Q .308
-(gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0
+(xpansion. If)-.15 F(the)2.648 E F4(>\()2.648 E F3(list)A F4(\)).833 E
+F0 .56(form is used, writing to the \214le will pro)108 160.8 R .56
+(vide input for)-.15 F F3(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G
+(he)-3.059 E F4(<\()3.059 E F3(list)A F4(\)).833 E F0 .559
+(form is used, the \214le passed as an)3.059 F(ar)108 172.8 Q .308
+(gument should be read to obtain the output of)-.18 F F3(list)2.808 E F0
5.308(.P)C .309(rocess substitution is supported on systems that sup-)
--5.308 F(port named pipes \()108 352.8 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 369.6 R -.25(va)
+-5.308 F(port named pipes \()108 184.8 Q F3(FIFOs)A F0 2.5(\)o)C 2.5(rt)
+-2.5 G(he)-2.5 E F4(/de)2.5 E(v/fd)-.15 E F0
+(method of naming open \214les.)2.5 E .897(When a)108 201.6 R -.25(va)
-.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 381.6 Q(xpansion.)-.15 E F1
--.75(Wo)87 398.4 S(rd Splitting).75 E F0 1.142
-(The shell scans the results of parameter e)108 410.4 R 1.143
+(command substitution, and arithmetic e)108 213.6 Q(xpansion.)-.15 E F4
+-.75(Wo)87 230.4 S(rd Splitting).75 E F0 1.142
+(The shell scans the results of parameter e)108 242.4 R 1.143
(xpansion, command substitution, and arithmetic e)-.15 F 1.143
-(xpansion that)-.15 F(did not occur within double quotes for)108 422.4 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 439.2 R F3(IFS)2.563 E F0 .063
+(xpansion that)-.15 F(did not occur within double quotes for)108 254.4 Q
+F3(wor)2.84 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063
+(The shell treats each character of)108 271.2 R F1(IFS)2.563 E F0 .063
(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 451.2 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(<space><tab><newline>)2.708 E F0
-(,)A .837(the def)108 463.2 R .837(ault, then sequences of)-.1 F F1
-(<space>)3.337 E F0(,)A F1(<tab>)3.337 E F0 3.337(,a)C(nd)-3.337 E F1
+108 283.2 R(If)5.207 E F1(IFS)2.707 E F0 .207(is unset, or its v)2.457 F
+.207(alue is e)-.25 F(xactly)-.15 E F4(<space><tab><newline>)2.708 E F0
+(,)A .837(the def)108 295.2 R .837(ault, then sequences of)-.1 F F4
+(<space>)3.337 E F0(,)A F4(<tab>)3.337 E F0 3.337(,a)C(nd)-3.337 E F4
(<newline>)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 475.2 R .345
+(ginning and end of the results of)-.15 F .345(the pre)108 307.2 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
+G .345(equence of)-2.845 F F1(IFS)2.845 E F0 .345
(characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es)
--.15 E 1.237(to delimit w)108 487.2 R 3.737(ords. If)-.1 F F3(IFS)3.737
+-.15 E 1.237(to delimit w)108 319.2 R 3.737(ords. If)-.1 F F1(IFS)3.737
E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236
-(ault, then sequences of the whitespace characters)-.1 F F1(space)108
-499.2 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506
+(ault, then sequences of the whitespace characters)-.1 F F4(space)108
+331.2 Q F0(,)A F4(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F4(newline)2.506
E F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)
-.15 F .007(ord, as long as the whitespace charac-)-.1 F .921
-(ter is in the v)108 511.2 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 523.2
-R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428
+(ter is in the v)108 343.2 R .92(alue of)-.25 F F1(IFS)3.42 E F0(\(an)
+3.17 E F1(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E
+3.42(yc)-.15 G .92(haracter in)-3.42 F F1(IFS)3.42 E F0 .92(that is not)
+3.17 F F1(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 355.2
+R 2.928(ya)-.15 G(djacent)-2.928 E F1(IFS)2.928 E F0 .428
(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 535.2 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 552 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 564 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 576 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 588 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 600 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.167<ad64082008>2.676 F F0(becomes)2.675 E F5<ad64>2.675
-E F0 .175(after w)2.675 F .175(ord split-)-.1 F(ting and null ar)108 612
-Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 628.8
-Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 645.6
-S(thname Expansion).1 E F0 .37(After w)108 657.6 R .37
-(ord splitting, unless the)-.1 F F1<ad66>2.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 669.6 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 681.6 R
-F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo)
-2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F .009
-(are found, and the shell option)108 693.6 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 705.6 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 717.6 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 729.6 R -.05(ga)-.15 G
-.104(rd to the case of alphabetic characters.).05 F .104
-(When a pattern is used)5.104 F(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(25)188.455 E 0 Cg EP
-%%Page: 26 26
+.428(equence of)-2.928 F F1(IFS)2.928 E F0 .429(whitespace charac-)2.679
+F(ters is also treated as a delimiter)108 367.2 Q 5(.I)-.55 G 2.5(ft)-5
+G(he v)-2.5 E(alue of)-.25 E F1(IFS)2.5 E F0(is null, no w)2.25 E
+(ord splitting occurs.)-.1 E .783(Explicit null ar)108 384 R .783
+(guments \()-.18 F F4 .833("").833 G F0(or)2.449 E F4 .833<0808>4.115 G
+F0 3.282(\)a)C .782
+(re retained and passed to commands as empty strings.)-3.282 F .782
+(Unquoted im-)5.782 F .178(plicit null ar)108 396 R .179
+(guments, resulting from the e)-.18 F .179
+(xpansion of parameters that ha)-.15 F .479 -.15(ve n)-.2 H 2.679(ov).15
+G .179(alues, are remo)-2.929 F -.15(ve)-.15 G 2.679(d. If).15 F 2.679
+(ap)2.679 G(a-)-2.679 E .319(rameter with no v)108 408 R .319(alue is e)
+-.25 F .319(xpanded within double quotes, a null ar)-.15 F .319
+(gument results and is retained and passed)-.18 F
+(to a command as an empty string.)108 420 Q(When a quoted null ar)5 E
+.001(gument appears as part of a w)-.18 F .001(ord whose e)-.1 F
+(xpansion)-.15 E .984(is non-null, the null ar)108 432 R .984
+(gument is remo)-.18 F -.15(ve)-.15 G 3.483(d. That).15 F .983
+(is, the w)3.483 F(ord)-.1 E/F5 10/Courier@0 SF -5.167<ad64082008>3.483
+F F0(becomes)3.483 E F5<ad64>3.483 E F0 .983(after w)3.483 F .983
+(ord splitting and)-.1 F(null ar)108 444 Q(gument remo)-.18 E -.25(va)
+-.15 G(l.).25 E(Note that if no e)108 460.8 Q
+(xpansion occurs, no splitting is performed.)-.15 E F4 -.1(Pa)87 477.6 S
+(thname Expansion).1 E F0 .37(After w)108 489.6 R .37
+(ord splitting, unless the)-.1 F F4<ad66>2.87 E F0 .37
+(option has been set,)2.87 F F4(bash)2.87 E F0 .371(scans each w)2.871 F
+.371(ord for the characters)-.1 F F4(*)2.871 E F0(,)A F4(?)2.871 E F0
+2.871(,a)C(nd)-2.871 E F4([)2.871 E F0(.)A .634
+(If one of these characters appears, and is not quoted, then the w)108
+501.6 R .634(ord is re)-.1 F -.05(ga)-.15 G .633(rded as a).05 F F3
+(pattern)4.383 E F0 3.133(,a).24 G .633(nd replaced)-3.133 F 1.34(with \
+an alphabetically sorted list of \214lenames matching the pattern \(see)
+108 513.6 R F1 -.09(Pa)3.84 G(tter).09 E 3.59(nM)-.135 G(atching)-3.59 E
+F0(belo)3.59 E 3.84(w\). If)-.25 F(no)3.84 E .534
+(matching \214lenames are found, and the shell option)108 525.6 R F4
+(nullglob)3.034 E F0 .534(is not enabled, the w)3.034 F .534
+(ord is left unchanged.)-.1 F(If)5.534 E(the)108 537.6 Q F4(nullglob)
+3.284 E F0 .785(option is set, and no matches are found, the w)3.284 F
+.785(ord is remo)-.1 F -.15(ve)-.15 G 3.285(d. If).15 F(the)3.285 E F4
+(failglob)3.285 E F0 .785(shell option is)3.285 F .754(set, and no matc\
+hes are found, an error message is printed and the command is not e)108
+549.6 R -.15(xe)-.15 G 3.254(cuted. If).15 F .754(the shell)3.254 F
+(option)108 561.6 Q F4(nocaseglob)3.263 E F0 .763
+(is enabled, the match is performed without re)3.263 F -.05(ga)-.15 G
+.764(rd to the case of alphabetic characters.).05 F .039
+(When a pattern is used for pathname e)108 573.6 R .039
+(xpansion, the character)-.15 F F4 -.63(``)2.539 G -.55(.').63 G(')-.08
+E F0 .039(at the start of a name or immediately fol-)5.039 F(lo)108
+585.6 Q .81(wing a slash must be matched e)-.25 F(xplicitly)-.15 E 3.31
+(,u)-.65 G .81(nless the shell option)-3.31 F F4(dotglob)3.31 E F0 .81
+(is set.)3.31 F .81(The \214lenames)5.81 F F4 -.63(``)3.31 G -.55(.').63
+G(')-.08 E F0(and)5.81 E F4 -.63(``)108 597.6 S(..).63 E -.63('')-.55 G
+F0 1.182(must al)6.812 F -.1(wa)-.1 G 1.182(ys be matched e).1 F
+(xplicitly)-.15 E 3.682(,e)-.65 G -.15(ve)-3.932 G 3.682(ni).15 G(f)
+-3.682 E F4(dotglob)3.682 E F0 1.182(is set.)3.682 F 1.181
+(In other cases, the)6.182 F F4 -.63(``)3.681 G -.55(.').63 G(')-.08 E
+F0 1.181(character is not)6.181 F .613(treated specially)108 609.6 R
+5.613(.W)-.65 G .613
+(hen matching a pathname, the slash character must al)-5.613 F -.1(wa)
+-.1 G .614(ys be matched e).1 F .614(xplicitly by a)-.15 F .655
+(slash in the pattern, b)108 621.6 R .655(ut in other matching conte)-.2
+F .655(xts it can be matched by a special pattern character as de-)-.15
+F .719(scribed belo)108 633.6 R 3.219(wu)-.25 G(nder)-3.219 E F1 -.09
+(Pa)3.219 G(tter).09 E 2.969(nM)-.135 G(atching)-2.969 E F2(.)A F0 .719
+(See the description of)5.219 F F4(shopt)3.219 E F0(belo)3.219 E 3.22
+(wu)-.25 G(nder)-3.22 E F1 .72(SHELL B)3.22 F(UIL)-.09 E .72(TIN COM-)
+-.828 F(MANDS)108 645.6 Q F0(for a description of the)2.25 E F4
+(nocaseglob)2.5 E F0(,)A F4(nullglob)2.5 E F0(,)A F4(failglob)2.5 E F0
+2.5(,a)C(nd)-2.5 E F4(dotglob)2.5 E F0(shell options.)2.5 E(The)108
+662.4 Q F1(GLOBIGNORE)2.562 E F0 .062(shell v)2.312 F .061
+(ariable may be used to restrict the set of \214le names matching a)-.25
+F F3(pattern)3.811 E F0 5.061(.I).24 G(f)-5.061 E F1(GLO-)2.561 E
+(BIGNORE)108 674.4 Q F0 1.096(is set, each matching \214le name that al\
+so matches one of the patterns in)3.346 F F1(GLOBIGNORE)3.597 E F0 1.097
+(is re-)3.347 F(mo)108 686.4 Q -.15(ve)-.15 G 2.851(df).15 G .351
+(rom the list of matches.)-2.851 F .351(If the)5.351 F F4(nocaseglob)
+2.851 E F0 .351(option is set, the matching ag)2.851 F .351
+(ainst the patterns in)-.05 F F1(GLO-)2.85 E(BIGNORE)108 698.4 Q F0 1.48
+(is performed without re)3.73 F -.05(ga)-.15 G 1.48(rd to case.).05 F
+1.48(The \214lenames)6.48 F F4 -.63(``)3.98 G -.55(.').63 G(')-.08 E F0
+(and)6.48 E F4 -.63(``)3.98 G(..).63 E -.63('')-.55 G F0 1.481(are al)
+7.11 F -.1(wa)-.1 G 1.481(ys ignored when).1 F F1(GLOBIGNORE)108 710.4 Q
+F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15(ve)-.25 G
+1.627 -.4(r, s).15 H(etting).4 E F1(GLOBIGNORE)3.327 E F0 .827
+(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)-.25 F
+.682(enabling the)108 722.4 R F4(dotglob)3.182 E F0 .682
+(shell option, so all other \214lenames be)3.182 F .682(ginning with a)
+-.15 F F4 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.)
+5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(GNU Bash 5.1)72 768
+Q(2020 October 29)141.235 E(26)190.395 E 0 Cg EP
+%%Page: 27 27
%%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 .378
-(for pathname e)108 84 R .378(xpansion, the character)-.15 F/F1 10
-/Times-Bold@0 SF -.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 1.353(matched e)108 96 R(xplicitly)-.15 E
-3.853(,u)-.65 G 1.353(nless the shell option)-3.853 F F1(dotglob)3.854 E
-F0 1.354(is set.)3.854 F 1.354(The \214lenames)6.354 F F1 -.63(``)3.854
-G -.55(.').63 G(')-.08 E F0(and)6.354 E F1 -.63(``)3.854 G(..).63 E -.63
-('')-.55 G F0 1.354(must al)6.984 F -.1(wa)-.1 G 1.354(ys be).1 F .486
-(matched e)108 108 R(xplicitly)-.15 E 2.986(,e)-.65 G -.15(ve)-3.236 G
-2.986(ni).15 G(f)-2.986 E F1(dotglob)2.986 E F0 .485(is set.)2.986 F
-.485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08
-E F0 .485(character is not treated specially)5.485 F 5.485(.W)-.65 G
-(hen)-5.485 E .114(matching a pathname, the slash character must al)108
-120 R -.1(wa)-.1 G .114(ys be matched e).1 F .115
-(xplicitly by a slash in the pattern, b)-.15 F .115(ut in)-.2 F .581
-(other matching conte)108 132 R .581
-(xts it can be matched by a special pattern character as described belo)
--.15 F 3.081(wu)-.25 G(nder)-3.081 E/F2 9/Times-Bold@0 SF -.09(Pa)3.081
-G(tter).09 E(n)-.135 E(Matching)108 144 Q/F3 9/Times-Roman@0 SF(.)A F0
-.072(See the description of)4.572 F F1(shopt)2.572 E F0(belo)2.572 E
-2.572(wu)-.25 G(nder)-2.572 E F2 .073(SHELL B)2.572 F(UIL)-.09 E .073
-(TIN COMMANDS)-.828 F F0 .073(for a description of the)2.323 F F1
-(nocaseglob)108 156 Q F0(,)A F1(nullglob)2.5 E F0(,)A F1(failglob)2.5 E
-F0 2.5(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108
-172.8 Q F2(GLOBIGNORE)2.631 E F0 .131(shell v)2.381 F .131
-(ariable may be used to restrict the set of \214le names matching a)-.25
-F/F4 10/Times-Italic@0 SF(pattern)2.63 E F0 5.13(.I).24 G(f)-5.13 E F2
-(GLO-)2.63 E(BIGNORE)108 184.8 Q F0 2.015(is set, each matching \214le \
-name that also matches one of the patterns in)4.264 F F2(GLOBIGNORE)
-4.515 E F0(is)4.265 E(remo)108 196.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 F2(GLOBIGNORE)108 208.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 F2(GLOBIGNORE)108
-220.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 F2(GLOBIGNORE)3.327 E F0
-.827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of)
--.25 F .682(enabling the)108 232.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 244.8 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(beha)108 84 Q
1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F
-F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e)
--.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184
-(one of the patterns in)6.184 F F2(GLOBIGNORE)3.684 E F3(.)A F0(The)108
-256.8 Q F1(dotglob)3.131 E F0 .631(option is disabled when)3.131 F F2
-(GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .632
-(The pattern matching honors the setting of)5.632 F(the)108 268.8 Q F1
-(extglob)2.5 E F0(shell option.)2.5 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(har\
-acter that appears in a pattern, other than the special pattern charact\
-ers described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 E 3.62
-(itself. The)108 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)
-180 372 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 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)180 420 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1
-([...])144 432 Q F0 .579(Matches an)180 432 R 3.079(yo)-.15 G .579
+/F1 10/Times-Bold@0 SF -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684
+(,m)C(ak)-3.684 E(e)-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184
+(one of the patterns in)6.184 F/F2 9/Times-Bold@0 SF(GLOBIGNORE)3.684 E
+/F3 9/Times-Roman@0 SF(.)A F0(The)108 96 Q F1(dotglob)3.131 E F0 .631
+(option is disabled when)3.131 F F2(GLOBIGNORE)3.132 E F0 .632
+(is unset.)2.882 F .632(The pattern matching honors the setting of)5.632
+F(the)108 108 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108
+124.8 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 141.6 Q 3.138
+(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\
+ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H
+(atches).65 E 2.721(itself. The)108 153.6 R .221
+(NUL character may not occur in a pattern.)2.721 F 2.721(Ab)5.221 G .221
+(ackslash escapes the follo)-2.721 F .222(wing character; the es-)-.25 F
+.418(caping backslash is discarded when matching.)108 165.6 R .418
+(The special pattern characters must be quoted if the)5.418 F 2.918(ya)
+-.15 G .418(re to)-2.918 F(be matched literally)108 177.6 Q(.)-.65 E
+(The special pattern characters ha)108 194.4 Q .3 -.15(ve t)-.2 H
+(he follo).15 E(wing meanings:)-.25 E F1(*)144 211.2 Q F0 .376
+(Matches an)180 211.2 R 2.876(ys)-.15 G .376
+(tring, including the null string.)-2.876 F .376(When the)5.376 F F1
+(globstar)2.876 E F0 .377(shell option is enabled,)2.876 F(and)180 223.2
+Q F1(*)3.275 E F0 .775(is used in a pathname e)3.275 F .775
+(xpansion conte)-.15 F .775(xt, tw)-.15 F 3.275(oa)-.1 G(djacent)-3.275
+E F1(*)3.275 E F0 3.275(su)C .775(sed as a single pattern)-3.275 F 1.058
+(will match all \214les and zero or more directories and subdirectories\
+.)180 235.2 R 1.058(If follo)6.058 F 1.058(wed by a)-.25 F F1(/)3.558 E
+F0(,)A(tw)180 247.2 Q 2.5(oa)-.1 G(djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C
+(ill match only directories and subdirectories.)-2.5 E F1(?)144 259.2 Q
+F0(Matches an)180 259.2 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E
+F1([...])144 271.2 Q F0 .579(Matches an)180 271.2 R 3.079(yo)-.15 G .579
(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 F4 -.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
+(denotes a)180 283.2 R/F4 10/Times-Italic@0 SF -.15(ra)3.184 G(ng).15 E
+3.184(ee)-.1 G(xpr)-3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)
+-3.184 H .684(haracter that f).15 F .684(alls between those tw)-.1 F
+3.185(oc)-.1 G .685(haracters, inclu-)-3.185 F(si)180 295.2 Q -.15(ve)
+-.25 G 3.713(,u).15 G 1.213(sing the current locale')-3.713 F 3.712(sc)
+-.55 G 1.212(ollating sequence and character set, is matched.)-3.712 F
+1.212(If the)6.212 F 1.123(\214rst character follo)180 307.2 R 1.123
+(wing the)-.25 F F1([)3.623 E F0 1.123(is a)3.623 F F1(!)3.623 E F0
+1.124(or a)6.123 F F1(^)3.624 E F0 1.124(then an)3.624 F 3.624(yc)-.15 G
+1.124(haracter not enclosed is matched.)-3.624 F .895
+(The sorting order of characters in range e)180 319.2 R .894
(xpressions is determined by the current locale)-.15 F .375(and the v)
-180 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
+180 331.2 R .375(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0
+(or)2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375
(ariables, if set.)-.25 F 1.976 -.8(To o)5.376 H .376(btain the tra-).8
-F .068(ditional interpretation of range e)180 504 R .068
+F .068(ditional interpretation of range e)180 343.2 R .068
(xpressions, where)-.15 F F1([a\255d])2.568 E F0 .067(is equi)2.567 F
-.25(va)-.25 G .067(lent to).25 F F1([abcd])2.567 E F0 2.567(,s)C .067
-(et v)-2.567 F(alue)-.25 E .156(of the)180 516 R F1(LC_ALL)2.656 E F0
+(et v)-2.567 F(alue)-.25 E .156(of the)180 355.2 R F1(LC_ALL)2.656 E F0
.156(shell v)2.656 F .156(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C
2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0
.157(shell option.)2.657 F(A)5.157 E F1<ad>2.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 F4 -.15(ch)
-3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571
+180 367.2 R(A)5.193 E F1(])2.693 E F0 .193(may be matched by)2.693 F
+(including it as the \214rst character in the set.)180 379.2 Q -.4(Wi)
+180 397.2 S(thin).4 E F1([)3.07 E F0(and)3.07 E F1(])3.07 E F0(,)A F4
+-.15(ch)3.07 G(ar).15 E .571(acter classes)-.15 F F0 .571
(can be speci\214ed using the syntax)3.071 F F1([:)3.071 E F4(class)A F1
(:])A F0 3.071(,w)C(here)-3.071 E F4(class)3.071 E F0
-(is one of the follo)180 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
+(is one of the follo)180 409.2 Q
+(wing classes de\214ned in the POSIX standard:)-.25 E F1 5.889
+(alnum alpha ascii blank cntrl digit graph lo)180 421.2 R 5.889
+(wer print punct space up-)-.1 F 5(per w)180 433.2 R 5(ord xdigit)-.1 F
+F0 4.289(Ac)180 445.2 S 1.789(haracter class matches an)-4.289 F 4.289
+(yc)-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E
+F1 -.1(wo)4.29 G(rd).1 E F0(character)4.29 E
+(class matches letters, digits, and the character _.)180 457.2 Q -.4(Wi)
+180 475.2 S(thin).4 E F1([)4.537 E F0(and)4.537 E F1(])4.537 E F0 4.537
(,a)C(n)-4.537 E F4 2.037(equivalence class)4.537 F F0 2.036
(can be speci\214ed using the syntax)4.536 F F1([=)4.536 E F4(c)A F1(=])
A F0 4.536(,w)C(hich)-4.536 E .125(matches all characters with the same\
- collation weight \(as de\214ned by the current locale\) as)180 648 R
-(the character)180 660 Q F4(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 F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4(symbol)
-2.5 E F0(.)A .705(If the)108 694.8 R F1(extglob)3.205 E F0 .705
+ collation weight \(as de\214ned by the current locale\) as)180 487.2 R
+(the character)180 499.2 Q F4(c)2.5 E F0(.)A -.4(Wi)180 517.2 S(thin).4
+E F1([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)
+2.5 E F4(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F4
+(symbol)2.5 E F0(.)A .705(If the)108 534 R F1(extglob)3.205 E F0 .705
(shell option is enabled using the)3.205 F F1(shopt)3.205 E F0 -.2(bu)
3.205 G .704(iltin, se).2 F -.15(ve)-.25 G .704(ral e).15 F .704
-(xtended pattern matching operators)-.15 F .255(are recognized.)108
-706.8 R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4
+(xtended pattern matching operators)-.15 F .255(are recognized.)108 546
+R .255(In the follo)5.255 F .255(wing description, a)-.25 F F4
(pattern-list)2.755 E F0 .255
(is a list of one or more patterns separated by a)2.755 F F1(|)2.756 E
F0(.)A(Composite patterns may be formed using one or more of the follo)
-108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(26)188.455 E 0 Cg EP
-%%Page: 27 27
+108 558 Q(wing sub-patterns:)-.25 E F1(?\()144 582 Q F4(pattern-list)
+.833 E F1(\)).833 E F0(Matches zero or one occurrence of the gi)180 594
+Q -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(*\()144 606 Q F4
+(pattern-list).833 E F1(\)).833 E F0
+(Matches zero or more occurrences of the gi)180 618 Q -.15(ve)-.25 G 2.5
+(np).15 G(atterns)-2.5 E F1(+\()144 630 Q F4(pattern-list).833 E F1(\))
+.833 E F0(Matches one or more occurrences of the gi)180 642 Q -.15(ve)
+-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 654 Q F4(pattern-list).833
+E F1(\)).833 E F0(Matches one of the gi)180 666 Q -.15(ve)-.25 G 2.5(np)
+.15 G(atterns)-2.5 E F1(!\()144 678 Q F4(pattern-list).833 E F1(\)).833
+E F0(Matches an)180 690 Q(ything e)-.15 E(xcept one of the gi)-.15 E
+-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E .969(Complicated e)108 706.8
+R .969(xtended pattern matching ag)-.15 F .969
+(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968
+(specially when the patterns contain).65 F .09
+(alternations and the strings contain multiple matches.)108 718.8 R .091
+(Using separate matches ag)5.091 F .091(ainst shorter strings, or us-)
+-.05 F(ing arrays of strings instead of a single long string, may be f)
+108 730.8 Q(aster)-.1 E(.)-.55 E(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(27)190.395 E 0 Cg EP
+%%Page: 28 28
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(?\()144 84 Q/F2 10/Times-Italic@0 SF(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
-.969(Complicated e)108 208.8 R .969(xtended pattern matching ag)-.15 F
-.969(ainst long strings is slo)-.05 F 2.268 -.65(w, e)-.25 H .968
-(specially when the patterns contain).65 F 1.23
-(alternations and the strings contain multiple matches.)108 220.8 R 1.23
-(Using separate matches ag)6.23 F 1.23(ainst shorter strings, or)-.05 F
-(using arrays of strings instead of a single long string, may be f)108
-232.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 249.6 Q -.1(va)-.1 G(l).1
-E F0 1.113(After the preceding e)108 261.6 R 1.113
+SF(Quote Remo)87 84 Q -.1(va)-.1 G(l).1 E F0 1.113
+(After the preceding e)108 96 R 1.113
(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 273.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 290.4 Q F0 .545
-(Before a command is e)108 302.4 R -.15(xe)-.15 G .545
-(cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E
-(ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405
-(by the shell.)108 314.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 326.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 338.4 R -.15
+1.112(that did not result)4.445 F(from one of the abo)108 108 Q .3 -.15
+(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F2 10.95
+/Times-Bold@0 SF(REDIRECTION)72 124.8 Q F0 .545(Before a command is e)
+108 136.8 R -.15(xe)-.15 G .545(cuted, its input and output may be).15 F
+/F3 10/Times-Italic@0 SF -.37(re)3.045 G(dir).37 E(ected)-.37 E F0 .545
+(using a special notation interpreted)3.815 F .405(by the shell.)108
+148.8 R .405(Redirection allo)5.405 F .405(ws commands' \214le handles \
+to be duplicated, opened, closed, made to refer to)-.25 F(dif)108 160.8
+Q 1.019(ferent \214les, and can change the \214les the command reads fr\
+om and writes to.)-.25 F 1.02(Redirection may also be)6.02 F .215
+(used to modify \214le handles in the current shell e)108 172.8 R -.15
(xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E
-.215(wing redirection operators)-.25 F .875(may precede or appear an)108
-350.4 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 362.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 379.2 R .771(ord of)-.1 F .292(the form {)
-108 391.2 R F2(varname)A F0 2.793(}. In)B .293
+.215(wing redirection operators)-.25 F .862(may precede or appear an)108
+184.8 R .862(ywhere within a)-.15 F F3 .862(simple command)3.702 F F0
+.862(or may follo)4.132 F 3.362(wa)-.25 G F3(command).2 E F0 5.862(.R)
+.77 G .862(edirections are)-5.862 F(processed in the order the)108 196.8
+Q 2.5(ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771
+(Each redirection that may be preceded by a \214le descriptor number ma\
+y instead be preceded by a w)108 213.6 R .771(ord of)-.1 F .292
+(the form {)108 225.6 R F3(varname)A F0 2.793(}. In)B .293
(this case, for each redirection operator e)2.793 F .293
-(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 403.2 S
+(xcept >&- and <&-, the shell will allocate)-.15 F 3.18<618c>108 237.6 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 415.2 Q
-F0 .599(}, the v)B .599(alue of)-.25 F F2(varname)3.099 E F0 .599
-(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F2
+F3(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679
+(&- or <&- is preceded by {)-3.179 F F3(var)A(-)-.2 E(name)108 249.6 Q
+F0 .599(}, the v)B .599(alue of)-.25 F F3(varname)3.099 E F0 .599
+(de\214nes the \214le descriptor to close.)3.099 F .6(If {)5.6 F F3
(varname)A F0 3.1(}i)C 3.1(ss)-3.1 G .6(upplied, the redirection)-3.1 F
-1.238(persists be)108 427.2 R 1.238(yond the scope of the command, allo)
+1.238(persists be)108 261.6 R 1.238(yond the scope of the command, allo)
-.15 F 1.238(wing the shell programmer to manage the \214le descriptor)
--.25 F(himself.)108 439.2 Q .283(In the follo)108 456 R .284(wing descr\
-iptions, if the \214le descriptor number is omitted, and the \214rst ch\
-aracter of the redirect-)-.25 F .513(ion operator is)108 468 R F1(<)
+-.25 F(himself.)108 273.6 Q .283(In the follo)108 290.4 R .284(wing des\
+criptions, if the \214le descriptor number is omitted, and the \214rst \
+character of the redirect-)-.25 F .513(ion operator is)108 302.4 R F1(<)
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 480 Q F1(>)2.5 E F0 2.5(,t)C
+(redirection operator is)108 314.4 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 496.8 R .824(ord follo)-.1 F .824
+-2.5 E .824(The w)108 331.2 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 508.8 R .463(xpansion, tilde e)-.15 F .462
+(jected to brace e)108 343.2 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 520.8 R
+(xpansion, command substitution, arith-)-.15 F .866(metic e)108 355.2 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 532.8 S(rd,).1 E F1
+F .867(xpands to more than one)-.15 F -.1(wo)108 367.2 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 549.6 Q -.15
-(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 566.4 Q F1(>)2.5
+(Note that the order of redirections is signi\214cant.)108 384 Q -.15
+(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 400.8 Q F1(>)2.5
E F0(dirlist 2)2.5 E F1(>&)A F0(1)A
-(directs both standard output and standard error to the \214le)108 583.2
-Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 600
-Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527
-(directs only the standard output to \214le)108 616.8 R F2(dirlist)3.027
-E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527
+(directs both standard output and standard error to the \214le)108 417.6
+Q F3(dirlist)2.85 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144
+434.4 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .505
+(directs only the standard output to \214le)108 451.2 R F3(dirlist)3.355
+E F0 3.005(,b).68 G .505(ecause the standard error w)-3.005 F .505
(as duplicated from the standard)-.1 F
-(output before the standard output w)108 628.8 Q(as redirected to)-.1 E
-F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 645.6 Q F0 .598(handles se)3.098
+(output before the standard output w)108 463.2 Q(as redirected to)-.1 E
+F3(dirlist)2.85 E F0(.).68 E F1(Bash)108 480 Q F0 .598(handles se)3.098
F -.15(ve)-.25 G .598(ral \214lenames specially when the).15 F 3.099(ya)
-.15 G .599(re used in redirections, as described in the follo)-3.099 F
-(wing)-.25 E 3.478(table. If)108 657.6 R .978
+(wing)-.25 E 3.478(table. If)108 492 R .978
(the operating system on which)3.478 F F1(bash)3.478 E F0 .978
(is running pro)3.478 F .977
(vides these special \214les, bash will use them;)-.15 F
-(otherwise it will emulate them internally with the beha)108 669.6 Q
-(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 686.4 Q(v/fd/)-.15
-E F2(fd)A F0(If)180 698.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E
-(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0
-(is duplicated.)2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E
-(27)188.455 E 0 Cg EP
-%%Page: 28 28
+(otherwise it will emulate them internally with the beha)108 504 Q
+(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 520.8 Q(v/fd/)-.15
+E F3(fd)A F0(If)180 532.8 Q F3(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E
+(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F3(fd)2.5 E F0
+(is duplicated.)2.5 E F1(/de)144 544.8 Q(v/stdin)-.15 E F0
+(File descriptor 0 is duplicated.)180 556.8 Q F1(/de)144 568.8 Q
+(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 580.8 Q F1(/de)
+144 592.8 Q(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180
+604.8 Q F1(/de)144 616.8 Q(v/tcp/)-.15 E F3(host)A F1(/)A F3(port)A F0
+(If)180 628.8 Q F3(host)2.996 E F0 .496(is a v)2.996 F .496
+(alid hostname or Internet address, and)-.25 F F3(port)2.997 E F0 .497
+(is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E
+(vice name,)180 640.8 Q F1(bash)2.5 E F0
+(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144
+652.8 Q(v/udp/)-.15 E F3(host)A F1(/)A F3(port)A F0(If)180 664.8 Q F3
+(host)2.997 E F0 .497(is a v)2.997 F .497
+(alid hostname or Internet address, and)-.25 F F3(port)2.996 E F0 .496
+(is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E
+(vice name,)180 676.8 Q F1(bash)2.5 E F0
+(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108
+693.6 S(ailure to open or create a \214le causes the redirection to f)
+-2.6 E(ail.)-.1 E .045(Redirections using \214le descriptors greater th\
+an 9 should be used with care, as the)108 710.4 R 2.546(ym)-.15 G .046
+(ay con\215ict with \214le de-)-2.546 F
+(scriptors the shell uses internally)108 722.4 Q(.)-.65 E(GNU Bash 5.1)
+72 768 Q(2020 October 29)141.235 E(28)190.395 E 0 Cg EP
+%%Page: 29 29
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(/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
+SF(Redir)87 84 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
+108 96 R .391(xpansion of)-.15 F/F2 10/Times-Italic@0 SF(wor)3.231 E(d)
+-.37 E F0 .391(to be opened for read-)3.661 F(ing on \214le descriptor)
+108 108 Q F2(n)2.86 E F0 2.5(,o).24 G 2.5(rt)-2.5 G
(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0
(is not speci\214ed.)2.74 E
-(The general format for redirecting input is:)108 319.2 Q([)144 336 Q F2
-(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 352.8 Q(ecting Output)
--.18 E F0 .174
+(The general format for redirecting input is:)108 124.8 Q([)144 141.6 Q
+F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 158.4 Q
+(ecting Output)-.18 E F0 .174
(Redirection of output causes the \214le whose name results from the e)
-108 364.8 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175
-(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 376.8
-R F2(n)3.325 E F0 3.325(,o).24 G 3.325(rt)-3.325 G .824
-(he standard output \(\214le descriptor 1\) if)-3.325 F F2(n)3.684 E F0
-.824(is not speci\214ed.)3.564 F .824(If the \214le does not)5.824 F
--.15(ex)108 388.8 S(ist it is created; if it does e).15 E
+108 170.4 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175
+(to be opened for writ-)3.445 F .084(ing on \214le descriptor)108 182.4
+R F2(n)2.944 E F0 2.583(,o).24 G 2.583(rt)-2.583 G .083
+(he standard output \(\214le descriptor 1\) if)-2.583 F F2(n)2.943 E F0
+.083(is not speci\214ed.)2.823 F .083(If the \214le does not e)5.083 F
+(x-)-.15 E(ist it is created; if it does e)108 194.4 Q
(xist it is truncated to zero size.)-.15 E
-(The general format for redirecting output is:)108 405.6 Q([)144 422.4 Q
+(The general format for redirecting output is:)108 211.2 Q([)144 228 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
+(If the redirection operator is)108 244.8 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
+(iltin has been enabled, the redirection).2 F .658(will f)108 256.8 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
+5.657 F .408(rection operator is)108 268.8 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)
+280.8 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
+297.6 S(pending Redir).25 E(ected Output)-.18 E F0 .642
+(Redirection of output in this f)108 309.6 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
+(xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .454
+(opened for appending on \214le descriptor)108 321.6 R F2(n)3.315 E F0
+2.955(,o).24 G 2.955(rt)-2.955 G .455
+(he standard output \(\214le descriptor 1\) if)-2.955 F F2(n)3.315 E F0
+.455(is not speci\214ed.)3.195 F(If)5.455 E(the \214le does not e)108
+333.6 Q(xist it is created.)-.15 E
+(The general format for appending output is:)108 350.4 Q([)144 367.2 Q
+F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 384 Q
(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
+(This construct allo)108 396 R .249(ws both the standard output \(\214l\
+e descriptor 1\) and the standard error output \(\214le descrip-)-.25 F
+(tor 2\) to be redirected to the \214le whose name is the e)108 408 Q
+(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E(There are tw)108
+424.8 Q 2.5(of)-.1 G
(ormats for redirecting standard output and standard error:)-2.5 E F1
-(&>)144 636 Q F2(wor)A(d)-.37 E F0(and)108 648 Q F1(>&)144 660 Q F2(wor)
-A(d)-.37 E F0(Of the tw)108 676.8 Q 2.5(of)-.1 G
+(&>)144 441.6 Q F2(wor)A(d)-.37 E F0(and)108 453.6 Q F1(>&)144 465.6 Q
+F2(wor)A(d)-.37 E F0(Of the tw)108 482.4 Q 2.5(of)-.1 G
(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 F1<ad>2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G
-.115(oes, other redirection operators)-2.615 F(apply \(see)108 722.4 Q
-F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E
-(w\) for compatibility reasons.)-.25 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(28)188.455 E 0 Cg EP
-%%Page: 29 29
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.25(Ap)87 84 S(pending Standard Output and Standard Err).25 E(or)
--.18 E F0 .249(This construct allo)108 96 R .249(ws both the standard o\
-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
+-.25(va)-.25 G(lent to).25 E F1(>)144 499.2 Q F2(wor)A(d)-.37 E F0(2)2.5
+E F1(>&)A F0(1)A .114(When using the second form,)108 516 R F2(wor)2.614
+E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F F1
+<ad>2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G .115
+(oes, other redirection operators)-2.615 F(apply \(see)108 528 Q F1
+(Duplicating File Descriptors)2.5 E F0(belo)2.5 E
+(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 544.8 S
+(pending Standard Output and Standard Err).25 E(or)-.18 E F0 .249
+(This construct allo)108 556.8 R .249(ws both the standard output \(\
+\214le descriptor 1\) and the standard error output \(\214le descrip-)
+-.25 F(tor 2\) to be appended to the \214le whose name is the e)108
+568.8 Q(xpansion of)-.15 E F2(wor)2.84 E(d)-.37 E F0(.).77 E
(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
+585.6 Q F1(&>>)144 602.4 Q F2(wor)A(d)-.37 E F0
+(This is semantically equi)108 619.2 Q -.25(va)-.25 G(lent to).25 E F1
+(>>)144 636 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108
+652.8 Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E
+F1(Her)87 669.6 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of red\
+irection instructs the shell to read input from the current source unti\
+l a line containing only)108 681.6 R F2(delimiter)108.35 693.6 Q F0 .615
(\(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
+F(dard input \(or \214le descriptor)108 705.6 Q F2(n)2.5 E F0(if)2.5 E
F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E
-(The format of here-documents is:)108 261.6 Q([)144 278.4 Q F2(n)A F0(])
-A F1(<<)A F0([)A F1<ad>A 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
+(The format of here-documents is:)108 722.4 Q(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(29)190.395 E 0 Cg EP
+%%Page: 30 30
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E([)144 84 Q/F1 10
+/Times-Italic@0 SF(n)A F0(])A/F2 10/Times-Bold@0 SF(<<)A F0([)A F2<ad>A
+F0(])A F1(wor)A(d)-.37 E(her)164 96 Q(e-document)-.37 E(delimiter)144
+108 Q F0 .301(No parameter and v)108 124.8 R .302(ariable e)-.25 F .302
(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(\\<newline>)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
+(xpansion, or pathname e)-.15 F(xpansion)-.15 E .381(is performed on)108
+136.8 R F1(wor)3.221 E(d)-.37 E F0 5.381(.I).77 G 2.881(fa)-5.381 G .681
+-.15(ny p)-2.881 H .381(art of).15 F F1(wor)3.221 E(d)-.37 E F0 .381
+(is quoted, the)3.651 F F1(delimiter)3.231 E F0 .381
+(is the result of quote remo)3.611 F -.25(va)-.15 G 2.881(lo).25 G(n)
+-2.881 E F1(wor)3.221 E(d)-.37 E F0(,).77 E .773
+(and the lines in the here-document are not e)108 148.8 R 3.274
+(xpanded. If)-.15 F F1(wor)3.274 E(d)-.37 E F0 .774
+(is unquoted, all lines of the here-document)3.274 F 1.195
+(are subjected to parameter e)108 160.8 R 1.194
+(xpansion, command substitution, and arithmetic e)-.15 F 1.194
+(xpansion, the character se-)-.15 F(quence)108 172.8 Q F2(\\<newline>)
+2.5 E F0(is ignored, and)2.5 E F2(\\)2.5 E F0
+(must be used to quote the characters)2.5 E F2(\\)2.5 E F0(,)A F2($)2.5
+E F0 2.5(,a)C(nd)-2.5 E F2<92>2.5 E F0(.)A .601
+(If the redirection operator is)108 189.6 R F2(<<\255)3.101 E F0 3.101
+(,t)C .601(hen all leading tab characters are stripped from input lines\
+ and the line)-3.101 F(containing)108 201.6 Q F1(delimiter)2.85 E F0 5
+(.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)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792
+-.25 E(ashion.)-.1 E F2(Her)87 218.4 Q 2.5(eS)-.18 G(trings)-2.5 E F0
+2.5(Av)108 230.4 S(ariant of here documents, the format is:)-2.75 E([)
+144 247.2 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 264 Q F1
+(wor)3.292 E(d)-.37 E F0(under)3.292 E .792(goes tilde e)-.18 F .792
(xpansion, parameter and v)-.15 F .792(ariable e)-.25 F .791
-(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 470.4 S
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)108 276 S
1.187(pansion, and quote remo).15 F -.25(va)-.15 G 3.687(l. P).25 F
1.187(athname e)-.15 F 1.187(xpansion and w)-.15 F 1.187
(ord splitting are not performed.)-.1 F 1.188(The result is)6.187 F .375
-(supplied as a single string, with a ne)108 482.4 R .374(wline appended\
-, to the command on its standard input \(or \214le descrip-)-.25 F(tor)
-108 494.4 Q F2(n)2.5 E F0(if)2.5 E F2(n)2.5 E F0(is speci\214ed\).)2.5 E
-F1(Duplicating File Descriptors)87 511.2 Q F0(The redirection operator)
-108 523.2 Q([)144 540 Q F2(n)A F0(])A F1(<&)A F2(wor)A(d)-.37 E F0 .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
+(supplied as a single string, with a ne)108 288 R .374(wline appended, \
+to the command on its standard input \(or \214le descrip-)-.25 F(tor)108
+300 Q F1(n)2.5 E F0(if)2.5 E F1(n)2.5 E F0(is speci\214ed\).)2.5 E F2
+(Duplicating File Descriptors)87 316.8 Q F0(The redirection operator)108
+328.8 Q([)144 345.6 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126
+(is used to duplicate input \214le descriptors.)108 362.4 R(If)5.127 E
+F1(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127
(pands to one or more digits, the \214le descriptor denoted).15 F(by)108
-568.8 Q F2(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G
+374.4 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G
2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G
-2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.297 E(d)-.37 E F0
+2.957(ft)-5.457 G .457(he digits in)-2.957 F F1(wor)3.297 E(d)-.37 E F0
.457(do not specify a \214le descriptor open)3.727 F .149
-(for input, a redirection error occurs.)108 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 F1<ad>2.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 F1<ad>2.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<ad>
+(for input, a redirection error occurs.)108 386.4 R(If)5.149 E F1(wor)
+2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F2<ad>2.649 E
+F0 2.65<2c8c>C .15(le descriptor)-2.65 F F1(n)3.01 E F0 .15(is closed.)
+2.89 F(If)5.15 E F1(n)3.01 E F0 .15(is not speci\214ed,)2.89 F
+(the standard input \(\214le descriptor 0\) is used.)108 398.4 Q
+(The operator)108 415.2 Q([)144 432 Q F1(n)A F0(])A F2(>&)A F1(wor)A(d)
+-.37 E F0 .444
+(is used similarly to duplicate output \214le descriptors.)108 448.8 R
+(If)5.444 E F1(n)3.304 E F0 .443
+(is not speci\214ed, the standard output \(\214le descrip-)3.183 F .565
+(tor 1\) is used.)108 460.8 R .565(If the digits in)5.565 F F1(wor)3.406
+E(d)-.37 E F0 .566(do not specify a \214le descriptor open for output, \
+a redirection error oc-)3.836 F 3.204(curs. If)108 472.8 R F1(wor)3.544
+E(d)-.37 E F0 -.25(eva)3.974 G .704(luates to).25 F F2<ad>3.204 E F0
+3.204<2c8c>C .704(le descriptor)-3.204 F F1(n)3.563 E F0 .703
+(is closed.)3.443 F .703(As a special case, if)5.703 F F1(n)3.203 E F0
+.703(is omitted, and)3.203 F F1(wor)3.203 E(d)-.37 E F0(does)3.203 E
+.965(not e)108 484.8 R .965(xpand to one or more digits or)-.15 F F2<ad>
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 5.0)72 768 Q
-(2018 December 7)139.295 E(29)188.455 E 0 Cg EP
-%%Page: 30 30
+-3.466 F(pre)108 496.8 Q(viously)-.25 E(.)-.65 E F2(Mo)87 513.6 Q
+(ving File Descriptors)-.1 E F0(The redirection operator)108 525.6 Q([)
+144 542.4 Q F1(n)A F0(])A F2(<&)A F1(digit)A F2<ad>A F0(mo)108 559.2 Q
+-.15(ve)-.15 G 3.018(st).15 G .518(he \214le descriptor)-3.018 F F1
+(digit)3.018 E F0 .518(to \214le descriptor)3.018 F F1(n)3.378 E F0
+3.018(,o).24 G 3.018(rt)-3.018 G .517
+(he standard input \(\214le descriptor 0\) if)-3.018 F F1(n)3.017 E F0
+.517(is not speci-)3.017 F(\214ed.)108 571.2 Q F1(digit)5 E F0
+(is closed after being duplicated to)2.5 E F1(n)2.5 E F0(.)A(Similarly)
+108 588 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 604.8 Q F1
+(n)A F0(])A F2(>&)A F1(digit)A F2<ad>A F0(mo)108 621.6 Q -.15(ve)-.15 G
+2.767(st).15 G .267(he \214le descriptor)-2.767 F F1(digit)2.767 E F0
+.267(to \214le descriptor)2.767 F F1(n)3.127 E F0 2.767(,o).24 G 2.767
+(rt)-2.767 G .268(he standard output \(\214le descriptor 1\) if)-2.767 F
+F1(n)2.768 E F0 .268(is not speci-)2.768 F(\214ed.)108 633.6 Q F2
+(Opening File Descriptors f)87 650.4 Q(or Reading and Writing)-.25 E F0
+(The redirection operator)108 662.4 Q([)144 679.2 Q F1(n)A F0(])A F2(<>)
+A F1(wor)A(d)-.37 E F0 .518(causes the \214le whose name is the e)108
+696 R .518(xpansion of)-.15 F F1(wor)3.358 E(d)-.37 E F0 .518
+(to be opened for both reading and writing on \214le de-)3.788 F
+(scriptor)108 708 Q F1(n)2.86 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>
+-2.5 G(le descriptor 0 if)-2.5 E F1(n)2.86 E F0(is not speci\214ed.)2.74
+E(If the \214le does not e)5 E(xist, it is created.)-.15 E(GNU Bash 5.1)
+72 768 Q(2020 October 29)141.235 E(30)190.395 E 0 Cg EP
+%%Page: 31 31
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(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 F1<ad>A 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 F1<ad>A 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
+/Times-Bold@0 SF(ALIASES)72 84 Q/F2 10/Times-Italic@0 SF(Aliases)108 96
+Q F0(allo)3.173 E 3.173(was)-.25 G .674(tring to be substituted for a w)
+-3.173 F .674(ord when it is used as the \214rst w)-.1 F .674
(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
+ses that may be set and unset with the)108 108 R/F3 10/Times-Bold@0 SF
+(alias)2.893 E F0(and)2.893 E F3(unalias)2.893 E F0 -.2(bu)2.893 G .393
+(iltin commands).2 F(\(see)108 120 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)
+4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48
+(w\). The)-.25 F 1.98(\214rst w)4.48 F 1.98
+(ord of each simple command, if unquoted, is)-.1 F(check)108 132 Q .473
+(ed to see if it has an alias.)-.1 F .473(If so, that w)5.473 F .472
+(ord is replaced by the te)-.1 F .472(xt of the alias.)-.15 F .472
+(The characters)5.472 F F3(/)2.972 E F0(,)A F3($)2.972 E F0(,)A F3<92>
+2.972 E F0(,)A(and)108 144 Q F3(=)3.611 E F0 1.111(and an)3.611 F 3.611
+(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)-3.611 F F2(metac)3.612 E
+(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112
(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
+(ay not appear in an alias).15 F 3.62(name. The)108 156 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
+(The \214rst)6.119 F -.1(wo)108 168 S .513(rd of the replacement te).1 F
+.513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514
(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
+.296(not e)108 180 R .296(xpanded a second time.)-.15 F .296
+(This means that one may alias)5.296 F F3(ls)2.796 E F0(to)2.796 E F3
+.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F3
+(bash)2.795 E F0 .295(does not try)2.795 F .528(to recursi)108 192 R
+-.15(ve)-.25 G .528(ly e).15 F .528(xpand the replacement te)-.15 F
+3.028(xt. If)-.15 F .528(the last character of the alias v)3.028 F .529
+(alue is a)-.25 F F2(blank)3.299 E F0 3.029(,t).67 G .529(hen the ne)
+-3.029 F(xt)-.15 E(command w)108 204 Q(ord follo)-.1 E
(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
+E(Aliases are created and listed with the)108 220.8 Q F3(alias)2.5 E F0
+(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F3
(unalias)2.5 E F0(command.)2.5 E .284
-(There is no mechanism for using ar)108 448.8 R .284
+(There is no mechanism for using ar)108 237.6 R .284
(guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E
.284(guments are needed, a shell func-)-.18 F(tion should be used \(see)
-108 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
+108 249.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E .282
+(Aliases are not e)108 266.4 R .282
+(xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 2.782(,u)
+.15 G .282(nless the)-2.782 F F3(expand_aliases)2.783 E F0 .283
+(shell option is set us-)2.783 F(ing)108 278.4 Q F3(shopt)2.5 E F0
+(\(see the description of)2.5 E F3(shopt)2.5 E F0(under)2.5 E F4
(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
+295.2 R .435(what confusing.)-.25 F F3(Bash)5.435 E F0(al)2.935 E -.1
(wa)-.1 G .435(ys reads at least).1 F .67
-(one complete line of input, and all lines that mak)108 518.4 R 3.17(eu)
+(one complete line of input, and all lines that mak)108 307.2 R 3.17(eu)
-.1 G 3.17(pac)-3.17 G .67(ompound command, before e)-3.17 F -.15(xe)
-.15 G .67(cuting an).15 F 3.17(yo)-.15 G 3.17(ft)-3.17 G(he)-3.17 E
-1.059(commands on that line or the compound command.)108 530.4 R 1.059
+1.059(commands on that line or the compound command.)108 319.2 R 1.059
(Aliases are e)6.059 F 1.058(xpanded when a command is read, not)-.15 F
-.074(when it is e)108 542.4 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15
+.074(when it is e)108 331.2 R -.15(xe)-.15 G 2.574(cuted. Therefore,).15
F .075(an alias de\214nition appearing on the same line as another comm\
-and does not)2.574 F(tak)108 554.4 Q 2.838(ee)-.1 G -.25(ff)-2.838 G
+and does not)2.574 F(tak)108 343.2 Q 2.838(ee)-.1 G -.25(ff)-2.838 G
.338(ect until the ne).25 F .338(xt line of input is read.)-.15 F .337
(The commands follo)5.337 F .337
-(wing the alias de\214nition on that line are)-.25 F 1.472(not af)108
-566.4 R 1.473(fected by the ne)-.25 F 3.973(wa)-.25 G 3.973(lias. This)
--3.973 F(beha)3.973 E 1.473(vior is also an issue when functions are e)
--.2 F -.15(xe)-.15 G 3.973(cuted. Aliases).15 F(are)3.973 E -.15(ex)108
-578.4 S .61(panded when a function de\214nition is read, not when the f\
-unction is e).15 F -.15(xe)-.15 G .609
-(cuted, because a function de\214ni-).15 F .711
-(tion is itself a command.)108 590.4 R .711
-(As a consequence, aliases de\214ned in a function are not a)5.711 F
--.25(va)-.2 G .712(ilable until after that).25 F 1.186(function is e)108
-602.4 R -.15(xe)-.15 G 3.686(cuted. T).15 F 3.686(ob)-.8 G 3.686(es)
--3.686 G 1.185(afe, al)-3.686 F -.1(wa)-.1 G 1.185
-(ys put alias de\214nitions on a separate line, and do not use).1 F F1
-(alias)3.685 E F0(in)3.685 E(compound commands.)108 614.4 Q -.15(Fo)108
-631.2 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
-(ry purpose, aliases are superseded by shell functions.).15 E F3
-(FUNCTIONS)72 648 Q F0 3.467(As)108 660 S .967
+(wing the alias de\214nition on that line are)-.25 F .551(not af)108
+355.2 R .551(fected by the ne)-.25 F 3.051(wa)-.25 G 3.051(lias. This)
+-3.051 F(beha)3.051 E .551(vior is also an issue when functions are e)
+-.2 F -.15(xe)-.15 G 3.051(cuted. Aliases).15 F .552(are e)3.052 F(x-)
+-.15 E .426(panded when a function de\214nition is read, not when the f\
+unction is e)108 367.2 R -.15(xe)-.15 G .425
+(cuted, because a function de\214nition).15 F .403(is itself a command.)
+108 379.2 R .403
+(As a consequence, aliases de\214ned in a function are not a)5.403 F
+-.25(va)-.2 G .404(ilable until after that func-).25 F .862(tion is e)
+108 391.2 R -.15(xe)-.15 G 3.362(cuted. T).15 F 3.362(ob)-.8 G 3.362(es)
+-3.362 G .862(afe, al)-3.362 F -.1(wa)-.1 G .862
+(ys put alias de\214nitions on a separate line, and do not use).1 F F3
+(alias)3.362 E F0 .862(in com-)3.362 F(pound commands.)108 403.2 Q -.15
+(Fo)108 420 S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G
+(ry purpose, aliases are superseded by shell functions.).15 E F1
+(FUNCTIONS)72 436.8 Q F0 3.467(As)108 448.8 S .967
(hell function, de\214ned as described abo)-3.467 F 1.267 -.15(ve u)-.15
H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0
-.968(stores a series of commands for)3.217 F 1.002(later e)108 672 R
+.968(stores a series of commands for)3.217 F 1.002(later e)108 460.8 R
-.15(xe)-.15 G 3.502(cution. When).15 F 1.002(the name of a shell funct\
ion is used as a simple command name, the list of com-)3.502 F .315
-(mands associated with that function name is e)108 684 R -.15(xe)-.15 G
-2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316
+(mands associated with that function name is e)108 472.8 R -.15(xe)-.15
+G 2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .316
(cuted in the conte).15 F .316(xt of the current)-.15 F .036
-(shell; no ne)108 696 R 2.536(wp)-.25 G .036
+(shell; no ne)108 484.8 R 2.536(wp)-.25 G .036
(rocess is created to interpret them \(contrast this with the e)-2.536 F
-.15(xe)-.15 G .036(cution of a shell script\).).15 F .035(When a)5.035
-F .639(function is e)108 708 R -.15(xe)-.15 G .639(cuted, the ar).15 F
+F .639(function is e)108 496.8 R -.15(xe)-.15 G .639(cuted, the ar).15 F
.639
(guments to the function become the positional parameters during its e)
--.18 F -.15(xe)-.15 G(cution.).15 E 1.659(The special parameter)108 720
-R F1(#)4.159 E F0 1.659(is updated to re\215ect the change.)4.159 F
-1.659(Special parameter)6.659 F F1(0)4.159 E F0 1.658(is unchanged.)
-4.158 F 1.658(The \214rst)6.658 F(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(30)188.455 E 0 Cg EP
-%%Page: 31 31
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(element of the)108
-84 Q/F1 9/Times-Bold@0 SF(FUNCN)2.5 E(AME)-.18 E F0 -.25(va)2.25 G
+-.18 F -.15(xe)-.15 G(cution.).15 E .533(The special parameter)108 508.8
+R F3(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532
+(Special parameter)5.532 F F3(0)3.032 E F0 .532(is unchanged.)3.032 F
+.532(The \214rst ele-)5.532 F(ment of the)108 520.8 Q F4(FUNCN)2.5 E
+(AME)-.18 E F0 -.25(va)2.25 G
(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
-100.8 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25
+537.6 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25
(vironment are identical between a function and its caller with)-.4 F
-1.215(these e)108 112.8 R 1.215(xceptions: the)-.15 F F1(DEB)3.715 E(UG)
--.09 E F0(and)3.465 E/F2 10/Times-Bold@0 SF(RETURN)3.715 E F0 1.215
-(traps \(see the description of the)3.715 F F2(trap)3.714 E F0 -.2(bu)
-3.714 G 1.214(iltin under).2 F F1(SHELL)3.714 E -.09(BU)108 124.8 S(IL)
+1.215(these e)108 549.6 R 1.215(xceptions: the)-.15 F F4(DEB)3.715 E(UG)
+-.09 E F0(and)3.465 E F3(RETURN)3.715 E F0 1.215
+(traps \(see the description of the)3.715 F F3(trap)3.714 E F0 -.2(bu)
+3.714 G 1.214(iltin under).2 F F4(SHELL)3.714 E -.09(BU)108 561.6 S(IL)
.09 E .478(TIN COMMANDS)-.828 F F0(belo)2.728 E .479
(w\) are not inherited unless the function has been gi)-.25 F -.15(ve)
--.25 G 2.979(nt).15 G(he)-2.979 E F2(trace)2.979 E F0(attrib)2.979 E
-.479(ute \(see)-.2 F .421(the description of the)108 136.8 R F1(declar)
+-.25 G 2.979(nt).15 G(he)-2.979 E F3(trace)2.979 E F0(attrib)2.979 E
+.479(ute \(see)-.2 F .421(the description of the)108 573.6 R F4(declar)
2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)
--.25 F F2 .42(\255o functrace)2.92 F F0 .42
-(shell option has been enabled with the)2.92 F F2(set)2.92 E F0 -.2(bu)
-108 148.8 S .071(iltin \(in which case all functions inherit the).2 F F2
-(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F2(RETURN)2.572 E F0 .072
-(traps\), and the)2.572 F F1(ERR)2.572 E F0 .072(trap is not inher)2.322
-F(-)-.2 E(ited unless the)108 160.8 Q F2(\255o errtrace)2.5 E F0
-(shell option has been enabled.)2.5 E -1.11(Va)108 177.6 S .656
-(riables local to the function may be declared with the)1.11 F F2(local)
+-.25 F F3 .42(\255o functrace)2.92 F F0 .42
+(shell option has been enabled with the)2.92 F F3(set)2.92 E F0 -.2(bu)
+108 585.6 S .071(iltin \(in which case all functions inherit the).2 F F3
+(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F3(RETURN)2.572 E F0 .072
+(traps\), and the)2.572 F F4(ERR)2.572 E F0 .072(trap is not inher)2.322
+F(-)-.2 E(ited unless the)108 597.6 Q F3(\255o errtrace)2.5 E F0
+(shell option has been enabled.)2.5 E -1.11(Va)108 614.4 S .656
+(riables local to the function may be declared with the)1.11 F F3(local)
3.155 E F0 -.2(bu)3.155 G .655(iltin command.).2 F(Ordinarily)5.655 E
-3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 189.6 R .05
+3.155(,v)-.65 G .655(ariables and)-3.405 F .05(their v)108 626.4 R .05
(alues are shared between the function and its caller)-.25 F 5.051(.I)
--.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F2(local)
+-.55 G 2.551(fav)-5.051 G .051(ariable is declared)-2.801 F F3(local)
2.551 E F0 2.551(,t)C .051(he v)-2.551 F(ariable')-.25 E 2.551(sv)-.55 G
(isi-)-2.551 E 1.186(ble scope is restricted to that function and its c\
-hildren \(including the functions it calls\).)108 201.6 R 1.185(Local v)
-6.185 F(ariables)-.25 E("shado)108 213.6 Q .154(w" v)-.25 F .154
+hildren \(including the functions it calls\).)108 638.4 R 1.185(Local v)
+6.185 F(ariables)-.25 E("shado)108 650.4 Q .154(w" v)-.25 F .154
(ariables with the same name declared at pre)-.25 F .155(vious scopes.)
-.25 F -.15(Fo)5.155 G 2.655(ri).15 G .155(nstance, a local v)-2.655 F
.155(ariable declared)-.25 F .67(in a function hides a global v)108
-225.6 R .669(ariable of the same name: references and assignments refer\
- to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 237.6 R .688
+662.4 R .669(ariable of the same name: references and assignments refer\
+ to the local v)-.25 F(ari-)-.25 E .688(able, lea)108 674.4 R .688
(ving the global v)-.2 F .688(ariable unmodi\214ed.)-.25 F .688
(When the function returns, the global v)5.688 F .688
-(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 249.6 Q .727
-(The shell uses)108 266.4 R/F3 10/Times-Italic@0 SF .727
-(dynamic scoping)3.227 F F0 .726(to control a v)3.227 F(ariable')-.25 E
-3.226(sv)-.55 G .726(isibility within functions.)-3.226 F -.4(Wi)5.726 G
-.726(th dynamic scoping,).4 F .007(visible v)108 278.4 R .007
+(ariable is once ag)-.25 F(ain)-.05 E(visible.)108 686.4 Q .727
+(The shell uses)108 703.2 R F2 .727(dynamic scoping)3.227 F F0 .726
+(to control a v)3.227 F(ariable')-.25 E 3.226(sv)-.55 G .726
+(isibility within functions.)-3.226 F -.4(Wi)5.726 G .726
+(th dynamic scoping,).4 F .007(visible v)108 715.2 R .007
(ariables and their v)-.25 F .007
(alues are a result of the sequence of function calls that caused e)-.25
F -.15(xe)-.15 G .008(cution to reach).15 F .814(the current function.)
-108 290.4 R .813(The v)5.814 F .813(alue of a v)-.25 F .813
+108 727.2 R .813(The v)5.814 F .813(alue of a v)-.25 F .813
(ariable that a function sees depends on its v)-.25 F .813
-(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(an)108 302.4 Q
-2.116 -.65(y, w)-.15 H .816
+(alue within its caller)-.25 F 3.313(,i)-.4 G(f)-3.313 E(GNU Bash 5.1)72
+768 Q(2020 October 29)141.235 E(31)190.395 E 0 Cg EP
+%%Page: 32 32
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(an)108 84 Q 2.116
+-.65(y, w)-.15 H .816
(hether that caller is the "global" scope or another shell function.).65
F .817(This is also the v)5.816 F .817(alue that a local)-.25 F -.25(va)
-108 314.4 S(riable declaration "shado).25 E(ws", and the v)-.25 E
+108 96 S(riable declaration "shado).25 E(ws", and the v)-.25 E
(alue that is restored when the function returns.)-.25 E -.15(Fo)108
-331.2 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E F3
-(var)2.724 E F0 .223(is declared as local in function)2.724 F F3(func1)
-2.723 E F0 2.723(,a)C(nd)-2.723 E F3(func1)2.723 E F0 .223
-(calls another function)2.723 F F3(func2)2.723 E F0(,)A .463
-(references to)108 343.2 R F3(var)2.963 E F0 .463(made from within)2.963
-F F3(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot)
--2.964 G .464(he local v)-2.964 F(ariable)-.25 E F3(var)2.964 E F0(from)
-2.964 E F3(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F
-(y)-.15 E(global v)108 355.2 Q(ariable named)-.25 E F3(var)2.5 E F0(.)A
-(The)108 372 Q F2(unset)2.983 E F0 -.2(bu)2.983 G .483
-(iltin also acts using the same dynamic scope: if a v).2 F .482
+112.8 S 2.724(re).15 G .224(xample, if a v)-2.874 F(ariable)-.25 E/F1 10
+/Times-Italic@0 SF(var)2.724 E F0 .223(is declared as local in function)
+2.724 F F1(func1)2.723 E F0 2.723(,a)C(nd)-2.723 E F1(func1)2.723 E F0
+.223(calls another function)2.723 F F1(func2)2.723 E F0(,)A .463
+(references to)108 124.8 R F1(var)2.963 E F0 .463(made from within)2.963
+F F1(func2)2.963 E F0 .463(will resolv)2.963 F 2.964(et)-.15 G 2.964(ot)
+-2.964 G .464(he local v)-2.964 F(ariable)-.25 E F1(var)2.964 E F0(from)
+2.964 E F1(func1)2.964 E F0 2.964(,s)C(hado)-2.964 E .464(wing an)-.25 F
+(y)-.15 E(global v)108 136.8 Q(ariable named)-.25 E F1(var)2.5 E F0(.)A
+(The)108 153.6 Q/F2 10/Times-Bold@0 SF(unset)2.983 E F0 -.2(bu)2.983 G
+.483(iltin also acts using the same dynamic scope: if a v).2 F .482
(ariable is local to the current scope,)-.25 F F2(unset)2.982 E F0 .19
-(will unset it; otherwise the unset will refer to the v)108 384 R .19
+(will unset it; otherwise the unset will refer to the v)108 165.6 R .19
(ariable found in an)-.25 F 2.69(yc)-.15 G .19
(alling scope as described abo)-2.69 F -.15(ve)-.15 G 5.19(.I).15 G(f)
--5.19 E 2.721(av)108 396 S .221(ariable at the current local scope is u\
-nset, it will remain so until it is reset in that scope or until the fu\
-nc-)-2.971 F .013(tion returns.)108 408 R .013
+-5.19 E 2.721(av)108 177.6 S .221(ariable at the current local scope is\
+ unset, it will remain so until it is reset in that scope or until the \
+func-)-2.971 F .013(tion returns.)108 189.6 R .013
(Once the function returns, an)5.013 F 2.513(yi)-.15 G .014
(nstance of the v)-2.513 F .014(ariable at a pre)-.25 F .014
(vious scope will become visible.)-.25 F .567(If the unset acts on a v)
-108 420 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F 3.066
-(yi)-.15 G .566(nstance of a v)-3.066 F .566
-(ariable with that name that had been)-.25 F(shado)108 432 Q
-(wed will become visible.)-.25 E(The)108 448.8 Q F2(FUNCNEST)3.528 E F0
+108 201.6 R .566(ariable at a pre)-.25 F .566(vious scope, an)-.25 F
+3.066(yi)-.15 G .566(nstance of a v)-3.066 F .566
+(ariable with that name that had been)-.25 F(shado)108 213.6 Q
+(wed will become visible.)-.25 E(The)108 230.4 Q F2(FUNCNEST)3.528 E F0
-.25(va)3.528 G 1.028(riable, if set to a numeric v).25 F 1.028
(alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108
-460.8 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
+242.4 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G
(cations that e).2 E(xceed the limit cause the entire command to abort.)
--.15 E .044(If the b)108 477.6 R .043(uiltin command)-.2 F F2 -.18(re)
+-.15 E .044(If the b)108 259.2 R .043(uiltin command)-.2 F F2 -.18(re)
2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043
(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G
-.043(cution resumes with).15 F 1.011(the ne)108 489.6 R 1.011
+.043(cution resumes with).15 F 1.011(the ne)108 271.2 R 1.011
(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G
1.011(ommand associated with the)-3.511 F F2(RETURN)3.512 E F0 1.012
-(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 501.6 R
+(trap is e)3.512 F -.15(xe)-.15 G(cuted).15 E .214(before e)108 283.2 R
-.15(xe)-.15 G .214(cution resumes.).15 F .213
(When a function completes, the v)5.214 F .213
(alues of the positional parameters and the spe-)-.25 F(cial parameter)
-108 513.6 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
+108 295.2 Q F2(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E
2.5(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)
-2.65 G(cution.).15 E 1.358
-(Function names and de\214nitions may be listed with the)108 530.4 R F2
+(Function names and de\214nitions may be listed with the)108 312 R F2
<ad66>3.858 E F0 1.358(option to the)3.858 F F2(declar)3.858 E(e)-.18 E
F0(or)3.859 E F2(typeset)3.859 E F0 -.2(bu)3.859 G 1.359(iltin com-).2 F
-3.39(mands. The)108 542.4 R F2<ad46>3.39 E F0 .89(option to)3.39 F F2
+3.39(mands. The)108 324 R F2<ad46>3.39 E F0 .89(option to)3.39 F F2
(declar)3.39 E(e)-.18 E F0(or)3.39 E F2(typeset)3.39 E F0 .89
(will list the function names only \(and optionally the source)3.39 F
-.326(\214le and line number)108 554.4 R 2.826(,i)-.4 G 2.826(ft)-2.826 G
+.326(\214le and line number)108 336 R 2.826(,i)-.4 G 2.826(ft)-2.826 G
(he)-2.826 E F2(extdeb)2.826 E(ug)-.2 E F0 .326
(shell option is enabled\).)2.826 F .327(Functions may be e)5.327 F .327
-(xported so that subshells)-.15 F 1.298(automatically ha)108 566.4 R
-1.598 -.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F2<ad66>3.798 E
-F0 1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797
+(xported so that subshells)-.15 F 1.298(automatically ha)108 348 R 1.598
+-.15(ve t)-.2 H 1.298(hem de\214ned with the).15 F F2<ad66>3.798 E F0
+1.298(option to the)3.798 F F2(export)3.797 E F0 -.2(bu)3.797 G 3.797
(iltin. A).2 F 1.297(function de\214nition may be)3.797 F
-(deleted using the)108 578.4 Q F2<ad66>2.5 E F0(option to the)2.5 E F2
+(deleted using the)108 360 Q F2<ad66>2.5 E F0(option to the)2.5 E F2
(unset)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .371(Functions may be recursi)
-108 595.2 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871
+108 376.8 R -.15(ve)-.25 G 5.371(.T).15 G(he)-5.371 E F2(FUNCNEST)2.871
E F0 -.25(va)2.871 G .371
-(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 607.2 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 619.2 Q .3
--.15(ve c)-.25 H(alls.).15 E/F4 10.95/Times-Bold@0 SF(ARITHMETIC EV)72
-636 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.297(The shell allo)
-108 648 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.798 E F0(and)4.798 E F2(declar)108 660 Q(e)-.18 E F0 -.2(bu)
-2.684 G .183(iltin commands, the).2 F F2(\(\()2.683 E F0 .183
-(compound command, and)2.683 F F2 .183(Arithmetic Expansion)2.683 F F0
-2.683(\). Ev)B .183(aluation is done in)-.25 F<8c78>108 672 Q 1.057
+(riable may be used to limit the depth of the function call).25 F .323
+(stack and restrict the number of function in)108 388.8 R -.2(vo)-.4 G
+2.822(cations. By).2 F(def)2.822 E .322
+(ault, no limit is imposed on the number of re-)-.1 F(cursi)108 400.8 Q
+.3 -.15(ve c)-.25 H(alls.).15 E/F3 10.95/Times-Bold@0 SF(ARITHMETIC EV)
+72 417.6 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 1.088
+(The shell allo)108 429.6 R 1.088(ws arithmetic e)-.25 F 1.089
+(xpressions to be e)-.15 F -.25(va)-.25 G 1.089
+(luated, under certain circumstances \(see the).25 F F2(let)3.589 E F0
+(and)3.589 E F2(de-)3.589 E(clar)108 441.6 Q(e)-.18 E F0 -.2(bu)3.453 G
+.953(iltin commands, the).2 F F2(\(\()3.453 E F0 .952
+(compound command, and)3.452 F F2 .952(Arithmetic Expansion)3.452 F F0
+3.452(\). Ev)B .952(aluation is done in)-.25 F<8c78>108 453.6 Q 1.057
(ed-width inte)-.15 F 1.057(gers with no check for o)-.15 F -.15(ve)-.15
G(r\215o).15 E 2.357 -.65(w, t)-.25 H 1.057(hough di).65 F 1.057
(vision by 0 is trapped and \215agged as an error)-.25 F(.)-.55 E .829
-(The operators and their precedence, associati)108 684 R(vity)-.25 E
+(The operators and their precedence, associati)108 465.6 R(vity)-.25 E
3.329(,a)-.65 G .829(nd v)-3.329 F .829
(alues are the same as in the C language.)-.25 F .828(The fol-)5.828 F
-(lo)108 696 Q .439(wing list of operators is grouped into le)-.25 F -.15
-(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)5.44
-F -.15(ve)-.25 G .44(ls are listed in order).15 F
-(of decreasing precedence.)108 708 Q(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(31)188.455 E 0 Cg EP
-%%Page: 32 32
+(lo)108 477.6 Q .439(wing list of operators is grouped into le)-.25 F
+-.15(ve)-.25 G .439(ls of equal-precedence operators.).15 F .44(The le)
+5.44 F -.15(ve)-.25 G .44(ls are listed in order).15 F
+(of decreasing precedence.)108 489.6 Q F1(id)108 506.4 Q F2(++)A F1(id)
+2.5 E F2<adad>A F0 -.25(va)144 518.4 S
+(riable post-increment and post-decrement).25 E F2 2.5<ad2b>108 530.4 S
+F0(unary minus and plus)144 530.4 Q F2(++)108 542.4 Q F1(id)A F2<adad>
+2.5 E F1(id)A F0 -.25(va)144 554.4 S
+(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 566.4 S F0
+(logical and bitwise ne)144 566.4 Q -.05(ga)-.15 G(tion).05 E F2(**)108
+578.4 Q F0 -.15(ex)144 578.4 S(ponentiation).15 E F2 2.5(*/%)108 590.4 S
+F0(multiplication, di)144 590.4 Q(vision, remainder)-.25 E F2 2.5<2bad>
+108 602.4 S F0(addition, subtraction)144 602.4 Q F2(<< >>)108 614.4 Q F0
+(left and right bitwise shifts)144 614.4 Q F2(<= >= < >)108 626.4 Q F0
+(comparison)144 638.4 Q F2(== !=)108 650.4 Q F0(equality and inequality)
+144 650.4 Q F2(&)108 662.4 Q F0(bitwise AND)144 662.4 Q F2(^)108 674.4 Q
+F0(bitwise e)144 674.4 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)
+108 686.4 Q F0(bitwise OR)144 686.4 Q F2(&&)108 698.4 Q F0(logical AND)
+144 698.4 Q F2(||)108 710.4 Q F0(logical OR)144 710.4 Q(GNU Bash 5.1)72
+768 Q(2020 October 29)141.235 E(32)190.395 E 0 Cg EP
+%%Page: 33 33
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
-/Times-Italic@0 SF(id)108 84 Q/F2 10/Times-Bold@0 SF(++)A F1(id)2.5 E F2
-<adad>A F0 -.25(va)144 96 S(riable post-increment and post-decrement).25
-E F2 2.5<ad2b>108 108 S F0(unary minus and plus)144 108 Q F2(++)108 120
-Q F1(id)A F2<adad>2.5 E F1(id)A F0 -.25(va)144 132 S
-(riable pre-increment and pre-decrement).25 E F2 2.5(!~)108 144 S F0
-(logical and bitwise ne)144 144 Q -.05(ga)-.15 G(tion).05 E F2(**)108
-156 Q F0 -.15(ex)144 156 S(ponentiation).15 E F2 2.5(*/%)108 168 S F0
-(multiplication, di)144 168 Q(vision, remainder)-.25 E F2 2.5<2bad>108
-180 S F0(addition, subtraction)144 180 Q F2(<< >>)108 192 Q F0
-(left and right bitwise shifts)144 192 Q F2(<= >= < >)108 204 Q F0
-(comparison)144 216 Q F2(== !=)108 228 Q F0(equality and inequality)144
-228 Q F2(&)108 240 Q F0(bitwise AND)144 240 Q F2(^)108 252 Q F0
-(bitwise e)144 252 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F2(|)108
-264 Q F0(bitwise OR)144 264 Q F2(&&)108 276 Q F0(logical AND)144 276 Q
-F2(||)108 288 Q F0(logical OR)144 288 Q F1 -.2(ex)108 300 S(pr).2 E F2
-(?)A F1 -.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0
-(conditional operator)144 312 Q F2 2.5(=*)108 324 S 2.5(=/)-2.5 G 2.5
-(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)
--2.5 E F0(assignment)144 336 Q F1 -.2(ex)108 348 S(pr1).2 E F2(,)2.5 E
-F1 -.2(ex)2.5 G(pr2).2 E F0(comma)144 360 Q .68(Shell v)108 376.8 R .68
-(ariables are allo)-.25 F .68(wed as operands; parameter e)-.25 F .68
+/Times-Italic@0 SF -.2(ex)108 84 S(pr).2 E/F2 10/Times-Bold@0 SF(?)A F1
+-.2(ex)C(pr).2 E F2(:)A F1 -.2(ex)C(pr).2 E F0(conditional operator)144
+96 Q F2 2.5(=*)108 108 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5
+<3dad>-2.5 G 2.5(=<)-2.5 G(<= >>= &= ^= |=)-2.5 E F0(assignment)144 120
+Q F1 -.2(ex)108 132 S(pr1).2 E F2(,)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0
+(comma)144 144 Q .68(Shell v)108 160.8 R .68(ariables are allo)-.25 F
+.68(wed as operands; parameter e)-.25 F .68
(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 388.8 R 1.007(ithin an e)-.4
+-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 172.8 R 1.007(ithin an e)-.4
F 1.007(xpression, shell v)-.15 F 1.007
(ariables may also be referenced by name without using the parameter)
--.25 F -.15(ex)108 400.8 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G
-1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25
-(va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466
-(using the parameter e)108 412.8 R 1.466(xpansion syntax.)-.15 F 1.467
-(The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25
-(va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.258
-(when it is referenced, or when a v)108 424.8 R 1.258
-(ariable which has been gi)-.25 F -.15(ve)-.25 G 3.758(nt).15 G(he)
--3.758 E F1(inte)3.758 E -.1(ge)-.4 G(r).1 E F0(attrib)3.758 E 1.257
-(ute using)-.2 F F2(declar)3.757 E 3.757<65ad>-.18 G(i)-3.757 E F0(is)
-3.757 E .332(assigned a v)108 436.8 R 2.832(alue. A)-.25 F .332(null v)
-2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832
-(As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632
--.15(ve i)-.2 H(ts).15 E F1(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib)
-2.832 E .333(ute turned on)-.2 F(to be used in an e)108 448.8 Q
-(xpression.)-.15 E 1.406
-(Constants with a leading 0 are interpreted as octal numbers.)108 465.6
-R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.)
--.15 E .112(Otherwise, numbers tak)108 477.6 R 2.612(et)-.1 G .112
-(he form [)-2.612 F F1(base#)A F0 .112(]n, where the optional)B F1(base)
-2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534
-(representing the arithmetic base, and)108 489.6 R F1(n)3.034 E F0 .534
-(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533
-(is omitted, then base 10 is used.)3.033 F .512(When specifying)108
-501.6 R F1(n)3.012 E F0 3.012(,t)C .512
-(he digits greater than 9 are represented by the lo)-3.012 F .513
-(wercase letters, the uppercase letters,)-.25 F .943
-(@, and _, in that order)108 513.6 R 5.943(.I)-.55 G(f)-5.943 E F1(base)
-3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942
-(wercase and uppercase letters may be used)-.25 F
-(interchangeably to represent numbers between 10 and 35.)108 525.6 Q
-.234(Operators are e)108 542.4 R -.25(va)-.25 G .234
+-.25 F -.15(ex)108 184.8 S .165(pansion syntax.).15 F 2.665(As)5.165 G
+.165(hell v)-2.665 F .165(ariable that is null or unset e)-.25 F -.25
+(va)-.25 G .165(luates to 0 when referenced by name without us-).25 F
+.42(ing the parameter e)108 196.8 R .42(xpansion syntax.)-.15 F .42
+(The v)5.42 F .421(alue of a v)-.25 F .421(ariable is e)-.25 F -.25(va)
+-.25 G .421(luated as an arithmetic e).25 F .421(xpression when)-.15 F
+.154(it is referenced, or when a v)108 208.8 R .154
+(ariable which has been gi)-.25 F -.15(ve)-.25 G 2.654(nt).15 G(he)
+-2.654 E F1(inte)2.654 E -.1(ge)-.4 G(r).1 E F0(attrib)2.654 E .153
+(ute using)-.2 F F2(declar)2.653 E 2.653<65ad>-.18 G(i)-2.653 E F0 .153
+(is assigned a)2.653 F -.25(va)108 220.8 S 2.857(lue. A).25 F .357
+(null v)2.857 F .357(alue e)-.25 F -.25(va)-.25 G .357(luates to 0.).25
+F 2.857(As)5.357 G .357(hell v)-2.857 F .357(ariable need not ha)-.25 F
+.657 -.15(ve i)-.2 H(ts).15 E F1(inte)2.857 E -.1(ge)-.4 G(r).1 E F0
+(attrib)2.857 E .357(ute turned on to be used)-.2 F(in an e)108 232.8 Q
+(xpression.)-.15 E(Inte)108 249.6 Q .518(ger constants follo)-.15 F
+3.018(wt)-.25 G .518(he C language de\214nition, without suf)-3.018 F
+<8c78>-.25 E .517(es or character constants.)-.15 F .517(Constants with)
+5.517 F 3.282(al)108 261.6 S .782
+(eading 0 are interpreted as octal numbers.)-3.282 F 3.283(Al)5.782 G
+.783(eading 0x or 0X denotes he)-3.283 F 3.283(xadecimal. Otherwise,)
+-.15 F(num-)3.283 E .816(bers tak)108 273.6 R 3.316(et)-.1 G .816
+(he form [)-3.316 F F1(base#)A F0 .815(]n, where the optional)B F1(base)
+3.315 E F0 .815(is a decimal number between 2 and 64 representing)3.315
+F .349(the arithmetic base, and)108 285.6 R F1(n)2.849 E F0 .349
+(is a number in that base.)2.849 F(If)5.35 E F1(base#)2.85 E F0 .35
+(is omitted, then base 10 is used.)2.85 F .35(When speci-)5.35 F(fying)
+108 297.6 Q F1(n)2.975 E F0 2.975(,i)C 2.975(fan)-2.975 G .474(on-digit\
+ is required, the digits greater than 9 are represented by the lo)-2.975
+F .474(wercase letters, the up-)-.25 F .518
+(percase letters, @, and _, in that order)108 309.6 R 5.518(.I)-.55 G(f)
+-5.518 E F1(base)3.018 E F0 .518(is less than or equal to 36, lo)3.018 F
+.518(wercase and uppercase letters)-.25 F
+(may be used interchangeably to represent numbers between 10 and 35.)108
+321.6 Q .235(Operators are e)108 338.4 R -.25(va)-.25 G .235
(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 554.4 S
+(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .234
+(luated \214rst and may).25 F -.15(ove)108 350.4 S
(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F3 10.95
-/Times-Bold@0 SF(CONDITION)72 571.2 Q(AL EXPRESSIONS)-.219 E F0 .256
-(Conditional e)108 583.2 R .256(xpressions are used by the)-.15 F F2([[)
+/Times-Bold@0 SF(CONDITION)72 367.2 Q(AL EXPRESSIONS)-.219 E F0 .255
+(Conditional e)108 379.2 R .255(xpressions are used by the)-.15 F F2([[)
2.755 E F0 .255(compound command and the)2.755 F F2(test)2.755 E F0(and)
-2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255(iltin commands to test).2 F
-1.233(\214le attrib)108 595.2 R 1.233
-(utes and perform string and arithmetic comparisons.)-.2 F(The)6.234 E
-F2(test)3.734 E F0(abd)3.734 E F2([)3.734 E F0 1.234
-(commands determine their)3.734 F(beha)108 607.2 Q .997
-(vior based on the number of ar)-.2 F .996
-(guments; see the descriptions of those commands for an)-.18 F 3.496(yo)
--.15 G .996(ther com-)-3.496 F(mand-speci\214c actions.)108 619.2 Q .234
-(Expressions are formed from the follo)108 636 R .234
-(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .235
-(handles se)2.735 F -.15(ve)-.25 G .235(ral \214lenames spe-).15 F .425
-(cially when the)108 648 R 2.925(ya)-.15 G .425(re used in e)-2.925 F
+2.755 E F2([)2.756 E F0 -.2(bu)2.756 G .256(iltin commands to test).2 F
+.134(\214le attrib)108 391.2 R .134
+(utes and perform string and arithmetic comparisons.)-.2 F(The)5.133 E
+F2(test)2.633 E F0(and)2.633 E F2([)2.633 E F0 .133
+(commands determine their be-)2.633 F(ha)108 403.2 Q .197
+(vior based on the number of ar)-.2 F .198
+(guments; see the descriptions of those commands for an)-.18 F 2.698(yo)
+-.15 G .198(ther command-)-2.698 F(speci\214c actions.)108 415.2 Q .235
+(Expressions are formed from the follo)108 432 R .234
+(wing unary or binary primaries.)-.25 F F2(Bash)5.234 E F0 .234
+(handles se)2.734 F -.15(ve)-.25 G .234(ral \214lenames spe-).15 F .424
+(cially when the)108 444 R 2.924(ya)-.15 G .424(re used in e)-2.924 F
2.925(xpressions. If)-.15 F .425(the operating system on which)2.925 F
-F2(bash)2.924 E F0 .424(is running pro)2.924 F .424(vides these)-.15 F
-1.153(special \214les, bash will use them; otherwise it will emulate th\
-em internally with this beha)108 660 R 1.153(vior: If an)-.2 F(y)-.15 E
-F1(\214le)3.653 E F0(ar)108 672 Q .426
-(gument to one of the primaries is of the form)-.18 F F1(/de)2.926 E
-(v/fd/n)-.15 E F0 2.926(,t)C .426(hen \214le descriptor)-2.926 F F1(n)
-2.926 E F0 .426(is check)2.926 F 2.926(ed. If)-.1 F(the)2.926 E F1
-(\214le)2.926 E F0(ar)2.926 E(gu-)-.18 E .029
-(ment to one of the primaries is one of)108 684 R F1(/de)2.529 E
-(v/stdin)-.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.53(,o)C(r)
--2.53 E F1(/de)2.53 E(v/stderr)-.15 E F0 2.53<2c8c>C .03
-(le descriptor 0, 1, or 2, respec-)-2.53 F(ti)108 696 Q -.15(ve)-.25 G
-(ly).15 E 2.5(,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722
+F2(bash)2.925 E F0 .425(is running pro)2.925 F .425(vides these)-.15 F
+.345(special \214les, bash will use them; otherwise it will emulate the\
+m internally with this beha)108 456 R .344(vior: If an)-.2 F(y)-.15 E F1
+(\214le)2.844 E F0(ar)2.844 E(-)-.2 E .805
+(gument to one of the primaries is of the form)108 468 R F1(/de)3.305 E
+(v/fd/n)-.15 E F0 3.306(,t)C .806(hen \214le descriptor)-3.306 F F1(n)
+3.306 E F0 .806(is check)3.306 F 3.306(ed. If)-.1 F(the)3.306 E F1
+(\214le)3.306 E F0(ar)3.306 E(gu-)-.18 E .03
+(ment to one of the primaries is one of)108 480 R F1(/de)2.53 E(v/stdin)
+-.15 E F0(,)A F1(/de)2.529 E(v/stdout)-.15 E F0 2.529(,o)C(r)-2.529 E F1
+(/de)2.529 E(v/stderr)-.15 E F0 2.529<2c8c>C .029
+(le descriptor 0, 1, or 2, respec-)-2.529 F(ti)108 492 Q -.15(ve)-.25 G
+(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 712.8 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 724.8
-Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(32)188.455 E 0 Cg EP
-%%Page: 33 33
+108 508.8 R 3.221(ws)-.25 G .722(ymbolic links and operate on the tar)
+-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 520.8
+Q 1.096(When used with)108 538.8 R F2([[)3.596 E F0 3.596(,t)C(he)-3.596
+E F2(<)3.596 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le)
+3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.095
+E F2(test)3.595 E F0(com-)3.595 E(mand sorts using ASCII ordering.)108
+550.8 Q F2<ad61>108 574.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 574.8 S
+(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2<ad62>108
+586.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 586.8 S(ue if).35 E F1(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F2<ad63>108
+598.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 598.8 S(ue if).35 E F1(\214le)2.5
+E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F2
+<ad64>108 610.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 610.8 S(ue if).35 E F1
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F2
+<ad65>108 622.8 Q F1(\214le)2.5 E F0 -.35(Tr)144 622.8 S(ue if).35 E F1
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2<ad66>108 634.8 Q F1
+(\214le)2.5 E F0 -.35(Tr)144 634.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F2<ad67>108 646.8
+Q F1(\214le)2.5 E F0 -.35(Tr)144 646.8 S(ue if).35 E F1(\214le)2.5 E F0
+-.15(ex)2.5 G(ists and is set-group-id.).15 E F2<ad68>108 658.8 Q F1
+(\214le)2.5 E F0 -.35(Tr)144 658.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15
+(ex)2.5 G(ists and is a symbolic link.).15 E F2<ad6b>108 670.8 Q F1
+(\214le)2.5 E F0 -.35(Tr)144 670.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15
+(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 F2<ad70>108 682.8 Q F1(\214le)2.5 E F0 -.35(Tr)144
+682.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and is a named pipe \(FIFO\).).15 E F2<ad72>108 694.8 Q F1(\214le)
+2.5 E F0 -.35(Tr)144 694.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5
+G(ists and is readable.).15 E F2<ad73>108 706.8 Q F1(\214le)2.5 E F0
+-.35(Tr)144 706.8 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G
+(ists and has a size greater than zero.).15 E F2<ad74>108 718.8 Q F1(fd)
+2.5 E F0 -.35(Tr)144 718.8 S(ue if \214le descriptor).35 E F1(fd)4.47 E
+F0(is open and refers to a terminal.)3.27 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(33)190.395 E 0 Cg EP
+%%Page: 34 34
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.095
-(When used with)108 84 R/F1 10/Times-Bold@0 SF([[)3.595 E F0 3.595(,t)C
-(he)-3.595 E F1(<)3.595 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.096 E F1(test)
-3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 96 Q F1
-<ad61>108 120 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 120
-S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F1<ad62>108
-132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(ue if).35 E F2(\214le)2.5 E
-F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F1<ad63>108
-144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(ue if).35 E F2(\214le)2.5 E
-F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F1<ad64>
-108 156 Q F2(\214le)2.5 E F0 -.35(Tr)144 156 S(ue if).35 E F2(\214le)2.5
-E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F1<ad65>108
-168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2(\214le)2.5 E
-F0 -.15(ex)2.5 G(ists.).15 E F1<ad66>108 180 Q F2(\214le)2.5 E F0 -.35
-(Tr)144 180 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is a re).15 E(gular \214le.)-.15 E F1<ad67>108 192 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 192 S(ue if).35 E F2(\214le)2.5 E F0 -.15
-(ex)2.5 G(ists and is set-group-id.).15 E F1<ad68>108 204 Q F2(\214le)
-2.5 E F0 -.35(Tr)144 204 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is a symbolic link.).15 E F1<ad6b>108 216 Q F2(\214le)2.5 E F0
--.35(Tr)144 216 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G(it is set.)
--2.5 E F1<ad70>108 228 Q F2(\214le)2.5 E F0 -.35(Tr)144 228 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 F1<ad72>108 240 Q F2(\214le)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E
-F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is readable.).15 E F1<ad73>108
-252 Q F2(\214le)2.5 E F0 -.35(Tr)144 252 S(ue if).35 E F2(\214le)2.5 E
-F0 -.15(ex)2.5 G(ists and has a size greater than zero.).15 E F1<ad74>
-108 264 Q F2(fd)2.5 E F0 -.35(Tr)144 264 S(ue if \214le descriptor).35 E
-F2(fd)4.47 E F0(is open and refers to a terminal.)3.27 E F1<ad75>108 276
-Q F2(\214le)2.5 E F0 -.35(Tr)144 276 S(ue if).35 E F2(\214le)2.5 E F0
--.15(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F1<ad77>
-108 288 Q F2(\214le)2.5 E F0 -.35(Tr)144 288 S(ue if).35 E F2(\214le)2.5
-E F0 -.15(ex)2.5 G(ists and is writable.).15 E F1<ad78>108 300 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 300 S(ue if).35 E F2(\214le)2.5 E F0 -.15
-(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F1<ad47>108
-312 Q F2(\214le)2.5 E F0 -.35(Tr)144 312 S(ue if).35 E F2(\214le)2.5 E
-F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 E
-.3 -.15(ve g)-.25 H(roup id.).15 E F1<ad4c>108 324 Q F2(\214le)2.5 E F0
--.35(Tr)144 324 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and is a symbolic link.).15 E F1<ad4e>108 336 Q F2(\214le)2.5 E F0
--.35(Tr)144 336 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G
-(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F1
-<ad4f>108 348 Q F2(\214le)2.5 E F0 -.35(Tr)144 348 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<ad53>108 360 Q F2
-(\214le)2.5 E F0 -.35(Tr)144 360 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 372 Q F1
-(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 384 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 396 Q F0<ad>2.5 E F1(nt)
-A F2(\214le2)2.5 E F0 -.35(Tr)144 408 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 420 Q F0<ad>2.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144
-432 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 F1<ad6f>108 444 Q F2
-(optname)2.5 E F0 -.35(Tr)144 456 S .263(ue if the shell option).35 F F2
-(optname)2.992 E F0 .262(is enabled.)2.942 F .262
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad75>108 84 Q/F2 10/Times-Italic@0 SF(\214le)2.5 E F0 -.35(Tr)144 84
+S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and its set-user).15
+E(-id bit is set.)-.2 E F1<ad77>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 writable.)
+.15 E F1<ad78>108 108 Q F2(\214le)2.5 E F0 -.35(Tr)144 108 S(ue if).35 E
+F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G
+(cutable.).15 E F1<ad47>108 120 Q F2(\214le)2.5 E F0 -.35(Tr)144 120 S
+(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E
+(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve g)-.25 H(roup id.).15 E
+F1<ad4c>108 132 Q F2(\214le)2.5 E F0 -.35(Tr)144 132 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a symbolic link.).15 E F1
+<ad4e>108 144 Q F2(\214le)2.5 E F0 -.35(Tr)144 144 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and has been modi\214ed since it w)
+.15 E(as last read.)-.1 E F1<ad4f>108 156 Q F2(\214le)2.5 E F0 -.35(Tr)
+144 156 S(ue if).35 E F2(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15
+E(wned by the ef)-.25 E(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E
+F1<ad53>108 168 Q F2(\214le)2.5 E F0 -.35(Tr)144 168 S(ue if).35 E F2
+(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F2
+(\214le1)108 180 Q F1(\255ef)2.5 E F2(\214le2)2.5 E F0 -.35(Tr)144 192 S
+(ue if).35 E F2(\214le1)2.5 E F0(and)2.5 E F2(\214le2)2.5 E F0
+(refer to the same de)2.5 E(vice and inode numbers.)-.25 E F2(\214le1)
+108 204 Q F0<ad>2.5 E F1(nt)A F2(\214le2)2.5 E F0 -.35(Tr)144 216 S
+(ue if).35 E F2(\214le1)2.5 E F0(is ne)2.5 E
+(wer \(according to modi\214cation date\) than)-.25 E F2(\214le2)2.5 E
+F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F2(\214le1)2.5 E F0 -.15(ex)2.5 G
+(ists and).15 E F2(\214le2)2.5 E F0(does not.)2.5 E F2(\214le1)108 228 Q
+F0<ad>2.5 E F1(ot)A F2(\214le2)2.5 E F0 -.35(Tr)144 240 S(ue if).35 E F2
+(\214le1)2.5 E F0(is older than)2.5 E F2(\214le2)2.5 E F0 2.5(,o)C 2.5
+(ri)-2.5 G(f)-2.5 E F2(\214le2)2.5 E F0 -.15(ex)2.5 G(ists and).15 E F2
+(\214le1)2.5 E F0(does not.)2.5 E F1<ad6f>108 252 Q F2(optname)2.5 E F0
+-.35(Tr)144 264 S .262(ue if the shell option).35 F F2(optname)2.992 E
+F0 .262(is enabled.)2.942 F .262
(See the list of options under the description of the)5.262 F F1<ad6f>
-2.762 E F0(option to the)144 468 Q F1(set)2.5 E F0 -.2(bu)2.5 G
-(iltin belo).2 E -.65(w.)-.25 G F1<ad76>108 480 Q F2(varname)2.5 E F0
--.35(Tr)144 492 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79
+2.763 E F0(option to the)144 276 Q F1(set)2.5 E F0 -.2(bu)2.5 G
+(iltin belo).2 E -.65(w.)-.25 G F1<ad76>108 288 Q F2(varname)2.5 E F0
+-.35(Tr)144 300 S(ue if the shell v).35 E(ariable)-.25 E F2(varname)2.79
E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F1<ad52>108
-504 Q F2(varname)2.5 E F0 -.35(Tr)144 516 S(ue if the shell v).35 E
+312 Q F2(varname)2.5 E F0 -.35(Tr)144 324 S(ue if the shell v).35 E
(ariable)-.25 E F2(varname)2.79 E F0(is set and is a name reference.)
-2.68 E F1<ad7a>108 528 Q F2(string)2.5 E F0 -.35(Tr)144 540 S
+2.68 E F1<ad7a>108 336 Q F2(string)2.5 E F0 -.35(Tr)144 348 S
(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string)
-108 552 Q F1<ad6e>108 564 Q F2(string)2.5 E F0 -.35(Tr)144 576 S
+108 360 Q F1<ad6e>108 372 Q F2(string)2.5 E F0 -.35(Tr)144 384 S
(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2
-(string1)108 592.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 604.8 Q F1
-(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 616.8 S .861
+(string1)108 400.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 412.8 Q F1
+(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 424.8 S .862
(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861
-(should be used with the)3.361 F F1(test)3.361 E F0 .862
-(command for POSIX conformance.)3.362 F .447(When used with the)144
-628.8 R F1([[)2.946 E F0 .446
-(command, this performs pattern matching as described abo)2.946 F .746
--.15(ve \()-.15 H F1(Compound).15 E(Commands)144 640.8 Q F0(\).)A F2
-(string1)108 657.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 669.6 S
-(ue if the strings are not equal.).35 E F2(string1)108 686.4 Q F1(<)2.5
-E F2(string2)2.5 E F0 -.35(Tr)144 698.4 S(ue if).35 E F2(string1)2.5 E
+(should be used with the)3.361 F F1(test)3.361 E F0 .861
+(command for POSIX conformance.)3.361 F .446(When used with the)144
+436.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 448.8 Q F0(\).)A F2
+(string1)108 465.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 477.6 S
+(ue if the strings are not equal.).35 E F2(string1)108 494.4 Q F1(<)2.5
+E F2(string2)2.5 E F0 -.35(Tr)144 506.4 S(ue if).35 E F2(string1)2.5 E
F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15
-E(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(33)188.455 E
-0 Cg EP
-%%Page: 34 34
+E(.)-.65 E F2(string1)108 523.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35
+(Tr)144 535.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2
+(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33
+552 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF
+(OP)144 564 Q F0 .385(is one of)2.635 F F1(\255eq)2.885 E F0(,)A F1
+(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A
+F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385
+(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2
+(ar)2.884 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\
+s than or equal to, greater than, or greater than or equal to)144 576 R
+F2(ar)144 588 Q(g2)-.37 E F0 3.59(,r)C(especti)-3.59 E -.15(ve)-.25 G
+(ly).15 E(.)-.65 E F2(Ar)7.1 E(g1)-.37 E F0(and)3.59 E F2(ar)3.92 E(g2)
+-.37 E F0 1.089(may be positi)3.61 F 1.389 -.15(ve o)-.25 H 3.589(rn).15
+G -2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E
+3.589(gers. When)-.15 F 1.089(used with the)3.589 F F1([[)3.589 E F0
+(command,)144 600 Q F2(Ar)4.447 E(g1)-.37 E F0(and)3.437 E F2(Ar)4.447 E
+(g2)-.37 E F0 .937(are e)3.457 F -.25(va)-.25 G .937
+(luated as arithmetic e).25 F .937(xpressions \(see)-.15 F F3 .937
+(ARITHMETIC EV)3.437 F(ALU)-1.215 E(A-)-.54 E(TION)144 612 Q F0(abo)2.25
+E -.15(ve)-.15 G(\).).15 E/F4 10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)
+72 628.8 Q(ANSION)-.81 E F0 .614(When a simple command is e)108 640.8 R
+-.15(xe)-.15 G .614(cuted, the shell performs the follo).15 F .613
+(wing e)-.25 F .613(xpansions, assignments, and redi-)-.15 F
+(rections, from left to right, in the follo)108 652.8 Q(wing order)-.25
+E(.)-.55 E(1.)108 669.6 Q 1.848(The w)144 669.6 R 1.848
+(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.849
+(ariable assignments \(those preceding the command)-.25 F
+(name\) and redirections are sa)144 681.6 Q -.15(ve)-.2 G 2.5(df).15 G
+(or later processing.)-2.5 E(2.)108 698.4 Q .18(The w)144 698.4 R .18
+(ords that are not v)-.1 F .179
+(ariable assignments or redirections are e)-.25 F 2.679(xpanded. If)-.15
+F(an)2.679 E 2.679(yw)-.15 G .179(ords remain af-)-2.779 F .346(ter e)
+144 710.4 R .346(xpansion, the \214rst w)-.15 F .346(ord is tak)-.1 F
+.347(en to be the name of the command and the remaining w)-.1 F .347
+(ords are)-.1 F(the ar)144 722.4 Q(guments.)-.18 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(34)190.395 E 0 Cg EP
+%%Page: 35 35
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
-/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(>)2.5 E F1
-(string2)2.5 E F0 -.35(Tr)144 96 S(ue if).35 E F1(string1)2.5 E F0
-(sorts after)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E
-(.)-.65 E F1(ar)108.33 112.8 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37
-E/F3 9/Times-Bold@0 SF(OP)144 124.8 Q F0 .385(is one of)2.634 F F2
-(\255eq)2.885 E F0(,)A F2(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A
-F2(\255le)2.885 E F0(,)A F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2
-(\255ge)2.885 E F0 5.385(.T)C .385
-(hese arithmetic binary operators return true if)-5.385 F F1(ar)2.885 E
-(g1)-.37 E F0 .845(is equal to, not equal to, less than, less than or e\
-qual to, greater than, or greater than or equal to)144 136.8 R F1(ar)144
-148.8 Q(g2)-.37 E F0 3.589(,r)C(especti)-3.589 E -.15(ve)-.25 G(ly).15 E
-(.)-.65 E F1(Ar)7.099 E(g1)-.37 E F0(and)3.589 E F1(ar)3.919 E(g2)-.37 E
-F0 1.089(may be positi)3.609 F 1.389 -.15(ve o)-.25 H 3.589(rn).15 G
--2.25 -.15(eg a)-3.589 H(ti).15 E 1.389 -.15(ve i)-.25 H(nte).15 E 3.59
-(gers. When)-.15 F 1.09(used with the)3.59 F F2([[)3.59 E F0(command,)
-144 160.8 Q F1(Ar)4.22 E(g1)-.37 E F0(and)3.21 E F1(Ar)4.22 E(g2)-.37 E
-F0 .71(are e)3.23 F -.25(va)-.25 G .71(luated as arithmetic e).25 F
-3.209(xpressions \(see)-.15 F F3 .709(ARITHMETIC EV)3.209 F(ALU)-1.215 E
-(A-)-.54 E(TION)144 172.8 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E/F4
-10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 189.6 Q(ANSION)-.81 E F0
-.613(When a simple command is e)108 201.6 R -.15(xe)-.15 G .614
-(cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614
-(xpansions, assignments, and redi-)-.15 F(rections, from left to right.)
-108 213.6 Q(1.)108 230.4 Q 1.849(The w)144 230.4 R 1.849
-(ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.848
-(ariable assignments \(those preceding the command)-.25 F
-(name\) and redirections are sa)144 242.4 Q -.15(ve)-.2 G 2.5(df).15 G
-(or later processing.)-2.5 E(2.)108 259.2 Q 1.163(The w)144 259.2 R
-1.163(ords that are not v)-.1 F 1.164
-(ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15
-F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144
-271.2 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775
-(en to be the name of the command and the remaining w)-.1 F(ords)-.1 E
-(are the ar)144 283.2 Q(guments.)-.18 E(3.)108 300 Q
-(Redirections are performed as described abo)144 300 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
-316.8 Q .716(The te)144 316.8 R .717(xt after the)-.15 F F2(=)3.217 E F0
-.717(in each v)3.217 F .717(ariable assignment under)-.25 F .717
-(goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E
-.34(command substitution, arithmetic e)144 328.8 R .339
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(3.)108 84 Q
+(Redirections are performed as described abo)144 84 Q .3 -.15(ve u)-.15
+H(nder).15 E/F1 9/Times-Bold@0 SF(REDIRECTION)2.5 E/F2 9/Times-Roman@0
+SF(.)A F0(4.)108 100.8 Q .717(The te)144 100.8 R .717(xt after the)-.15
+F/F3 10/Times-Bold@0 SF(=)3.217 E F0 .717(in each v)3.217 F .717
+(ariable assignment under)-.25 F .717(goes tilde e)-.18 F .717
+(xpansion, parameter e)-.15 F(xpansion,)-.15 E .339
+(command substitution, arithmetic e)144 112.8 R .339
(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 340.8 Q
-.332(If no command name results, the v)108 357.6 R .332
+(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 124.8 Q
+.332(If no command name results, the v)108 141.6 R .332
(ariable assignments af)-.25 F .332(fect the current shell en)-.25 F
-2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 369.6 S .757
+2.832(vironment. Otherwise,)-.4 F(the)2.832 E -.25(va)108 153.6 S .757
(riables are added to the en).25 F .757(vironment of the e)-.4 F -.15
(xe)-.15 G .757(cuted command and do not af).15 F .757
-(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 381.6
-R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677
-(he assignments attempts to assign a v)-3.176 F .677
-(alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F
-(the command e)108 393.6 Q(xits with a non-zero status.)-.15 E .15
-(If no command name results, redirections are performed, b)108 410.4 R
-.149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649
-(vironment. A)-.4 F(redirection error causes the command to e)108 422.4
+(fect the current shell en)-.25 F(vi-)-.4 E 3.177(ronment. If)108 165.6
+R(an)3.177 E 3.177(yo)-.15 G 3.177(ft)-3.177 G .677
+(he assignments attempts to assign a v)-3.177 F .677
+(alue to a readonly v)-.25 F .676(ariable, an error occurs, and)-.25 F
+(the command e)108 177.6 Q(xits with a non-zero status.)-.15 E .149
+(If no command name results, redirections are performed, b)108 194.4 R
+.149(ut do not af)-.2 F .15(fect the current shell en)-.25 F 2.65
+(vironment. A)-.4 F(redirection error causes the command to e)108 206.4
Q(xit with a non-zero status.)-.15 E 1.064
-(If there is a command name left after e)108 439.2 R 1.064(xpansion, e)
+(If there is a command name left after e)108 223.2 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 .069(command e)108
-451.2 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069
-(xpansions contained a command substitution, the e)-.15 F .068
-(xit status of the command)-.15 F .466(is the e)108 463.2 R .466
-(xit status of the last command substitution performed.)-.15 F .467
-(If there were no command substitutions, the)5.466 F(command e)108 475.2
-Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 492 Q F0
-.547(After a command has been split into w)108 504 R .546
+4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .068(command e)108
+235.2 R 2.568(xits. If)-.15 F .069(one of the e)2.568 F .069
+(xpansions contained a command substitution, the e)-.15 F .069
+(xit status of the command)-.15 F .467(is the e)108 247.2 R .466
+(xit status of the last command substitution performed.)-.15 F .466
+(If there were no command substitutions, the)5.466 F(command e)108 259.2
+Q(xits with a status of zero.)-.15 E/F4 10.95/Times-Bold@0 SF
+(COMMAND EXECUTION)72 276 Q F0 .546
+(After a command has been split into w)108 288 R .547
(ords, if it results in a simple command and an optional list of ar)-.1
-F(gu-)-.18 E(ments, the follo)108 516 Q(wing actions are tak)-.25 E(en.)
+F(gu-)-.18 E(ments, the follo)108 300 Q(wing actions are tak)-.25 E(en.)
-.1 E .379(If the command name contains no slashes, the shell attempts \
-to locate it.)108 532.8 R .379(If there e)5.379 F .379
+to locate it.)108 316.8 R .379(If there e)5.379 F .379
(xists a shell function by)-.15 F .246(that name, that function is in)
-108 544.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
-.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E 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 556.8 Q 2.5
+108 328.8 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G
+.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F1(FUNCTIONS)
+2.746 E F2(.)A F0 .246(If the name does not match a func-)4.746 F
+(tion, the shell searches for it in the list of shell b)108 340.8 Q 2.5
(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 .309
-(If the name is neither a shell function nor a b)108 573.6 R .31
-(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31
-(searches each element of)2.81 F(the)108 585.6 Q F3 -.666(PA)3.163 G(TH)
--.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G
-.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662
-(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108
-597.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E
-F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS)
--.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72
-(search of the directories in)108 609.6 R F3 -.666(PA)3.22 G(TH)-.189 E
-F0 .719
-(is performed only if the command is not found in the hash table.)2.97 F
-.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\
- a de\214ned shell function named)108 621.6 R F2(command_not_f)3.456 E
-(ound_han-)-.25 E(dle)108 633.6 Q F0 6.006(.I)C 3.506(ft)-6.006 G 1.006
-(hat function e)-3.506 F 1.006(xists, it is in)-.15 F -.2(vo)-.4 G -.1
-(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.005(eparate e)-3.506 F -.15
-(xe)-.15 G 1.005(cution en).15 F 1.005
-(vironment with the original command)-.4 F .255
-(and the original command')108 645.6 R 2.755(sa)-.55 G -.18(rg)-2.755 G
-.255(uments as its ar).18 F .256(guments, and the function')-.18 F 2.756
-(se)-.55 G .256(xit status becomes the e)-2.906 F .256(xit sta-)-.15 F
-.263(tus of that subshell.)108 657.6 R .263(If that function is not de\
+(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .31
+(If the name is neither a shell function nor a b)108 357.6 R .309
+(uiltin, and contains no slashes,)-.2 F F3(bash)2.809 E F0 .309
+(searches each element of)2.809 F(the)108 369.6 Q F1 -.666(PA)3.162 G
+(TH)-.189 E F0 .662(for a directory containing an e)2.912 F -.15(xe)-.15
+G .662(cutable \214le by that name.).15 F F3(Bash)5.662 E F0 .663
+(uses a hash table to remember)3.162 F 1.915(the full pathnames of e)108
+381.6 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F3(hash)4.415 E
+F0(under)4.415 E F1 1.915(SHELL B)4.415 F(UIL)-.09 E 1.914(TIN COMMANDS)
+-.828 F F0(belo)4.164 E 4.414(w\). A)-.25 F(full)4.414 E .719
+(search of the directories in)108 393.6 R F1 -.666(PA)3.219 G(TH)-.189 E
+F0 .72(is performed only if the command is not found in the hash table.)
+2.969 F .72(If the)5.72 F .956(search is unsuccessful, the shell search\
+es for a de\214ned shell function named)108 405.6 R F3(command_not_f)
+3.455 E(ound_han-)-.25 E(dle)108 417.6 Q F0 6.005(.I)C 3.505(ft)-6.005 G
+1.005(hat function e)-3.505 F 1.005(xists, it is in)-.15 F -.2(vo)-.4 G
+-.1(ke).2 G 3.506(di).1 G 3.506(nas)-3.506 G 1.006(eparate e)-3.506 F
+-.15(xe)-.15 G 1.006(cution en).15 F 1.006
+(vironment with the original command)-.4 F .256
+(and the original command')108 429.6 R 2.756(sa)-.55 G -.18(rg)-2.756 G
+.256(uments as its ar).18 F .256(guments, and the function')-.18 F 2.755
+(se)-.55 G .255(xit status becomes the e)-2.905 F .255(xit sta-)-.15 F
+.263(tus of that subshell.)108 441.6 R .263(If that function is not de\
\214ned, the shell prints an error message and returns an e)5.263 F .263
-(xit sta-)-.15 F(tus of 127.)108 669.6 Q 1.089(If the search is success\
+(xit sta-)-.15 F(tus of 127.)108 453.6 Q 1.089(If the search is success\
ful, or if the command name contains one or more slashes, the shell e)
-108 686.4 R -.15(xe)-.15 G 1.09(cutes the).15 F .198
-(named program in a separate e)108 698.4 R -.15(xe)-.15 G .198
+108 470.4 R -.15(xe)-.15 G 1.089(cutes the).15 F .197
+(named program in a separate e)108 482.4 R -.15(xe)-.15 G .197
(cution en).15 F 2.698(vironment. Ar)-.4 F .198
-(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .197
-(n, and the remain-).15 F(ing ar)108 710.4 Q
+(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198
+(n, and the remain-).15 F(ing ar)108 494.4 Q
(guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15
-(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 727.2 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(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(34)188.455 E 0 Cg EP
-%%Page: 35 35
+(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.049(If this e)108 511.2 R
+-.15(xe)-.15 G 1.049(cution f).15 F 1.049
+(ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.048
+(cutable format, and the \214le is not a directory).15 F 3.548(,i)-.65 G
+3.548(ti)-3.548 G 3.548(sa)-3.548 G(s-)-3.548 E .042(sumed to be a)108
+523.2 R/F5 10/Times-Italic@0 SF .042(shell script)2.542 F F0 2.542
+(,a\214)C .043(le containing shell commands.)-2.542 F 2.543(As)5.043 G
+.043(ubshell is spa)-2.543 F .043(wned to e)-.15 F -.15(xe)-.15 G .043
+(cute it.).15 F .043(This sub-)5.043 F .275
+(shell reinitializes itself, so that the ef)108 535.2 R .274
+(fect is as if a ne)-.25 F 2.774(ws)-.25 G .274(hell had been in)-2.774
+F -.2(vo)-.4 G -.1(ke).2 G 2.774(dt).1 G 2.774(oh)-2.774 G .274
+(andle the script, with the)-2.774 F -.15(ex)108 547.2 S 2.357
+(ception that the locations of commands remembered by the parent \(see)
+.15 F F3(hash)4.858 E F0(belo)4.858 E 4.858(wu)-.25 G(nder)-4.858 E F1
+(SHELL)4.858 E -.09(BU)108 559.2 S(IL).09 E(TIN COMMANDS)-.828 E F2(\))A
+F0(are retained by the child.)2.25 E .348(If the program is a \214le be)
+108 576 R .348(ginning with)-.15 F F3(#!)2.848 E F0 2.848(,t)C .347(he \
+remainder of the \214rst line speci\214es an interpreter for the pro-)
+-2.848 F 3.178(gram. The)108 588 R .678(shell e)3.178 F -.15(xe)-.15 G
+.678(cutes the speci\214ed interpreter on operating systems that do not\
+ handle this e).15 F -.15(xe)-.15 G(cutable).15 E .206(format themselv)
+108 600 R 2.706(es. The)-.15 F(ar)2.706 E .206
+(guments to the interpreter consist of a single optional ar)-.18 F .206
+(gument follo)-.18 F .206(wing the in-)-.25 F .267
+(terpreter name on the \214rst line of the program, follo)108 612 R .268
+(wed by the name of the program, follo)-.25 F .268(wed by the com-)-.25
+F(mand ar)108 624 Q(guments, if an)-.18 E -.65(y.)-.15 G F4
+(COMMAND EXECUTION ENVIR)72 640.8 Q(ONMENT)-.329 E F0(The shell has an)
+108 652.8 Q F5 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E(onment)-.45 E F0
+2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 E<83>108 669.6 Q
+1.406(open \214les inherited by the shell at in)144 669.6 R -.2(vo)-.4 G
+1.405(cation, as modi\214ed by redirections supplied to the).2 F F3
+(exec)3.905 E F0 -.2(bu)144 681.6 S(iltin).2 E<83>108 698.4 Q
+(the current w)144 698.4 Q(orking directory as set by)-.1 E F3(cd)2.5 E
+F0(,)A F3(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F3(popd)2.5 E F0 2.5(,o)C 2.5
+(ri)-2.5 G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E
+<83>108 715.2 Q(the \214le creation mode mask as set by)144 715.2 Q F3
+(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)
+-2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(35)190.395 E 0 Cg
+EP
+%%Page: 36 36
%%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 .678
-(assumed to be a)108 84 R/F1 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 96 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 108 R 1.219
-(xception that the locations of commands remembered by the parent \(see)
--.15 F/F2 10/Times-Bold@0 SF(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25
-G(nder)-3.719 E/F3 9/Times-Bold@0 SF(SHELL)3.719 E -.09(BU)108 120 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 136.8 R .347(ginning with)-.15 F F2(#!)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 148.8 R .678(shell e)3.178 F -.15(xe)-.15 G
-.678(cutes the speci\214ed interpreter on operating systems that do not\
- handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.192(format themselv)
-108 160.8 R 3.692(es. The)-.15 F(ar)3.693 E 1.193
-(guments to the interpreter consist of a single optional ar)-.18 F 1.193
-(gument follo)-.18 F 1.193(wing the)-.25 F 1.131
-(interpreter name on the \214rst line of the program, follo)108 172.8 R
-1.13(wed by the name of the program, follo)-.25 F 1.13(wed by the)-.25 F
-(command ar)108 184.8 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95
-/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 201.6 Q(ONMENT)-.329 E F0
-(The shell has an)108 213.6 Q F1 -.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 230.4 Q 1.405(open \214les inherited by the shell at in)144
-230.4 R -.2(vo)-.4 G 1.406
-(cation, as modi\214ed by redirections supplied to the).2 F F2(exec)
-3.906 E F0 -.2(bu)144 242.4 S(iltin).2 E<83>108 259.2 Q(the current w)
-144 259.2 Q(orking directory as set by)-.1 E F2(cd)2.5 E F0(,)A F2
-(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F2(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5
-G(nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108 276
-Q(the \214le creation mode mask as set by)144 276 Q F2(umask)2.5 E F0
-(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83>108
-292.8 Q(current traps set by)144 292.8 Q F2(trap)2.5 E F0<83>108 309.6 Q
-.257(shell parameters that are set by v)144 309.6 R .256
-(ariable assignment or with)-.25 F F2(set)2.756 E F0 .256
-(or inherited from the shell')2.756 F 2.756(sp)-.55 G(arent)-2.756 E
-(in the en)144 321.6 Q(vironment)-.4 E<83>108 338.4 Q
-(shell functions de\214ned during e)144 338.4 Q -.15(xe)-.15 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q
+(current traps set by)144 84 Q/F1 10/Times-Bold@0 SF(trap)2.5 E F0<83>
+108 100.8 Q .256(shell parameters that are set by v)144 100.8 R .256
+(ariable assignment or with)-.25 F F1(set)2.756 E F0 .257
+(or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E
+(in the en)144 112.8 Q(vironment)-.4 E<83>108 129.6 Q
+(shell functions de\214ned during e)144 129.6 Q -.15(xe)-.15 G
(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 355.2 Q
-(options enabled at in)144 355.2 Q -.2(vo)-.4 G(cation \(either by def)
-.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F2(set)
-2.5 E F0<83>108 372 Q(options enabled by)144 372 Q F2(shopt)2.5 E F0<83>
-108 388.8 Q(shell aliases de\214ned with)144 388.8 Q F2(alias)2.5 E F0
-<83>108 405.6 Q -.25(va)144 405.6 S
+(arent in the en)-2.5 E(vironment)-.4 E<83>108 146.4 Q
+(options enabled at in)144 146.4 Q -.2(vo)-.4 G(cation \(either by def)
+.2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set)
+2.5 E F0<83>108 163.2 Q(options enabled by)144 163.2 Q F1(shopt)2.5 E F0
+<83>108 180 Q(shell aliases de\214ned with)144 180 Q F1(alias)2.5 E F0
+<83>108 196.8 Q -.25(va)144 196.8 S
(rious process IDs, including those of background jobs, the v).25 E
-(alue of)-.25 E F2($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
-F3(PPID)2.5 E F0 .426(When a simple command other than a b)108 422.4 R
-.427(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .427
-(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.927(di).1 G 2.927(nas)
--2.927 G(eparate)-2.927 E -.15(exe)108 434.4 S .134(cution en).15 F .134
+(alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E
+/F2 9/Times-Bold@0 SF(PPID)2.5 E F0 .427
+(When a simple command other than a b)108 213.6 R .426
+(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426
+(cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas)
+-2.926 G(eparate)-2.926 E -.15(exe)108 225.6 S .133(cution en).15 F .133
(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 446.4 Q<83>108 463.2 Q 1.055(the shell')144 463.2 R
-3.555(so)-.55 G 1.055(pen \214les, plus an)-3.555 F 3.556(ym)-.15 G
+.134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F
+(the shell.)108 237.6 Q<83>108 254.4 Q 1.056(the shell')144 254.4 R
+3.556(so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G
1.056
(odi\214cations and additions speci\214ed by redirections to the com-)
--3.556 F(mand)144 475.2 Q<83>108 492 Q(the current w)144 492 Q
-(orking directory)-.1 E<83>108 508.8 Q(the \214le creation mode mask)144
-508.8 Q<83>108 525.6 Q .857(shell v)144 525.6 R .857
+-3.556 F(mand)144 266.4 Q<83>108 283.2 Q(the current w)144 283.2 Q
+(orking directory)-.1 E<83>108 300 Q(the \214le creation mode mask)144
+300 Q<83>108 316.8 Q .856(shell v)144 316.8 R .857
(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 537.6 Q(vironment)
--.4 E<83>108 554.4 Q .306(traps caught by the shell are reset to the v)
-144 554.4 R .307(alues inherited from the shell')-.25 F 2.807(sp)-.55 G
-.307(arent, and traps ignored)-2.807 F(by the shell are ignored)144
-566.4 Q 2.5(Ac)108 583.2 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5
+(xported for the command,)-.15 F(passed in the en)144 328.8 Q(vironment)
+-.4 E<83>108 345.6 Q .307(traps caught by the shell are reset to the v)
+144 345.6 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G
+.306(arent, and traps ignored)-2.806 F(by the shell are ignored)144
+357.6 Q 2.5(Ac)108 374.4 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5
(di).1 G 2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E
(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 600 R -.2(vo)-.4 G -.1(ke)
-.2 G 3.077(di).1 G(n)-3.077 E 2.744(as)108 612 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 624 R .358
+ntheses, and asynchronous commands are in)108 391.2 R -.2(vo)-.4 G -.1
+(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 403.2 S .245(ubshell en)
+-2.745 F .245(vironment that is a duplicate of the shell en)-.4 F .244
+(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F
+.358(reset to the v)108 415.2 R .358
(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 636 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 648 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
-664.8 R 1.377(wned to e)-.15 F -.15(xe)-.15 G 1.377
+G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo)
+-.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 427.2
+R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356
+(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-)
+-.4 E(ment cannot af)108 439.2 Q(fect the shell')-.25 E 2.5(se)-.55 G
+-.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108
+456 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377
(cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F
-F2<ad65>3.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When)
-108 676.8 R(not in)2.5 E F1(posix mode)2.5 E F0(,)A F2(bash)2.5 E F0
-(clears the)2.5 E F2<ad65>2.5 E F0(option in such subshells.)2.5 E .404
-(If a command is follo)108 693.6 R .404(wed by a)-.25 F F2(&)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 705.6 R F1(/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 717.6 Q(GNU Bash 5.0)72 768
-Q(2018 December 7)139.295 E(35)188.455 E 0 Cg EP
-%%Page: 36 36
+F1<ad65>3.877 E F0 1.377(option from the parent)3.877 F 2.5(shell. When)
+108 468 R(not in)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E F0(,)A
+F1(bash)2.5 E F0(clears the)2.5 E F1<ad65>2.5 E F0
+(option in such subshells.)2.5 E .405(If a command is follo)108 484.8 R
+.405(wed by a)-.25 F F1(&)2.905 E F0 .404(and job control is not acti)
+2.905 F -.15(ve)-.25 G 2.904(,t).15 G .404(he def)-2.904 F .404
+(ault standard input for the command)-.1 F .197(is the empty \214le)108
+496.8 R F3(/de)2.697 E(v/null)-.15 E F0 5.197(.O)C .197
+(therwise, the in)-5.197 F -.2(vo)-.4 G -.1(ke).2 G 2.697(dc).1 G .198
+(ommand inherits the \214le descriptors of the calling shell)-2.697 F
+(as modi\214ed by redirections.)108 508.8 Q/F4 10.95/Times-Bold@0 SF
+(ENVIR)72 525.6 Q(ONMENT)-.329 E F0 2.344(When a program is in)108 537.6
+R -.2(vo)-.4 G -.1(ke).2 G 4.843(di).1 G 4.843(ti)-4.843 G 4.843(sg)
+-4.843 G -2.15 -.25(iv e)-4.843 H 4.843(na).25 G 4.843(na)-4.843 G 2.343
+(rray of strings called the)-4.843 F F3(en)5.033 E(vir)-.4 E(onment)-.45
+E F0 7.343(.T).68 G 2.343(his is a list of)-7.343 F F3(name)108 549.6 Q
+F0<ad>A F3(value)A F0(pairs, of the form)2.5 E F3(name)2.86 E F0(=)A F3
+(value)A F0(.).18 E .438(The shell pro)108 566.4 R .438(vides se)-.15 F
+-.15(ve)-.25 G .438(ral w).15 F .438(ays to manipulate the en)-.1 F
+2.938(vironment. On)-.4 F(in)2.938 E -.2(vo)-.4 G .438
+(cation, the shell scans its o).2 F .439(wn en-)-.25 F .709(vironment a\
+nd creates a parameter for each name found, automatically marking it fo\
+r)108 578.4 R F3 -.2(ex)3.208 G(port).2 E F0 .708(to child pro-)3.888 F
+2.703(cesses. Ex)108 590.4 R .203(ecuted commands inherit the en)-.15 F
+2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar)
+2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.704
+(wp)-.25 G(aram-)-2.704 E .332
+(eters and functions to be added to and deleted from the en)108 602.4 R
+2.832(vironment. If)-.4 F .332(the v)2.832 F .332
+(alue of a parameter in the en-)-.25 F .131
+(vironment is modi\214ed, the ne)108 614.4 R 2.631(wv)-.25 G .131
+(alue becomes part of the en)-2.881 F .132
+(vironment, replacing the old.)-.4 F .132(The en)5.132 F(vironment)-.4 E
+.321(inherited by an)108 626.4 R 2.821(ye)-.15 G -.15(xe)-2.971 G .321
+(cuted command consists of the shell').15 F 2.821(si)-.55 G .321
+(nitial en)-2.821 F .32(vironment, whose v)-.4 F .32(alues may be modi-)
+-.25 F .533(\214ed in the shell, less an)108 638.4 R 3.033(yp)-.15 G
+.534(airs remo)-3.033 F -.15(ve)-.15 G 3.034(db).15 G 3.034(yt)-3.034 G
+(he)-3.034 E F1(unset)3.034 E F0 .534(command, plus an)3.034 F 3.034(ya)
+-.15 G .534(dditions via the)-3.034 F F1(export)3.034 E F0(and)3.034 E
+F1(de-)3.034 E(clar)108 650.4 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)
+2.5 E .563(The en)108 667.2 R .563(vironment for an)-.4 F(y)-.15 E F3
+.563(simple command)3.403 F F0 .562
+(or function may be augmented temporarily by pre\214xing it with)3.833 F
+.202(parameter assignments, as described abo)108 679.2 R .502 -.15(ve i)
+-.15 H(n).15 E F2 -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF
+(.)A F0 .202(These assignment statements af)4.702 F .203(fect only the)
+-.25 F(en)108 691.2 Q(vironment seen by that command.)-.4 E .81(If the)
+108 708 R F1<ad6b>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
+F3(all)3.64 E F0 .81(parameter assignments are placed in)3.82 F(the en)
+108 720 Q
+(vironment for a command, not just those that precede the command name.)
+-.4 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(36)190.395 E 0 Cg
+EP
+%%Page: 37 37
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95
-/Times-Bold@0 SF(ENVIR)72 84 Q(ONMENT)-.329 E F0 2.353
-(When a program is in)108 96 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G
-4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na)
-.25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F/F2 10
-/Times-Italic@0 SF(en)4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G
-2.354(his is a list of)-7.353 F F2(name)108 108 Q F0<ad>A F2(value)A F0
-(pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E
-1.486(The shell pro)108 124.8 R 1.486(vides se)-.15 F -.15(ve)-.25 G
-1.486(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985
-(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.485
-(cation, the shell scans its o).2 F(wn)-.25 E(en)108 136.8 Q .144(viron\
-ment and creates a parameter for each name found, automatically marking\
- it for)-.4 F F2 -.2(ex)2.644 G(port).2 E F0 .144(to child pro-)3.324 F
-2.704(cesses. Ex)108 148.8 R .203(ecuted commands inherit the en)-.15 F
-2.703(vironment. The)-.4 F/F3 10/Times-Bold@0 SF(export)2.703 E F0(and)
-2.703 E F3(declar)2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203
-(commands allo)2.703 F 2.703(wp)-.25 G(aram-)-2.703 E 1.153
-(eters and functions to be added to and deleted from the en)108 160.8 R
-3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.154
-(alue of a parameter in the)-.25 F(en)108 172.8 Q .64
-(vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64
-(alue becomes part of the en)-3.39 F .64(vironment, replacing the old.)
--.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 184.8
-R 3.08(ye)-.15 G -.15(xe)-3.23 G .58
-(cuted command consists of the shell').15 F 3.08(si)-.55 G .58
-(nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F
-.301(modi\214ed in the shell, less an)108 196.8 R 2.801(yp)-.15 G .301
-(airs remo)-2.801 F -.15(ve)-.15 G 2.801(db).15 G 2.801(yt)-2.801 G(he)
--2.801 E F3(unset)2.801 E F0 .3(command, plus an)2.8 F 2.8(ya)-.15 G .3
-(dditions via the)-2.8 F F3(export)2.8 E F0(and)2.8 E F3(declar)108
-208.8 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .562(The en)108
-225.6 R .562(vironment for an)-.4 F(y)-.15 E F2 .562(simple command)
-3.402 F F0 .563
-(or function may be augmented temporarily by pre\214xing it with)3.833 F
-.203(parameter assignments, as described abo)108 237.6 R .502 -.15(ve i)
--.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5
-9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F
-.202(fect only the)-.25 F(en)108 249.6 Q
-(vironment seen by that command.)-.4 E .81(If the)108 266.4 R F3<ad6b>
-3.31 E F0 .81(option is set \(see the)3.31 F F3(set)3.31 E F0 -.2(bu)
-3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0
-.81(parameter assignments are placed in)3.82 F(the en)108 278.4 Q
-(vironment for a command, not just those that precede the command name.)
--.4 E(When)108 295.2 Q F3(bash)3.586 E F0(in)3.586 E -.2(vo)-.4 G -.1
-(ke).2 G 3.586(sa).1 G 3.586(ne)-3.586 G 1.086(xternal command, the v)
--3.736 F(ariable)-.25 E F3(_)3.586 E F0 1.085
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(When)108 84 Q/F1
+10/Times-Bold@0 SF(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1(ke).2 G
+3.585(sa).1 G 3.585(ne)-3.585 G 1.085(xternal command, the v)-3.735 F
+(ariable)-.25 E F1(_)3.585 E F0 1.086
(is set to the full \214lename of the command and)3.586 F
-(passed to that command in its en)108 307.2 Q(vironment.)-.4 E F1
-(EXIT ST)72 324 Q -1.04(AT)-.986 G(US)1.04 E F0 .15(The e)108 336 R .15
-(xit status of an e)-.15 F -.15(xe)-.15 G .15(cuted command is the v).15
-F .151(alue returned by the)-.25 F F2(waitpid)2.651 E F0 .151
-(system call or equi)2.651 F -.25(va)-.25 G .151(lent func-).25 F 2.848
-(tion. Exit)108 348 R .348(statuses f)2.848 F .347
-(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F
-1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .347(alues abo)-.25
-F .647 -.15(ve 1)-.15 H(25).15 E(specially)108 360 Q 5.506(.E)-.65 G
-.506(xit statuses from shell b)-5.506 F .507
+(passed to that command in its en)108 96 Q(vironment.)-.4 E/F2 10.95
+/Times-Bold@0 SF(EXIT ST)72 112.8 Q -1.04(AT)-.986 G(US)1.04 E F0 .151
+(The e)108 124.8 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151
+(cuted command is the v).15 F .15(alue returned by the)-.25 F/F3 10
+/Times-Italic@0 SF(waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25
+(va)-.25 G .15(lent func-).25 F 2.847(tion. Exit)108 136.8 R .347
+(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347
+(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65
+F .348(alues abo)-.25 F .648 -.15(ve 1)-.15 H(25).15 E(specially)108
+148.8 Q 5.507(.E)-.65 G .507(xit statuses from shell b)-5.507 F .507
(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
-372 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15(Fo)
-108 388.8 S 3.373(rt).15 G .873(he shell')-3.373 F 3.373(sp)-.55 G .873
-(urposes, a command which e)-3.373 F .873(xits with a zero e)-.15 F .873
-(xit status has succeeded.)-.15 F .872(An e)5.872 F .872(xit status of)
--.15 F .048(zero indicates success.)108 400.8 R 2.548(An)5.048 G .049
-(on-zero e)-2.548 F .049(xit status indicates f)-.15 F 2.549
-(ailure. When)-.1 F 2.549(ac)2.549 G .049(ommand terminates on a f)
--2.549 F .049(atal sig-)-.1 F(nal)108 412.8 Q F2(N)2.5 E F0(,)A F3(bash)
-2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E
-(xit status.)-.15 E .405
-(If a command is not found, the child process created to e)108 429.6 R
--.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .404
-(If a command is)5.404 F(found b)108 441.6 Q(ut is not e)-.2 E -.15(xe)
--.15 G(cutable, the return status is 126.).15 E(If a command f)108 458.4
+(Under)5.506 E(certain circumstances, the shell will use special v)108
+160.8 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15
+(Fo)108 177.6 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G
+.873(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F
+.873(xit status has succeeded.)-.15 F .873(An e)5.873 F .873
+(xit status of)-.15 F .049(zero indicates success.)108 189.6 R 2.549(An)
+5.049 G .049(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549
+(ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f)
+-2.549 F .048(atal sig-)-.1 F(nal)108 201.6 Q F3(N)2.5 E F0(,)A F1(bash)
+2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F3(N)A F0(as the e)2.5 E
+(xit status.)-.15 E .404
+(If a command is not found, the child process created to e)108 218.4 R
+-.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405
+(If a command is)5.405 F(found b)108 230.4 Q(ut is not e)-.2 E -.15(xe)
+-.15 G(cutable, the return status is 126.).15 E(If a command f)108 247.2
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 475.2 R .08
-(uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C
-2.581(fs)-2.581 G .081(uccessful, and non-zero \()-2.581 F F2(false)A F0
-2.581(\)i)C 2.581(fa)-2.581 G 2.581(ne)-2.581 G .081(rror occurs while)
--2.581 F(the)108 487.2 Q 2.968(ye)-.15 G -.15(xe)-3.118 G 2.968
-(cute. All).15 F -.2(bu)2.968 G .468(iltins return an e).2 F .468
+-.15 E .081(Shell b)108 264 R .081
+(uiltin commands return a status of 0 \()-.2 F F3(true)A F0 2.581(\)i)C
+2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F3(false)A F0
+2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08(rror occurs while)-2.58 F
+(the)108 276 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F
+-.2(bu)2.967 G .467(iltins return an e).2 F .468
(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 499.2 Q(guments.)-.18
-E F3(Bash)108 516 Q F0 .201(itself returns the e)2.701 F .202
-(xit status of the last command e)-.15 F -.15(xe)-.15 G .202
-(cuted, unless a syntax error occurs, in which case).15 F(it e)108 528 Q
-(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F3
-(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F1
-(SIGN)72 544.8 Q(ALS)-.219 E F0(When)108 556.8 Q F3(bash)3.183 E F0 .683
-(is interacti)3.183 F -.15(ve)-.25 G 3.183(,i).15 G 3.183(nt)-3.183 G
-.683(he absence of an)-3.183 F 3.183(yt)-.15 G .683(raps, it ignores)
--3.183 F F4(SIGTERM)3.183 E F0 .682(\(so that)2.933 F F3 .682(kill 0)
-3.182 F F0 .682(does not kill an)3.182 F(interacti)108 568.8 Q .757 -.15
-(ve s)-.25 H .457(hell\), and).15 F F4(SIGINT)2.957 E F0 .458
-(is caught and handled \(so that the)2.707 F F3(wait)2.958 E F0 -.2(bu)
-2.958 G .458(iltin is interruptible\).).2 F .458(In all cases,)5.458 F
-F3(bash)108 580.8 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0
-(If job control is in ef)4.5 E(fect,)-.25 E F3(bash)2.5 E F0(ignores)2.5
-E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25
-E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 597.6 Q 1.065
-(uiltin commands run by)-.2 F F3(bash)3.565 E F0(ha)3.565 E 1.365 -.15
-(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.064
-(alues inherited by the shell from its)-.25 F 3.247(parent. When)108
-609.6 R .747(job control is not in ef)3.247 F .747
-(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.248 E F0(and)
-2.998 E F4(SIGQ)3.248 E(UIT)-.09 E F0 .748(in addi-)2.998 F .653
-(tion to these inherited handlers.)108 621.6 R .653
-(Commands run as a result of command substitution ignore the k)5.653 F
--.15(ey)-.1 G(board-).15 E(generated job control signals)108 633.6 Q F4
+(va)-.4 G .468(lid options or).25 F(missing ar)108 288 Q(guments.)-.18 E
+F1(Bash)108 304.8 Q F0 .202(itself returns the e)2.702 F .202
+(xit status of the last command e)-.15 F -.15(xe)-.15 G .201
+(cuted, unless a syntax error occurs, in which case).15 F(it e)108 316.8
+Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1
+(exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F2
+(SIGN)72 333.6 Q(ALS)-.219 E F0(When)108 345.6 Q F1(bash)2.502 E F0 .002
+(is interacti)2.502 F -.15(ve)-.25 G 2.502(,i).15 G 2.502(nt)-2.502 G
+.002(he absence of an)-2.502 F 2.502(yt)-.15 G .002(raps, it ignores)
+-2.502 F/F4 9/Times-Bold@0 SF(SIGTERM)2.502 E F0 .002(\(so that)2.252 F
+F1 .002(kill 0)2.502 F F0 .002(does not kill an in-)2.502 F(teracti)108
+357.6 Q 1.216 -.15(ve s)-.25 H .916(hell\), and).15 F F4(SIGINT)3.416 E
+F0 .915(is caught and handled \(so that the)3.166 F F1(wait)3.415 E F0
+-.2(bu)3.415 G .915(iltin is interruptible\).).2 F .915(In all cases,)
+5.915 F F1(bash)108 369.6 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E/F5
+9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,)-.25 E F1
+(bash)2.5 E F0(ignores)2.5 E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)
+-.162 E F5(,)A F0(and)2.25 E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 386.4
+Q 1.064(uiltin commands run by)-.2 F F1(bash)3.564 E F0(ha)3.564 E 1.365
+-.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.065
+(alues inherited by the shell from its)-.25 F 3.248(parent. When)108
+398.4 R .748(job control is not in ef)3.248 F .747
+(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and)
+2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652
+(tion to these inherited handlers.)108 410.4 R .653
+(Commands run as a result of command substitution ignore the k)5.652 F
+-.15(ey)-.1 G(board-).15 E(generated job control signals)108 422.4 Q F4
(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4
-(SIGTSTP)2.5 E F5(.)A F0 2.045(The shell e)108 650.4 R 2.045
+(SIGTSTP)2.5 E F5(.)A F0 2.046(The shell e)108 439.2 R 2.046
(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F4(SIGHUP)4.545 E
-F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.346
--.15(ve s)-.25 H 2.046(hell resends the).15 F F4(SIGHUP)108 662.4 Q F0
-1.005(to all jobs, running or stopped.)3.255 F 1.004
-(Stopped jobs are sent)6.005 F F4(SIGCONT)3.504 E F0 1.004
-(to ensure that the)3.254 F 3.504(yr)-.15 G(ecei)-3.504 E 1.304 -.15
-(ve t)-.25 H(he).15 E F4(SIGHUP)108 674.4 Q F5(.)A F0 2.529 -.8(To p)
-5.429 H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal\
- to a particular job, it should be remo).15 F -.15(ve)-.15 G 3.43(df).15
-G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso)
-3.857 E(wn)-.1 E F0 -.2(bu)3.857 G 1.357(iltin \(see).2 F F4 1.356
-(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.606 E
-1.356(w\) or mark)-.25 F 1.356(ed to not recei)-.1 F -.15(ve)-.25 G F4
-(SIGHUP)108 698.4 Q F0(using)2.25 E F3(diso)2.5 E(wn \255h)-.1 E F0(.)A
-.166(If the)108 715.2 R F3(huponexit)2.666 E F0 .166
-(shell option has been set with)2.666 F F3(shopt)2.666 E F0(,)A F3(bash)
+F5(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.345
+-.15(ve s)-.25 H 2.045(hell resends the).15 F F4(SIGHUP)108 451.2 Q F0
+1.004(to all jobs, running or stopped.)3.254 F 1.004
+(Stopped jobs are sent)6.004 F F4(SIGCONT)3.505 E F0 1.005
+(to ensure that the)3.255 F 3.505(yr)-.15 G(ecei)-3.505 E 1.305 -.15
+(ve t)-.25 H(he).15 E F4(SIGHUP)108 463.2 Q F5(.)A F0 2.53 -.8(To p)5.43
+H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \
+particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G
+.929(rom the)-3.429 F 1.356(jobs table with the)108 475.2 R F1(diso)
+3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F4 1.356
+(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.607 E
+1.357(w\) or mark)-.25 F 1.357(ed to not recei)-.1 F -.15(ve)-.25 G F4
+(SIGHUP)108 487.2 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A
+.166(If the)108 504 R F1(huponexit)2.666 E F0 .166
+(shell option has been set with)2.666 F F1(shopt)2.666 E F0(,)A F1(bash)
2.666 E F0 .166(sends a)2.666 F F4(SIGHUP)2.666 E F0 .166
(to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108
-727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(36)
-188.455 E 0 Cg EP
-%%Page: 37 37
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(If)108 84 Q/F1 10
-/Times-Bold@0 SF(bash)3.047 E F0 .547(is w)3.047 F .546
-(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G 3.046
-(sas).15 G .546(ignal for which a trap has been set, the trap)-3.046 F
-.662(will not be e)108 96 R -.15(xe)-.15 G .662
+516 Q(xits.)-.15 E(If)108 532.8 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 544.8 R -.15(xe)-.15 G .663
(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E
-F0 .663(is w)3.163 F .663(aiting for an asynchronous command)-.1 F .99
-(via the)108 108 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the recep\
-tion of a signal for which a trap has been set will cause the).2 F F1
-(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F
-(return immediately with an e)108 120 Q
+F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .326
+(via the)108 556.8 R F1(wait)2.826 E F0 -.2(bu)2.826 G .327(iltin, the \
+reception of a signal for which a trap has been set will cause the).2 F
+F1(wait)2.827 E F0 -.2(bu)2.827 G .327(iltin to re-).2 F
+(turn immediately with an e)108 568.8 Q
(xit status greater than 128, immediately after which the trap is e)-.15
-E -.15(xe)-.15 G(cuted.).15 E/F2 10.95/Times-Bold@0 SF(JOB CONTR)72
-136.8 Q(OL)-.329 E/F3 10/Times-Italic@0 SF -.25(Jo)108 148.8 S 4.567(bc)
-.25 G(ontr)-4.567 E(ol)-.45 E F0 2.067(refers to the ability to selecti)
-5.077 F -.15(ve)-.25 G 2.067(ly stop \().15 F F3(suspend)A F0 4.567(\)t)
-C 2.068(he e)-4.567 F -.15(xe)-.15 G 2.068
-(cution of processes and continue).15 F(\()108 160.8 Q F3 -.37(re)C
-(sume).37 E F0 3.202(\)t)C .702(heir e)-3.202 F -.15(xe)-.15 G .702
-(cution at a later point.).15 F 3.202(Au)5.702 G .702
-(ser typically emplo)-3.202 F .702(ys this f)-.1 F .702
-(acility via an interacti)-.1 F 1.001 -.15(ve i)-.25 H(nterf).15 E(ace)
--.1 E(supplied jointly by the operating system k)108 172.8 Q(ernel')-.1
-E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E
-F1(bash)2.5 E F0(.)A .784(The shell associates a)108 189.6 R F3(job)
-5.024 E F0 .784(with each pipeline.)3.514 F .784(It k)5.784 F .785
-(eeps a table of currently e)-.1 F -.15(xe)-.15 G .785
-(cuting jobs, which may be).15 F .341(listed with the)108 201.6 R F1
-(jobs)2.841 E F0 2.841(command. When)2.841 F F1(bash)2.841 E F0 .341
-(starts a job asynchronously \(in the)2.841 F F3(bac)2.84 E(kgr)-.2 E
-(ound)-.45 E F0 .34(\), it prints a line).77 F(that looks lik)108 213.6
-Q(e:)-.1 E([1] 25647)144 230.4 Q .241(indicating that this job is job n\
+E -.15(xe)-.15 G(cuted.).15 E F2(JOB CONTR)72 585.6 Q(OL)-.329 E F3 -.25
+(Jo)108 597.6 S 3.369(bc).25 G(ontr)-3.369 E(ol)-.45 E F0 .868
+(refers to the ability to selecti)3.879 F -.15(ve)-.25 G .868
+(ly stop \().15 F F3(suspend)A F0 3.368(\)t)C .868(he e)-3.368 F -.15
+(xe)-.15 G .868(cution of processes and continue \().15 F F3 -.37(re)C
+(-).37 E(sume)108 609.6 Q F0 2.664(\)t)C .164(heir e)-2.664 F -.15(xe)
+-.15 G .164(cution at a later point.).15 F 2.665(Au)5.165 G .165
+(ser typically emplo)-2.665 F .165(ys this f)-.1 F .165
+(acility via an interacti)-.1 F .465 -.15(ve i)-.25 H(nterf).15 E .165
+(ace sup-)-.1 F(plied jointly by the operating system k)108 621.6 Q
+(ernel')-.1 E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15
+G(nd)-2.5 E F1(bash)2.5 E F0(.)A .785(The shell associates a)108 638.4 R
+F3(job)5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F
+.784(eeps a table of currently e)-.1 F -.15(xe)-.15 G .784
+(cuting jobs, which may be).15 F .324(listed with the)108 650.4 R F1
+(jobs)2.824 E F0 2.824(command. When)2.824 F F1(bash)2.825 E F0 .325
+(starts a job asynchronously \(in the)2.825 F F3(bac)3.095 E(kgr)-.2 E
+(ound)-.45 E F0 .325(\), it prints a line).77 F(that looks lik)108 662.4
+Q(e:)-.1 E([1] 25647)144 679.2 Q .241(indicating that this job is job n\
umber 1 and that the process ID of the last process in the pipeline ass\
-ociated)108 247.2 R .733(with this job is 25647.)108 259.2 R .732
+ociated)108 696 R .732(with this job is 25647.)108 708 R .733
(All of the processes in a single pipeline are members of the same job)
-5.733 F(.)-.4 E F1(Bash)5.732 E F0(uses)3.232 E(the)108 271.2 Q F3(job)
-4.24 E F0(abstraction as the basis for job control.)2.73 E 3.062 -.8
-(To f)108 288 T 1.462(acilitate the implementation of the user interf).7
-F 1.463(ace to job control, the operating system maintains the)-.1 F
-.871(notion of a)108 300 R F3(curr)3.371 E .871(ent terminal pr)-.37 F
-.871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .87
-(embers of this process group \(processes whose process)-5.871 F .023
+5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 720 Q F3(job)
+4.24 E F0(abstraction as the basis for job control.)2.73 E(GNU Bash 5.1)
+72 768 Q(2020 October 29)141.235 E(37)190.395 E 0 Cg EP
+%%Page: 38 38
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.982 -.8(To f)108
+84 T .382(acilitate the implementation of the user interf).7 F .382
+(ace to job control, the operating system maintains the no-)-.1 F 1.537
+(tion of a)108 96 R/F1 10/Times-Italic@0 SF(curr)4.037 E 1.537
+(ent terminal pr)-.37 F 1.537(ocess gr)-.45 F 1.537(oup ID)-.45 F F0
+6.537(.M)C 1.538(embers of this process group \(processes whose process)
+-6.537 F .023
(group ID is equal to the current terminal process group ID\) recei)108
-312 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
-(board-generated signals such as).15 F/F4 9/Times-Bold@0 SF(SIG-)2.523 E
-(INT)108 324 Q/F5 9/Times-Roman@0 SF(.)A F0 1.347
-(These processes are said to be in the)5.847 F F3(for)3.846 E -.4(eg)
--.37 G -.45(ro).4 G(und).45 E F0(.).77 E F3(Bac)6.926 E(kgr)-.2 E(ound)
--.45 E F0 1.346(processes are those whose process)4.616 F .145
-(group ID dif)108 336 R .145(fers from the terminal')-.25 F .146
-(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .146
-(board-generated signals.).15 F .146(Only fore-)5.146 F .16
-(ground processes are allo)108 348 R .16(wed to read from or)-.25 F 2.66
-(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 10
+108 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023
+(board-generated signals such as).15 F/F2 9/Times-Bold@0 SF(SIG-)2.522 E
+(INT)108 120 Q/F3 9/Times-Roman@0 SF(.)A F0 1.215
+(These processes are said to be in the)5.715 F F1(for)5.685 E -.4(eg)
+-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F1(Bac)6.795 E(kgr)-.2 E(ound)
+-.45 E F0 1.216(processes are those whose process)4.485 F .146
+(group ID dif)108 132 R .146(fers from the terminal')-.25 F .146
+(s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145
+(board-generated signals.).15 F .145(Only fore-)5.145 F .16
+(ground processes are allo)108 144 R .16(wed to read from or)-.25 F 2.66
+(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F4 10
/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter)
--2.66 F(-)-.2 E 3.051(minal. Background)108 360 R .551
-(processes which attempt to read from \(write to when)3.051 F F6 .551
-(stty tostop)3.051 F F0 .552(is in ef)3.052 F .552(fect\) the)-.25 F
-.718(terminal are sent a)108 372 R F4 .718(SIGTTIN \(SIGTT)3.218 F(OU\))
--.162 E F0 .718(signal by the k)2.968 F(ernel')-.1 E 3.217(st)-.55 G
-.717(erminal dri)-3.217 F -.15(ve)-.25 G 1.517 -.4(r, w).15 H .717
-(hich, unless caught, sus-).4 F(pends the process.)108 384 Q 1.087
-(If the operating system on which)108 400.8 R F1(bash)3.587 E F0 1.088
-(is running supports job control,)3.588 F F1(bash)3.588 E F0 1.088
-(contains f)3.588 F 1.088(acilities to use it.)-.1 F -.8(Ty)108 412.8 S
-.302(ping the).8 F F3(suspend)3.142 E F0 .302(character \(typically)
-3.572 F F1(^Z)2.801 E F0 2.801(,C)C .301
+-2.66 F(-)-.2 E 3.052(minal. Background)108 156 R .551
+(processes which attempt to read from \(write to when)3.052 F F4 .551
+(stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F
+.717(terminal are sent a)108 168 R F2 .717(SIGTTIN \(SIGTT)3.217 F(OU\))
+-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 G
+.718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718
+(hich, unless caught, sus-).4 F(pends the process.)108 180 Q 1.088
+(If the operating system on which)108 196.8 R/F5 10/Times-Bold@0 SF
+(bash)3.588 E F0 1.088(is running supports job control,)3.588 F F5(bash)
+3.587 E F0 1.087(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8
+(Ty)108 208.8 S .301(ping the).8 F F1(suspend)3.141 E F0 .301
+(character \(typically)3.571 F F5(^Z)2.801 E F0 2.801(,C)C .301
(ontrol-Z\) while a process is running causes that process to be)-2.801
-F 2.142(stopped and returns control to)108 424.8 R F1(bash)4.642 E F0
-7.142(.T)C 2.142(yping the)-7.942 F F3 2.142(delayed suspend)4.992 F F0
-2.143(character \(typically)5.413 F F1(^Y)4.643 E F0 4.643(,C)C
-(ontrol-Y\))-4.643 E .021(causes the process to be stopped when it atte\
+F 2.143(stopped and returns control to)108 220.8 R F5(bash)4.642 E F0
+7.142(.T)C 2.142(yping the)-7.942 F F1 2.142(delayed suspend)4.992 F F0
+2.142(character \(typically)5.412 F F5(^Y)4.642 E F0 4.642(,C)C
+(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
-436.8 R(to)108 448.8 Q F1(bash)3.392 E F0 5.892(.T)C .892
+232.8 R(to)108 244.8 Q F5(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 460.8 R F1(fg)3.395 E F0 .895
-(command to continue it in the fore)3.395 F .895(ground, or the)-.15 F
-F1(kill)3.395 E F0 .894(command to kill it.)3.395 F(A)5.894 E F1(^Z)
-3.394 E F0(tak)3.394 E(es)-.1 E(ef)108 472.8 Q .948(fect immediately)
--.25 F 3.448(,a)-.65 G .948(nd has the additional side ef)-3.448 F .948
+F5(bg)3.392 E F0 .892(command to continue it in the)3.392 F .17
+(background, the)108 256.8 R F5(fg)2.67 E F0 .17
+(command to continue it in the fore)2.67 F .17(ground, or the)-.15 F F5
+(kill)2.67 E F0 .17(command to kill it.)2.67 F(A)5.17 E F5(^Z)2.67 E F0
+(tak)2.67 E .17(es ef-)-.1 F 1.419(fect immediately)108 268.8 R 3.919
+(,a)-.65 G 1.418(nd has the additional side ef)-3.919 F 1.418
(fect of causing pending output and typeahead to be dis-)-.25 F(carded.)
-108 484.8 Q .777(There are a number of w)108 501.6 R .777
-(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1
-(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 513.6
-Q F3(jobspec)A F0 3.457(\). Job)B(number)3.457 E F3(n)3.817 E F0 .957
-(may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957
+108 280.8 Q .777(There are a number of w)108 297.6 R .777
+(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F5
+(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 309.6
+Q F1(jobspec)A F0 3.458(\). Job)B(number)3.458 E F1(n)3.818 E F0 .957
+(may be referred to as)3.697 F F5(%n)3.457 E F0 5.957(.A)C .957
(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 525.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E
-F0 .59(refers to a)3.09 F(stopped)108 537.6 Q F1(ce)3.463 E F0(job)3.463
-E 5.963(.I)-.4 G 3.463(fap)-5.963 G .963
-(re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963
-(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E
-F0 3.464(,o)C 3.464(nt)-3.464 G .964(he other)-3.464 F .087
-(hand, refers to an)108 549.6 R 2.587(yj)-.15 G .087
-(ob containing the string)-2.587 F F1(ce)2.587 E F0 .087
-(in its command line.)2.587 F .087
-(If the substring matches more than one)5.087 F(job,)108 561.6 Q F1
-(bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018
-(he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018
-(refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F
-F3(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is)
--2.518 F .495(the last job stopped while it w)108 573.6 R .495
-(as in the fore)-.1 F .495(ground or started in the background.)-.15 F
-(The)5.494 E F3(pr)4.244 E -.15(ev)-.37 G .494(ious job).15 F F0 .494
-(may be)3.224 F .787(referenced using)108 585.6 R F1<25ad>3.287 E F0
-5.787(.I)C 3.287(ft)-5.787 G .787(here is only a single job,)-3.287 F F1
-(%+)3.287 E F0(and)3.287 E F1<25ad>3.287 E F0 .788
-(can both be used to refer to that job)3.287 F 5.788(.I)-.4 G(n)-5.788 E
-.257(output pertaining to jobs \(e.g., the output of the)108 597.6 R F1
-(jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa)
--.1 G .256(ys \215agged with a).1 F F1(+)2.756 E F0(,)A .41(and the pre)
-108 609.6 R .41(vious job with a)-.25 F F1<ad>2.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 621.6 Q(.)-.4 E .444
-(Simply naming a job can be used to bring it into the fore)108 638.4 R
-(ground:)-.15 E F1(%1)2.943 E F0 .443(is a synon)2.943 F .443(ym for)
--.15 F F1 -.63(``)2.943 G .443(fg %1').63 F(')-.63 E F0 2.943(,b)C
-(ringing)-2.943 E 1.472(job 1 from the background into the fore)108
-650.4 R 3.972(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.973 G 1.473
-(%1 &').63 F(')-.63 E F0 1.473(resumes job 1 in the background,)3.973 F
-(equi)108 662.4 Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1')
-.63 E(')-.63 E F0(.)A .131(The shell learns immediately whene)108 679.2
-R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F
-(Normally)5.131 E(,)-.65 E F1(bash)2.631 E F0 -.1(wa)2.63 G .13
-(its until it is about to print a).1 F .157
-(prompt before reporting changes in a job')108 691.2 R 2.657(ss)-.55 G
-.157(tatus so as to not interrupt an)-2.657 F 2.658(yo)-.15 G .158
-(ther output.)-2.658 F .158(If the)5.158 F F1<ad62>2.658 E F0 .158
-(option to)2.658 F(the)108 703.2 Q F1(set)2.648 E F0 -.2(bu)2.648 G .148
-(iltin command is enabled,).2 F F1(bash)2.648 E F0 .148
-(reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15
-(ny t)-5.147 H .147(rap on).15 F F4(SIGCHLD)2.647 E F0 .147(is e)2.397 F
--.15(xe)-.15 G(-).15 E(cuted for each child that e)108 715.2 Q(xits.)
--.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(37)188.455 E 0 Cg
-EP
-%%Page: 38 38
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .032
-(If an attempt to e)108 84 R(xit)-.15 E/F1 10/Times-Bold@0 SF(bash)2.532
-E F0 .032(is made while jobs are stopped \(or)2.532 F 2.533(,i)-.4 G
-2.533(ft)-2.533 G(he)-2.533 E F1(checkjobs)2.533 E F0 .033
-(shell option has been enabled)2.533 F 2.02(using the)108 96 R F1(shopt)
-4.52 E F0 -.2(bu)4.52 G 2.02(iltin, running\), the shell prints a w).2 F
-2.019(arning message, and, if the)-.1 F F1(checkjobs)4.519 E F0 2.019
-(option is)4.519 F .458(enabled, lists the jobs and their statuses.)108
-108 R(The)5.458 E F1(jobs)2.958 E F0 .459
-(command may then be used to inspect their status.)2.958 F .459(If a)
-5.459 F .604(second attempt to e)108 120 R .604
+108 321.6 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F5(%ce)3.09 E
+F0 .59(refers to a)3.09 F .385(stopped job whose command name be)108
+333.6 R .385(gins with)-.15 F F5(ce)2.885 E F0 5.385(.I)C 2.885(fap)
+-5.385 G .385(re\214x matches more than one job,)-2.885 F F5(bash)2.885
+E F0 .385(reports an)2.885 F(error)108 345.6 Q 5.194(.U)-.55 G(sing)
+-5.194 E F5(%?ce)2.694 E F0 2.694(,o)C 2.694(nt)-2.694 G .194
+(he other hand, refers to an)-2.694 F 2.694(yj)-.15 G .194
+(ob containing the string)-2.694 F F5(ce)2.694 E F0 .194
+(in its command line.)2.694 F .194(If the)5.194 F .306
+(substring matches more than one job,)108 357.6 R F5(bash)2.806 E F0
+.306(reports an error)2.806 F 5.306(.T)-.55 G .306(he symbols)-5.306 F
+F5(%%)2.806 E F0(and)2.806 E F5(%+)2.806 E F0 .306(refer to the shell')
+2.806 F(s)-.55 E .132(notion of the)108 369.6 R F1(curr)2.832 E .133
+(ent job)-.37 F F0 2.633(,w).23 G .133
+(hich is the last job stopped while it w)-2.633 F .133(as in the fore)
+-.1 F .133(ground or started in the back-)-.15 F 2.576(ground. The)108
+381.6 R F1(pr)3.826 E -.15(ev)-.37 G .076(ious job).15 F F0 .076
+(may be referenced using)2.806 F F5<25ad>2.576 E F0 5.076(.I)C 2.576(ft)
+-5.076 G .075(here is only a single job,)-2.576 F F5(%+)2.575 E F0(and)
+2.575 E F5<25ad>2.575 E F0 .075(can both)2.575 F .317
+(be used to refer to that job)108 393.6 R 5.317(.I)-.4 G 2.817(no)-5.317
+G .317(utput pertaining to jobs \(e.g., the output of the)-2.817 F F5
+(jobs)2.817 E F0 .317(command\), the current)2.817 F .033(job is al)108
+405.6 R -.1(wa)-.1 G .033(ys \215agged with a).1 F F5(+)2.533 E F0 2.533
+(,a)C .033(nd the pre)-2.533 F .033(vious job with a)-.25 F F5<ad>2.533
+E F0 5.033(.A)C .033(single % \(with no accompan)-2.5 F .032
+(ying job speci-)-.15 F(\214cation\) also refers to the current job)108
+417.6 Q(.)-.4 E .443
+(Simply naming a job can be used to bring it into the fore)108 434.4 R
+(ground:)-.15 E F5(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for)
+-.15 F F5 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C
+(ringing)-2.944 E 1.473(job 1 from the background into the fore)108
+446.4 R 3.973(ground. Similarly)-.15 F(,)-.65 E F5 -.63(``)3.972 G 1.472
+(%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F
+(equi)108 458.4 Q -.25(va)-.25 G(lent to).25 E F5 -.63(``)2.5 G(bg %1')
+.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 475.2 R
+-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally)
+5.131 E(,)-.65 E F5(bash)2.631 E F0 -.1(wa)2.631 G .131
+(its until it is about to print a).1 F .158
+(prompt before reporting changes in a job')108 487.2 R 2.658(ss)-.55 G
+.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 F5<ad62>2.657 E F0 .157
+(option to)2.657 F(the)108 499.2 Q F5(set)2.647 E F0 -.2(bu)2.647 G .147
+(iltin command is enabled,).2 F F5(bash)2.647 E F0 .148
+(reports such changes immediately)2.648 F 5.148(.A)-.65 G .448 -.15
+(ny t)-5.148 H .148(rap on).15 F F2(SIGCHLD)2.648 E F0 .148(is e)2.398 F
+-.15(xe)-.15 G(-).15 E(cuted for each child that e)108 511.2 Q(xits.)
+-.15 E .033(If an attempt to e)108 528 R(xit)-.15 E F5(bash)2.533 E F0
+.033(is made while jobs are stopped \(or)2.533 F 2.532(,i)-.4 G 2.532
+(ft)-2.532 G(he)-2.532 E F5(checkjobs)2.532 E F0 .032
+(shell option has been enabled)2.532 F 1.002(using the)108 540 R F5
+(shopt)3.502 E F0 -.2(bu)3.502 G 1.002
+(iltin, running\), the shell prints a w).2 F 1.002
+(arning message, and, if the)-.1 F F5(checkjobs)3.503 E F0 1.003
+(option is en-)3.503 F .956(abled, lists the jobs and their statuses.)
+108 552 R(The)5.955 E F5(jobs)3.455 E F0 .955
+(command may then be used to inspect their status.)3.455 F .955(If a)
+5.955 F .603(second attempt to e)108 564 R .604
(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 132 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .644
-(When the shell is w)108 148.8 R .644
-(aiting for a job or process using the)-.1 F F1(wait)3.145 E F0 -.2(bu)
-3.145 G .645(iltin, and job control is enabled,).2 F F1(wait)3.145 E F0
-(will)3.145 E .428(return when the job changes state. The)108 160.8 R F1
-<ad66>2.928 E F0 .428(option will force)2.928 F F1(wait)2.928 E F0 .428
-(to w)2.928 F .428(ait until the job or process terminates)-.1 F
-(before returning.)108 172.8 Q/F2 10.95/Times-Bold@0 SF(PR)72 189.6 Q
-(OMPTING)-.329 E F0 .644(When e)108 201.6 R -.15(xe)-.15 G .644
-(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F1(bash)3.144 E
-F0 .645(displays the primary prompt)3.145 F/F3 9/Times-Bold@0 SF(PS1)
-3.145 E F0 .645(when it is ready to read a command,)2.895 F .428
-(and the secondary prompt)108 213.6 R F3(PS2)2.928 E F0 .427
-(when it needs more input to complete a command.)2.678 F F1(Bash)5.427 E
-F0(displays)2.927 E F3(PS0)2.927 E F0(after)2.677 E .037
-(it reads a command b)108 225.6 R .037(ut before e)-.2 F -.15(xe)-.15 G
-.037(cuting it.).15 F F1(Bash)5.037 E F0(displays)2.537 E F3(PS4)2.538 E
-F0 .038(as described abo)2.288 F .338 -.15(ve b)-.15 H .038
-(efore tracing each com-).15 F 1.122(mand when the)108 237.6 R F1<ad78>
-3.622 E F0 1.122(option is enabled.)3.622 F F1(Bash)6.122 E F0(allo)
+(and an)108 576 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E .645
+(When the shell is w)108 592.8 R .645
+(aiting for a job or process using the)-.1 F F5(wait)3.144 E F0 -.2(bu)
+3.144 G .644(iltin, and job control is enabled,).2 F F5(wait)3.144 E F0
+(will)3.144 E .282(return when the job changes state. The)108 604.8 R F5
+<ad66>2.782 E F0 .282(option causes)2.782 F F5(wait)2.782 E F0 .282
+(to w)2.782 F .282(ait until the job or process terminates be-)-.1 F
+(fore returning.)108 616.8 Q/F6 10.95/Times-Bold@0 SF(PR)72 633.6 Q
+(OMPTING)-.329 E F0 .645(When e)108 645.6 R -.15(xe)-.15 G .645
+(cuting interacti).15 F -.15(ve)-.25 G(ly).15 E(,)-.65 E F5(bash)3.145 E
+F0 .645(displays the primary prompt)3.145 F F2(PS1)3.145 E F0 .645
+(when it is ready to read a command,)2.895 F .427
+(and the secondary prompt)108 657.6 R F2(PS2)2.927 E F0 .427
+(when it needs more input to complete a command.)2.677 F F5(Bash)5.428 E
+F0(displays)2.928 E F2(PS0)2.928 E F0(after)2.678 E .038
+(it reads a command b)108 669.6 R .038(ut before e)-.2 F -.15(xe)-.15 G
+.038(cuting it.).15 F F5(Bash)5.038 E F0(displays)2.537 E F2(PS4)2.537 E
+F0 .037(as described abo)2.287 F .337 -.15(ve b)-.15 H .037
+(efore tracing each com-).15 F 1.121(mand when the)108 681.6 R F5<ad78>
+3.621 E F0 1.122(option is enabled.)3.621 F F5(Bash)6.122 E F0(allo)
3.622 E 1.122(ws these prompt strings to be customized by inserting a)
-.25 F(number of backslash-escaped special characters that are decoded \
-as follo)108 249.6 Q(ws:)-.25 E F1(\\a)144 261.6 Q F0
-(an ASCII bell character \(07\))180 261.6 Q F1(\\d)144 273.6 Q F0
-(the date in "W)180 273.6 Q(eekday Month Date" format \(e.g., "T)-.8 E
-(ue May 26"\))-.45 E F1(\\D{)144 285.6 Q/F4 10/Times-Italic@0 SF(format)
-A F1(})A F0(the)180 297.6 Q F4(format)3.926 E F0 1.426(is passed to)
-3.926 F F4(strftime)3.926 E F0 1.427
-(\(3\) and the result is inserted into the prompt string; an)B(empty)180
-309.6 Q F4(format)2.5 E F0
-(results in a locale-speci\214c time representation.)2.5 E
-(The braces are required)5 E F1(\\e)144 321.6 Q F0
-(an ASCII escape character \(033\))180 321.6 Q F1(\\h)144 333.6 Q F0
-(the hostname up to the \214rst `.)180 333.6 Q(')-.7 E F1(\\H)144 345.6
-Q F0(the hostname)180 345.6 Q F1(\\j)144 357.6 Q F0
-(the number of jobs currently managed by the shell)180 357.6 Q F1(\\l)
-144 369.6 Q F0(the basename of the shell')180 369.6 Q 2.5(st)-.55 G
-(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 381.6 Q F0(ne)180 381.6 Q
-(wline)-.25 E F1(\\r)144 393.6 Q F0(carriage return)180 393.6 Q F1(\\s)
-144 405.6 Q F0(the name of the shell, the basename of)180 405.6 Q F1($0)
-2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1
-(\\t)144 417.6 Q F0(the current time in 24-hour HH:MM:SS format)180
-417.6 Q F1(\\T)144 429.6 Q F0
-(the current time in 12-hour HH:MM:SS format)180 429.6 Q F1(\\@)144
-441.6 Q F0(the current time in 12-hour am/pm format)180 441.6 Q F1(\\A)
-144 453.6 Q F0(the current time in 24-hour HH:MM format)180 453.6 Q F1
-(\\u)144 465.6 Q F0(the username of the current user)180 465.6 Q F1(\\v)
-144 477.6 Q F0(the v)180 477.6 Q(ersion of)-.15 E F1(bash)2.5 E F0
-(\(e.g., 2.00\))2.5 E F1(\\V)144 489.6 Q F0(the release of)180 489.6 Q
-F1(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5
-(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 501.6 Q F0 .116
-(the current w)180 501.6 R .116(orking directory)-.1 F 2.616(,w)-.65 G
-(ith)-2.616 E F3($HOME)2.616 E F0(abbre)2.366 E .115
-(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F3(PR)
-180 513.6 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E
-F1(\\W)144 525.6 Q F0(the basename of the current w)180 525.6 Q
-(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0
-(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 537.6 Q F0
-(the history number of this command)180 537.6 Q F1(\\#)144 549.6 Q F0
-(the command number of this command)180 549.6 Q F1(\\$)144 561.6 Q F0
-(if the ef)180 561.6 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
-F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 573.6 Q F4
-(nnn)A F0(the character corresponding to the octal number)180 573.6 Q F4
-(nnn)2.5 E F1(\\\\)144 585.6 Q F0 2.5(ab)180 585.6 S(ackslash)-2.5 E F1
-(\\[)144 597.6 Q F0(be)180 597.6 Q 1.257(gin a sequence of non-printing\
- characters, which could be used to embed a terminal)-.15 F
-(control sequence into the prompt)180 609.6 Q F1(\\])144 621.6 Q F0
-(end a sequence of non-printing characters)180 621.6 Q .12
-(The command number and the history number are usually dif)108 638.4 R
-.119(ferent: the history number of a command is its)-.25 F 1.585(positi\
-on in the history list, which may include commands restored from the hi\
-story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0
-(belo)108 662.4 Q .541(w\), while the command number is the position in\
- the sequence of commands e)-.25 F -.15(xe)-.15 G .54
-(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 674.4 R
-.546(After the string is decoded, it is e)5.546 F .546
-(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F
-.352(tion, arithmetic e)108 686.4 R .352(xpansion, and quote remo)-.15 F
--.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1
-(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852
-F(description of the)108 698.4 Q F1(shopt)2.5 E F0(command under)2.5 E
-F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)
--.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(38)188.455 E 0 Cg
-EP
+as follo)108 693.6 Q(ws:)-.25 E F5(\\a)144 705.6 Q F0
+(an ASCII bell character \(07\))180 705.6 Q F5(\\d)144 717.6 Q F0
+(the date in "W)180 717.6 Q(eekday Month Date" format \(e.g., "T)-.8 E
+(ue May 26"\))-.45 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(38)
+190.395 E 0 Cg EP
%%Page: 39 39
%%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(READLINE)72 84 Q F0 .15
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(\\D{)144 84 Q/F2 10/Times-Italic@0 SF(format)A F1(})A F0(the)180 96 Q
+F2(format)3.927 E F0 1.427(is passed to)3.927 F F2(strftime)3.927 E F0
+1.427(\(3\) and the result is inserted into the prompt string; an)B
+(empty)180 108 Q F2(format)2.5 E F0
+(results in a locale-speci\214c time representation.)2.5 E
+(The braces are required)5 E F1(\\e)144 120 Q F0
+(an ASCII escape character \(033\))180 120 Q F1(\\h)144 132 Q F0
+(the hostname up to the \214rst `.)180 132 Q(')-.7 E F1(\\H)144 144 Q F0
+(the hostname)180 144 Q F1(\\j)144 156 Q F0
+(the number of jobs currently managed by the shell)180 156 Q F1(\\l)144
+168 Q F0(the basename of the shell')180 168 Q 2.5(st)-.55 G(erminal de)
+-2.5 E(vice name)-.25 E F1(\\n)144 180 Q F0(ne)180 180 Q(wline)-.25 E F1
+(\\r)144 192 Q F0(carriage return)180 192 Q F1(\\s)144 204 Q F0
+(the name of the shell, the basename of)180 204 Q F1($0)2.5 E F0
+(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1(\\t)144
+216 Q F0(the current time in 24-hour HH:MM:SS format)180 216 Q F1(\\T)
+144 228 Q F0(the current time in 12-hour HH:MM:SS format)180 228 Q F1
+(\\@)144 240 Q F0(the current time in 12-hour am/pm format)180 240 Q F1
+(\\A)144 252 Q F0(the current time in 24-hour HH:MM format)180 252 Q F1
+(\\u)144 264 Q F0(the username of the current user)180 264 Q F1(\\v)144
+276 Q F0(the v)180 276 Q(ersion of)-.15 E F1(bash)2.5 E F0
+(\(e.g., 2.00\))2.5 E F1(\\V)144 288 Q F0(the release of)180 288 Q F1
+(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5
+(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 300 Q F0 .115(the current w)
+180 300 R .115(orking directory)-.1 F 2.615(,w)-.65 G(ith)-2.615 E/F3 9
+/Times-Bold@0 SF($HOME)2.615 E F0(abbre)2.365 E .116
+(viated with a tilde \(uses the v)-.25 F .116(alue of the)-.25 F F3(PR)
+180 312 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E
+F1(\\W)144 324 Q F0(the basename of the current w)180 324 Q
+(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0
+(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 336 Q F0
+(the history number of this command)180 336 Q F1(\\#)144 348 Q F0
+(the command number of this command)180 348 Q F1(\\$)144 360 Q F0
+(if the ef)180 360 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E
+F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 372 Q F2(nnn)
+A F0(the character corresponding to the octal number)180 372 Q F2(nnn)
+2.5 E F1(\\\\)144 384 Q F0 2.5(ab)180 384 S(ackslash)-2.5 E F1(\\[)144
+396 Q F0(be)180 396 Q 1.257(gin a sequence of non-printing characters, \
+which could be used to embed a terminal)-.15 F
+(control sequence into the prompt)180 408 Q F1(\\])144 420 Q F0
+(end a sequence of non-printing characters)180 420 Q .119
+(The command number and the history number are usually dif)108 436.8 R
+.12(ferent: the history number of a command is its)-.25 F .547(position\
+ in the history list, which may include commands restored from the hist\
+ory \214le \(see)108 448.8 R F3(HIST)3.046 E(OR)-.162 E(Y)-.315 E F0
+(be-)2.796 E(lo)108 460.8 Q .354(w\), while the command number is the p\
+osition in the sequence of commands e)-.25 F -.15(xe)-.15 G .355
+(cuted during the current).15 F .823(shell session.)108 472.8 R .822
+(After the string is decoded, it is e)5.823 F .822
+(xpanded via parameter e)-.15 F .822(xpansion, command substitution,)
+-.15 F .682(arithmetic e)108 484.8 R .682(xpansion, and quote remo)-.15
+F -.25(va)-.15 G .682(l, subject to the v).25 F .683(alue of the)-.25 F
+F1(pr)3.183 E(omptv)-.18 E(ars)-.1 E F0 .683(shell option \(see the de-)
+3.183 F 1.198(scription of the)108 496.8 R F1(shopt)3.698 E F0 1.198
+(command under)3.698 F F3 1.197(SHELL B)3.697 F(UIL)-.09 E 1.197
+(TIN COMMANDS)-.828 F F0(belo)3.447 E 3.697(w\). This)-.25 F 1.197
+(can ha)3.697 F 1.497 -.15(ve u)-.2 H(nw).15 E(anted)-.1 E .322(side ef)
+108 508.8 R .322(fects if escaped portions of the string appear within \
+command substitution or contain characters spe-)-.25 F(cial to w)108
+520.8 Q(ord e)-.1 E(xpansion.)-.15 E/F4 10.95/Times-Bold@0 SF(READLINE)
+72 537.6 Q F0 .151
(This is the library that handles reading input when using an interacti)
-108 96 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F/F2 10
-/Times-Bold@0 SF(\255\255noediting)2.651 E F0(option)2.651 E 1.209
-(is gi)108 108 R -.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209
-(hell in)-3.709 F -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208
-(editing is also used when using the)3.709 F F2<ad65>3.708 E F0 1.208
-(option to the)3.708 F F2 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G
-3.708(iltin. By).2 F(def)108 120 Q .851
-(ault, the line editing commands are similar to those of Emacs.)-.1 F
-3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852
-(ace is also)-.1 F -.2(av)108 132 S 3.35(ailable. Line)-.05 F .85
+108 549.6 R .45 -.15(ve s)-.25 H .15(hell, unless the).15 F F1
+(\255\255noediting)2.65 E F0(option)2.65 E .384(is gi)108 561.6 R -.15
+(ve)-.25 G 2.884(na).15 G 2.884(ts)-2.884 G .384(hell in)-2.884 F -.2
+(vo)-.4 G 2.884(cation. Line).2 F .384
+(editing is also used when using the)2.884 F F1<ad65>2.885 E F0 .385
+(option to the)2.885 F F1 -.18(re)2.885 G(ad).18 E F0 -.2(bu)2.885 G
+2.885(iltin. By).2 F(de-)2.885 E -.1(fa)108 573.6 S 1.407
+(ult, the line editing commands are similar to those of Emacs.).1 F
+3.906(Av)6.406 G 1.406(i-style line editing interf)-3.906 F 1.406
+(ace is also)-.1 F -.2(av)108 585.6 S 3.35(ailable. Line)-.05 F .85
(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 144 Q/F3 9/Times-Bold@0 SF .762(SHELL B)3.262 F(UIL)-.09 E
-.762(TIN COMMANDS)-.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot)
--.8 G .763(urn of)-3.263 F 3.263(fl)-.25 G .763
-(ine editing after the shell is running, use the)-3.263 F F2(+o)3.263 E
-(emacs)108 156 Q F0(or)2.5 E F2(+o vi)2.5 E F0(options to the)2.5 E F2
-(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F2(Readline Notation)87 172.8 Q
+-3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0
+.85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E
+(\(see)108 597.6 Q F3 .763(SHELL B)3.263 F(UIL)-.09 E .763(TIN COMMANDS)
+-.828 F F0(belo)3.013 E 3.263(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of)
+-3.263 F 3.263(fl)-.25 G .763
+(ine editing after the shell is running, use the)-3.263 F F1(+o)3.262 E
+(emacs)108 609.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1
+(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 626.4 Q
F0 .463(In this section, the Emacs-style notation is used to denote k)
-108 184.8 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
-2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1
-(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 196.8 R
-(Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153
-(ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653
-(oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke)
-108 208.8 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke)
-3.591 G 2.131 -.65(y, M)-.05 H<ad>.65 E F4(x)A F0 .831(means ESC)3.331 F
-F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13
--.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65
-(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 220.8 R F4 .599
-(meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599
-(he combination M\255C\255)-5.599 F F4(x)A F0 .599
-(means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G
-.6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F
-(the Control k)108 232.8 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4
-(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62
-(Readline commands may be gi)108 249.6 R -.15(ve)-.25 G 3.119(nn).15 G
-(umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619
-(hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108
-261.6 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G
-3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619
+108 638.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke)
+2.963 G .463(ys are denoted by C\255)-.05 F F2 -.1(ke)C(y)-.2 E F0(,)A
+1.153(e.g., C\255n means Control\255N.)108 650.4 R(Similarly)6.153 E(,)
+-.65 E F2(meta)4.033 E F0 -.1(ke)3.913 G 1.153(ys are denoted by M\255)
+-.05 F F2 -.1(ke)C(y)-.2 E F0 3.652(,s)C 3.652(oM)-3.652 G 1.152
+(\255x means Meta\255X.)-3.652 F(\(On)6.152 E -.1(ke)108 662.4 S .83
+(yboards without a)-.05 F F2(meta)3.71 E F0 -.1(ke)3.59 G 2.13 -.65
+(y, M)-.05 H<ad>.65 E F2(x)A F0 .83(means ESC)3.33 F F2(x)3.33 E F0 3.33
+(,i)C .831(.e., press the Escape k)-3.33 F 1.131 -.15(ey t)-.1 H .831
+(hen the).15 F F2(x)4.101 E F0 -.1(ke)3.861 G 4.631 -.65(y. T)-.05 H
+.831(his mak).65 F(es)-.1 E .6(ESC the)108 674.4 R F2 .6(meta pr)3.1 F
+(e\214x)-.37 E F0 5.6(.T)C .6(he combination M\255C\255)-5.6 F F2(x)A F0
+.599(means ESC\255Control\255)3.099 F F2(x)A F0 3.099(,o)C 3.099(rp)
+-3.099 G .599(ress the Escape k)-3.099 F .899 -.15(ey t)-.1 H .599
+(hen hold).15 F(the Control k)108 686.4 Q .3 -.15(ey w)-.1 H
+(hile pressing the).15 E F2(x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\))
+.65 E .595(Readline commands may be gi)108 703.2 R -.15(ve)-.25 G 3.096
+(nn).15 G(umeric)-3.096 E F2(ar)3.426 E(guments)-.37 E F0 3.096(,w).27 G
+.596(hich normally act as a repeat count.)-3.096 F(Sometimes,)5.596 E
+(ho)108 715.2 Q(we)-.25 E -.15(ve)-.25 G 1.419 -.4(r, i).15 H 3.119(ti)
+.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.019(acts in the forw)108 273.6 R 1.018
-(ard direction \(e.g.,)-.1 F F2(kill\255line)3.518 E F0 3.518(\)c)C
-1.018(auses that command to act in a backw)-3.518 F 1.018
-(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 285.6 Q
-(vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo)
--.25 E -.65(w.)-.25 G .811(When a command is described as)108 302.4 R F4
+(ument to a command that).18 F 2.938(acts in the forw)108 727.2 R 2.938
+(ard direction \(e.g.,)-.1 F F1(kill\255line)5.438 E F0 5.438(\)c)C
+2.938(auses that command to act in a backw)-5.438 F 2.938
+(ard direction.)-.1 F(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
+(39)190.395 E 0 Cg EP
+%%Page: 40 40
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(Commands whose beha)108 84 Q(vior with ar)-.2 E(guments de)-.18 E
+(viates from this are noted belo)-.25 E -.65(w.)-.25 G .812
+(When a command is described as)108 100.8 R/F1 10/Times-Italic@0 SF
(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 314.4 Q F0 2.529(\). The)B .029(killed te)2.529
-F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4
+(xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .811
+(or possible future retrie)-3.311 F -.25(va)-.25 G 3.311(l\().25 G F1
+(yank-)-3.311 E(ing)108 112.8 Q F0 2.529(\). The)B .029(killed te)2.529
+F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F1
.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 326.4 R .567(ed all at once.)-.1 F
+-.15 F .567(which can be yank)108 124.8 R .567(ed all at once.)-.1 F
.567(Commands which do not kill te)5.567 F .567
(xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.)
-108 338.4 Q F2(Readline Initialization)87 355.2 Q F0 .091(Readline is c\
-ustomized by putting commands in an initialization \214le \(the)108
-367.2 R F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091
-(name of this \214le)2.591 F .196(is tak)108 379.2 R .196(en from the v)
--.1 F .196(alue of the)-.25 F F3(INPUTRC)2.696 E F0 -.25(va)2.446 G
-2.696(riable. If).25 F .196(that v)2.696 F .196
-(ariable is unset, the def)-.25 F .196(ault is)-.1 F 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 391.2 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25
-(va)108 403.2 S 1.149(riables are set.).25 F 1.149(There are only a fe)
-6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15
-(wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737
-(lines are ignored.)108 415.2 R .737(Lines be)5.737 F .737
-(ginning with a)-.15 F F2(#)3.237 E F0 .737(are comments.)3.237 F .737
-(Lines be)5.737 F .737(ginning with a)-.15 F F2($)3.237 E F0 .736
-(indicate conditional)3.236 F 2.5(constructs. Other)108 427.2 R
-(lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E
-(ariable settings.)-.25 E .986(The def)108 444 R .986(ault k)-.1 F -.15
-(ey)-.1 G .987(-bindings may be changed with an).15 F F4(inputr)3.497 E
-(c)-.37 E F0 3.487(\214le. Other)3.797 F .987
-(programs that use this library may)3.487 F(add their o)108 456 Q
-(wn commands and bindings.)-.25 E -.15(Fo)108 472.8 S 2.5(re).15 G
-(xample, placing)-2.65 E(M\255Control\255u: uni)144 489.6 Q -.15(ve)-.25
-G(rsal\255ar).15 E(gument)-.18 E(or)108 501.6 Q(C\255Meta\255u: uni)144
-513.6 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 525.6
-Q F4(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G
-(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4
-(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo)
-108 542.4 R 1.261(wing symbolic character names are recognized:)-.25 F
-F4 -.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4
-(ESC)3.761 E F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0
-(,).73 E F4(RET)3.76 E F0(,)1.27 E F4(RETURN)108 554.4 Q F0(,)1.1 E F4
-(SPC)2.5 E F0(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G
-(nd)-2.5 E F4 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
-(In addition to command names, readline allo)108 571.2 R .209(ws k)-.25
+108 136.8 Q/F2 10/Times-Bold@0 SF(Readline Initialization)87 153.6 Q F0
+.091(Readline is customized by putting commands in an initialization \
+\214le \(the)108 165.6 R F1(inputr)2.591 E(c)-.37 E F0 2.591
+(\214le\). The)2.591 F .092(name of this \214le)2.591 F .573(is tak)108
+177.6 R .573(en from the v)-.1 F .573(alue of the)-.25 F/F3 9
+/Times-Bold@0 SF(INPUTRC)3.073 E F0 -.25(va)2.823 G 3.073(riable. If).25
+F .573(that v)3.073 F .573(ariable is unset, the def)-.25 F .573
+(ault is)-.1 F F1(~/.inputr)2.573 E(c)-.37 E F0 5.572(.I).31 G 3.072(ft)
+-5.572 G(hat)-3.072 E 3.061(\214le does)108 189.6 R .561(not e)3.061 F
+.562(xist or cannot be read, the ultimate def)-.15 F .562(ault is)-.1 F
+F1(/etc/inputr)4.212 E(c)-.37 E F0 5.562(.W).31 G .562
+(hen a program which uses the)-5.562 F .175(readline library starts up,\
+ the initialization \214le is read, and the k)108 201.6 R .474 -.15
+(ey b)-.1 H .174(indings and v).15 F .174(ariables are set.)-.25 F .174
+(There are)5.174 F .238(only a fe)108 213.6 R 2.738(wb)-.25 G .238
+(asic constructs allo)-2.738 F .239
+(wed in the readline initialization \214le.)-.25 F .239
+(Blank lines are ignored.)5.239 F .239(Lines be)5.239 F(gin-)-.15 E .554
+(ning with a)108 225.6 R F2(#)3.054 E F0 .554(are comments.)3.054 F .554
+(Lines be)5.554 F .554(ginning with a)-.15 F F2($)3.054 E F0 .554
+(indicate conditional constructs.)3.054 F .553(Other lines denote)5.553
+F -.1(ke)108 237.6 S 2.5(yb)-.05 G(indings and v)-2.5 E
+(ariable settings.)-.25 E .986(The def)108 254.4 R .986(ault k)-.1 F
+-.15(ey)-.1 G .987(-bindings may be changed with an).15 F F1(inputr)
+3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987
+(programs that use this library may)3.487 F(add their o)108 266.4 Q
+(wn commands and bindings.)-.25 E -.15(Fo)108 283.2 S 2.5(re).15 G
+(xample, placing)-2.65 E(M\255Control\255u: uni)144 300 Q -.15(ve)-.25 G
+(rsal\255ar).15 E(gument)-.18 E(or)108 312 Q(C\255Meta\255u: uni)144 324
+Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 336 Q F1
+(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G
+(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F1
+(univer)2.58 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.011(The follo)
+108 352.8 R 1.011(wing symbolic character names are recognized:)-.25 F
+F1 -.4(RU)3.511 G(BOUT).4 E F0(,)1.27 E F1(DEL)4.091 E F0(,).53 E F1
+(ESC)4.021 E F0(,).72 E F1(LFD)4.091 E F0(,).28 E F1(NEWLINE)4.21 E F0
+(,).73 E F1(RET)4.14 E F0(,)1.27 E F1(RETURN)108.63 364.8 Q F0(,)1.1 E
+F1(SPC)2.83 E F0(,).72 E F1(SP)2.83 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73
+G(nd)-2.5 E F1 -.5(TA)2.5 G(B).5 E F0(.).27 E .209
+(In addition to command names, readline allo)108 381.6 R .209(ws k)-.25
F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209
(ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i)
--.1 H(s).15 E(pressed \(a)108 583.2 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F2
-(Readline K)87 600 Q(ey Bindings)-.25 E F0 .366
-(The syntax for controlling k)108 612 R .666 -.15(ey b)-.1 H .366
-(indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366
+-.1 H(s).15 E(pressed \(a)108 393.6 Q F1(macr)2.5 E(o)-.45 E F0(\).)A F2
+(Readline K)87 410.4 Q(ey Bindings)-.25 E F0 .366
+(The syntax for controlling k)108 422.4 R .666 -.15(ey b)-.1 H .366
+(indings in the).15 F F1(inputr)2.876 E(c)-.37 E F0 .366
(\214le is simple.)3.176 F .366(All that is required is the name of the)
-5.366 F .263(command or the te)108 624 R .264(xt of a macro and a k)-.15
-F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.).15 F
-.264(The name may be speci-)5.264 F .853(\214ed in one of tw)108 636 R
-3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15(ey n)-.1 H
-.853(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or)3.353 E F4
-(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853(es, or as a k)-.15
-F -.15(ey)-.1 G(sequence.)108 648 Q .16(When using the form)108 664.8 R
-F2 -.1(ke)2.66 G(yname).1 E F0(:)A F4(function\255name).833 E F0(or)2.66
-E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161
-(is the name of a k)2.84 F .461 -.15(ey s)-.1 H .161(pelled out in Eng-)
-.15 F 2.5(lish. F)108 676.8 R(or e)-.15 E(xample:)-.15 E(Control-u: uni)
-144 700.8 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E
-(Meta-Rubout: backw)144 712.8 Q(ard-kill-w)-.1 E(ord)-.1 E
-(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(39)188.455 E 0 Cg EP
-%%Page: 40 40
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .699(In the abo)
-108 84 R .998 -.15(ve ex)-.15 H(ample,).15 E/F1 10/Times-Italic@0 SF
-(C\255u)3.038 E F0 .698(is bound to the function)3.448 F/F2 10
-/Times-Bold@0 SF(uni)3.198 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E
-F0(,)A F1(M\255DEL)3.878 E F0 .698(is bound to the func-)3.728 F(tion)
-108 96 Q F2(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)
--2.758 E F1(C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F
-.259(xpressed on the right hand side \(that is, to)-.15 F(insert the te)
-108 108 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
-(into the line\).)2.5 E .056(In the second form,)108 124.8 R F2("k)2.556
+5.366 F .263(command or the te)108 434.4 R .264(xt of a macro and a k)
+-.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.)
+.15 F .264(The name may be speci-)5.264 F .139(\214ed in one of tw)108
+446.4 R 2.638(ow)-.1 G .138(ays: as a symbolic k)-2.738 F .438 -.15
+(ey n)-.1 H .138(ame, possibly with).15 F F1(Meta\255)2.638 E F0(or)
+2.638 E F1(Contr)2.638 E(ol\255)-.45 E F0(pre\214x)2.638 E .138
+(es, or as a k)-.15 F .438 -.15(ey s)-.1 H(e-).15 E(quence.)108 458.4 Q
+.16(When using the form)108 475.2 R F2 -.1(ke)2.66 G(yname).1 E F0(:)A
+F1(function\255name).833 E F0(or)2.66 E F1(macr)2.66 E(o)-.45 E F0(,)A
+F1 -.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15
+(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 487.2 R(or e)
+-.15 E(xample:)-.15 E(Control-u: uni)144 511.2 Q -.15(ve)-.25 G
+(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 523.2 Q
+(ard-kill-w)-.1 E(ord)-.1 E(Control-o: "> output")144 535.2 Q .699
+(In the abo)108 552 R .998 -.15(ve ex)-.15 H(ample,).15 E F1(C\255u)
+3.038 E F0 .698(is bound to the function)3.448 F F2(uni)3.198 E -.1(ve)
+-.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 .698
+(is bound to the func-)3.728 F(tion)108 564 Q F2(backward\255kill\255w)
+2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F1(C\255o)2.598 E F0 .258
+(is bound to run the macro e)2.938 F .259
+(xpressed on the right hand side \(that is, to)-.15 F(insert the te)108
+576 Q(xt)-.15 E/F4 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0
+(into the line\).)2.5 E .056(In the second form,)108 592.8 R F2("k)2.556
E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr)
2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055
(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15
(ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284
-(denoting an entire k)108 136.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
+(denoting an entire k)108 604.8 R 1.584 -.15(ey s)-.1 H 1.284(equence m\
ay be speci\214ed by placing the sequence within double quotes.).15 F
-(Some)6.284 E .386(GNU Emacs style k)108 148.8 R .686 -.15(ey e)-.1 H
+(Some)6.284 E .386(GNU Emacs style k)108 616.8 R .686 -.15(ey e)-.1 H
.385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385
(xample, b)-.15 F .385(ut the symbolic character names)-.2 F
-(are not recognized.)108 160.8 Q("\\C\255u": uni)144 184.8 Q -.15(ve)
+(are not recognized.)108 628.8 Q("\\C\255u": uni)144 652.8 Q -.15(ve)
-.25 G(rsal\255ar).15 E(gument)-.18 E
-("\\C\255x\\C\255r": re\255read\255init\255\214le)144 196.8 Q
-("\\e[11~": "Function K)144 208.8 Q .3 -.15(ey 1)-.25 H(").15 E .314
-(In this e)108 225.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag)
+("\\C\255x\\C\255r": re\255read\255init\255\214le)144 664.8 Q
+("\\e[11~": "Function K)144 676.8 Q .3 -.15(ey 1)-.25 H(").15 E .314
+(In this e)108 693.6 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag)
3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1
G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0
-.315(is bound to the func-)3.545 F(tion)108 237.6 Q F2 -.18(re)2.5 G
+.315(is bound to the func-)3.545 F(tion)108 705.6 Q F2 -.18(re)2.5 G
<ad72>.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
+(ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F4
(Function Key 1)2.5 E F0(.)A
-(The full set of GNU Emacs style escape sequences is)108 254.4 Q F2
-<5c43ad>144 266.4 Q F0(control pre\214x)180 266.4 Q F2<5c4dad>144 278.4
-Q F0(meta pre\214x)180 278.4 Q F2(\\e)144 290.4 Q F0
-(an escape character)180 290.4 Q F2(\\\\)144 302.4 Q F0(backslash)180
-302.4 Q F2(\\")144 314.4 Q F0(literal ")180 314.4 Q F2<5c08>144 326.4 Q
-F0(literal \010)180 326.4 Q(In addition to the GNU Emacs style escape s\
-equences, a second set of backslash escapes is a)108 343.2 Q -.25(va)-.2
-G(ilable:).25 E F2(\\a)144 355.2 Q F0(alert \(bell\))180 355.2 Q F2(\\b)
-144 367.2 Q F0(backspace)180 367.2 Q F2(\\d)144 379.2 Q F0(delete)180
-379.2 Q F2(\\f)144 391.2 Q F0(form feed)180 391.2 Q F2(\\n)144 403.2 Q
-F0(ne)180 403.2 Q(wline)-.25 E F2(\\r)144 415.2 Q F0(carriage return)180
-415.2 Q F2(\\t)144 427.2 Q F0(horizontal tab)180 427.2 Q F2(\\v)144
-439.2 Q F0 -.15(ve)180 439.2 S(rtical tab).15 E F2(\\)144 451.2 Q F1
-(nnn)A F0(the eight-bit character whose v)180 451.2 Q
-(alue is the octal v)-.25 E(alue)-.25 E F1(nnn)2.5 E F0
-(\(one to three digits\))2.5 E F2(\\x)144 463.2 Q F1(HH)A F0
-(the eight-bit character whose v)180 463.2 Q(alue is the he)-.25 E
-(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0(\(one or tw)2.5 E 2.5(oh)
--.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142(When entering the te)108
-480 R 1.141(xt of a macro, single or double quotes must be used to indi\
-cate a macro de\214nition.)-.15 F .089(Unquoted te)108 492 R .089
-(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089
-F 2.59(,t)-.65 G .09(he backslash escapes described abo)-2.59 F -.15(ve)
--.15 G(are e)108 504 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E
-2.5(yo)-.15 G(ther character in the macro te)-2.5 E
-(xt, including " and \010.)-.15 E F2(Bash)108 520.8 Q F0(allo)2.93 E .43
-(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429
-(indings to be displayed or modi\214ed with the).15 F F2(bind)2.929 E F0
--.2(bu)2.929 G .429(iltin command.).2 F .045
-(The editing mode may be switched during interacti)108 532.8 R .345 -.15
-(ve u)-.25 H .046(se by using the).15 F F2<ad6f>2.546 E F0 .046
-(option to the)2.546 F F2(set)2.546 E F0 -.2(bu)2.546 G .046
-(iltin command).2 F(\(see)108 544.8 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E
-(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2
-(Readline V)87 561.6 Q(ariables)-.92 E F0 .044(Readline has v)108 573.6
-R .043(ariables that can be used to further customize its beha)-.25 F
-(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043
-(riable may be set in the).25 F F1(inpu-)2.553 E(tr)108 585.6 Q(c)-.37 E
-F0(\214le with a statement of the form)2.81 E F2(set)144 602.4 Q F1
-(variable\255name value)2.5 E F0 .79(Except where noted, readline v)108
-619.2 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F
-(alues)-.25 E F2(On)3.29 E F0(or)3.29 E F2(Off)3.29 E F0 .79
-(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)
-5.79 E .449(nized v)108 631.2 R .448(ariable names are ignored.)-.25 F
-.448(When a v)5.448 F .448(ariable v)-.25 F .448
-(alue is read, empty or null v)-.25 F .448(alues, "on" \(case-insensi-)
--.25 F(ti)108 643.2 Q -.15(ve)-.25 G .467(\), and "1" are equi).15 F
--.25(va)-.25 G .468(lent to).25 F F2(On)2.968 E F0 5.468(.A)C .468
-(ll other v)-5.468 F .468(alues are equi)-.25 F -.25(va)-.25 G .468
-(lent to).25 F F2(Off)2.968 E F0 5.468(.T)C .468(he v)-5.468 F .468
-(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 655.2 S(lues are:)
-.25 E F2(bell\255style \(audible\))108 672 Q F0 .011
-(Controls what happens when readline w)144 684 R .011
-(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F2(none)2.51
-E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94
-(rings the bell.)144 696 R .94(If set to)5.94 F F2(visible)3.44 E F0
-3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
--.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A
-(readline attempts to ring the terminal')144 708 Q 2.5(sb)-.55 G(ell.)
--2.5 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(40)188.455 E 0 Cg
-EP
+(The full set of GNU Emacs style escape sequences is)108 722.4 Q
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(40)190.395 E 0 Cg EP
%%Page: 41 41
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(bind\255tty\255special\255chars \(On\))108 84 Q F0 .056(If set to)144
-96 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempts to bind the cont\
-rol characters treated specially by the k)-2.556 F(ernel')-.1 E 2.555
-(st)-.55 G(ermi-)-2.555 E(nal dri)144 108 Q -.15(ve)-.25 G 2.5(rt).15 G
-2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1
-(blink\255matching\255par)108 120 Q(en \(Off\))-.18 E F0 .21(If set to)
-144 132 R F1(On)2.71 E F0 2.71(,r)C .21
+SF<5c43ad>144 84 Q F0(control pre\214x)180 84 Q F1<5c4dad>144 96 Q F0
+(meta pre\214x)180 96 Q F1(\\e)144 108 Q F0(an escape character)180 108
+Q F1(\\\\)144 120 Q F0(backslash)180 120 Q F1(\\")144 132 Q F0
+(literal ")180 132 Q F1<5c08>144 144 Q F0(literal \010)180 144 Q(In add\
+ition to the GNU Emacs style escape sequences, a second set of backslas\
+h escapes is a)108 160.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 172.8
+Q F0(alert \(bell\))180 172.8 Q F1(\\b)144 184.8 Q F0(backspace)180
+184.8 Q F1(\\d)144 196.8 Q F0(delete)180 196.8 Q F1(\\f)144 208.8 Q F0
+(form feed)180 208.8 Q F1(\\n)144 220.8 Q F0(ne)180 220.8 Q(wline)-.25 E
+F1(\\r)144 232.8 Q F0(carriage return)180 232.8 Q F1(\\t)144 244.8 Q F0
+(horizontal tab)180 244.8 Q F1(\\v)144 256.8 Q F0 -.15(ve)180 256.8 S
+(rtical tab).15 E F1(\\)144 268.8 Q/F2 10/Times-Italic@0 SF(nnn)A F0
+(the eight-bit character whose v)180 268.8 Q(alue is the octal v)-.25 E
+(alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144
+280.8 Q F2(HH)A F0(the eight-bit character whose v)180 280.8 Q
+(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
+(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142
+(When entering the te)108 297.6 R 1.141(xt of a macro, single or double\
+ quotes must be used to indicate a macro de\214nition.)-.15 F .089
+(Unquoted te)108 309.6 R .089(xt is assumed to be a function name.)-.15
+F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09
+(he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108
+321.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G
+(ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E
+F1(Bash)108 338.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F
+.73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the)
+.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045
+(The editing mode may be switched during interacti)108 350.4 R .345 -.15
+(ve u)-.25 H .046(se by using the).15 F F1<ad6f>2.546 E F0 .046
+(option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046
+(iltin command).2 F(\(see)108 362.4 Q/F3 9/Times-Bold@0 SF(SHELL B)2.5 E
+(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1
+(Readline V)87 379.2 Q(ariables)-.92 E F0 .044(Readline has v)108 391.2
+R .043(ariables that can be used to further customize its beha)-.25 F
+(vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043
+(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 403.2 Q(c)-.37 E
+F0(\214le with a statement of the form)2.81 E F1(set)144 420 Q F2
+(variable\255name value)2.5 E F0(or using the)108 432 Q F1(bind)2.5 E F0
+-.2(bu)2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E
+(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .79
+(Except where noted, readline v)108 448.8 R .79(ariables can tak)-.25 F
+3.29(et)-.1 G .79(he v)-3.29 F(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1
+(Off)3.29 E F0 .79(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).)
+.05 F(Unrecog-)5.79 E .449(nized v)108 460.8 R .448
+(ariable names are ignored.)-.25 F .448(When a v)5.448 F .448(ariable v)
+-.25 F .448(alue is read, empty or null v)-.25 F .448
+(alues, "on" \(case-insensi-)-.25 F(ti)108 472.8 Q -.15(ve)-.25 G .467
+(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F1(On)
+2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25
+F -.25(va)-.25 G .468(lent to).25 F F1(Off)2.968 E F0 5.468(.T)C .468
+(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -.25(va)108
+484.8 S(lues are:).25 E F1(bell\255style \(audible\))108 501.6 Q F0 .011
+(Controls what happens when readline w)144 513.6 R .011
+(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51
+E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94
+(rings the bell.)144 525.6 R .94(If set to)5.94 F F1(visible)3.44 E F0
+3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va)
+-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A
+(readline attempts to ring the terminal')144 537.6 Q 2.5(sb)-.55 G(ell.)
+-2.5 E F1(bind\255tty\255special\255chars \(On\))108 549.6 Q F0 .056
+(If set to)144 561.6 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\
+s to bind the control characters treated specially by the k)-2.556 F
+(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 573.6 Q -.15
+(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)
+-.25 G(lents.).25 E F1(blink\255matching\255par)108 585.6 Q(en \(Off\))
+-.18 E F0 .21(If set to)144 597.6 R F1(On)2.71 E F0 2.71(,r)C .21
(eadline attempts to brie\215y mo)-2.71 F .51 -.15(ve t)-.15 H .21
(he cursor to an opening parenthesis when a closing).15 F
-(parenthesis is inserted.)144 144 Q F1(color)108 156 Q
+(parenthesis is inserted.)144 609.6 Q F1(color)108 621.6 Q
(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 .515(If set to)
-144 168 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, rea\
-dline displays the common pre\214x of the set of possible)-3.015 F 2.935
-(completions using a dif)144 180 R 2.935(ferent color)-.25 F 7.936(.T)
--.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936
-(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 192 Q F0
-(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 204 Q
-(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 216 R F1(On)4.08 E F0
-4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08 F
-1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144
-228 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)
--.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E
-F1(comment\255begin \(`)108 240 Q(`#')-.63 E('\))-.63 E F0 .884
-(The string that is inserted when the readline)144 252 R F1
+144 633.6 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing completions, r\
+eadline displays the common pre\214x of the set of possible)-3.015 F
+2.935(completions using a dif)144 645.6 R 2.935(ferent color)-.25 F
+7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F 2.936
+(en from the v)-.1 F 2.936(alue of the)-.25 F F1(LS_COLORS)144 657.6 Q
+F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 669.6 Q
+(ed\255stats \(Off\))-.18 E F0 1.58(If set to)144 681.6 R F1(On)4.08 E
+F0 4.08(,r)C 1.579(eadline displays possible completions using dif)-4.08
+F 1.579(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144
+693.6 R(color de\214nitions are tak)2.5 E(en from the v)-.1 E
+(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E
+(ariable.)-.25 E F1(comment\255begin \(`)108 705.6 Q(`#')-.63 E('\))-.63
+E F0 .884(The string that is inserted when the readline)144 717.6 R F1
(insert\255comment)3.385 E F0 .885(command is e)3.385 F -.15(xe)-.15 G
-3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 264 Q F1
+3.385(cuted. This).15 F(com-)3.385 E(mand is bound to)144 729.6 Q F1
(M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0
-(in vi command mode.)2.5 E F1(completion\255display\255width \(\2551\))
-108 276 Q F0 1.453(The number of screen columns used to display possibl\
-e matches when performing completion.)144 288 R .193(The v)144 300 R
-.193(alue is ignored if it is less than 0 or greater than the terminal \
-screen width.)-.25 F 2.694(Av)5.194 G .194(alue of 0 will)-2.944 F
-(cause matches to be displayed one per line.)144 312 Q(The def)5 E
-(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 324 Q
-(e\255case \(Off\))-.18 E F0(If set to)144 336 Q F1(On)2.5 E F0 2.5(,r)C
+(in vi command mode.)2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(41)190.395 E 0 Cg EP
+%%Page: 42 42
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(completion\255display\255width \(\2551\))108 84 Q F0 1.453(The numbe\
+r of screen columns used to display possible matches when performing co\
+mpletion.)144 96 R .193(The v)144 108 R .193(alue is ignored if it is l\
+ess than 0 or greater than the terminal screen width.)-.25 F 2.694(Av)
+5.194 G .194(alue of 0 will)-2.944 F
+(cause matches to be displayed one per line.)144 120 Q(The def)5 E
+(ault v)-.1 E(alue is \2551.)-.25 E F1(completion\255ignor)108 132 Q
+(e\255case \(Off\))-.18 E F0(If set to)144 144 Q F1(On)2.5 E F0 2.5(,r)C
(eadline performs \214lename matching and completion in a case\255insen\
siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1
-(completion\255map\255case \(Off\))108 348 Q F0 .094(If set to)144 360 R
+(completion\255map\255case \(Off\))108 156 Q F0 .094(If set to)144 168 R
F1(On)2.593 E F0 2.593(,a)C(nd)-2.593 E F1(completion\255ignor)2.593 E
(e\255case)-.18 E F0 .093(is enabled, readline treats h)2.593 F .093
(yphens \()-.05 F/F2 10/Times-Italic@0 SF<ad>A F0 2.593(\)a)C .093
-(nd underscores)-2.593 F(\()144 372 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
+(nd underscores)-2.593 F(\()144 180 Q F2(_)A F0 2.5(\)a)C 2.5(se)-2.5 G
(qui)-2.5 E -.25(va)-.25 G(lent when performing case\255insensiti).25 E
.3 -.15(ve \214)-.25 H(lename matching and completion.).15 E F1
-(completion\255pr)108 384 Q(e\214x\255display\255length \(0\))-.18 E F0
+(completion\255pr)108 192 Q(e\214x\255display\255length \(0\))-.18 E F0
.829(The length in characters of the common pre\214x of a list of possi\
-ble completions that is displayed)144 396 R 1.275
-(without modi\214cation.)144 408 R 1.275(When set to a v)6.275 F 1.274
+ble completions that is displayed)144 204 R 1.275
+(without modi\214cation.)144 216 R 1.275(When set to a v)6.275 F 1.274
(alue greater than zero, common pre\214x)-.25 F 1.274
-(es longer than this)-.15 F -.25(va)144 420 S(lue are replaced with an \
+(es longer than this)-.15 F -.25(va)144 228 S(lue are replaced with an \
ellipsis when displaying possible completions.).25 E F1
-(completion\255query\255items \(100\))108 432 Q F0 .529
-(This determines when the user is queried about vie)144 444 R .53
+(completion\255query\255items \(100\))108 240 Q F0 .529
+(This determines when the user is queried about vie)144 252 R .53
(wing the number of possible completions gen-)-.25 F .561(erated by the)
-144 456 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061
+144 264 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061
F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v)
--.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 468 R
+-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 276 R
.783(If the number of possible completions is greater than or equal to \
-the v)5.782 F .783(alue of this)-.25 F -.25(va)144 480 S .237
-(riable, the user is ask).25 F .237(ed whether or not he wishes to vie)
--.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G
-.237(re simply listed)-2.737 F(on the terminal.)144 492 Q F1(con)108 504
-Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 516 R F1(On)
+the v)5.782 F .783(alue of this)-.25 F -.25(va)144 288 S .368
+(riable, readline will ask whether or not the user wishes to vie).25 F
+2.867(wt)-.25 G .367(hem; otherwise the)-2.867 F 2.867(ya)-.15 G .367
+(re simply)-2.867 F(listed on the terminal.)144 300 Q F1(con)108 312 Q
+-.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 324 R F1(On)
3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613
(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15
(ey s)-.1 H .613(equence by).15 F .541
(stripping the eighth bit and pre\214xing an escape character \(in ef)
-144 528 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F
-(e-)-.37 E<8c78>144 540 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2
+144 336 R .541(fect, using escape as the)-.25 F F2 .541(meta pr)3.041 F
+(e-)-.37 E<8c78>144 348 Q F0 2.5(\). The)B(def)2.5 E(ault is)-.1 E F2
(On)2.5 E F0 2.5(,b)C(ut readline will set it to)-2.7 E F2(Of)2.5 E(f)
-.18 E F0(if the locale contains eight-bit characters.)2.5 E F1
-(disable\255completion \(Off\))108 552 Q F0 .038(If set to)144 564 R F1
+(disable\255completion \(Off\))108 360 Q F0 .038(If set to)144 372 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 576 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
-(.)A F1(echo\255contr)108 588 Q(ol\255characters \(On\))-.18 E F0 1.211
-(When set to)144 600 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G
+144 384 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0
+(.)A F1(echo\255contr)108 396 Q(ol\255characters \(On\))-.18 E F0 1.211
+(When set to)144 408 R F1(On)3.711 E F0 3.711(,o)C 3.711(no)-3.711 G
1.211(perating systems that indicate the)-3.711 F 3.711(ys)-.15 G 1.21
(upport it, readline echoes a character)-3.711 F
-(corresponding to a signal generated from the k)144 612 Q -.15(ey)-.1 G
-(board.).15 E F1(editing\255mode \(emacs\))108 624 Q F0 .141
-(Controls whether readline be)144 636 R .141(gins with a set of k)-.15 F
+(corresponding to a signal generated from the k)144 420 Q -.15(ey)-.1 G
+(board.).15 E F1(editing\255mode \(emacs\))108 432 Q F0 .141
+(Controls whether readline be)144 444 R .141(gins with a set of k)-.15 F
.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.642 E F0
(or)2.642 E F2(vi)2.642 E F0(.)A F1(editing\255mode)5.142 E F0
-(can be set to either)144 648 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
-F0(.)A F1(emacs\255mode\255string \(@\))108 660 Q F0 .518(If the)144 672
+(can be set to either)144 456 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E
+F0(.)A F1(emacs\255mode\255string \(@\))108 468 Q F0 .518(If the)144 480
R F2(show\255mode\255in\255pr)3.018 E(ompt)-.45 E F0 -.25(va)3.018 G
.517(riable is enabled, this string is displayed immediately before the)
.25 F .622
-(last line of the primary prompt when emacs editing mode is acti)144 684
+(last line of the primary prompt when emacs editing mode is acti)144 492
R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F
-.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 696 S 3.34(yb)-.05 G
+.622(xpanded lik)-.15 F 3.122(ea)-.1 G -.1(ke)144 504 S 3.34(yb)-.05 G
.839(inding, so the standard set of meta- and control pre\214x)-3.34 F
-.839(es and backslash escape sequences is)-.15 F -.2(av)144 708 S 2.798
+.839(es and backslash escape sequences is)-.15 F -.2(av)144 516 S 2.798
(ailable. Use)-.05 F .298(the \\1 and \\2 escapes to be)2.798 F .298
(gin and end sequences of non-printing characters, which)-.15 F
(can be used to embed a terminal control sequence into the mode string.)
-144 720 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(41)188.455 E 0
-Cg EP
-%%Page: 42 42
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(enable\255brack)108 84 Q(eted\255paste \(Off\))-.1 E F0 1.222
-(When set to)144 96 R F1(On)3.721 E F0 3.721(,r)C 1.221
+144 528 Q F1(enable\255brack)108 540 Q(eted\255paste \(On\))-.1 E F0
+1.222(When set to)144 552 R F1(On)3.721 E F0 3.721(,r)C 1.221
(eadline will con\214gure the terminal in a w)-3.721 F 1.221
(ay that will enable it to insert each)-.1 F .353
-(paste into the editing b)144 108 R(uf)-.2 E .353(fer as a single strin\
+(paste into the editing b)144 564 R(uf)-.2 E .353(fer as a single strin\
g of characters, instead of treating each character as if)-.25 F .544
-(it had been read from the k)144 120 R -.15(ey)-.1 G 3.043(board. This)
+(it had been read from the k)144 576 R -.15(ey)-.1 G 3.043(board. This)
.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543
(nt pasted characters from being interpreted as).15 F(editing commands.)
-144 132 Q F1(enable\255k)108 144 Q(eypad \(Off\))-.1 E F0 .892
-(When set to)144 156 R F1(On)3.393 E F0 3.393(,r)C .893
+144 588 Q F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892
+(When set to)144 612 R F1(On)3.393 E F0 3.393(,r)C .893
(eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G
.893(pad when it is called.).15 F .893(Some sys-)5.893 F
-(tems need this to enable the arro)144 168 Q 2.5(wk)-.25 G -.15(ey)-2.6
-G(s.).15 E F1(enable\255meta\255k)108 180 Q(ey \(On\))-.1 E F0 .64
-(When set to)144 192 R F1(On)3.14 E F0 3.14(,r)C .64
+(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6
+G(s.).15 E F1(enable\255meta\255k)108 636 Q(ey \(On\))-.1 E F0 .64
+(When set to)144 648 R F1(On)3.14 E F0 3.14(,r)C .64
(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 204 Q
+(he terminal claims to support).15 F(when it is called.)144 660 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 216 Q F0(If set to)144 228 Q F1(On)2.5 E F0
+(expand\255tilde \(Off\))108 672 Q F0(If set to)144 684 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 240 Q(eser)-.18 E -.1
-(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 252 R F1(On)
-3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \
-the same location on each history line)-3.838 F(retrie)144 264 Q -.15
-(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G
-(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1
-(history\255size \(unset\))108 276 Q F0 .949
-(Set the maximum number of history entries sa)144 288 R -.15(ve)-.2 G
+-.15 E(ord completion.)-.1 E F1(history\255pr)108 696 Q(eser)-.18 E -.1
+(ve)-.1 G(\255point \(Off\)).1 E F0 .552(If set to)144 708 R F1(On)3.052
+E F0 3.052(,t)C .552(he history code attempts to place point at the sam\
+e location on each history line re-)-3.052 F(trie)144 720 Q -.15(ve)-.25
+G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G(ious-history).15 E
+F0(or)2.5 E F1(next-history)2.5 E F0(.)A(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(42)190.395 E 0 Cg EP
+%%Page: 43 43
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(history\255size \(unset\))108 84 Q F0 .949
+(Set the maximum number of history entries sa)144 96 R -.15(ve)-.2 G
3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948
(If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482
-(history entries are deleted and no ne)144 300 R 2.982(we)-.25 G .483
+(history entries are deleted and no ne)144 108 R 2.982(we)-.25 G .483
(ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v)
2.983 F .483(alue less than zero, the num-)-.25 F .278
-(ber of history entries is not limited.)144 312 R .277(By def)5.278 F
+(ber of history entries is not limited.)144 120 R .277(By def)5.278 F
.277(ault, the number of history entries is set to the v)-.1 F .277
-(alue of)-.25 F(the)144 324 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F
+(alue of)-.25 F(the)144 132 Q F1(HISTSIZE)3.41 E F0 .91(shell v)3.41 F
3.41(ariable. If)-.25 F .911(an attempt is made to set)3.41 F/F2 10
/Times-Italic@0 SF(history\255size)3.411 E F0 .911(to a non-numeric v)
3.411 F(alue,)-.25 E
-(the maximum number of history entries will be set to 500.)144 336 Q F1
-(horizontal\255scr)108 348 Q(oll\255mode \(Off\))-.18 E F0 .449
-(When set to)144 360 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
+(the maximum number of history entries will be set to 500.)144 144 Q F1
+(horizontal\255scr)108 156 Q(oll\255mode \(Off\))-.18 E F0 .449
+(When set to)144 168 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448
(es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448
(crolling the input horizontally on a)-2.948 F 1.194(single screen line\
when it becomes longer than the screen width rather than wrapping to a\
- ne)144 372 R(w)-.25 E(line.)144 384 Q F1(input\255meta \(Off\))108 396
-Q F0 1.062(If set to)144 408 R F1(On)3.562 E F0 3.562(,r)C 1.061(eadlin\
-e will enable eight-bit input \(that is, it will not strip the eighth b\
-it from the)-3.562 F .335(characters it reads\), re)144 420 R -.05(ga)
--.15 G .335(rdless of what the terminal claims it can support.).05 F
-.336(The name)5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)
-144 432 S(ynon)-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)
--.25 F(def)2.864 E .364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864
-(,b)C .364(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364
-(if the locale contains)2.864 F(eight-bit characters.)144 444 Q F1
-(isear)108 456 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
+ ne)144 180 R(w)-.25 E 2.5(line. This)144 192 R
+(setting is automatically enabled for terminals of height 1.)2.5 E F1
+(input\255meta \(Off\))108 204 Q F0 1.062(If set to)144 216 R F1(On)
+3.562 E F0 3.562(,r)C 1.061(eadline will enable eight-bit input \(that \
+is, it will not strip the eighth bit from the)-3.562 F .335
+(characters it reads\), re)144 228 R -.05(ga)-.15 G .335
+(rdless of what the terminal claims it can support.).05 F .336(The name)
+5.336 F F1(meta\255\215ag)2.836 E F0(is)2.836 E 2.865(as)144 240 S(ynon)
+-2.865 E .365(ym for this v)-.15 F 2.864(ariable. The)-.25 F(def)2.864 E
+.364(ault is)-.1 F F2(Of)2.864 E(f)-.18 E F0 2.864(,b)C .364
+(ut readline will set it to)-3.064 F F2(On)2.864 E F0 .364
+(if the locale contains)2.864 F(eight-bit characters.)144 252 Q F1
+(isear)108 264 Q(ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))
-.63 E F0 .439(The string of characters that should terminate an increm\
-ental search without subsequently e)144 468 R -.15(xe)-.15 G(cut-).15 E
-.935(ing the character as a command.)144 480 R .935(If this v)5.935 F
+ental search without subsequently e)144 276 R -.15(xe)-.15 G(cut-).15 E
+.935(ing the character as a command.)144 288 R .935(If this v)5.935 F
.935(ariable has not been gi)-.25 F -.15(ve)-.25 G 3.434(nav).15 G .934
-(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 492 Q F2
+(alue, the characters)-3.684 F F2(ESC)3.434 E F0(and)144 300 Q F2
(C\255J)2.5 E F0(will terminate an incremental search.)2.5 E F1 -.1(ke)
-108 504 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 516
+108 312 S(ymap \(emacs\)).1 E F0 2.02(Set the current readline k)144 324
R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021
(alid k)-.25 F -.15(ey)-.1 G 2.021(map names is).15 F F2 2.021
-(emacs, emacs\255standar)4.521 F(d,)-.37 E .069
-(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 528 R F0 2.568(,a)C
-(nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068
-(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command)
-2.568 E F0(;)A F2(emacs)2.568 E F0 1.543(is equi)144 540 R -.25(va)-.25
-G 1.543(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C
-1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs)
-4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1
-(editing\255mode)4.044 E F0(also)4.044 E(af)144 552 Q(fects the def)-.25
-E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 564 S
-(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 576 R
+(emacs, emacs\255standar)4.521 F(d,)-.37 E .042
+(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 336 R F0 2.542(,a)C
+(nd)-2.542 E F2(vi\255insert)2.832 E F0(.).68 E F2(vi)5.042 E F0 .042
+(is equi)2.542 F -.25(va)-.25 G .042(lent to).25 F F2(vi\255command)
+2.541 E F0(;)A F2(emacs)2.541 E F0 .448(is equi)144 348 R -.25(va)-.25 G
+.448(lent to).25 F F2(emacs\255standar)2.948 E(d)-.37 E F0 5.448(.T)C
+.448(he def)-5.448 F .448(ault v)-.1 F .449(alue is)-.25 F F2(emacs)
+3.139 E F0 2.949(;t).27 G .449(he v)-2.949 F .449(alue of)-.25 F F1
+(editing\255mode)2.949 E F0 .449(also af-)2.949 F(fects the def)144 360
+Q(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -.1(ke)108 372 S
+(yseq\255timeout \(500\)).1 E F0 .368(Speci\214es the duration)144 384 R
F2 -.37(re)2.867 G(adline).37 E F0 .367(will w)2.867 F .367
(ait for a character when reading an ambiguous k)-.1 F .667 -.15(ey s)
--.1 H(equence).15 E 1.356(\(one that can form a complete k)144 588 R
-1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar)
--.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.356(an tak)-3.856 F 3.856(ea)
--.1 G(dditional)-3.856 E .32(input to complete a longer k)144 600 R .62
--.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F
--.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re)
-2.82 G(adline).37 E F0(will)2.82 E .906(use the shorter b)144 612 R .907
-(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25
-(va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .907
-(alue of)-.25 F .05(1000 means that)144 624 R F2 -.37(re)2.55 G(adline)
-.37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1
-F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
-(less than or equal to zero, or to a non-numeric v)144 636 R(alue,)-.25
+-.1 H(equence).15 E .524(\(one that can form a complete k)144 396 R .824
+-.15(ey s)-.1 H .524(equence using the input read so f).15 F(ar)-.1 E
+3.025(,o)-.4 G 3.025(rc)-3.025 G .525(an tak)-3.025 F 3.025(ea)-.1 G
+.525(dditional in-)-3.025 F .807(put to complete a longer k)144 408 R
+1.106 -.15(ey s)-.1 H 3.306(equence\). If).15 F .806(no input is recei)
+3.306 F -.15(ve)-.25 G 3.306(dw).15 G .806(ithin the timeout,)-3.306 F
+F2 -.37(re)3.306 G(adline).37 E F0(will)3.306 E .906(use the shorter b)
+144 420 R .907(ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407
+(equence. The).15 F -.25(va)3.407 G .907
+(lue is speci\214ed in milliseconds, so a v).25 F .907(alue of)-.25 F
+.05(1000 means that)144 432 R F2 -.37(re)2.55 G(adline).37 E F0 .05
+(will w)2.55 F .05(ait one second for additional input.)-.1 F .05
+(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051
+(less than or equal to zero, or to a non-numeric v)144 444 R(alue,)-.25
E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051
(ait until another k)-.1 F .352 -.15(ey i)-.1 H 2.552(sp).15 G(ressed)
--2.552 E(to decide which k)144 648 Q .3 -.15(ey s)-.1 H
-(equence to complete.).15 E F1(mark\255dir)108 660 Q(ectories \(On\))
--.18 E F0(If set to)144 672 Q F1(On)2.5 E F0 2.5(,c)C
+-2.552 E(to decide which k)144 456 Q .3 -.15(ey s)-.1 H
+(equence to complete.).15 E F1(mark\255dir)108 468 Q(ectories \(On\))
+-.18 E F0(If set to)144 480 Q F1(On)2.5 E F0 2.5(,c)C
(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 684 Q F0(If set to)144
-696 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
+.15 E F1(mark\255modi\214ed\255lines \(Off\))108 492 Q F0(If set to)144
+504 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b)
-.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1
-(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(42)188.455
-E 0 Cg EP
-%%Page: 43 43
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(mark\255symlink)108 84 Q(ed\255dir)-.1 E(ectories \(Off\))-.18 E F0
-.175(If set to)144 96 R F1(On)2.675 E F0 2.675(,c)C .175
+(*)A F0(\).)A F1(mark\255symlink)108 516 Q(ed\255dir)-.1 E
+(ectories \(Off\))-.18 E F0 .175(If set to)144 528 R F1(On)2.675 E F0
+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 108
+-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 540
Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1
-(match\255hidden\255\214les \(On\))108 120 Q F0 .192(This v)144 132 R
+(match\255hidden\255\214les \(On\))108 552 Q F0 .192(This v)144 564 R
.192(ariable, when set to)-.25 F F1(On)2.692 E F0 2.692(,c)C .192
(auses readline to match \214les whose names be)-2.692 F .193
(gin with a `.)-.15 F 2.693('\()-.7 G(hidden)-2.693 E .457
-(\214les\) when performing \214lename completion.)144 144 R .456
+(\214les\) when performing \214lename completion.)144 576 R .456
(If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.)
-2.956 F 2.956('m)-.7 G .456(ust be supplied by the)-2.956 F
-(user in the \214lename to be completed.)144 156 Q F1
-(menu\255complete\255display\255pr)108 168 Q(e\214x \(Off\))-.18 E F0
-1.585(If set to)144 180 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
+(user in the \214lename to be completed.)144 588 Q F1
+(menu\255complete\255display\255pr)108 600 Q(e\214x \(Off\))-.18 E F0
+1.585(If set to)144 612 R F1(On)4.085 E F0 4.085(,m)C 1.585(enu complet\
ion displays the common pre\214x of the list of possible completions)
--4.085 F(\(which may be empty\) before c)144 192 Q
-(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 204 Q F0
-.507(If set to)144 216 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \
+-4.085 F(\(which may be empty\) before c)144 624 Q
+(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 636 Q F0
+.507(If set to)144 648 R F1(On)3.007 E F0 3.007(,r)C .507(eadline will \
display characters with the eighth bit set directly rather than as a me\
-ta-)-3.007 F(pre\214x)144 228 Q .884(ed escape sequence.)-.15 F .884
-(The def)5.884 F .884(ault is)-.1 F/F2 10/Times-Italic@0 SF(Of)3.384 E
-(f)-.18 E F0 3.384(,b)C .884(ut readline will set it to)-3.584 F F2(On)
-3.384 E F0 .885(if the locale contains)3.384 F(eight-bit characters.)144
-240 Q F1(page\255completions \(On\))108 252 Q F0 .809(If set to)144 264
-R F1(On)3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2
-(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808
+ta-)-3.007 F(pre\214x)144 660 Q .884(ed escape sequence.)-.15 F .884
+(The def)5.884 F .884(ault is)-.1 F F2(Of)3.384 E(f)-.18 E F0 3.384(,b)C
+.884(ut readline will set it to)-3.584 F F2(On)3.384 E F0 .885
+(if the locale contains)3.384 F(eight-bit characters.)144 672 Q F1
+(page\255completions \(On\))108 684 Q F0 .809(If set to)144 696 R F1(On)
+3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F F2(mor)
+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 276 Q F1
-(print\255completions\255horizontally \(Off\))108 288 Q F0 1.318
-(If set to)144 300 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\
-play completions with matches sorted horizontally in alphabetical)-3.818
-F(order)144 312 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25
-E F1 -2.29 -.18(re v)108 324 T(ert\255all\255at\255newline \(Off\)).08 E
-F0 .699(If set to)144 336 R F1(On)3.199 E F0 3.199(,r)C .699
+(tions at a time.)144 708 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(43)190.395 E 0 Cg EP
+%%Page: 44 44
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(print\255completions\255horizontally \(Off\))108 84 Q F0 .227
+(If set to)144 96 R F1(On)2.727 E F0 2.727(,r)C .227(eadline will displ\
+ay completions with matches sorted horizontally in alphabetical or)
+-2.727 F(-)-.2 E(der)144 108 Q 2.5(,r)-.4 G(ather than do)-2.5 E
+(wn the screen.)-.25 E F1 -2.29 -.18(re v)108 120 T
+(ert\255all\255at\255newline \(Off\)).08 E F0 .699(If set to)144 132 R
+F1(On)3.199 E F0 3.199(,r)C .699
(eadline will undo all changes to history lines before returning when)
--3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 348 S
+-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 144 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 360 S(adline)
-.18 E F0(.)A F1(sho)108 372 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
-F0 .304(This alters the def)144 384 R .304(ault beha)-.1 F .304
+(vidual undo lists across calls to)-.25 F F1 -.18(re)144 156 S(adline)
+.18 E F0(.)A F1(sho)108 168 Q(w\255all\255if\255ambiguous \(Off\))-.1 E
+F0 .304(This alters the def)144 180 R .304(ault beha)-.1 F .304
(vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On)
2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H
(ore).15 E 1.264(than one possible completion cause the matches to be l\
-isted immediately instead of ringing the)144 396 R(bell.)144 408 Q F1
-(sho)108 420 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
-(This alters the def)144 432 R 5.346(ault beha)-.1 F 5.345
+isted immediately instead of ringing the)144 192 R(bell.)144 204 Q F1
+(sho)108 216 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346
+(This alters the def)144 228 R 5.346(ault beha)-.1 F 5.345
(vior of the completion functions in a f)-.2 F 5.345(ashion similar to)
--.1 F F1(sho)144 444 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
+-.1 F F1(sho)144 240 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C
4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691
(ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691
-(ore than one possible completion).15 F 1.04(without an)144 456 R 3.54
+(ore than one possible completion).15 F 1.04(without an)144 252 R 3.54
(yp)-.15 G 1.039
(ossible partial completion \(the possible completions don')-3.54 F
3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\
-es to be listed immediately instead of ringing the bell.)144 468 Q F1
-(sho)108 480 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
-(If set to)144 492 R F1(On)3.521 E F0 3.521(,a)C 1.022
+es to be listed immediately instead of ringing the bell.)144 264 Q F1
+(sho)108 276 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.021
+(If set to)144 288 R F1(On)3.521 E F0 3.521(,a)C 1.022
(dd a string to the be)-3.521 F 1.022
(ginning of the prompt indicating the editing mode: emacs, vi)-.15 F
-(command, or vi insertion.)144 504 Q(The mode strings are user)5 E
-(-settable \(e.g.,)-.2 E F2(emacs\255mode\255string)2.5 E F0(\).)A F1
-(skip\255completed\255text \(Off\))108 516 Q F0 .095(If set to)144 528 R
+(command, or vi insertion.)144 300 Q(The mode strings are user)5 E
+(-settable \(e.g.,)-.2 E/F2 10/Times-Italic@0 SF
+(emacs\255mode\255string)2.5 E F0(\).)A F1
+(skip\255completed\255text \(Off\))108 312 Q F0 .095(If set to)144 324 R
F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095
(ault completion beha)-.1 F .094
-(vior when inserting a single match into the line.)-.2 F(It')144 540 Q
+(vior when inserting a single match into the line.)-.2 F(It')144 336 Q
2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046
(hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1
F .046(enabled, readline does not)2.546 F 1.394(insert characters from \
-the completion that match characters after point in the w)144 552 R
-1.394(ord being com-)-.1 F(pleted, so portions of the w)144 564 Q
+the completion that match characters after point in the w)144 348 R
+1.394(ord being com-)-.1 F(pleted, so portions of the w)144 360 Q
(ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1
-(vi\255cmd\255mode\255string \(\(cmd\)\))108 576 Q F0 .517(If the)144
-588 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
+(vi\255cmd\255mode\255string \(\(cmd\)\))108 372 Q F0 .517(If the)144
+384 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0 -.25(va)3.017 G
.518(riable is enabled, this string is displayed immediately before the)
.25 F .475(last line of the primary prompt when vi editing mode is acti)
-144 600 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
-(The v)5.475 F(alue)-.25 E 1.235(is e)144 612 R 1.235(xpanded lik)-.15 F
-3.735(eak)-.1 G 1.535 -.15(ey b)-3.835 H 1.236
-(inding, so the standard set of meta- and control pre\214x).15 F 1.236
-(es and backslash)-.15 F .315(escape sequences is a)144 624 R -.25(va)
--.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
-.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
-an be used to embed a terminal control sequence into the mode string.)
-144 636 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 648 Q F0 .517
-(If the)144 660 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
+144 396 R .775 -.15(ve a)-.25 H .475(nd in command mode.).15 F .475
+(The v)5.475 F(alue)-.25 E .33(is e)144 408 R .33(xpanded lik)-.15 F
+2.83(eak)-.1 G .63 -.15(ey b)-2.93 H .33
+(inding, so the standard set of meta- and control pre\214x).15 F .33
+(es and backslash es-)-.15 F .245(cape sequences is a)144 420 R -.25(va)
+-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
+.244(gin and end sequences of non-printing)-.15 F(characters, which can\
+ be used to embed a terminal control sequence into the mode string.)144
+432 Q F1(vi\255ins\255mode\255string \(\(ins\)\))108 444 Q F0 .517
+(If the)144 456 R F2(show\255mode\255in\255pr)3.017 E(ompt)-.45 E F0
-.25(va)3.017 G .518
(riable is enabled, this string is displayed immediately before the).25
F .186(last line of the primary prompt when vi editing mode is acti)144
-672 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
-5.186 F .186(alue is)-.25 F -.15(ex)144 684 S 1.929(panded lik).15 F
-4.429(eak)-.1 G 2.229 -.15(ey b)-4.529 H 1.929
-(inding, so the standard set of meta- and control pre\214x).15 F 1.93
-(es and backslash)-.15 F .315(escape sequences is a)144 696 R -.25(va)
--.2 G 2.815(ilable. Use).25 F .314(the \\1 and \\2 escapes to be)2.815 F
-.314(gin and end sequences of non-print-)-.15 F(ing characters, which c\
-an be used to embed a terminal control sequence into the mode string.)
-144 708 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(43)188.455 E 0
-Cg EP
-%%Page: 44 44
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(visible\255stats \(Off\))108 84 Q F0 .846(If set to)144 96 R F1(On)
-3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346
-(st)-.55 G .846(ype as reported by)-3.346 F/F2 10/Times-Italic@0 SF
-(stat)3.346 E F0 .846(\(2\) is appended to the \214lename)B
-(when listing possible completions.)144 108 Q F1
-(Readline Conditional Constructs)87 124.8 Q F0 .05
-(Readline implements a f)108 136.8 R .05(acility similar in spirit to t\
+468 R .486 -.15(ve a)-.25 H .186(nd in insertion mode.).15 F .186(The v)
+5.186 F .186(alue is)-.25 F -.15(ex)144 480 S .923(panded lik).15 F
+3.423(eak)-.1 G 1.223 -.15(ey b)-3.523 H .924
+(inding, so the standard set of meta- and control pre\214x).15 F .924
+(es and backslash es-)-.15 F .245(cape sequences is a)144 492 R -.25(va)
+-.2 G 2.745(ilable. Use).25 F .244(the \\1 and \\2 escapes to be)2.745 F
+.244(gin and end sequences of non-printing)-.15 F(characters, which can\
+ be used to embed a terminal control sequence into the mode string.)144
+504 Q F1(visible\255stats \(Off\))108 516 Q F0 .846(If set to)144 528 R
+F1(On)3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F
+3.346(st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846
+(\(2\) is appended to the \214lename)B
+(when listing possible completions.)144 540 Q F1
+(Readline Conditional Constructs)87 556.8 Q F0 .05
+(Readline implements a f)108 568.8 R .05(acility similar in spirit to t\
he conditional compilation features of the C preprocessor)-.1 F .096
-(which allo)108 148.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096
+(which allo)108 580.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096
(indings and v).15 F .096
(ariable settings to be performed as the result of tests.)-.25 F .097
-(There are four parser)5.096 F(directi)108 160.8 Q -.15(ve)-.25 G 2.5
-(su).15 G(sed.)-2.5 E F1($if)108 177.6 Q F0(The)144 177.6 Q F1($if)2.963
+(There are four parser)5.096 F(directi)108 592.8 Q -.15(ve)-.25 G 2.5
+(su).15 G(sed.)-2.5 E F1($if)108 609.6 Q F0(The)144 609.6 Q F1($if)2.963
E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\
he editing mode, the terminal being used,)-.25 F
-(or the application using readline.)144 189.6 Q(The te)5 E
+(or the application using readline.)144 621.6 Q(The te)5 E
(xt of the test, after an)-.15 E 2.5(yc)-.15 G(omparison operator)-2.5 E
-(,)-.4 E -.15(ex)146.5 201.6 S(tends to the end of the line; unless oth\
+(,)-.4 E -.15(ex)146.5 633.6 S(tends to the end of the line; unless oth\
erwise noted, no characters are required to isolate it.).15 E F1(mode)
-144 218.4 Q F0(The)180 218.4 Q F1(mode=)3.711 E F0 1.211(form of the)
+144 650.4 Q F0(The)180 650.4 Q F1(mode=)3.711 E F0 1.211(form of the)
3.711 F F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711
(su).15 G 1.211(sed to test whether readline is in emacs or vi)-3.711 F
-3.065(mode. This)180 230.4 R .565(may be used in conjunction with the)
+3.065(mode. This)180 662.4 R .565(may be used in conjunction with the)
3.065 F F1 .565(set k)3.065 F(eymap)-.1 E F0 .565
-(command, for instance, to)3.065 F .735(set bindings in the)180 242.4 R
+(command, for instance, to)3.065 F .735(set bindings in the)180 674.4 R
F2(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)
3.235 E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F
-(out in emacs mode.)180 254.4 Q F1(term)144 271.2 Q F0(The)180 271.2 Q
+(out in emacs mode.)180 686.4 Q F1(term)144 703.2 Q F0(The)180 703.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 283.2 R
+(ey b)-.1 H .696(indings, perhaps to bind).15 F .654(the k)180 715.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 295.2 Q F1(=)3.232
+(wo)3.154 G .654(rd on the right side of).1 F(the)180 727.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
-307.2 Q F1<ad>2.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0
-(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0
-2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 324 S(rsion).1 E F0(The)
-180 336 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608
+minal and the portion of the terminal)-.05 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(44)190.395 E 0 Cg EP
+%%Page: 45 45
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
+(name before the \214rst)180 84 Q/F1 10/Times-Bold@0 SF<ad>2.5 E F0 5
+(.T)C(his allo)-5 E(ws)-.25 E/F2 10/Times-Italic@0 SF(sun)2.84 E F0
+(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.84 E
+F0 2.5(,f).77 G(or instance.)-2.5 E F1 -.1(ve)144 100.8 S(rsion).1 E F0
+(The)180 112.8 Q F1 -.1(ve)3.108 G(rsion).1 E F0 .608
(test may be used to perform comparisons ag)3.108 F .609
-(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 348 Q F1 -.1
-(ve)3.929 G(rsion).1 E F0 -.15(ex)3.929 G 1.428
-(pands to the current readline v).15 F 3.928(ersion. The)-.15 F 1.428
-(set of comparison operators)3.928 F(includes)180 360 Q F1(=)2.605 E F0
-2.605(,\()C(and)-2.605 E F1(==)2.606 E F0(\),)A F1(!=)2.606 E F0(,)A F1
-(<=)2.606 E F0(,)A F1(>=)2.606 E F0(,)A F1(<)2.606 E F0 2.606(,a)C(nd)
--2.606 E F1(>)2.606 E F0 5.106(.T)C .106(he v)-5.106 F .106
-(ersion number supplied on the right side)-.15 F 1.472
-(of the operator consists of a major v)180 372 R 1.471(ersion number)
--.15 F 3.971(,a)-.4 G 3.971(no)-3.971 G 1.471
-(ptional decimal point, and an)-3.971 F .766(optional minor v)180 384 R
-.766(ersion \(e.g.,)-.15 F F1(7.1)3.266 E F0 .766(\). If the minor v)B
-.766(ersion is omitted, it is assumed to be)-.15 F F1(0)3.267 E F0(.)A
-1.756(The operator may be separated from the string)180 396 R F1 -.1(ve)
-4.255 G(rsion).1 E F0 1.755(and from the v)4.255 F 1.755(ersion number)
--.15 F(ar)180 408 Q(gument by whitespace.)-.18 E F1(application)144
-424.8 Q F0(The)180 436.8 Q F1(application)3.003 E F0 .503
-(construct is used to include application-speci\214c settings.)3.003 F
-.503(Each program)5.503 F .114(using the readline library sets the)180
-448.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
+(ainst speci\214c readline v)-.05 F(ersions.)-.15 E(The)180 124.8 Q F1
+-.1(ve)2.772 G(rsion).1 E F0 -.15(ex)2.772 G .272
+(pands to the current readline v).15 F 2.771(ersion. The)-.15 F .271
+(set of comparison operators in-)2.771 F(cludes)180 136.8 Q F1(=)3.063 E
+F0 3.063(,\()C(and)-3.063 E F1(==)3.063 E F0(\),)A F1(!=)3.063 E F0(,)A
+F1(<=)3.063 E F0(,)A F1(>=)3.063 E F0(,)A F1(<)3.063 E F0 3.063(,a)C(nd)
+-3.063 E F1(>)3.064 E F0 5.564(.T)C .564(he v)-5.564 F .564
+(ersion number supplied on the right side)-.15 F .318
+(of the operator consists of a major v)180 148.8 R .318(ersion number)
+-.15 F 2.818(,a)-.4 G 2.818(no)-2.818 G .318
+(ptional decimal point, and an op-)-2.818 F .1(tional minor v)180 160.8
+R .1(ersion \(e.g.,)-.15 F F1(7.1)2.6 E F0 .1(\). If the minor v)B .101
+(ersion is omitted, it is assumed to be)-.15 F F1(0)2.601 E F0 5.101(.T)
+C(he)-5.101 E .06(operator may be separated from the string)180 172.8 R
+F1 -.1(ve)2.56 G(rsion).1 E F0 .06(and from the v)2.56 F .06
+(ersion number ar)-.15 F(gument)-.18 E(by whitespace.)180 184.8 Q F1
+(application)144 201.6 Q F0(The)180 213.6 Q F1(application)3.003 E F0
+.503(construct is used to include application-speci\214c settings.)3.003
+F .503(Each program)5.503 F .114(using the readline library sets the)180
+225.6 R F2 .114(application name)2.614 F F0 2.614(,a)C .114
(nd an initialization \214le can test for a)-2.614 F .5(particular v)180
-460.8 R 3(alue. This)-.25 F .501(could be used to bind k)3 F .801 -.15
+237.6 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 472.8 R -.15(Fo)5.397 G 2.896(ri).15 G .396
+(ci\214c program.)180 249.6 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 484.8
-Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 508.8 Q F0
-(Bash)2.5 E 2.5(#Q)180 520.8 S(uote the current or pre)-2.5 E(vious w)
--.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 532.8 Q F1($endif)180
-544.8 Q F2(variable)144 561.6 Q F0(The)180 573.6 Q F2(variable)3.776 E
+(ey s)-.1 H .396(equence that quotes the).15 F(current or pre)180 261.6
+Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 285.6 Q F0
+(Bash)2.5 E 2.5(#Q)180 297.6 S(uote the current or pre)-2.5 E(vious w)
+-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 309.6 Q F1($endif)180
+321.6 Q F2(variable)144 338.4 Q F0(The)180 350.4 Q F2(variable)3.776 E
F0 1.276(construct pro)3.776 F 1.276
(vides simple equality tests for readline v)-.15 F 1.277(ariables and v)
-.25 F(alues.)-.25 E .08(The permitted comparison operators are)180
-585.6 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
+362.4 R F2(=)2.579 E F0(,)A F2(==)2.579 E F0 2.579(,a)C(nd)-2.579 E F2
(!=)2.579 E F0 5.079(.T)C .079(he v)-5.079 F .079
(ariable name must be sepa-)-.25 F .98(rated from the comparison operat\
-or by whitespace; the operator may be separated from)180 597.6 R .13
-(the v)180 609.6 R .13(alue on the right hand side by whitespace.)-.25 F
+or by whitespace; the operator may be separated from)180 374.4 R .13
+(the v)180 386.4 R .13(alue on the right hand side by whitespace.)-.25 F
.129(Both string and boolean v)5.129 F .129(ariables may be)-.25 F
-(tested. Boolean v)180 621.6 Q(ariables must be tested ag)-.25 E
+(tested. Boolean v)180 398.4 Q(ariables must be tested ag)-.25 E
(ainst the v)-.05 E(alues)-.25 E F2(on)2.5 E F0(and)2.5 E F2(of)2.5 E(f)
--.18 E F0(.)A F1($endif)108 638.4 Q F0(This command, as seen in the pre)
-144 638.4 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
-(command.)2.5 E F1($else)108 655.2 Q F0(Commands in this branch of the)
-144 655.2 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E
--.15(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 672
-Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356
+-.18 E F0(.)A F1($endif)108 415.2 Q F0(This command, as seen in the pre)
+144 415.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0
+(command.)2.5 E F1($else)108 432 Q F0(Commands in this branch of the)144
+432 Q F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15
+(xe)-.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 448.8 Q
+F0 .356(This directi)144 460.8 R .656 -.15(ve t)-.25 H(ak).15 E .356
(es a single \214lename as an ar)-.1 F .357
(gument and reads commands and bindings from that)-.18 F 2.5(\214le. F)
-144 696 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
+144 472.8 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3
-.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1
-($include)144 720 Q F2(/etc/inputr)5.833 E(c)-.37 E F0(GNU Bash 5.0)72
-768 Q(2018 December 7)139.295 E(44)188.455 E 0 Cg EP
-%%Page: 45 45
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(Sear)87 84 Q(ching)-.18 E F0 .835(Readline pro)108 96 R .835
+($include)144 496.8 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 513.6 Q
+(ching)-.18 E F0 .835(Readline pro)108 525.6 R .835
(vides commands for searching through the command history \(see)-.15 F
-/F2 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E
-.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 108 Q
-(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E/F3 10/Times-Italic@0
-SF(incr)2.51 E(emental)-.37 E F0(and)3.01 E F3(non-incr)2.5 E(emental)
--.37 E F0(.).51 E .697(Incremental searches be)108 124.8 R .697
+/F3 9/Times-Bold@0 SF(HIST)3.334 E(OR)-.162 E(Y)-.315 E F0(belo)3.084 E
+.834(w\) for lines)-.25 F(containing a speci\214ed string.)108 537.6 Q
+(There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E
+(emental)-.37 E F0(and)3.01 E F2(non-incr)2.86 E(emental)-.37 E F0(.).51
+E .697(Incremental searches be)108 554.4 R .697
(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 136.8 R .112
+(search string is typed, readline displays the ne)108 566.4 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 148.8 R 3.042(yc)-.15 G
+(incremental search requires only as man)108 578.4 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 160.8 R .224(alue of the)-.25 F F1(isear)
+(acters present in the v)108 590.4 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 172.8 R .66(ariable has not been assigned a v)-.25 F .66
+(If that v)108 602.4 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 184.8 R .096(Control-G will abort an incremen\
+F .097(mental search.)108 614.4 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 196.8 Q 2.938 -.8(To \214)
-108 213.6 T 1.339(nd other matching entries in the history list, type C\
+e search string becomes the current line.)108 626.4 Q 2.938 -.8(To \214)
+108 643.2 T 1.339(nd other matching entries in the history list, type C\
ontrol-S or Control-R as appropriate.).8 F 1.339(This will)6.339 F .675
-(search backw)108 225.6 R .675(ard or forw)-.1 F .675
+(search backw)108 655.2 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 237.6 R .474 -.15(ey s)-.1
+(.A)-.55 G -.15(ny)-5.674 G .174(other k)108 667.2 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 249.6 R F3(ne)3.041 E(wline)-.15 E F0 .541
+.541(instance, a)108 679.2 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 261.6
-Q .653(Readline remembers the last incremental search string.)108 278.4
-R .653(If tw)5.653 F 3.153(oC)-.1 G .653(ontrol-Rs are typed without an)
+(xe)-.15 G .54(cuting the command from the).15 F(history list.)108 691.2
+Q .653(Readline remembers the last incremental search string.)108 708 R
+.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 290.4 Q 2.5(ws)-.25 G
+(ing characters de\214ning a ne)108 720 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 307.2 R(The searc\
-h string may be typed by the user or be part of the contents of the cur\
-rent line.)108 319.2 Q F1(Readline Command Names)87 336 Q F0 1.391
-(The follo)108 348 R 1.391
+-2.5 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(45)190.395 E 0 Cg
+EP
+%%Page: 46 46
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .567(Non-incremen\
+tal searches read the entire search string before starting to search fo\
+r matching history lines.)108 84 R(The search string may be typed by th\
+e user or be part of the contents of the current line.)108 96 Q/F1 10
+/Times-Bold@0 SF(Readline Command Names)87 112.8 Q F0 1.391(The follo)
+108 124.8 R 1.391
(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 360 R .122
+3.892(ya)-.15 G(re)-3.892 E 2.622(bound. Command)108 136.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 372 Q F3(point)3.41 E
-F0 .91(refers to the current cursor position, and)3.41 F F3(mark)3.411 E
-F0 .911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db)
-.15 G 3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 384 Q F0 2.5
+(the follo)2.621 F(wing)-.25 E(descriptions,)108 148.8 Q/F2 10
+/Times-Italic@0 SF(point)3.41 E F0 .91
+(refers to the current cursor position, and)3.41 F F2(mark)3.411 E F0
+.911(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.411(db).15 G
+3.411(yt)-3.411 G(he)-3.411 E F1(set\255mark)108 160.8 Q F0 2.5
(command. The)2.5 F(te)2.5 E
-(xt between the point and mark is referred to as the)-.15 E F3 -.37(re)
-2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 400.8 Q(or Mo)-.25 E(ving)-.1
-E(beginning\255of\255line \(C\255a\))108 412.8 Q F0(Mo)144 424.8 Q .3
+(xt between the point and mark is referred to as the)-.15 E F2 -.37(re)
+2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 177.6 Q(or Mo)-.25 E(ving)-.1
+E(beginning\255of\255line \(C\255a\))108 189.6 Q F0(Mo)144 201.6 Q .3
-.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 436.8 Q F0(Mo)144 448.8 Q .3 -.15
+(end\255of\255line \(C\255e\))108 213.6 Q F0(Mo)144 225.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
-460.8 S(rward\255char \(C\255f\)).25 E F0(Mo)144 472.8 Q .3 -.15(ve f)
+237.6 S(rward\255char \(C\255f\)).25 E F0(Mo)144 249.6 Q .3 -.15(ve f)
-.15 H(orw).15 E(ard a character)-.1 E(.)-.55 E F1
-(backward\255char \(C\255b\))108 484.8 Q F0(Mo)144 496.8 Q .3 -.15(ve b)
--.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 508.8 S(rward\255w)
-.25 E(ord \(M\255f\))-.1 E F0(Mo)144 520.8 Q .823 -.15(ve f)-.15 H(orw)
+(backward\255char \(C\255b\))108 261.6 Q F0(Mo)144 273.6 Q .3 -.15(ve b)
+-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 285.6 S(rward\255w)
+.25 E(ord \(M\255f\))-.1 E F0(Mo)144 297.6 Q .823 -.15(ve f)-.15 H(orw)
.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 532.8 Q F1(backward\255w)108 544.8 Q
-(ord \(M\255b\))-.1 E F0(Mo)144 556.8 Q 1.71 -.15(ve b)-.15 H 1.41
+(ters and digits\).)144 309.6 Q F1(backward\255w)108 321.6 Q
+(ord \(M\255b\))-.1 E F0(Mo)144 333.6 Q 1.71 -.15(ve b)-.15 H 1.41
(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 568.8 Q F1(shell\255f)108 580.8
-Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 592.8 Q .784 -.15(ve f)-.15 H
+(characters \(letters and digits\).)144 345.6 Q F1(shell\255f)108 357.6
+Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 369.6 Q .784 -.15(ve f)-.15 H
(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 604.8 Q F1(shell\255backward\255w)108 616.8 Q(ord)-.1 E
-F0(Mo)144 628.8 Q .908 -.15(ve b)-.15 H .609
+-.8 F(ters.)144 381.6 Q F1(shell\255backward\255w)108 393.6 Q(ord)-.1 E
+F0(Mo)144 405.6 Q .908 -.15(ve b)-.15 H .609
(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109
(ord. W)-.1 F .609(ords are delimited by non-quoted shell)-.8 F
-(metacharacters.)144 640.8 Q F1(pr)108 652.8 Q -.15(ev)-.18 G
-(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 664.8 R
+(metacharacters.)144 417.6 Q F1(pr)108 429.6 Q -.15(ev)-.18 G
+(ious\255scr).15 E(een\255line)-.18 E F0 .891(Attempt to mo)144 441.6 R
1.191 -.15(ve p)-.15 H .891(oint to the same ph).15 F .891
(ysical screen column on the pre)-.05 F .89(vious ph)-.25 F .89
-(ysical screen line.)-.05 F .87(This will not ha)144 676.8 R 1.17 -.15
+(ysical screen line.)-.05 F .87(This will not ha)144 453.6 R 1.17 -.15
(ve t)-.2 H .87(he desired ef).15 F .87
(fect if the current Readline line does not tak)-.25 F 3.37(eu)-.1 G
-3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 688.8 Q(ysical line or \
+3.37(pm)-3.37 G .87(ore than one)-3.37 F(ph)144 465.6 Q(ysical line or \
if point is not greater than the length of the prompt plus the screen w\
-idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638
-(Attempt to mo)144 712.8 R .938 -.15(ve p)-.15 H .638
+idth.)-.05 E F1(next\255scr)108 477.6 Q(een\255line)-.18 E F0 .638
+(Attempt to mo)144 489.6 R .938 -.15(ve p)-.15 H .638
(oint to the same ph).15 F .637(ysical screen column on the ne)-.05 F
.637(xt ph)-.15 F .637(ysical screen line. This)-.05 F .008(will not ha)
-144 724.8 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009
+144 501.6 R .309 -.15(ve t)-.2 H .009(he desired ef).15 F .009
(fect if the current Readline line does not tak)-.25 F 2.509(eu)-.1 G
-2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(45)188.455 E 0 Cg EP
-%%Page: 46 46
+2.509(pm)-2.509 G .009(ore than one ph)-2.509 F(ysical)-.05 E .772(line\
+ or if the length of the current Readline line is not greater than the \
+length of the prompt plus)144 513.6 R(the screen width.)144 525.6 Q F1
+(clear\255display \(M\255C\255l\))108 537.6 Q F0 1.498
+(Clear the screen and, if possible, the terminal')144 549.6 R 3.999(ss)
+-.55 G 1.499(crollback b)-3.999 F(uf)-.2 E(fer)-.25 E 3.999(,t)-.4 G
+1.499(hen redra)-3.999 F 3.999(wt)-.15 G 1.499(he current line,)-3.999 F
+(lea)144 561.6 Q(ving the current line at the top of the screen.)-.2 E
+F1(clear\255scr)108 573.6 Q(een \(C\255l\))-.18 E F0 1.36
+(Clear the screen, then redra)144 585.6 R 3.86(wt)-.15 G 1.36
+(he current line, lea)-3.86 F 1.36
+(ving the current line at the top of the screen.)-.2 F -.4(Wi)144 597.6
+S(th an ar).4 E
+(gument, refresh the current line without clearing the screen.)-.18 E F1
+-.18(re)108 609.6 S(draw\255curr).18 E(ent\255line)-.18 E F0
+(Refresh the current line.)144 621.6 Q F1(Commands f)87 638.4 Q
+(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108
+650.4 Q(n\))-.15 E F0 .158(Accept the line re)144 662.4 R -.05(ga)-.15 G
+.158(rdless of where the cursor is.).05 F .158
+(If this line is non-empty)5.158 F 2.659(,a)-.65 G .159
+(dd it to the history list)-2.659 F .699(according to the state of the)
+144 674.4 R/F3 9/Times-Bold@0 SF(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)
+2.949 G 3.199(riable. If).25 F .699
+(the line is a modi\214ed history line, then)3.199 F
+(restore the history line to its original state.)144 686.4 Q F1(pr)108
+698.4 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
+(Fetch the pre)144 710.4 Q(vious command from the history list, mo)-.25
+E(ving back in the list.)-.15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(46)190.395 E 0 Cg EP
+%%Page: 47 47
%%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 .772(line or if t\
-he length of the current Readline line is not greater than the length o\
-f the prompt plus)144 84 R(the screen width.)144 96 Q/F1 10/Times-Bold@0
-SF(clear\255scr)108 108 Q(een \(C\255l\))-.18 E F0 .993
-(Clear the screen lea)144 120 R .993
-(ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G
-.993(th an ar).4 F .993(gument, refresh the)-.18 F
-(current line without clearing the screen.)144 132 Q F1 -.18(re)108 144
-S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144
-156 Q F1(Commands f)87 172.8 Q(or Manipulating the History)-.25 E
-(accept\255line \(Newline, Retur)108 184.8 Q(n\))-.15 E F0 .159
-(Accept the line re)144 196.8 R -.05(ga)-.15 G .159
-(rdless of where the cursor is.).05 F .158(If this line is non-empty)
-5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699
-(according to the state of the)144 208.8 R/F2 9/Times-Bold@0 SF
-(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F
-.699(the line is a modi\214ed history line, then)3.199 F
-(restore the history line to its original state.)144 220.8 Q F1(pr)108
-232.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0
-(Fetch the pre)144 244.8 Q(vious command from the history list, mo)-.25
-E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 256.8
-Q F0(Fetch the ne)144 268.8 Q(xt command from the history list, mo)-.15
-E(ving forw)-.15 E(ard in the list.)-.1 E F1
-(beginning\255of\255history \(M\255<\))108 280.8 Q F0(Mo)144 292.8 Q .3
--.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.)
--.65 E F1(end\255of\255history \(M\255>\))108 304.8 Q F0(Mo)144 316.8 Q
-.3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5
-(,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18
-(re v)108 328.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0
-1.471(Search backw)144 340.8 R 1.471
-(ard starting at the current line and mo)-.1 F 1.47
-(ving `up' through the history as necessary)-.15 F(.)-.65 E
-(This is an incremental search.)144 352.8 Q F1 -.25(fo)108 364.8 S
-(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131
-(Search forw)144 376.8 R 1.131(ard starting at the current line and mo)
--.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary)
--.25 F(.)-.65 E(This is an incremental search.)144 388.8 Q F1
-(non\255incr)108 400.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H
-(rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw)
-144 412.8 R .164(ard through the history starting at the current line u\
-sing a non-incremental search for)-.1 F 2.5(as)144 424.8 S
-(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 436.8 Q
-(emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18
-E F0 1.353(Search forw)144 448.8 R 1.354(ard through the history using \
-a non-incremental search for a string supplied by the)-.1 F(user)144
-460.8 Q(.)-.55 E F1(history\255sear)108 472.8 Q(ch\255f)-.18 E(orward)
--.25 E F0 .249(Search forw)144 484.8 R .249(ard through the history for\
- the string of characters between the start of the current line)-.1 F
-(and the point.)144 496.8 Q(This is a non-incremental search.)5 E F1
-(history\255sear)108 508.8 Q(ch\255backward)-.18 E F0 .95(Search backw)
-144 520.8 R .951(ard through the history for the string of characters b\
-etween the start of the current)-.1 F(line and the point.)144 532.8 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(next\255history \(C\255n\))108 84 Q F0(Fetch the ne)144 96 Q
+(xt command from the history list, mo)-.15 E(ving forw)-.15 E
+(ard in the list.)-.1 E F1(beginning\255of\255history \(M\255<\))108 108
+Q F0(Mo)144 120 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G
+(he \214rst line in the history)-2.5 E(.)-.65 E F1
+(end\255of\255history \(M\255>\))108 132 Q F0(Mo)144 144 Q .3 -.15(ve t)
+-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5(,i)-.65 G
+(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18(re v)108
+156 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 1.47
+(Search backw)144 168 R 1.471(ard starting at the current line and mo)
+-.1 F 1.471(ving `up' through the history as necessary)-.15 F(.)-.65 E
+(This is an incremental search.)144 180 Q F1 -.25(fo)108 192 S
+(rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.132
+(Search forw)144 204 R 1.132(ard starting at the current line and mo)-.1
+F 1.131(ving `do)-.15 F 1.131(wn' through the history as necessary)-.25
+F(.)-.65 E(This is an incremental search.)144 216 Q F1(non\255incr)108
+228 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H(rse\255sear).15 E
+(ch\255history \(M\255p\))-.18 E F0 .164(Search backw)144 240 R .164(ar\
+d through the history starting at the current line using a non-incremen\
+tal search for)-.1 F 2.5(as)144 252 S(tring supplied by the user)-2.5 E
+(.)-.55 E F1(non\255incr)108 264 Q(emental\255f)-.18 E(orward\255sear)
+-.25 E(ch\255history \(M\255n\))-.18 E F0 1.354(Search forw)144 276 R
+1.354(ard through the history using a non-incremental search for a stri\
+ng supplied by the)-.1 F(user)144 288 Q(.)-.55 E F1(history\255sear)108
+300 Q(ch\255f)-.18 E(orward)-.25 E F0 .248(Search forw)144 312 R .249(a\
+rd through the history for the string of characters between the start o\
+f the current line)-.1 F(and the point.)144 324 Q
+(This is a non-incremental search.)5 E F1(history\255sear)108 336 Q
+(ch\255backward)-.18 E F0 .951(Search backw)144 348 R .951(ard through \
+the history for the string of characters between the start of the curre\
+nt)-.1 F(line and the point.)144 360 Q
(This is a non-incremental search.)5 E F1(history\255substring\255sear)
-108 544.8 Q(ch\255backward)-.18 E F0 .951(Search backw)144 556.8 R .951
-(ard through the history for the string of characters between the start\
- of the current)-.1 F .007(line and the current cursor position \(the)
-144 568.8 R/F3 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B
-.007(search string may match an)2.507 F .007(ywhere in a history)-.15 F
-2.5(line. This)144 580.8 R(is a non-incremental search.)2.5 E F1
-(history\255substring\255sear)108 592.8 Q(ch\255f)-.18 E(orward)-.25 E
-F0 .249(Search forw)144 604.8 R .249(ard through the history for the st\
-ring of characters between the start of the current line)-.1 F .318
-(and the point.)144 616.8 R .319(The search string may match an)5.318 F
-.319(ywhere in a history line.)-.15 F .319(This is a non-incremental)
-5.319 F(search.)144 628.8 Q F1(yank\255nth\255ar)108 640.8 Q 2.5(g\()-.1
-G<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 652.8 R .622
+108 372 Q(ch\255backward)-.18 E F0 .95(Search backw)144 384 R .951(ard \
+through the history for the string of characters between the start of t\
+he current)-.1 F .007(line and the current cursor position \(the)144 396
+R/F2 10/Times-Italic@0 SF(point)2.507 E F0 2.507(\). The)B .007
+(search string may match an)2.507 F .006(ywhere in a history)-.15 F 2.5
+(line. This)144 408 R(is a non-incremental search.)2.5 E F1
+(history\255substring\255sear)108 420 Q(ch\255f)-.18 E(orward)-.25 E F0
+.248(Search forw)144 432 R .249(ard through the history for the string \
+of characters between the start of the current line)-.1 F .319
+(and the point.)144 444 R .319(The search string may match an)5.319 F
+.319(ywhere in a history line.)-.15 F .318(This is a non-incremental)
+5.318 F(search.)144 456 Q F1(yank\255nth\255ar)108 468 Q 2.5(g\()-.1 G
+<4dad43ad7929>-2.5 E F0 .622(Insert the \214rst ar)144 480 R .622
(gument to the pre)-.18 F .622(vious command \(usually the second w)-.25
-F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144
-664.8 R -.4(Wi)5.794 G .794(th an ar).4 F(gument)-.18 E F3(n)3.294 E F0
-3.294(,i).24 G .794(nsert the)-3.294 F F3(n)3.294 E F0 .794(th w)B .794
-(ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795
-(ords in the)-.1 F(pre)144 676.8 Q .292(vious command be)-.25 F .292
+F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .773(at point.)144
+492 R -.4(Wi)5.773 G .773(th an ar).4 F(gument)-.18 E F2(n)3.633 E F0
+3.273(,i).24 G .773(nsert the)-3.273 F F2(n)3.273 E F0 .773(th w)B .773
+(ord from the pre)-.1 F .773(vious command \(the w)-.25 F .773
+(ords in the)-.1 F(pre)144 504 Q .291(vious command be)-.25 F .291
(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 .291
-(ord from the end of)-.1 F .281(the pre)144 688.8 R .281(vious command.)
--.25 F .281(Once the ar)5.281 F(gument)-.18 E F3(n)2.781 E F0 .281
-(is computed, the ar)2.781 F .281(gument is e)-.18 F .282
-(xtracted as if the "!)-.15 F F3(n)A F0(")A(history e)144 700.8 Q
-(xpansion had been speci\214ed.)-.15 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(46)188.455 E 0 Cg EP
-%%Page: 47 47
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(yank\255last\255ar)108 84 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F
--1.667(M\255_ \))2.5 F F0 1.308(Insert the last ar)144 96 R 1.308
-(gument to the pre)-.18 F 1.307(vious command \(the last w)-.25 F 1.307
-(ord of the pre)-.1 F 1.307(vious history entry\).)-.25 F -.4(Wi)144 108
-S .203(th a numeric ar).4 F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2
-H .204(actly lik).15 F(e)-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0
-5.204(.S)C(uccessi)-5.204 E .504 -.15(ve c)-.25 H .204(alls to).15 F F1
-(yank\255last\255ar)2.704 E(g)-.1 E F0(mo)144 120 Q .807 -.15(ve b)-.15
-H .507(ack through the history list, inserting the last w).15 F .507
+(ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .292
+(ord from the end of)-.1 F .282(the pre)144 516 R .282(vious command.)
+-.25 F .282(Once the ar)5.282 F(gument)-.18 E F2(n)2.781 E F0 .281
+(is computed, the ar)2.781 F .281(gument is e)-.18 F .281
+(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 528 Q
+(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 540 Q
+2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.307
+(Insert the last ar)144 552 R 1.307(gument to the pre)-.18 F 1.307
+(vious command \(the last w)-.25 F 1.308(ord of the pre)-.1 F 1.308
+(vious history entry\).)-.25 F -.4(Wi)144 564 S .204(th a numeric ar).4
+F .204(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e)
+-.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.203(.S)C(uccessi)-5.203
+E .503 -.15(ve c)-.25 H .203(alls to).15 F F1(yank\255last\255ar)2.703 E
+(g)-.1 E F0(mo)144 576 Q .806 -.15(ve b)-.15 H .507
+(ack through the history list, inserting the last w).15 F .507
(ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E
-1.396(to the \214rst call\) of each line in turn.)144 132 R(An)6.396 E
-3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397
-(gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls)
-.15 E .492(determines the direction to mo)144 144 R .792 -.15(ve t)-.15
-H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G
-(ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491
+.416(to the \214rst call\) of each line in turn.)144 588 R(An)5.416 E
+2.916(yn)-.15 G .416(umeric ar)-2.916 F .416
+(gument supplied to these successi)-.18 F .715 -.15(ve c)-.25 H .415
+(alls de-).15 F 1.217(termines the direction to mo)144 600 R 1.518 -.15
+(ve t)-.15 H 1.218(hrough the history).15 F 6.218(.A)-.65 G(ne)-2.5 E
+-.05(ga)-.15 G(ti).05 E 1.518 -.15(ve a)-.25 H -.18(rg).15 G 1.218
(ument switches the direction).18 F .494
-(through the history \(back or forw)144 156 R 2.994(ard\). The)-.1 F
+(through the history \(back or forw)144 612 R 2.994(ard\). The)-.1 F
.494(history e)2.994 F .494(xpansion f)-.15 F .494
(acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144
-168 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.)
--.15 E F1(shell\255expand\255line \(M\255C\255e\))108 180 Q F0 .623
-(Expand the line as the shell does.)144 192 R .622
-(This performs alias and history e)5.622 F .622
-(xpansion as well as all of the)-.15 F(shell w)144 204 Q(ord e)-.1 E 2.5
-(xpansions. See)-.15 F/F2 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25
+624 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.)
+-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 636 Q F0 .622
+(Expand the line as the shell does.)144 648 R .622
+(This performs alias and history e)5.622 F .623
+(xpansion as well as all of the)-.15 F(shell w)144 660 Q(ord e)-.1 E 2.5
+(xpansions. See)-.15 F/F3 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25
(YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G
(or a description of history e)-2.5 E(xpansion.)-.15 E F1
-(history\255expand\255line \(M\255^\))108 216 Q F0 .938
-(Perform history e)144 228 R .939(xpansion on the current line.)-.15 F
-(See)5.939 E F2(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E
-(ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-)
--3.439 F(tion of history e)144 240 Q(xpansion.)-.15 E F1(magic\255space)
-108 252 Q F0 1.627(Perform history e)144 264 R 1.627
-(xpansion on the current line and insert a space.)-.15 F(See)6.626 E F2
-(HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0
-(belo)144 276 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E
-(xpansion.)-.15 E F1(alias\255expand\255line)108 288 Q F0 .394
-(Perform alias e)144 300 R .394(xpansion on the current line.)-.15 F
-(See)5.395 E F2(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H
-.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 312 Q F1
-(history\255and\255alias\255expand\255line)108 324 Q F0
-(Perform history and alias e)144 336 Q(xpansion on the current line.)
--.15 E F1(insert\255last\255ar)108 348 Q(gument \(M\255.)-.1 E 2.5(,M)
-.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 360 S(ynon)-2.5 E(ym for)
+(history\255expand\255line \(M\255^\))108 672 Q F0 .939
+(Perform history e)144 684 R .939(xpansion on the current line.)-.15 F
+(See)5.939 E F3(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E
+(ANSION)-.666 E F0(belo)3.189 E 3.438(wf)-.25 G .938(or a descrip-)
+-3.438 F(tion of history e)144 696 Q(xpansion.)-.15 E(GNU Bash 5.1)72
+768 Q(2020 October 29)141.235 E(47)190.395 E 0 Cg EP
+%%Page: 48 48
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(magic\255space)108 84 Q F0 .437(Perform history e)144 96 R .437
+(xpansion on the current line and insert a space.)-.15 F(See)5.438 E/F2
+9/Times-Bold@0 SF(HIST)2.938 E(OR)-.162 E 2.688(YE)-.315 G(XP)-2.688 E
+(ANSION)-.666 E F0(be-)2.688 E(lo)144 108 Q 2.5(wf)-.25 G
+(or a description of history e)-2.5 E(xpansion.)-.15 E F1
+(alias\255expand\255line)108 120 Q F0 .395(Perform alias e)144 132 R
+.395(xpansion on the current line.)-.15 F(See)5.395 E F2(ALIASES)2.895 E
+F0(abo)2.645 E .694 -.15(ve f)-.15 H .394(or a description of alias e)
+.15 F(xpan-)-.15 E(sion.)144 144 Q F1
+(history\255and\255alias\255expand\255line)108 156 Q F0
+(Perform history and alias e)144 168 Q(xpansion on the current line.)
+-.15 E F1(insert\255last\255ar)108 180 Q(gument \(M\255.)-.1 E 2.5(,M)
+.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 192 S(ynon)-2.5 E(ym for)
-.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1
-(operate\255and\255get\255next \(C\255o\))108 372 Q F0 .948
-(Accept the current line for e)144 384 R -.15(xe)-.15 G .948
-(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15
-(ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F .729
-(history for editing.)144 396 R 3.229(An)5.729 G .729(umeric ar)-3.229 F
+(operate\255and\255get\255next \(C\255o\))108 204 Q F0 .947
+(Accept the current line for e)144 216 R -.15(xe)-.15 G .948
+(cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.248 -.15
+(ve t)-.25 H 3.448(ot).15 G .948(he current line from the)-3.448 F .73
+(history for editing.)144 228 R 3.23(An)5.73 G .73(umeric ar)-3.23 F
.729
(gument, if supplied, speci\214es the history entry to use instead of)
--.18 F(the current line.)144 408 Q F1
-(edit\255and\255execute\255command \(C\255x C\255e\))108 420 Q F0(In)144
-432 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026
-(ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026
-(cute the result as shell commands.).15 F F1(Bash)6.026 E F0
-(attempts to in)144 444 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)
--.54 E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0
-(and)2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E
-2.5(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87
-460.8 Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 472.8
-Q F1(\(usually C\255d\))2.5 E F0 .798
-(The character indicating end-of-\214le as set, for e)144 484.8 R .799
-(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.299
-(ft)-5.799 G .799(his character is read when)-3.299 F .592
-(there are no characters on the line, and point is at the be)144 496.8 R
-.592(ginning of the line, Readline interprets it)-.15 F
-(as the end of input and returns)144 508.8 Q F2(EOF)2.5 E F3(.)A F1
-(delete\255char \(C\255d\))108 520.8 Q F0 .441
-(Delete the character at point.)144 532.8 R .442
-(If this function is bound to the same character as the tty)5.441 F F1
-(EOF)2.942 E F0(char)2.942 E(-)-.2 E(acter)144 544.8 Q 2.5(,a)-.4 G(s)
+-.18 F(the current line.)144 240 Q F1
+(edit\255and\255execute\255command \(C\255x C\255e\))108 252 Q F0(In)144
+264 Q -.2(vo)-.4 G .346 -.1(ke a).2 H 2.646(ne).1 G .146
+(ditor on the current command line, and e)-2.646 F -.15(xe)-.15 G .146
+(cute the result as shell commands.).15 F F1(Bash)5.147 E F0(at-)2.647 E
+(tempts to in)144 276 Q -.2(vo)-.4 G -.1(ke).2 G F2($VISU)2.6 E(AL)-.54
+E/F3 9/Times-Roman@0 SF(,)A F2($EDIT)2.25 E(OR)-.162 E F3(,)A F0(and)
+2.25 E/F4 10/Times-Italic@0 SF(emacs)2.5 E F0(as the editor)2.5 E 2.5
+(,i)-.4 G 2.5(nt)-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 292.8
+Q(or Changing T)-.25 E(ext)-.92 E F4(end\255of\255\214le)108 304.8 Q F1
+(\(usually C\255d\))2.5 E F0 .799
+(The character indicating end-of-\214le as set, for e)144 316.8 R .799
+(xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298
+(ft)-5.799 G .798(his character is read when)-3.298 F .592
+(there are no characters on the line, and point is at the be)144 328.8 R
+.593(ginning of the line, Readline interprets it)-.15 F
+(as the end of input and returns)144 340.8 Q F2(EOF)2.5 E F3(.)A F1
+(delete\255char \(C\255d\))108 352.8 Q F0 .442
+(Delete the character at point.)144 364.8 R .442
+(If this function is bound to the same character as the tty)5.442 F F1
+(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 376.8 Q 2.5(,a)-.4 G(s)
-2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H
(or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\))
-108 556.8 Q F0 .553(Delete the character behind the cursor)144 568.8 R
+108 388.8 Q F0 .552(Delete the character behind the cursor)144 400.8 R
5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553
-(umeric ar)-3.053 F .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 580.8 Q F1
--.25(fo)108 592.8 S(rward\255backward\255delete\255char).25 E F0 .473
-(Delete the character under the cursor)144 604.8 R 2.973(,u)-.4 G .474
-(nless the cursor is at the end of the line, in which case the)-2.973 F
-(character behind the cursor is deleted.)144 616.8 Q F1
-(quoted\255insert \(C\255q, C\255v\))108 628.8 Q F0 .779(Add the ne)144
-640.8 R .779(xt character typed to the line v)-.15 F 3.279
+(umeric ar)-3.053 F .553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553
+(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 412.8 Q F1
+-.25(fo)108 424.8 S(rward\255backward\255delete\255char).25 E F0 .474
+(Delete the character under the cursor)144 436.8 R 2.974(,u)-.4 G .474
+(nless the cursor is at the end of the line, in which case the)-2.974 F
+(character behind the cursor is deleted.)144 448.8 Q F1
+(quoted\255insert \(C\255q, C\255v\))108 460.8 Q F0 .778(Add the ne)144
+472.8 R .779(xt character typed to the line v)-.15 F 3.279
(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279
-G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278
-(,f)C(or)-3.278 E -.15(ex)144 652.8 S(ample.).15 E F1
-(tab\255insert \(C\255v T)108 664.8 Q(AB\))-.9 E F0
-(Insert a tab character)144 676.8 Q(.)-.55 E F1
-(self\255insert \(a, b, A, 1, !, ...\))108 688.8 Q F0
-(Insert the character typed.)144 700.8 Q(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(47)188.455 E 0 Cg EP
-%%Page: 48 48
+G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279
+(,f)C(or)-3.279 E -.15(ex)144 484.8 S(ample.).15 E F1
+(tab\255insert \(C\255v T)108 496.8 Q(AB\))-.9 E F0
+(Insert a tab character)144 508.8 Q(.)-.55 E F1
+(self\255insert \(a, b, A, 1, !, ...\))108 520.8 Q F0
+(Insert the character typed.)144 532.8 Q F1
+(transpose\255chars \(C\255t\))108 544.8 Q F0 .322
+(Drag the character before point forw)144 556.8 R .321(ard o)-.1 F -.15
+(ve)-.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .321
+(ving point forw)-.15 F .321(ard as well.)-.1 F .372
+(If point is at the end of the line, then this transposes the tw)144
+568.8 R 2.872(oc)-.1 G .373(haracters before point.)-2.872 F(Ne)5.373 E
+-.05(ga)-.15 G(ti).05 E .673 -.15(ve a)-.25 H -.2(r-).15 G(guments ha)
+144 580.8 Q .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
+(transpose\255w)108 592.8 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144
+604.8 R .024(ord before point past the w)-.1 F .023(ord after point, mo)
+-.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w)
+-2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F
+(is at the end of the line, this transposes the last tw)144 616.8 Q 2.5
+(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 628.8 Q
+(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144
+640.8 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F
+-.05(ga)-.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699
+(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 652.8 S(rd, b).1
+E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 664.8 Q
+(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 676.8 Q 1.648
+(wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148
+(ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15
+(ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre)
+-.25 F(vious)-.25 E -.1(wo)144 688.8 S(rd, b).1 E(ut do not mo)-.2 E .3
+-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 700.8 Q
+(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144
+712.8 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F
+-.05(ga)-.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975
+(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 724.8 S(rd, b)
+.1 E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E(GNU Bash 5.1)72
+768 Q(2020 October 29)141.235 E(48)190.395 E 0 Cg EP
+%%Page: 49 49
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(transpose\255chars \(C\255t\))108 84 Q F0 .321
-(Drag the character before point forw)144 96 R .321(ard o)-.1 F -.15(ve)
--.15 G 2.821(rt).15 G .321(he character at point, mo)-2.821 F .322
-(ving point forw)-.15 F .322(ard as well.)-.1 F 1.182
-(If point is at the end of the line, then this transposes the tw)144 108
-R 3.682(oc)-.1 G 1.182(haracters before point.)-3.682 F(Ne)6.182 E -.05
-(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 120 Q(guments ha)-.18 E .3
--.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1
-(transpose\255w)108 132 Q(ords \(M\255t\))-.1 E F0 .023(Drag the w)144
-144 R .023(ord before point past the w)-.1 F .023(ord after point, mo)
--.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.524(rt).15 G .024(hat w)
--2.524 F .024(ord as well.)-.1 F .024(If point)5.024 F
-(is at the end of the line, this transposes the last tw)144 156 Q 2.5
-(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 168 Q
-(ord \(M\255u\))-.1 E F0 1.699(Uppercase the current \(or follo)144 180
-R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 1.998 -.15(ve a)-.25 H -.18(rg).15 G 1.698
-(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 192 S(rd, b).1 E
-(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 204 Q
-(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 216 Q 1.647
-(wercase the current \(or follo)-.25 F 1.647(wing\) w)-.25 F 4.147
-(ord. W)-.1 F 1.648(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.948 -.15
-(ve a)-.25 H -.18(rg).15 G 1.648(ument, lo).18 F 1.648(wercase the pre)
--.25 F(vious)-.25 E -.1(wo)144 228 S(rd, b).1 E(ut do not mo)-.2 E .3
--.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 240 Q
-(ord \(M\255c\))-.1 E F0 1.975(Capitalize the current \(or follo)144 252
-R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga)
--.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.974
-(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 264 S(rd, b).1
-E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 276
-S(rwrite\255mode).1 E F0 -.8(To)144 288 S .437(ggle o).8 F -.15(ve)-.15
-G .437(rwrite mode.).15 F -.4(Wi)5.437 G .437(th an e).4 F .437
-(xplicit positi)-.15 F .738 -.15(ve n)-.25 H .438(umeric ar).15 F .438
-(gument, switches to o)-.18 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4
-(Wi)144 300 S .781(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
+SF -.1(ove)108 84 S(rwrite\255mode).1 E F0 -.8(To)144 96 S .438(ggle o)
+.8 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e)
+.4 F .438(xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15
+F .437(gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15
+F -.4(Wi)144 108 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081
-.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 312 Q F1(emacs)4.394 E F0(mode;)4.394 E F1(vi)
-4.394 E F0 1.894(mode does o)4.394 F -.15(ve)-.15 G 1.894(rwrite dif).15
+(gument, switches to insert mode.)-.18 F .781(This command af)5.781 F
+(fects)-.25 E(only)144 120 Q F1(emacs)4.395 E F0(mode;)4.395 E F1(vi)
+4.395 E F0 1.894(mode does o)4.395 F -.15(ve)-.15 G 1.894(rwrite dif).15
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 324 R -.15(ove)3.969 G
-1.469(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
-F0 1.468(replace the te)3.969 F 1.468(xt at point rather than)-.15 F
-.957(pushing the te)144 336 R .957(xt to the right.)-.15 F .958
-(Characters bound to)5.957 F F1(backward\255delete\255char)3.458 E F0
-.958(replace the character)3.458 F(before point with a space.)144 348 Q
+/Times-Italic@0 SF -.37(re)4.394 G(adline\(\)).37 E F0 1.894
+(starts in insert)4.394 F 3.968(mode. In)144 132 R -.15(ove)3.968 G
+1.468(rwrite mode, characters bound to).15 F F1(self\255insert)3.969 E
+F0 1.469(replace the te)3.969 F 1.469(xt at point rather than)-.15 F
+.958(pushing the te)144 144 R .958(xt to the right.)-.15 F .957
+(Characters bound to)5.958 F F1(backward\255delete\255char)3.457 E F0
+.957(replace the character)3.457 F(before point with a space.)144 156 Q
(By def)5 E(ault, this command is unbound.)-.1 E F1(Killing and Y)87
-364.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 376.8 Q F0
-(Kill the te)144 388.8 Q(xt from point to the end of the line.)-.15 E F1
-(backward\255kill\255line \(C\255x Rubout\))108 400.8 Q F0(Kill backw)
-144 412.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
-(unix\255line\255discard \(C\255u\))108 424.8 Q F0(Kill backw)144 436.8
+172.8 Q(anking)-.85 E(kill\255line \(C\255k\))108 184.8 Q F0
+(Kill the te)144 196.8 Q(xt from point to the end of the line.)-.15 E F1
+(backward\255kill\255line \(C\255x Rubout\))108 208.8 Q F0(Kill backw)
+144 220.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1
+(unix\255line\255discard \(C\255u\))108 232.8 Q F0(Kill backw)144 244.8
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 448.8 Q F0
+-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 256.8 Q F0
(Kill all characters on the current line, no matter where point is.)144
-460.8 Q F1(kill\255w)108 472.8 Q(ord \(M\255d\))-.1 E F0 .729
-(Kill from point to the end of the current w)144 484.8 R .728
-(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F .728
-(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 496.8 S
+268.8 Q F1(kill\255w)108 280.8 Q(ord \(M\255d\))-.1 E F0 .728
+(Kill from point to the end of the current w)144 292.8 R .729
+(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729
+(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 304.8 S
(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 508.8 Q
-(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 520.8 Q(ord behind point.)
+(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 316.8 Q
+(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 328.8 Q(ord behind point.)
-.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 532.8 Q
-(ord)-.1 E F0 .728(Kill from point to the end of the current w)144 544.8
-R .729(ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F
-.729(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 556.8 S
+(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 340.8 Q
+(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 352.8
+R .728(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F
+.728(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 364.8 S
(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 568.8 Q(ord)-.1 E F0 3.025(Kill the w)144 580.8 R 3.025
+108 376.8 Q(ord)-.1 E F0 3.025(Kill the w)144 388.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 592.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 604.8 Q
-(ord\255rubout \(C\255w\))-.1 E F0 .364(Kill the w)144 616.8 R .364
-(ord behind point, using white space as a w)-.1 F .365(ord boundary)-.1
-F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15
-(ve)-.2 G 2.865(do).15 G 2.865(nt)-2.865 G(he)-2.865 E(kill-ring.)144
-628.8 Q F1(unix\255\214lename\255rubout)108 640.8 Q F0 .167(Kill the w)
-144 652.8 R .166
+5.525 E(ward\255w)144 400.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 412.8 Q
+(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 424.8 R .365
+(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1
+F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15
+(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144
+436.8 Q F1(unix\255\214lename\255rubout)108 448.8 Q F0 .166(Kill the w)
+144 460.8 R .166
(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 664.8 Q
+-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 472.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 676.8 Q F0
-(Delete all spaces and tabs around point.)144 688.8 Q F1(kill\255r)108
-700.8 Q(egion)-.18 E F0(Kill the te)144 712.8 Q(xt in the current re)
--.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(48)
-188.455 E 0 Cg EP
-%%Page: 49 49
+-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 484.8 Q F0
+(Delete all spaces and tabs around point.)144 496.8 Q F1(kill\255r)108
+508.8 Q(egion)-.18 E F0(Kill the te)144 520.8 Q(xt in the current re)
+-.15 E(gion.)-.15 E F1(copy\255r)108 532.8 Q(egion\255as\255kill)-.18 E
+F0(Cop)144 544.8 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E
+(gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1
+(copy\255backward\255w)108 556.8 Q(ord)-.1 E F0(Cop)144 568.8 Q 4.801
+(yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F
+(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3
+(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 580.8
+Q(ord)-.1 E F0(.)A F1(copy\255f)108 592.8 Q(orward\255w)-.25 E(ord)-.1 E
+F0(Cop)144 604.8 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)
+-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008
+(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1
+F F1 -.25(fo)4.508 G -.37(r-).25 G(ward\255w)144 616.8 Q(ord)-.1 E F0(.)
+A F1(yank \(C\255y\))108 628.8 Q F0 -1(Ya)144 640.8 S
+(nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25
+E F1(yank\255pop \(M\255y\))108 652.8 Q F0
+(Rotate the kill ring, and yank the ne)144 664.8 Q 2.5(wt)-.25 G 2.5
+(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
+F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 681.6 Q
+(guments)-.1 E(digit\255ar)108 693.6 Q
+(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
+(Add this digit to the ar)144 705.6 R .367
+(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
+(rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05
+(ga)-.15 G(-).05 E(ti)144 717.6 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
+(ument.).18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(49)190.395
+E 0 Cg EP
+%%Page: 50 50
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(copy\255r)108 84 Q(egion\255as\255kill)-.18 E F0(Cop)144 96 Q 2.5(yt)
--.1 G(he te)-2.5 E(xt in the re)-.15 E(gion to the kill b)-.15 E(uf)-.2
-E(fer)-.25 E(.)-.55 E F1(copy\255backward\255w)108 108 Q(ord)-.1 E F0
-(Cop)144 120 Q 4.8(yt)-.1 G 2.3(he w)-4.8 F 2.3
-(ord before point to the kill b)-.1 F(uf)-.2 E(fer)-.25 E 7.301(.T)-.55
-G 2.301(he w)-7.301 F 2.301(ord boundaries are the same as)-.1 F F1
-(back-)4.801 E(ward\255w)144 132 Q(ord)-.1 E F0(.)A F1(copy\255f)108 144
-Q(orward\255w)-.25 E(ord)-.1 E F0(Cop)144 156 Q 4.508(yt)-.1 G 2.008
-(he w)-4.508 F 2.008(ord follo)-.1 F 2.008(wing point to the kill b)-.25
-F(uf)-.2 E(fer)-.25 E 7.007(.T)-.55 G 2.007(he w)-7.007 F 2.007
-(ord boundaries are the same as)-.1 F F1 -.25(fo)4.507 G -.37(r-).25 G
-(ward\255w)144 168 Q(ord)-.1 E F0(.)A F1(yank \(C\255y\))108 180 Q F0 -1
-(Ya)144 192 S(nk the top of the kill ring into the b)1 E(uf)-.2 E
-(fer at point.)-.25 E F1(yank\255pop \(M\255y\))108 204 Q F0
-(Rotate the kill ring, and yank the ne)144 216 Q 2.5(wt)-.25 G 2.5
-(op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E
-F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 232.8 Q
-(guments)-.1 E(digit\255ar)108 244.8 Q
-(gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367
-(Add this digit to the ar)144 256.8 R .367
-(gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18
-(rg)-2.867 G 2.867(ument. M\255\255).18 F .367(starts a ne)2.867 F -.05
-(ga)-.15 G(-).05 E(ti)144 268.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G
-(ument.).18 E F1(uni)108 280.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1
-E F0 .779(This is another w)144 292.8 R .779(ay to specify an ar)-.1 F
-3.279(gument. If)-.18 F .779(this command is follo)3.279 F .778
+SF(uni)108 84 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0 .778
+(This is another w)144 96 R .779(ay to specify an ar)-.1 F 3.279
+(gument. If)-.18 F .779(this command is follo)3.279 F .779
(wed by one or more digits,)-.25 F 1.376
(optionally with a leading minus sign, those digits de\214ne the ar)144
-304.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
-316.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
+108 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144
+120 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni)
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 328.8 R .898
-(As a special case, if this command is immediately follo)5.898 F .898
+-.2 F(-)-.2 E .899(wise ignored.)144 132 R .898
+(As a special case, if this command is immediately follo)5.899 F .898
(wed by a character that is)-.25 F 1.23
-(neither a digit nor minus sign, the ar)144 340.8 R 1.23
+(neither a digit nor minus sign, the ar)144 144 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 352.8 R .822
+-.15 F(.)-.55 E .823(The ar)144 156 R .823
(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 364.8 Q 2.5(,as)-.4 G(econd time mak)-2.5
-E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing)
-87 381.6 Q(complete \(T)108 393.6 Q(AB\))-.9 E F0 1.137
-(Attempt to perform completion on the te)144 405.6 R 1.137
+(cuting this function the \214rst time mak).15 F .822(es the ar)-.1 F
+(gument)-.18 E(count four)144 168 Q 2.5(,as)-.4 G(econd time mak)-2.5 E
+(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing)
+87 184.8 Q(complete \(T)108 196.8 Q(AB\))-.9 E F0 1.137
+(Attempt to perform completion on the te)144 208.8 R 1.137
(xt before point.)-.15 F F1(Bash)6.137 E F0 1.137
-(attempts completion treating the)3.637 F(te)144 417.6 Q .532(xt as a v)
--.15 F .532(ariable \(if the te)-.25 F .532(xt be)-.15 F .533(gins with)
--.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .533(xt be)-.15 F
-.533(gins with)-.15 F F1(~)3.033 E F0 .533(\), hostname \(if the)B(te)
-144 429.6 Q .702(xt be)-.15 F .702(gins with)-.15 F F1(@)3.202 E F0 .701
-(\), or command \(including aliases and functions\) in turn.)B .701
+(attempts completion treating the)3.637 F(te)144 220.8 Q .533(xt as a v)
+-.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with)
+-.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F
+.532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te)
+144 232.8 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701
+(\), or command \(including aliases and functions\) in turn.)B .702
(If none of these pro-)5.701 F
-(duces a match, \214lename completion is attempted.)144 441.6 Q F1
-(possible\255completions \(M\255?\))108 453.6 Q F0
-(List the possible completions of the te)144 465.6 Q(xt before point.)
--.15 E F1(insert\255completions \(M\255*\))108 477.6 Q F0 .783
-(Insert all completions of the te)144 489.6 R .783
+(duces a match, \214lename completion is attempted.)144 244.8 Q F1
+(possible\255completions \(M\255?\))108 256.8 Q F0
+(List the possible completions of the te)144 268.8 Q(xt before point.)
+-.15 E F1(insert\255completions \(M\255*\))108 280.8 Q F0 .783
+(Insert all completions of the te)144 292.8 R .783
(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
-501.6 Q F0(.)A F1(menu\255complete)108 513.6 Q F0 .929(Similar to)144
-525.6 R F1(complete)3.429 E F0 3.429(,b)C .929(ut replaces the w)-3.629
+.783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144
+304.8 Q F0(.)A F1(menu\255complete)108 316.8 Q F0 .928(Similar to)144
+328.8 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628
F .929(ord to be completed with a single match from the list of)-.1 F
-1.193(possible completions.)144 537.6 R 1.193(Repeated e)6.193 F -.15
-(xe)-.15 G 1.193(cution of).15 F F1(menu\255complete)3.694 E F0 1.194
-(steps through the list of possible)3.694 F .829
-(completions, inserting each match in turn.)144 549.6 R .828
+1.194(possible completions.)144 340.8 R 1.194(Repeated e)6.194 F -.15
+(xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193
+(steps through the list of possible)3.694 F .828
+(completions, inserting each match in turn.)144 352.8 R .828
(At the end of the list of completions, the bell is rung)5.828 F .727
-(\(subject to the setting of)144 561.6 R F1(bell\255style)3.227 E F0
+(\(subject to the setting of)144 364.8 R F1(bell\255style)3.227 E F0
3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F
.727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227
-E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.228 E F0 1.73
-(positions forw)144 573.6 R 1.73(ard in the list of matches; a ne)-.1 F
+E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73
+(positions forw)144 376.8 R 1.73(ard in the list of matches; a ne)-.1 F
-.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73
(ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1
-E(through the list.)144 585.6 Q(This command is intended to be bound to)
+E(through the list.)144 388.8 Q(This command is intended to be bound to)
5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E
-(ault.)-.1 E F1(menu\255complete\255backward)108 597.6 Q F0 .82
-(Identical to)144 609.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
+(ault.)-.1 E F1(menu\255complete\255backward)108 400.8 Q F0 .82
+(Identical to)144 412.8 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82
(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82
(ard through the list of possible completions, as if)-.1 F F1
-(menu\255complete)144 621.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
+(menu\255complete)144 424.8 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5
(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg)
.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E
-F1(delete\255char\255or\255list)108 633.6 Q F0 .234
-(Deletes the character under the cursor if not at the be)144 645.6 R
+F1(delete\255char\255or\255list)108 436.8 Q F0 .234
+(Deletes the character under the cursor if not at the be)144 448.8 R
.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char)
-2.734 E F0(\).)A .425(If at the end of the line, beha)144 657.6 R -.15
+2.735 E F0(\).)A .425(If at the end of the line, beha)144 460.8 R -.15
(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1
(possible\255completions)2.925 E F0 5.425(.T)C .425
-(his command is unbound)-5.425 F(by def)144 669.6 Q(ault.)-.1 E F1
-(complete\255\214lename \(M\255/\))108 681.6 Q F0
-(Attempt \214lename completion on the te)144 693.6 Q(xt before point.)
--.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 705.6 Q
-F0(List the possible completions of the te)144 717.6 Q
-(xt before point, treating it as a \214lename.)-.15 E(GNU Bash 5.0)72
-768 Q(2018 December 7)139.295 E(49)188.455 E 0 Cg EP
-%%Page: 50 50
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(complete\255user)108 84 Q(name \(M\255~\))-.15 E F0
-(Attempt completion on the te)144 96 Q
+(his command is unbound)-5.425 F(by def)144 472.8 Q(ault.)-.1 E F1
+(complete\255\214lename \(M\255/\))108 484.8 Q F0
+(Attempt \214lename completion on the te)144 496.8 Q(xt before point.)
+-.15 E F1(possible\255\214lename\255completions \(C\255x /\))108 508.8 Q
+F0(List the possible completions of the te)144 520.8 Q
+(xt before point, treating it as a \214lename.)-.15 E F1
+(complete\255user)108 532.8 Q(name \(M\255~\))-.15 E F0
+(Attempt completion on the te)144 544.8 Q
(xt before point, treating it as a username.)-.15 E F1(possible\255user)
-108 108 Q(name\255completions \(C\255x ~\))-.15 E F0
-(List the possible completions of the te)144 120 Q
+108 556.8 Q(name\255completions \(C\255x ~\))-.15 E F0
+(List the possible completions of the te)144 568.8 Q
(xt before point, treating it as a username.)-.15 E F1(complete\255v)108
-132 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 144 Q
+580.8 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144
+592.8 Q(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E
+F1(possible\255v)108 604.8 Q(ariable\255completions \(C\255x $\))-.1 E
+F0(List the possible completions of the te)144 616.8 Q
(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
-(possible\255v)108 156 Q(ariable\255completions \(C\255x $\))-.1 E F0
-(List the possible completions of the te)144 168 Q
-(xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1
-(complete\255hostname \(M\255@\))108 180 Q F0
-(Attempt completion on the te)144 192 Q
+(complete\255hostname \(M\255@\))108 628.8 Q F0
+(Attempt completion on the te)144 640.8 Q
(xt before point, treating it as a hostname.)-.15 E F1
-(possible\255hostname\255completions \(C\255x @\))108 204 Q F0
-(List the possible completions of the te)144 216 Q
+(possible\255hostname\255completions \(C\255x @\))108 652.8 Q F0
+(List the possible completions of the te)144 664.8 Q
(xt before point, treating it as a hostname.)-.15 E F1
-(complete\255command \(M\255!\))108 228 Q F0 .581
-(Attempt completion on the te)144 240 R .581
-(xt before point, treating it as a command name.)-.15 F .58
-(Command comple-)5.58 F .715(tion attempts to match the te)144 252 R
+(complete\255command \(M\255!\))108 676.8 Q F0 .58
+(Attempt completion on the te)144 688.8 R .581
+(xt before point, treating it as a command name.)-.15 F .581
+(Command comple-)5.581 F .715(tion attempts to match the te)144 700.8 R
.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 264 Q -.15(xe)-.15 G
-(cutable \214lenames, in that order).15 E(.)-.55 E F1
-(possible\255command\255completions \(C\255x !\))108 276 Q F0
-(List the possible completions of the te)144 288 Q
+(\214nally e)144 712.8 Q -.15(xe)-.15 G
+(cutable \214lenames, in that order).15 E(.)-.55 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(50)190.395 E 0 Cg EP
+%%Page: 51 51
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(possible\255command\255completions \(C\255x !\))108 84 Q F0
+(List the possible completions of the te)144 96 Q
(xt before point, treating it as a command name.)-.15 E F1
-(dynamic\255complete\255history \(M\255T)108 300 Q(AB\))-.9 E F0 .425
-(Attempt completion on the te)144 312 R .425
-(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .424
+(dynamic\255complete\255history \(M\255T)108 108 Q(AB\))-.9 E F0 .424
+(Attempt completion on the te)144 120 R .425
+(xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425
(ainst lines from the history list)-.05 F
-(for possible completion matches.)144 324 Q F1(dab)108 336 Q(br)-.1 E
--.15(ev)-.18 G(\255expand).15 E F0 .61
-(Attempt menu completion on the te)144 348 R .611
-(xt before point, comparing the te)-.15 F .611(xt ag)-.15 F .611
+(for possible completion matches.)144 132 Q F1(dab)108 144 Q(br)-.1 E
+-.15(ev)-.18 G(\255expand).15 E F0 .611
+(Attempt menu completion on the te)144 156 R .611
+(xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61
(ainst lines from the his-)-.05 F
-(tory list for possible completion matches.)144 360 Q F1
-(complete\255into\255braces \(M\255{\))108 372 Q F0 .4(Perform \214lena\
+(tory list for possible completion matches.)144 168 Q F1
+(complete\255into\255braces \(M\255{\))108 180 Q F0 .4(Perform \214lena\
me completion and insert the list of possible completions enclosed with\
-in braces so)144 384 R(the list is a)144 396 Q -.25(va)-.2 G
+in braces so)144 192 R(the list is a)144 204 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 412.8 S(yboard Macr).25 E(os)-.18
-E(start\255kbd\255macr)108 424.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
-.833 E F0(Be)144 436.8 Q(gin sa)-.15 E
+-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 220.8 S(yboard Macr).25 E(os)-.18
+E(start\255kbd\255macr)108 232.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\))
+.833 E F0(Be)144 244.8 Q(gin sa)-.15 E
(ving the characters typed into the current k)-.2 E -.15(ey)-.1 G
-(board macro.).15 E F1(end\255kbd\255macr)108 448.8 Q 2.5(o\()-.18 G
-(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 460.8 Q
+(board macro.).15 E F1(end\255kbd\255macr)108 256.8 Q 2.5(o\()-.18 G
+(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 268.8 Q
(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 472.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
-E F0(Re-e)144 484.8 Q -.15(xe)-.15 G .999(cute the last k).15 F -.15(ey)
--.1 G .999(board macro de\214ned, by making the characters in the macro\
- appear as if).15 F(typed at the k)144 496.8 Q -.15(ey)-.1 G(board.).15
-E F1(print\255last\255kbd\255macr)108 508.8 Q 2.5(o\()-.18 G(\))-2.5 E
-F0(Print the last k)144 520.8 Q -.15(ey)-.1 G
+(call\255last\255kbd\255macr)108 280.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5
+E F0(Re-e)144 292.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1
+G .999(board macro de\214ned, by making the characters in the macro app\
+ear as if).15 F(typed at the k)144 304.8 Q -.15(ey)-.1 G(board.).15 E F1
+(print\255last\255kbd\255macr)108 316.8 Q 2.5(o\()-.18 G(\))-2.5 E F0
+(Print the last k)144 328.8 Q -.15(ey)-.1 G
(board macro de\214ned in a format suitable for the).15 E/F2 10
/Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1
-(Miscellaneous)87 537.6 Q -.18(re)108 549.6 S<ad72>.18 E
-(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.777
-(Read in the contents of the)144 561.6 R F2(inputr)4.277 E(c)-.37 E F0
-1.776(\214le, and incorporate an)4.276 F 4.276(yb)-.15 G 1.776
-(indings or v)-4.276 F 1.776(ariable assignments)-.25 F(found there.)144
-573.6 Q F1(abort \(C\255g\))108 585.6 Q F0 3.248
-(Abort the current editing command and ring the terminal')144 597.6 R
-5.749(sb)-.55 G 3.249(ell \(subject to the setting of)-5.749 F F1
-(bell\255style)144 609.6 Q F0(\).)A F1(do\255lo)108 621.6 Q(wer)-.1 E
+(Miscellaneous)87 345.6 Q -.18(re)108 357.6 S<ad72>.18 E
+(ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776
+(Read in the contents of the)144 369.6 R F2(inputr)4.276 E(c)-.37 E F0
+1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777
+(indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144
+381.6 Q F1(abort \(C\255g\))108 393.6 Q F0 3.249
+(Abort the current editing command and ring the terminal')144 405.6 R
+5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1
+(bell\255style)144 417.6 Q F0(\).)A F1(do\255lo)108 429.6 Q(wer)-.1 E
(case\255v)-.18 E(ersion \(M\255A, M\255B, M\255)-.1 E F2(x)A F1 2.5(,.)
-C(..\))-2.5 E F0 1.739(If the meta\214ed character)144 633.6 R F2(x)
-4.239 E F0 1.739
-(is uppercase, run the command that is bound to the corresponding)4.239
-F(meta\214ed lo)144 645.6 Q(wercase character)-.25 E 5(.T)-.55 G
+C(..\))-2.5 E F0 1.738(If the meta\214ed character)144 441.6 R F2(x)
+4.238 E F0 1.739
+(is uppercase, run the command that is bound to the corresponding)4.238
+F(meta\214ed lo)144 453.6 Q(wercase character)-.25 E 5(.T)-.55 G
(he beha)-5 E(vior is unde\214ned if)-.2 E F2(x)2.5 E F0(is already lo)
-2.5 E(wercase.)-.25 E F1(pr)108 657.6 Q(e\214x\255meta \(ESC\))-.18 E F0
-(Metafy the ne)144 669.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
+2.5 E(wercase.)-.25 E F1(pr)108 465.6 Q(e\214x\255meta \(ESC\))-.18 E F0
+(Metafy the ne)144 477.6 Q(xt character typed.)-.15 E/F3 9/Times-Bold@0
SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1
-(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 681.6 Q F0
-(Incremental undo, separately remembered for each line.)144 693.6 Q F1
--2.29 -.18(re v)108 705.6 T(ert\255line \(M\255r\)).08 E F0 1.095
-(Undo all changes made to this line.)144 717.6 R 1.095(This is lik)6.095
-F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E
-F0 1.095(command enough times to)3.595 F
-(return the line to its initial state.)144 729.6 Q(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(50)188.455 E 0 Cg EP
-%%Page: 51 51
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(tilde\255expand \(M\255&\))108 84 Q F0(Perform tilde e)144 96 Q
+(Meta\255f)2.5 E F0(.)A F1(undo \(C\255_, C\255x C\255u\))108 489.6 Q F0
+(Incremental undo, separately remembered for each line.)144 501.6 Q F1
+-2.29 -.18(re v)108 513.6 T(ert\255line \(M\255r\)).08 E F0 .231
+(Undo all changes made to this line.)144 525.6 R .231(This is lik)5.231
+F 2.731(ee)-.1 G -.15(xe)-2.881 G .23(cuting the).15 F F1(undo)2.73 E F0
+.23(command enough times to re-)2.73 F
+(turn the line to its initial state.)144 537.6 Q F1
+(tilde\255expand \(M\255&\))108 549.6 Q F0(Perform tilde e)144 561.6 Q
(xpansion on the current w)-.15 E(ord.)-.1 E F1
-(set\255mark \(C\255@, M\255<space>\))108 108 Q F0
-(Set the mark to the point.)144 120 Q(If a numeric ar)5 E
+(set\255mark \(C\255@, M\255<space>\))108 573.6 Q F0
+(Set the mark to the point.)144 585.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 132 Q F0(Sw)144
-144 Q .283(ap the point with the mark.)-.1 F .283
+(exchange\255point\255and\255mark \(C\255x C\255x\))108 597.6 Q F0(Sw)
+144 609.6 Q .282(ap the point with the mark.)-.1 F .283
(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 156 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
-(character\255sear)108 168 Q(ch \(C\255]\))-.18 E F0 3.035(Ac)144 180 S
-.535(haracter is read and point is mo)-3.035 F -.15(ve)-.15 G 3.035(dt)
-.15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
-(xt occurrence of that character)-.15 F 5.536(.A)-.55 G(ne)-2.5 E -.05
-(ga)-.15 G(ti).05 E .836 -.15(ve c)-.25 H(ount).15 E(searches for pre)
-144 192 Q(vious occurrences.)-.25 E F1(character\255sear)108 204 Q
-(ch\255backward \(M\255C\255]\))-.18 E F0 3.544(Ac)144 216 S 1.044
-(haracter is read and point is mo)-3.544 F -.15(ve)-.15 G 3.544(dt).15 G
+2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa)
+144 621.6 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1
+(character\255sear)108 633.6 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144
+645.6 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G
+3.035(dt).15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535
+(xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05
+(ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre)
+144 657.6 Q(vious occurrences.)-.25 E F1(character\255sear)108 669.6 Q
+(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 681.6 S 1.043
+(haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G
3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044
-(vious occurrence of that character)-.25 F 6.043(.A)-.55 G(ne)-2.5 E
+(vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E
-.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G
-(count searches for subsequent occurrences.)144 228 Q F1
-(skip\255csi\255sequence)108 240 Q F0 1.826
-(Read enough characters to consume a multi-k)144 252 R 2.126 -.15(ey s)
--.1 H 1.827(equence such as those de\214ned for k).15 F -.15(ey)-.1 G
-4.327(sl).15 G(ik)-4.327 E(e)-.1 E .791(Home and End.)144 264 R .791
-(Such sequences be)5.791 F .791
+(count searches for subsequent occurrences.)144 693.6 Q F1
+(skip\255csi\255sequence)108 705.6 Q F0 1.827
+(Read enough characters to consume a multi-k)144 717.6 R 2.126 -.15
+(ey s)-.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)
+-.1 G 4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 729.6 R
+.791(Such sequences be)5.79 F .791
(gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F
-.331(If this sequence is bound to "\\[", k)144 276 R -.15(ey)-.1 G 2.831
-(sp).15 G .331(roducing such sequences will ha)-2.831 F .632 -.15(ve n)
--.2 H 2.832(oe).15 G -.25(ff)-2.832 G .332(ect unless e).25 F(xplic-)
--.15 E .026(itly bound to a readline command, instead of inserting stra\
-y characters into the editing b)144 288 R(uf)-.2 E(fer)-.25 E 5.026(.T)
--.55 G(his)-5.026 E(is unbound by def)144 300 Q(ault, b)-.1 E
-(ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108
-312 Q F0 -.4(Wi)144 324 S .48(thout a numeric ar).4 F .48(gument, the v)
--.18 F .481(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0
--.25(va)2.981 G .481(riable is inserted at the).25 F(be)144 336 Q .245
-(ginning of the current line.)-.15 F .245(If a numeric ar)5.245 F .244
-(gument is supplied, this command acts as a toggle: if)-.18 F .321
-(the characters at the be)144 348 R .321
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(51)190.395 E 0 Cg EP
+%%Page: 52 52
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .332
+(If this sequence is bound to "\\[", k)144 84 R -.15(ey)-.1 G 2.831(sp)
+.15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n)-.2 H
+2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-)-.15 E
+.026(itly bound to a readline command, instead of inserting stray chara\
+cters into the editing b)144 96 R(uf)-.2 E(fer)-.25 E 5.026(.T)-.55 G
+(his)-5.026 E(is unbound by def)144 108 Q(ault, b)-.1 E
+(ut usually bound to ESC\255[.)-.2 E/F1 10/Times-Bold@0 SF
+(insert\255comment \(M\255#\))108 120 Q F0 -.4(Wi)144 132 S .481
+(thout a numeric ar).4 F .481(gument, the v)-.18 F .481
+(alue of the readline)-.25 F F1(comment\255begin)2.981 E F0 -.25(va)
+2.981 G .48(riable is inserted at the).25 F(be)144 144 Q .244
+(ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245
+(gument is supplied, this command acts as a toggle: if)-.18 F .322
+(the characters at the be)144 156 R .321
(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 360 R F1
-(comment\255begin)3.332 E F0 .831(are deleted from the be)3.332 F .831
-(ginning of the line.)-.15 F 1.468
-(In either case, the line is accepted as if a ne)144 372 R 1.468
-(wline had been typed.)-.25 F 1.469(The def)6.469 F 1.469(ault v)-.1 F
-1.469(alue of)-.25 F F1(com-)3.969 E(ment\255begin)144 384 Q F0 .84
-(causes this command to mak)3.34 F 3.339(et)-.1 G .839
-(he current line a shell comment.)-3.339 F .839(If a numeric ar)5.839 F
-(gu-)-.18 E(ment causes the comment character to be remo)144 396 Q -.15
+(comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is)
+-.25 F .831(inserted, otherwise the characters in)144 168 R F1
+(comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832
+(ginning of the line.)-.15 F 1.469
+(In either case, the line is accepted as if a ne)144 180 R 1.468
+(wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F
+1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 192 Q F0 .839
+(causes this command to mak)3.339 F 3.339(et)-.1 G .839
+(he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F
+(gu-)-.18 E(ment causes the comment character to be remo)144 204 Q -.15
(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 408 Q
-(ord \(M\255g\))-.1 E F0 .791(The w)144 420 R .791
-(ord before point is treated as a pattern for pathname e)-.1 F .792
-(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 432
+(cuted by the shell.).15 E F1(glob\255complete\255w)108 216 Q
+(ord \(M\255g\))-.1 E F0 .792(The w)144 228 R .791
+(ord before point is treated as a pattern for pathname e)-.1 F .791
+(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 240
R(pattern is used to generate a list of matching \214lenames for possib\
-le completions.)2.5 E F1(glob\255expand\255w)108 444 Q(ord \(C\255x *\))
--.1 E F0 .176(The w)144 456 R .176
+le completions.)2.5 E F1(glob\255expand\255w)108 252 Q(ord \(C\255x *\))
+-.1 E F0 .175(The w)144 264 R .176
(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 468 R 3.016(ord. If)-.1 F 3.016
+(names is inserted, replacing the w)144 276 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 480 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\))
-108 492 Q F0 .923(The list of e)144 504 R .923(xpansions that w)-.15 F
+144 288 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\))
+108 300 Q F0 .923(The list of e)144 312 R .923(xpansions that w)-.15 F
.923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1
(glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F
-.872(the line is redra)144 516 R 3.372(wn. If)-.15 F 3.372(an)3.372 G
+.872(the line is redra)144 324 R 3.372(wn. If)-.15 F 3.372(an)3.372 G
.872(umeric ar)-3.372 F .872
(gument is supplied, an asterisk is appended before pathname)-.18 F -.15
-(ex)144 528 S(pansion.).15 E F1(dump\255functions)108 540 Q F0 .627
-(Print all of the functions and their k)144 552 R .927 -.15(ey b)-.1 H
-.626(indings to the readline output stream.).15 F .626(If a numeric ar)
-5.626 F(gu-)-.18 E
-(ment is supplied, the output is formatted in such a w)144 564 Q
+(ex)144 336 S(pansion.).15 E F1(dump\255functions)108 348 Q F0 .626
+(Print all of the functions and their k)144 360 R .926 -.15(ey b)-.1 H
+.627(indings to the readline output stream.).15 F .627(If a numeric ar)
+5.627 F(gu-)-.18 E
+(ment is supplied, the output is formatted in such a w)144 372 Q
(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 576 Q(ariables)-.1 E F0
-1.799(Print all of the settable readline v)144 588 R 1.799
-(ariables and their v)-.25 F 1.8(alues to the readline output stream.)
--.25 F 1.8(If a)6.8 F .305(numeric ar)144 600 R .304
-(gument is supplied, the output is formatted in such a w)-.18 F .304
-(ay that it can be made part of an)-.1 F F2(inputr)144 612 Q(c)-.37 E F0
-(\214le.)2.5 E F1(dump\255macr)108 624 Q(os)-.18 E F0 .592
-(Print all of the readline k)144 636 R .892 -.15(ey s)-.1 H .592
-(equences bound to macros and the strings the).15 F 3.093(yo)-.15 G
-3.093(utput. If)-3.093 F 3.093(an)3.093 G(umeric)-3.093 E(ar)144 648 Q
+2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 384 Q(ariables)-.1 E F0
+.763(Print all of the settable readline v)144 396 R .762
+(ariables and their v)-.25 F .762(alues to the readline output stream.)
+-.25 F .762(If a nu-)5.762 F .108(meric ar)144 408 R .108
+(gument is supplied, the output is formatted in such a w)-.18 F .109
+(ay that it can be made part of an)-.1 F F2(in-)2.609 E(putr)144 420 Q
+(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 432 Q(os)-.18 E F0 .593
+(Print all of the readline k)144 444 R .893 -.15(ey s)-.1 H .592
+(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G
+3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 456 Q
.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 660 Q F1(display\255shell\255v)108 672 Q
-(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 684 Q
+(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0
+(\214le.)144 468 Q F1(display\255shell\255v)108 480 Q
+(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 492 Q
(ersion information about the current instance of)-.15 E F1(bash)2.5 E
-F0(.)A F1(Pr)87 700.8 Q(ogrammable Completion)-.18 E F0 .146(When w)108
-712.8 R .147(ord completion is attempted for an ar)-.1 F .147
+F0(.)A F1(Pr)87 508.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108
+520.8 R .147(ord completion is attempted for an ar)-.1 F .147
(gument to a command for which a completion speci\214cation \(a)-.18 F
-F2(compspec)108 724.8 Q F0 3.829(\)h)C 1.329
-(as been de\214ned using the)-3.829 F F1(complete)3.829 E F0 -.2(bu)
+F2(compspec)108 532.8 Q F0 3.828(\)h)C 1.329
+(as been de\214ned using the)-3.828 F F1(complete)3.829 E F0 -.2(bu)
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(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(51)188.455 E 0 Cg
-EP
-%%Page: 52 52
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(programmable completion f)108 84 Q(acilities are in)-.1 E -.2(vo)-.4 G
--.1(ke).2 G(d.).1 E .497(First, the command name is identi\214ed.)108
-100.8 R .497(If the command w)5.497 F .498
-(ord is the empty string \(completion attempted at)-.1 F .234(the be)108
-112.8 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
-(ompspec de\214ned with the)-2.733 F/F1 10/Times-Bold@0 SF<ad45>2.733 E
-F0 .233(option to)2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F
-.233(If a comp-)5.233 F .481(spec has been de\214ned for that command, \
-the compspec is used to generate the list of possible completions)108
-124.8 R .823(for the w)108 136.8 R 3.323(ord. If)-.1 F .823
-(the command w)3.323 F .822(ord is a full pathname, a compspec for the \
-full pathname is searched for)-.1 F 2.866(\214rst. If)108 148.8 R .367(\
-no compspec is found for the full pathname, an attempt is made to \214n\
-d a compspec for the portion)2.866 F(follo)108 160.8 Q .299
-(wing the \214nal slash.)-.25 F .298
-(If those searches do not result in a compspec, an)5.299 F 2.798(yc)-.15
-G .298(ompspec de\214ned with the)-2.798 F F1<ad44>2.798 E F0 .056
-(option to)108 172.8 R F1(complete)2.556 E F0 .056(is used as the def)
+F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the)
+-.25 F(programmable completion f)108 544.8 Q(acilities are in)-.1 E -.2
+(vo)-.4 G -.1(ke).2 G(d.).1 E .498
+(First, the command name is identi\214ed.)108 561.6 R .498
+(If the command w)5.498 F .497
+(ord is the empty string \(completion attempted at)-.1 F .233(the be)108
+573.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233
+(ompspec de\214ned with the)-2.733 F F1<ad45>2.733 E F0 .233(option to)
+2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .234(If a comp-)
+5.234 F .481(spec has been de\214ned for that command, the compspec is \
+used to generate the list of possible completions)108 585.6 R .822
+(for the w)108 597.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F
+.823(ord is a full pathname, a compspec for the full pathname is search\
+ed for)-.1 F 2.867(\214rst. If)108 609.6 R .366(no compspec is found fo\
+r the full pathname, an attempt is made to \214nd a compspec for the po\
+rtion)2.867 F(follo)108 621.6 Q .298(wing the \214nal slash.)-.25 F .298
+(If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15
+G .299(ompspec de\214ned with the)-2.799 F F1<ad44>2.799 E F0 .057
+(option to)108 633.6 R F1(complete)2.557 E F0 .056(is used as the def)
2.556 F 2.556(ault. If)-.1 F .056(there is no def)2.556 F .056
(ault compspec,)-.1 F F1(bash)2.556 E F0 .056(attempts alias e)2.556 F
-.057(xpansion on)-.15 F .333(the command w)108 184.8 R .332(ord as a \
+.056(xpansion on)-.15 F .332(the command w)108 645.6 R .332(ord as a \
\214nal resort, and attempts to \214nd a compspec for the command w)-.1
-F .332(ord from an)-.1 F 2.832(ys)-.15 G(uc-)-2.832 E(cessful e)108
-196.8 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\
-d to generate the list of matching w)108 213.6 R 3.317(ords. If)-.1 F
-3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 225.6 Q
+F .332(ord from an)-.1 F 2.833(ys)-.15 G(uc-)-2.833 E(cessful e)108
+657.6 Q(xpansion.)-.15 E .817(Once a compspec has been found, it is use\
+d to generate the list of matching w)108 674.4 R 3.317(ords. If)-.1 F
+3.317(ac)3.317 G .817(ompspec is not)-3.317 F(found, the def)108 686.4 Q
(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 242.4 R
-.463(Only matches which are pre\214x)5.464 F .463(ed by the w)-.15 F
-.463(ord being)-.1 F .595(completed are returned.)108 254.4 R .595
-(When the)5.595 F F1<ad66>3.095 E F0(or)3.095 E F1<ad64>3.095 E F0 .596
+(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .463
+(First, the actions speci\214ed by the compspec are used.)108 703.2 R
+.464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F
+.464(ord being)-.1 F .596(completed are returned.)108 715.2 R .596
+(When the)5.596 F F1<ad66>3.096 E F0(or)3.095 E F1<ad64>3.095 E F0 .595
(option is used for \214lename or directory name completion, the)3.095 F
-(shell v)108 266.4 Q(ariable)-.25 E/F2 9/Times-Bold@0 SF(FIGNORE)2.5 E
-F0(is used to \214lter the matches.)2.25 E(An)108 283.2 Q 4.084(yc)-.15
-G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584
-(xpansion pattern to the)-.15 F F1<ad47>4.084 E F0 1.584
-(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 295.2 S
-.554(rds generated by the pattern need not match the w).1 F .555
-(ord being completed.)-.1 F(The)5.555 E F2(GLOBIGNORE)3.055 E F0 .555
-(shell v)2.805 F(ari-)-.25 E
-(able is not used to \214lter the matches, b)108 307.2 Q(ut the)-.2 E F2
-(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 324 Q .321
-(xt, the string speci\214ed as the ar)-.15 F .321(gument to the)-.18 F
-F1<ad57>2.821 E F0 .32(option is considered.)2.821 F .32
-(The string is \214rst split using the)5.32 F .412(characters in the)108
-336 R F2(IFS)2.912 E F0 .412(special v)2.662 F .412
+(shell v)108 727.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0
+(is used to \214lter the matches.)2.25 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(52)190.395 E 0 Cg EP
+%%Page: 53 53
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(An)108 84 Q 4.084
+(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584
+(xpansion pattern to the)-.15 F/F1 10/Times-Bold@0 SF<ad47>4.084 E F0
+1.584(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 96
+S .555(rds generated by the pattern need not match the w).1 F .554
+(ord being completed.)-.1 F(The)5.554 E/F2 9/Times-Bold@0 SF(GLOBIGNORE)
+3.054 E F0 .554(shell v)2.804 F(ari-)-.25 E
+(able is not used to \214lter the matches, b)108 108 Q(ut the)-.2 E F2
+(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 124.8 Q
+.32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F
+F1<ad57>2.82 E F0 .321(option is considered.)2.821 F .321
+(The string is \214rst split using the)5.321 F .413(characters in the)
+108 136.8 R F2(IFS)2.913 E F0 .412(special v)2.663 F .412
(ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F
-.413(Each w)5.412 F .413(ord is then e)-.1 F(xpanded)-.15 E .092
-(using brace e)108 348 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 360
-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 372 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 384 Q
-(ords become the possible completions.)-.1 E 1.237
-(After these matches ha)108 400.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 F1<ad46>3.738 E
-F0(and)3.738 E F1<ad43>3.738 E F0 3.376(options is in)108 412.8 R -.2
-(vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375
-(the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375
-(d, the).1 F F2(COMP_LINE)5.875 E F3(,)A F2(COMP_POINT)5.625 E F3(,)A F2
-(COMP_KEY)108 424.8 Q F3(,)A F0(and)2.407 E F2(COMP_TYPE)2.657 E F0 -.25
-(va)2.407 G .157(riables are assigned v).25 F .157
-(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .158
-(Shell V)2.658 F(ariables)-.92 E F0 5.158(.I)C(f)-5.158 E 3.486(as)108
-436.8 S .986(hell function is being in)-3.486 F -.2(vo)-.4 G -.1(ke).2 G
+.412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091
+(using brace e)108 148.8 R .091(xpansion, tilde e)-.15 F .092
+(xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092
+(xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108
+160.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H
+(nder).15 E F2(EXP)3.896 E(ANSION)-.666 E/F3 9/Times-Roman@0 SF(.)A F0
+1.396(The results are split using the rules described)5.896 F(abo)108
+172.8 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209
+(rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209
+(xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21
+(ord being com-)-.1 F(pleted, and the matching w)108 184.8 Q
+(ords become the possible completions.)-.1 E .234
+(After these matches ha)108 201.6 R .534 -.15(ve b)-.2 H .234
+(een generated, an).15 F 2.734(ys)-.15 G .233
+(hell function or command speci\214ed with the)-2.734 F F1<ad46>2.733 E
+F0(and)2.733 E F1<ad43>2.733 E F0(op-)2.733 E 4.208(tions is in)108
+213.6 R -.2(vo)-.4 G -.1(ke).2 G 6.708(d. When).1 F 4.209
+(the command or function is in)6.708 F -.2(vo)-.4 G -.1(ke).2 G 4.209
+(d, the).1 F F2(COMP_LINE)6.709 E F3(,)A F2(COMP_POINT)6.459 E F3(,)A F2
+(COMP_KEY)108 225.6 Q F3(,)A F0(and)2.408 E F2(COMP_TYPE)2.658 E F0 -.25
+(va)2.408 G .157(riables are assigned v).25 F .157
+(alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .157
+(Shell V)2.657 F(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108
+237.6 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G
.986(d, the).1 F F2(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F2
(COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986
-(riables are also set.).25 F(When)5.985 E .346
-(the function or command is in)108 448.8 R -.2(vo)-.4 G -.1(ke).2 G .346
-(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.847(\)i)C
-2.847(st)-2.847 G .347(he name of the command whose ar)-2.847 F(guments)
--.18 E .264(are being completed, the second ar)108 460.8 R .264
-(gument \()-.18 F F1($2)A F0 2.764(\)i)C 2.764(st)-2.764 G .264(he w)
--2.764 F .263(ord being completed, and the third ar)-.1 F .263
-(gument \()-.18 F F1($3)A F0 2.763(\)i)C(s)-2.763 E .628(the w)108 472.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 484.8 R
-.715(ainst the w)-.05 F .714(ord being completed is performed; the func\
+(riables are also set.).25 F(When)5.986 E .347
+(the function or command is in)108 249.6 R -.2(vo)-.4 G -.1(ke).2 G .347
+(d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.846(\)i)C
+2.846(st)-2.846 G .346(he name of the command whose ar)-2.846 F(guments)
+-.18 E .263(are being completed, the second ar)108 261.6 R .263
+(gument \()-.18 F F1($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264(he w)
+-2.763 F .264(ord being completed, and the third ar)-.1 F .264
+(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 273.6
+R .629(ord preceding the w)-.1 F .629
+(ord being completed on the current command line.)-.1 F .628
+(No \214ltering of the generated)5.629 F .714(completions ag)108 285.6 R
+.714(ainst the w)-.05 F .714(ord being completed is performed; the func\
tion or command has complete free-)-.1 F(dom in generating the matches.)
-108 496.8 Q(An)108 513.6 Q 2.937(yf)-.15 G .437
-(unction speci\214ed with)-2.937 F F1<ad46>2.937 E F0 .437(is in)2.937 F
+108 297.6 Q(An)108 314.4 Q 2.938(yf)-.15 G .437
+(unction speci\214ed with)-2.938 F F1<ad46>2.937 E F0 .437(is in)2.937 F
-.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437
(function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437
-(he shell f)-2.937 F .438(acilities, including)-.1 F(the)108 525.6 Q F1
-(compgen)2.957 E F0 -.2(bu)2.957 G .457(iltin described belo).2 F 1.756
--.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .456
+(he shell f)-2.937 F .437(acilities, including)-.1 F(the)108 326.4 Q F1
+(compgen)2.956 E F0 -.2(bu)2.956 G .456(iltin described belo).2 F 1.756
+-.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .457
(It must put the possible completions in the)5.456 F F2(COMPREPL)108
-537.6 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25
-E(Ne)108 554.4 Q .08(xt, an)-.15 F 2.58(yc)-.15 G .08
-(ommand speci\214ed with the)-2.58 F F1<ad43>2.58 E F0 .081
-(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.581(na)
--2.581 G 2.581(ne)-2.581 G -.4(nv)-2.581 G .081(ironment equi).4 F -.25
-(va)-.25 G .081(lent to command sub-).25 F 2.859(stitution. It)108 566.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
-578.4 Q(wline, if necessary)-.25 E(.)-.65 E .376
-(After all of the possible completions are generated, an)108 595.2 R
-2.877<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.877
-E F0 .377(option is applied to the)2.877 F 3.182(list. The)108 607.2 R
-.682(\214lter is a pattern as used for pathname e)3.182 F .681
-(xpansion; a)-.15 F F1(&)3.181 E F0 .681
-(in the pattern is replaced with the te)3.181 F .681(xt of)-.15 F .522
-(the w)108 619.2 R .522(ord being completed.)-.1 F 3.022(Al)5.522 G
-(iteral)-3.022 E F1(&)3.022 E F0 .523
+338.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25
+E(Ne)108 355.2 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081
+(ommand speci\214ed with the)-2.581 F F1<ad43>2.581 E F0 .081
+(option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.58(na)
+-2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08(ironment equi).4 F -.25(va)
+-.25 G .08(lent to command sub-).25 F 2.858(stitution. It)108 367.2 R
+.359(should print a list of completions, one per line, to the standard \
+output.)2.858 F .359(Backslash may be used)5.359 F(to escape a ne)108
+379.2 Q(wline, if necessary)-.25 E(.)-.65 E .377
+(After all of the possible completions are generated, an)108 396 R 2.877
+<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F1<ad58>2.876 E F0
+.376(option is applied to the)2.876 F 3.181(list. The)108 408 R .681
+(\214lter is a pattern as used for pathname e)3.181 F .681(xpansion; a)
+-.15 F F1(&)3.181 E F0 .682(in the pattern is replaced with the te)3.182
+F .682(xt of)-.15 F .523(the w)108 420 R .523(ord being completed.)-.1 F
+3.023(Al)5.523 G(iteral)-3.023 E F1(&)3.023 E F0 .522
(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 631.2 R
-(An)5.85 E 3.35(yc)-.15 G .849
-(ompletion that matches the pattern will be remo)-3.35 F -.15(ve)-.15 G
-3.349(df).15 G .849(rom the list.)-3.349 F 3.349(Al)5.849 G(eading)
--3.349 E F1(!)3.349 E F0(ne)108 643.2 Q -.05(ga)-.15 G .764
+-.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 432 R
+(An)5.849 E 3.349(yc)-.15 G .849
+(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G
+3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1
+(!)3.35 E F0(ne)108 444 Q -.05(ga)-.15 G .764
(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 655.2 Q F0
+3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 456 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
-672 Q 3.087(,a)-.65 G .887 -.15(ny p)-3.087 H .587(re\214x and suf).15 F
-.587(\214x speci\214ed with the)-.25 F F1<ad50>3.087 E F0(and)3.087 E F1
-<ad53>3.087 E F0 .587(options are added to each member of the com-)3.087
-F(pletion list, and the result is returned to the readline completion c\
-ode as the list of possible completions.)108 684 Q .246(If the pre)108
-700.8 R .247(viously-applied actions do not generate an)-.25 F 2.747(ym)
--.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)2.747 F(names)
--.15 E F0 .247(option w)2.747 F .247(as supplied to)-.1 F F1(complete)
-108 712.8 Q F0(when the compspec w)2.5 E
-(as de\214ned, directory name completion is attempted.)-.1 E 2.03
-(If the)108 729.6 R F1 2.03(\255o plusdirs)4.53 F F0 2.03(option w)4.53
-F 2.029(as supplied to)-.1 F F1(complete)4.529 E F0 2.029
-(when the compspec w)4.529 F 2.029(as de\214ned, directory name)-.1 F
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(52)188.455 E 0 Cg EP
-%%Page: 53 53
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(completion is attempted and an)108 84 Q 2.5(ym)-.15 G
-(atches are added to the results of the other actions.)-2.5 E .559
-(By def)108 100.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 112.8 R .632(The def)5.632 F(ault)-.1
-E/F1 10/Times-Bold@0 SF(bash)3.132 E F0 .631
-(completions are not attempted, and the readline def)3.131 F .631
-(ault of \214le-)-.1 F .558(name completion is disabled.)108 124.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 136.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
+472.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15
+F .587(\214x speci\214ed with the)-.25 F F1<ad50>3.087 E F0(and)3.087 E
+F1<ad53>3.087 E F0 .587(options are added to each member of the com-)
+3.087 F(pletion list, and the result is returned to the readline comple\
+tion code as the list of possible completions.)108 484.8 Q .247
+(If the pre)108 501.6 R .247(viously-applied actions do not generate an)
+-.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir)
+2.747 F(names)-.15 E F0 .247(option w)2.747 F .246(as supplied to)-.1 F
+F1(complete)108 513.6 Q F0(when the compspec w)2.5 E
+(as de\214ned, directory name completion is attempted.)-.1 E .461
+(If the)108 530.4 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w)
+2.962 F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462
+(when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1
+F(pletion is attempted and an)108 542.4 Q 2.5(ym)-.15 G
+(atches are added to the results of the other actions.)-2.5 E .56
+(By def)108 559.2 R .56(ault, if a compspec is found, whate)-.1 F -.15
+(ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559
+(enerates is returned to the completion code as the full set)-3.06 F
+.631(of possible completions.)108 571.2 R .631(The def)5.631 F(ault)-.1
+E F1(bash)3.131 E F0 .631
+(completions are not attempted, and the readline def)3.131 F .632
+(ault of \214le-)-.1 F .559(name completion is disabled.)108 583.2 R
+.559(If the)5.559 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w)
+3.059 F .559(as supplied to)-.1 F F1(complete)3.058 E F0 .558
+(when the compspec)3.058 F -.1(wa)108 595.2 S 3.171(sd).1 G .671
+(e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671
(ault completions are attempted if the compspec generates no matches.)
--.1 F .671(If the)5.671 F F1<ad6f>3.171 E(default)108 148.8 Q F0 1.207
-(option w)3.706 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0
+-.1 F .672(If the)5.672 F F1<ad6f>3.172 E(default)108 607.2 Q F0 1.207
+(option w)3.707 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0
1.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
+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
-160.8 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.)
+619.2 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 177.6 R .632(tions force\
- readline to append a slash to completed names which are symbolic links\
- to directories, subject)108 189.6 R 2.762(to the v)108 201.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 213.6
-Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E
-.19(There is some support for dynamically modifying completions.)108
-230.4 R .191(This is most useful when used in combina-)5.191 F 1.172
-(tion with a def)108 242.4 R 1.172(ault completion speci\214ed with)-.1
+desired, the programmable completion func-)108 636 R .633(tions force r\
+eadline to append a slash to completed names which are symbolic links t\
+o directories, subject)108 648 R 2.761(to the v)108 660 R 2.761
+(alue of the)-.25 F F1(mark\255dir)5.261 E(ectories)-.18 E F0 2.761
+(readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762
+(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 672 Q
+(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E
+.191(There is some support for dynamically modifying completions.)108
+688.8 R .19(This is most useful when used in combina-)5.191 F 1.172
+(tion with a def)108 700.8 R 1.172(ault completion speci\214ed with)-.1
F F1 1.172(complete \255D)3.672 F F0 6.172(.I)C(t')-6.172 E 3.672(sp)
-.55 G 1.172(ossible for shell functions e)-3.672 F -.15(xe)-.15 G 1.172
(cuted as).15 F .93(completion handlers to indicate that completion sho\
-uld be retried by returning an e)108 254.4 R .93(xit status of 124.)-.15
+uld be retried by returning an e)108 712.8 R .93(xit status of 124.)-.15
F .93(If a)5.93 F .1(shell function returns 124, and changes the compsp\
-ec associated with the command on which completion is)108 266.4 R .665
-(being attempted \(supplied as the \214rst ar)108 278.4 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
-290.4 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 302.4 Q(uilt dynamicall\
-y as completion is attempted, rather than being loaded all at once.)-.2
-E -.15(Fo)108 319.2 S 2.636(ri).15 G .137
-(nstance, assuming that there is a library of compspecs, each k)-2.636 F
+ec associated with the command on which completion is)108 724.8 R
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(53)190.395 E 0 Cg EP
+%%Page: 54 54
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .666
+(being attempted \(supplied as the \214rst ar)108 84 R .665
+(gument when the function is e)-.18 F -.15(xe)-.15 G .665
+(cuted\), programmable completion).15 F .083(restarts from the be)108 96
+R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc)-.25 G
+.084(ompspec for that command.)-2.584 F .084(This allo)5.084 F .084
+(ws a set of)-.25 F(completions to be b)108 108 Q(uilt dynamically as c\
+ompletion is attempted, rather than being loaded all at once.)-.2 E -.15
+(Fo)108 124.8 S 2.637(ri).15 G .137
+(nstance, assuming that there is a library of compspecs, each k)-2.637 F
.137(ept in a \214le corresponding to the name of)-.1 F
-(the command, the follo)108 331.2 Q(wing def)-.25 E
+(the command, the follo)108 136.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 348 Q({)108 360 Q 6(.")
-144 372 S(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6
-E(})108 384 Q
-(complete -D -F _completion_loader -o bashdefault -o default)108 396 Q
-/F3 10.95/Times-Bold@0 SF(HIST)72 424.8 Q(OR)-.197 E(Y)-.383 E F0 .372
-(When the)108 436.8 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 448.8 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 460.8 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
+E/F1 10/Courier@0 SF(_completion_loader\(\))108 153.6 Q({)108 165.6 Q 6
+(.")144 177.6 S
+(/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108
+189.6 Q(complete -D -F _completion_loader -o bashdefault -o default)108
+201.6 Q/F2 10.95/Times-Bold@0 SF(HIST)72 230.4 Q(OR)-.197 E(Y)-.383 E F0
+.371(When the)108 242.4 R/F3 10/Times-Bold@0 SF .371(\255o history)2.871
+F F0 .371(option to the)2.871 F F3(set)2.872 E F0 -.2(bu)2.872 G .372
+(iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4
+10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305
+(the list of commands pre)108 254.4 R .305(viously typed.)-.25 F .305
+(The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE)
+2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25
+F .429(mands to sa)108 266.4 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429
+(istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5
+(HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F
+-.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287
(stores each command in the history list prior to parameter and v)108
-472.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 484.8
-S 4.066(ta).2 G 1.565(fter history e)-4.066 F 1.565
+278.4 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E
+(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 290.4
+S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565
(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 496.8 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.)
+(and)3.816 E F5(HISTCONTR)108 302.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 513.6 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
-525.6 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315
+108 319.2 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1
+E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108
+331.2 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315
(is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G
-.315(ontain no more than the number of)-2.815 F .658
-(lines speci\214ed by the v)108 537.6 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 549.6 S
+.315(ontain no more than the number of)-2.815 F .659
+(lines speci\214ed by the v)108 343.2 R .659(alue of)-.25 F F5
+(HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F3(HISTFILESIZE)3.158 E F0
+.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 355.2 S
.142(lue, or a numeric v).25 F .142
(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 561.6 Q 1.604
+(When the history \214le is read, lines)5.142 F(be)108 367.2 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 .151
-(stamps for the follo)108 573.6 R .151(wing history line.)-.25 F .151
+(wed immediately by a digit are interpreted as time-)-.25 F .15
+(stamps for the follo)108 379.2 R .15(wing history line.)-.25 F .151
(These timestamps are optionally displayed depending on the v)5.151 F
-.15(alue of)-.25 F(the)108 585.6 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
+.151(alue of)-.25 F(the)108 391.2 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E
+F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059
(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5
-($HISTSIZE)3.559 E F0 1.059(lines are)3.309 F .159
-(copied from the history list to)108 597.6 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
-609.6 Q F0(under)2.581 E F5 .081(SHELL B)2.581 F(UIL)-.09 E .081
+($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158
+(copied from the history list to)108 403.2 R F5($HISTFILE)2.658 E F6(.)A
+F0 .158(If the)4.658 F F3(histappend)2.658 E F0 .159
+(shell option is enabled \(see the description of)2.659 F F3(shopt)108
+415.2 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082
(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 621.6 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 633.6 R F5(HISTTIMEFORMA)3.083 E(T)-.855 E F0 -.25(va)2.834
+.196(history \214le is o)108 427.2 R -.15(ve)-.15 G 2.696(rwritten. If)
+.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\
+ unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584
+(If the)108 439.2 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834
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 645.6 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 657.6
-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 669.6 R F5(HISTFILESIZE)3.257 E
+F .583(ed with the his-)-.1 F 1.147(tory comment character)108 451.2 R
+3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147
+(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148
+(This uses the history comment)6.148 F 1.377
+(character to distinguish timestamps from other history lines.)108 463.2
+R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G
+1.376(he history \214le is)-3.876 F .756
+(truncated to contain no more than)108 475.2 R F5(HISTFILESIZE)3.257 E
F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757
-(is unset, or set to null, a non-)3.007 F(numeric v)108 681.6 Q
+(is unset, or set to null, a non-)3.007 F(numeric v)108 487.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 698.4 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 710.4 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 1.603
-(manipulate the history \214le.)108 722.4 R 1.604
-(When using command-line editing, search commands are a)6.604 F -.25(va)
--.2 G 1.604(ilable in each).25 F(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(53)188.455 E 0 Cg EP
-%%Page: 54 54
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E
-(editing mode that pro)108 84 Q(vide access to the history list.)-.15 E
-1.486(The shell allo)108 100.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
-/F1 9/Times-Bold@0 SF(HISTCONTR)3.985 E(OL)-.27 E F0(and)3.735 E F1
-(HISTIGNORE)108 112.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/F2 10
-/Times-Bold@0 SF(cmdhist)108 124.8 Q F0 .75
+(alue less than zero, the history \214le is not truncated.)-.25 E .299
+(The b)108 504 R .299(uiltin command)-.2 F F3(fc)2.799 E F0(\(see)2.799
+E F5 .299(SHELL B)2.799 F(UIL)-.09 E .299(TIN COMMANDS)-.828 F F0(belo)
+2.549 E .298(w\) may be used to list or edit and re-e)-.25 F -.15(xe)
+-.15 G(-).15 E .471(cute a portion of the history list.)108 516 R(The)
+5.471 E F3(history)2.971 E F0 -.2(bu)2.971 G .472
+(iltin may be used to display or modify the history list and).2 F .002
+(manipulate the history \214le.)108 528 R .001
+(When using command-line editing, search commands are a)5.002 F -.25(va)
+-.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 540 Q
+(vide access to the history list.)-.15 E 1.485(The shell allo)108 556.8
+R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486
+(hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt)
+-3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F5(HISTCONTR)3.986
+E(OL)-.27 E F0(and)3.736 E F5(HISTIGNORE)108 568.8 Q F0 -.25(va)2.708 G
+.458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o)
+-.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3
+(cmdhist)108 580.8 Q F0 .75
(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 136.8 R 3.577(,a)-.65 G 1.077
+(the same history entry)108 592.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 F2(lithist)3.577 E F0
-.374(shell option causes the shell to sa)108 148.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 160.8 R F2(shopt)2.818 E F0 -.2(bu)2.818 G .318
-(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F
-(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .319
+1.077(yntactic correctness.)-3.577 F(The)6.077 E F3(lithist)3.576 E F0
+.373(shell option causes the shell to sa)108 604.8 R .674 -.15(ve t)-.2
+H .374(he command with embedded ne).15 F .374
+(wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319
+(description of the)108 616.8 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318
+(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F5 .318(SHELL B)2.818 F
+(UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318
(for information on setting and)2.568 F(unsetting shell options.)108
-172.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 189.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 201.6 R .611
-(xpansion feature that is similar to the history e)-.15 F .61
-(xpansion in)-.15 F F2(csh)3.11 E F0 5.61(.T)C .61(his section)-5.61 F
-.87(describes what syntax features are a)108 213.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 225.6 R F2(+H)4.514 E F0 2.014
-(option to the)4.514 F F2(set)4.514 E F0 -.2(bu)4.514 G 2.014
-(iltin command \(see).2 F F1 2.013(SHELL B)4.513 F(UIL)-.09 E 2.013
-(TIN COMMANDS)-.828 F F0(belo)108 237.6 Q 2.5(w\). Non-interacti)-.25 F
-.3 -.15(ve s)-.25 H(hells do not perform history e).15 E
-(xpansion by def)-.15 E(ault.)-.1 E 1.305(History e)108 254.4 R 1.305
-(xpansions introduce w)-.15 F 1.306(ords from the history list into the\
- input stream, making it easy to repeat)-.1 F .21
-(commands, insert the ar)108 266.4 R .21(guments to a pre)-.18 F .209
+628.8 Q F2(HIST)72 645.6 Q(OR)-.197 E 2.738(YE)-.383 G(XP)-2.738 E
+(ANSION)-.81 E F0 .61(The shell supports a history e)108 657.6 R .611
+(xpansion feature that is similar to the history e)-.15 F .611
+(xpansion in)-.15 F F3(csh)3.111 E F0 5.611(.T)C .611(his section)-5.611
+F .871(describes what syntax features are a)108 669.6 R -.25(va)-.2 G
+3.371(ilable. This).25 F .871(feature is enabled by def)3.371 F .87
+(ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F
+.949(can be disabled using the)108 681.6 R F3(+H)3.449 E F0 .949
+(option to the)3.449 F F3(set)3.449 E F0 -.2(bu)3.449 G .949
+(iltin command \(see).2 F F5 .949(SHELL B)3.449 F(UIL)-.09 E .95
+(TIN COMMANDS)-.828 F F0(be-)3.2 E(lo)108 693.6 Q 2.5
+(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H
+(hells do not perform history e).15 E(xpansion by def)-.15 E(ault.)-.1 E
+1.306(History e)108 710.4 R 1.306(xpansions introduce w)-.15 F 1.306(or\
+ds from the history list into the input stream, making it easy to repea\
+t)-.1 F .209(commands, insert the ar)108 722.4 R .209(guments to a pre)
+-.18 F .21
(vious command into the current input line, or \214x errors in pre)-.25
-F(vious)-.25 E(commands quickly)108 278.4 Q(.)-.65 E 1.163(History e)108
-295.2 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 307.2 S .252
+F(vious)-.25 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(54)
+190.395 E 0 Cg EP
+%%Page: 55 55
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(commands quickly)
+108 84 Q(.)-.65 E 1.164(History e)108 100.8 R 1.163(xpansion is perform\
+ed immediately after a complete line is read, before the shell breaks i\
+t into)-.15 F -.1(wo)108 112.8 S .251
(rds, and is performed on each line indi).1 F .251
-(vidually without taking quoting on pre)-.25 F .251
-(vious lines into account.)-.25 F(It)5.251 E(tak)108 319.2 Q .145
-(es place in tw)-.1 F 2.645(op)-.1 G 2.646(arts. The)-2.645 F .146(\214\
+(vidually without taking quoting on pre)-.25 F .252
+(vious lines into account.)-.25 F(It)5.252 E(tak)108 124.8 Q .146
+(es place in tw)-.1 F 2.646(op)-.1 G 2.646(arts. The)-2.646 F .146(\214\
rst is to determine which line from the history list to use during subs\
titution.)2.646 F .766(The second is to select portions of that line fo\
-r inclusion into the current one.)108 331.2 R .766
-(The line selected from the)5.766 F .253(history is the)108 343.2 R/F4
-10/Times-Italic@0 SF -.15(ev)2.753 G(ent).15 E F0 2.753(,a)C .253
-(nd the portions of that line that are acted upon are)-2.753 F F4(wor)
-2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F4(modi\214er)2.754 E(s)
--.1 E F0 .254(are a)2.754 F -.25(va)-.2 G(il-).25 E .539
-(able to manipulate the selected w)108 355.2 R 3.039(ords. The)-.1 F
-.538(line is brok)3.038 F .538(en into w)-.1 F .538(ords in the same f)
--.1 F .538(ashion as when reading)-.1 F .572(input, so that se)108 367.2
-R -.15(ve)-.25 G(ral).15 E F4(metac)3.072 E(har)-.15 E(acter)-.15 E F0
+r inclusion into the current one.)108 136.8 R .767
+(The line selected from the)5.767 F .254(history is the)108 148.8 R/F1
+10/Times-Italic@0 SF -.15(ev)2.754 G(ent).15 E F0 2.753(,a)C .253
+(nd the portions of that line that are acted upon are)-2.753 F F1(wor)
+2.753 E(ds)-.37 E F0 5.253(.V)C(arious)-6.363 E F1(modi\214er)2.753 E(s)
+-.1 E F0 .253(are a)2.753 F -.25(va)-.2 G(il-).25 E .538
+(able to manipulate the selected w)108 160.8 R 3.038(ords. The)-.1 F
+.538(line is brok)3.038 F .538(en into w)-.1 F .539(ords in the same f)
+-.1 F .539(ashion as when reading)-.1 F .573(input, so that se)108 172.8
+R -.15(ve)-.25 G(ral).15 E F1(metac)3.073 E(har)-.15 E(acter)-.15 E F0
.572(-separated w)B .572(ords surrounded by quotes are considered one w)
--.1 F 3.073(ord. His-)-.1 F .356(tory e)108 379.2 R .355
+-.1 F 3.072(ord. His-)-.1 F .355(tory e)108 184.8 R .355
(xpansions are introduced by the appearance of the history e)-.15 F .355
-(xpansion character)-.15 F 2.855(,w)-.4 G .355(hich is)-2.855 F F2(!)
-3.688 E F0 .355(by def)3.688 F(ault.)-.1 E .79(Only backslash \()108
-391.2 R F2(\\).833 E F0 3.29(\)a).833 G .79
-(nd single quotes can quote the history e)-3.29 F .79
-(xpansion character)-.15 F 3.291(,b)-.4 G .791(ut the history e)-3.491 F
+(xpansion character)-.15 F 2.855(,w)-.4 G .356(hich is)-2.855 F/F2 10
+/Times-Bold@0 SF(!)3.689 E F0 .356(by def)3.689 F(ault.)-.1 E .791
+(Only backslash \()108 196.8 R F2(\\).833 E F0 3.291(\)a).833 G .79
+(nd single quotes can quote the history e)-3.291 F .79
+(xpansion character)-.15 F 3.29(,b)-.4 G .79(ut the history e)-3.49 F
(xpansion)-.15 E .789(character is also treated as quoted if it immedia\
-tely precedes the closing double quote in a double-quoted)108 403.2 R
-(string.)108 415.2 Q(Se)108 432 Q -.15(ve)-.25 G .03
+tely precedes the closing double quote in a double-quoted)108 208.8 R
+(string.)108 220.8 Q(Se)108 237.6 Q -.15(ve)-.25 G .03
(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 444 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 456 Q(xpansion.)-.15 E(Se)108 472.8 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 484.8 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 496.8 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 508.8 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 520.8
+F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 249.6 T
+3.162(ni).25 G 3.162(fi)-3.162 G 3.162(ti)-3.162 G 3.162(su)-3.162 G
+.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)
+-.25 F F2(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F2
+(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F2(\()3.163 E
+F0(will also inhibit e)108 261.6 Q(xpansion.)-.15 E(Se)108 278.4 Q -.15
+(ve)-.25 G .11(ral shell options settable with the).15 F F2(shopt)2.61 E
+F0 -.2(bu)2.61 G .109(iltin may be used to tailor the beha).2 F .109
+(vior of history e)-.2 F(xpansion.)-.15 E .231(If the)108 290.4 R F2
+(histv)2.731 E(erify)-.1 E F0 .231
+(shell option is enabled \(see the description of the)2.731 F F2(shopt)
+2.731 E F0 -.2(bu)2.731 G .231(iltin belo).2 F .231(w\), and)-.25 F F2
+-.18(re)2.731 G(adline).18 E F0 .232(is be-)2.732 F .449(ing used, hist\
+ory substitutions are not immediately passed to the shell parser)108
+302.4 R 5.449(.I)-.55 G .448(nstead, the e)-5.449 F .448
+(xpanded line is)-.15 F 2.228(reloaded into the)108 314.4 R F2 -.18(re)
+4.728 G(adline).18 E F0 2.228(editing b)4.728 F(uf)-.2 E 2.228
+(fer for further modi\214cation.)-.25 F(If)7.228 E F2 -.18(re)4.728 G
+(adline).18 E F0 2.228(is being used, and the)4.728 F F2(histr)108 326.4
Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202
(ailed history substitution will be reloaded into the)-.1 F F2 -.18(re)
-3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 532.8 S -.25(ff).2 G
-1.161(er for correction.).25 F(The)6.161 E F2<ad70>3.661 E F0 1.161
-(option to the)3.661 F F2(history)3.661 E F0 -.2(bu)3.661 G 1.16
-(iltin command may be used to see what a history).2 F -.15(ex)108 544.8
-S .055(pansion will do before using it.).15 F(The)5.055 E F2<ad73>2.555
-E F0 .055(option to the)2.555 F F2(history)2.556 E F0 -.2(bu)2.556 G
-.056(iltin may be used to add commands to the).2 F
-(end of the history list without actually e)108 556.8 Q -.15(xe)-.15 G
+3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 338.4 S -.25(ff).2 G
+.303(er for correction.).25 F(The)5.303 E F2<ad70>2.803 E F0 .303
+(option to the)2.803 F F2(history)2.804 E F0 -.2(bu)2.804 G .304
+(iltin command may be used to see what a history e).2 F(x-)-.15 E .52
+(pansion will do before using it.)108 350.4 R(The)5.52 E F2<ad73>3.02 E
+F0 .52(option to the)3.02 F F2(history)3.02 E F0 -.2(bu)3.02 G .52
+(iltin may be used to add commands to the).2 F
+(end of the history list without actually e)108 362.4 Q -.15(xe)-.15 G
(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 573.6 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
-585.6 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 597.6 Q F2
-(Ev)87 614.4 Q(ent Designators)-.1 E F0 .205(An e)108 626.4 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 638.4 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 655.2
-Q F0 1.607(Start a history substitution, e)144 655.2 R 1.607
+(ilable for subsequent recall.).25 E 1.108(The shell allo)108 379.2 R
+1.108(ws control of the v)-.25 F 1.108
+(arious characters used by the history e)-.25 F 1.108
+(xpansion mechanism \(see the de-)-.15 F .163(scription of)108 391.2 R
+F2(histchars)2.663 E F0(abo)2.663 E .463 -.15(ve u)-.15 H(nder).15 E F2
+.163(Shell V)2.663 F(ariables)-.92 E F0 2.663(\). The)B .162
+(shell uses the history comment character to mark)2.663 F
+(history timestamps when writing the history \214le.)108 403.2 Q F2(Ev)
+87 420 Q(ent Designators)-.1 E F0 .204(An e)108 432 R -.15(ve)-.25 G
+.204(nt designator is a reference to a command line entry in the histor\
+y list.).15 F .205(Unless the reference is abso-)5.204 F(lute, e)108 444
+Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5(ot).15 G
+(he current position in the history list.)-2.5 E F2(!)108 460.8 Q F0
+1.608(Start a history substitution, e)144 460.8 R 1.608
(xcept when follo)-.15 F 1.607(wed by a)-.25 F F2(blank)4.107 E F0 4.107
-(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F
-(\(when the)144 667.2 Q F2(extglob)2.5 E F0
+(,n)C -.25(ew)-4.107 G 1.607(line, carriage return, = or \().25 F
+(\(when the)144 472.8 Q F2(extglob)2.5 E F0
(shell option is enabled using the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G
-(iltin\).).2 E F2(!)108 679.2 Q F4(n)A F0(Refer to command line)144
-679.2 Q F4(n)2.5 E F0(.).24 E F2<21ad>108 691.2 Q F4(n)A F0
-(Refer to the current command minus)144 691.2 Q F4(n)2.5 E F0(.).24 E F2
-(!!)108 703.2 Q F0(Refer to the pre)144 703.2 Q(vious command.)-.25 E
-(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 715.2 Q F4(string)
+(iltin\).).2 E F2(!)108 484.8 Q F1(n)A F0(Refer to command line)144
+484.8 Q F1(n)2.86 E F0(.).24 E F2<21ad>108 496.8 Q F1(n)A F0
+(Refer to the current command minus)144 496.8 Q F1(n)2.86 E F0(.).24 E
+F2(!!)108 508.8 Q F0(Refer to the pre)144 508.8 Q(vious command.)-.25 E
+(This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 520.8 Q F1(string)
A F0 .865(Refer to the most recent command preceding the current positi\
-on in the history list starting with)144 715.2 R F4(string)144 727.2 Q
-F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(54)188.455 E
-0 Cg EP
-%%Page: 55 55
+on in the history list starting with)144 520.8 R F1(string)144.34 532.8
+Q F0(.).22 E F2(!?)108 544.8 Q F1(string)A F2([?])A F0 1.503(Refer to t\
+he most recent command preceding the current position in the history li\
+st containing)144 556.8 R F1(string)144.34 568.8 Q F0 5.496(.T).22 G
+.496(he trailing)-5.496 F F2(?)2.996 E F0 .496(may be omitted if)2.996 F
+F1(string)3.336 E F0 .497(is follo)3.216 F .497(wed immediately by a ne)
+-.25 F 2.997(wline. If)-.25 F F1(string)2.997 E F0(is)2.997 E .391(miss\
+ing, the string from the most recent search is used; it is an error if \
+there is no pre)144 580.8 R .39(vious search)-.25 F(string.)144 592.8 Q
+/F3 12/Times-Bold@0 SF(^)108 609.8 Q F1(string1)-5 I F3(^)5 I F1
+(string2)-5 I F3(^)5 I F0 .752(Quick substitution.)144 616.8 R .752
+(Repeat the pre)5.752 F .753(vious command, replacing)-.25 F F1(string1)
+3.593 E F0(with)3.253 E F1(string2)3.593 E F0 5.753(.E).02 G(qui)-5.753
+E -.25(va)-.25 G .753(lent to).25 F -.74(``)144 628.8 S(!!:s).74 E/F4 12
+/Times-Roman@0 SF(^)5 I F1(string1)-5 I F4(^)5 I F1(string2)-5 I F4(^)5
+I F0 1.48 -.74('' \()-5 L(see).74 E F2(Modi\214ers)2.5 E F0(belo)2.5 E
+(w\).)-.25 E F2(!#)108 640.8 Q F0(The entire command line typed so f)144
+640.8 Q(ar)-.1 E(.)-.55 E F2 -.75(Wo)87 657.6 S(rd Designators).75 E F0
+-.8(Wo)108 669.6 S 1.314(rd designators are used to select desired w).8
+F 1.314(ords from the e)-.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F2(:)
+3.814 E F0 1.313(separates the e)3.813 F -.15(ve)-.25 G 1.313
+(nt speci\214cation).15 F .529(from the w)108 681.6 R .529
+(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529
+(ay be omitted if the w)-3.029 F .529(ord designator be)-.1 F .529
+(gins with a)-.15 F F2(^)3.029 E F0(,)A F2($)3.029 E F0(,)A F2(*)3.029 E
+F0(,)A F2<ad>3.029 E F0 3.029(,o)C(r)-3.029 E F2(%)3.029 E F0 5.53(.W)C
+(ords)-6.33 E .516(are numbered from the be)108 693.6 R .516
+(ginning of the line, with the \214rst w)-.15 F .516
+(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)5.515 G .515(rds are in-)
+.8 F(serted into the current line separated by single spaces.)108 705.6
+Q(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(55)190.395 E 0 Cg EP
+%%Page: 56 56
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(!?)108 84 Q/F2 10/Times-Italic@0 SF(string)A F1([?])A F0 1.503(Refer\
- to the most recent command preceding the current position in the histo\
-ry list containing)144 96 R F2(string)144 108 Q F0 5(.T).22 G
-(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2(string)2.84 E
-F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12
-/Times-Bold@0 SF(^)108 125 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3
-(^)5 I F0 .784(Quick substitution.)144 132 R .784(Repeat the pre)5.784 F
-.784(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.283 E
-F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783
-(lent to).25 F -.74(``)144 144 S(!!:s/).74 E F2(string1)A F0(/)A F2
-(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0
-(belo)2.5 E(w\).)-.25 E F1(!#)108 156 Q F0
-(The entire command line typed so f)144 156 Q(ar)-.1 E(.)-.55 E F1 -.75
-(Wo)87 172.8 S(rd Designators).75 E F0 -.8(Wo)108 184.8 S 1.313
-(rd designators are used to select desired w).8 F 1.314(ords from the e)
--.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 1.314
-(separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F
-.53(from the w)108 196.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G
-3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529
-(ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1
-($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F1<ad>3.029 E F0 3.029(,o)C(r)
--3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3
-(are numbered from the be)108 208.8 R 1.3
-(ginning of the line, with the \214rst w)-.15 F 1.301
-(ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8
-F(inserted into the current line separated by single spaces.)108 220.8 Q
-F1 2.5(0\()108 237.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 249.6 Q
-2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E
-F2(n)108.36 261.6 Q F0(The)144 261.6 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E
-F1(^)108 273.6 Q F0(The \214rst ar)144 273.6 Q 2.5(gument. That)-.18 F
-(is, w)2.5 E(ord 1.)-.1 E F1($)108 285.6 Q F0 .064(The last w)144 285.6
-R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064
-(gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F
-.063(ord if there is only)-.1 F(one w)144 297.6 Q(ord in the line.)-.1 E
-F1(%)108 309.6 Q F0(The w)144 309.6 Q(ord matched by the most recent `?)
--.1 E F2(string)A F0(?' search.)A F2(x)108.77 321.6 Q F1<ad>A F2(y)A F0
-2.5(Ar)144 321.6 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C
-(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 333.6 Q F0
-.315(All of the w)144 333.6 R .315(ords b)-.1 F .315(ut the zeroth.)-.2
-F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815
-('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316
-(if there is)2.816 F(just one w)144 345.6 Q(ord in the e)-.1 E -.15(ve)
--.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108
-357.6 Q F0(Abbre)144 357.6 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1
-<78ad>108 369.6 Q F0(Abbre)144 369.6 Q(viates)-.25 E F2(x\255$)2.5 E F0
+SF 2.5(0\()108 84 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 96 Q 2.5
+(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E/F2
+10/Times-Italic@0 SF(n)108.36 108 Q F0(The)144 108 Q F2(n)2.5 E F0(th w)
+A(ord.)-.1 E F1(^)108 120 Q F0(The \214rst ar)144 120 Q 2.5
+(gument. That)-.18 F(is, w)2.5 E(ord 1.)-.1 E F1($)108 132 Q F0 .063
+(The last w)144 132 R 2.563(ord. This)-.1 F .063(is usually the last ar)
+2.563 F .064(gument, b)-.18 F .064(ut will e)-.2 F .064
+(xpand to the zeroth w)-.15 F .064(ord if there is only)-.1 F(one w)144
+144 Q(ord in the line.)-.1 E F1(%)108 156 Q F0 1.42(The \214rst w)144
+156 R 1.42(ord matched by the most recent `?)-.1 F F2(string)A F0 1.419
+(?' search, if the search string be)B 1.419(gins with a)-.15 F
+(character that is part of a w)144 168 Q(ord.)-.1 E F2(x)108.77 180 Q F1
+<ad>A F2(y)A F0 2.5(Ar)144 180 S(ange of w)-2.5 E(ords; `\255)-.1 E F2
+(y)A F0 2.5('a)C(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)
+108 192 Q F0 .315(All of the w)144 192 R .315(ords b)-.1 F .315
+(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F
+F2(1\255$)A F0 2.815('. It)B .315(is not an error to use)2.815 F F1(*)
+2.816 E F0 .316(if there is)2.816 F(just one w)144 204 Q(ord in the e)
+-.1 E -.15(ve)-.25 G(nt; the empty string is returned in that case.).15
+E F1(x*)108 216 Q F0(Abbre)144 216 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)
+A F1<78ad>108 228 Q F0(Abbre)144 228 Q(viates)-.25 E F2(x\255$)2.5 E F0
(lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E
-(ord.)-.1 E(If a w)108 386.4 Q(ord designator is supplied without an e)
--.1 E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E
+2.5(ord. If)-.1 F F1(x)2.5 E F0(is missing, it def)2.5 E(aults to 0.)-.1
+E(If a w)108 244.8 Q(ord designator is supplied without an e)-.1 E -.15
+(ve)-.25 G(nt speci\214cation, the pre).15 E
(vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1
-(Modi\214ers)87 403.2 Q F0 .184(After the optional w)108 415.2 R .184
+(Modi\214ers)87 261.6 Q F0 .184(After the optional w)108 273.6 R .184
(ord designator)-.1 F 2.684(,t)-.4 G .183
(here may appear a sequence of one or more of the follo)-2.684 F .183
-(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 427.2 Q F1(h)108
-444 Q F0(Remo)144 444 Q .3 -.15(ve a t)-.15 H
+(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 285.6 Q
+(These modify)5 E 2.5(,o)-.65 G 2.5(re)-2.5 G(dit, the w)-2.5 E
+(ord or w)-.1 E(ords selected from the history e)-.1 E -.15(ve)-.25 G
+(nt.).15 E F1(h)108 302.4 Q F0(Remo)144 302.4 Q .3 -.15(ve a t)-.15 H
(railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t)
-108 456 Q F0(Remo)144 456 Q .3 -.15(ve a)-.15 H
+108 314.4 Q F0(Remo)144 314.4 Q .3 -.15(ve a)-.15 H
(ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r)
-108 468 Q F0(Remo)144 468 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
+108 326.4 Q F0(Remo)144 326.4 Q .3 -.15(ve a t)-.15 H(railing suf).15 E
(\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E
-(ving the basename.)-.2 E F1(e)108 480 Q F0(Remo)144 480 Q .3 -.15(ve a)
--.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 492 Q
-F0(Print the ne)144 492 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2
-E -.15(xe)-.15 G(cute it.).15 E F1(q)108 504 Q F0
-(Quote the substituted w)144 504 Q
-(ords, escaping further substitutions.)-.1 E F1(x)108 516 Q F0
-(Quote the substituted w)144 516 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5
-(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5
-E(wlines.)-.25 E F1(s/)108 528 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A
-F0(Substitute)144 540 Q F2(ne)3.081 E(w)-.15 E F0 .221
-(for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e)
-3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G
-.221(elimiter can be used in place)-2.721 F .617(of /.)144 552 R .617
+(ving the basename.)-.2 E F1(e)108 338.4 Q F0(Remo)144 338.4 Q .3 -.15
+(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108
+350.4 Q F0(Print the ne)144 350.4 Q 2.5(wc)-.25 G(ommand b)-2.5 E
+(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 362.4 Q F0
+(Quote the substituted w)144 362.4 Q
+(ords, escaping further substitutions.)-.1 E F1(x)108 374.4 Q F0 .385
+(Quote the substituted w)144 374.4 R .385(ords as with)-.1 F F1(q)2.885
+E F0 2.885(,b)C .386(ut break into w)-3.085 F .386(ords at)-.1 F F1
+(blanks)2.886 E F0 .386(and ne)2.886 F 2.886(wlines. The)-.25 F F1(q)
+2.886 E F0(and)2.886 E F1(x)2.886 E F0(modi\214ers are mutually e)144
+386.4 Q(xclusi)-.15 E -.15(ve)-.25 G 2.5(;t).15 G
+(he last one supplied is used.)-2.5 E F1(s/)108 398.4 Q F2(old)A F1(/)A
+F2(ne)A(w)-.15 E F1(/)A F0(Substitute)144 410.4 Q F2(ne)3.329 E(w)-.15 E
+F0 .469(for the \214rst occurrence of)3.279 F F2(old)3.199 E F0 .469
+(in the e)3.739 F -.15(ve)-.25 G .469(nt line.).15 F(An)5.469 E 2.969
+(yc)-.15 G .469(haracter may be used as the)-2.969 F .953
+(delimiter in place of /.)144 422.4 R .953
(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 564 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526
-E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666
-(If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166
-(ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E
-F0 5.666(.A).77 G .275(single backslash will quote the &.)144 576 R(If)
-5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2
-(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774(fn)
--2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E
-(ous history substitutions took place, the last)144 588 Q F2(string)2.84
-E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1(&)
-108 600 Q F0(Repeat the pre)144 600 Q(vious substitution.)-.25 E F1(g)
-108 612 Q F0 .397(Cause changes to be applied o)144 612 R -.15(ve)-.15 G
-2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.)
-.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898
-('\()C(e.g.,)-2.898 E(`)144 624 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w)
--.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219
-(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218
-(elimiter can be used in place of /, and the \214nal)-3.718 F .089
-(delimiter is optional if it is the last character of the e)144 636 R
--.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09
-(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 648 Q F0(.)A
-F1(G)108 660 Q F0(Apply the follo)144 660 Q(wing `)-.25 E F1(s)A F0 2.5
-('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G
-(nt line.).15 E/F4 10.95/Times-Bold@0 SF(SHELL B)72 676.8 Q(UIL)-.11 E
-(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 688.8
-R .062(uiltin command documented in this section as accepting options p\
-receded by)-.2 F F1<ad>108 700.8 Q F0(accepts)3.077 E F1<adad>3.077 E F0
-.577(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E
-F0(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E
+5.953 F -.15(ve)-.25 G .954(nt line.).15 F .131
+(The delimiter may be quoted in)144 434.4 R F2(old)2.861 E F0(and)3.401
+E F2(ne)2.991 E(w)-.15 E F0 .131(with a single backslash.)2.941 F .131
+(If & appears in)5.131 F F2(ne)2.991 E(w)-.15 E F0 2.631(,i).31 G 2.631
+(ti)-2.631 G 2.631(sr)-2.631 G(e-)-2.631 E .619(placed by)144 446.4 R F2
+(old)3.349 E F0 5.619(.A).77 G .619(single backslash will quote the &.)
+-2.5 F(If)5.619 E F2(old)3.349 E F0 .619(is null, it is set to the last)
+3.889 F F2(old)3.349 E F0(substi-)3.89 E .487(tuted, or)144 458.4 R
+2.987(,i)-.4 G 2.987(fn)-2.987 G 2.987(op)-2.987 G(re)-2.987 E .486
+(vious history substitutions took place, the last)-.25 F F2(string)3.326
+E F0 .486(in a)3.206 F F1(!?)2.986 E F2(string)A F1([?])A F0 2.986
+(search. If)5.486 F F2(ne)144.36 470.4 Q(w)-.15 E F0
+(is null, each matching)2.81 E F2(old)2.73 E F0(is deleted.)3.27 E F1(&)
+108 482.4 Q F0(Repeat the pre)144 482.4 Q(vious substitution.)-.25 E F1
+(g)108 494.4 Q F0 .397(Cause changes to be applied o)144 494.4 R -.15
+(ve)-.15 G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398
+(nt line.).15 F .398(This is used in conjunction with `)5.398 F F1(:s)A
+F0 2.898('\()C(e.g.,)-2.898 E(`)144 506.4 Q F1(:gs/)A F2(old)A F1(/)A F2
+(ne)A(w)-.15 E F1(/)A F0 .351('\) or `)B F1(:&)A F0 2.851('. If)B .351
+(used with `)2.851 F F1(:s)A F0 .351(', an)B 2.851(yd)-.15 G .35
+(elimiter can be used in place of /, and the \214nal de-)-2.851 F
+(limiter is optional if it is the last character of the e)144 518.4 Q
+-.15(ve)-.25 G(nt line.).15 E(An)5 E F1(a)2.5 E F0
+(may be used as a synon)2.5 E(ym for)-.15 E F1(g)2.5 E F0(.)A F1(G)108
+530.4 Q F0(Apply the follo)144 530.4 Q(wing `)-.25 E F1(s)A F0 2.5('o)C
+2.5(r`)-2.5 G F1(&)-2.5 E F0 2.5('m)C(odi\214er once to each w)-2.5 E
+(ord in the e)-.1 E -.15(ve)-.25 G(nt line.).15 E/F3 10.95/Times-Bold@0
+SF(SHELL B)72 547.2 Q(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .062
+(Unless otherwise noted, each b)108 559.2 R .062(uiltin command documen\
+ted in this section as accepting options preceded by)-.2 F F1<ad>108
+571.2 Q F0(accepts)3.077 E F1<adad>3.077 E F0 .577
+(to signify the end of the options.)3.077 F(The)5.577 E F1(:)3.077 E F0
+(,)A F1(true)3.077 E F0(,)A F1(false)3.077 E F0 3.077(,a)C(nd)-3.077 E
F1(test)3.077 E F0(/)A F1([)A F0 -.2(bu)3.077 G .577
-(iltins do not accept options).2 F .462(and do not treat)108 712.8 R F1
+(iltins do not accept options).2 F .461(and do not treat)108 583.2 R F1
<adad>2.961 E F0(specially)2.961 E 5.461(.T)-.65 G(he)-5.461 E F1(exit)
2.961 E F0(,)A F1(logout)2.961 E F0(,)A F1 -.18(re)2.961 G(tur).18 E(n)
-.15 E F0(,)A F1(br)2.961 E(eak)-.18 E F0(,)A F1(continue)2.961 E F0(,)A
F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu)
-2.961 G .461(iltins accept and).2 F .26(process ar)108 724.8 R .26
-(guments be)-.18 F .26(ginning with)-.15 F F1<ad>2.76 E F0 .261
-(without requiring)2.76 F F1<adad>2.761 E F0 5.261(.O)C .261(ther b)
--5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261
-(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(55)
-188.455 E 0 Cg EP
-%%Page: 56 56
+2.962 G .462(iltins accept and).2 F .261(process ar)108 595.2 R .261
+(guments be)-.18 F .261(ginning with)-.15 F F1<ad>2.761 E F0 .261
+(without requiring)2.761 F F1<adad>2.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 607.2 R 1.154(guments be)-.18 F 1.154(ginning with)-.15 F F1<ad>
+3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154
+(lid options and require).25 F F1<adad>3.654 E F0(to)3.654 E(pre)108
+619.2 Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 637.2 Q F0
+([)2.5 E F2(ar)A(guments)-.37 E F0(])A .452(No ef)144 649.2 R .452
+(fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding)
+-.15 E F2(ar)3.282 E(guments)-.37 E F0 .451(and performing an)3.221 F
+2.951(ys)-.15 G(peci\214ed)-2.951 E 2.5(redirections. The)144 661.2 R
+(return status is zero.)2.5 E F1(.)110.5 678 Q F2(\214lename)6.666 E F0
+([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 690 Q(ce)-.18 E F2
+(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
+(Read and e)144 702 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
+(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
+(vironment and return the e)-.4 F(xit)-.15 E 1.331
+(status of the last command e)144 714 R -.15(xe)-.15 G 1.331(cuted from)
+.15 F F2(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331 E F2(\214lename)
+5.741 E F0 1.33(does not contain a slash, \214le-)4.011 F .488(names in)
+144 726 R/F4 9/Times-Bold@0 SF -.666(PA)2.988 G(TH)-.189 E F0 .488
+(are used to \214nd the directory containing)2.738 F F2(\214lename)4.899
+E F0 5.489(.T).18 G .489(he \214le searched for in)-5.489 F F4 -.666(PA)
+2.989 G(TH)-.189 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E
+(56)190.395 E 0 Cg EP
+%%Page: 57 57
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.154
-(speci\214ed as accepting options interpret ar)108 84 R 1.154
-(guments be)-.18 F 1.154(ginning with)-.15 F/F1 10/Times-Bold@0 SF<ad>
-3.654 E F0 1.154(as in)3.654 F -.25(va)-.4 G 1.154
-(lid options and require).25 F F1<adad>3.654 E F0(to)3.654 E(pre)108 96
-Q -.15(ve)-.25 G(nt this interpretation.).15 E F1(:)108 114 Q F0([)2.5 E
-/F2 10/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 126 R
-.451(fect; the command does nothing be)-.25 F .452(yond e)-.15 F
-(xpanding)-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an)
-3.222 F 2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144
-138 R(return status is zero.)2.5 E F1(.)110.5 154.8 Q F2(\214lename)
-6.666 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 166.8 Q(ce)
--.18 E F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02
-(Read and e)144 178.8 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2
-(\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02
-(vironment and return the e)-.4 F(xit)-.15 E 1.458
-(status of the last command e)144 190.8 R -.15(xe)-.15 G 1.458
-(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2
-(\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F
-.608(names in)144 202.8 R/F3 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189
-E F0 .608(are used to \214nd the directory containing)2.858 F F2
-(\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in)
--5.608 F F3 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 214.8
-R -.15(xe)-.15 G 3.332(cutable. When).15 F F1(bash)3.332 E F0 .832
-(is not in)3.332 F F2 .832(posix mode)3.332 F F0 3.332(,t)C .833
-(he current directory is searched if no)-3.332 F .982
-(\214le is found in)144 226.8 R F3 -.666(PA)3.481 G(TH)-.189 E/F4 9
-/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18
-E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981
-(iltin command is turned of).2 F .981(f, the)-.25 F F3 -.666(PA)144
-238.8 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F
-(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F
-2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2
-(\214lename)144 250.8 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197
-(cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.)
-4.197 F 1.697(If the)6.697 F F1<ad54>4.197 E F0 1.696(option is)4.197 F
-(enabled,)144 262.8 Q F1(sour)3.617 E(ce)-.18 E F0 1.117(inherits an)
-3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F1(DEB)3.617 E(UG)-.1 E F0
-3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118
-(ot, an)-3.618 F(y)-.15 E F1(DEB)3.618 E(UG)-.1 E F0 1.118
-(trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36
-(restored around the call to)144 274.8 R F1(sour)2.86 E(ce)-.18 E F0
-2.86(,a)C(nd)-2.86 E F1(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F
-F1(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86
-(cutes. If).15 F F1<ad54>2.86 E F0(is)2.86 E 1.435
-(not set, and the sourced \214le changes the)144 286.8 R F1(DEB)3.935 E
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .833
+(need not be e)144 84 R -.15(xe)-.15 G 3.333(cutable. When).15 F/F1 10
+/Times-Bold@0 SF(bash)3.333 E F0 .832(is not in)3.333 F/F2 10
+/Times-Italic@0 SF .832(posix mode)3.332 F F0 3.332(,t)C .832
+(he current directory is searched if no)-3.332 F .981
+(\214le is found in)144 96 R/F3 9/Times-Bold@0 SF -.666(PA)3.481 G(TH)
+-.189 E/F4 9/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E
+(cepath)-.18 E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)
+3.481 G .981(iltin command is turned of).2 F .982(f, the)-.25 F F3 -.666
+(PA)144 108 S(TH)-.189 E F0 .112(is not searched.)2.363 F .112(If an)
+5.112 F(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)
+2.612 F 2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612
+F F2(\214lename)144 120 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985
+(cuted. Otherwise).15 F .485(the positional parameters are unchanged.)
+2.985 F .485(If the)5.485 F F1<ad54>2.985 E F0 .485(option is en-)2.985
+F(abled,)144 132 Q F1(sour)3.325 E(ce)-.18 E F0 .825(inherits an)3.325 F
+3.325(yt)-.15 G .825(rap on)-3.325 F F1(DEB)3.325 E(UG)-.1 E F0 3.325
+(;i)C 3.325(fi)-3.325 G 3.324(ti)-3.325 G 3.324(sn)-3.324 G .824(ot, an)
+-3.324 F(y)-.15 E F1(DEB)3.324 E(UG)-.1 E F0 .824(trap string is sa)
+3.324 F -.15(ve)-.2 G 3.324(da).15 G .824(nd re-)-3.324 F .817
+(stored around the call to)144 144 R F1(sour)3.317 E(ce)-.18 E F0 3.317
+(,a)C(nd)-3.317 E F1(sour)3.317 E(ce)-.18 E F0 .817(unsets the)3.317 F
+F1(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe)-.15 G
+3.317(cutes. If).15 F F1<ad54>3.317 E F0(is)3.318 E 1.435
+(not set, and the sourced \214le changes the)144 156 R F1(DEB)3.935 E
(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435
-(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.763
-(completes. The)144 298.8 R 1.262
-(return status is the status of the last command e)3.763 F 1.262
-(xited within the script \(0 if no)-.15 F(commands are e)144 310.8 Q
--.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E
-F0(is not found or cannot be read.)2.68 E F1(alias)108 327.6 Q F0([)2.5
-E F1<ad70>A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(..])-2.5 E F1(Alias)144 339.6 Q F0 2.724(with no ar)5.224 F 2.724
+(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.762
+(completes. The)144 168 R 1.262
+(return status is the status of the last command e)3.762 F 1.263
+(xited within the script \(0 if no)-.15 F(commands are e)144 180 Q -.15
+(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E F0
+(is not found or cannot be read.)2.68 E F1(alias)108 196.8 Q F0([)2.5 E
+F1<ad70>A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])
+-2.5 E F1(Alias)144 208.8 Q F0 2.725(with no ar)5.225 F 2.724
(guments or with the)-.18 F F1<ad70>5.224 E F0 2.724
-(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E
-F2(name)144 351.6 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F
+(option prints the list of aliases in the form)5.224 F F1(alias)5.224 E
+F2(name)144 220.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 363.6 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15
+3.08 E F0(whose)144 232.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 .009(ed for alias substi-)-.1 F .579
-(tution when the alias is e)144 375.6 R 3.079(xpanded. F)-.15 F .579
+(ord to be check)-.1 F .008(ed for alias substi-)-.1 F .579
+(tution when the alias is e)144 244.8 R 3.079(xpanded. F)-.15 F .579
(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 .578(is sup-)3.078
-F 1.313(plied, the name and v)144 387.6 R 1.314
+(gument list for which no)-.18 F F2(value)3.079 E F0 .579(is sup-)3.079
+F 1.314(plied, the name and v)144 256.8 R 1.314
(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314
-(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F
--.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E
-(which no alias has been de\214ned.)144 399.6 Q F1(bg)108 416.4 Q F0([)
-2.5 E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144
-428.4 R F2(jobspec)3.245 E F0 .745
-(in the background, as if it had been started with)3.245 F F1(&)3.244 E
-F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 440.4 Q F0 .671
-(is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the)
--3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1
-(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419
-(when job control is disabled or)144 452.4 R 2.919(,w)-.4 G .419
-(hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G
-(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G
-(ot)-2.918 E(found or w)144 464.4 Q(as started without job control.)-.1
-E F1(bind)108 481.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0
-2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 493.2 Q F0([)2.5 E F1
+(returns true unless a)3.814 F F2(name)3.814 E F0 1.313(is gi)3.814 F
+-.15(ve)-.25 G 3.813(nf).15 G(or)-3.813 E
+(which no alias has been de\214ned.)144 268.8 Q F1(bg)108 285.6 Q F0([)
+2.5 E F2(jobspec)A F0(...])2.5 E .744(Resume each suspended job)144
+297.6 R F2(jobspec)3.244 E F0 .745
+(in the background, as if it had been started with)3.244 F F1(&)3.245 E
+F0 5.745(.I)C(f)-5.745 E F2(job-)4.985 E(spec)144 309.6 Q F0 .672
+(is not present, the shell')3.482 F 3.172(sn)-.55 G .672(otion of the)
+-3.172 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1
+(bg)5.671 E F2(jobspec)4.911 E F0 .671(returns 0 unless run)3.481 F .418
+(when job control is disabled or)144 321.6 R 2.919(,w)-.4 G .419
+(hen run with job control enabled, an)-2.919 F 2.919(ys)-.15 G
+(peci\214ed)-2.919 E F2(jobspec)2.919 E F0 -.1(wa)2.919 G 2.919(sn).1 G
+(ot)-2.919 E(found or w)144 333.6 Q(as started without job control.)-.1
+E F1(bind)108 350.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0
+2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 362.4 Q F0([)2.5 E F1
<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1<ad71>-2.5 E F2
(function)2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2(function)2.5 E F0 2.5(][)C
-F1<ad72>-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 505.2 Q F0
+F1<ad72>-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 374.4 Q F0
([)2.5 E F1<ad6d>A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F1<ad66>2.5 E F2
-(\214lename)2.5 E F1(bind)108 517.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5
+(\214lename)2.5 E F1(bind)108 386.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)2.5
G(ymap)-.2 E F0(])A F1<ad78>2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2
-(shell\255command)A F1(bind)108 529.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
+(shell\255command)A F1(bind)108 398.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2
-(function\255name)A F1(bind)108 541.2 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
+(function\255name)A F1(bind)108 410.4 Q F0([)2.5 E F1<ad6d>A F2 -.1(ke)
2.5 G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C
-(adline\255command).37 E F0 .238(Display current)144 553.2 R F1 -.18(re)
-2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239
-(nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239
-(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or)
-2.739 F .476(macro, or set a)144 565.2 R F1 -.18(re)2.976 G(adline).18 E
-F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F
-.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2
-(.inputr)144 577.2 Q(c)-.37 E F0 2.983(,b).31 G .484
-(ut each binding or command must be passed as a separate ar)-3.183 F
-.484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
-(re\255read\255init\255\214le'. Options,)144 589.2 R(if supplied, ha)2.5
+(adline\255command).37 E F0 .239(Display current)144 422.4 R F1 -.18(re)
+2.739 G(adline).18 E F0 -.1(ke)2.739 G 2.739(ya)-.05 G .239
+(nd function bindings, bind a k)-2.739 F .539 -.15(ey s)-.1 H .238
+(equence to a).15 F F1 -.18(re)2.738 G(adline).18 E F0 .238(function or)
+2.738 F .475(macro, or set a)144 434.4 R F1 -.18(re)2.975 G(adline).18 E
+F0 -.25(va)2.975 G 2.975(riable. Each).25 F .476(non-option ar)2.976 F
+.476(gument is a command as it w)-.18 F .476(ould appear in)-.1 F F2
+(.inputr)144.23 446.4 Q(c)-.37 E F0 2.968(,b).31 G .467
+(ut each binding or command must be passed as a separate ar)-3.168 F
+.467(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
+(re\255read\255init\255\214le'. Options,)144 458.4 R(if supplied, ha)2.5
E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad6d>144
-601.2 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 613.2 Q F2 -.1(ke)5.159 G
-(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af)
-.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E
-F2 -.1(ke)180 625.2 S(ymap)-.2 E F0 3.192(names are)5.882 F F2 3.192
-(emacs, emacs\255standar)5.692 F 3.193
+470.4 Q F2 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 482.4 Q F2 -.1(ke)5.158 G
+(ymap)-.2 E F0 2.658(as the k)5.348 F -.15(ey)-.1 G 2.658(map to be af)
+.15 F 2.659(fected by the subsequent bindings.)-.25 F(Acceptable)7.659 E
+F2 -.1(ke)180 494.4 S(ymap)-.2 E F0 3.193(names are)5.883 F F2 3.193
+(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 637.2 Q F0 4.114(,a)C(nd)-4.114 E F2(vi\255insert)
-4.114 E F0(.).68 E F2(vi)6.614 E F0 1.613(is equi)4.114 F -.25(va)-.25 G
-1.613(lent to).25 F F2(vi\255command)4.113 E F0(\()4.113 E F2(vi\255mo)A
-(ve)-.1 E F0 1.613(is also a syn-)4.113 F(on)180 649.2 Q(ym\);)-.15 E F2
+(vi\255command)180 506.4 Q F0 4.089(,a)C(nd)-4.089 E F2(vi\255insert)
+4.379 E F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G
+1.589(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A
+(ve)-.1 E F0 1.59(is also a syn-)4.089 F(on)180 518.4 Q(ym\);)-.15 E F2
(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 F1<ad6c>144 661.2 Q F0
-(List the names of all)180 661.2 Q F1 -.18(re)2.5 G(adline).18 E F0
-(functions.)2.5 E F1<ad70>144 673.2 Q F0(Display)180 673.2 Q F1 -.18(re)
+(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1<ad6c>144 530.4 Q F0
+(List the names of all)180 530.4 Q F1 -.18(re)2.5 G(adline).18 E F0
+(functions.)2.5 E F1<ad70>144 542.4 Q F0(Display)180 542.4 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 F1<ad50>144 685.2
-Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0
-(function names and bindings.)2.5 E F1<ad73>144 697.2 Q F0(Display)180
-697.2 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05
+(ay that the)-.1 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad50>144 554.4
+Q F0(List current)180 554.4 Q F1 -.18(re)2.5 G(adline).18 E F0
+(function names and bindings.)2.5 E F1<ad73>144 566.4 Q F0(Display)180
+566.4 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05
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 709.2 S 2.5(yt).1 G
-(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E(GNU Bash 5.0)72 768
-Q(2018 December 7)139.295 E(56)188.455 E 0 Cg EP
-%%Page: 57 57
+-.15 G 1.155(utput in such a)-3.655 F -.1(wa)180 578.4 S 2.5(yt).1 G
+(hat the)-2.5 E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1<ad53>144 590.4 Q
+F0(Display)180 590.4 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5
+(ys)-.05 G(equences bound to macros and the strings the)-2.5 E 2.5(yo)
+-.15 G(utput.)-2.5 E F1<ad76>144 602.4 Q F0(Display)180 602.4 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 F1<ad56>144 614.4 Q F0(List current)180 614.4 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 F1<ad66>144 626.4 Q F2(\214lename)2.5 E F0(Read k)180
+638.4 Q .3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A
+F1<ad71>144 650.4 Q F2(function)2.5 E F0(Query about which k)180 662.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 F1<ad75>144 674.4 Q F2(function)
+2.5 E F0(Unbind all k)180 686.4 Q -.15(ey)-.1 G 2.5(sb).15 G
+(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1<ad72>144 698.4 Q
+F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 710.4 Q .3 -.15(ve a)-.15 H .3
+-.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0
+(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(57)190.395 E 0 Cg
+EP
+%%Page: 58 58
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad53>144 84 Q F0(Display)180 84 Q F1 -.18(re)2.5 G(adline).18 E F0
--.1(ke)2.5 G 2.5(ys)-.05 G(equences bound to macros and the strings the)
--2.5 E 2.5(yo)-.15 G(utput.)-2.5 E F1<ad76>144 96 Q F0(Display)180 96 Q
-F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G
-(an be re-read.)-2.5 E F1<ad56>144 108 Q F0(List current)180 108 Q F1
--.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E
-(alues.)-.25 E F1<ad66>144 120 Q/F2 10/Times-Italic@0 SF(\214lename)2.5
-E F0(Read k)180 132 Q .3 -.15(ey b)-.1 H(indings from).15 E F2
-(\214lename)2.5 E F0(.)A F1<ad71>144 144 Q F2(function)2.5 E F0
-(Query about which k)180 156 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)
--2.5 H .2 -.1(ke t).4 H(he named).1 E F2(function)2.5 E F0(.)A F1<ad75>
-144 168 Q F2(function)2.5 E F0(Unbind all k)180 180 Q -.15(ey)-.1 G 2.5
-(sb).15 G(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1<ad72>144
-192 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 204 Q .3 -.15(ve a)-.15 H
-.3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E
-F0(.)A F1<ad78>144 216 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2
-(shell\255command)A F0(Cause)180 228 Q F2(shell\255command)4.325 E F0
+SF<ad78>144 84 Q/F2 10/Times-Italic@0 SF -.1(ke)2.5 G(yseq)-.2 E F1(:)A
+F2(shell\255command)A F0(Cause)180 96 Q F2(shell\255command)4.325 E F0
1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve)
-.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F
-(When)6.825 E F2(shell\255com-)4.325 E(mand)180 240 Q F0 1.764(is e)
-4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9
+(When)6.825 E F2(shell\255com-)4.325 E(mand)180 108 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 252 S(adline).18 E
-F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3
-(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353
-(riable to the current location of the).25 F 2.011(insertion point.)180
-264 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011
-(cuted command changes the v).15 F 2.011(alue of)-.25 F F3
-(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 276 Q/F4 9
-/Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G
-(alues will be re\215ected in the editing state.)-2.75 E F1<ad58>144 288
-Q F0 .83(List all k)180 288 R 1.13 -.15(ey s)-.1 H .829
+(riable to the contents of the).25 F F1 -.18(re)180 120 S(adline).18 E
+F0 .375(line b)2.874 F(uf)-.2 E .375(fer and the)-.25 F F3
+(READLINE_POINT)2.875 E F0(and)2.625 E F3(READLINE_MARK)2.875 E F0 -.25
+(va)2.625 G .375(riables to the).25 F 1.186
+(current location of the insertion point and the sa)180 132 R -.15(ve)
+-.2 G 3.685(di).15 G 1.185(nsertion point \(the mark\), respec-)-3.685 F
+(ti)180 144 Q -.15(ve)-.25 G(ly).15 E 5.701(.I)-.65 G 3.201(ft)-5.701 G
+.701(he e)-3.201 F -.15(xe)-.15 G .701(cuted command changes the v).15 F
+.702(alue of an)-.25 F 3.202(yo)-.15 G(f)-3.202 E F3(READLINE_LINE)3.202
+E/F4 9/Times-Roman@0 SF(,)A F3(READ-)2.952 E(LINE_POINT)180 156 Q F4(,)A
+F0(or)3.581 E F3(READLINE_MARK)3.831 E F4(,)A F0 1.331(those ne)3.581 F
+3.831(wv)-.25 G 1.33(alues will be re\215ected in the editing)-4.081 F
+(state.)180 168 Q F1<ad58>144 180 Q F0 .829(List all k)180 180 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 300 Q(The return v)
-144 316.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 192 Q(The return v)
+144 208.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 333.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
-(Exit from within a)144 345.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
-(while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
+E F1(br)108 225.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .055
+(Exit from within a)144 237.6 R F1 -.25(fo)2.555 G(r).25 E F0(,)A F1
+(while)2.555 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1
(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 SF<b3>2.555
-E F0(1.)2.555 E(If)144 357.6 Q F2(n)3.075 E F0 .215(is greater than the\
- number of enclosing loops, all enclosing loops are e)2.955 F 2.714
-(xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144
-369.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
-(bu)108 386.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
-F2(ar)A(guments)-.37 E F0(])A(Ex)144 398.4 Q .792
-(ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2
-(ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293
-F .793(xit status.)-.15 F .793(This is useful)5.793 F .616
+(ls.).15 E F2(n)5.414 E F0 .054(must be)2.794 F/F5 10/Symbol SF<b3>2.554
+E F0(1.)2.554 E(If)144 249.6 Q F2(n)3.074 E F0 .215(is greater than the\
+ number of enclosing loops, all enclosing loops are e)2.954 F 2.715
+(xited. The)-.15 F .215(return v)2.715 F(alue)-.25 E(is 0 unless)144
+261.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
+(bu)108 278.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
+F2(ar)A(guments)-.37 E F0(])A(Ex)144 290.4 Q .771
+(ecute the speci\214ed shell b)-.15 F .771(uiltin, passing it)-.2 F F2
+(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271
+F .77(xit status.)-.15 F .77(This is useful)5.77 F .615
(when de\214ning a function whose name is the same as a shell b)144
-410.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
-422.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
+302.4 R .616(uiltin, retaining the functionality of)-.2 F .57(the b)144
+314.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
-.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 434.4 Q(alse if)-.1
+5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 326.4 Q(alse if)-.1
E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E
-(uiltin command.)-.2 E F1(caller)108 451.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
-.2 E F0(])A .254(Returns the conte)144 463.2 R .254(xt of an)-.15 F
+(uiltin command.)-.2 E F1(caller)108 343.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
+.2 E F0(])A .253(Returns the conte)144 355.2 R .254(xt of an)-.15 F
2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254
(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G
-.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 475.2 Q
-(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2
-(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324
+.254(cuted with the).15 F F1(.)2.754 E F0(or)2.754 E F1(sour)144 367.2 Q
+(ce)-.18 E F0 -.2(bu)2.825 G 2.825(iltins\). W).2 F(ithout)-.4 E F2 -.2
+(ex)2.825 G(pr).2 E F0(,)A F1(caller)2.825 E F0 .324
(displays the line number and source \214lename of the current)2.824 F
-.254(subroutine call.)144 487.2 R .254(If a non-ne)5.254 F -.05(ga)-.15
-G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
-F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253
-(displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\
+.253(subroutine call.)144 379.2 R .253(If a non-ne)5.253 F -.05(ga)-.15
+G(ti).05 E .553 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15
+F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .254
+(displays the line number)2.754 F 2.754(,s)-.4 G(ub-)-2.754 E 1.327(rou\
tine name, and source \214le corresponding to that position in the curr\
-ent e)144 499.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
-(This e)144 511.2 R .001(xtra information may be used, for e)-.15 F .001
-(xample, to print a stack trace.)-.15 F(The current frame is frame)5 E
-3.019(0. The)144 523.2 R .519(return v)3.019 F .519
-(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52
-(cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52
-(does not corre-)3.02 F(spond to a v)144 535.2 Q
-(alid position in the call stack.)-.25 E F1(cd)108 552 Q F0([)2.5 E F1
+ent e)144 391.2 R -.15(xe)-.15 G 1.327(cution call stack.).15 F(This e)
+144 403.2 Q(xtra information may be used, for e)-.15 E .001
+(xample, to print a stack trace.)-.15 F .001(The current frame is frame)
+5.001 F 3.02(0. The)144 415.2 R .52(return v)3.02 F .52
+(alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .519
+(cuting a subroutine call or).15 F F2 -.2(ex)3.019 G(pr).2 E F0 .519
+(does not corre-)3.019 F(spond to a v)144 427.2 Q
+(alid position in the call stack.)-.25 E F1(cd)108 444 Q F0([)2.5 E F1
<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A F2
-(dir)A F0(])A .322(Change the current directory to)144 564 R F2(dir)
-2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321
-(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E
-F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 576 R
-3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035
+(dir)A F0(])A .321(Change the current directory to)144 456 R F2(dir)
+2.821 E F0 5.321(.i)C(f)-5.321 E F2(dir)2.821 E F0 .322
+(is not supplied, the v)2.821 F .322(alue of the)-.25 F F3(HOME)2.822 E
+F0 .322(shell v)2.572 F .322(ariable is)-.25 F 1.036(the def)144 468 R
+3.536(ault. An)-.1 F 3.536(ya)-.15 G 1.035(dditional ar)-3.536 F 1.035
(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.)
-3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666
-G(H).855 E F0(de\214nes)3.286 E .85
-(the search path for the directory containing)144 588 R F2(dir)3.35 E F0
-3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855
-(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 600 Q F0
-5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665
+3.535 F 1.035(The v)6.035 F(ariable)-.25 E F3(CDP)3.535 E -.855(AT)-.666
+G(H).855 E F0(de\214nes)3.285 E .826
+(the search path for the directory containing)144 480 R F2(dir)3.676 E
+F0 3.326(:e).73 G .826(ach directory name in)-3.326 F F3(CDP)3.326 E
+-.855(AT)-.666 G(H).855 E F0 .827(is searched for)3.077 F F2(dir)144 492
+Q F0 5.665(.A)C(lternati)-5.665 E .965 -.15(ve d)-.25 H .665
(irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
-.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665
-(ull directory name)-3.165 F(in)144 612 Q F3(CDP)4.163 E -.855(AT)-.666
-G(H).855 E F0 1.663(is the same as the current directory)3.913 F 4.162
-(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I)
-.74 G(f)-6.662 E F2(dir)4.512 E F0(be)4.892 E 1.662
-(gins with a slash \(/\), then)-.15 F F3(CDP)144 624 Q -.855(AT)-.666 G
-(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F1<ad50>2.691 E F0 .191
-(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F .191
-(ysical directory structure by resolving)-.05 F 1.12
-(symbolic links while tra)144 636 R -.15(ve)-.2 G(rsing).15 E F2(dir)
-3.62 E F0 1.12(and before processing instances of)3.62 F F2(..)3.62 E F0
-(in)3.62 E F2(dir)3.62 E F0 1.12(\(see also the)3.62 F F1<ad50>3.62 E F0
-.395(option to the)144 648 R F1(set)2.895 E F0 -.2(bu)2.895 G .395
-(iltin command\); the).2 F F1<ad4c>2.895 E F0 .395
-(option forces symbolic links to be follo)2.895 F .395(wed by resolv-)
--.25 F .444(ing the link after processing instances of)144 660 R F2(..)
-2.943 E F0(in)2.943 E F2(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F2(..)
-2.943 E F0 .443(appears in)2.943 F F2(dir)2.943 E F0 2.943(,i)C 2.943
-(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15
-E .744(the immediately pre)144 672 R .744(vious pathname component from)
--.25 F F2(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244
-F .744(ginning of)-.15 F F2(dir)3.244 E F0(.)A 1.466(If the)144 684 R F1
-<ad65>3.966 E F0 1.466(option is supplied with)3.966 F F1<ad50>3.965 E
-F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465
-(orking directory cannot be successfully)-.1 F .467
-(determined after a successful directory change,)144 696 R F1(cd)2.968 E
-F0 .468(will return an unsuccessful status.)2.968 F .468(On systems)
-5.468 F .337(that support it, the)144 708 R F1<ad40>2.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 720 R .71(gument of)-.18 F F1<ad>3.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
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(57)188.455 E 0 Cg EP
-%%Page: 58 58
+.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .664
+(ull directory name)-3.165 F(in)144 504 Q F3(CDP)3.101 E -.855(AT)-.666
+G(H).855 E F0 .601(is the same as the current directory)2.851 F 3.102
+(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E F1(.)A F0 -.74('')C 5.602(.I)
+.74 G(f)-5.602 E F2(dir)3.452 E F0(be)3.832 E .602
+(gins with a slash \(/\), then)-.15 F F3(CD-)3.102 E -.666(PA)144 516 S
+(TH)-.189 E F0 1.003(is not used.)3.254 F(The)6.003 E F1<ad50>3.503 E F0
+1.003(option causes)3.503 F F1(cd)3.503 E F0 1.003(to use the ph)3.503 F
+1.003(ysical directory structure by resolving)-.05 F .123
+(symbolic links while tra)144 528 R -.15(ve)-.2 G(rsing).15 E F2(dir)
+2.623 E F0 .123(and before processing instances of)2.623 F F2(..)2.623 E
+F0(in)2.623 E F2(dir)2.623 E F0 .123(\(see also the)2.623 F F1<ad50>
+2.623 E F0(op-)2.623 E .43(tion to the)144 540 R F1(set)2.93 E F0 -.2
+(bu)2.93 G .43(iltin command\); the).2 F F1<ad4c>2.929 E F0 .429
+(option forces symbolic links to be follo)2.929 F .429(wed by resolving)
+-.25 F .472(the link after processing instances of)144 552 R F2(..)2.972
+E F0(in)2.972 E F2(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F2(..)2.973 E F0
+.473(appears in)2.973 F F2(dir)2.973 E F0 2.973(,i)C 2.973(ti)-2.973 G
+2.973(sp)-2.973 G .473(rocessed by remo)-2.973 F .473(ving the)-.15 F
+.948(immediately pre)144 564 R .948(vious pathname component from)-.25 F
+F2(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948
+(ginning of)-.15 F F2(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 576 Q
+F1<ad65>2.868 E F0 .368(option is supplied with)2.868 F F1<ad50>2.868 E
+F0 2.868(,a)C .368(nd the current w)-2.868 F .368
+(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612
+(mined after a successful directory change,)144 588 R F1(cd)3.112 E F0
+.612(will return an unsuccessful status.)3.112 F .612(On systems that)
+5.612 F .353(support it, the)144 600 R F1<ad40>2.853 E F0 .354
+(option presents the e)2.853 F .354(xtended attrib)-.15 F .354
+(utes associated with a \214le as a directory)-.2 F 5.354(.A)-.65 G(n)
+-5.354 E(ar)144 612 Q .072(gument of)-.18 F F1<ad>2.572 E F0 .072
+(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F3($OLDPWD)2.572 E F0
+.072(before the directory change is attempted.)2.322 F .072
+(If a non-empty)5.072 F .054(directory name from)144 624 R F3(CDP)2.554
+E -.855(AT)-.666 G(H).855 E F0 .054(is used, or if)2.304 F F1<ad>2.555 E
+F0 .055(is the \214rst ar)2.555 F .055
+(gument, and the directory change is suc-)-.18 F .168
+(cessful, the absolute pathname of the ne)144 636 R 2.668(ww)-.25 G .168
+(orking directory is written to the standard output.)-2.768 F(The)5.168
+E(return v)144 648 Q(alue is true if the directory w)-.25 E
+(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F1(command)108
+664.8 Q F0([)2.5 E F1(\255pVv)A F0(])A F2(command)2.5 E F0([)2.5 E F2
+(ar)A(g)-.37 E F0(...])2.5 E(Run)144 676.8 Q F2(command)2.764 E F0(with)
+3.334 E F2(ar)2.894 E(gs)-.37 E F0 .065
+(suppressing the normal shell function lookup.)2.834 F .065(Only b)5.065
+F .065(uiltin commands or)-.2 F .502(commands found in the)144 688.8 R
+F3 -.666(PA)3.002 G(TH)-.189 E F0 .502(are e)2.752 F -.15(xe)-.15 G
+3.002(cuted. If).15 F(the)3.002 E F1<ad70>3.002 E F0 .502(option is gi)
+3.002 F -.15(ve)-.25 G .501(n, the search for).15 F F2(command)3.201 E
+F0(is)3.771 E .399(performed using a def)144 700.8 R .399(ault v)-.1 F
+.399(alue for)-.25 F F3 -.666(PA)2.899 G(TH)-.189 E F0 .4
+(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
+5.4 E .175(either the)144 712.8 R F1<ad56>2.675 E F0(or)2.675 E F1<ad76>
+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 F1<ad76>2.674 E F0 .174
+(option causes)2.674 F 3.317(as)144 724.8 S .817(ingle w)-3.317 F .817
+(ord indicating the command or \214lename used to in)-.1 F -.2(vo)-.4 G
+-.1(ke).2 G F2(command)3.618 E F0 .818(to be displayed; the)4.088 F
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(58)190.395 E 0 Cg EP
+%%Page: 59 59
%%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 .107
-(empty directory name from)144 84 R/F1 9/Times-Bold@0 SF(CDP)2.607 E
--.855(AT)-.666 G(H).855 E F0 .107(is used, or if)2.357 F/F2 10
-/Times-Bold@0 SF<ad>2.607 E F0 .106(is the \214rst ar)2.607 F .106
-(gument, and the directory change)-.18 F .038
-(is successful, the absolute pathname of the ne)144 96 R 2.538(ww)-.25 G
-.038(orking directory is written to the standard output.)-2.638 F
-(The return v)144 108 Q(alue is true if the directory w)-.25 E
-(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108
-124.8 Q F0([)2.5 E F2(\255pVv)A F0(])A/F3 10/Times-Italic@0 SF(command)
-2.5 E F0([)2.5 E F3(ar)A(g)-.37 E F0(...])2.5 E(Run)144 136.8 Q F3
-(command)2.765 E F0(with)3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065
-(suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064
-F .064(uiltin commands or)-.2 F .501(commands found in the)144 148.8 R
-F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G
-3.002(cuted. If).15 F(the)3.002 E F2<ad70>3.002 E F0 .502(option is gi)
-3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E
-F0(is)3.772 E .4(performed using a def)144 160.8 R .4(ault v)-.1 F .4
-(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399
-(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
-5.399 E .174(either the)144 172.8 R F2<ad56>2.674 E F0(or)2.674 E F2
-<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F3
-(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F2<ad76>2.675 E
-F0 .175(option causes)2.675 F 3.318(as)144 184.8 S .818(ingle w)-3.318 F
-.817(ord indicating the command or \214lename used to in)-.1 F -.2(vo)
--.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087
-F F2<ad56>144 196.8 Q F0 .249(option produces a more v)2.749 F .249
-(erbose description.)-.15 F .249(If the)5.249 F F2<ad56>2.749 E F0(or)
-2.749 E F2<ad76>2.75 E F0 .25(option is supplied, the e)2.75 F .25
-(xit status)-.15 F 1.005(is 0 if)144 208.8 R F3(command)3.705 E F0 -.1
-(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004
-(If neither option is supplied and an error occurred or)6.005 F F3
-(command)144.2 220.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599
-(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599
-(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 232.8 S
-(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2
-(compgen)108 249.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d)
--.37 E F0(])A .013(Generate possible completion matches for)144 261.6 R
-F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513
-E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981
-(accepted by the)144 273.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981
-(iltin with the e).2 F .981(xception of)-.15 F F2<ad70>3.481 E F0(and)
-3.481 E F2<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the)
--3.481 F .131(standard output.)144 285.6 R .131(When using the)5.131 F
-F2<ad46>2.631 E F0(or)2.631 E F2<ad43>2.631 E F0 .131(options, the v)
-2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25
-F(mable completion f)144 297.6 Q(acilities, while a)-.1 E -.25(va)-.2 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad56>144 84 Q F0 .25(option produces a more v)2.75 F .25
+(erbose description.)-.15 F .249(If the)5.25 F F1<ad56>2.749 E F0(or)
+2.749 E F1<ad76>2.749 E F0 .249(option is supplied, the e)2.749 F .249
+(xit status)-.15 F 1.004(is 0 if)144 96 R/F2 10/Times-Italic@0 SF
+(command)3.704 E F0 -.1(wa)4.274 G 3.504(sf).1 G 1.005
+(ound, and 1 if not.)-3.504 F 1.005
+(If neither option is supplied and an error occurred or)6.005 F F2
+(command)144.2 108 Q F0 1.599(cannot be found, the e)4.869 F 1.599
+(xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.598
+(xit status of the)-.15 F F1(command)4.098 E F0 -.2(bu)144 120 S
+(iltin is the e).2 E(xit status of)-.15 E F2(command)2.7 E F0(.).77 E F1
+(compgen)108 136.8 Q F0([)2.5 E F2(option)A F0 2.5(][)C F2(wor)-2.5 E(d)
+-.37 E F0(])A .012(Generate possible completion matches for)144 148.8 R
+F2(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F2(option)2.513
+E F0 .013(s, which may be an)B 2.513(yo)-.15 G(ption)-2.513 E .982
+(accepted by the)144 160.8 R F1(complete)3.482 E F0 -.2(bu)3.481 G .981
+(iltin with the e).2 F .981(xception of)-.15 F F1<ad70>3.481 E F0(and)
+3.481 E F1<ad72>3.481 E F0 3.481(,a)C .981(nd write the matches to the)
+-3.481 F .13(standard output.)144 172.8 R .13(When using the)5.13 F F1
+<ad46>2.63 E F0(or)2.63 E F1<ad43>2.631 E F0 .131(options, the v)2.631 F
+.131(arious shell v)-.25 F .131(ariables set by the program-)-.25 F
+(mable completion f)144 184.8 Q(acilities, while a)-.1 E -.25(va)-.2 G
(ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25
-E .352(The matches will be generated in the same w)144 321.6 R .352
+E .352(The matches will be generated in the same w)144 208.8 R .352
(ay as if the programmable completion code had gen-)-.1 F .02(erated th\
em directly from a completion speci\214cation with the same \215ags.)144
-333.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
-2.52 F(those completions matching)144 345.6 Q F3(wor)2.5 E(d)-.37 E F0
-(will be displayed.)2.5 E(The return v)144 369.6 Q
+220.8 R(If)5.02 E F2(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
+2.52 F(those completions matching)144 232.8 Q F2(wor)2.5 E(d)-.37 E F0
+(will be displayed.)2.5 E(The return v)144 256.8 Q
(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 386.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C
-F2<ad6f>-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404
-E F0 3.404(][)C F2<ad41>-3.404 E F3(action)3.404 E F0 3.404(][)C F2
-<ad47>-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2<ad57>-3.404 E F3(wor)
-3.404 E(dlist)-.37 E F0 3.405(][)C F2<ad46>-3.405 E F3(func-)3.405 E
-(tion)108 398.4 Q F0 2.5(][)C F2<ad43>-2.5 E F3(command)2.5 E F0(])A([)
-144 410.4 Q F2<ad58>A F3(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F3
-(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2<ad53>-2.5 E F3(suf)2.5 E<8c78>
--.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2
-(complete \255pr)108 422.4 Q F0([)2.5 E F2(\255DEI)A F0 2.5(][)C F3
-(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 434.4 R 3.134(wa)-.25 G
--.18(rg)-3.134 G .634(uments to each).18 F F3(name)3.134 E F0 .634
-(should be completed.)3.134 F .633(If the)5.634 F F2<ad70>3.133 E F0
-.633(option is supplied, or if no)3.133 F .139(options are supplied, e)
-144 446.4 R .139(xisting completion speci\214cations are printed in a w)
--.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31
-(reused as input.)144 458.4 R(The)5.31 E F2<ad72>2.81 E F0 .31
-(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31
-(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C
-1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207
-(are supplied, all completion speci\214cations.)144 470.4 R(The)6.207 E
-F2<ad44>3.707 E F0 1.208(option indicates that other supplied options)
-3.708 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E
+(lid option is supplied, or no matches were generated.).25 E F1
+(complete)108 273.6 Q F0([)2.5 E F1(\255abcdefgjksuv)A F0 2.5(][)C F1
+<ad6f>-2.5 E F2(comp-option)2.5 E F0 2.5(][)C F1(\255DEI)-2.5 E F0 2.5
+(][)C F1<ad41>-2.5 E F2(action)2.5 E F0 2.5(][)C F1<ad47>-2.5 E F2
+(globpat)2.5 E F0 2.5(][)C F1<ad57>-2.5 E F2(wor)2.5 E(dlist)-.37 E F0
+(])A([)144 285.6 Q F1<ad46>A F2(function)2.5 E F0 2.5(][)C F1<ad43>-2.5
+E F2(command)2.5 E F0 2.5(][)C F1<ad58>-2.5 E F2(\214lterpat)2.5 E F0
+2.5(][)C F1<ad50>-2.5 E F2(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F1<ad53>
+-2.5 E F2(suf)2.5 E<8c78>-.18 E F0(])A F2(name)2.5 E F0([)2.5 E F2
+(name ...)A F0(])A F1(complete \255pr)108 297.6 Q F0([)2.5 E F1(\255DEI)
+A F0 2.5(][)C F2(name)-2.5 E F0(...])2.5 E .634(Specify ho)144 309.6 R
+3.134(wa)-.25 G -.18(rg)-3.134 G .634(uments to each).18 F F2(name)3.134
+E F0 .634(should be completed.)3.134 F .633(If the)5.634 F F1<ad70>3.133
+E F0 .633(option is supplied, or if no)3.133 F .139
+(options are supplied, e)144 321.6 R .139
+(xisting completion speci\214cations are printed in a w)-.15 F .14
+(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.)144
+333.6 R(The)5.31 E F1<ad72>2.81 E F0 .31(option remo)2.81 F -.15(ve)-.15
+G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F2(name)
+2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F2
+(name)2.81 E F0(s)A 1.207
+(are supplied, all completion speci\214cations.)144 345.6 R(The)6.207 E
+F1<ad44>3.707 E F0 1.208(option indicates that other supplied options)
+3.708 F .5(and actions should apply to the `)144 357.6 R(`def)-.74 E
(ault')-.1 E 3('c)-.74 G .5
(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
-494.4 S .955(ommand for which no completion has pre)-3.455 F .955
-(viously been de\214ned.)-.25 F(The)5.955 E F2<ad45>3.455 E F0 .955
+369.6 S .955(ommand for which no completion has pre)-3.455 F .955
+(viously been de\214ned.)-.25 F(The)5.955 E F1<ad45>3.455 E F0 .955
(option indicates that)3.455 F .876
-(other supplied options and actions should apply to `)144 506.4 R
+(other supplied options and actions should apply to `)144 381.6 R
(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
--3.376 F .447(pletion attempted on a blank line.)144 518.4 R(The)5.447 E
-F2<ad49>2.947 E F0 .448
-(option indicates that other supplied options and actions)2.947 F 1.335
-(should apply to completion on the inital non-assignment w)144 530.4 R
-1.334(ord on the line, or after a command)-.1 F .43(delimiter such as)
-144 542.4 R F2(;)2.93 E F0(or)2.93 E F2(|)2.93 E F0 2.93(,w)C .431
-(hich is usually command name completion.)-2.93 F .431
-(If multiple options are sup-)5.431 F .708(plied, the)144 554.4 R F2
+-3.376 F .447(pletion attempted on a blank line.)144 393.6 R(The)5.447 E
+F1<ad49>2.947 E F0 .448
+(option indicates that other supplied options and actions)2.947 F .123
+(should apply to completion on the initial non-assignment w)144 405.6 R
+.123(ord on the line, or after a command de-)-.1 F 1.02(limiter such as)
+144 417.6 R F1(;)3.52 E F0(or)3.52 E F1(|)3.52 E F0 3.52(,w)C 1.021
+(hich is usually command name completion.)-3.52 F 1.021
+(If multiple options are sup-)6.021 F .708(plied, the)144 429.6 R F1
<ad44>3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15
-(ve)-.15 G(r).15 E F2<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
-F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2
+(ve)-.15 G(r).15 E F1<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
+F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F1
<ad49>3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H
-(f).15 E F2<ad44>3.207 E F0(,)A F2<ad45>144 566.4 Q F0 2.603(,o)C(r)
--2.603 E F2<ad49>2.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
-G(ther)-2.603 E F3(name)2.603 E F0(ar)2.603 E .103
+(f).15 E F1<ad44>3.207 E F0(,)A F1<ad45>144 441.6 Q F0 2.603(,o)C(r)
+-2.603 E F1<ad49>2.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
+G(ther)-2.603 E F2(name)2.603 E F0(ar)2.603 E .103
(guments are ignored; these completions only apply to the)-.18 F
-(case speci\214ed by the option.)144 578.4 Q 1.438
+(case speci\214ed by the option.)144 453.6 Q .153
(The process of applying these completion speci\214cations when w)144
-602.4 R 1.437(ord completion is attempted is)-.1 F(described abo)144
-614.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E
+477.6 R .152(ord completion is attempted is de-)-.1 F(scribed abo)144
+489.6 Q .3 -.15(ve u)-.15 H(nder).15 E F1(Pr)2.5 E
(ogrammable Completion)-.18 E F0(.)A .555
-(Other options, if speci\214ed, ha)144 638.4 R .855 -.15(ve t)-.2 H .555
+(Other options, if speci\214ed, ha)144 513.6 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 F2<ad47>3.056 E F0(,)A F2<ad57>3.056 E F0 3.056
-(,a)C(nd)-3.056 E F2<ad58>3.056 E F0 .723(options \(and, if necessary)
-144 650.4 R 3.223(,t)-.65 G(he)-3.223 E F2<ad50>3.223 E F0(and)3.223 E
-F2<ad53>3.223 E F0 .722
+(guments to the)-.18 F F1<ad47>3.056 E F0(,)A F1<ad57>3.056 E F0 3.056
+(,a)C(nd)-3.056 E F1<ad58>3.056 E F0 .723(options \(and, if necessary)
+144 525.6 R 3.223(,t)-.65 G(he)-3.223 E F1<ad50>3.223 E F0(and)3.223 E
+F1<ad53>3.223 E F0 .722
(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E
-(sion before the)144 662.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 F2<ad6f>144 674.4 Q
-F3(comp-option)2.5 E F0(The)184 686.4 Q F3(comp-option)2.79 E F0 .291
+(sion before the)144 537.6 Q F1(complete)2.5 E F0 -.2(bu)2.5 G
+(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 549.6 Q
+F2(comp-option)2.5 E F0(The)184 561.6 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 698.4 Q F3
-(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(58)188.455 E 0 Cg EP
-%%Page: 59 59
+(yond the simple)-.15 F(generation of completions.)184 573.6 Q F2
+(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 585.6 Q F0
+.281(Perform the rest of the def)224 597.6 R(ault)-.1 E F1(bash)2.781 E
+F0 .281(completions if the compspec generates no)2.781 F(matches.)224
+609.6 Q F1(default)184 621.6 Q F0 2.875(Use readline')224 621.6 R 5.375
+(sd)-.55 G(ef)-5.375 E 2.876
+(ault \214lename completion if the compspec generates no)-.1 F(matches.)
+224 633.6 Q F1(dir)184 645.6 Q(names)-.15 E F0(Perform directory name c\
+ompletion if the compspec generates no matches.)224 657.6 Q F1
+(\214lenames)184 669.6 Q F0 -.7(Te)224 681.6 S .137(ll readline that th\
+e compspec generates \214lenames, so it can perform an).7 F 2.636<798c>
+-.15 G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 693.6 R
+2.634(ea)-.1 G .134(dding a slash to directory names, quoting spe-)
+-2.634 F .45(cial characters, or suppressing trailing spaces\).)224
+705.6 R .45(Intended to be used with shell)5.45 F(functions.)224 717.6 Q
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(59)190.395 E 0 Cg EP
+%%Page: 60 60
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(bashdefault)184 84 Q F0 .281(Perform the rest of the def)224 96 R
-(ault)-.1 E F1(bash)2.781 E F0 .281
-(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1
-(default)184 120 Q F0 2.875(Use readline')224 120 R 5.375(sd)-.55 G(ef)
--5.375 E 2.876(ault \214lename completion if the compspec generates no)
--.1 F(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform direc\
-tory name completion if the compspec generates no matches.)224 156 Q F1
-(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\
-mpspec generates \214lenames, so it can perform an).7 F 2.636<798c>-.15
-G(le-)-2.636 E .134(name\255speci\214c processing \(lik)224 192 R 2.634
-(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F
-.45(cial characters, or suppressing trailing spaces\).)224 204 R .45
-(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote)
-184 228 Q F0 -.7(Te)224 228 S .814
+SF(noquote)184 84 Q F0 -.7(Te)224 84 S .814
(ll readline not to quote the completed w).7 F .814(ords if the)-.1 F
3.314(ya)-.15 G .815(re \214lenames \(quoting)-3.314 F
-(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nosort)184 252 Q F0
--.7(Te)224 252 S(ll readline not to sort the list of possible completio\
-ns alphabetically).7 E(.)-.65 E F1(nospace)184 264 Q F0 -.7(Te)224 264 S
+(\214lenames is the def)224 96 Q(ault\).)-.1 E F1(nosort)184 108 Q F0
+-.7(Te)224 108 S(ll readline not to sort the list of possible completio\
+ns alphabetically).7 E(.)-.65 E F1(nospace)184 120 Q F0 -.7(Te)224 120 S
.22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1
-F .22(ords completed at the end)-.1 F(of the line.)224 276 Q F1
-(plusdirs)184 288 Q F0 1.985(After an)224 288 R 4.485(ym)-.15 G 1.985
+F .22(ords completed at the end)-.1 F(of the line.)224 132 Q F1
+(plusdirs)184 144 Q F0 1.985(After an)224 144 R 4.485(ym)-.15 G 1.985
(atches de\214ned by the compspec are generated, directory name)-4.485 F
-.584(completion is attempted and an)224 300 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224 312
-Q F1<ad41>144 324 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 336
+.584(completion is attempted and an)224 156 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224 168
+Q F1<ad41>144 180 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 192
Q F2(action)2.5 E F0(may be one of the follo)2.5 E
(wing to generate a list of possible completions:)-.25 E F1(alias)184
-348 Q F0(Alias names.)224 348 Q(May also be speci\214ed as)5 E F1<ad61>
-2.5 E F0(.)A F1(arrayv)184 360 Q(ar)-.1 E F0(Array v)224 372 Q
-(ariable names.)-.25 E F1(binding)184 384 Q(Readline)224 384 Q F0 -.1
-(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 396 S(iltin)
-.2 E F0(Names of shell b)224 396 Q(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 408
-Q F0(Command names.)224 420 Q(May also be speci\214ed as)5 E F1<ad63>2.5
-E F0(.)A F1(dir)184 432 Q(ectory)-.18 E F0(Directory names.)224 444 Q
-(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 456
-Q F0(Names of disabled shell b)224 468 Q(uiltins.)-.2 E F1(enabled)184
-480 Q F0(Names of enabled shell b)224 480 Q(uiltins.)-.2 E F1(export)184
-492 Q F0(Names of e)224 492 Q(xported shell v)-.15 E 2.5(ariables. May)
+204 Q F0(Alias names.)224 204 Q(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 216 Q(ar)-.1 E F0(Array v)224 228 Q
+(ariable names.)-.25 E F1(binding)184 240 Q(Readline)224 240 Q F0 -.1
+(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 252 S(iltin)
+.2 E F0(Names of shell b)224 252 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 264
+Q F0(Command names.)224 276 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 288 Q(ectory)-.18 E F0(Directory names.)224 300 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 312
+Q F0(Names of disabled shell b)224 324 Q(uiltins.)-.2 E F1(enabled)184
+336 Q F0(Names of enabled shell b)224 336 Q(uiltins.)-.2 E F1(export)184
+348 Q F0(Names of e)224 348 Q(xported shell v)-.15 E 2.5(ariables. May)
-.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1<ad66>
-2.5 E F0(.)A F1(function)184 516 Q F0(Names of shell functions.)224 528
-Q F1(gr)184 540 Q(oup)-.18 E F0(Group names.)224 540 Q
+360 Q F0(File names.)224 360 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 372 Q F0(Names of shell functions.)224 384
+Q F1(gr)184 396 Q(oup)-.18 E F0(Group names.)224 396 Q
(May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
-552 Q F0(Help topics as accepted by the)224 564 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 576 Q F0(Hostnames, as tak)224 588
+408 Q F0(Help topics as accepted by the)224 420 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 432 Q F0(Hostnames, as tak)224 444
Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 600 Q F0
-(Job names, if job control is acti)224 600 Q -.15(ve)-.25 G 5(.M).15 G
-(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 612 S
-(yw).1 E(ord)-.1 E F0(Shell reserv)224 624 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 456 Q F0
+(Job names, if job control is acti)224 456 Q -.15(ve)-.25 G 5(.M).15 G
+(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A F1 -.1(ke)184 468 S
+(yw).1 E(ord)-.1 E F0(Shell reserv)224 480 Q(ed w)-.15 E 2.5(ords. May)
-.1 F(also be speci\214ed as)2.5 E F1<ad6b>2.5 E F0(.)A F1(running)184
-636 Q F0(Names of running jobs, if job control is acti)224 636 Q -.15
-(ve)-.25 G(.).15 E F1(ser)184 648 Q(vice)-.1 E F0(Service names.)224 648
-Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 660
-Q F0 -1.11(Va)224 660 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5
+492 Q F0(Names of running jobs, if job control is acti)224 492 Q -.15
+(ve)-.25 G(.).15 E F1(ser)184 504 Q(vice)-.1 E F0(Service names.)224 504
+Q(May also be speci\214ed as)5 E F1<ad73>2.5 E F0(.)A F1(setopt)184 516
+Q F0 -1.11(Va)224 516 S(lid ar)1.11 E(guments for the)-.18 E F1<ad6f>2.5
E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
-(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1
-(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0
-(Signal names.)224 684 Q F1(stopped)184 696 Q F0
-(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G
-(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q
-(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A(GNU Bash 5.0)72 768
-Q(2018 December 7)139.295 E(59)188.455 E 0 Cg EP
-%%Page: 60 60
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5
-(ariables. May)-.25 F(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A
-F1<ad43>144 96 Q/F2 10/Times-Italic@0 SF(command)2.5 E(command)184 108 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 120 Q F1<ad46>144 132 Q F2(function)2.5 E F0 .114
-(The shell function)184 144 R F2(function)2.614 E F0 .114(is e)2.614 F
+(shopt)184 528 Q F0(Shell option names as accepted by the)224 528 Q F1
+(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 540 Q F0
+(Signal names.)224 540 Q F1(stopped)184 552 Q F0
+(Names of stopped jobs, if job control is acti)224 552 Q -.15(ve)-.25 G
+(.).15 E F1(user)184 564 Q F0(User names.)224 564 Q
+(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 576 S
+(riable).1 E F0(Names of all shell v)224 576 Q 2.5(ariables. May)-.25 F
+(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 588 Q F2
+(command)2.5 E(command)184 600 Q F0 1.055(is e)3.555 F -.15(xe)-.15 G
+1.055(cuted in a subshell en).15 F 1.056
+(vironment, and its output is used as the possible)-.4 F(completions.)
+184 612 Q F1<ad46>144 624 Q F2(function)2.5 E F0 .114
+(The shell function)184 636 R F2(function)2.614 E F0 .114(is e)2.614 F
-.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 156 R
+(vironment. When)-.4 F .113(the func-)2.613 F .816(tion is e)184 648 R
-.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1
($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817
(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
-(are being completed, the second ar)184 168 R 1.407(gument \()-.18 F F1
+(are being completed, the second ar)184 660 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 180 R .103
+(ord being completed, and the)-.1 F .103(third ar)184 672 R .103
(gument \()-.18 F F1($3)A F0 2.603(\)i)C 2.603(st)-2.603 G .103(he w)
-2.603 F .104(ord preceding the w)-.1 F .104
-(ord being completed on the current com-)-.1 F .102(mand line.)184 192 R
+(ord being completed on the current com-)-.1 F .102(mand line.)184 684 R
.102(When it \214nishes, the possible completions are retrie)5.102 F
-.15(ve)-.25 G 2.601(df).15 G .101(rom the v)-2.601 F .101(alue of the)
--.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25
-E(ariable.)-.25 E F1<ad47>144 216 Q F2(globpat)2.5 E F0 1.007
-(The pathname e)184 228 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507
+-.25 F F3(COMPREPL)184 696 Q(Y)-.828 E F0(array v)2.25 E(ariable.)-.25 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(60)190.395 E 0 Cg EP
+%%Page: 61 61
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF<ad47>144 84 Q/F2 10/Times-Italic@0 SF(globpat)2.5 E F0 1.007
+(The pathname e)184 96 R 1.007(xpansion pattern)-.15 F F2(globpat)3.507
E F0 1.007(is e)3.507 F 1.008(xpanded to generate the possible comple-)
--.15 F(tions.)184 240 Q F1<ad50>144 252 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
-184 264 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
+-.15 F(tions.)184 108 Q F1<ad50>144 120 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
+184 132 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
(ginning of each possible completion after all other options ha)-.15 F
--.15(ve)-.2 G(been applied.)184 276 Q F1<ad53>144 288 Q F2(suf)2.5 E
-<8c78>-.18 E(suf)184 288 Q<8c78>-.18 E F0
+-.15(ve)-.2 G(been applied.)184 144 Q F1<ad53>144 156 Q F2(suf)2.5 E
+<8c78>-.18 E(suf)184 156 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 F1<ad57>144 300 Q F2(wor)2.5 E
-(dlist)-.37 E F0(The)184 312 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 .981
-(each resultant w)184 324 R .981(ord is e)-.1 F 3.481(xpanded. Shell)
--.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37
-E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 336 Q .765
-(vide a mechanism for the w)-.15 F .766
+E .3 -.15(ve b)-.2 H(een applied.).15 E F1<ad57>144 168 Q F2(wor)2.5 E
+(dlist)-.37 E F0(The)184 180 Q F2(wor)3.639 E(dlist)-.37 E F0 1.14
+(is split using the characters in the)3.639 F/F3 9/Times-Bold@0 SF(IFS)
+3.64 E F0 1.14(special v)3.39 F 1.14(ariable as delimiters, and)-.25 F
+.981(each resultant w)184 192 R .981(ord is e)-.1 F 3.481
+(xpanded. Shell)-.15 F .981(quoting is honored within)3.481 F F2(wor)
+3.481 E(dlist)-.37 E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F
+(pro)184 204 Q .765(vide a mechanism for the w)-.15 F .766
(ords to contain shell metacharacters or characters in the)-.1 F -.25
-(va)184 348 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
+(va)184 216 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
A F0 1.964
(The possible completions are the members of the resultant list which)
-6.465 F(match the w)184 360 Q(ord being completed.)-.1 E F1<ad58>144 372
-Q F2(\214lterpat)2.5 E(\214lterpat)184 384 Q F0 .455
+6.465 F(match the w)184 228 Q(ord being completed.)-.1 E F1<ad58>144 240
+Q F2(\214lterpat)2.5 E(\214lterpat)184 252 Q F0 .455
(is a pattern as used for pathname e)2.955 F 2.956(xpansion. It)-.15 F
.456(is applied to the list of possible)2.956 F 1.596
-(completions generated by the preceding options and ar)184 396 R 1.596
-(guments, and each completion)-.18 F(matching)184 408 Q F2(\214lterpat)
+(completions generated by the preceding options and ar)184 264 R 1.596
+(guments, and each completion)-.18 F(matching)184 276 Q F2(\214lterpat)
3.204 E F0 .704(is remo)3.204 F -.15(ve)-.15 G 3.204(df).15 G .704
(rom the list.)-3.204 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
(in)3.204 E F2(\214lterpat)3.205 E F0(ne)3.205 E -.05(ga)-.15 G .705
-(tes the pattern;).05 F(in this case, an)184 420 Q 2.5(yc)-.15 G
+(tes the pattern;).05 F(in this case, an)184 288 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 436.8 R .467
+-.15(ve)-.15 G(d.).15 E .467(The return v)144 304.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 F1<ad70>2.966 E F0
(or)2.966 E F1<ad72>2.966 E F0 .466(is sup-)2.966 F 1.361
-(plied without a)144 448.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
+(plied without a)144 316.8 R F2(name)3.861 E F0(ar)3.861 E 1.361
(gument, an attempt is made to remo)-.18 F 1.662 -.15(ve a c)-.15 H
-1.362(ompletion speci\214cation for a).15 F F2(name)144 460.8 Q F0
+1.362(ompletion speci\214cation for a).15 F F2(name)144 328.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 477.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
+F1(compopt)108 345.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C
-F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 489.6
+F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 357.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 501.6 R F2(name)3.225 E F0 3.225(sa)C .725
+(completion if no)144 369.6 R F2(name)3.225 E F0 3.225(sa)C .725
(re supplied.)-3.225 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
C .725(re gi)-3.225 F -.15(ve)-.25 G .726
-(n, display the completion options for).15 F(each)144 513.6 Q F2(name)
+(n, display the completion options for).15 F(each)144 381.6 Q F2(name)
3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v)
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 525.6 Q F0 -.2(bu)
+F .723(alid for the)-.25 F F1(com-)3.223 E(plete)144 393.6 Q F0 -.2(bu)
2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
-5.178 E F1<ad44>2.678 E F0 .178
(option indicates that other supplied options should apply to)2.678 F
-1.228(the `)144 537.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
+1.228(the `)144 405.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.038(completion has pre)144 549.6 R 2.038
+no)-3.728 F 2.038(completion has pre)144 417.6 R 2.038
(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.039
(option indicates that other supplied options)4.538 F 1.539
-(should apply to `)144 561.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
+(should apply to `)144 429.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
(ommand completion; that is, completion attempted on a blank line.)
--4.039 F(The)144 573.6 Q F1<ad49>3.205 E F0 .705(option indicates that \
-other supplied options should apply to completion on the inital non-)
-3.205 F .868(assignment w)144 585.6 R .868
+-4.039 F(The)144 441.6 Q F1<ad49>3.02 E F0 .52(option indicates that ot\
+her supplied options should apply to completion on the initial non-)3.02
+F .868(assignment w)144 453.6 R .868
(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368
E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-)
--3.367 F(mand name completion.)144 597.6 Q 1.387(The return v)144 621.6
-R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388
-(lid option is supplied, an attempt is made to modify the).25 F
-(options for a)144 633.6 Q F2(name)2.5 E F0
+-3.367 F(mand name completion.)144 465.6 Q .431(The return v)144 489.6 R
+.431(alue is true unless an in)-.25 F -.25(va)-.4 G .431
+(lid option is supplied, an attempt is made to modify the op-).25 F
+(tions for a)144 501.6 Q F2(name)2.5 E F0
(for which no completion speci\214cation e)2.5 E
-(xists, or an output error occurs.)-.15 E F1(continue)108 650.4 Q F0([)
-2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 662.4 R 1.754
-(xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A
-F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1
-(select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753
-(is speci\214ed,)4.493 F 1.208(resume at the)144 674.4 R F2(n)3.709 E F0
-1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F5 10
-/Symbol SF<b3>3.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 686.4 R(`top-le)-.74 E -.15
-(ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513
-(The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is)
-3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768
-Q(2018 December 7)139.295 E(60)188.455 E 0 Cg EP
-%%Page: 61 61
+(xists, or an output error occurs.)-.15 E F1(continue)108 518.4 Q F0([)
+2.5 E F2(n)A F0(])A .851(Resume the ne)144 530.4 R .851
+(xt iteration of the enclosing)-.15 F F1 -.25(fo)3.351 G(r).25 E F0(,)A
+F1(while)3.351 E F0(,)A F1(until)3.351 E F0 3.351(,o)C(r)-3.351 E F1
+(select)3.35 E F0 3.35(loop. If)3.35 F F2(n)3.71 E F0 .85
+(is speci\214ed, re-)3.59 F .203(sume at the)144 542.4 R F2(n)2.703 E F0
+.203(th enclosing loop.)B F2(n)5.563 E F0 .203(must be)2.943 F/F5 10
+/Symbol SF<b3>2.703 E F0 2.704(1. If)2.703 F F2(n)3.064 E F0 .204
+(is greater than the number of enclosing loops,)2.944 F 1.184
+(the last enclosing loop \(the `)144 554.4 R(`top-le)-.74 E -.15(ve)-.25
+G(l').15 E 3.684('l)-.74 G 1.184(oop\) is resumed.)-3.684 F 1.183
+(The return v)6.184 F 1.183(alue is 0 unless)-.25 F F2(n)3.683 E F0
+1.183(is not)3.683 F(greater than or equal to 1.)144 566.4 Q F1(declar)
+108 583.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0 2.5(][)C F1
+<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
+(..])-2.5 E F1(typeset)108 595.2 Q F0([)2.5 E F1(\255aAfFgiIlnrtux)A F0
+2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0
+2.5(].)C(..])-2.5 E 1.264(Declare v)144 607.2 R 1.264
+(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F
+3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265
+(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v)
+-3.765 F 1.265(alues of)-.25 F -.25(va)144 619.2 S 3.46(riables. The).25
+F F1<ad70>3.46 E F0 .96(option will display the attrib)3.46 F .96
+(utes and v)-.2 F .96(alues of each)-.25 F F2(name)3.82 E F0 5.96(.W).18
+G(hen)-5.96 E F1<ad70>3.46 E F0 .96(is used)3.46 F(with)144 631.2 Q F2
+(name)2.774 E F0(ar)2.774 E .274
+(guments, additional options, other than)-.18 F F1<ad66>2.775 E F0(and)
+2.775 E F1<ad46>2.775 E F0 2.775(,a)C .275(re ignored.)-2.775 F(When)
+5.275 E F1<ad70>2.775 E F0 .275(is supplied)2.775 F(without)144 643.2 Q
+F2(name)3.79 E F0(ar)3.79 E 1.29(guments, it will display the attrib)
+-.18 F 1.289(utes and v)-.2 F 1.289(alues of all v)-.25 F 1.289
+(ariables ha)-.25 F 1.289(ving the at-)-.2 F(trib)144 655.2 Q .38
+(utes speci\214ed by the additional options.)-.2 F .38
+(If no other options are supplied with)5.38 F F1<ad70>2.88 E F0(,)A F1
+(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.107(display the attrib)144
+667.2 R 1.107(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606
+(ariables. The)-.25 F F1<ad66>3.606 E F0 1.106
+(option will restrict the display to)3.606 F .299(shell functions.)144
+679.2 R(The)5.299 E F1<ad46>2.799 E F0 .299(option inhibits the display\
+ of function de\214nitions; only the function name)2.799 F 1.54
+(and attrib)144 691.2 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F
+F1(extdeb)4.04 E(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F
+F1(shopt)4.04 E F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648
+(name and line number where each)144 703.2 R F2(name)3.148 E F0 .648
+(is de\214ned are displayed as well.)3.148 F(The)5.648 E F1<ad46>3.148 E
+F0 .649(option implies)3.149 F F1<ad66>144 715.2 Q F0 5.837(.T)C(he)
+-5.837 E F1<ad67>3.337 E F0 .837(option forces v)3.337 F .836
+(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15
+(ve)-.25 G 3.336(nw).15 G(hen)-3.336 E F1(de-)3.336 E(clar)144 727.2 Q
+(e)-.18 E F0 .818(is e)3.318 F -.15(xe)-.15 G .818
+(cuted in a shell function.).15 F .818
+(It is ignored in all other cases.)5.818 F(The)5.819 E F1<ad49>3.319 E
+F0 .819(option causes local)3.319 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(61)190.395 E 0 Cg EP
+%%Page: 62 62
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(declar)108 84 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C
-F1<ad70>-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(name)-2.5 E F0([=)A
-F2(value)A F0 2.5(].)C(..])-2.5 E F1(typeset)108 96 Q F0([)2.5 E F1
-(\255aAfFgilnrtux)A F0 2.5(][)C F1<ad70>-2.5 E F0 2.5(][)C F2(name)-2.5
-E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E 1.264(Declare v)144 108 R
-1.264(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib)
-.15 F 3.765(utes. If)-.2 F(no)3.765 E F2(name)3.765 E F0 3.765(sa)C
-1.265(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265
-(hen display the v)-3.765 F 1.265(alues of)-.25 F -.25(va)144 120 S
-3.483(riables. The).25 F F1<ad70>3.483 E F0 .983
-(option will display the attrib)3.483 F .983(utes and v)-.2 F .982
-(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1
-<ad70>3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0
-(ar)2.774 E .274(guments, additional options, other than)-.18 F F1<ad66>
-2.775 E F0(and)2.775 E F1<ad46>2.775 E F0 2.775(,a)C .275(re ignored.)
--2.775 F(When)5.275 E F1<ad70>2.775 E F0 .275(is supplied)2.775 F
-(without)144 144 Q F2(name)4.814 E F0(ar)4.814 E 2.314
-(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313
-(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F
-(attrib)144 156 Q 1.181(utes speci\214ed by the additional options.)-.2
-F 1.182(If no other options are supplied with)6.181 F F1<ad70>3.682 E F0
-(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 168 R
-.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The)
--.25 F F1<ad66>3.12 E F0 .62(option will restrict the display)3.12 F
-1.29(to shell functions.)144 180 R(The)6.29 E F1<ad46>3.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 192 R .948(utes are printed.)-.2 F .948
-(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948
-(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C
-.948(he source)-3.448 F 1.69(\214le name and line number where each)144
-204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F
-(The)6.69 E F1<ad46>4.19 E F0(option)4.19 E(implies)144 216 Q F1<ad66>
-3.892 E F0 6.392(.T)C(he)-6.392 E F1<ad67>3.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 228 Q F1(declar)4.382 E(e)-.18 E F0 1.882
-(is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F
-1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F
-(wing)-.25 E .794(options can be used to restrict output to v)144 240 R
-.794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F
-1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1
-<ad61>144 264 Q F0(Each)180 264 Q F2(name)2.5 E F0(is an inde)2.5 E -.15
-(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5
-E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1<ad41>144 276 Q F0(Each)180
-276 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v)
-.15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G
-(\).).15 E F1<ad66>144 288 Q F0(Use function names only)180 288 Q(.)-.65
-E F1<ad69>144 300 Q F0 .557(The v)180 300 R .558
-(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
-(va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 312 Q F0(abo)2.25
-E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E
-(ariable is assigned a v)-.25 E(alue.)-.25 E F1<ad6c>144 324 Q F0 .91
-(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909
-(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
-G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 336 R
-(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad6e>144 348 Q
-F0(Gi)180 348 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the)
-3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
-(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E
-1.519(That other v)180 360 R 1.519(ariable is de\214ned by the v)-.25 F
-1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518
-(ll references, assignments, and)-6.518 F(attrib)180 372 Q .226
-(ute modi\214cations to)-.2 F F2(name)2.726 E F0 2.726(,e)C .226
-(xcept those using or changing the)-2.876 F F1<ad6e>2.726 E F0(attrib)
-2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 384 R
-.809(ariable referenced by)-.25 F F2(name)3.308 E F0 1.908 -.55('s v)D
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S
+.694(riables to inherit the attrib).25 F .694(utes \(e)-.2 F .694
+(xcept the)-.15 F/F1 10/Times-Italic@0 SF(namer)3.194 E(ef)-.37 E F0
+(attrib)3.194 E .693(ute\) and v)-.2 F .693(alue of an)-.25 F 3.193(ye)
+-.15 G .693(xisting v)-3.343 F(ariable)-.25 E .82(with the same)144 96 R
+F1(name)3.32 E F0 .82(at a surrounding scope.)3.32 F .82
+(If there is no e)5.82 F .82(xisting v)-.15 F .82(ariable, the local v)
+-.25 F .82(ariable is)-.25 F .38(initially unset.)144 108 R .38
+(The follo)5.38 F .379(wing options can be used to restrict output to v)
+-.25 F .379(ariables with the speci\214ed)-.25 F(attrib)144 120 Q
+(ute or to gi)-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2
+E/F2 10/Times-Bold@0 SF<ad61>144 132 Q F0(Each)180 132 Q F1(name)2.5 E
+F0(is an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E
+(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F2<ad41>144 144 Q F0(Each)180 144 Q F1(name)2.5 E F0
+(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v).15 E(ariable \(see)
+-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad66>144
+156 Q F0(Use function names only)180 156 Q(.)-.65 E F2<ad69>144 168 Q F0
+.557(The v)180 168 R .558(ariable is treated as an inte)-.25 F .558
+(ger; arithmetic e)-.15 F -.25(va)-.25 G .558(luation \(see).25 F/F3 9
+/Times-Bold@0 SF .558(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)
+180 180 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G
+(erformed when the v)-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E
+F2<ad6c>144 192 Q F0 .91(When the v)180 192 R .909
+(ariable is assigned a v)-.25 F .909(alue, all upper)-.25 F .909
+(-case characters are con)-.2 F -.15(ve)-.4 G .909(rted to lo).15 F(wer)
+-.25 E(-)-.2 E 2.5(case. The)180 204 R(upper)2.5 E(-case attrib)-.2 E
+(ute is disabled.)-.2 E F2<ad6e>144 216 Q F0(Gi)180 216 Q 1.619 -.15
+(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the)3.819 E F1(namer)3.819 E
+(ef)-.37 E F0(attrib)3.819 E 1.319
+(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .478
+(That other v)180 228 R .478(ariable is de\214ned by the v)-.25 F .478
+(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478
+(ll references, assignments, and at-)-5.478 F(trib)180 240 Q .781
+(ute modi\214cations to)-.2 F F1(name)3.281 E F0 3.281(,e)C .782
+(xcept those using or changing the)-3.431 F F2<ad6e>3.282 E F0(attrib)
+3.282 E .782(ute itself, are)-.2 F .809(performed on the v)180 252 R
+.809(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D
3.308(alue. The).3 F .808(nameref attrib)3.308 F .808(ute cannot be)-.2
-F(applied to array v)180 396 Q(ariables.)-.25 E F1<ad72>144 408 Q F0
-(Mak)180 408 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E
-7.546(.T)-.65 G 2.546(hese names cannot then be assigned v)-7.546 F
-2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 420
-Q F1<ad74>144 432 Q F0(Gi)180 432 Q .73 -.15(ve e)-.25 H(ach).15 E F2
-(name)2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E
-2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929
-E(UG)-.1 E F0(and)2.929 E F1(RETURN)2.929 E F0
-(traps from the calling shell.)180 444 Q(The trace attrib)5 E
-(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1<ad75>144 456
-Q F0 .909(When the v)180 456 R .909(ariable is assigned a v)-.25 F .909
+F(applied to array v)180 264 Q(ariables.)-.25 E F2<ad72>144 276 Q F0
+(Mak)180 276 Q(e)-.1 E F1(name)3.654 E F0 3.654(sr)C(eadonly)-3.654 E
+6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F
+1.155(alues by subsequent as-)-.25 F(signment statements or unset.)180
+288 Q F2<ad74>144 300 Q F0(Gi)180 300 Q .73 -.15(ve e)-.25 H(ach).15 E
+F1(name)2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E
+2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929
+E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0
+(traps from the calling shell.)180 312 Q(The trace attrib)5 E
+(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144 324
+Q F0 .909(When the v)180 324 R .909(ariable is assigned a v)-.25 F .909
(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2 F -.15
-(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 468 R(lo)2.5
-E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1<ad78>144 480 Q
-F0(Mark)180 480 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 336 R(lo)2.5
+E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>144 348 Q
+F0(Mark)180 348 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144
-(Using `+' instead of `\255' turns of)144 496.8 R 2.643(ft)-.25 G .143
+(Using `+' instead of `\255' turns of)144 364.8 R 2.643(ft)-.25 G .143
(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143
-(xceptions that)-.15 F F1(+a)2.643 E F0(and)2.643 E F1(+A)2.643 E F0
-.143(may not)2.643 F .578(be used to destro)144 508.8 R 3.079(ya)-.1 G
-.579(rray v)-3.079 F .579(ariables and)-.25 F F1(+r)3.079 E F0 .579
+(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0
+.143(may not)2.643 F .578(be used to destro)144 376.8 R 3.079(ya)-.1 G
+.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579
(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
-F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 520.8 Q F1
-(declar)3.544 E(e)-.18 E F0(and)3.544 E F1(typeset)3.544 E F0(mak)3.544
-E 3.544(ee)-.1 G(ach)-3.544 E F2(name)3.543 E F0 1.043
-(local, as with the)3.543 F F1(local)3.543 E F0 1.043
-(command, unless the)3.543 F F1<ad67>3.543 E F0 1.205
-(option is supplied.)144 532.8 R 1.205(If a v)6.205 F 1.205
-(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F2(value)A F0 3.705
+F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 388.8 Q F2
+(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544
+E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043
+(local, as with the)3.543 F F2(local)3.543 E F0 1.043
+(command, unless the)3.543 F F2<ad67>3.543 E F0 1.205
+(option is supplied.)144 400.8 R 1.205(If a v)6.205 F 1.205
+(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705
(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
-(ariable is set to)-.25 F F2(value)144 544.8 Q F0 5.218(.W)C .218
-(hen using)-5.218 F F1<ad61>2.718 E F0(or)2.718 E F1<ad41>2.718 E F0
+(ariable is set to)-.25 F F1(value)144 412.8 Q F0 5.218(.W)C .218
+(hen using)-5.218 F F2<ad61>2.718 E F0(or)2.718 E F2<ad41>2.718 E F0
.217(and the compound assignment syntax to create array v)2.717 F .217
-(ariables, addi-)-.25 F .882(tional attrib)144 556.8 R .882
+(ariables, addi-)-.25 F .882(tional attrib)144 424.8 R .882
(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
-(alue is 0 unless an)-.25 F(in)144 568.8 Q -.25(va)-.4 G 1.26(lid optio\
+(alue is 0 unless an)-.25 F(in)144 436.8 Q -.25(va)-.4 G .366(lid optio\
n is encountered, an attempt is made to de\214ne a function using).25 F
-/F4 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E
-.187(attempt is made to assign a v)144 580.8 R .187
-(alue to a readonly v)-.25 F .188
-(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F
-1.749(array v)144 592.8 R 1.749
-(ariable without using the compound assignment syntax \(see)-.25 F F1
+/F4 10/Courier@0 SF .365(\255f foo=bar)2.865 F F0 2.865(,a)C 2.865(na)
+-2.865 G(t-)-2.865 E .548(tempt is made to assign a v)144 448.8 R .548
+(alue to a readonly v)-.25 F .549
+(ariable, an attempt is made to assign a v)-.25 F .549(alue to an)-.25 F
+1.749(array v)144 460.8 R 1.749
+(ariable without using the compound assignment syntax \(see)-.25 F F2
(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F
-F2(names)144 604.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
+F1(names)144 472.8 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
-.359(eadonly status for a read-)-2.859 F 1.213(only v)144 616.8 R 1.213
+.359(eadonly status for a read-)-2.859 F 1.213(only v)144 484.8 R 1.213
(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is)
--.25 F(made to display a non-e)144 628.8 Q(xistent function with)-.15 E
-F1<ad66>2.5 E F0(.)A F1(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)
-C<ad>-2.5 E F2(n)A F1(])A F0 -.4(Wi)144 657.6 S .328
+-.25 F(made to display a non-e)144 496.8 Q(xistent function with)-.15 E
+F2<ad66>2.5 E F0(.)A F2(dirs [\255clpv] [+)108 513.6 Q F1(n)A F2 2.5(][)
+C<ad>-2.5 E F1(n)A F2(])A F0 -.4(Wi)144 525.6 S .328
(thout options, displays the list of currently remembered directories.)
.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 669.6 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 681.6 Q
-F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo)
-4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
-F 2.003(The current directory is)7.003 F(al)144 693.6 Q -.1(wa)-.1 G
-(ys the \214rst directory in the stack.).1 E F1<ad63>144 705.6 Q F0
-(Clears the directory stack by deleting all of the entries.)180 705.6 Q
-F1<ad6c>144 717.6 Q F0 .882
-(Produces a listing using full pathnames; the def)180 717.6 R .881
+(single line with directory names separated by spaces.)144 537.6 R 1.238
+(Directories are added to the list with the)6.238 F F2(pushd)144 549.6 Q
+F0 .927(command; the)3.427 F F2(popd)3.428 E F0 .928(command remo)3.428
+F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928
+(The current directory is al-)5.928 F -.1(wa)144 561.6 S
+(ys the \214rst directory in the stack.).1 E F2<ad63>144 573.6 Q F0
+(Clears the directory stack by deleting all of the entries.)180 573.6 Q
+F2<ad6c>144 585.6 Q F0 .882
+(Produces a listing using full pathnames; the def)180 585.6 R .881
(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-729.6 Q(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(61)
-188.455 E 0 Cg EP
-%%Page: 62 62
+597.6 Q(.)-.65 E F2<ad70>144 609.6 Q F0
+(Print the directory stack with one entry per line.)180 609.6 Q F2<ad76>
+144 621.6 Q F0 .272(Print the directory stack with one entry per line, \
+pre\214xing each entry with its inde)180 621.6 R 2.773(xi)-.15 G 2.773
+(nt)-2.773 G(he)-2.773 E(stack.)180 633.6 Q F2(+)144 645.6 Q F1(n)A F0
+1.565(Displays the)180 645.6 R F1(n)4.065 E F0 1.565
+(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F2
+(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 657.6 Q F2<ad>144 669.6 Q F1
+(n)A F0 1.194(Displays the)180 669.6 R F1(n)3.694 E F0 1.194
+(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
+F2(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 681.6 Q .258(The return v)144
+698.4 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(lid option is supplied or).25 F F1(n)2.758 E F0(inde)2.758 E -.15(xe)
+-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
+.15 F(tory stack.)144 710.4 Q(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(62)190.395 E 0 Cg EP
+%%Page: 63 63
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad70>144 84 Q F0(Print the directory stack with one entry per line.)
-180 84 Q F1<ad76>144 96 Q F0 .272(Print the directory stack with one en\
-try per line, pre\214xing each entry with its inde)180 96 R 2.773(xi)
--.15 G 2.773(nt)-2.773 G(he)-2.773 E(stack.)180 108 Q F1(+)144 120 Q/F2
-10/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 120 R F2(n)4.065 E F0
-1.565(th entry counting from the left of the list sho)B 1.564(wn by)-.25
-F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1
-E(without options, starting with zero.)180 132 Q F1<ad>144 144 Q F2(n)A
-F0 1.194(Displays the)180 144 R F2(n)3.694 E F0 1.194
-(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F
-F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
-(without options, starting with zero.)180 156 Q .258(The return v)144
-172.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
-(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
--.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1
-(\255ar)A F0 2.5(][)C F1<ad68>-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 213.6 S .121
-(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)
-4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H
-2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932
-F .096(neither the)144 225.6 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
-F1<ad72>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
-<ad68>2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each)
-.15 F F2(jobspec)145.74 237.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15
-G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F
-.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586
-(is not sent to the job if the)2.835 F .962(shell recei)144 249.6 R -.15
+SF(diso)108 84 Q(wn)-.1 E F0([)2.5 E F1(\255ar)A F0 2.5(][)C F1<ad68>
+-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF(jobspec)-2.5 E F0(... |)2.5 E
+F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 96 S .121(thout options, remo).4
+F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122
+(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15
+F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096
+(neither the)144 108 R F1<ad61>2.596 E F0 .096(nor the)2.596 F F1<ad72>
+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<ad68>
+2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F
+F2(jobspec)145.74 120 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085
+(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585
+(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586
+(is not sent to the job if the)2.835 F .962(shell recei)144 132 R -.15
(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962
(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1
<ad61>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 261.6 R F1
+H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 144 R F1
<ad72>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 273.6 S(lue is 0 unless a).25 E F2
+1.359(The return)6.359 F -.25(va)144 156 S(lue is 0 unless a).25 E F2
(jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E
-F1(echo)108 290.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
--.37 E F0(...])2.5 E .425(Output the)144 302.4 R F2(ar)2.925 E(g)-.37 E
+F1(echo)108 172.8 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .425(Output the)144 184.8 R F2(ar)2.925 E(g)-.37 E
F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924
(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307
-(error occurs.)144 314.4 R(If)5.307 E F1<ad6e>2.807 E F0 .307
+(error occurs.)144 196.8 R(If)5.307 E F1<ad6e>2.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 F1<ad65>2.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
-326.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
-6.348 E F1<ad45>3.848 E F0 1.348(option disables the)3.848 F 1.054
-(interpretation of these escape characters, e)144 338.4 R -.15(ve)-.25 G
-3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555
-(ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144
-350.4 Q F1(xpg_echo)3.459 E F0 .959
-(shell option may be used to dynamically determine whether or not)3.459
-F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715
-(these escape characters by def)144 362.4 R(ault.)-.1 E F1(echo)5.715 E
-F0 .716(does not interpret)3.215 F F1<adad>3.216 E F0 .716
-(to mean the end of options.)3.216 F F1(echo)5.716 E F0
-(interprets the follo)144 374.4 Q(wing escape sequences:)-.25 E F1(\\a)
-144 386.4 Q F0(alert \(bell\))180 386.4 Q F1(\\b)144 398.4 Q F0
-(backspace)180 398.4 Q F1(\\c)144 410.4 Q F0(suppress further output)180
-410.4 Q F1(\\e)144 422.4 Q(\\E)144 434.4 Q F0(an escape character)180
-434.4 Q F1(\\f)144 446.4 Q F0(form feed)180 446.4 Q F1(\\n)144 458.4 Q
-F0(ne)180 458.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 470.4 Q F0
-(carriage return)180 470.4 Q F1(\\t)144 482.4 Q F0(horizontal tab)180
-482.4 Q F1(\\v)144 494.4 Q F0 -.15(ve)180 494.4 S(rtical tab).15 E F1
-(\\\\)144 506.4 Q F0(backslash)180 506.4 Q F1(\\0)144 518.4 Q F2(nnn)A
-F0(the eight-bit character whose v)180 518.4 Q(alue is the octal v)-.25
+(ve)-.25 G .308(n, inter).15 F(-)-.2 E .198(pretation of the follo)144
+208.8 R .198(wing backslash-escaped characters is enabled.)-.25 F(The)
+5.198 E F1<ad45>2.698 E F0 .197(option disables the in-)2.697 F .067
+(terpretation of these escape characters, e)144 220.8 R -.15(ve)-.25 G
+2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567
+(ya)-.15 G .067(re interpreted by def)-2.567 F 2.568(ault. The)-.1 F F1
+(xpg_echo)144 232.8 Q F0 .602
+(shell option may be used to dynamically determine whether or not)3.102
+F F1(echo)3.101 E F0 -.15(ex)3.101 G .601(pands these).15 F .658
+(escape characters by def)144 244.8 R(ault.)-.1 E F1(echo)5.658 E F0
+.659(does not interpret)3.159 F F1<adad>3.159 E F0 .659
+(to mean the end of options.)3.159 F F1(echo)5.659 E F0(inter)3.159 E(-)
+-.2 E(prets the follo)144 256.8 Q(wing escape sequences:)-.25 E F1(\\a)
+144 268.8 Q F0(alert \(bell\))180 268.8 Q F1(\\b)144 280.8 Q F0
+(backspace)180 280.8 Q F1(\\c)144 292.8 Q F0(suppress further output)180
+292.8 Q F1(\\e)144 304.8 Q(\\E)144 316.8 Q F0(an escape character)180
+316.8 Q F1(\\f)144 328.8 Q F0(form feed)180 328.8 Q F1(\\n)144 340.8 Q
+F0(ne)180 340.8 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 352.8 Q F0
+(carriage return)180 352.8 Q F1(\\t)144 364.8 Q F0(horizontal tab)180
+364.8 Q F1(\\v)144 376.8 Q F0 -.15(ve)180 376.8 S(rtical tab).15 E F1
+(\\\\)144 388.8 Q F0(backslash)180 388.8 Q F1(\\0)144 400.8 Q F2(nnn)A
+F0(the eight-bit character whose v)180 400.8 Q(alue is the octal v)-.25
E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1
-(\\x)144 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.4 Q
+(\\x)144 412.8 Q F2(HH)A F0(the eight-bit character whose v)180 412.8 Q
(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
-(\\u)144 542.4 Q F2(HHHH)A F0 1.507
-(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R 1.506
+(\\u)144 424.8 Q F2(HHHH)A F0 1.507
+(the Unicode \(ISO/IEC 10646\) character whose v)180 436.8 R 1.506
(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
-4.006 E F0(\(one to four he)180 566.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 578.4 Q F2(HHHHHHHH)A F0 .547
-(the Unicode \(ISO/IEC 10646\) character whose v)180 590.4 R .547
+4.006 E F0(\(one to four he)180 448.8 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 460.8 Q F2(HHHHHHHH)A F0 .547
+(the Unicode \(ISO/IEC 10646\) character whose v)180 472.8 R .547
(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.048 E(HHH)180 602.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
-(igits\))-2.5 E F1(enable)108 619.2 Q F0([)2.5 E F1<ad61>A F0 2.5(][)C
+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 F1<ad61>A F0 2.5(][)C
F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5 E F2(\214lename)2.5 E F0 2.5
-(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.2 R
+(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 513.6 R
.278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833
-(the same name as a shell b)144 643.2 R .834(uiltin to be e)-.2 F -.15
+(the same name as a shell b)144 525.6 R .834(uiltin to be e)-.2 F -.15
(xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15
(ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99
-(the shell normally searches for b)144 655.2 R .989
+(the shell normally searches for b)144 537.6 R .989
(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .989
-(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581
-(abled; otherwise,)144 667.2 R F2(names)4.082 E F0 1.582(are enabled.)
-4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F
-F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082
-G(TH)-.189 E F0 .081(instead of the shell b)144 679.2 R .081(uiltin v)
--.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test)
-2.581 F F0 5.081(.T)C(he)-5.081 E F1<ad66>2.58 E F0 .08
-(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.2 S 1.524
-(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F
-F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524
-(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1<ad64>
+(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F .648
+(abled; otherwise,)144 549.6 R F2(names)3.148 E F0 .648(are enabled.)
+3.148 F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F
+F1(test)3.148 E F0 .648(binary found via the)3.148 F F3 -.666(PA)3.148 G
+(TH)-.189 E F0(in-)2.899 E .539(stead of the shell b)144 561.6 R .538
+(uiltin v)-.2 F .538(ersion, run)-.15 F/F5 10/Courier@0 SF .538
+(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F1<ad66>3.038 E F0
+.538(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 573.6 S
+1.365(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)
+4.045 F F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365
+(ystems that support dynamic loading.)-3.865 F(The)144 585.6 Q F1<ad64>
2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F
.367(viously loaded with)-.25 F F1<ad66>2.866 E F0 5.366(.I)C 2.866(fn)
-5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi)
--.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1<ad70>
+-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 597.6 R F1<ad70>
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
-727.2 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
+609.6 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F
-(If)5.098 E F1<ad61>2.598 E F0(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(62)188.455 E 0 Cg EP
-%%Page: 63 63
+(If)5.098 E F1<ad61>2.598 E F0 .905
+(is supplied, the list printed includes all b)144 621.6 R .905
+(uiltins, with an indication of whether or not each is en-)-.2 F 2.873
+(abled. If)144 633.6 R F1<ad73>2.873 E F0 .372
+(is supplied, the output is restricted to the POSIX)2.873 F F2(special)
+2.872 E F0 -.2(bu)2.872 G 2.872(iltins. The).2 F .372(return v)2.872 F
+.372(alue is)-.25 F 2.5(0u)144 645.6 S(nless a)-2.5 E F2(name)2.86 E F0
+(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E
+2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108
+662.4 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 674.4
+Q F2(ar)3.17 E(g)-.37 E F0 3.17(sa)C .671
+(re read and concatenated together into a single command.)-3.17 F .671
+(This command is then read)5.671 F .479(and e)144 686.4 R -.15(xe)-.15 G
+.479(cuted by the shell, and its e).15 F .479
+(xit status is returned as the v)-.15 F .478(alue of)-.25 F F1 -2.3 -.15
+(ev a)2.978 H(l).15 E F0 5.478(.I)C 2.978(ft)-5.478 G .478(here are no)
+-2.978 F F2(ar)3.308 E(gs)-.37 E F0(,).27 E(or only null ar)144 698.4 Q
+(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(63)190.395 E 0 Cg EP
+%%Page: 64 64
%%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.916
-(is supplied, the list printed includes all b)144 84 R 1.916
-(uiltins, with an indication of whether or not each is)-.2 F 2.879
-(enabled. If)144 96 R/F1 10/Times-Bold@0 SF<ad73>2.879 E F0 .379
-(is supplied, the output is restricted to the POSIX)2.879 F/F2 10
-/Times-Italic@0 SF(special)2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The)
-.2 F .378(return v)2.878 F(alue)-.25 E .994(is 0 unless a)144 108 R F2
-(name)3.854 E F0 .994(is not a shell b)3.674 F .994
-(uiltin or there is an error loading a ne)-.2 F 3.495(wb)-.25 G .995
-(uiltin from a shared)-3.695 F(object.)144 120 Q F1 -2.3 -.15(ev a)108
-136.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 148.8
-Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671
-(re read and concatenated together into a single command.)-3.171 F .67
-(This command is then read)5.67 F .495(and e)144 160.8 R -.15(xe)-.15 G
-.495(cuted by the shell, and its e).15 F .495
-(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15
-(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no)
--2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 172.8 Q
-(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1
-(exec)108 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
-(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)
--.37 E F0(]])A(If)144 201.6 Q F2(command)3.006 E F0 .306
-(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805
-(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E
-(guments)-.37 E F0(become)3.075 E .176(the ar)144 213.6 R .176
-(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G
-(he)-2.676 E F1<ad6c>2.676 E F0 .176
-(option is supplied, the shell places a dash at the be)2.676 F .177
-(ginning of)-.15 F .5(the zeroth ar)144 225.6 R .5(gument passed to)-.18
-F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999
-E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F1<ad63>2.999 E F0
-.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.6 Q F0 .638
-(to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E/F2 10
+/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E
+F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command)3.005 E F0 .305
+(is speci\214ed, it replaces the shell.)3.575 F .305(No ne)5.305 F 2.805
+(wp)-.25 G .306(rocess is created.)-2.805 F(The)5.306 E F2(ar)3.136 E
+(guments)-.37 E F0(become)3.076 E .177(the ar)144 108 R .177(guments to)
+-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G(he)-2.676 E F1
+<ad6c>2.676 E F0 .176
+(option is supplied, the shell places a dash at the be)2.676 F .176
+(ginning of)-.15 F .48(the zeroth ar)144 120 R .48(gument passed to)-.18
+F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)3.07
+E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F1<ad63>2.98 E F0 .48
+(option causes)2.98 F F2(com-)3.18 E(mand)144 132 Q F0 .639(to be e)
+3.909 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138
(vironment. If)-.4 F F1<ad61>3.138 E F0 .638
-(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the)
-3.319 F 1.078(zeroth ar)144 249.6 R 1.077(gument to the e)-.18 F -.15
-(xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0
-1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a)
-.15 F(non-interacti)144 261.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F
-.576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577
-(shell option is enabled.)3.077 F .577(In that case, it returns f)5.577
-F(ail-)-.1 E 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s)
--.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
-F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
-(xits uncondi-)-.15 F .287(tionally if)144 285.6 R F1(exec)2.787 E F0
--.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
-(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
--2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
-.25 F(and the return status is 0.)144 297.6 Q
+(is supplied, the shell passes)3.138 F F2(name)3.498 E F0 .638(as the)
+3.318 F 1.077(zeroth ar)144 144 R 1.077(gument to the e)-.18 F -.15(xe)
+-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077
+(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a).15 F
+(non-interacti)144 156 Q .877 -.15(ve s)-.25 H .577(hell e).15 F .577
+(xits, unless the)-.15 F F1(execfail)3.077 E F0 .577
+(shell option is enabled.)3.077 F .576(In that case, it returns f)5.577
+F(ail-)-.1 E 3.32(ure. An)144 168 R(interacti)3.32 E 1.12 -.15(ve s)-.25
+H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1 F
+-.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
+(xits uncondi-)-.15 F .288(tionally if)144 180 R F1(exec)2.788 E F0 -.1
+(fa)2.788 G 2.788(ils. If).1 F F2(command)2.988 E F0 .288
+(is not speci\214ed, an)3.558 F 2.787(yr)-.15 G .287(edirections tak)
+-2.787 F 2.787(ee)-.1 G -.25(ff)-2.787 G .287(ect in the current shell,)
+.25 F(and the return status is 0.)144 192 Q
(If there is a redirection error)5 E 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 314.4 Q F0([)2.5 E F2(n)A F0
-(])A .096(Cause the shell to e)144 314.4 R .096(xit with a status of)
--.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095
-(is omitted, the e)2.835 F .095(xit status is that of the last command)
--.15 F -.15(exe)144 326.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9
+(he return status is 1.)-2.5 E F1(exit)108 208.8 Q F0([)2.5 E F2(n)A F0
+(])A .095(Cause the shell to e)144 208.8 R .095(xit with a status of)
+-.15 F F2(n)2.595 E F0 5.095(.I)C(f)-5.095 E F2(n)2.955 E F0 .096
+(is omitted, the e)2.835 F .096(xit status is that of the last command)
+-.15 F -.15(exe)144 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9
/Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G
-(cuted before the shell terminates.).15 E F1(export)108 343.2 Q F0([)2.5
+(cuted before the shell terminates.).15 E F1(export)108 237.6 Q F0([)2.5
E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E
-F0(]] ...)A F1(export \255p)108 355.2 Q F0 .256(The supplied)144 367.2 R
+F0(]] ...)A F1(export \255p)108 249.6 Q F0 .257(The supplied)144 261.6 R
F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F
.257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15
-(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1
-<ad66>2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the)
+(xe)-.15 G(cuted).15 E 2.626(commands. If)144 273.6 R(the)2.626 E F1
+<ad66>2.626 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the)
.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no)
-5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126
-(n, or if the).15 F F1<ad70>144 391.2 Q F0 .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<ad6e>2.548 E F0
-.048(option causes the)2.548 F -.15(ex)144 403.2 S 1.447
+5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .127
+(n, or if the).15 F F1<ad70>144 285.6 Q F0 .048
+(option is supplied, a list of names of all e)2.548 F .048(xported v)
+-.15 F .048(ariables is printed.)-.25 F(The)5.048 E F1<ad6e>2.547 E F0
+.047(option causes the)2.547 F -.15(ex)144 297.6 S 1.446
(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
(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 415.2 S .741(lue of the v)
-.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
-(export)5.741 E F0 .742(returns an e)3.242 F .742
-(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is)
-.25 F .032(encountered, one of the)144 427.2 R F2(names)2.532 E F0 .032
-(is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
-F F1<ad66>2.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 439.2 Q F1(fc)108 456 Q F0([)2.5 E
-F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2
+-.37 E F0 3.947(,t)C(he)-3.947 E -.25(va)144 309.6 S .742(lue of the v)
+.25 F .742(ariable is set to)-.25 F F2(wor)3.242 E(d)-.37 E F0(.)A F1
+(export)5.742 E F0 .742(returns an e)3.242 F .741
+(xit status of 0 unless an in)-.15 F -.25(va)-.4 G .741(lid option is)
+.25 F .031(encountered, one of the)144 321.6 R F2(names)2.531 E F0 .031
+(is not a v)2.531 F .032(alid shell v)-.25 F .032(ariable name, or)-.25
+F F1<ad66>2.532 E F0 .032(is supplied with a)2.532 F F2(name)2.892 E F0
+(that)2.712 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5
+E F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2
<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108
-468 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
-(cmd)-2.5 E F0(])A .431
-(The \214rst form selects a range of commands from)144 480 R F2<8c72>
-4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432
-(from the history list and displays or)3.612 F .142(edits and re-e)144
-492 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
+362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+(cmd)-2.5 E F0(])A .432
+(The \214rst form selects a range of commands from)144 374.4 R F2<8c72>
+4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .431
+(from the history list and displays or)3.612 F .141(edits and re-e)144
+386.4 R -.15(xe)-.15 G .141(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs)
.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 504 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
-2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)
--.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of)
-144 516 R .19(fset from the current command number\).)-.25 F(If)5.19 E
-F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F
-(-)-.2 E .948(rent command for listing \(so that)144 528 R/F4 10
-/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948
-(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E
-F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 540 R F2<8c72>4.41 E(st)-.1 E
-F0(is not speci\214ed, it is set to the pre)3.18 E
-(vious command for editing and \25516 for listing.)-.25 E(The)144 564 Q
-F1<ad6e>2.522 E F0 .022
+144 398.4 Q .311(ginning with that string\) or as a number \(an inde)
+-.15 F 2.811(xi)-.15 G .31(nto the history list, where a ne)-2.811 F
+-.05(ga)-.15 G(ti).05 E .61 -.15(ve n)-.25 H(umber).15 E .071
+(is used as an of)144 410.4 R .071
+(fset from the current command number\).)-.25 F .071(When listing, a)
+5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)2.571 E F0 .071
+(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653
+(lent to \2551 and \2550 is equi)144 422.4 R -.25(va)-.25 G .653
+(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653
+(command\); otherwise 0 is)3.153 F(equi)144 434.4 Q -.25(va)-.25 G .242
+(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F
+F2(last)2.832 E F0 .242
+(is not speci\214ed, it is set to the current command for list-)3.422 F
+.093(ing \(so that)144 446.4 R/F4 10/Courier@0 SF .093(fc \255l \25510)
+2.593 F F0 .093(prints the last 10 commands\) and to)2.593 F F2<8c72>
+4.502 E(st)-.1 E F0 2.592(otherwise. If)3.272 F F2<8c72>4.502 E(st)-.1 E
+F0 .092(is not speci-)3.272 F(\214ed, it is set to the pre)144 458.4 Q
+(vious command for editing and \25516 for listing.)-.25 E(The)144 482.4
+Q F1<ad6e>2.522 E F0 .022
(option suppresses the command numbers when listing.)2.522 F(The)5.022 E
F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022
-(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438
-F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
+(rses the order of).15 F .438(the commands.)144 494.4 R .438(If the)
+5.438 F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E
-.335(the editor gi)144 588 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
-(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
-.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
-(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
-(n,).15 E .63(the v)144 600 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0
--.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F
-F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631
-(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 612 R .951
-(ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95
-(When editing is complete, the edited commands are echoed and)5.951 F
--.15(exe)144 624 S(cuted.).15 E .788(In the second form,)144 648 R F2
+.334(the editor gi)144 506.4 R -.15(ve)-.25 G 2.834(nb).15 G(y)-2.834 E
+F2(ename)3.024 E F0 .335(is in)3.014 F -.2(vo)-.4 G -.1(ke).2 G 2.835
+(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835
+F(If)5.335 E F2(ename)3.025 E F0 .335(is not gi)3.015 F -.15(ve)-.25 G
+(n,).15 E .631(the v)144 518.4 R .631(alue of the)-.25 F F3(FCEDIT)3.131
+E F0 -.25(va)2.881 G .631(riable is used, and the v).25 F .631(alue of)
+-.25 F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.13 E F0 .63
+(is not set.)2.88 F .63(If nei-)5.63 F .005(ther v)144 530.4 R .005
+(ariable is set,)-.25 F F2(vi)4.171 E F0 .005(is used.)4.171 F .005
+(When editing is complete, the edited commands are echoed and e)5.005 F
+(x-)-.15 E(ecuted.)144 542.4 Q .789(In the second form,)144 566.4 R F2
(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 660 Q F0 .172(is interpreted the same as)2.672 F F2<8c72>
-2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
-(useful alias to use with this is)-2.5 F F4 .171(r='fc \255s')2.671 F F0
-2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E(typing)144 672 Q F4 7.165(rc)
-3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166
-(ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r)
-3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F
-(mand.)144 684 Q .142(If the \214rst form is used, the return v)144 708
-R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
+(is replaced by)3.288 F F2 -.37(re)3.288 G(p).37 E F0(.)A F2(Com-)5.788
+E(mand)144 578.4 Q F0 .171(is interpreted the same as)2.671 F F2<8c72>
+2.671 E(st)-.1 E F0(abo)2.671 E -.15(ve)-.15 G 5.171(.A).15 G .172
+(useful alias to use with this is)-2.499 F F4 .172(r='fc \255s')2.672 F
+F0 2.672(,s)C 2.672(ot)-2.672 G(hat)-2.672 E(typing)144 590.4 Q F4 7.166
+(rc)3.666 G(c)-7.166 E F0 1.166(runs the last command be)3.666 F 1.166
+(ginning with)-.15 F F4(cc)3.666 E F0 1.165(and typing)3.666 F F4(r)
+3.665 E F0(re-e)3.665 E -.15(xe)-.15 G 1.165(cutes the last com-).15 F
+(mand.)144 602.4 Q .142(If the \214rst form is used, the return v)144
+626.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
(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 720 R
-.454(If the)5.454 F F1<ad65>2.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(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(63)
-188.455 E 0 Cg EP
-%%Page: 64 64
+E F2(last)2.732 E F0 .455(specify history lines out of range.)144 638.4
+R .454(If the)5.454 F F1<ad65>2.954 E F0 .454
+(option is supplied, the return v)2.954 F .454(alue is the v)-.25 F .454
+(alue of the)-.25 F .787(last command e)144 650.4 R -.15(xe)-.15 G .787
+(cuted or f).15 F .788
+(ailure if an error occurs with the temporary \214le of commands.)-.1 F
+.788(If the)5.788 F 1.136
+(second form is used, the return status is that of the command re-e)144
+662.4 R -.15(xe)-.15 G 1.135(cuted, unless).15 F F2(cmd)3.835 E F0 1.135
+(does not)4.405 F(specify a v)144 674.4 Q
+(alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E
+(ailure.)-.1 E F1(fg)108 691.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
+144 703.2 Q F2(jobspec)5.653 E F0 1.413(in the fore)4.223 F 1.413
+(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413
+(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
+1.414(is not present, the)4.223 F(shell')144 715.2 Q 3.117(sn)-.55 G
+.617(otion of the)-3.117 F F2(curr)3.117 E .617(ent job)-.37 F F0 .617
+(is used.)3.117 F .617(The return v)5.617 F .616
+(alue is that of the command placed into the)-.25 F(fore)144 727.2 Q
+.362(ground, or f)-.15 F .362
+(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .363
+(hen run with job control enabled, if)-2.862 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(64)190.395 E 0 Cg EP
+%%Page: 65 65
%%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 .788
-(last command e)144 84 R -.15(xe)-.15 G .788(cuted or f).15 F .787
-(ailure if an error occurs with the temporary \214le of commands.)-.1 F
-.787(If the)5.787 F 1.135
-(second form is used, the return status is that of the command re-e)144
-96 R -.15(xe)-.15 G 1.136(cuted, unless).15 F/F1 10/Times-Italic@0 SF
-(cmd)3.836 E F0 1.136(does not)4.406 F(specify a v)144 108 Q
-(alid history line, in which case)-.25 E/F2 10/Times-Bold@0 SF(fc)2.5 E
-F0(returns f)2.5 E(ailure.)-.1 E F2(fg)108 124.8 Q F0([)2.5 E F1
-(jobspec)A F0(])A(Resume)144 136.8 Q F1(jobspec)5.654 E F0 1.413
-(in the fore)4.224 F 1.413(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913
-(tt)-3.913 G 1.413(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F1
-(jobspec)5.653 E F0 1.413(is not present, the)4.223 F(shell')144 148.8 Q
-3.116(sn)-.55 G .616(otion of the)-3.116 F F1(curr)3.116 E .616(ent job)
--.37 F F0 .617(is used.)3.116 F .617(The return v)5.617 F .617
-(alue is that of the command placed into the)-.25 F(fore)144 160.8 Q
-.363(ground, or f)-.15 F .363
-(ailure if run when job control is disabled or)-.1 F 2.862(,w)-.4 G .362
-(hen run with job control enabled, if)-2.862 F F1(jobspec)145.74 172.8 Q
-F0(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0
-(speci\214es a job that w)2.81 E(as started without job control.)-.1 E
-F2(getopts)108 189.6 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)
--.37 E F0(])A F2(getopts)144 201.6 Q F0 .793
-(is used by shell procedures to parse positional parameters.)3.293 F F1
-(optstring)6.023 E F0 .793(contains the option)3.513 F .15
-(characters to be recognized; if a character is follo)144 213.6 R .149
-(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
--.15(ve a)-.2 H(n).15 E(ar)144 225.6 Q .578
-(gument, which should be separated from it by white space.)-.18 F .579
-(The colon and question mark char)5.579 F(-)-.2 E 1.665
-(acters may not be used as option characters.)144 237.6 R 1.665
-(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts)
-4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796
-(option in the shell v)144 249.6 R(ariable)-.25 E F1(name)3.296 E F0
-3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797
-(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G
-3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 261.6 Q .085
-(gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND)
-4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845
-(or a shell script is in)144 273.6 R -.2(vo)-.4 G -.1(ke).2 G 3.345
-(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2
-(getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804
-(into the v)144 285.6 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A
-F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803
-(automatically; it must be manually)3.053 F .293
-(reset between multiple calls to)144 297.6 R F2(getopts)2.793 E F0 .293
-(within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F
-2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 309.6
-Q 2.044(When the end of options is encountered,)144 333.6 R F2(getopts)
-4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043
-(alue greater than zero.)-.25 F F3(OPTIND)144 345.6 Q F0
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(jobspec)145.74 84 Q F0(does not specify a v)2.81 E
+(alid job or)-.25 E F1(jobspec)4.24 E F0(speci\214es a job that w)2.81 E
+(as started without job control.)-.1 E/F2 10/Times-Bold@0 SF(getopts)108
+100.8 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A 2.5(g.)-.37 G(..)-2.5
+E F0(])A F2(getopts)144 112.8 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.294 F F1
+(optstring)6.023 E F0 .793(contains the option)3.513 F .149
+(characters to be recognized; if a character is follo)144 124.8 R .15
+(wed by a colon, the option is e)-.25 F .15(xpected to ha)-.15 F .45
+-.15(ve a)-.2 H(n).15 E(ar)144 136.8 Q .579
+(gument, which should be separated from it by white space.)-.18 F .578
+(The colon and question mark char)5.579 F(-)-.2 E .636
+(acters may not be used as option characters.)144 148.8 R .636
+(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts)
+3.136 E F0 .636(places the ne)3.136 F .636(xt op-)-.15 F .03
+(tion in the shell v)144 160.8 R(ariable)-.25 E F1(name)2.89 E F0 2.53
+(,i).18 G(nitializing)-2.53 E F1(name)2.89 E F0 .029(if it does not e)
+2.71 F .029(xist, and the inde)-.15 F 2.529(xo)-.15 G 2.529(ft)-2.529 G
+.029(he ne)-2.529 F .029(xt ar)-.15 F(gu-)-.18 E .065
+(ment to be processed into the v)144 172.8 R(ariable)-.25 E/F3 9
+/Times-Bold@0 SF(OPTIND)2.565 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND)
+4.565 E F0 .066(is initialized to 1 each time the shell or a)2.315 F
+.885(shell script is in)144 184.8 R -.2(vo)-.4 G -.1(ke).2 G 3.385
+(d. When).1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F2
+(getopts)3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F
+.566(the v)144 196.8 R(ariable)-.25 E F3(OPT)3.066 E(ARG)-.81 E F4(.)A
+F0 .566(The shell does not reset)5.066 F F3(OPTIND)3.066 E F0 .567
+(automatically; it must be manually reset)2.816 F .39
+(between multiple calls to)144 208.8 R F2(getopts)2.89 E F0 .39
+(within the same shell in)2.89 F -.2(vo)-.4 G .389(cation if a ne).2 F
+2.889(ws)-.25 G .389(et of parameters is to)-2.889 F(be used.)144 220.8
+Q 2.043(When the end of options is encountered,)144 244.8 R F2(getopts)
+4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.044
+(alue greater than zero.)-.25 F F3(OPTIND)144 256.8 Q F0
(is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G
(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0
-(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392
-(normally parses the positional parameters, b)4.892 F 2.392
-(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893
-(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144
-381.6 Q F0(parses those instead.)2.5 E F2(getopts)144 405.6 Q F0 1.166
-(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F
-1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165
-(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07
-(reporting is used.)144 417.6 R 1.071
-(In normal operation, diagnostic messages are printed when in)6.07 F
--.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144
-429.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
+(is set to ?.)2.5 E F2(getopts)144 280.8 Q F0 .485
+(normally parses the positional parameters, b)2.985 F .485
+(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F1(ar)3.315 E
+(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 292.8 Q F2(getopts)2.5 E
+F0(parses those instead.)2.5 E F2(getopts)144 316.8 Q F0 .345
+(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F
+.345(the \214rst character of)2.845 F F1(optstring)3.075 E F0 .345
+(is a colon,)3.065 F F1(silent)3.185 E F0 .345(error re-)3.525 F 1.669
+(porting is used.)144 328.8 R 1.668
+(In normal operation, diagnostic messages are printed when in)6.669 F
+-.25(va)-.4 G 1.668(lid options or).25 F .393(missing option ar)144
+340.8 R .393(guments are encountered.)-.18 F .394(If the v)5.394 F
(ariable)-.25 E F3(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 441.6 Q
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 352.8 Q
-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 465.6 R
--.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667
-(places ? into)3.167 F F1(name)3.527 E F0 .667
-(and, if not silent, prints an error message)3.347 F .4(and unsets)144
-477.6 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E
-F0 .399(is silent, the option character found is placed in)2.899 F F3
-(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F
-(diagnostic message is printed.)144 489.6 Q 1.241(If a required ar)144
-513.6 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0
-1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742
-(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 525.6
-Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234
-(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2
-(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E
-F0(\)).833 E(is placed in)144 537.6 Q F1(name)2.86 E F0(and)2.68 E F3
+F1(optstring)2.73 E F0(is not a colon.)2.72 E .667(If an in)144 376.8 R
+-.25(va)-.4 G .667(lid option is seen,).25 F F2(getopts)3.167 E F0 .667
+(places ? into)3.167 F F1(name)3.527 E F0 .666
+(and, if not silent, prints an error message)3.347 F .399(and unsets)144
+388.8 R F3(OPT)2.899 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899
+E F0 .399(is silent, the option character found is placed in)2.899 F F3
+(OPT)2.899 E(ARG)-.81 E F0 .4(and no)2.65 F
+(diagnostic message is printed.)144 400.8 Q 1.242(If a required ar)144
+424.8 R 1.242(gument is not found, and)-.18 F F2(getopts)3.741 E F0
+1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.741
+(\)i).833 G 3.741(sp)-3.741 G 1.241(laced in)-3.741 F F1(name)144.36
+436.8 Q F0(,).18 E F3(OPT)2.713 E(ARG)-.81 E F0 .213
+(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F2
+(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F2(:).833 E
+F0(\)).833 E(is placed in)144 448.8 Q F1(name)2.86 E F0(and)2.68 E F3
(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2
-(getopts)144 561.6 Q F0 .902
+(getopts)144 472.8 Q F0 .902
(returns true if an option, speci\214ed or unspeci\214ed, is found.)
-3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 573.6 Q F2(hash)108
-590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2<ad70>-2.5 E F1(\214lename)
+3.402 F .902(It returns f)5.902 F .901(alse if the end of)-.1 F
+(options is encountered or an error occurs.)144 484.8 Q F2(hash)108
+501.6 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2<ad70>-2.5 E F1(\214lename)
2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A
-.858(Each time)144 602.4 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)
+.858(Each time)144 513.6 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo)
-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name)
3.718 E F0 .858(is determined by searching)3.538 F .956
-(the directories in)144 614.4 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0
+(the directories in)144 525.6 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0
.956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956
-(viously-remembered pathname is discarded.)-.25 F .243(If the)144 626.4
-R F2<ad70>2.743 E F0 .243
-(option is supplied, no path search is performed, and)2.743 F F1
-(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711
-(of the command.)144 638.4 R(The)6.711 E F2<ad72>4.211 E F0 1.711
-(option causes the shell to for)4.211 F 1.712
-(get all remembered locations.)-.18 F(The)6.712 E F2<ad64>4.212 E F0
-.833(option causes the shell to for)144 650.4 R .833
-(get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I)
-C 3.333(ft)-5.833 G(he)-3.333 E F2<ad74>3.333 E F0 .833(option is sup-)
-3.333 F .703(plied, the full pathname to which each)144 662.4 R F1(name)
-3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F
-F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144
-674.4 R F2<ad74>3.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0
-.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2
-<ad6c>3.295 E F0 .795(option causes)3.295 F .934
-(output to be displayed in a format that may be reused as input.)144
-686.4 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G
-.935(n, or if).15 F(only)144 698.4 Q F2<ad6c>2.822 E F0 .322
-(is supplied, information about remembered commands is printed.)2.822 F
-.321(The return status is true)5.321 F(unless a)144 710.4 Q F1(name)2.86
-E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
-.25 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(64)188.455 E 0 Cg
-EP
-%%Page: 65 65
+(viously-remembered pathname is discarded.)-.25 F .242(If the)144 537.6
+R F2<ad70>2.742 E F0 .243
+(option is supplied, no path search is performed, and)2.742 F F1
+(\214lename)4.653 E F0 .243(is used as the full \214lename)2.923 F .615
+(of the command.)144 549.6 R(The)5.615 E F2<ad72>3.115 E F0 .615
+(option causes the shell to for)3.115 F .615
+(get all remembered locations.)-.18 F(The)5.615 E F2<ad64>3.115 E F0
+(op-)3.115 E .293(tion causes the shell to for)144 561.6 R .293
+(get the remembered location of each)-.18 F F1(name)2.794 E F0 5.294(.I)
+C 2.794(ft)-5.294 G(he)-2.794 E F2<ad74>2.794 E F0 .294
+(option is supplied,)2.794 F .028(the full pathname to which each)144
+573.6 R F1(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028
+(If multiple)5.028 F F1(name)2.528 E F0(ar)2.528 E .028
+(guments are sup-)-.18 F .175(plied with)144 585.6 R F2<ad74>2.675 E F0
+2.675(,t)C(he)-2.675 E F1(name)2.675 E F0 .175
+(is printed before the hashed full pathname.)2.675 F(The)5.175 E F2
+<ad6c>2.676 E F0 .176(option causes output to)2.676 F .783
+(be displayed in a format that may be reused as input.)144 597.6 R .783
+(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783
+(n, or if only).15 F F2<ad6c>3.283 E F0(is)3.283 E .807
+(supplied, information about remembered commands is printed.)144 609.6 R
+.807(The return status is true unless a)5.807 F F1(name)144.36 621.6 Q
+F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.)
+.25 E F2(help)108 638.4 Q F0([)2.5 E F2(\255dms)A F0 2.5(][)C F1
+(pattern)-2.5 E F0(])A .867(Display helpful information about b)144
+650.4 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0
+.866(is speci\214ed,)3.607 F F2(help)3.366 E F0(gi)3.366 E -.15(ve)-.25
+G 3.366(sd).15 G(etailed)-3.366 E .223(help on all commands matching)144
+662.4 R F1(pattern)3.973 E F0 2.723(;o).24 G .223
+(therwise help for all the b)-2.723 F .224
+(uiltins and shell control struc-)-.2 F(tures is printed.)144 674.4 Q F2
+<ad64>144 686.4 Q F0(Display a short description of each)180 686.4 Q F1
+(pattern)2.5 E F2<ad6d>144 698.4 Q F0(Display the description of each)
+180 698.4 Q F1(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G
+(ormat)-2.5 E F2<ad73>144 710.4 Q F0
+(Display only a short usage synopsis for each)180 710.4 Q F1(pattern)2.5
+E F0(The return status is 0 unless no command matches)144 727.2 Q F1
+(pattern)3.75 E F0(.).24 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(65)190.395 E 0 Cg EP
+%%Page: 66 66
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(help)108 84 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C/F2 10
-/Times-Italic@0 SF(pattern)-2.5 E F0(])A .866
-(Display helpful information about b)144 96 R .867(uiltin commands.)-.2
-F(If)5.867 E F2(pattern)4.617 E F0 .867(is speci\214ed,)3.607 F F1(help)
-3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E
-.307(help on all commands matching)144 108 R F2(pattern)2.807 E F0 2.807
-(;o).24 G .307(therwise help for all the b)-2.807 F .306
-(uiltins and shell control struc-)-.2 F(tures is printed.)144 120 Q F1
-<ad64>144 132 Q F0(Display a short description of each)180 132 Q F2
-(pattern)2.5 E F1<ad6d>144 144 Q F0(Display the description of each)180
-144 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5
-E F1<ad73>144 156 Q F0(Display only a short usage synopsis for each)180
-156 Q F2(pattern)2.5 E F0
-(The return status is 0 unless no command matches)144 172.8 Q F2
-(pattern)2.5 E F0(.).24 E F1(history [)108 189.6 Q F2(n)A F1(])A
-(history \255c)108 201.6 Q(history \255d)108 213.6 Q F2(of)2.5 E(fset)
--.18 E F1(history \255d)108 225.6 Q F2(start)2.5 E F0<ad>A F2(end)A F1
-(history \255anrw)108 237.6 Q F0([)2.5 E F2(\214lename)A F0(])A F1
-(history \255p)108 249.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5
-(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 261.6 Q F2(ar)2.5 E(g)
--.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144
-273.6 S .752
+SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c)
+108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1
+(history \255d)108 120 Q F2(start)2.5 E F0<ad>A F2(end)A F1
+(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1
+(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.)
+-.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 Q F2(ar)2.5 E(g)-.37 E
+F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 168 S .752
(th no options, display the command history list with line numbers.).4 F
-.752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2
-G .381(been modi\214ed.)144 285.6 R .38(An ar)5.38 F .38(gument of)-.18
-F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
+.752(Lines listed with a)5.752 F F1(*)3.251 E F0(ha)3.251 E -.15(ve)-.2
+G .38(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F
+F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88
(lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9
-/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 297.6 Q(T)-.855 E F0 .264
-(is set and not null, it is used as a format string for)2.514 F F2
-(strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02
-(ciated with each displayed history entry)144 309.6 R 6.019(.N)-.65 G
+/Times-Bold@0 SF(HISTTIMEFOR-)2.881 E(MA)144 192 Q(T)-.855 E F0 .265
+(is set and not null, it is used as a format string for)2.515 F F2
+(strftime)2.764 E F0 .264(\(3\) to display the time stamp asso-)B 1.019
+(ciated with each displayed history entry)144 204 R 6.019(.N)-.65 G
3.519(oi)-6.019 G(nterv)-3.519 E 1.019
(ening blank is printed between the formatted)-.15 F .176
-(time stamp and the history line.)144 321.6 R(If)5.176 E F2(\214lename)
+(time stamp and the history line.)144 216 R(If)5.176 E F2(\214lename)
2.676 E F0 .176
(is supplied, it is used as the name of the history \214le; if)2.676 F
-(not, the v)144 333.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)
-2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad63>144 345.6 Q F0
-(Clear the history list by deleting all the entries.)180 345.6 Q F1
-<ad64>144 357.6 Q F2(of)2.5 E(fset)-.18 E F0 .39
-(Delete the history entry at position)180 369.6 R F2(of)2.889 E(fset)
--.18 E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)
-2.889 F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.889(,i).15 G 2.889(ti)
--2.889 G 2.889(si)-2.889 G .389(nterpreted as relati)-2.889 F -.15(ve)
--.25 G .598(to one greater than the last history position, so ne)180
-381.6 R -.05(ga)-.15 G(ti).05 E .899 -.15(ve i)-.25 H .599
-(ndices count back from the end).15 F(of the history)180 393.6 Q 2.5(,a)
+(not, the v)144 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25
+E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad63>144 240 Q F0
+(Clear the history list by deleting all the entries.)180 240 Q F1<ad64>
+144 252 Q F2(of)2.5 E(fset)-.18 E F0 .389
+(Delete the history entry at position)180 264 R F2(of)2.889 E(fset)-.18
+E F0 5.389(.I)C(f)-5.389 E F2(of)2.889 E(fset)-.18 E F0 .389(is ne)2.889
+F -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G 2.89(,i).15 G 2.89(ti)-2.89 G
+2.89(si)-2.89 G .39(nterpreted as relati)-2.89 F -.15(ve)-.25 G .599
+(to one greater than the last history position, so ne)180 276 R -.05(ga)
+-.15 G(ti).05 E .899 -.15(ve i)-.25 H .598
+(ndices count back from the end).15 F(of the history)180 288 Q 2.5(,a)
-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G
(efers to the current)-2.5 E F1(history -d)2.5 E F0(command.)2.5 E F1
-<ad64>144 405.6 Q F2(start)2.5 E F0<ad>A F2(end)A F0 .758
-(Delete the history entries between positions)180 417.6 R F2(start)3.258
-E F0(and)3.257 E F2(end)3.257 E F0 3.257(,i)C(nclusi)-3.257 E -.15(ve)
--.25 G 5.757(.P).15 G(ositi)-5.757 E 1.057 -.15(ve a)-.25 H .757(nd ne)
-.15 F -.05(ga)-.15 G(-).05 E(ti)180 429.6 Q .3 -.15(ve v)-.25 H
-(alues for)-.1 E F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
+<ad64>144 300 Q F2(start)2.5 E F0<ad>A F2(end)A F0 .757
+(Delete the history entries between positions)180 312 R F2(start)3.257 E
+F0(and)3.258 E F2(end)3.258 E F0 3.258(,i)C(nclusi)-3.258 E -.15(ve)-.25
+G 5.758(.P).15 G(ositi)-5.758 E 1.058 -.15(ve a)-.25 H .758(nd ne).15 F
+-.05(ga)-.15 G(-).05 E(ti)180 324 Q .3 -.15(ve v)-.25 H(alues for)-.1 E
+F2(start)2.5 E F0(and)2.5 E F2(end)2.5 E F0
(are interpreted as described abo)2.5 E -.15(ve)-.15 G(.).15 E F1<ad61>
-144 441.6 Q F0 .564(Append the `)180 441.6 R(`ne)-.74 E(w')-.25 E 3.064
-('h)-.74 G .564(istory lines to the history \214le.)-3.064 F .565
-(These are history lines entered since)5.564 F(the be)180 453.6 Q
+144 336 Q F0 .565(Append the `)180 336 R(`ne)-.74 E(w')-.25 E 3.065('h)
+-.74 G .564(istory lines to the history \214le.)-3.065 F .564
+(These are history lines entered since)5.564 F(the be)180 348 Q
(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E
-(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 465.6
-Q F0 .854(Read the history lines not already read from the history \214\
-le into the current history list.)180 465.6 R .772
-(These are lines appended to the history \214le since the be)180 477.6 R
-.773(ginning of the current)-.15 F F1(bash)3.273 E F0(ses-)3.273 E
-(sion.)180 489.6 Q F1<ad72>144 501.6 Q F0(Read the contents of the hist\
-ory \214le and append them to the current history list.)180 501.6 Q F1
-<ad77>144 513.6 Q F0
-(Write the current history list to the history \214le, o)180 513.6 Q
--.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
-(ontents.)-2.5 E F1<ad70>144 525.6 Q F0 .626
-(Perform history substitution on the follo)180 525.6 R(wing)-.25 E F2
-(ar)3.125 E(gs)-.37 E F0 .625(and display the result on the standard)
-3.125 F 2.975(output. Does)180 537.6 R .475
+(ut not already appended to the history \214le.)-.2 E F1<ad6e>144 360 Q
+F0 .854(Read the history lines not already read from the history \214le\
+ into the current history list.)180 360 R .773
+(These are lines appended to the history \214le since the be)180 372 R
+.772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E
+(sion.)180 384 Q F1<ad72>144 396 Q F0(Read the contents of the history \
+\214le and append them to the current history list.)180 396 Q F1<ad77>
+144 408 Q F0(Write the current history list to the history \214le, o)180
+408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G
+(ontents.)-2.5 E F1<ad70>144 420 Q F0 .625
+(Perform history substitution on the follo)180 420 R(wing)-.25 E F2(ar)
+3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F
+2.975(output. Does)180 432 R .475
(not store the results in the history list.)2.975 F(Each)5.475 E F2(ar)
2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F
-(normal history e)180 549.6 Q(xpansion.)-.15 E F1<ad73>144 561.6 Q F0
-.363(Store the)180 561.6 R F2(ar)3.193 E(gs)-.37 E F0 .363
-(in the history list as a single entry)3.133 F 5.363(.T)-.65 G .362
-(he last command in the history list is)-5.363 F(remo)180 573.6 Q -.15
-(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
-(are added.)2.77 E .145(If the)144 590.4 R F3(HISTTIMEFORMA)2.645 E(T)
+(normal history e)180 444 Q(xpansion.)-.15 E F1<ad73>144 456 Q F0 .362
+(Store the)180 456 R F2(ar)3.192 E(gs)-.37 E F0 .363
+(in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363
+(he last command in the history list is)-5.363 F(remo)180 468 Q -.15(ve)
+-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0
+(are added.)2.77 E .146(If the)144 484.8 R F3(HISTTIMEFORMA)2.645 E(T)
-.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 602.4 R .669
-(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
-(hen the history)-5.668 F .955(\214le is read, lines be)144 614.4 R .956
-(ginning with the history comment character follo)-.15 F .956
-(wed immediately by a digit)-.25 F 1.796
-(are interpreted as timestamps for the follo)144 626.4 R 1.795
-(wing history entry)-.25 F 6.795(.T)-.65 G 1.795(he return v)-6.795 F
-1.795(alue is 0 unless an)-.25 F(in)144 638.4 Q -.25(va)-.4 G .768(lid \
-option is encountered, an error occurs while reading or writing the his\
-tory \214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)144 650.4 Q(fset)
--.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1
-<ad64>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
-<ad70>3.531 E F0 -.1(fa)144 662.4 S(ils.).1 E F1(jobs)108 679.2 Q F0([)
-2.5 E F1(\255lnprs)A F0 2.5(][)C F2(jobspec)A F0(... ])2.5 E F1
-(jobs \255x)108 691.2 Q F2(command)2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37
-E F0(... ])2.5 E(The \214rst form lists the acti)144 703.2 Q .3 -.15
-(ve j)-.25 H 2.5(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H
-(he follo).15 E(wing meanings:)-.25 E F1<ad6c>144 715.2 Q F0
-(List process IDs in addition to the normal information.)180 715.2 Q
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(65)188.455 E 0 Cg EP
-%%Page: 66 66
+.25 F .668(entry is written to the history \214le, mark)144 496.8 R .669
+(ed with the history comment character)-.1 F 5.669(.W)-.55 G .669
+(hen the history)-5.669 F .956(\214le is read, lines be)144 508.8 R .956
+(ginning with the history comment character follo)-.15 F .955
+(wed immediately by a digit)-.25 F .832
+(are interpreted as timestamps for the follo)144 520.8 R .832
+(wing history entry)-.25 F 5.833(.T)-.65 G .833(he return v)-5.833 F
+.833(alue is 0 unless an in-)-.25 F -.25(va)144 532.8 S .168(lid option\
+ is encountered, an error occurs while reading or writing the history \
+\214le, an in).25 F -.25(va)-.4 G(lid).25 E F2(of)2.668 E(f-)-.18 E(set)
+144 544.8 Q F0(is supplied as an ar)2.5 E(gument to)-.18 E F1<ad64>2.5 E
+F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E
+(xpansion supplied as an ar)-.15 E(gument to)-.18 E F1<ad70>2.5 E F0 -.1
+(fa)2.5 G(ils.).1 E F1(jobs)108 561.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5
+(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 573.6 Q F2(command)
+2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 E
+(The \214rst form lists the acti)144 585.6 Q .3 -.15(ve j)-.25 H 2.5
+(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad6c>144 597.6 Q F0
+(List process IDs in addition to the normal information.)180 597.6 Q F1
+<ad6e>144 609.6 Q F0 .193(Display information only about jobs that ha)
+180 609.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15
+F .194(as last noti-)-.1 F(\214ed of their status.)180 621.6 Q F1<ad70>
+144 633.6 Q F0(List only the process ID of the job')180 633.6 Q 2.5(sp)
+-.55 G(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 645.6 Q F0
+(Display only running jobs.)180 645.6 Q F1<ad73>144 657.6 Q F0
+(Display only stopped jobs.)180 657.6 Q(If)144 674.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 686.4 Q -.25
+(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
+E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 703.2 R F1
+<ad78>2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0
+.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in)
+3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395
+(with the corre-)3.164 F(sponding process group ID, and e)144 715.2 Q
+-.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar)
+2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15
+E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(66)190.395 E 0 Cg EP
+%%Page: 67 67
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad6e>144 84 Q F0 .193(Display information only about jobs that ha)180
-84 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 F .194
-(as last noti-)-.1 F(\214ed of their status.)180 96 Q F1<ad70>144 108 Q
-F0(List only the process ID of the job')180 108 Q 2.5(sp)-.55 G
-(rocess group leader)-2.5 E(.)-.55 E F1<ad72>144 120 Q F0
-(Display only running jobs.)180 120 Q F1<ad73>144 132 Q F0
-(Display only stopped jobs.)180 132 Q(If)144 148.8 Q/F2 10
-/Times-Italic@0 SF(jobspec)4.554 E F0 .314(is gi)3.124 F -.15(ve)-.25 G
-.314(n, output is restricted to information about that job).15 F 5.313
-(.T)-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 160.8 Q
--.25(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G
-(lid).25 E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144
-177.6 R F1<ad78>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
-189.6 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E
-F2(ar)2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)
--.15 E F1(kill)108 206.4 Q F0([)2.5 E F1<ad73>A F2(sigspec)2.5 E F0(|)
-2.5 E F1<ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2(sigspec)A
-F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)
--2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1<ad4c>A F0([)2.5 E F2(sigspec)
-A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12
-(Send the signal named by)144 230.4 R F2(sigspec)2.96 E F0(or)2.93 E F2
-(signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E
-F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)
-2.929 E .318(either a case-insensiti)144 242.4 R .618 -.15(ve s)-.25 H
+SF(kill)108 84 Q F0([)2.5 E F1<ad73>A/F2 10/Times-Italic@0 SF(sigspec)
+2.5 E F0(|)2.5 E F1<ad6e>2.5 E F2(signum)2.5 E F0(|)2.5 E F1<ad>2.5 E F2
+(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5
+(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1<ad4c>A F0([)2.5 E F2
+(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .017
+(Send the signal named by)144 108 R F2(sigspec)2.857 E F0(or)2.827 E F2
+(signum)2.857 E F0 .017(to the processes named by)2.837 F F2(pid)3.767 E
+F0(or)3.287 E F2(jobspec)4.257 E F0(.).31 E F2(sigspec)5.357 E F0(is)
+2.827 E .318(either a case-insensiti)144 120 R .618 -.15(ve s)-.25 H
.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0
.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
-(pre\214x\) or a signal)2.569 F(number;)144 254.4 Q F2(signum)4.189 E F0
-1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec)
-4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0
-1.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18
-F F1<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)
-5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when)
-.18 F F1<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523
-(n, the names).15 F .28(of the signals corresponding to the ar)144 278.4
-R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E
-F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 290.4 Q .377(gument to)-.18 F
-F1<ad6c>2.877 E F0 .378
-(is a number specifying either a signal number or the e)2.877 F .378
-(xit status of a process termi-)-.15 F .963(nated by a signal.)144 302.4
-R(The)5.962 E F1<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)
--.25 G .962(lent to).25 F F1<ad6c>3.462 E F0(.)A F1(kill)5.962 E F0 .962
+(pre\214x\) or a signal)2.569 F(number;)144 132 Q F2(signum)3.268 E F0
+.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F2(sigspec)
+3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427
+(is assumed.)2.677 F .427(An ar)5.427 F(-)-.2 E .313(gument of)144 144 R
+F1<ad6c>2.813 E F0 .314(lists the signal names.)2.814 F .314(If an)5.314
+F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when).18 F
+F1<ad6c>2.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .314
+(n, the names of).15 F .12(the signals corresponding to the ar)144 156 R
+.119(guments are listed, and the return status is 0.)-.18 F(The)5.119 E
+F2 -.2(ex)2.619 G(it_status).2 E F0(ar)2.619 E(-)-.2 E .799(gument to)
+144 168 R F1<ad6c>3.299 E F0 .799
+(is a number specifying either a signal number or the e)3.299 F .8
+(xit status of a process termi-)-.15 F .963(nated by a signal.)144 180 R
+(The)5.962 E F1<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)-.25
+G .962(lent to).25 F F1<ad6c>3.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 314.4 Q(alse if an error occurs or an in)
--.1 E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 331.2 Q
-F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-343.2 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
+(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1
+E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2
+(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144
+220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197
(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 355.2 Q F2(ar)
+2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar)
2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 372 Q F0([)2.5 E
-F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 384 S 2.56(re).15 G .06(ach ar)-2.56 F
-.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0
-.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he)
--5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 396 Q 3.152(yo)-.15
-G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar)3.152
-E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653
+(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.542(re).15 G .042(ach ar)
+-2.542 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F2
+(name)2.902 E F0 .042(is created, and assigned)2.722 F F2(value)2.832 E
+F0 5.042(.T).18 G(he)-5.042 E F2(option)2.542 E F0 .041(can be)2.541 F
+(an)144 273.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652
+(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
-408 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H .422
-(isible scope restricted to that function and its children.).15 F(If)
-5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461
-(of shell options is made local to the function in which)144 420 R F1
-(local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462
-(d: shell options changed).1 F 1.563(using the)144 432 R F1(set)4.063 E
-F0 -.2(bu)4.063 G 1.563
-(iltin inside the function are restored to their original v).2 F 1.562
-(alues when the function)-.25 F 3.743(returns. W)144 444 R 1.243
-(ith no operands,)-.4 F F1(local)3.743 E F0 1.243
-(writes a list of local v)3.743 F 1.244
-(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42
-(error to use)144 456 R F1(local)2.92 E F0 .42
-(when not within a function.)2.92 F .42(The return status is 0 unless)
-5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in)
-144 468 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68
-E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108
-484.8 Q F0(Exit a login shell.)144 484.8 Q F1(map\214le)108 501.6 Q F0
+285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
+.422(isible scope restricted to that function and its children.).15 F
+(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F .509
+(of shell options is made local to the function in which)144 297.6 R F1
+(local)3.01 E F0 .51(is in)3.01 F -.2(vo)-.4 G -.1(ke).2 G .51
+(d: shell options changed us-).1 F 1.171(ing the)144 309.6 R F1(set)
+3.671 E F0 -.2(bu)3.671 G 1.171
+(iltin inside the function are restored to their original v).2 F 1.17
+(alues when the function re-)-.25 F 3.38(turns. The)144 321.6 R .88
+(restore is ef)3.38 F .88(fected as if a series of)-.25 F F1(set)3.381 E
+F0 .881(commands were e)3.381 F -.15(xe)-.15 G .881
+(cuted to restore the v).15 F(alues)-.25 E .788
+(that were in place before the function.)144 333.6 R -.4(Wi)5.788 G .788
+(th no operands,).4 F F1(local)3.288 E F0 .787(writes a list of local v)
+3.288 F .787(ariables to)-.25 F .654(the standard output.)144 345.6 R
+.654(It is an error to use)5.654 F F1(local)3.154 E F0 .654
+(when not within a function.)3.154 F .655(The return status is 0)5.654 F
+(unless)144 357.6 Q F1(local)2.5 E F0(is used outside a function, an in)
+2.5 E -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or)2.68 E
+F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout)108
+374.4 Q F0(Exit a login shell.)144 374.4 Q F1(map\214le)108 391.2 Q F0
([)2.5 E F1<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)
2.5 E F0 2.5(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>
-2.5 E F2(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>
-2.5 E F2(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E
F0 2.5(][)C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E
-(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1
+(ay)-.15 E F0(])A F1 -.18(re)108 403.2 S(adarray).18 E F0([)2.5 E F1
<ad64>A F2(delim)2.5 E F0 2.5(][)C F1<ad6e>-2.5 E F2(count)2.5 E F0 2.5
(][)C F1<ad4f>-2.5 E F2(origin)2.5 E F0 2.5(][)C F1<ad73>-2.5 E F2
(count)2.5 E F0 2.5(][)C F1<ad74>-2.5 E F0 2.5(][)C F1<ad75>-2.5 E F2
(fd)2.5 E F0 2.5(][)C F1<ad43>-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)
C F1<ad63>-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0
-(])A .179(Read lines from the standard input into the inde)144 525.6 R
--.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F2
-(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18
-(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 537.6 R
-F1<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F
-(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
-E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,)
--6.248 F(ha)144 549.6 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad64>144 561.6 Q F0 .91
-(The \214rst character of)180 561.6 R F2(delim)3.41 E F0 .911
-(is used to terminate each input line, rather than ne)3.41 F 3.411
-(wline. If)-.25 F F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1
+(])A .159(Read lines from the standard input into the inde)144 415.2 R
+-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F2
+(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.658(rf)-2.659 G .158
+(rom \214le descriptor)-2.658 F F2(fd)4.628 E F0 1.248(if the)144 427.2
+R F1<ad75>3.748 E F0 1.248(option is supplied.)3.748 F 1.249(The v)6.249
+F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
+E F2(arr)3.749 E(ay)-.15 E F0 6.249(.O)C 1.249(ptions, if supplied,)
+-6.249 F(ha)144 439.2 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad64>144 451.2 Q F0 .911
+(The \214rst character of)180 451.2 R F2(delim)3.411 E F0 .911
+(is used to terminate each input line, rather than ne)3.411 F 3.41
+(wline. If)-.25 F F2(delim)180 463.2 Q F0(is the empty string,)2.5 E F1
(map\214le)2.5 E F0(will terminate a line when it reads a NUL character)
-2.5 E(.)-.55 E F1<ad6e>144 585.6 Q F0(Cop)180 585.6 Q 2.5(ya)-.1 G 2.5
+2.5 E(.)-.55 E F1<ad6e>144 475.2 Q F0(Cop)180 475.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 F1<ad4f>144 597.6 Q F0(Be)180
-597.6 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82
-E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5
-(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 609.6 Q F0
-(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1
-<ad74>144 621.6 Q F0(Remo)180 621.6 Q .3 -.15(ve a t)-.15 H(railing).15
+2.5 E F0(is 0, all lines are copied.)2.5 E F1<ad4f>144 487.2 Q F0(Be)180
+487.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82
+E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E
+2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 499.2 Q F0
+(Discard the \214rst)180 499.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1
+<ad74>144 511.2 Q F0(Remo)180 511.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 F1<ad75>144 633.6 Q F0
-(Read lines from \214le descriptor)180 633.6 Q F2(fd)2.5 E F0
-(instead of the standard input.)2.5 E F1<ad43>144 645.6 Q F0(Ev)180
-645.6 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
+(wline\) from each line read.)-.25 E F1<ad75>144 523.2 Q F0
+(Read lines from \214le descriptor)180 523.2 Q F2(fd)2.5 E F0
+(instead of the standard input.)2.5 E F1<ad43>144 535.2 Q F0(Ev)180
+535.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2
(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
-(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 657.6
-Q F0(Specify the number of lines read between each call to)180 657.6 Q
-F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 674.4 Q F1<ad43>2.968 E F0
-.467(is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467
+(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1<ad63>144 547.2
+Q F0(Specify the number of lines read between each call to)180 547.2 Q
+F2(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 564 Q F1<ad43>2.967 E F0 .467
+(is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467
(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2
(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467
-(luated, it is sup-).25 F .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
+(luated, it is sup-).25 F .262(plied the inde)144 576 R 2.762(xo)-.15 G
+2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\
+ned and the line to be assigned to that element)-.15 F .274
+(as additional ar)144 588 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E
+F0 .274(is e)2.774 F -.25(va)-.25 G .274
+(luated after the line is read b).25 F .275
+(ut before the array element is)-.2 F(assigned.)144 600 Q
+(If not supplied with an e)144 616.8 Q(xplicit origin,)-.15 E F1
(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 5.0)72 768 Q(2018 December 7)
-139.295 E(66)188.455 E 0 Cg EP
-%%Page: 67 67
+(before assigning to it.)2.5 E F1(map\214le)144 633.6 Q F0 .797
+(returns successfully unless an in)3.298 F -.25(va)-.4 G .797
+(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr)
+3.297 E(ay)-.15 E F0 .797(is in-)3.297 F -.25(va)144 645.6 S
+(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
+(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
+F1(popd)108 662.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
+2.5(][)C<ad>-2.5 E F2(n)A F0(])A(Remo)144 674.4 Q -.15(ve)-.15 G 2.799
+(se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G
+.299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15
+G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144
+686.4 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479
+(op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478
+(uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15
+F(wing)-.25 E(meanings:)144 698.4 Q F1<ad6e>144 710.4 Q F0 .551
+(Suppresses the normal change of directory when remo)180 710.4 R .551
+(ving directories from the stack, so)-.15 F
+(that only the stack is manipulated.)180 722.4 Q(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(67)190.395 E 0 Cg EP
+%%Page: 68 68
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(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<ad>-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 F1<ad6e>144 160.8
-Q F0 .551(Suppresses the normal change of directory when remo)180 160.8
-R .551(ving directories from the stack, so)-.15 F
-(that only the stack is manipulated.)180 172.8 Q F1(+)144 184.8 Q F2(n)A
-F0(Remo)180 184.8 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E
-F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25
-F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180
-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 F1<ad>144 208.8 Q F2(n)A F0
-(Remo)180 208.8 Q -.15(ve)-.15 G 3.76(st).15 G(he)-3.76 E F2(n)3.76 E F0
-1.259(th entry counting from the right of the list sho)B 1.259(wn by)
--.25 F F1(dirs)3.759 E F0 3.759(,s)C 1.259(tarting with)-3.759 F 2.5
-(zero. F)180 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0
-(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65
-E F3(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .643(If the)144
-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 F1<ad76>A F2(var)2.5 E F0
-(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.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 F1<ad76>3.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
+SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15
+G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14
+(th entry counting from the left of the list sho)B .14(wn by)-.25 F F1
+(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 96
+S 2.5(re).15 G(xample:)-2.65 E/F3 10/Courier@0 SF(popd +0)2.5 E F0(remo)
+2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,)-.65 E
+F3(popd +1)2.5 E F0(the second.)2.5 E F1<ad>144 108 Q F2(n)A F0(Remo)180
+108 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 1.259
+(th entry counting from the right of the list sho)B 1.26(wn by)-.25 F F1
+(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 120
+R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0(remo)2.5 E -.15(ve)-.15
+G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3(popd -1)2.5 E F0
+(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 136.8 R F1(popd)3.144 E
+F0 .644(command is successful, a)3.144 F F1(dirs)3.143 E F0 .643
+(is performed as well, and the return status is 0.)3.143 F F1(popd)5.643
+E F0 .415(returns f)144 148.8 R .415(alse if an in)-.1 F -.25(va)-.4 G
+.415(lid option is encountered, the directory stack is empty).25 F 2.916
+(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F
+(tory stack entry is speci\214ed, or the directory change f)144 160.8 Q
+(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
+(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .358
+(Write the formatted)144 189.6 R F2(ar)2.858 E(guments)-.37 E F0 .358
+(to the standard output under the control of the)2.858 F F2(format)2.857
+E F0 5.357(.T)C(he)-5.357 E F1<ad76>2.857 E F0(op-)2.857 E .714
+(tion causes the output to be assigned to the v)144 201.6 R(ariable)-.25
+E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214
+F(output.)144 213.6 Q(The)144 237.6 Q F2(format)3.018 E F0 .517(is a ch\
+aracter string which contains three types of objects: plain characters,\
+ which are)3.018 F .704(simply copied to standard output, character esc\
+ape sequences, which are con)144 249.6 R -.15(ve)-.4 G .704
(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)180 398.4 Q F1(printf)
-2.595 E F0 .096(to e)2.595 F .096
+\214cations, each of which causes printing of the ne)144 261.6 R .036
+(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0
+5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2
+(printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032
+E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 285.6 Q
+(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf)
+2.596 E F0 .096(to e)2.596 F .096
(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 410.4 Q(ay as)
--.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 422.4 Q F0(causes)180 422.4 Q
+2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 309.6 Q(ay as)
+-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 Q
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 434.4 Q F1(%\()144 446.4 Q F2(datefmt)A F1(\)T)A F0(causes)
-180 458.4 Q F1(printf)4.403 E F0 1.904
-(to output the date-time string resulting from using)4.403 F F2(datefmt)
-4.404 E F0 1.904(as a format)4.404 F .381(string for)180 470.4 R F2
+(input.)180 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes)
+180 357.6 Q F1(printf)4.404 E F0 1.904
+(to output the date-time string resulting from using)4.404 F F2(datefmt)
+4.404 E F0 1.903(as a format)4.404 F .38(string for)180 369.6 R F2
(strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar)
2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381
-(ger representing the number)-.15 F .292(of seconds since the epoch.)180
-482.4 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
-.293(alues may be used: \2551 represents the)-.25 F .694
-(current time, and \2552 represents the time the shell w)180 494.4 R
-.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.193(d. If).1 F .693(no ar)
-3.193 F .693(gument is speci-)-.18 F .21(\214ed, con)180 506.4 R -.15
+(ger representing the number)-.15 F .293(of seconds since the epoch.)180
+381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F
+.293(alues may be used: \2551 represents the)-.25 F .693
+(current time, and \2552 represents the time the shell w)180 393.6 R
+.693(as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.194(d. If).1 F .694(no ar)
+3.194 F .694(gument is speci-)-.18 F .21(\214ed, con)180 405.6 R -.15
(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
-F1(printf)2.71 E F0(beha)180 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q
-.464(guments to non-string format speci\214ers are treated as C constan\
-ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258
-(minus sign is allo)144 547.2 R 1.259
+F1(printf)2.71 E F0(beha)180 417.6 Q(vior)-.2 E(.)-.55 E .901
+(The %b, %q, and %T directi)144 434.4 R -.15(ve)-.25 G 3.401(sa).15 G
+.901(ll use the \214eld width and precision ar)-3.401 F .902
+(guments from the format)-.18 F .358(speci\214cation and write that man)
+144 446.4 R 2.858(yb)-.15 G .357
+(ytes from \(or use that wide a \214eld for\) the e)-2.858 F .357
+(xpanded ar)-.15 F(gument,)-.18 E
+(which usually contains more characters than the original.)144 458.4 Q
+(Ar)144 475.2 Q .463(guments to non-string format speci\214ers are trea\
+ted as C constants, e)-.18 F .464(xcept that a leading plus or)-.15 F
+1.259(minus sign is allo)144 487.2 R 1.259
(wed, and if the leading character is a single or double quote, the v)
--.25 F 1.259(alue is the)-.25 F(ASCII v)144 559.2 Q(alue of the follo)
--.25 E(wing character)-.25 E(.)-.55 E(The)144 576 Q F2(format)3.424 E F0
-.923(is reused as necessary to consume all of the)3.424 F F2(ar)3.423 E
-(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format)
-3.423 E F0 .923(requires more)3.423 F F2(ar)144 588 Q(guments)-.37 E F0
-.033(than are supplied, the e)2.533 F .033
-(xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si)
-.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 600 Q(The return v)5 E
+-.25 F 1.258(alue is the)-.25 F(ASCII v)144 499.2 Q(alue of the follo)
+-.25 E(wing character)-.25 E(.)-.55 E(The)144 516 Q F2(format)2.514 E F0
+.015(is reused as necessary to consume all of the)2.514 F F2(ar)2.515 E
+(guments)-.37 E F0 5.015(.I)C 2.515(ft)-5.015 G(he)-2.515 E F2(format)
+2.515 E F0 .015(requires more)2.515 F F2(ar)2.515 E(-)-.2 E(guments)144
+528 Q F0 .566(than are supplied, the e)3.066 F .566
+(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066(si)
+.15 G 3.065(faz)-3.066 G .565(ero v)-3.065 F .565(alue or null string,)
+-.25 F(as appropriate, had been supplied.)144 540 Q(The return v)5 E
(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd)
-108 616.8 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C
-<ad>-2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1<ad6e>A F0
-2.5(][)C F2(dir)-2.5 E F0(])A .64(Adds a directory to the top of the di\
-rectory stack, or rotates the stack, making the ne)144 640.8 R 3.139(wt)
--.25 G .639(op of the)-3.139 F .416(stack the current w)144 652.8 R .416
+108 556.8 Q F0([)2.5 E F1<ad6e>A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C
+<ad>-2.5 E F2(n)A F0(])A F1(pushd)108 568.8 Q F0([)2.5 E F1<ad6e>A F0
+2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\
+irectory stack, or rotates the stack, making the ne)144 580.8 R 3.14(wt)
+-.25 G .64(op of the)-3.14 F .417(stack the current w)144 592.8 R .416
(orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F
(guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416
-(changes the top tw).15 F 2.917(od)-.1 G(irectories)-2.917 E 1.625
-(and returns 0, unless the directory stack is empty)144 664.8 R 6.625
+(changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625
+(and returns 0, unless the directory stack is empty)144 604.8 R 6.625
(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925
--.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 676.8 Q
-F1<ad6e>144 688.8 Q F0 1.811(Suppresses the normal change of directory \
-when rotating or adding directories to the)180 688.8 R
-(stack, so that only the stack is manipulated.)180 700.8 Q F1(+)144
-712.8 Q F2(n)A F0 1.268(Rotates the stack so that the)180 712.8 R F2(n)
-3.768 E F0 1.267(th directory \(counting from the left of the list sho)B
-1.267(wn by)-.25 F F1(dirs)180 724.8 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(67)188.455 E 0 Cg EP
-%%Page: 68 68
+-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 616.8 Q
+F1<ad6e>144 628.8 Q F0 1.811(Suppresses the normal change of directory \
+when rotating or adding directories to the)180 628.8 R
+(stack, so that only the stack is manipulated.)180 640.8 Q F1(+)144
+652.8 Q F2(n)A F0 1.267(Rotates the stack so that the)180 652.8 R F2(n)
+3.767 E F0 1.268(th directory \(counting from the left of the list sho)B
+1.268(wn by)-.25 F F1(dirs)180 664.8 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F1<ad>144 676.8 Q F2(n)A F0
+.92(Rotates the stack so that the)180 676.8 R F2(n)3.42 E F0 .92
+(th directory \(counting from the right of the list sho)B .92(wn by)-.25
+F F1(dirs)180 688.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F2(dir)144.35 700.8 Q F0(Adds)180 700.8 Q F2(dir)3.137 E F0 .287
+(to the directory stack at the top, making it the ne)3.517 F 2.788(wc)
+-.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F
+(if it had been supplied as the ar)180 712.8 Q(gument to the)-.18 E F1
+(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 729.6 R F1(pushd)
+2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488
+(is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F
+F1(pushd)2.988 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(68)
+190.395 E 0 Cg EP
+%%Page: 69 69
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad>144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 .92
-(Rotates the stack so that the)180 84 R F2(n)3.42 E F0 .92
-(th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F1(dirs)180 96 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 E
-F2(dir)144.35 108 Q F0(Adds)180 108 Q F2(dir)3.138 E F0 .288
-(to the directory stack at the top, making it the ne)3.518 F 2.787(wc)
--.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F
-(if it had been supplied as the ar)180 120 Q(gument to the)-.18 E F1(cd)
-2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 136.8 R F1(pushd)2.988
-E F0 .488(command is successful, a)2.988 F F1(dirs)2.988 E F0 .488
-(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F
-F1(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 148.8 R F2(dir)
-3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4
-F F1(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
-(stack is empty)144 160.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
- directory stack element is speci\214ed, or the directory change to the)
--.15 F(speci\214ed ne)144 172.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5
-E(ails.)-.1 E F1(pwd)108 189.6 Q F0([)2.5 E F1(\255LP)A F0(])A .845
-(Print the absolute pathname of the current w)144 201.6 R .845
-(orking directory)-.1 F 5.844(.T)-.65 G .844
-(he pathname printed contains no)-5.844 F .181(symbolic links if the)144
-213.6 R F1<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F1
-.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1
-(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264
-(enabled. If)144 225.6 R(the)3.264 E F1<ad4c>3.264 E F0 .763
-(option is used, the pathname printed may contain symbolic links.)3.264
-F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\
- reading the name of the current directory or an in)144 237.6 R -.25(va)
--.4 G(lid).25 E(option is supplied.)144 249.6 Q F1 -.18(re)108 266.4 S
-(ad).18 E F0([)3.817 E F1(\255ers)A F0 3.817(][)C F1<ad61>-3.817 E F2
-(aname)3.817 E F0 3.817(][)C F1<ad64>-3.817 E F2(delim)3.817 E F0 3.817
-(][)C F1<ad69>-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1<ad6e>
--3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1<ad4e>-3.816 E
-F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1<ad70>-3.816 E F2(pr)
-3.816 E(ompt)-.45 E F0 3.816(][)C F1<ad74>-3.816 E F2(timeout)3.816 E F0
-3.816(][)C F1<ad75>-3.816 E F2(fd)3.816 E F0(])A([)108 278.4 Q F2(name)A
-F0(...])2.5 E .516(One line is read from the standard input, or from th\
-e \214le descriptor)144 290.4 R F2(fd)3.016 E F0 .516(supplied as an ar)
-3.016 F .517(gument to)-.18 F(the)144 302.4 Q F1<ad75>3.848 E F0 1.348
-(option, split into w)3.848 F 1.348(ords as described abo)-.1 F 1.647
--.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.847 G 1.347(rd Splitting).75 F
-F0 3.847(,a)C 1.347(nd the \214rst w)-3.847 F 1.347(ord is)-.1 F 1.465
-(assigned to the \214rst)144 314.4 R F2(name)3.965 E F0 3.965(,t).18 G
-1.465(he second w)-3.965 F 1.465(ord to the second)-.1 F F2(name)3.965 E
-F0 3.965(,a).18 G 1.465(nd so on.)-3.965 F 1.465(If there are more)6.465
-F -.1(wo)144 326.4 S 1.112(rds than names, the remaining w).1 F 1.112
-(ords and their interv)-.1 F 1.112
-(ening delimiters are assigned to the last)-.15 F F2(name)144 338.4 Q F0
-5.722(.I).18 G 3.222(ft)-5.722 G .722(here are fe)-3.222 F .722(wer w)
--.25 F .723
-(ords read from the input stream than names, the remaining names are)-.1
-F .532(assigned empty v)144 350.4 R 3.032(alues. The)-.25 F .532
-(characters in)3.032 F/F3 9/Times-Bold@0 SF(IFS)3.032 E F0 .531
-(are used to split the line into w)2.782 F .531(ords using the same)-.1
-F .197(rules the shell uses for e)144 362.4 R .197
-(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F1
--.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197
-(backslash charac-)2.697 F .157(ter \()144 374.4 R F1(\\)A F0 2.657(\)m)
-C .157(ay be used to remo)-2.657 F .457 -.15(ve a)-.15 H .457 -.15(ny s)
-.15 H .157(pecial meaning for the ne).15 F .156
-(xt character read and for line continu-)-.15 F 2.5(ation. Options,)144
-386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad61>144 398.4 Q F2(aname)2.5 E F0 1.049
-(The w)180 410.4 R 1.049
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.039
+(returns 0 unless the cd to)144 84 R/F1 10/Times-Italic@0 SF(dir)3.889 E
+F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4 F/F2
+10/Times-Bold@0 SF(pushd)3.54 E F0 1.04(returns 0 unless the directory)
+3.54 F .847(stack is empty)144 96 R 3.347(,an)-.65 G(on-e)-3.347 E .847
+(xistent directory stack element is speci\214ed, or the directory chang\
+e to the)-.15 F(speci\214ed ne)144 108 Q 2.5(wc)-.25 G
+(urrent directory f)-2.5 E(ails.)-.1 E F2(pwd)108 124.8 Q F0([)2.5 E F2
+(\255LP)A F0(])A .844(Print the absolute pathname of the current w)144
+136.8 R .845(orking directory)-.1 F 5.845(.T)-.65 G .845
+(he pathname printed contains no)-5.845 F .182(symbolic links if the)144
+148.8 R F2<ad50>2.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 160.8 R(the)3.263 E F2<ad4c>3.263 E F0 .763
+(option is used, the pathname printed may contain symbolic links.)3.263
+F .764(The return)5.764 F .405(status is 0 unless an error occurs while\
+ reading the name of the current directory or an in)144 172.8 R -.25(va)
+-.4 G .405(lid op-).25 F(tion is supplied.)144 184.8 Q F2 -.18(re)108
+201.6 S(ad).18 E F0([)3.816 E F2(\255ers)A F0 3.816(][)C F2<ad61>-3.816
+E F1(aname)3.816 E F0 3.816(][)C F2<ad64>-3.816 E F1(delim)3.816 E F0
+3.816(][)C F2<ad69>-3.816 E F1(te)3.816 E(xt)-.2 E F0 3.816(][)C F2
+<ad6e>-3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2<ad4e>
+-3.817 E F1(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F2<ad70>-3.817 E
+F1(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F2<ad74>-3.817 E F1(timeout)
+3.817 E F0 3.817(][)C F2<ad75>-3.817 E F1(fd)3.817 E F0(])A([)108 213.6
+Q F1(name)A F0(...])2.5 E .516(One line is read from the standard input\
+, or from the \214le descriptor)144 225.6 R F1(fd)3.016 E F0 .516
+(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 237.6 Q F2
+<ad75>2.935 E F0 .435(option, split into w)2.935 F .435
+(ords as described abo)-.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75
+(Wo)2.935 G .435(rd Splitting).75 F F0 2.935(,a)C .436(nd the \214rst w)
+-2.935 F .436(ord is as-)-.1 F .376(signed to the \214rst)144 249.6 R F1
+(name)3.236 E F0 2.876(,t).18 G .376(he second w)-2.876 F .376
+(ord to the second)-.1 F F1(name)3.236 E F0 2.876(,a).18 G .376
+(nd so on.)-2.876 F .375(If there are more w)5.376 F(ords)-.1 E .236
+(than names, the remaining w)144 261.6 R .237(ords and their interv)-.1
+F .237(ening delimiters are assigned to the last)-.15 F F1(name)3.097 E
+F0 5.237(.I).18 G(f)-5.237 E .875(there are fe)144 273.6 R .875(wer w)
+-.25 F .875(ords read from the input stream than names, the remaining n\
+ames are assigned)-.1 F .517(empty v)144 285.6 R 3.017(alues. The)-.25 F
+.517(characters in)3.017 F/F3 9/Times-Bold@0 SF(IFS)3.017 E F0 .518
+(are used to split the line into w)2.767 F .518
+(ords using the same rules the)-.1 F .027(shell uses for e)144 297.6 R
+.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2
+-.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026
+(backslash character \()2.526 F F2(\\)A F0 2.526(\)m)C(ay)-2.526 E .488
+(be used to remo)144 309.6 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H
+.488(pecial meaning for the ne).15 F .488
+(xt character read and for line continuation.)-.15 F(Op-)5.489 E
+(tions, if supplied, ha)144 321.6 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad61>144 333.6 Q F1(aname)2.5 E F0 1.026
+(The w)180 345.6 R 1.026
(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 422.4 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
-(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5
-E(guments are ignored.)-.18 E F1<ad64>144 434.4 Q F2(delim)2.5 E F0
-1.318(The \214rst character of)180 446.4 R F2(delim)3.818 E F0 1.317
-(is used to terminate the input line, rather than ne)3.818 F 3.817
-(wline. If)-.25 F F2(delim)180 458.4 Q F0(is the empty string,)2.5 E F1
--.18(re)2.5 G(ad).18 E F0
-(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F1
-<ad65>144 470.4 Q F0 .372
-(If the standard input is coming from a terminal,)180 470.4 R F1 -.18
-(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)
-2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E
-.218(to obtain the line.)180 482.4 R .218
+-.25 E F1(aname)3.855 E F0 3.525(,s).18 G 1.025(tarting at 0.)-3.525 F
+F1(aname)180.33 357.6 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5
+-.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0
+(ar)2.5 E(guments are ignored.)-.18 E F2<ad64>144 369.6 Q F1(delim)2.5 E
+F0 .28(The \214rst character of)180 381.6 R F1(delim)2.78 E F0 .281
+(is used to terminate the input line, rather than ne)2.78 F 2.781
+(wline. If)-.25 F F1(de-)2.781 E(lim)180 393.6 Q F0
+(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0
+(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2
+<ad65>144 405.6 Q F0 .373
+(If the standard input is coming from a terminal,)180 405.6 R F2 -.18
+(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo)
+2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E
+.218(to obtain the line.)180 417.6 R .218
(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, b)-2.5 E
+(acti)180 429.6 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
-(ault \214lename completion.)-.1 E F1<ad69>144 506.4 Q F2(te)2.5 E(xt)
--.2 E F0(If)180 506.4 Q F1 -.18(re)2.715 G(adline).18 E F0 .216
-(is being used to read the line,)2.715 F F2(te)2.716 E(xt)-.2 E F0 .216
-(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-)
--.25 F(ing be)180 518.4 Q(gins.)-.15 E F1<ad6e>144 530.4 Q F2(nc)2.5 E
-(har)-.15 E(s)-.1 E F1 -.18(re)180 542.4 S(ad).18 E F0 1.395
-(returns after reading)3.895 F F2(nc)3.895 E(har)-.15 E(s)-.1 E F0 1.395
-(characters rather than w)3.895 F 1.394(aiting for a complete line of)
--.1 F(input, b)180 554.4 Q(ut honors a delimiter if fe)-.2 E(wer than)
--.25 E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0
-(characters are read before the delimiter)2.5 E(.)-.55 E F1<ad4e>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 .609(characters are read.)180 614.4 R .608
-(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0
-3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 626.4 S .669
+(ault \214lename completion.)-.1 E F2<ad69>144 441.6 Q F1(te)2.5 E(xt)
+-.2 E F0(If)180 441.6 Q F2 -.18(re)2.716 G(adline).18 E F0 .216
+(is being used to read the line,)2.716 F F1(te)2.716 E(xt)-.2 E F0 .216
+(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-)
+-.25 F(ing be)180 453.6 Q(gins.)-.15 E F2<ad6e>144 465.6 Q F1(nc)2.5 E
+(har)-.15 E(s)-.1 E F2 -.18(re)180 477.6 S(ad).18 E F0 .322
+(returns after reading)2.822 F F1(nc)2.823 E(har)-.15 E(s)-.1 E F0 .323
+(characters rather than w)2.823 F .323
+(aiting for a complete line of in-)-.1 F(put, b)180 489.6 Q
+(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F1(nc)2.5 E(har)-.15
+E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F2
+<ad4e>144 501.6 Q F1(nc)2.5 E(har)-.15 E(s)-.1 E F2 -.18(re)180 513.6 S
+(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F1(nc)
+3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F
+1.269(aiting for a complete)-.1 F .274
+(line of input, unless EOF is encountered or)180 525.6 R F2 -.18(re)
+2.775 G(ad).18 E F0 .275(times out.)2.775 F .275
+(Delimiter characters encoun-)5.275 F 1.003
+(tered in the input are not treated specially and do not cause)180 537.6
+R F2 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F1(nc)
+3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 549.6 R .608
+(The result is not split on the characters in)5.608 F F2(IFS)3.108 E F0
+3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 561.6 S .67
(riable is assigned e).25 F .669
-(xactly the characters read \(with the e)-.15 F .67
-(xception of backslash; see the)-.15 F F1<ad72>180 638.4 Q F0
-(option belo)2.5 E(w\).)-.25 E F1<ad70>144 650.4 Q F2(pr)2.5 E(ompt)-.45
-E F0(Display)180 662.4 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161
-(on standard error)3.661 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)
--3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 674.4 Q
+(xactly the characters read \(with the e)-.15 F .669
+(xception of backslash; see the)-.15 F F2<ad72>180 573.6 Q F0
+(option belo)2.5 E(w\).)-.25 E F2<ad70>144 585.6 Q F1(pr)2.5 E(ompt)-.45
+E F0(Display)180 597.6 Q F1(pr)3.66 E(ompt)-.45 E F0 1.161
+(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne)
+-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 609.6 Q
2.5(yi)-.15 G 2.5(nput. The)-2.5 F
-(prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<ad72>144 686.4 Q F0 .543(Backslash does not act as an escape character)
-180 686.4 R 5.543(.T)-.55 G .544
-(he backslash is considered to be part of)-5.543 F .493(the line.)180
-698.4 R .493(In particular)5.493 F 2.993(,ab)-.4 G(ackslash-ne)-2.993 E
+(prompt is displayed only if input is coming from a terminal.)2.5 E F2
+<ad72>144 621.6 Q F0 .544(Backslash does not act as an escape character)
+180 621.6 R 5.543(.T)-.55 G .543
+(he backslash is considered to be part of)-5.543 F .492(the line.)180
+633.6 R .492(In particular)5.492 F 2.992(,ab)-.4 G(ackslash-ne)-2.992 E
.493(wline pair may not then be used as a line continua-)-.25 F(tion.)
-180 710.4 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(68)188.455 E
-0 Cg EP
-%%Page: 69 69
+180 645.6 Q F2<ad73>144 657.6 Q F0(Silent mode.)180 657.6 Q
+(If input is coming from a terminal, characters are not echoed.)5 E F2
+<ad74>144 669.6 Q F1(timeout)2.5 E F0(Cause)180 681.6 Q F2 -.18(re)2.929
+G(ad).18 E F0 .428(to time out and return f)2.929 F .428
+(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .56
+(ber of characters\) is not read within)180 693.6 R F1(timeout)3.061 E
+F0(seconds.)3.061 E F1(timeout)5.561 E F0 .561(may be a decimal number)
+3.061 F(with a fractional portion follo)180 705.6 Q
+(wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E
+.3 -.15(ve i)-.25 H(f).15 E F2 -.18(re)2.5 G(ad).18 E F0 .506(is readin\
+g input from a terminal, pipe, or other special \214le; it has no ef)180
+717.6 R .506(fect when reading)-.25 F .59(from re)180 729.6 R .59
+(gular \214les.)-.15 F(If)5.59 E F2 -.18(re)3.09 G(ad).18 E F0 .589
+(times out,)3.09 F F2 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)-.2
+G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .589
+(artial input read into the speci\214ed).15 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(69)190.395 E 0 Cg EP
+%%Page: 70 70
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad73>144 84 Q F0(Silent mode.)180 84 Q
-(If input is coming from a terminal, characters are not echoed.)5 E F1
-<ad74>144 96 Q/F2 10/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 108 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 120 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 132 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
-144 R .505(fect when reading)-.25 F .589(from re)180 156 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 168 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 180 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
-192 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
-.15 E(xceeded.)-.15 E F1<ad75>144 204 Q F2(fd)2.5 E F0
-(Read input from \214le descriptor)180 204 Q F2(fd)2.5 E F0(.)A .477
-(If no)144 220.8 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 9/Times-Bold@0 SF(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 .772
-(unless end-of-\214le is encountered,)144 232.8 R F1 -.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 244.8 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 256.8 Q(gument to)-.18 E F1<ad75>
-2.5 E F0(.)A F1 -.18(re)108 273.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A
-F0 2.5(][)C F1<ad70>-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 285.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.097(quent assignment.)144 297.6 R
-1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097
-(option is supplied, the functions corresponding to the)3.597 F F2
-(names)3.596 E F0 1.096(are so)3.596 F(mark)144 309.6 Q 3.334(ed. The)
--.1 F F1<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)180 84 S
+(riable).25 E/F1 10/Times-Italic@0 SF(name)2.77 E F0 5.27(.I)C(f)-5.27 E
+F1(timeout)2.77 E F0 .27(is 0,)2.77 F/F2 10/Times-Bold@0 SF -.18(re)2.77
+G(ad).18 E F0 .27(returns immediately)2.77 F 2.77(,w)-.65 G .27
+(ithout trying to read an)-2.77 F 2.77(yd)-.15 G(ata.)-2.77 E 1.12
+(The e)180 96 R 1.12(xit status is 0 if input is a)-.15 F -.25(va)-.2 G
+1.12(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G
+1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 108 R -.15(ex)2.5 G
+(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E
+F2<ad75>144 120 Q F1(fd)2.5 E F0(Read input from \214le descriptor)180
+120 Q F1(fd)2.5 E F0(.)A .522(If no)144 136.8 R F1(names)3.382 E F0 .522
+(are supplied, the line read, without the ending delimiter b)3.292 F
+.522(ut otherwise unmodi\214ed, is)-.2 F 1.187(assigned to the v)144
+148.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9
+/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186
+(xit status is zero, unless end-of-\214le is encountered,)-.15 F F2 -.18
+(re)3.686 G(ad).18 E F0 .96
+(times out \(in which case the status is greater than 128\), a v)144
+160.8 R .961(ariable assignment error \(such as as-)-.25 F .707
+(signing to a readonly v)144 172.8 R .706(ariable\) occurs, or an in)
+-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar)
+.25 F .706(gument to)-.18 F F2<ad75>144 184.8 Q F0(.)A F2 -.18(re)108
+201.6 S(adonly).18 E F0([)2.5 E F2(\255aAf)A F0 2.5(][)C F2<ad70>-2.5 E
+F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(wor)A(d)-.37 E F0 2.5(].)C(..])
+-2.5 E .77(The gi)144 213.6 R -.15(ve)-.25 G(n).15 E F1(names)3.27 E F0
+.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25
+F F1(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.097
+(quent assignment.)144 225.6 R 1.097(If the)6.097 F F2<ad66>3.597 E F0
+1.097(option is supplied, the functions corresponding to the)3.597 F F1
+(names)3.596 E F0 1.096(are so)3.596 F(mark)144 237.6 Q 3.334(ed. The)
+-.1 F F2<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834
(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the)
--3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
--.25 E .777(ables to associati)144 321.6 R 1.077 -.15(ve a)-.25 H 3.277
-(rrays. If).15 F .777(both options are supplied,)3.277 F F1<ad41>3.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 333.6 R -.15(ve)
--.25 G .521(n, or if the).15 F F1<ad70>3.021 E F0 .521
+-3.334 F F2<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
+-.25 E .777(ables to associati)144 249.6 R 1.077 -.15(ve a)-.25 H 3.277
+(rrays. If).15 F .777(both options are supplied,)3.277 F F2<ad41>3.277 E
+F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F1(name)
+3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 261.6 R -.15(ve)
+-.25 G .521(n, or if the).15 F F2<ad70>3.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 345.6 R(The)5.295 E F1
+to a subset of the set of readonly names.)144 273.6 R(The)5.295 E F2
<ad70>2.795 E F0(option)2.795 E .786
(causes output to be displayed in a format that may be reused as input.)
-144 357.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
-369.6 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)
+144 285.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
+297.6 Q .718(wed by =)-.25 F F1(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
+-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F1(wor)
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 381.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 F1<ad66>2.76 E F0 .26
-(is supplied with a)2.76 F F2(name)144.36 393.6 Q F0
-(that is not a function.)2.68 E F1 -.18(re)108 410.4 S(tur).18 E(n)-.15
-E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 422.4 R
+144 309.6 R F1(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
+-.25 F .26(ariable name, or)-.25 F F2<ad66>2.76 E F0 .26
+(is supplied with a)2.76 F F1(name)144.36 321.6 Q F0
+(that is not a function.)2.68 E F2 -.18(re)108 338.4 S(tur).18 E(n)-.15
+E F0([)2.5 E F1(n)A F0(])A .021(Causes a function to stop e)144 350.4 R
-.15(xe)-.15 G .021(cuting and return the v).15 F .021
-(alue speci\214ed by)-.25 F 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 434.4 R -.15(xe)
+(alue speci\214ed by)-.25 F F1(n)2.88 E F0 .02(to its caller)2.76 F 5.02
+(.I)-.55 G(f)-5.02 E F1(n)2.88 E F0 .02(is omitted,)2.76 F .596
+(the return status is that of the last command e)144 362.4 R -.15(xe)
-.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E
-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 446.4 R 3.738(,t)-.4 G 1.238
+F2 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15
+G(cuted).15 E .267(by a trap handler)144 374.4 R 2.767(,t)-.4 G .267
(he last command used to determine the status is the last command e)
--3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144
-458.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E
-F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB)
-3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39
-(determine the status is the last command e)144 470.4 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 482.4 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 494.4 R -.15(xe)-.15 G .589
-(cuting that script and return either).15 F F2(n)3.448 E F0 .588
+-2.767 F -.15(xe)-.15 G .267(cuted be-).15 F .02(fore the trap handler)
+144 386.4 R 5.02(.I)-.55 G(f)-5.02 E F2 -.18(re)2.52 G(tur).18 E(n)-.15
+E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F2(DEB)2.52
+E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E
+.886(mine the status is the last command e)144 398.4 R -.15(xe)-.15 G
+.886(cuted by the trap handler before).15 F F2 -.18(re)3.385 G(tur).18 E
+(n)-.15 E F0 -.1(wa)3.385 G 3.385(si).1 G -1.9 -.4(nv o)-3.385 H -.1(ke)
+.4 G 3.385(d. If).1 F F2 -.18(re)144 410.4 S(tur).18 E(n)-.15 E F0 .627
+(is used outside a function, b)3.127 F .628(ut during e)-.2 F -.15(xe)
+-.15 G .628(cution of a script by the).15 F F2(.)3.128 E F0(\()5.628 E
+F2(sour)A(ce)-.18 E F0 3.128(\)c)C .628(ommand, it)-3.128 F .589
+(causes the shell to stop e)144 422.4 R -.15(xe)-.15 G .589
+(cuting that script and return either).15 F F1(n)3.448 E F0 .588
(or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e)
-144 506.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
-.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326
+144 434.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
+.326(xit status of the script.)-.15 F(If)5.326 E F1(n)2.826 E F0 .326
(is supplied, the return v)2.826 F .326(alue is)-.25 F .445
-(its least signi\214cant 8 bits.)144 518.4 R .444
-(The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E
+(its least signi\214cant 8 bits.)144 446.4 R .444
+(The return status is non-zero if)5.445 F F2 -.18(re)2.944 G(tur).18 E
(n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381
-(ment, or is used outside a function and not during e)144 530.4 R -.15
-(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
-F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
-E .75(mand associated with the)144 542.4 R F1(RETURN)3.249 E F0 .749
+(ment, or is used outside a function and not during e)144 458.4 R -.15
+(xe)-.15 G .381(cution of a script by).15 F F2(.)2.881 E F0(or)3.714 E
+F2(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
+E .75(mand associated with the)144 470.4 R F2(RETURN)3.249 E F0 .749
(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 554.4 Q F1
-(set)108 571.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
-F1<ad6f>-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E
-F0(...])2.5 E F1(set)108 583.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0
-2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E
-(g)-.37 E F0(...])2.5 E -.4(Wi)144 595.2 S .835
+G .749(cution resumes after the function).15 F(or script.)144 482.4 Q F2
+(set)108 499.2 Q F0([)2.5 E F2(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
+F2<ad6f>-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E(g)-.37 E
+F0(...])2.5 E F2(set)108 511.2 Q F0([)2.5 E F2(+abefhkmnptuvxBCEHPT)A F0
+2.5(][)C F2(+o)-2.5 E F1(option\255name)2.5 E F0 2.5(][)C F1(ar)-2.5 E
+(g)-.37 E F0(...])2.5 E -.4(Wi)144 523.2 S .835
(thout options, the name and v).4 F .835(alue of each shell v)-.25 F
.836(ariable are displayed in a format that can be)-.25 F .784
-(reused as input for setting or resetting the currently-set v)144 607.2
+(reused as input for setting or resetting the currently-set v)144 535.2
R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783
-(riables cannot be).25 F 2.946(reset. In)144 619.2 R F2 .447(posix mode)
+(riables cannot be).25 F 2.946(reset. In)144 547.2 R F1 .447(posix mode)
2.946 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447
(ariables are listed.)-.25 F .447
(The output is sorted according to the current)5.447 F 3.531
-(locale. When)144 631.2 R 1.031(options are speci\214ed, the)3.531 F
+(locale. When)144 559.2 R 1.031(options are speci\214ed, the)3.531 F
3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An)
--.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623
-(after option processing are treated as v)144 643.2 R 1.624
-(alues for the positional parameters and are assigned, in)-.25 F(order)
-144 655.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 F1<ad61>144 667.2 Q
-F0 1.378(Each v)184 667.2 R 1.377
+-.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F .584
+(after option processing are treated as v)144 571.2 R .585
+(alues for the positional parameters and are assigned, in or)-.25 F(-)
+-.2 E(der)144 583.2 Q 2.5(,t)-.4 G(o)-2.5 E F2($1)2.5 E F0(,)A F2($2)2.5
+E F0(,)A F2 2.5(... $)2.5 F F1(n)A F0 5(.O)C(ptions, if speci\214ed, ha)
+-5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2<ad61>144
+595.2 Q F0 1.378(Each v)184 595.2 R 1.377
(ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve)
-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F
-1.377(ute and)-.2 F(mark)184 679.2 Q(ed for e)-.1 E(xport to the en)-.15
-E(vironment of subsequent commands.)-.4 E F1<ad62>144 691.2 Q F0 .131
-(Report the status of terminated background jobs immediately)184 691.2 R
+1.377(ute and)-.2 F(mark)184 607.2 Q(ed for e)-.1 E(xport to the en)-.15
+E(vironment of subsequent commands.)-.4 E F2<ad62>144 619.2 Q F0 .131
+(Report the status of terminated background jobs immediately)184 619.2 R
2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E
-(primary prompt.)184 703.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
--.25 H(nly when job control is enabled.).15 E F1<ad65>144 715.2 Q F0
-.088(Exit immediately if a)184 715.2 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 727.2 Q
-F2 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR)
+(primary prompt.)184 631.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
+-.25 H(nly when job control is enabled.).15 E F2<ad65>144 643.2 Q F0
+.088(Exit immediately if a)184 643.2 R F1(pipeline)2.588 E F0 .087
+(\(which may consist of a single)2.588 F F1 .087(simple command)2.587 F
+F0 .087(\), a)B F1(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 655.2 Q
+F1 1.52(compound command)4.02 F F0(\(see)4.021 E F3 1.521(SHELL GRAMMAR)
4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e).15 F 1.521
-(xits with a non-zero status.)-.15 F(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(69)188.455 E 0 Cg EP
-%%Page: 70 70
+(xits with a non-zero status.)-.15 F .08(The shell does not e)184 667.2
+R .079(xit if the command that f)-.15 F .079
+(ails is part of the command list immediately)-.1 F(follo)184 679.2 Q
+1.654(wing a)-.25 F F2(while)4.154 E F0(or)4.154 E F2(until)4.154 E F0
+-.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655
+(wing the)-.25 F F2(if)4.155 E F0(or)4.155 E F2(elif)4.155 E F0(reserv)
+4.155 E(ed)-.15 E -.1(wo)184 691.2 S .582(rds, part of an).1 F 3.082(yc)
+-.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F2
+(&&)3.081 E F0(or)3.081 E F2(||)3.081 E F0 .581(list e)3.081 F .581
+(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 703.2 R
+F2(&&)3.417 E F0(or)3.417 E F2(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c)
+-3.417 H .918(ommand in a pipeline b).15 F .918
+(ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E
+-.25(va)184 715.2 S .661(lue is being in).25 F -.15(ve)-.4 G .661
+(rted with).15 F F2(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66
+(ompound command other than a subshell returns a)-3.161 F 1.112
+(non-zero status because a command f)184 727.2 R 1.112(ailed while)-.1 F
+F2<ad65>3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113
+(eing ignored, the shell does)-3.612 F(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(70)190.395 E 0 Cg EP
+%%Page: 71 71
%%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 .08
-(The shell does not e)184 84 R .079(xit if the command that f)-.15 F
-.079(ails is part of the command list immediately)-.1 F(follo)184 96 Q
-1.654(wing a)-.25 F/F1 10/Times-Bold@0 SF(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 108
-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 120 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 132 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 144 R 1.112(ailed while)-.1 F
-F1<ad65>3.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 156 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 168 R .617
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .178(not e)184 84
+R 2.678(xit. A)-.15 F .178(trap on)2.678 F/F1 10/Times-Bold@0 SF(ERR)
+2.678 E F0 2.678(,i)C 2.678(fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)
+-.15 G .178(cuted before the shell e).15 F 2.677(xits. This)-.15 F .177
+(option applies to)2.677 F .617(the shell en)184 96 R .617
(vironment and each subshell en)-.4 F .617(vironment separately \(see)
-.4 F/F2 9/Times-Bold@0 SF .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)
-184 180 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
+184 108 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 192 Q
-2.042(If a compound command or shell function e)184 210 R -.15(xe)-.15 G
-2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542 E F0
-2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 222 R
--.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F
-.193(body will be af)184 234 R .193(fected by the)-.25 F F1<ad65>2.693 E
-F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1
-<ad65>2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)
--.1 E 3.39(status. If)184 246 R 3.39(ac)3.39 G .89
-(ompound command or shell function sets)-3.39 F F1<ad65>3.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 258 Q F1<ad65>3.153 E F0 .653
+(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 120 Q
+.998(If a compound command or shell function e)184 138 R -.15(xe)-.15 G
+.999(cutes in a conte).15 F .999(xt where)-.15 F F1<ad65>3.499 E F0 .999
+(is being ig-)3.499 F .089(nored, none of the commands e)184 150 R -.15
+(xe)-.15 G .089(cuted within the compound command or function body).15 F
+.502(will be af)184 162 R .502(fected by the)-.25 F F1<ad65>3.002 E F0
+.502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1
+<ad65>3.002 E F0 .502(is set and a command returns a f)3.002 F .503
+(ailure sta-)-.1 F 4.184(tus. If)184 174 R 4.184(ac)4.184 G 1.684
+(ompound command or shell function sets)-4.184 F F1<ad65>4.183 E F0
+1.683(while e)4.183 F -.15(xe)-.15 G 1.683(cuting in a conte).15 F(xt)
+-.15 E(where)184 186 Q F1<ad65>3.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 270 Q F1
-<ad66>144 282 Q F0(Disable pathname e)184 282 Q(xpansion.)-.15 E F1
-<ad68>144 294 Q F0 2.239(Remember the location of commands as the)184
-294 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
-306 Q(ault.)-.1 E F1<ad6b>144 318 Q F0 .513(All ar)184 318 R .514
+(or the command containing the function call completes.)184 198 Q F1
+<ad66>144 210 Q F0(Disable pathname e)184 210 Q(xpansion.)-.15 E F1
+<ad68>144 222 Q F0 .988(Remember the location of commands as the)184 222
+R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F -.15(xe)
+-.15 G 3.488(cution. This).15 F .987(is en-)3.487 F(abled by def)184 234
+Q(ault.)-.1 E F1<ad6b>144 246 Q F0 .513(All ar)184 246 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 330 Q F1
-<ad6d>144 342 Q F0 .149(Monitor mode.)184 342 R .149
+(command, not just those that precede the command name.)184 258 Q F1
+<ad6d>144 270 Q F0 .149(Monitor mode.)184 270 R .149
(Job control is enabled.)5.149 F .148(This option is on by def)5.149 F
.148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65
-(on systems that support it \(see)184 354 R F2 .651(JOB CONTR)3.151 F
+(on systems that support it \(see)184 282 R F2 .651(JOB CONTR)3.151 F
(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .651
-(processes run in a separate)3.151 F .679(process group.)184 366 R .678
+(processes run in a separate)3.151 F .679(process group.)184 294 R .678
(When a background job completes, the shell prints a line containing it\
-s)5.679 F -.15(ex)184 378 S(it status.).15 E F1<ad6e>144 390 Q F0 .652
-(Read commands b)184 390 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652
+s)5.679 F -.15(ex)184 306 S(it status.).15 E F1<ad6e>144 318 Q F0 .652
+(Read commands b)184 318 R .652(ut do not e)-.2 F -.15(xe)-.15 G .652
(cute them.).15 F .653(This may be used to check a shell script for)
-5.652 F(syntax errors.)184 402 Q(This is ignored by interacti)5 E .3
--.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 414 Q/F3 10/Times-Italic@0 SF
-(option\255name)2.5 E F0(The)184 426 Q F3(option\255name)2.5 E F0
-(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 438 Q F0
-(Same as)224 450 Q F1<ad61>2.5 E F0(.)A F1(braceexpand)184 462 Q F0
-(Same as)224 474 Q F1<ad42>2.5 E F0(.)A F1(emacs)184 486 Q F0 .089
-(Use an emacs-style command line editing interf)224 486 R 2.589
+5.652 F(syntax errors.)184 330 Q(This is ignored by interacti)5 E .3
+-.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 342 Q/F3 10/Times-Italic@0 SF
+(option\255name)2.5 E F0(The)184 354 Q F3(option\255name)2.5 E F0
+(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 366 Q F0
+(Same as)224 378 Q F1<ad61>2.5 E F0(.)A F1(braceexpand)184 390 Q F0
+(Same as)224 402 Q F1<ad42>2.5 E F0(.)A F1(emacs)184 414 Q F0 .089
+(Use an emacs-style command line editing interf)224 414 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 498 R -.15(ve)-.25 G 3.45(,u).15 G .95
+(when the shell is interacti)224 426 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 510 R(also af)2.5 E(fects the editing interf)
+F0 2.5(option. This)224 438 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 522 Q(exit)-.18 E F0(Same as)224 522 Q F1<ad65>2.5 E F0(.)A F1
-(errtrace)184 534 Q F0(Same as)224 534 Q F1<ad45>2.5 E F0(.)A F1
-(functrace)184 546 Q F0(Same as)224 558 Q F1<ad54>2.5 E F0(.)A F1
-(hashall)184 570 Q F0(Same as)224 570 Q F1<ad68>2.5 E F0(.)A F1
-(histexpand)184 582 Q F0(Same as)224 594 Q F1<ad48>2.5 E F0(.)A F1
-(history)184 606 Q F0 .587(Enable command history)224 606 R 3.087(,a)
+184 450 Q(exit)-.18 E F0(Same as)224 450 Q F1<ad65>2.5 E F0(.)A F1
+(errtrace)184 462 Q F0(Same as)224 462 Q F1<ad45>2.5 E F0(.)A F1
+(functrace)184 474 Q F0(Same as)224 486 Q F1<ad54>2.5 E F0(.)A F1
+(hashall)184 498 Q F0(Same as)224 498 Q F1<ad68>2.5 E F0(.)A F1
+(histexpand)184 510 Q F0(Same as)224 522 Q F1<ad48>2.5 E F0(.)A F1
+(history)184 534 Q F0 .587(Enable command history)224 534 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 618 Q
+(.)A F0 .587(This option is)5.087 F(on by def)224 546 Q
(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-630 Q(eeof)-.18 E F0 1.656(The ef)224 642 R 1.656
+558 Q(eeof)-.18 E F0 1.656(The ef)224 570 R 1.656
(fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10)
4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-654 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 666 S(yw).1 E(ord)-.1 E F0(Same as)224 678 Q F1
-<ad6b>2.5 E F0(.)A F1(monitor)184 690 Q F0(Same as)224 690 Q F1<ad6d>2.5
-E F0(.)A F1(noclob)184 702 Q(ber)-.1 E F0(Same as)224 714 Q F1<ad43>2.5
-E F0(.)A(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(70)188.455 E 0
-Cg EP
-%%Page: 71 71
+582 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F1 -.1(ke)184 594 S(yw).1 E(ord)-.1 E F0(Same as)224 606 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 618 Q F0(Same as)224 618 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 630 Q(ber)-.1 E F0(Same as)224 642 Q F1<ad43>2.5
+E F0(.)A F1(noexec)184 654 Q F0(Same as)224 654 Q F1<ad6e>2.5 E F0(.)A
+F1(noglob)184 666 Q F0(Same as)224 666 Q F1<ad66>2.5 E F0(.)A F1(nolog)
+184 678 Q F0(Currently ignored.)224 678 Q F1(notify)184 690 Q F0
+(Same as)224 690 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 702 Q F0(Same as)
+224 702 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 714 Q F0(Same as)224 714 Q
+F1<ad74>2.5 E F0(.)A(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(71)
+190.395 E 0 Cg EP
+%%Page: 72 72
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(noexec)184 84 Q F0(Same as)224 84 Q F1<ad6e>2.5 E F0(.)A F1(noglob)
-184 96 Q F0(Same as)224 96 Q F1<ad66>2.5 E F0(.)A F1(nolog)184 108 Q F0
-(Currently ignored.)224 108 Q F1(notify)184 120 Q F0(Same as)224 120 Q
-F1<ad62>2.5 E F0(.)A F1(nounset)184 132 Q F0(Same as)224 132 Q F1<ad75>
-2.5 E F0(.)A F1(onecmd)184 144 Q F0(Same as)224 144 Q F1<ad74>2.5 E F0
-(.)A F1(ph)184 156 Q(ysical)-.15 E F0(Same as)224 156 Q F1<ad50>2.5 E F0
-(.)A F1(pipefail)184 168 Q F0 1.03(If set, the return v)224 168 R 1.029
+SF(ph)184 84 Q(ysical)-.15 E F0(Same as)224 84 Q F1<ad50>2.5 E F0(.)A F1
+(pipefail)184 96 Q F0 1.03(If set, the return v)224 96 R 1.029
(alue of a pipeline is the v)-.25 F 1.029
-(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 180 R
+(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 108 R
1.136
(xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 192 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 204 Q F0
-2.091(Change the beha)224 204 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+-.15 F -.15(ex)224 120 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 132 Q F0
+2.091(Change the beha)224 132 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
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
-216 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9
-/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307
-(for a reference to a document that details ho)224 228 R 4.806(wp)-.25 G
-2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224
-240 Q(vior)-.2 E(.)-.55 E F1(pri)184 252 Q(vileged)-.1 E F0(Same as)224
-264 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 276 S(rbose).1 E F0(Same as)224
-276 Q F1<ad76>2.5 E F0(.)A F1(vi)184 288 Q F0 1.465
-(Use a vi-style command line editing interf)224 288 R 3.966(ace. This)
--.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224
-300 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
-(xtrace)184 312 Q F0(Same as)224 312 Q F1<ad78>2.5 E F0(.)A(If)184 330 Q
-F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F2(option\255name)
+144 R/F2 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B/F3 9
+/Times-Bold@0 SF 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E .955
+(for a reference to a document that details ho)224 156 R 3.454(wp)-.25 G
+.954(osix mode af)-3.454 F .954(fects bash')-.25 F 3.454(sb)-.55 G(e-)
+-3.454 E(ha)224 168 Q(vior)-.2 E(.)-.55 E F1(pri)184 180 Q(vileged)-.1 E
+F0(Same as)224 192 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 204 S(rbose).1 E
+F0(Same as)224 204 Q F1<ad76>2.5 E F0(.)A F1(vi)184 216 Q F0 .209
+(Use a vi-style command line editing interf)224 216 R 2.709(ace. This)
+-.1 F .209(also af)2.709 F .21(fects the editing in-)-.25 F(terf)224 228
+Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace)
+184 240 Q F0(Same as)224 240 Q F1<ad78>2.5 E F0(.)A(If)184 258 Q F1
+<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F2(option\255name)
3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552
(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184
-342 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0
+270 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0
3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072
(commands to recreate the current)3.572 F
-(option settings is displayed on the standard output.)184 354 Q F1<ad70>
-144 366 Q F0 -.45(Tu)184 366 S 1.072(rn on).45 F F2(privile)4.822 E -.1
+(option settings is displayed on the standard output.)184 282 Q F1<ad70>
+144 294 Q F0 -.45(Tu)184 294 S 1.072(rn on).45 F F2(privile)4.822 E -.1
(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F
F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.071
(\214les are not pro-)3.322 F 1.5
-(cessed, shell functions are not inherited from the en)184 378 R 1.501
+(cessed, shell functions are not inherited from the en)184 306 R 1.501
(vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A
-F3 -.27(BA)184 390 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G
+F3 -.27(BA)184 318 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G
(H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G
.524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
-(vironment,)-.4 E .379(are ignored.)184 402 R .379
+(vironment,)-.4 E .379(are ignored.)184 330 R .379
(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15
(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462
-(user \(group\) id, and the)184 414 R F1<ad70>2.961 E F0 .461
+(user \(group\) id, and the)184 342 R F1<ad70>2.961 E F0 .461
(option is not supplied, these actions are tak)2.961 F .461
-(en and the ef)-.1 F(fec-)-.25 E(ti)184 426 Q .694 -.15(ve u)-.25 H .394
+(en and the ef)-.1 F(fec-)-.25 E(ti)184 354 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<ad70>
2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25
-E -.15(ve)-.25 G .387(user id is not reset.)184 438 R -.45(Tu)5.387 G
+E -.15(ve)-.25 G .387(user id is not reset.)184 366 R -.45(Tu)5.387 G
.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886
F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F
-(set to the real user and group ids.)184 450 Q F1<ad74>144 462 Q F0
-(Exit after reading and e)184 462 Q -.15(xe)-.15 G(cuting one command.)
-.15 E F1<ad75>144 474 Q F0 -.35(Tr)184 474 S .043(eat unset v).35 F .044
+(set to the real user and group ids.)184 378 Q F1<ad74>144 390 Q F0
+(Exit after reading and e)184 390 Q -.15(xe)-.15 G(cuting one command.)
+.15 E F1<ad75>144 402 Q F0 -.35(Tr)184 402 S .043(eat unset v).35 F .044
(ariables and parameters other than the special parameters "@" and "*" \
-as an)-.25 F .183(error when performing parameter e)184 486 R 2.683
+as an)-.25 F .183(error when performing parameter e)184 414 R 2.683
(xpansion. If)-.15 F -.15(ex)2.683 G .182
(pansion is attempted on an unset v).15 F(ari-)-.25 E .746
-(able or parameter)184 498 R 3.246(,t)-.4 G .746
+(able or parameter)184 426 R 3.246(,t)-.4 G .746
(he shell prints an error message, and, if not interacti)-3.246 F -.15
(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-510 Q F1<ad76>144 522 Q F0(Print shell input lines as the)184 522 Q 2.5
-(ya)-.15 G(re read.)-2.5 E F1<ad78>144 534 Q F0 .315(After e)184 534 R
+438 Q F1<ad76>144 450 Q F0(Print shell input lines as the)184 450 Q 2.5
+(ya)-.15 G(re read.)-2.5 E F1<ad78>144 462 Q F0 .315(After e)184 462 R
.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25
(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)
2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184
-546 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F
+474 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F
1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0
-(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 558 Q
+(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 486 Q
(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1
-<ad42>144 570 Q F0 2.579(The shell performs brace e)184 570 R 2.578
-(xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E
--.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 582 Q
-(ault.)-.1 E F1<ad43>144 594 Q F0 .213(If set,)184 594 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
+<ad42>144 498 Q F0 1.206(The shell performs brace e)184 498 R 1.206
+(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F F0(abo)3.705 E
+-.15(ve)-.15 G 3.705(\). This).15 F 1.205(is on by de-)3.705 F -.1(fa)
+184 510 S(ult.).1 E F1<ad43>144 522 Q F0 .213(If set,)184 522 R F1(bash)
+2.713 E F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F
+.214(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F
-3.054(tors. This)184 606 R .553(may be o)3.053 F -.15(ve)-.15 G .553
+3.054(tors. This)184 534 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 618 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<ad45>144 630 Q F0 .103(If set, an)184 630 R 2.603(yt)-.15 G .103
+.15 F(tor)184 546 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 558 Q F0 .103(If set, an)184 558 R 2.603(yt)-.15 G .103
(rap on)-2.603 F F1(ERR)2.603 E F0 .104
(is inherited by shell functions, command substitutions, and com-)2.603
-F .839(mands e)184 642 R -.15(xe)-.15 G .839(cuted in a subshell en).15
+F .839(mands e)184 570 R -.15(xe)-.15 G .839(cuted in a subshell en).15
F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838
-(trap is normally not inherited in)3.338 F(such cases.)184 654 Q F1
-<ad48>144 666 Q F0(Enable)184 666 Q F1(!)3.031 E F0 .531
+(trap is normally not inherited in)3.338 F(such cases.)184 582 Q F1
+<ad48>144 594 Q F0(Enable)184 594 Q F1(!)3.031 E F0 .531
(style history substitution.)5.531 F .531(This option is on by def)5.531
-F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 678 Q -.15
-(ve)-.25 G(.).15 E F1<ad50>144 690 Q F0 .96
-(If set, the shell does not resolv)184 690 R 3.459(es)-.15 G .959
+F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 606 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 618 Q F0 .96
+(If set, the shell does not resolv)184 618 R 3.459(es)-.15 G .959
(ymbolic links when e)-3.459 F -.15(xe)-.15 G .959
-(cuting commands such as).15 F F1(cd)3.459 E F0 2.821
-(that change the current w)184 702 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 714 R(def)2.686
-E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186
+(cuting commands such as).15 F F1(cd)3.459 E F0 1.452
+(that change the current w)184 630 R 1.452(orking directory)-.1 F 6.452
+(.I)-.65 G 3.953(tu)-6.452 G 1.453(ses the ph)-3.953 F 1.453
+(ysical directory structure in-)-.05 F 3.335(stead. By)184 642 R(def)
+3.335 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834
(ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 726 Q(.)-.65 E
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(71)188.455 E 0 Cg EP
-%%Page: 72 72
+(mands which change the current directory)184 654 Q(.)-.65 E F1<ad54>144
+666 Q F0 .89(If set, an)184 666 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
+(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
+(are inherited by shell functions, command)3.39 F 1.932
+(substitutions, and commands e)184 678 R -.15(xe)-.15 G 1.932
+(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 690 Q F0
+(traps are normally not inherited in such cases.)2.5 E F1<adad>144 702 Q
+F0 .4(If no ar)184 702 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
+(his option, then the positional parameters are unset.)-2.901 F
+(Otherwise,)5.401 E(the positional parameters are set to the)184 714 Q
+F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G
+(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E F0(.)A
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(72)190.395 E 0 Cg EP
+%%Page: 73 73
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad54>144 84 Q F0 .89(If set, an)184 84 R 3.39(yt)-.15 G .89(raps on)
--3.39 F F1(DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89
-(are inherited by shell functions, command)3.39 F 1.932
-(substitutions, and commands e)184 96 R -.15(xe)-.15 G 1.932
-(cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E
-(UG)-.1 E F0(and)4.432 E F1(RETURN)184 108 Q F0
-(traps are normally not inherited in such cases.)2.5 E F1<adad>144 120 Q
-F0 .4(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
-(his option, then the positional parameters are unset.)-2.901 F
-(Otherwise,)5.401 E(the positional parameters are set to the)184 132 Q
-/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5
-(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>
-2.5 E F0(.)A F1<ad>144 144 Q F0 1.945
-(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E
-(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G 1.944
-(ssigned to the positional)-4.444 F 3.445(parameters. The)184 156 R F1
-<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945
-(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no)
-3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B
-(parameters remain unchanged.)184 168 Q .425(The options are of)144
-184.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
-(ault unless otherwise noted.)-.1 F .425
+SF<ad>144 84 Q F0 .797(Signal the end of options, cause all remaining)
+184 84 R/F2 10/Times-Italic@0 SF(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297
+(ob)-3.297 G 3.296(ea)-3.297 G .796(ssigned to the positional pa-)-3.296
+F 3.021(rameters. The)184 96 R F1<ad78>3.021 E F0(and)3.022 E F1<ad76>
+3.022 E F0 .522(options are turned of)3.022 F 3.022(f. If)-.25 F .522
+(there are no)3.022 F F2(ar)3.022 E(g)-.37 E F0 .522
+(s, the positional pa-)B(rameters remain unchanged.)184 108 Q .425
+(The options are of)144 124.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)
+-2.925 E .425(ault unless otherwise noted.)-.1 F .425
(Using + rather than \255 causes these options)5.425 F .177
-(to be turned of)144 196.8 R 2.677(f. The)-.25 F .178
+(to be turned of)144 136.8 R 2.677(f. The)-.25 F .178
(options can also be speci\214ed as ar)2.678 F .178(guments to an in)
-.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066
-(current set of options may be found in)144 208.8 R F1<24ad>2.566 E F0
+(current set of options may be found in)144 148.8 R F1<24ad>2.566 E F0
5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F
-(is encountered.)144 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0
-(])A .428(The positional parameters from)144 249.6 R F2(n)2.928 E F0
+(is encountered.)144 160.8 Q F1(shift)108 177.6 Q F0([)2.5 E F2(n)A F0
+(])A .428(The positional parameters from)144 189.6 R F2(n)2.928 E F0
.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G
-.429(rameters represented by the num-).15 F(bers)144 261.6 Q F1($#)2.583
+.429(rameters represented by the num-).15 F(bers)144 201.6 Q F1($#)2.583
E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083
(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga)
-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to)
.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06
-(is 0, no parameters are changed.)144 273.6 R(If)5.06 E F2(n)2.92 E F0
+(is 0, no parameters are changed.)144 213.6 R(If)5.06 E F2(n)2.92 E F0
.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
-(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 285.6 R
+(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 225.6 R
.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0
.143(is greater than)2.883 F F1($#)2.643 E F0
-(or less than zero; otherwise 0.)144 297.6 Q F1(shopt)108 314.4 Q F0([)
+(or less than zero; otherwise 0.)144 237.6 Q F1(shopt)108 254.4 Q F0([)
2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
--2.5 E F0(...])2.5 E -.8(To)144 326.4 S .639(ggle the v).8 F .639
+-2.5 E F0(...])2.5 E -.8(To)144 266.4 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 338.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
+(listed belo)144 278.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
2.875(ft).4 G(he)-2.875 E F1<ad6f>2.875 E F0 .375
(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25
F F1<ad6f>2.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 350.4 R .825
-(ith no options, or with the)-.4 F F1<ad70>3.325 E F0 .826
-(option, a list of all settable options is displayed, with an)3.325 F
-.552(indication of whether or not each is set; if)144 362.4 R F2
-(optnames)3.052 E F0 .551
-(are supplied, the output is restricted to those)3.052 F 2.549
-(options. The)144 374.4 R F1<ad70>2.549 E F0 .049(option causes output \
-to be displayed in a form that may be reused as input.)2.549 F(Other)
-5.05 E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad73>144 398.4 Q F0(Enable \(set\) each)180
-398.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 410.4 Q F0
-(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
-422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
-tus indicates whether the)180 422.4 R F2(optname)2.503 E F0(is)2.503 E
-.255(set or unset.)180 434.4 R .255(If multiple)5.255 F F2(optname)2.755
+(bu)2.874 G .374(iltin com-).2 F 2.565(mand. W)144 290.4 R .065
+(ith no options, or with the)-.4 F F1<ad70>2.566 E F0 .066
+(option, a list of all settable options is displayed, with an in-)2.566
+F .074(dication of whether or not each is set; if)144 302.4 R F2
+(optnames)2.574 E F0 .074
+(are supplied, the output is restricted to those op-)2.574 F 3.105
+(tions. The)144 314.4 R F1<ad70>3.105 E F0 .605(option causes output to\
+ be displayed in a form that may be reused as input.)3.105 F(Other)5.605
+E(options ha)144 326.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 338.4 Q F0(Enable \(set\) each)180
+338.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 350.4 Q F0
+(Disable \(unset\) each)180 350.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+362.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 362.4 R F2(optname)2.503 E F0(is)2.503 E
+.255(set or unset.)180 374.4 R .255(If multiple)5.255 F F2(optname)2.755
E F0(ar)2.755 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
(ith)-2.756 E F1<ad71>2.756 E F0 2.756(,t)C .256
-(he return status is zero if)-2.756 F(all)180 446.4 Q F2(optnames)2.5 E
-F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 458.4 Q F0
-(Restricts the v)180 458.4 Q(alues of)-.25 E F2(optname)2.5 E F0
+(he return status is zero if)-2.756 F(all)180 386.4 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 398.4 Q F0
+(Restricts the v)180 398.4 Q(alues of)-.25 E F2(optname)2.5 E F0
(to be those de\214ned for the)2.5 E F1<ad6f>2.5 E F0(option to the)2.5
-E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 475.2 R F1
+E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 415.2 R F1
<ad73>3.125 E F0(or)3.124 E F1<ad75>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 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U)
--.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0
-2.234(options are disabled \(unset\) by)4.734 F(def)144 499.2 Q(ault.)
--.1 E 1.544(The return status when listing options is zero if all)144
-516 R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)
-4.044 F .696
+E F0(sho)3.124 E .624(ws only those options which are)-.25 F .983
+(set or unset, respecti)144 427.2 R -.15(ve)-.25 G(ly).15 E 5.983(.U)
+-.65 G .983(nless otherwise noted, the)-5.983 F F1(shopt)3.484 E F0 .984
+(options are disabled \(unset\) by de-)3.484 F -.1(fa)144 439.2 S(ult.)
+.1 E 1.544(The return status when listing options is zero if all)144 456
+R F2(optnames)4.044 E F0 1.544(are enabled, non-zero otherwise.)4.044 F
+.696
(When setting or unsetting options, the return status is zero unless an)
-144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
--.25 F(option.)144 540 Q(The list of)144 556.8 Q F1(shopt)2.5 E F0
-(options is:)2.5 E F1(assoc_expand_once)144 574.8 Q F0 1.945
-(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G
+144 468 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
+-.25 F(option.)144 480 Q(The list of)144 496.8 Q F1(shopt)2.5 E F0
+(options is:)2.5 E F1(assoc_expand_once)144 514.8 Q F0 1.945
+(If set, the shell suppresses multiple e)184 526.8 R -.25(va)-.25 G
1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944
-(rray subscripts during).15 F 2.556(arithmetic e)184 598.8 R 2.556
-(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe)
--.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F
-(ariable)-.25 E(assignments, and while e)184 610.8 Q -.15(xe)-.15 G
+(rray subscripts during).15 F .885(arithmetic e)184 538.8 R .885
+(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe)
+-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885
+(ariable as-)-.25 F(signments, and while e)184 550.8 Q -.15(xe)-.15 G
(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
-(autocd)144 622.8 Q F0 .2
-(If set, a command name that is the name of a directory is e)184 622.8 R
+(autocd)144 562.8 Q F0 .2
+(If set, a command name that is the name of a directory is e)184 562.8 R
-.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
+(ment to the)184 574.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .155(If set, an ar)184 658.8 R .155
+F1(cdable_v)144 586.8 Q(ars)-.1 E F0 .155(If set, an ar)184 598.8 R .155
(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156
(iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 670.8 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 Q F0
+(name of a v)184 610.8 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F1(cdspell)144 622.8 Q F0
1.055
(If set, minor errors in the spelling of a directory component in a)184
-682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
-(corrected. The)184 694.8 R 1.487(errors check)3.987 F 1.487
+622.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
+(corrected. The)184 634.8 R 1.487(errors check)3.987 F 1.487
(ed for are transposed characters, a missing character)-.1 F 3.988(,a)
--.4 G(nd)-3.988 E .77(one character too man)184 706.8 R 4.57 -.65(y. I)
+-.4 G(nd)-3.988 E .77(one character too man)184 646.8 R 4.57 -.65(y. I)
-.15 H 3.27(fac).65 G .77
(orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 718.8 Q
+(the command proceeds.)184 658.8 Q
(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
-.15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(72)188.455 E 0 Cg
-EP
-%%Page: 73 73
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(checkhash)144 84 Q F0 .736(If set,)184 96 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 108
-Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q
-F0 .449(If set,)184 132 R F1(bash)2.949 E F0 .449
+.15 E F1(checkhash)144 670.8 Q F0 .736(If set,)184 682.8 R F1(bash)3.236
+E F0 .736(checks that a command found in the hash table e)3.236 F .737
+(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
+694.8 Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 706.8
+Q F0 .449(If set,)184 718.8 R F1(bash)2.949 E F0 .449
(lists the status of an)2.949 F 2.949(ys)-.15 G .448
(topped and running jobs before e)-2.949 F .448(xiting an interacti)-.15
-F -.15(ve)-.25 G 3.438(shell. If)184 144 R(an)3.438 E 3.438(yj)-.15 G
+F -.15(ve)-.25 G 3.438(shell. If)184 730.8 R(an)3.438 E 3.438(yj)-.15 G
.938(obs are running, this causes the e)-3.438 F .938
-(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F 2.203
-(attempted without an interv)184 156 R 2.203(ening command \(see)-.15 F
-/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
--.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 168 Q -.1(wa)-.1
-G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
-(obs are stopped.)-2.5 E F1(checkwinsize)144 180 Q F0 1.09(If set,)184
-192 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
-(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
-(uiltin\) command and, if)-.2 F(necessary)184 204 Q 4.694(,u)-.65 G
-2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0
-(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193
-(This option is enabled by)6.693 F(def)184 216 Q(ault.)-.1 E F1(cmdhist)
-144 228 Q F0 1.202(If set,)184 228 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
-240 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133
-(ws easy re-editing of multi-line commands.)-.25 F 1.132
-(This option is enabled by)6.132 F(def)184 252 Q .613(ault, b)-.1 F .613
-(ut only has an ef)-.2 F .614
-(fect if command history is enabled, as described abo)-.25 F .914 -.15
-(ve u)-.15 H(nder).15 E F2(HIST)184 264 Q(OR)-.162 E(Y)-.315 E F3(.)A F1
-(compat31)144 276 Q F0 .42(If set,)184 288 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 300 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 312 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s)
--.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
-3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82
-(use ASCII collation and)184 324 R/F4 10/Times-Italic@0 SF(str)3.321 E
-(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale')
-.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 336 Q F4(str)
-2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 348 Q F0 1.41(If set,)
-184 360 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409
-(vior to that of v)-.2 F 1.409
-(ersion 3.2 with respect to locale-speci\214c)-.15 F .422
-(string comparison when using the)184 372 R F1([[)2.922 E F0 .422
-(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>)
-2.923 E F0 .423(operators \(see pre-)2.923 F .481
-(vious item\) and the ef)184 384 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 396 Q
-(xt command in the list after one terminates due to an interrupt.)-.15 E
-F1(compat40)144 408 Q F0 1.409(If set,)184 420 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 432 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 444 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
-456 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 468 Q
-(xt command in the list.)-.15 E F1(compat41)144 480 Q F0 1.523(If set,)
-184 492 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523
-(posix mode)4.023 F F0 4.024(,t)C 1.524
-(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184
-504 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 516
-R .59(This is the beha)5.59 F .59(vior of)-.2 F .59
-(posix mode through v)184 528 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 540 Q F1(compat42)144 552 Q
-F0 1.796(If set,)184 564 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 576 S(pansion using quote remo).15 E -.25
-(va)-.15 G(l.).25 E F1(compat43)144 588 Q F0 .141(If set,)184 600 R F1
-(bash)2.641 E F0 .141(does not print a w)2.641 F .14
-(arning message if an attempt is made to use a quoted com-)-.1 F .912
-(pound array assignment as an ar)184 612 R .912(gument to)-.18 F F1
-(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913
-(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 624 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 636 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 648 R -.15(xe)-.15 G .375(cuted \(this allo).15 F
-(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0
-.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F
-(the caller')184 660 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1
-(compat44)144 672 Q F0 .441(If set,)184 684 R F1(bash)2.941 E F0(sa)
-2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B)
--2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184
-696 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G
-(rdless of whether or not e).05 E(xtended deb)-.15 E
-(ugging mode is enabled.)-.2 E(GNU Bash 5.0)72 768 Q(2018 December 7)
-139.295 E(73)188.455 E 0 Cg EP
+(xit to be deferred until a second e)-.15 F .939(xit is)-.15 F
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(73)190.395 E 0 Cg EP
%%Page: 74 74
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(complete_fullquote)144 84 Q F0 .654(If set,)184 96 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 108 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
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .817
+(attempted without an interv)184 84 R .817(ening command \(see)-.15 F/F1
+9/Times-Bold@0 SF .816(JOB CONTR)3.316 F(OL)-.27 E F0(abo)3.066 E -.15
+(ve)-.15 G 3.316(\). The).15 F .816(shell al-)3.316 F -.1(wa)184 96 S
+(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G(obs are stopped.)
+-2.5 E/F2 10/Times-Bold@0 SF(checkwinsize)144 108 Q F0 1.09(If set,)184
+120 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
+(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
+(uiltin\) command and, if)-.2 F(necessary)184 132 Q 3.351(,u)-.65 G .851
+(pdates the v)-3.351 F .85(alues of)-.25 F F1(LINES)3.35 E F0(and)3.1 E
+F1(COLUMNS)3.35 E/F3 9/Times-Roman@0 SF(.)A F0 .85
+(This option is enabled by de-)5.35 F -.1(fa)184 144 S(ult.).1 E F2
+(cmdhist)144 156 Q F0 .172(If set,)184 156 R F2(bash)2.672 E F0 .172
+(attempts to sa)2.672 F .472 -.15(ve a)-.2 H .173
+(ll lines of a multiple-line command in the same history en-).15 F(try)
+184 168 Q 5.597(.T)-.65 G .597(his allo)-5.597 F .597
+(ws easy re-editing of multi-line commands.)-.25 F .597
+(This option is enabled by de-)5.597 F -.1(fa)184 180 S 1.287(ult, b).1
+F 1.288(ut only has an ef)-.2 F 1.288
+(fect if command history is enabled, as described abo)-.25 F 1.588 -.15
+(ve u)-.15 H(nder).15 E F1(HIST)184 192 Q(OR)-.162 E(Y)-.315 E F3(.)A F2
+(compat31)144 204 Q(compat32)144 216 Q(compat40)144 228 Q(compat41)144
+240 Q(compat42)144 252 Q(compat43)144 264 Q(compat44)144 276 Q F0 .889
+(These control aspects of the shell')184 288 R 3.389(sc)-.55 G .889
+(ompatibility mode \(see)-3.389 F F1 .889(SHELL COMP)3.389 F -.855(AT)
+-.666 G(IBILITY).855 E(MODE)184 300 Q F0(belo)2.25 E(w\).)-.25 E F2
+(complete_fullquote)144 316.8 Q F0 .653(If set,)184 328.8 R F2(bash)
+3.153 E F0 .653(quotes all shell metacharacters in \214lenames and dire\
+ctory names when per)3.153 F(-)-.2 E 1.525(forming completion.)184 340.8
+R 1.524(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15
+G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F
2.667(from the set of characters that will be quoted in completed \214l\
-enames when these)184 120 R .028(metacharacters appear in shell v)184
-132 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 144 R 1.073
-(ariable names that e)-.25 F 1.073
+enames when these)184 352.8 R .029(metacharacters appear in shell v)184
+364.8 R .028(ariable references in w)-.25 F .028(ords to be completed.)
+-.1 F .028(This means)5.028 F 1.072(that dollar signs in v)184 376.8 R
+1.073(ariable names that e)-.25 F 1.073
(xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25
-(ev e)184 156 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
+(ev e)184 388.8 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
-168 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 180 Q
+400.8 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 412.8 Q
(ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E
-(ersions through 4.2.)-.15 E F1(dir)144 192 Q(expand)-.18 E F0 .486
-(If set,)184 204 R F1(bash)2.986 E F0 .486
+(ersions through 4.2.)-.15 E F2(dir)144 429.6 Q(expand)-.18 E F0 .487
+(If set,)184 441.6 R F2(bash)2.987 E F0 .486
(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
-216 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 228 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
-(hat the user typed.)-2.5 E F1(dirspell)144 240 Q F0 .858(If set,)184
-240 R 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
+453.6 R .179(This changes the contents of the readline editing b)5.179 F
+(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184
+465.6 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F2(dirspell)144 482.4 Q F0 .859(If set,)184
+482.4 R F2(bash)3.359 E F0 .858
+(attempts spelling correction on directory names during w)3.359 F .858
(ord completion if)-.1 F
-(the directory name initially supplied does not e)184 252 Q(xist.)-.15 E
-F1(dotglob)144 264 Q F0 .165(If set,)184 264 R F1(bash)2.665 E F0 .165
-(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i)
--.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
-(xpansion.)-.15 E(The \214lenames)184 276 Q F1 -.63(``)2.5 G -.55(.').63
-G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
+(the directory name initially supplied does not e)184 494.4 Q(xist.)-.15
+E F2(dotglob)144 511.2 Q F0 .165(If set,)184 511.2 R F2(bash)2.665 E F0
+.165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665
+('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
+(xpansion.)-.15 E(The \214lenames)184 523.2 Q F2 -.63(``)2.5 G -.55(.')
+.63 G(')-.08 E F0(and)5 E F2 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
-(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
-(is set.)2.5 E F1(execfail)144 288 Q F0 1.386(If set, a non-interacti)
-184 288 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 300 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 312 Q F0 .717
-(If set, aliases are e)184 324 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 336 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(extdeb)144 348 Q(ug)-.2 E F0 .671(If set at shell in)184 360 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 372 R F1<adad646562>2.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 384 Q
-(uggers is enabled:)-.2 E F1(1.)184 396 Q F0(The)220 396 Q F1<ad46>4.25
-E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)
-4.251 G 1.751(iltin displays the source \214le name and line).2 F
-(number corresponding to each function name supplied as an ar)220 408 Q
-(gument.)-.18 E F1(2.)184 420 Q F0 1.667(If the command run by the)220
-420 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 432
-Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 444 Q F0 .84
-(If the command run by the)220 444 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 456 S .488
+(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F2(dotglob)2.5 E F0
+(is set.)2.5 E F2(execfail)144 540 Q F0 .517(If set, a non-interacti)184
+540 R .817 -.15(ve s)-.25 H .517(hell will not e).15 F .516
+(xit if it cannot e)-.15 F -.15(xe)-.15 G .516
+(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184
+552 Q F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5 E
+.3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F2(exec)2.5 E F0
+-.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 568.8 Q F0 .716
+(If set, aliases are e)184 580.8 R .717(xpanded as described abo)-.15 F
+1.017 -.15(ve u)-.15 H(nder).15 E F1(ALIASES)3.217 E F3(.)A F0 .717
+(This option is enabled)5.217 F(by def)184 592.8 Q(ault for interacti)
+-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F2(extdeb)144 609.6 Q(ug)-.2 E F0
+.17(If set at shell in)184 621.6 R -.2(vo)-.4 G .17
+(cation, or in a shell startup \214le, arrange to e).2 F -.15(xe)-.15 G
+.17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.081
+(before the shell starts, identical to the)184 633.6 R F2<adad646562>
+3.582 E(ugger)-.2 E F0 3.582(option. If)3.582 F 1.082(set after in)3.582
+F -.2(vo)-.4 G 1.082(cation, be-).2 F(ha)184 645.6 Q
+(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F2(1.)184
+662.4 Q F0(The)220 662.4 Q F2<ad46>4.251 E F0 1.751(option to the)4.251
+F F2(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751
+(iltin displays the source \214le name and line).2 F
+(number corresponding to each function name supplied as an ar)220 674.4
+Q(gument.)-.18 E F2(2.)184 691.2 Q F0 1.667(If the command run by the)
+220 691.2 R F2(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)
+4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E
+(command is skipped and not e)220 703.2 Q -.15(xe)-.15 G(cuted.).15 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(74)190.395 E 0 Cg EP
+%%Page: 75 75
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(3.)184 84 Q F0 .841(If the command run by the)220 84 R F1(DEB)3.341 E
+(UG)-.1 E F0 .841(trap returns a v)3.341 F .84
+(alue of 2, and the shell is)-.25 F -.15(exe)220 96 S .488
(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 468 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 108 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 480 Q F2 -.27(BA)220 480 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 492 Q
--.15(ve)-.15 G(.).15 E F1(5.)184 504 Q F0 1.637(Function tracing is ena\
-bled: command substitution, shell functions, and sub-)220 504 R
-(shells in)220 516 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
+(n)-.15 E F0(.)A F1(4.)184 124.8 Q/F2 9/Times-Bold@0 SF -.27(BA)220
+124.8 S(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0
+.904(are updated as described in their descriptions)3.154 F(abo)220
+136.8 Q -.15(ve)-.15 G(.).15 E F1(5.)184 153.6 Q F0 1.637(Function trac\
+ing is enabled: command substitution, shell functions, and sub-)220
+153.6 R(shells in)220 165.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)
+-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 528 Q F0 1.082(Error tracing is enabled: comman\
-d substitution, shell functions, and subshells)220 528 R(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(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 552 Q F0 .4(If set, the e)184 552 R .4
+(traps.)2.5 E F1(6.)184 182.4 Q F0 1.082(Error tracing is enabled: comm\
+and substitution, shell functions, and subshells)220 182.4 R(in)220
+194.4 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3
+(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)
+2.5 E F1(extglob)144 211.2 Q F0 .4(If set, the e)184 211.2 R .4
(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 564 Q
-F0(are enabled.)2.5 E F1(extquote)144 576 Q F0 2.473(If set,)184 588 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 600 Q
-(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 612 Q F0
-1.425(If set, patterns which f)184 612 R 1.425
-(ail to match \214lenames during pathname e)-.1 F 1.424
-(xpansion result in an)-.15 F -.15(ex)184 624 S(pansion error).15 E(.)
--.55 E F1 -.25(fo)144 636 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.936(If set, the suf)184 648 R<8c78>-.25 E .936(es speci\214ed by the)
+-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 223.2 Q
+F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 .86(If set,)184 252 R F1
+($)3.36 E F0<08>A F3(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0
+(")A F3(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1
+(${)3.36 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86
+(pansions en-).15 F(closed in double quotes.)184 264 Q
+(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 280.8 Q
+F0 .242(If set, patterns which f)184 280.8 R .243
+(ail to match \214lenames during pathname e)-.1 F .243
+(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 292.8 Q(.)
+-.55 E F1 -.25(fo)144 309.6 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.937(If set, the suf)184 321.6 R<8c78>-.25 E .936(es speci\214ed by the)
-.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 660 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 672 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 684 Q(ault.)-.1 E F1(globasciiranges)144 696 Q F0 2.519
-(If set, range e)184 708 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 720 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
+-.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 333.6 R
+.32(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G
+.32(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948
+(pletions. See)184 345.6 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0
+(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2
+(FIGNORE)2.947 E/F4 9/Times-Roman@0 SF(.)A F0 .447(This option is)4.947
+F(enabled by def)184 357.6 Q(ault.)-.1 E F1(globasciiranges)144 374.4 Q
+F0 2.518(If set, range e)184 386.4 R 2.519
+(xpressions used in pattern matching brack)-.15 F 2.519(et e)-.1 F 2.519
+(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E(n)-.135 E
+(Matching)184 398.4 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b).15 G(eha)
+-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
--3.214 F(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(74)188.455 E 0
-Cg EP
-%%Page: 75 75
+-3.214 F 1.02(That is, the current locale')184 410.4 R 3.52(sc)-.55 G
+1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F
+F1(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 422.4 R F1
+(A)3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)
+-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .956
+(-case ASCII characters will collate)-.2 F(together)184 434.4 Q(.)-.55 E
+F1(globstar)144 451.2 Q F0 .518(If set, the pattern)184 451.2 R F1(**)
+3.018 E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F
+.519(xt will match all \214les and zero)-.15 F .432
+(or more directories and subdirectories.)184 463.2 R .431
+(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0
+2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184
+475.2 Q F1(gnu_errfmt)144 492 Q F0(If set, shell error messages are wri\
+tten in the standard GNU error message format.)184 504 Q F1(histappend)
+144 520.8 Q F0 .676
+(If set, the history list is appended to the \214le named by the v)184
+532.8 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G
+(ri-).25 E(able when the shell e)184 544.8 Q(xits, rather than o)-.15 E
+-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 561.6 Q(eedit)
+-.18 E F0 .576(If set, and)184 573.6 R F1 -.18(re)3.076 G(adline).18 E
+F0 .575(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15
+G .575(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F
+(tory substitution.)184 585.6 Q F1(histv)144 602.4 Q(erify)-.1 E F0 .402
+(If set, and)184 614.4 R F1 -.18(re)2.903 G(adline).18 E F0 .403
+(is being used, the results of history substitution are not immediately)
+2.903 F .662(passed to the shell parser)184 626.4 R 5.662(.I)-.55 G .661
+(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161
+G(adline).18 E F0(editing)3.161 E -.2(bu)184 638.4 S -.25(ff).2 G(er).25
+E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
+(hostcomplete)144 655.2 Q F0 1.181(If set, and)184 667.2 R F1 -.18(re)
+3.681 G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0
+1.182(will attempt to perform hostname completion)3.682 F 1.381
+(when a w)184 679.2 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381
+(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E
+F2(READLINE)3.88 E F0(abo)184 691.2 Q -.15(ve)-.15 G 2.5(\). This).15 F
+(is enabled by def)2.5 E(ault.)-.1 E(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(75)190.395 E 0 Cg EP
+%%Page: 76 76
%%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.02
-(That is, the current locale')184 84 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
-10/Times-Bold@0 SF(b)3.52 E F0 1.02(will not)3.52 F .956
-(collate between)184 96 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 108 Q(.)-.55
-E F1(globstar)144 120 Q F0 .519(If set, the pattern)184 120 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 132 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
-144 Q F1(gnu_errfmt)144 156 Q F0(If set, shell error messages are writt\
-en in the standard GNU error message format.)184 168 Q F1(histappend)144
-180 Q F0 .676
-(If set, the history list is appended to the \214le named by the v)184
-192 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0
--.25(va)2.926 G(ri-).25 E(able when the shell e)184 204 Q
-(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1
-(histr)144 216 Q(eedit)-.18 E F0 .575(If set, and)184 228 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 240 Q F1(histv)144 252 Q
-(erify)-.1 E F0 .403(If set, and)184 264 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 276 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 288 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 300 Q F0 1.182(If set, and)184 312 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
-324 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 336 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 348 Q F0(If set,)
-184 360 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 372 Q(exit)-.18 E F0 .22
-(If set, command substitution inherits the v)184 384 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 396 Q 2.5(vironment. This)-.4 F
-(option is enabled when)2.5 E/F3 10/Times-Italic@0 SF(posix mode)2.5 E
-F0(is enabled.)2.5 E F1(interacti)144 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 .967(option is)3.467 F(enabled by def)184 444 Q
-(ault.)-.1 E F1(lastpipe)144 456 Q F0 .066
-(If set, and job control is not acti)184 456 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 468 Q(vironment.)-.4 E F1(lithist)144 480 Q F0 .655(If set, and the)
-184 480 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 492 Q
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(huponexit)144 84 Q F0(If set,)184 96 Q F1(bash)2.5 E F0(will send)2.5
+E/F2 9/Times-Bold@0 SF(SIGHUP)2.5 E F0(to all jobs when an interacti)
+2.25 E .3 -.15(ve l)-.25 H(ogin shell e).15 E(xits.)-.15 E F1
+(inherit_err)144 112.8 Q(exit)-.18 E F0 .219
+(If set, command substitution inherits the v)184 124.8 R .219
+(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .22
+(option, instead of unsetting)2.719 F(it in the subshell en)184 136.8 Q
+2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10
+/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti)
+144 153.6 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 165.6 R
+2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E
+F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on)
+-.1 F .967(that line to be ignored in an interacti)184 177.6 R 1.267
+-.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217
+E -.15(ve)-.15 G 3.467(\). This).15 F .968(option is)3.468 F
+(enabled by def)184 189.6 Q(ault.)-.1 E F1(lastpipe)144 206.4 Q F0 .066
+(If set, and job control is not acti)184 206.4 R -.15(ve)-.25 G 2.566
+(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566
+F -.15(xe)-.15 G(-).15 E
+(cuted in the background in the current shell en)184 218.4 Q(vironment.)
+-.4 E F1(lithist)144 235.2 Q F0 .654(If set, and the)184 235.2 R F1
+(cmdhist)3.154 E F0 .654(option is enabled, multi-line commands are sa)
+3.154 F -.15(ve)-.2 G 3.155(dt).15 G 3.155(ot)-3.155 G .655(he history)
+-3.155 F(with embedded ne)184 247.2 Q
(wlines rather than using semicolon separators where possible.)-.25 E F1
-(localv)144 504 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 516 R
+(localv)144 264 Q(ar_inherit)-.1 E F0 .422(If set, local v)184 276 R
.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
-528 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
-(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173
-(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 540 Q
-F1(localv)144 552 Q(ar_unset)-.1 E F0 .328(If set, calling)184 564 R F1
-(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F
-.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\
+288 S .173(ists at a pre).15 F .173(vious scope before an)-.25 F 2.673
+(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .174
+(The nameref attrib)5.174 F .174(ute is not)-.2 F(inherited.)184 300 Q
+F1(localv)144 316.8 Q(ar_unset)-.1 E F0 .329(If set, calling)184 328.8 R
+F1(unset)2.829 E F0 .329(on local v)2.829 F .329(ariables in pre)-.25 F
+.328(vious function scopes marks them so subse-)-.25 F .543(quent looku\
ps \214nd them unset until that function returns. This is identical to \
-the beha)184 576 R(v-)-.2 E(ior of unsetting local v)184 588 Q
-(ariables at the current function scope.)-.25 E F1(login_shell)144 600 Q
-F0 .486
+the beha)184 340.8 R(v-)-.2 E(ior of unsetting local v)184 352.8 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 369.6
+Q F0 .486
(The shell sets this option if it is started as a login shell \(see)184
-612 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve)
--.15 G 2.987(\). The).15 F -.25(va)184 624 S(lue may not be changed.).25
-E F1(mailwar)144 636 Q(n)-.15 E F0 .815(If set, and a \214le that)184
-648 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 660 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+381.6 R F2(INV)2.986 E(OCA)-.405 E(TION)-.855 E F0(abo)2.736 E -.15(ve)
+-.15 G 2.986(\). The).15 F -.25(va)184 393.6 S(lue may not be changed.)
+.25 E F1(mailwar)144 410.4 Q(n)-.15 E F0 .814(If set, and a \214le that)
+184 422.4 R F1(bash)3.314 E F0 .815
+(is checking for mail has been accessed since the last time it)3.314 F
+-.1(wa)184 434.4 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
--.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 672
-Q F0 .324(If set, and)184 684 R F1 -.18(re)2.824 G(adline).18 E F0 .324
-(is being used,)2.824 F F1(bash)2.824 E F0 .324
-(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH)-.189 E
-F0 .325(for possible)2.575 F
-(completions when completion is attempted on an empty line.)184 696 Q
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(75)188.455 E 0 Cg EP
-%%Page: 76 76
+-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144
+451.2 Q F0 .325(If set, and)184 463.2 R F1 -.18(re)2.825 G(adline).18 E
+F0 .325(is being used,)2.825 F F1(bash)2.824 E F0 .324
+(will not attempt to search the)2.824 F F2 -.666(PA)2.824 G(TH)-.189 E
+F0 .324(for possible)2.574 F
+(completions when completion is attempted on an empty line.)184 475.2 Q
+F1(nocaseglob)144 492 Q F0 .436(If set,)184 504 R F1(bash)2.936 E F0
+.436(matches \214lenames in a case\255insensiti)2.936 F .737 -.15(ve f)
+-.25 H .437(ashion when performing pathname).05 F -.15(ex)184 516 S
+(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
+-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 532.8 Q F0 1.194(If set,)184
+544.8 R F1(bash)3.694 E F0 1.194
+(matches patterns in a case\255insensiti)3.694 F 1.493 -.15(ve f)-.25 H
+1.193(ashion when performing matching).05 F .551(while e)184 556.8 R
+-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E
+F0 .551(conditional commands, when performing pattern substitution)3.051
+F -.1(wo)184 568.8 S .623(rd e).1 F .623(xpansions, or when \214ltering\
+ possible completions as part of programmable com-)-.15 F(pletion.)184
+580.8 Q F1(nullglob)144 597.6 Q F0 .854(If set,)184 609.6 R F1(bash)
+3.354 E F0(allo)3.354 E .855(ws patterns which match no \214les \(see)
+-.25 F F1 -.1(Pa)3.355 G .855(thname Expansion).1 F F0(abo)3.355 E -.15
+(ve)-.15 G 3.355(\)t).15 G(o)-3.355 E -.15(ex)184 621.6 S
+(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
+638.4 Q(ogcomp)-.18 E F0 .677(If set, the programmable completion f)184
+650.4 R .677(acilities \(see)-.1 F F1(Pr)3.176 E .676
+(ogrammable Completion)-.18 F F0(abo)3.176 E -.15(ve)-.15 G(\)).15 E
+(are enabled.)184 662.4 Q(This option is enabled by def)5 E(ault.)-.1 E
+F1(pr)144 679.2 Q(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 691.2 R F1(bash)
+4.624 E F0 2.124(treats a command name that)4.624 F(doesn')184 703.2 Q
+3.289(th)-.18 G -2.25 -.2(av e)-3.289 H(an)3.489 E 3.289(yc)-.15 G .789
+(ompletions as a possible alias and attempts alias e)-3.289 F .788
+(xpansion. If it has)-.15 F 1.473(an alias,)184 715.2 R F1(bash)3.973 E
+F0 1.473(attempts programmable completion using the command w)3.973 F
+1.473(ord resulting)-.1 F(from the e)184 727.2 Q(xpanded alias.)-.15 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(76)190.395 E 0 Cg EP
+%%Page: 77 77
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF(nocaseglob)144 84 Q F0 .437(If set,)184 96 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 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.193(If set,)184
-132 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 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 .622(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 .855(If set,)184 192 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 204 S
-(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-216 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
-228 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 240 Q(This option is enabled by def)5 E(ault.)-.1 E F1
-(pr)144 252 Q(ogcomp_alias)-.18 E F0 2.124
-(If set, and programmable completion is enabled,)184 264 R F1(bash)4.624
-E F0 2.124(treats a command name that)4.624 F(doesn')184 276 Q 3.288(th)
--.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
-(ompletions as a possible alias and attempts alias e)-3.288 F .789
-(xpansion. If it has)-.15 F 1.473(an alias,)184 288 R F1(bash)3.973 E F0
-1.473(attempts programmable completion using the command w)3.973 F 1.473
-(ord resulting)-.1 F(from the e)184 300 Q(xpanded alias.)-.15 E F1(pr)
-144 312 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)
-184 324 R 1.448(go parameter e)-.18 F 1.448
-(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 336 S
-.171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
+SF(pr)144 84 Q(omptv)-.18 E(ars)-.1 E F0 1.448
+(If set, prompt strings under)184 96 R 1.448(go parameter e)-.18 F 1.447
+(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 108 S .17
+(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17
(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9
-/Times-Bold@0 SF(PR)2.67 E(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G
-(.).15 E(This option is enabled by def)184 348 Q(ault.)-.1 E F1 -.18(re)
-144 360 S(stricted_shell).18 E F0 1.069
+/Times-Bold@0 SF(PR)2.671 E(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G
+(.).15 E(This option is enabled by def)184 120 Q(ault.)-.1 E F1 -.18(re)
+144 136.8 S(stricted_shell).18 E F0 1.069
(The shell sets this option if it is started in restricted mode \(see)
-184 372 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 384 Q 2.86
+184 148.8 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 160.8 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 396 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 408 Q(erbose)-.1 E F0 .501(If set, the)184 420 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 432 Q F1(sour)
-144 444 Q(cepath)-.18 E F0 .771(If set, the)184 456 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 468 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
--.1 E F1(xpg_echo)144 480 Q F0(If set, the)184 492 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 508.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
-(Suspend the e)144 520.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 532.8 R F1<ad66>2.523 E F0 .023
-(option can be used to o)2.523 F -.15(ve)-.15 G .022
-(rride this and force the suspension.).15 F .022(The return status is)
-5.022 F 2.5(0u)144 544.8 S(nless the shell is a login shell and)-2.5 E
-F1<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5
-E F1(test)108 561.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
-108 573.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 573.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 585.6
+(-).15 E(cuted, allo)184 172.8 Q(wing the startup \214les to disco)-.25
+E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5
+E F1(shift_v)144 189.6 Q(erbose)-.1 E F0 .502(If set, the)184 201.6 R F1
+(shift)3.002 E F0 -.2(bu)3.002 G .501
+(iltin prints an error message when the shift count e).2 F .501
+(xceeds the number)-.15 F(of positional parameters.)184 213.6 Q F1(sour)
+144 230.4 Q(cepath)-.18 E F0 .77(If set, the)184 242.4 R F1(sour)3.27 E
+(ce)-.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47
+F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771
+(to \214nd the directory containing the)3.021 F
+(\214le supplied as an ar)184 254.4 Q 2.5(gument. This)-.18 F
+(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 271.2 Q F0
+(If set, the)184 283.2 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E
+(xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend)
+108 300 Q F0([)2.5 E F1<ad66>A F0(])A 1.002(Suspend the e)144 312 R -.15
+(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve)-.25
+G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001
+(login shell cannot be)3.501 F .022(suspended; the)144 324 R F1<ad66>
+2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022
+(rride this and force the suspension.).15 F .023(The return status is)
+5.023 F 2.5(0u)144 336 S(nless the shell is a login shell and)-2.5 E F1
+<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5 E
+F1(test)108 352.8 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
+108 364.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878
+(Return a status of 0 \(true\) or 1 \(f)144 364.8 R .877
+(alse\) depending on the e)-.1 F -.25(va)-.25 G .877
+(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 376.8
S(pr).2 E F0 5.53(.E).73 G .53
(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 597.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 609.6 Q(gument of)-.18
-E F1<adad>2.5 E F0(as signifying the end of options.)2.5 E .786
-(Expressions may be combined using the follo)144 627.6 R .785
-(wing operators, listed in decreasing order of prece-)-.25 F 3.411
-(dence. The)144 639.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 651.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
-(ore ar)-2.5 E(guments.)-.18 E F1(!)144 663.6 Q F3 -.2(ex)2.5 G(pr).2 E
-F0 -.35(Tr)180 663.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 675.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
-.26(Returns the v)180 675.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
+(gument. Expressions)-.18 F .53(are composed of the)3.03 F 1.361
+(primaries described abo)144 388.8 R 1.661 -.15(ve u)-.15 H(nder).15 E
+F2(CONDITION)3.861 E 1.36(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)
+A F1(test)5.86 E F0 1.36(does not accept an)3.86 F 3.86(yo)-.15 G(p-)
+-3.86 E(tions, nor does it accept and ignore an ar)144 400.8 Q
+(gument of)-.18 E F1<adad>2.5 E F0(as signifying the end of options.)2.5
+E .785(Expressions may be combined using the follo)144 418.8 R .786
+(wing operators, listed in decreasing order of prece-)-.25 F 3.412
+(dence. The)144 430.8 R -.25(eva)3.412 G .912
+(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F
+4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F
+(used when there are \214v)144 442.8 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G
+(ore ar)-2.5 E(guments.)-.18 E F1(!)144 454.8 Q F3 -.2(ex)2.5 G(pr).2 E
+F0 -.35(Tr)180 454.8 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23
+E(alse.)-.1 E F1(\()144 466.8 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0
+.26(Returns the v)180 466.8 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2
E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26
-(rride the normal precedence of opera-).15 F(tors.)180 687.6 Q F3 -.2
-(ex)144 699.6 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0
--.35(Tr)180 711.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(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(76)188.455 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/F1 10
-/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F0<ad>2.5 E/F2 10
-/Times-Bold@0 SF(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 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 112.8 Q F0(and)2.5 E F2([)2.5 E
-F0 -.25(eva)2.5 G(luate conditional e).25 E
+(rride the normal precedence of opera-).15 F(tors.)180 478.8 Q F3 -.2
+(ex)144 490.8 S(pr1).2 E F0<ad>2.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0
+-.35(Tr)180 502.8 S(ue if both).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(and)2.5
+E F3 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F3 -.2(ex)144 514.8 S
+(pr1).2 E F0<ad>2.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180
+526.8 S(ue if either).35 E F3 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F3 -.2
+(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 543.6 Q F0(and)2.5 E
+F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E
(xpressions using a set of rules based on the number of ar)-.15 E
-(guments.)-.18 E 2.5(0a)144 130.8 S -.18(rg)-2.5 G(uments).18 E(The e)
-180 142.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 154.8 S -.18
-(rg)-2.5 G(ument).18 E(The e)180 166.8 Q
+(guments.)-.18 E 2.5(0a)144 561.6 S -.18(rg)-2.5 G(uments).18 E(The e)
+180 573.6 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 585.6 S -.18
+(rg)-2.5 G(ument).18 E(The e)180 597.6 Q
(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
-E 2.5(2a)144 178.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
-180 190.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
+E 2.5(2a)144 609.6 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
+180 621.6 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
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 202.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
-214.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 226.8 Q
+(gument is null.)-.18 F .379(If the \214rst ar)180 633.6 R .38
+(gument is one of the unary conditional operators listed abo)-.18 F .68
+-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 645.6 Q .553
+(AL EXPRESSIONS)-.18 F F4(,)A F0 .552(the e)2.802 F .552
+(xpression is true if the unary test is true.)-.15 F .552
+(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 657.6 Q
(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 238.8 S -.18(rg)-2.5 G
-(uments).18 E .236(The follo)180 250.8 R .236
+(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 669.6 S -.18(rg)-2.5 G
+(uments).18 E .236(The follo)180 681.6 R .236
(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 262.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 274.8 R .578(xpression i\
+(the binary conditional operators listed abo)180 693.6 R 1.155 -.15
+(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
+F4(,)A F0(the)3.104 E .578(result of the e)180 705.6 R .578(xpression i\
s the result of the binary test using the \214rst and third ar)-.15 F
-(guments)-.18 E 1.332(as operands.)180 286.8 R(The)6.332 E F2<ad61>3.832
-E F0(and)3.832 E F2<ad6f>3.832 E F0 1.333
+(guments)-.18 E 1.333(as operands.)180 717.6 R(The)6.333 E F1<ad61>3.833
+E F0(and)3.833 E F1<ad6f>3.832 E F0 1.332
(operators are considered binary operators when there are)3.832 F .558
-(three ar)180 298.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
+(three ar)180 729.6 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
+F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
.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
-310.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 322.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 334.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
-346.8 S -.18(rg)-2.5 G(uments).18 E .384(If the \214rst ar)180 358.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 370.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
-382.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 394.8 S 2.5(rm)-2.5 G(ore ar)
--2.5 E(guments)-.18 E 1.635(The e)180 406.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
-418.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 436.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 453.6 Q F0
-1.229(Print the accumulated user and system times for the shell and for\
- processes run from the shell.)144 453.6 R(The return status is 0.)144
-465.6 Q F2(trap)108 482.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 494.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 506.4 R F1(sigspec)3.108 E F0 3.108
-(\)o)C(r)-3.108 E F2<ad>3.108 E F0 3.108(,e)C .608
-(ach speci\214ed signal is reset to its original disposition)-3.108 F
-.658(\(the v)144 518.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 530.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 F2<ad70>3.08 E F0(has)3.08 E 1.214
-(been supplied, then the trap commands associated with each)144 542.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 554.4 R F2<ad70>3.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 566.4 R F2<ad6c>2.83 E F0 .33(option causes the shell \
-to print a list of signal names and their corresponding num-)2.83 F
-4.311(bers. Each)144 578.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 590.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 608.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 620.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 632.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 644.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 656.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 668.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 680.4 Q -.15(xe)
--.15 G(cuting.).15 E .96(If a)144 698.4 R F1(sigspec)3.8 E F0(is)3.77 E
-F3(ERR)3.46 E F4(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0
-.961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G
-3.461(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(sin\
-gle simple command\), a list, or a compound command returns a non\255ze\
-ro e)144 710.4 R .184(xit status, subject to)-.15 F 1.92(the follo)144
-722.4 R 1.92(wing conditions.)-.25 F(The)6.92 E F3(ERR)4.42 E F0 1.92
-(trap is not e)4.17 F -.15(xe)-.15 G 1.92(cuted if the f).15 F 1.92
-(ailed command is part of the)-.1 F(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(77)188.455 E 0 Cg EP
+(o-ar)-.1 E(gument)-.18 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(77)190.395 E 0 Cg EP
%%Page: 78 78
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .464
-(command list immediately follo)144 84 R .464(wing a)-.25 F/F1 10
-/Times-Bold@0 SF(while)2.964 E F0(or)2.964 E F1(until)2.964 E F0 -.1(ke)
-2.964 G(yw)-.05 E .464(ord, part of the test in an)-.1 F/F2 10
-/Times-Italic@0 SF(if)2.973 E F0(statement,)4.923 E .711
-(part of a command e)144 96 R -.15(xe)-.15 G .711(cuted in a).15 F F1
-(&&)3.211 E F0(or)3.211 E F1(||)3.212 E F0 .712(list e)3.212 F .712
-(xcept the command follo)-.15 F .712(wing the \214nal)-.25 F F1(&&)3.212
-E F0(or)3.212 E F1(||)3.212 E F0(,)A(an)144 108 Q 2.777(yc)-.15 G .276
-(ommand in a pipeline b)-2.777 F .276(ut the last, or if the command')
--.2 F 2.776(sr)-.55 G .276(eturn v)-2.776 F .276(alue is being in)-.25 F
--.15(ve)-.4 G .276(rted using).15 F F1(!)2.776 E F0(.)A
-(These are the same conditions obe)144 120 Q(yed by the)-.15 E F1(err)
-2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5(\)o)C(ption.)-2.5 E 1.095
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .521
+(test using the second and third ar)180 84 R 3.021(guments. If)-.18 F
+.521(the \214rst ar)3.021 F .52(gument is e)-.18 F(xactly)-.15 E/F1 10
+/Times-Bold@0 SF(\()3.02 E F0 .52(and the third)3.02 F(ar)180 96 Q .485
+(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 2.985(,t)C .485
+(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18
+F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 108 Q
+(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 120 S -.18(rg)-2.5 G
+(uments).18 E .385(If the \214rst ar)180 132 R .385(gument is)-.18 F F1
+(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15
+G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384
+(xpression com-)-.15 F .284(posed of the remaining ar)180 144 R 2.784
+(guments. Otherwise,)-.18 F .284(the e)2.784 F .284
+(xpression is parsed and e)-.15 F -.25(va)-.25 G .285(luated ac-).25 F
+(cording to precedence using the rules listed abo)180 156 Q -.15(ve)-.15
+G(.).15 E 2.5(5o)144 168 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 E
+1.635(The e)180 180 R 1.635(xpression is parsed and e)-.15 F -.25(va)
+-.25 G 1.635(luated according to precedence using the rules listed).25 F
+(abo)180 192 Q -.15(ve)-.15 G(.).15 E(When used with)144 210 Q F1(test)
+2.5 E F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5
+E F1(>)2.5 E F0(operators sort le)2.5 E
+(xicographically using ASCII ordering.)-.15 E F1(times)108 226.8 Q F0
+1.229(Print the accumulated user and system times for the shell and for\
+ processes run from the shell.)144 226.8 R(The return status is 0.)144
+238.8 Q F1(trap)108 255.6 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
+/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])
+2.5 E .683(The command)144 267.6 R F2(ar)3.513 E(g)-.37 E F0 .683
+(is to be read and e)3.403 F -.15(xe)-.15 G .682
+(cuted when the shell recei).15 F -.15(ve)-.25 G 3.182(ss).15 G
+(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G(f)-5.682 E F2
+(ar)3.512 E(g)-.37 E F0(is)3.402 E .608(absent \(and there is a single)
+144 279.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F1<ad>3.108 E
+F0 3.108(,e)C .608
+(ach speci\214ed signal is reset to its original disposition)-3.108 F
+.659(\(the v)144 291.6 R .659(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658
+(is the null string the signal speci\214ed by each)3.378 F F2(sigspec)
+144.34 303.6 Q F0 .58(is ignored by the shell and by the commands it in)
+3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E
+F0 .581(is not present and)3.301 F F1<ad70>3.081 E F0(has)3.081 E 1.215
+(been supplied, then the trap commands associated with each)144 315.6 R
+F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214
+F(gu-)-.18 E .86(ments are supplied or if only)144 327.6 R F1<ad70>3.36
+E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
+(prints the list of commands associated with each)3.36 F 2.83
+(signal. The)144 339.6 R F1<ad6c>2.83 E F0 .33(option causes the shell \
+to print a list of signal names and their corresponding num-)2.83 F 4.31
+(bers. Each)144 351.6 R F2(sigspec)4.65 E F0 1.811
+(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811
+(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E
+(names are case insensiti)144 363.6 Q .3 -.15(ve a)-.25 H(nd the).15 E
+/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667
+(If a)144 381.6 R F2(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0
+.667(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386
+F -.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F
+.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09
+(BU)144 393.6 S(G).09 E/F4 9/Times-Roman@0 SF(,)A F0 .483(the command)
+2.733 F F2(ar)3.313 E(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484
+(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 .484(simple command)
+2.984 F F0(,)A F2(for)2.984 E F0(command,)2.984 E F2(case)2.984 E F0
+(command,)2.984 E F2(select)144 405.6 Q F0 .563(command, e)3.063 F -.15
+(ve)-.25 G .563(ry arithmetic).15 F F2(for)3.063 E F0 .563
+(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562
+(cutes in a shell).15 F .622(function \(see)144 417.6 R F3 .622
+(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15
+F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0
+.622(option to the)3.122 F F1(shopt)144 429.6 Q F0 -.2(bu)2.996 G .496
+(iltin for details of its ef).2 F .496(fect on the)-.25 F F1(DEB)2.996 E
+(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E F2(sigspec)3.336 E F0(is)
+3.306 E F3(RETURN)2.996 E F4(,)A F0 .496(the command)2.746 F F2(ar)
+144.33 441.6 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18
+(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18
+(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E
+F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 453.6 S
+(cuting.).15 E .961(If a)144 471.6 R F2(sigspec)3.801 E F0(is)3.771 E F3
+(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E
+F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25
+G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\
+gle simple command\), a list, or a compound command returns a non\255ze\
+ro e)144 483.6 R .185(xit status, subject to)-.15 F .452(the follo)144
+495.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451
+(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451
+(ailed command is part of the com-)-.1 F .387
+(mand list immediately follo)144 507.6 R .387(wing a)-.25 F F1(while)
+2.887 E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
+(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388
+(statement, part)4.848 F .778(of a command e)144 519.6 R -.15(xe)-.15 G
+.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778
+(list e)3.278 F .778(xcept the command follo)-.15 F .778
+(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0
+3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 531.6 R
+1.28(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)
+-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F
+F1(!)3.78 E F0(.)A(These are the same conditions obe)144 543.6 Q
+(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5
+(\)o)C(ption.)-2.5 E .133
(Signals ignored upon entry to the shell cannot be trapped or reset.)144
-138 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 150 R .662
-(alues in a subshell or subshell en)-.25 F .661(vironment when one is)
--.4 F 2.5(created. The)144 162 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
-178.8 Q F0([)2.5 E F1(\255aftpP)A F0(])A F2(name)2.5 E F0([)2.5 E F2
-(name)A F0(...])2.5 E -.4(Wi)144 190.8 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
-F1<ad74>144 202.8 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 214.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 F2
-(name)2.947 E F0 .087(is not)2.767 F .119
-(found, then nothing is printed, and an e)144 226.8 R .118
-(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
-F1<ad70>2.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 238.8 R .855
+561.6 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117
+(ing ignored are reset to their original v)144 573.6 R .117
+(alues in a subshell or subshell en)-.25 F .117
+(vironment when one is cre-)-.4 F 2.5(ated. The)144 585.6 R
+(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(sigspec)2.84 E F0
+(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F1(trap)2.5 E F0
+(returns true.)2.5 E F1(type)108 602.4 Q F0([)2.5 E F1(\255aftpP)A F0(])
+A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 614.4 S
+.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2
+(name)3.034 E F0 -.1(wo)2.854 G .173
+(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F
+F1<ad74>144 626.4 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0
+.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E
+F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0
+(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2
+(\214le)5.125 E F0(if)3.395 E F2(name)144.36 638.4 Q F0 .087
+(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087
+(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15
+(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2
+(name)2.946 E F0 .086(is not)2.766 F .118
+(found, then nothing is printed, and an e)144 650.4 R .118
+(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F
+F1<ad70>2.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855
+(either returns the name of the disk \214le that w)144 662.4 R .855
(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0
-.855(were speci\214ed as a com-)3.535 F .641(mand name, or nothing if)
-144 250.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 F2(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
-F1<ad50>3.14 E F0 .64(option forces a)3.14 F/F4 9/Times-Bold@0 SF -.666
-(PA)3.14 G(TH)-.189 E F0 .112(search for each)144 262.8 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 F3 .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 F1<ad70>2.613 E F0(and)144 274.8 Q F1<ad50>
-3.231 E F0 .731(print the hashed v)3.231 F .73
+.855(were speci\214ed as a com-)3.535 F .528(mand name, or nothing if)
+144 674.4 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028
+G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528
+E F1<ad50>3.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G
+(TH)-.189 E F0 .007(search for each)144 686.4 R F2(name)2.507 E F0 2.507
+(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name)
+2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0
+5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1
+<ad70>2.506 E F0(and)144 698.4 Q F1<ad50>3.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 F4 -.666(PA)3.23 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .73(If the)
-5.23 F F1<ad61>144 286.8 Q F0 1.748(option is used,)4.248 F F1(type)
-4.248 E F0 1.748(prints all of the places that contain an e)4.248 F -.15
-(xe)-.15 G 1.748(cutable named).15 F F2(name)4.249 E F0 6.749(.T).18 G
-(his)-6.749 E .744(includes aliases and functions, if and only if the)
-144 298.8 R F1<ad70>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 310.8 R F1<ad61>3.723 E F0
-6.223(.T)C(he)-6.223 E F1<ad66>3.723 E F0 1.223
-(option suppresses shell function lookup, as)3.723 F .326(with the)144
-322.8 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 334.8 Q F1(ulimit)108 351.6 Q F0([)2.5 E F1
-(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F2(limit)A F0(]])A(Pro)144
-363.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
+F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1<ad61>
+144 710.4 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824
+(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823
+(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-)
+-5.823 F 1.176(cludes aliases and functions, if and only if the)144
+722.4 R F1<ad70>3.676 E F0 1.176(option is not also used.)3.676 F 1.177
+(The table of hashed)6.176 F(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(78)190.395 E 0 Cg EP
+%%Page: 79 79
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.223
+(commands is not consulted when using)144 84 R/F1 10/Times-Bold@0 SF
+<ad61>3.723 E F0 6.223(.T)C(he)-6.223 E F1<ad66>3.723 E F0 1.223
+(option suppresses shell function lookup, as)3.723 F .325(with the)144
+96 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type)5.325 E F0
+.325(returns true if all of the ar)2.825 F .326(guments are found, f)
+-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326(re not)-2.826 F
+(found.)144 108 Q F1(ulimit)108 124.8 Q F0([)2.5 E F1(\255HS)A F0(])A F1
+<ad61>2.5 E(ulimit)108 136.8 Q F0([)2.5 E F1(\255HS)A F0 2.5(][)C F1
+(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E/F2 10
+/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 148.8 Q .244(vides control o)
+-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25
+(va)-.2 G .244
(ilable to the shell and to processes started by it, on systems).25 F
-.944(that allo)144 375.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
-(The)5.944 E F1<ad48>3.444 E F0(and)3.444 E F1<ad53>3.444 E F0 .943
+.943(that allo)144 160.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
+(The)5.943 E F1<ad48>3.443 E F0(and)3.443 E F1<ad53>3.444 E F0 .944
(options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 387.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
+144 172.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208
(hard limit cannot be increased by a non-root user once it is set; a so\
-ft limit may)2.708 F .426(be increased up to the v)144 399.6 R .426
-(alue of the hard limit.)-.25 F .425(If neither)5.426 F F1<ad48>2.925 E
-F0(nor)2.925 E F1<ad53>2.925 E F0 .425
-(is speci\214ed, both the soft and)2.925 F .139(hard limits are set.)144
-411.6 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 184.8 R .425
+(alue of the hard limit.)-.25 F .426(If neither)5.425 F F1<ad48>2.926 E
+F0(nor)2.926 E F1<ad53>2.926 E F0 .426
+(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144
+196.8 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
(can be a number in the unit speci\214ed for the resource or one)3.319 F
-.742(of the special v)144 423.6 R(alues)-.25 E F1(hard)3.242 E F0(,)A F1
+.741(of the special v)144 208.8 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
-C .741(hich stand for the current hard limit, the current)-3.241 F .78
-(soft limit, and no limit, respecti)144 435.6 R -.15(ve)-.25 G(ly).15 E
-5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78
-(is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25
-F .499(resource is printed, unless the)144 447.6 R F1<ad48>2.999 E F0
-.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498
-(more than one resource is speci\214ed, the)2.999 F
-(limit name and unit are printed before the v)144 459.6 Q 2.5
-(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1
-<ad61>144 471.6 Q F0(All current limits are reported)180 471.6 Q F1
-<ad62>144 483.6 Q F0(The maximum sock)180 483.6 Q(et b)-.1 E(uf)-.2 E
-(fer size)-.25 E F1<ad63>144 495.6 Q F0
-(The maximum size of core \214les created)180 495.6 Q F1<ad64>144 507.6
-Q F0(The maximum size of a process')180 507.6 Q 2.5(sd)-.55 G(ata se)
--2.5 E(gment)-.15 E F1<ad65>144 519.6 Q F0
-(The maximum scheduling priority \("nice"\))180 519.6 Q F1<ad66>144
-531.6 Q F0
+C .741(hich stand for the current hard limit, the current)-3.241 F .024
+(soft limit, and no limit, respecti)144 220.8 R -.15(ve)-.25 G(ly).15 E
+5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023
+(is omitted, the current v)3.203 F .023
+(alue of the soft limit of the re-)-.25 F .984
+(source is printed, unless the)144 232.8 R F1<ad48>3.484 E F0 .984
+(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985
+(more than one resource is speci\214ed, the)3.484 F .7
+(limit name and unit, if appropriate, are printed before the v)144 244.8
+R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144
+256.8 Q(ws:)-.25 E F1<ad61>144 268.8 Q F0
+(All current limits are reported; no limits are set)180 268.8 Q F1<ad62>
+144 280.8 Q F0(The maximum sock)180 280.8 Q(et b)-.1 E(uf)-.2 E
+(fer size)-.25 E F1<ad63>144 292.8 Q F0
+(The maximum size of core \214les created)180 292.8 Q F1<ad64>144 304.8
+Q F0(The maximum size of a process')180 304.8 Q 2.5(sd)-.55 G(ata se)
+-2.5 E(gment)-.15 E F1<ad65>144 316.8 Q F0
+(The maximum scheduling priority \("nice"\))180 316.8 Q F1<ad66>144
+328.8 Q F0
(The maximum size of \214les written by the shell and its children)180
-531.6 Q F1<ad69>144 543.6 Q F0(The maximum number of pending signals)180
-543.6 Q F1<ad6b>144 555.6 Q F0
-(The maximum number of kqueues that may be allocated)180 555.6 Q F1
-<ad6c>144 567.6 Q F0(The maximum size that may be lock)180 567.6 Q
-(ed into memory)-.1 E F1<ad6d>144 579.6 Q F0
-(The maximum resident set size \(man)180 579.6 Q 2.5(ys)-.15 G
-(ystems do not honor this limit\))-2.5 E F1<ad6e>144 591.6 Q F0 .791(Th\
+328.8 Q F1<ad69>144 340.8 Q F0(The maximum number of pending signals)180
+340.8 Q F1<ad6b>144 352.8 Q F0
+(The maximum number of kqueues that may be allocated)180 352.8 Q F1
+<ad6c>144 364.8 Q F0(The maximum size that may be lock)180 364.8 Q
+(ed into memory)-.1 E F1<ad6d>144 376.8 Q F0
+(The maximum resident set size \(man)180 376.8 Q 2.5(ys)-.15 G
+(ystems do not honor this limit\))-2.5 E F1<ad6e>144 388.8 Q F0 .791(Th\
e maximum number of open \214le descriptors \(most systems do not allo)
-180 591.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
-(be set\))180 603.6 Q F1<ad70>144 615.6 Q F0
-(The pipe size in 512-byte blocks \(this may not be set\))180 615.6 Q F1
-<ad71>144 627.6 Q F0
-(The maximum number of bytes in POSIX message queues)180 627.6 Q F1
-<ad72>144 639.6 Q F0(The maximum real-time scheduling priority)180 639.6
-Q F1<ad73>144 651.6 Q F0(The maximum stack size)180 651.6 Q F1<ad74>144
-663.6 Q F0(The maximum amount of cpu time in seconds)180 663.6 Q F1
-<ad75>144 675.6 Q F0(The maximum number of processes a)180 675.6 Q -.25
-(va)-.2 G(ilable to a single user).25 E F1<ad76>144 687.6 Q F0 .47
-(The maximum amount of virtual memory a)180 687.6 R -.25(va)-.2 G .47
+180 388.8 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
+(be set\))180 400.8 Q F1<ad70>144 412.8 Q F0
+(The pipe size in 512-byte blocks \(this may not be set\))180 412.8 Q F1
+<ad71>144 424.8 Q F0
+(The maximum number of bytes in POSIX message queues)180 424.8 Q F1
+<ad72>144 436.8 Q F0(The maximum real-time scheduling priority)180 436.8
+Q F1<ad73>144 448.8 Q F0(The maximum stack size)180 448.8 Q F1<ad74>144
+460.8 Q F0(The maximum amount of cpu time in seconds)180 460.8 Q F1
+<ad75>144 472.8 Q F0(The maximum number of processes a)180 472.8 Q -.25
+(va)-.2 G(ilable to a single user).25 E F1<ad76>144 484.8 Q F0 .47
+(The maximum amount of virtual memory a)180 484.8 R -.25(va)-.2 G .47
(ilable to the shell and, on some systems, to).25 F(its children)180
-699.6 Q F1<ad78>144 711.6 Q F0(The maximum number of \214le locks)180
-711.6 Q(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(78)188.455 E 0
-Cg EP
-%%Page: 79 79
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
-SF<ad50>144 84 Q F0(The maximum number of pseudoterminals)180 84 Q F1
-<ad54>144 96 Q F0(The maximum number of threads)180 96 Q(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 F1<ad61>2.968 E F0 .468
-(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F
-2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468
-E .045(no option is gi)144 124.8 R -.15(ve)-.25 G .045(n, then).15 F F1
-<ad66>2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+496.8 Q F1<ad78>144 508.8 Q F0(The maximum number of \214le locks)180
+508.8 Q F1<ad50>144 520.8 Q F0(The maximum number of pseudoterminals)180
+520.8 Q F1<ad52>144 532.8 Q F0(The maximum time a real-time process can\
+ run before blocking, in microseconds)180 532.8 Q F1<ad54>144 544.8 Q F0
+(The maximum number of threads)180 544.8 Q(If)144 561.6 Q F2(limit)3.058
+E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the).15 F F1<ad61>
+2.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 E F0 .468
+(is the ne)2.968 F 2.968(wv)-.25 G .468
+(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045
+(no option is gi)144 573.6 R -.15(ve)-.25 G .045(n, then).15 F F1<ad66>
+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
-<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144
-136.8 R F1<ad70>4.088 E F0 4.089(,w)C 1.589
-(hich is in units of 512-byte blocks;)-4.089 F F1<ad50>4.089 E F0(,)A F1
-<ad54>4.089 E F0(,)A F1<ad62>4.089 E F0(,)A F1<ad6b>4.089 E F0(,)A F1
-<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F1<ad75>4.089 E F0 4.089(,w)C
-1.589(hich are)-4.089 F 1.476(unscaled v)144 148.8 R 1.476
-(alues; and, when in posix mode,)-.25 F F1<ad63>3.976 E F0(and)3.976 E
-F1<ad66>3.976 E F0 3.976(,w)C 1.476(hich are in 512-byte increments.)
--3.976 F(The)6.476 E .404(return status is 0 unless an in)144 160.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
-172.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 189.6 Q F0([)2.5 E
-F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A
-.2(The user \214le-creation mask is set to)144 201.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
+<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144
+585.6 R F1<ad52>3.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F
+F1<ad70>3.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;)
+-3.17 F F1<ad50>3.17 E F0(,)A F1<ad54>3.17 E F0(,)A F1<ad62>3.17 E F0(,)
+A F1<ad6b>144 597.6 Q F0(,)A F1<ad6e>3.737 E F0 3.737(,a)C(nd)-3.737 E
+F1<ad75>3.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236
+(alues; and, when in posix mode,)-.25 F F1<ad63>3.736 E F0(and)3.736 E
+F1<ad66>3.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238
+(512-byte increments.)144 609.6 R .238
+(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238
+(lid option or ar).25 F .238(gument is supplied, or an)-.18 F
+(error occurs while setting a ne)144 621.6 Q 2.5(wl)-.25 G(imit.)-2.5 E
+F1(umask)108 638.4 Q F0([)2.5 E F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0
+2.5(][)C F2(mode)-2.5 E F0(])A .18
+(The user \214le-creation mask is set to)144 650.4 R F2(mode)3.06 E F0
+5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18
(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
therwise it is interpreted as a symbolic mode mask similar to that acce\
-pted by)144 213.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-225.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
+pted by)144 662.4 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
+674.4 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
(alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
(option causes the mask to be)2.882 F .547
-(printed in symbolic form; the def)144 237.6 R .547
+(printed in symbolic form; the def)144 686.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 F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 249.6 Q F0 .552
+(mode)144.38 698.4 Q F0 .552
(is omitted, the output is in a form that may be reused as input.)3.232
-F .551(The return status is 0 if the)5.551 F(mode w)144 261.6 Q
+F .551(The return status is 0 if the)5.551 F(mode w)144 710.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 278.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 290.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
-F1<ad61>4.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155
-F(remo)144 302.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
+(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E
+(GNU Bash 5.1)72 768 Q(2020 October 29)141.235 E(79)190.395 E 0 Cg EP
+%%Page: 80 80
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(unalias)108 84 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C/F2 10
+/Times-Italic@0 SF(name)-2.5 E F0(...])2.5 E(Remo)144 96 Q 1.057 -.15
+(ve e)-.15 H(ach).15 E F2(name)3.257 E F0 .757
+(from the list of de\214ned aliases.)3.257 F(If)5.758 E F1<ad61>3.258 E
+F0 .758(is supplied, all alias de\214nitions are re-)3.258 F(mo)144 108
+Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
(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 319.2 Q F0<5bad>2.5 E F1
+(is not a de\214ned alias.)2.68 E F1(unset)108 124.8 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...])
-2.5 E -.15(Fo)144 331.2 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 F1<ad76>3.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 343.2 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 355.2 R F1
-<ad66>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 367.2 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1<ad6e>
-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 379.2 R .492(ariable it references.)-.25
-F F1<ad6e>5.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1
-<ad66>2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22
-(options are supplied, each)144 391.2 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 403.2 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 415.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.456 E F4(,)A F3(SECONDS)5.456 E
-F4(,)A F3(LINENO)144 427.2 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
-439.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 456 Q
-F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144
-468 S .659(it for each speci\214ed child process and return its termina\
-tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process)
-3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 480 R
--.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G
-.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)
--5.008 E F2(id)144.01 492 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G
-.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521
-(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521
-(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 504 Q F1
-<ad6e>3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1
-(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557
-(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556
-(If the)5.556 F F1<ad66>3.056 E F0 .586
-(option is supplied, and job control is enabled,)144 516 R F1(wait)3.086
-E F0(forces)3.086 E F2(id)3.086 E F0 .587
-(to terminate before returning its sta-)3.086 F .756
-(tus, instead of returning when it changes status.)144 528 R(If)5.756 E
-F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755
-(xistent process or job, the)-.15 F .365(return status is 127.)144 540 R
-.365(Otherwise, the return status is the e)5.365 F .365
-(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 552
-Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 568.8 Q F0(If)
-108 580.8 Q F1(bash)4.397 E F0 1.897(is started with the name)4.397 F F1
-(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1<ad72>4.397
-E F0 1.896(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896
-(cation, the shell becomes).2 F 3.445(restricted. A)108 592.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 604.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1
-(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
-(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 621.6 Q
-(changing directories with)144 621.6 Q F1(cd)2.5 E F0<83>108 638.4 Q
-(setting or unsetting the v)144 638.4 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 655.2 Q
-(specifying command names containing)144 655.2 Q F1(/)2.5 E F0<83>108
-672 Q(specifying a \214lename containing a)144 672 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 688.8 Q .45
-(specifying a \214lename containing a slash as an ar)144 688.8 R .449
-(gument to the)-.18 F F1<ad70>2.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 700.8 Q
-<83>108 717.6 Q(importing function de\214nitions from the shell en)144
-717.6 Q(vironment at startup)-.4 E(GNU Bash 5.0)72 768 Q
-(2018 December 7)139.295 E(79)188.455 E 0 Cg EP
-%%Page: 80 80
+2.5 E -.15(Fo)144 136.8 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0
+3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304
+(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303
+(If the)6.303 F F1<ad76>3.803 E F0 1.303(option is gi)3.803 F -.15(ve)
+-.25 G 1.303(n, each).15 F F2(name)144.36 148.8 Q F0 .464
+(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464
+(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va)
+2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 160.8 R F1
+<ad66>2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0
+.269(refers to a shell function, and the function de\214nition is remo)
+2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 172.8 R F1<ad6e>2.903 E
+F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v)
+2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0
+(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F
+.72(rather than the v)144 184.8 R .72(ariable it references.)-.25 F F1
+<ad6e>5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1<ad66>
+3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F
+.736(are supplied, each)144 196.8 R F2(name)3.236 E F0 .736
+(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737
+(ariable by that name, a function with)-.25 F 1.762(that name, if an)144
+208.8 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F
+1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve)
+-.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171
+(passed to subsequent commands.)144 220.8 R 3.172(If an)8.172 F 5.672
+(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES)
+.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A
+F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 232.8 S
+(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3
+-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E
+F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
+144 244.8 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
+2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67
+E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144
+256.8 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the)
+4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
+-.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya)
+-.15 G 1.779(re subse-)-4.279 F(quently reset.)144 268.8 Q(The e)5 E
+(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E
+(.)-.65 E F1(wait)108 285.6 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1
+<ad70>-2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8
+(Wa)144 297.6 S .659(it for each speci\214ed child process and return i\
+ts termination status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659
+(may be a process)3.929 F .009
+(ID or a job speci\214cation; if a job spec is gi)144 309.6 R -.15(ve)
+-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G .008
+(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)-5.008 E
+F2(id)144.01 321.6 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,).15 E
+F1(wait)2.941 E F0 -.1(wa)2.941 G .441
+(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G
+.442(cuted process substitu-).15 F .598
+(tion, if its process id is the same as)144 333.6 R F1($!)3.098 E F0
+3.098(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597
+F F1<ad6e>3.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 345.6
+Q F0 -.1(wa)3.082 G .583(its for a single job from the list of).1 F F2
+(id)3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083
+E F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)
+-.15 G .583(ob, to complete and)-3.083 F .404(returns its e)144 357.6 R
+.404(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403
+(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572
+(are supplied and the shell has no unw)144 369.6 R .573
+(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573
+(If the)5.573 F F1<ad70>3.073 E F0 .573(option is)3.073 F .39
+(supplied, the process or job identi\214er of the job for which the e)
+144 381.6 R .39(xit status is returned is assigned to)-.15 F .905(the v)
+144 393.6 R(ariable)-.25 E F2(varname)3.405 E F0 .905
+(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G
+.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E
+(an)144 405.6 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
+(is useful only when the)3.89 F F1<ad6e>3.89 E F0 1.39
+(option is supplied.)3.89 F 1.39(Supplying the)6.39 F F1<ad66>3.89 E F0
+(option,)3.89 E .574(when job control is enabled, forces)144 417.6 R F1
+(wait)3.075 E F0 .575(to w)3.075 F .575(ait for)-.1 F F2(id)3.075 E F0
+.575(to terminate before returning its status, in-)3.075 F .635
+(stead of returning when it changes status.)144 429.6 R(If)5.635 E F2
+(id)3.145 E F0 .635(speci\214es a non-e)3.905 F .635
+(xistent process or job, the return)-.15 F(status is 127.)144 441.6 Q
+(Otherwise, the return status is the e)5 E
+(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E
+/F5 10.95/Times-Bold@0 SF(SHELL COMP)72 458.4 Q -1.04(AT)-.81 G
+(IBILITY MODE)1.04 E F0 .911
+(Bash-4.0 introduced the concept of a `shell compatibility le)108 470.4
+R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt)
+.15 F -.2(bu)108 482.4 S(iltin).2 E F1(compat31)3.378 E F0(,)A F1
+(compat32)3.378 E F0(,)A F1(compat40)3.378 E F0(,)A F1(compat41)3.378 E
+F0 3.378(,a)C .878(nd so on\).)-3.378 F .877
+(There is only one current compatibility)5.878 F(le)108 494.4 Q -.15(ve)
+-.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e)
+-3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753
+(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si)
+-3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754
+(sers to select be-)-3.254 F(ha)108 506.4 Q 1.084(vior from pre)-.2 F
+1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
+1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083
+(igrate scripts to use)-3.583 F(current features and beha)108 518.4 Q
+(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
+(ntended to be a temporary solution.)-2.5 E 1.456
+(This section does not mention beha)108 535.2 R 1.457
+(vior that is standard for a particular v)-.2 F 1.457
+(ersion \(e.g., setting)-.15 F F1(compat32)3.957 E F0 .887
+(means that quoting the rhs of the re)108 547.2 R(ge)-.15 E .886
+(xp matching operator quotes special re)-.15 F(ge)-.15 E .886
+(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 559.2 Q
+(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E
+.522(If a user enables, say)108 576 R(,)-.65 E F1(compat32)3.023 E F0
+3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25
+F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523
+(ls up to and includ-).15 F .26(ing the current compatibility le)108 588
+R -.15(ve)-.25 G 2.76(l. The).15 F .259
+(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15
+G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645
+(in that v)108 600 R 1.646(ersion of)-.15 F F1(bash)4.146 E F0 4.146(,b)
+C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15(ve b)
+-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F 1.646
+(or instance, the)-.15 F .761
+(change to use locale-based comparisons with the)108 612 R F1([[)3.261 E
+F0 .76(command came in bash-4.1, and earlier v)3.261 F .76(ersions used)
+-.15 F 1.904(ASCII-based comparisons, so enabling)108 624 R F1(compat32)
+4.404 E F0 1.905(will enable ASCII-based comparisons as well.)4.404 F
+(That)6.905 E .296(granularity may not be suf)108 636 R .296
+(\214cient for all uses, and as a result users should emplo)-.25 F 2.796
+(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15
+F(fully)108 648 Q 5(.R)-.65 G(ead the documentation for a particular fe\
+ature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531
+(Bash-4.3 introduced a ne)108 664.8 R 3.031(ws)-.25 G .531(hell v)-3.031
+F(ariable:)-.25 E F3 -.27(BA)3.031 G(SH_COMP).27 E -.855(AT)-.666 G F4
+(.).855 E F0 .531(The v)5.031 F .531(alue assigned to this v)-.25 F .532
+(ariable \(a decimal)-.25 F -.15(ve)108 676.8 S .108(rsion number lik)
+.15 F 2.608(e4)-.1 G .108(.2, or an inte)-2.608 F .108
+(ger corresponding to the)-.15 F F1(compat)2.607 E F2(NN)A F0 .107
+(option, lik)2.607 F 2.607(e4)-.1 G .107(2\) determines the com-)-2.607
+F(patibility le)108 688.8 Q -.15(ve)-.25 G(l.).15 E .387
+(Starting with bash-4.4, Bash has be)108 705.6 R .388
+(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888
+(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will)
+-2.888 F(be remo)108 717.6 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G
+-.2(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F3 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F4(.).855 E F0(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(80)190.395 E 0 Cg EP
+%%Page: 81 81
%%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
-(parsing the v)144 84 Q(alue of)-.25 E/F1 9/Times-Bold@0 SF(SHELLOPTS)
-2.5 E F0(from the shell en)2.25 E(vironment at startup)-.4 E<83>108
-100.8 Q(redirecting output using the >, >|, <>, >&, &>, and >> redirect\
-ion operators)144 100.8 Q<83>108 117.6 Q(using the)144 117.6 Q/F2 10
-/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.164
+(Bash-5.0 is the \214nal v)108 84 R 1.164
+(ersion for which there will be an indi)-.15 F 1.163
+(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.)
+-.15 E(Users should use)108 96 Q/F1 9/Times-Bold@0 SF -.27(BA)2.5 G
+(SH_COMP).27 E -.855(AT)-.666 G F0(on bash-5.0 and later v)3.105 E
+(ersions.)-.15 E 1.613(The follo)108 112.8 R 1.613
+(wing table describes the beha)-.25 F 1.613
+(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G
+4.113(ls).15 G 4.114(etting. The)-4.113 F/F2 10/Times-Bold@0 SF(compat)
+108 124.8 Q/F3 10/Times-Italic@0 SF(NN)A F0 1.186
+(tag is used as shorthand for setting the compatibility le)3.686 F -.15
+(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F3(NN)3.686 E F0 1.186
+(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108
+136.8 R 1.306(or v)-.15 F 1.306
+(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G
+3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F2
+(compat)108 148.8 Q F3(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
+G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the)
+-.15 F F1 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
+3.607 G .502(riable is preferred, and it).25 F
+(is required for bash-5.1 and later v)108 160.8 Q(ersions.)-.15 E F2
+(compat31)108 177.6 Q F0<83>144 189.6 Q(quoting the rhs of the)180 189.6
+Q F2([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15
+G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)
+-.25 E F2(compat32)108 206.4 Q F0<83>144 218.4 Q .35
+(interrupting a command list such as "a ; b ; c" causes the e)180 218.4
+R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018
+(in the list \(in bash-4.0 and later v)180 230.4 R .018
+(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt)
+.15 G .017(he interrupt, so in-)-2.517 F
+(terrupting one command in a list aborts the e)180 242.4 Q -.15(xe)-.15
+G(cution of the entire list\)).15 E F2(compat40)108 259.2 Q F0<83>144
+271.2 Q(the)180 271.2 Q F2(<)2.673 E F0(and)2.673 E F2(>)2.673 E F0 .173
+(operators to the)2.673 F F2([[)2.673 E F0 .173
+(command do not consider the current locale when compar)2.673 F(-)-.2 E
+.068(ing strings; the)180 283.2 R 2.568(yu)-.15 G .068
+(se ASCII ordering.)-2.568 F .068(Bash v)5.068 F .067
+(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 295.2 Q F3
+(str)4.742 E(cmp)-.37 E F0 1.902
+(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G
+1.903(ollation sequence and)-4.403 F F3(str)4.743 E(-)-.2 E(coll)180
+307.2 Q F0(\(3\).).51 E F2(compat41)108 324 Q F0<83>144 336 Q(in)180 336
+Q F3(posix)3.79 E F0(mode,)3.79 E F2(time)3.79 E F0 1.29(may be follo)
+3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F
+(ed)-.15 E -.1(wo)180 348 S(rd \(this is POSIX interpretation 267\)).1 E
+<83>144 360 Q(in)180 360 Q F3(posix)2.708 E F0 .208
+(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15
+G .208(umber of single quotes occur in the)-2.708 F F3(wor)2.709 E(d)
+-.37 E F0 .282(portion of a double-quoted parameter e)180 372 R .282
+(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot)
+-2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\
+nsidered quoted \(this is POSIX interpretation 221\))180 384 Q F2
+(compat42)108 400.8 Q F0<83>144 412.8 Q 1.055(the replacement string in\
+ double-quoted pattern substitution does not under)180 412.8 R 1.056
+(go quote re-)-.18 F(mo)180 424.8 Q -.25(va)-.15 G(l, as it does in v)
+.25 E(ersions after bash-4.2)-.15 E<83>144 436.8 Q .021
+(in posix mode, single quotes are considered special when e)180 436.8 R
+.021(xpanding the)-.15 F F3(wor)2.52 E(d)-.37 E F0 .02(portion of a)2.52
+F .017(double-quoted parameter e)180 448.8 R .017
+(xpansion and can be used to quote a closing brace or other spe-)-.15 F
+.999(cial character \(this is part of POSIX interpretation 221\); in la\
+ter v)180 460.8 R .998(ersions, single quotes)-.15 F
+(are not special within double-quoted w)180 472.8 Q(ord e)-.1 E
+(xpansions)-.15 E F2(compat43)108 489.6 Q F0<83>144 501.6 Q 1.07
+(the shell does not print a w)180 501.6 R 1.071
+(arning message if an attempt is made to use a quoted com-)-.1 F .249
+(pound assignment as an ar)180 513.6 R .248
+(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248
+(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 525.6 Q
+<83>144 537.6 Q -.1(wo)180 537.6 S .5(rd e).1 F .501
+(xpansion errors are considered non-f)-.15 F .501
+(atal errors that cause the current command to)-.1 F -.1(fa)180 549.6 S
+.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605
+(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak)
+-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605
+(atal errors that cause the)-.1 F(shell to e)180 561.6 Q(xit\))-.15 E
+<83>144 573.6 Q .354(when e)180 573.6 R -.15(xe)-.15 G .354
+(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355
+(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2
+(continue)180 585.6 Q F0 .052
+(in that function will break or continue loops in the calling conte)
+2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre)
+180 597.6 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 614.4 Q F0<83>
+144 626.4 Q .719(the shell sets up the v)180 626.4 R .719(alues used by)
+-.25 F F1 -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E F1 -.27(BA)3.219
+G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G .719(an e)-3.219
+F(xpand)-.15 E(to the shell')180 638.4 Q 2.5(sp)-.55 G
+(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G
+(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 650.4 Q
+2.635(as)180 650.4 S .135(ubshell inherits loops from its parent conte)
+-2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2
+(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180
+662.4 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre)
+2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 674.4 Q -.25(va)
+180 674.4 S .618(riable assignments preceding b).25 F .618(uiltins lik)
+-.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G
+(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12
+(tinue to af)180 686.4 R .12(fect v)-.25 F .119
+(ariables with the same name in the calling en)-.25 F .119(vironment e)
+-.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is)
+-2.619 F(not in posix mode)180 698.4 Q(GNU Bash 5.1)72 768 Q
+(2020 October 29)141.235 E(81)190.395 E 0 Cg EP
+%%Page: 82 82
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0
+SF(compat50)108 84 Q F0<83>144 96 Q 1.209(Bash-5.1 changed the w)180 96
+R(ay)-.1 E/F2 9/Times-Bold@0 SF($RANDOM)3.709 E F0 1.209
+(is generated to introduce slightly more random-)3.459 F 1.019
+(ness. If the shell compatibility le)180 108 R -.15(ve)-.25 G 3.518(li)
+.15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25 E 3.518
+(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018
+(rts to the method from).25 F .732(bash-5.0 and pre)180 120 R .732
+(vious v)-.25 F .733
+(ersions, so seeding the random number generator by assigning a)-.15 F
+-.25(va)180 132 S(lue to).25 E F2(RANDOM)2.5 E F0
+(will produce the same sequence as in bash-5.0)2.25 E<83>144 144 Q .696
+(If the command hash table is empty)180 144 R 3.196(,b)-.65 G .696
+(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15
+F 1.32(tional message to that ef)180 156 R 1.321(fect, e)-.25 F -.15(ve)
+-.25 G 3.821(nw).15 G 1.321
+(hen producing output that can be reused as input.)-3.821 F
+(Bash-5.1 suppresses that message when the)180 168 Q F1<ad6c>2.5 E F0
+(option is supplied.)2.5 E/F3 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72
+184.8 Q F0(If)108 196.8 Q F1(bash)3.582 E F0 1.081
+(is started with the name)3.581 F F1(rbash)3.581 E F0 3.581(,o)C 3.581
+(rt)-3.581 G(he)-3.581 E F1<ad72>3.581 E F0 1.081
+(option is supplied at in)3.581 F -.2(vo)-.4 G 1.081
+(cation, the shell becomes re-).2 F 2.976(stricted. A)108 208.8 R .476
+(restricted shell is used to set up an en)2.976 F .476
+(vironment more controlled than the standard shell.)-.4 F .477(It be-)
+5.477 F(ha)108 220.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E
+F1(bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E
+(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 237.6 Q
+(changing directories with)144 237.6 Q F1(cd)2.5 E F0<83>108 254.4 Q
+(setting or unsetting the v)144 254.4 Q(alues of)-.25 E F2(SHELL)2.5 E
+/F4 9/Times-Roman@0 SF(,)A F2 -.666(PA)2.25 G(TH)-.189 E F4(,)A F2
+(HISTFILE)2.25 E F4(,)A F2(ENV)2.25 E F4(,)A F0(or)2.25 E F2 -.27(BA)2.5
+G(SH_ENV).27 E F0<83>108 271.2 Q(specifying command names containing)144
+271.2 Q F1(/)2.5 E F0<83>108 288 Q(specifying a \214lename containing a)
+144 288 Q F1(/)2.5 E F0(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E
+F0 -.2(bu)5 G(iltin command).2 E<83>108 304.8 Q
+(specifying a \214lename containing a slash as an ar)144 304.8 Q
+(gument to the)-.18 E F1(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2
+E<83>108 321.6 Q .45
+(specifying a \214lename containing a slash as an ar)144 321.6 R .449
+(gument to the)-.18 F F1<ad70>2.949 E F0 .449(option to the)2.949 F F1
+(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 333.6 Q
+<83>108 350.4 Q(importing function de\214nitions from the shell en)144
+350.4 Q(vironment at startup)-.4 E<83>108 367.2 Q(parsing the v)144
+367.2 Q(alue of)-.25 E F2(SHELLOPTS)2.5 E F0(from the shell en)2.25 E
+(vironment at startup)-.4 E<83>108 384 Q(redirecting output using the >\
+, >|, <>, >&, &>, and >> redirection operators)144 384 Q<83>108 400.8 Q
+(using the)144 400.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G
(iltin command to replace the shell with another command).2 E<83>108
-134.4 Q(adding or deleting b)144 134.4 Q(uiltin commands with the)-.2 E
-F2<ad66>2.5 E F0(and)2.5 E F2<ad64>2.5 E F0(options to the)2.5 E F2
-(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 151.2 Q
-(using the)144 151.2 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 168
-Q(specifying the)144 168 Q F2<ad70>2.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 184.8 Q
-(turning of)144 184.8 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 201.6 Q 2.5(ys)-.15 G
+417.6 Q(adding or deleting b)144 417.6 Q(uiltin commands with the)-.2 E
+F1<ad66>2.5 E F0(and)2.5 E F1<ad64>2.5 E F0(options to the)2.5 E F1
+(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 434.4 Q
+(using the)144 434.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G
+(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108
+451.2 Q(specifying the)144 451.2 Q F1<ad70>2.5 E F0(option to the)2.5 E
+F1(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 468 Q
+(turning of)144 468 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F1
+(set +r)2.5 E F0(or)2.5 E F1(set +o r)2.5 E(estricted)-.18 E F0(.)A
+(These restrictions are enforced after an)108 484.8 Q 2.5(ys)-.15 G
(tartup \214les are read.)-2.5 E 1.566
-(When a command that is found to be a shell script is e)108 218.4 R -.15
-(xe)-.15 G 1.567(cuted \(see).15 F F1 1.567(COMMAND EXECUTION)4.067 F F0
-(abo)3.817 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 230.4 Q F0(turns of)
+(When a command that is found to be a shell script is e)108 501.6 R -.15
+(xe)-.15 G 1.567(cuted \(see).15 F F2 1.567(COMMAND EXECUTION)4.067 F F0
+(abo)3.817 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 513.6 Q F0(turns of)
2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15
-E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E/F3 10.95
-/Times-Bold@0 SF(SEE ALSO)72 247.2 Q/F4 10/Times-Italic@0 SF(Bash Refer)
-108 259.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 271.2 Q
+E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E F3(SEE ALSO)72
+530.4 Q/F5 10/Times-Italic@0 SF(Bash Refer)108 542.4 Q(ence Manual)-.37
+E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F5
+(The Gnu Readline Libr)108 554.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E
+(ox and Chet Rame)-.15 E(y)-.15 E F5(The Gnu History Libr)108 566.4 Q
(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 283.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 295.2 S(rtable Oper).8 E
+F5 -.8(Po)108 578.4 S(rtable Oper).8 E
(ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities)
--.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 307.2 Q
-(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 319.2 Q
-(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh)
-108 331.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A
-F4(emacs)108 343.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108
-355.2 S(adline).37 E F0(\(3\))A F3(FILES)72 372 Q F4(/bin/bash)109.666
-384 Q F0(The)144 396 Q F2(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4
-(/etc/pr)109.666 408 Q(o\214le)-.45 E F0
-(The systemwide initialization \214le, e)144 420 Q -.15(xe)-.15 G
-(cuted for login shells).15 E F4(~/.bash_pr)109.666 432 Q(o\214le)-.45 E
-F0(The personal initialization \214le, e)144 444 Q -.15(xe)-.15 G
-(cuted for login shells).15 E F4(~/.bashr)109.666 456 Q(c)-.37 E F0
-(The indi)144 468 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
-(-shell startup \214le).15 E F4(~/.bash_lo)109.666 480 Q(gout)-.1 E F0
-(The indi)144 492 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
-504 Q(c)-.37 E F0(Indi)144 516 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline)
-.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 532.8 S(THORS).548 E
-F0(Brian F)108 544.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15
-E(bfox@gnu.or)108 556.8 Q(g)-.18 E(Chet Rame)108 573.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 585.6 Q(y@case.edu)-.15 E F3 -.11(BU)72
-602.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .568
-(If you \214nd a b)108 614.4 R .568(ug in)-.2 F F2(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 626.4 R 5.625(ersion of)-.15
-F F2(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 638.4 Q(g/pub/gnu/bash/)-.37
-E F0(.)A .411(Once you ha)108 655.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 667.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 679.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 F2(gnu.bash.b)2.5 E(ug)
--.2 E F0(.)A(ALL b)108 696 Q(ug reports should include:)-.2 E
-(GNU Bash 5.0)72 768 Q(2018 December 7)139.295 E(80)188.455 E 0 Cg EP
-%%Page: 81 81
+-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 590.4 Q
+(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 602.4 Q
+(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F5(sh)
+108 614.4 Q F0(\(1\),)A F5(ksh)2.5 E F0(\(1\),)A F5(csh)2.5 E F0(\(1\))A
+F5(emacs)108 626.4 Q F0(\(1\),)A F5(vi)2.5 E F0(\(1\))A F5 -.37(re)108
+638.4 S(adline).37 E F0(\(3\))A F3(FILES)72 655.2 Q F5(/bin/bash)109.666
+667.2 Q F0(The)144 679.2 Q F1(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E
+F5(/etc/pr)109.666 691.2 Q(o\214le)-.45 E F0
+(The systemwide initialization \214le, e)144 703.2 Q -.15(xe)-.15 G
+(cuted for login shells).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)
+141.235 E(82)190.395 E 0 Cg EP
+%%Page: 83 83
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F
-(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The v)108 84 Q
-(ersion number of)-.15 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0(The hardw)
-108 96 Q(are and operating system)-.1 E(The compiler used to compile)108
-108 Q 2.5(Ad)108 120 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)
--.2 E 2.5(As)108 132 S(hort script or `recipe' which e)-2.5 E -.15(xe)
--.15 G(rcises the b).15 E(ug)-.2 E/F2 10/Times-Italic@0 SF(bashb)108.27
-148.8 Q(ug)-.2 E F0
+(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10
+/Times-Italic@0 SF(~/.bash_pr)109.666 84 Q(o\214le)-.45 E F0
+(The personal initialization \214le, e)144 96 Q -.15(xe)-.15 G
+(cuted for login shells).15 E F1(~/.bashr)109.666 108 Q(c)-.37 E F0
+(The indi)144 120 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G
+(-shell startup \214le).15 E F1(~/.bash_lo)109.666 132 Q(gout)-.1 E F0
+(The indi)144 144 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe)
+-.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr)109.666
+156 Q(c)-.37 E F0(Indi)144 168 Q(vidual)-.25 E F1 -.37(re)2.5 G(adline)
+.37 E F0(initialization \214le)2.5 E/F2 10.95/Times-Bold@0 SF -.548(AU)
+72 184.8 S(THORS).548 E F0(Brian F)108 196.8 Q(ox, Free Softw)-.15 E
+(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 208.8 Q(g)-.18 E
+(Chet Rame)108 225.6 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)
+-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108
+237.6 Q(y@case.edu)-.15 E F2 -.11(BU)72 254.4 S 2.738(GR).11 G(EPOR)
+-2.738 E(TS)-.438 E F0 .568(If you \214nd a b)108 266.4 R .568(ug in)-.2
+F/F3 10/Times-Bold@0 SF(bash,)3.068 E F0 .568(you should report it.)
+3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568
+(ure that it really is a b)-3.068 F .567(ug, and)-.2 F 5.625
+(that it appears in the latest v)108 278.4 R 5.625(ersion of)-.15 F F3
+(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.626
+(ersion is al)-.15 F -.1(wa)-.1 G 5.626(ys a).1 F -.25(va)-.2 G 5.626
+(ilable from).25 F F1(ftp://ftp.gnu.or)108 290.4 Q(g/pub/gnu/bash/)-.37
+E F0(.)A .411(Once you ha)108 307.2 R .711 -.15(ve d)-.2 H .411
+(etermined that a b).15 F .411(ug actually e)-.2 F .411(xists, use the)
+-.15 F F1(bashb)3.18 E(ug)-.2 E F0 .41(command to submit a b)3.13 F .41
+(ug report.)-.2 F(If)5.41 E .594(you ha)108 319.2 R .894 -.15(ve a \214)
+-.2 H .595(x, you are encouraged to mail that as well!).15 F .595
+(Suggestions and `philosophical' b)5.595 F .595(ug reports may)-.2 F
+(be mailed to)108 331.2 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0
+(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F3(gnu.bash.b)2.5 E(ug)
+-.2 E F0(.)A(ALL b)108 348 Q(ug reports should include:)-.2 E(The v)108
+364.8 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 376.8 Q
+(are and operating system)-.1 E(The compiler used to compile)108 388.8 Q
+2.5(Ad)108 400.8 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E
+2.5(As)108 412.8 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G
+(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 429.6 Q(ug)-.2 E F0
(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
-165.6 Q(ug reports concerning this manual page should be directed to)-.2
-E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.)
-.25 E/F3 10.95/Times-Bold@0 SF -.11(BU)72 182.4 S(GS).11 E F0(It')108
-194.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
-(There are some subtle dif)108 211.2 R 1.869(ferences between)-.25 F F1
+446.4 Q(ug reports concerning this manual page should be directed to)-.2
+E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.)
+.25 E F2 -.11(BU)72 463.2 S(GS).11 E F0(It')108 475.2 Q 2.5(st)-.55 G
+(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.869
+(There are some subtle dif)108 492 R 1.869(ferences between)-.25 F F3
(bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F
-F1(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9
-/Times-Bold@0 SF(POSIX)108 223.2 Q F0(speci\214cation.)2.25 E
-(Aliases are confusing in some uses.)108 240 Q(Shell b)108 256.8 Q
+F3(sh)4.368 E F0 4.368(,m)C 1.868(ostly because of the)-4.368 F/F4 9
+/Times-Bold@0 SF(POSIX)108 504 Q F0(speci\214cation.)2.25 E
+(Aliases are confusing in some uses.)108 520.8 Q(Shell b)108 537.6 Q
(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 273.6 R .39
-(process suspension is attempted.)108 285.6 R .389
+re not handled gracefully when)108 554.4 R .39
+(process suspension is attempted.)108 566.4 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 297.6 R .192(It suf)5.192 F .192(\214ces to \
+(mand in the sequence.)108 578.4 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 309.6 Q(Array v)108
-326.4 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
-(There may be only one acti)108 343.2 Q .3 -.15(ve c)-.25 H
-(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 December 7)139.295
-E(81)188.455 E 0 Cg EP
+-.25 F(subshell, which may be stopped as a unit.)108 590.4 Q(Array v)108
+607.2 Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E
+(There may be only one acti)108 624 Q .3 -.15(ve c)-.25 H
+(oprocess at a time.).15 E(GNU Bash 5.1)72 768 Q(2020 October 29)141.235
+E(83)190.395 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/bashbug.0 b/doc/bashbug.0
index e40eed37..373c47b1 100644
--- a/doc/bashbug.0
+++ b/doc/bashbug.0
@@ -29,9 +29,10 @@ EENNVVIIRROONNMMEENNTT
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.
+ eemmaaccss. If bbaasshhbbuugg cannot locate any of the alternative editors,
+ it attempts to execute vvii.
- HHOOMMEE Directory in which the failed bug report is saved if the mail
+ HHOOMMEE Directory in which the failed bug report is saved if the mail
fails.
TTMMPPDDIIRR Directory in which to create temporary files and directories.
@@ -48,4 +49,4 @@ AAUUTTHHOORRSS
-GNU Bash-4.4 2016 February 15 BASHBUG(1)
+GNU Bash 5.1 2020 August 1 BASHBUG(1)
diff --git a/doc/bashbug.1 b/doc/bashbug.1
index 61d9122a..abcaf482 100644
--- a/doc/bashbug.1
+++ b/doc/bashbug.1
@@ -5,9 +5,9 @@
.\" Case Western Reserve University
.\" chet@po.cwru.edu
.\"
-.\" Last Change: Mon Feb 15 14:42:40 EST 2016
+.\" Last Change: Sun Aug 2 15:39:07 EDT 2020
.\"
-.TH BASHBUG 1 "2016 February 15" "GNU Bash-4.4"
+.TH BASHBUG 1 "2020 August 1" "GNU Bash 5.1"
.SH NAME
bashbug \- report a bug in bash
.SH SYNOPSIS
@@ -44,8 +44,10 @@ Specifies the preferred editor. If
is not set,
.B bashbug
attempts to locate a number of alternative editors, including
-.BR emacs ,
-and defaults to \fBvi\fP.
+.BR emacs .
+If
+.B bashbug
+cannot locate any of the alternative editors, it attempts to execute \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 a5df73f5..9c60a331 100644
--- a/doc/bashbug.ps
+++ b/doc/bashbug.ps
@@ -1,10 +1,10 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.22.3
-%%CreationDate: Mon Mar 28 15:34:55 2016
+%%Creator: groff version 1.22.4
+%%CreationDate: Fri Aug 7 11:58:10 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
-%%DocumentSuppliedResources: procset grops 1.22 3
+%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 1
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
@@ -14,7 +14,7 @@
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
-%%BeginResource: procset grops 1.22 3
+%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
@@ -275,20 +275,23 @@ 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 .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
+(attempts to locate a number of alter)2.827 F(-)-.2 E(nati)144 324 Q
+1.925 -.15(ve e)-.25 H 1.625(ditors, including).15 F F2(emacs)4.125 E F0
+6.625(.I)C(f)-6.625 E F2(bashb)4.125 E(ug)-.2 E F0 1.625
+(cannot locate an)4.125 F 4.125(yo)-.15 G 4.125(ft)-4.125 G 1.625
+(he alternati)-4.125 F 1.925 -.15(ve e)-.25 H 1.625(ditors, it at-).15 F
+(tempts to e)144 336 Q -.15(xe)-.15 G(cute).15 E F2(vi)2.5 E F0(.)A F2
+(HOME)108 352.8 Q F0(Directory in which the f)144 364.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 381.6 Q F0
(Directory in which to create temporary \214les and directories.)144
-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
+393.6 Q F1(SEE ALSO)72 410.4 Q F3(bash)108 422.4 Q F0(\(1\))A F1 -.548
+(AU)72 439.2 S(THORS).548 E F0(Brian F)108 451.2 Q(ox, Free Softw)-.15 E
+(are F)-.1 E(oundation)-.15 E(bfox@gnu.or)108 463.2 Q(g)-.18 E
+(Chet Rame)108 480 Q 1.3 -.65(y, C)-.15 H(ase W).65 E(estern Reserv)-.8
E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve)-.25 G(rsity).15 E(chet@po.cwru.edu)
-108 480 Q(GNU Bash-4.4)72 768 Q(2016 February 15)138.46 E(1)193.45 E 0
-Cg EP
+108 492 Q(GNU Bash 5.1)72 768 Q(2020 August 1)145.395 E(1)199.555 E 0 Cg
+EP
%%Trailer
end
%%EOF
diff --git a/doc/bashref.dvi b/doc/bashref.dvi
index ece4544e..2b682d27 100644
--- a/doc/bashref.dvi
+++ b/doc/bashref.dvi
Binary files differ
diff --git a/doc/bashref.html b/doc/bashref.html
index c913de67..6a4c3ab8 100644
--- a/doc/bashref.html
+++ b/doc/bashref.html
@@ -1,13 +1,13 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This text is a brief description of the features that are present in
-the Bash shell (version 5.0, 7 December 2018).
+the Bash shell (version 5.1, 29 October 2020).
-This is Edition 5.0, last updated 7 December 2018,
+This is Edition 5.1, last updated 29 October 2020,
of The GNU Bash Reference Manual,
-for Bash, Version 5.0.
+for Bash, Version 5.1.
-Copyright (C) 1988-2018 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 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
@@ -15,7 +15,7 @@ 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". -->
-<!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
+<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Bash Reference Manual</title>
@@ -33,23 +33,14 @@ A copy of the license is included in the section entitled
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
-blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
-blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
-div.smalldisplay {margin-left: 3.2em}
-div.smallexample {margin-left: 3.2em}
-div.smalllisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: inherit; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: inherit; font-size: smaller}
-pre.smalllisp {font-size: smaller}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
@@ -72,224 +63,224 @@ ul.no-bullet {list-style: none}
-<a name="SEC_Contents"></a>
+<span id="SEC_Contents"></span>
<h2 class="contents-heading">Table of Contents</h2>
<div class="contents">
<ul class="no-bullet">
- <li><a name="toc-Introduction-1" href="#Introduction">1 Introduction</a>
+ <li><a id="toc-Introduction-1" href="#Introduction">1 Introduction</a>
<ul class="no-bullet">
- <li><a name="toc-What-is-Bash_003f-1" href="#What-is-Bash_003f">1.1 What is Bash?</a></li>
- <li><a name="toc-What-is-a-shell_003f-1" href="#What-is-a-shell_003f">1.2 What is a shell?</a></li>
+ <li><a id="toc-What-is-Bash_003f-1" href="#What-is-Bash_003f">1.1 What is Bash?</a></li>
+ <li><a id="toc-What-is-a-shell_003f-1" href="#What-is-a-shell_003f">1.2 What is a shell?</a></li>
</ul></li>
- <li><a name="toc-Definitions-1" href="#Definitions">2 Definitions</a></li>
- <li><a name="toc-Basic-Shell-Features-1" href="#Basic-Shell-Features">3 Basic Shell Features</a>
+ <li><a id="toc-Definitions-1" href="#Definitions">2 Definitions</a></li>
+ <li><a id="toc-Basic-Shell-Features-1" href="#Basic-Shell-Features">3 Basic Shell Features</a>
<ul class="no-bullet">
- <li><a name="toc-Shell-Syntax-1" href="#Shell-Syntax">3.1 Shell Syntax</a>
+ <li><a id="toc-Shell-Syntax-1" href="#Shell-Syntax">3.1 Shell Syntax</a>
<ul class="no-bullet">
- <li><a name="toc-Shell-Operation-1" href="#Shell-Operation">3.1.1 Shell Operation</a></li>
- <li><a name="toc-Quoting-1" href="#Quoting">3.1.2 Quoting</a>
+ <li><a id="toc-Shell-Operation-1" href="#Shell-Operation">3.1.1 Shell Operation</a></li>
+ <li><a id="toc-Quoting-1" href="#Quoting">3.1.2 Quoting</a>
<ul class="no-bullet">
- <li><a name="toc-Escape-Character-1" href="#Escape-Character">3.1.2.1 Escape Character</a></li>
- <li><a name="toc-Single-Quotes-1" href="#Single-Quotes">3.1.2.2 Single Quotes</a></li>
- <li><a name="toc-Double-Quotes-1" href="#Double-Quotes">3.1.2.3 Double Quotes</a></li>
- <li><a name="toc-ANSI_002dC-Quoting-1" href="#ANSI_002dC-Quoting">3.1.2.4 ANSI-C Quoting</a></li>
- <li><a name="toc-Locale_002dSpecific-Translation" href="#Locale-Translation">3.1.2.5 Locale-Specific Translation</a></li>
+ <li><a id="toc-Escape-Character-1" href="#Escape-Character">3.1.2.1 Escape Character</a></li>
+ <li><a id="toc-Single-Quotes-1" href="#Single-Quotes">3.1.2.2 Single Quotes</a></li>
+ <li><a id="toc-Double-Quotes-1" href="#Double-Quotes">3.1.2.3 Double Quotes</a></li>
+ <li><a id="toc-ANSI_002dC-Quoting-1" href="#ANSI_002dC-Quoting">3.1.2.4 ANSI-C Quoting</a></li>
+ <li><a id="toc-Locale_002dSpecific-Translation" href="#Locale-Translation">3.1.2.5 Locale-Specific Translation</a></li>
</ul></li>
- <li><a name="toc-Comments-1" href="#Comments">3.1.3 Comments</a></li>
+ <li><a id="toc-Comments-1" href="#Comments">3.1.3 Comments</a></li>
</ul></li>
- <li><a name="toc-Shell-Commands-1" href="#Shell-Commands">3.2 Shell Commands</a>
+ <li><a id="toc-Shell-Commands-1" href="#Shell-Commands">3.2 Shell Commands</a>
<ul class="no-bullet">
- <li><a name="toc-Simple-Commands-1" href="#Simple-Commands">3.2.1 Simple Commands</a></li>
- <li><a name="toc-Pipelines-1" href="#Pipelines">3.2.2 Pipelines</a></li>
- <li><a name="toc-Lists-of-Commands" href="#Lists">3.2.3 Lists of Commands</a></li>
- <li><a name="toc-Compound-Commands-1" href="#Compound-Commands">3.2.4 Compound Commands</a>
+ <li><a id="toc-Reserved-Words-1" href="#Reserved-Words">3.2.1 Reserved Words</a></li>
+ <li><a id="toc-Simple-Commands-1" href="#Simple-Commands">3.2.2 Simple Commands</a></li>
+ <li><a id="toc-Pipelines-1" href="#Pipelines">3.2.3 Pipelines</a></li>
+ <li><a id="toc-Lists-of-Commands" href="#Lists">3.2.4 Lists of Commands</a></li>
+ <li><a id="toc-Compound-Commands-1" href="#Compound-Commands">3.2.5 Compound Commands</a>
<ul class="no-bullet">
- <li><a name="toc-Looping-Constructs-1" href="#Looping-Constructs">3.2.4.1 Looping Constructs</a></li>
- <li><a name="toc-Conditional-Constructs-1" href="#Conditional-Constructs">3.2.4.2 Conditional Constructs</a></li>
- <li><a name="toc-Grouping-Commands" href="#Command-Grouping">3.2.4.3 Grouping Commands</a></li>
+ <li><a id="toc-Looping-Constructs-1" href="#Looping-Constructs">3.2.5.1 Looping Constructs</a></li>
+ <li><a id="toc-Conditional-Constructs-1" href="#Conditional-Constructs">3.2.5.2 Conditional Constructs</a></li>
+ <li><a id="toc-Grouping-Commands" href="#Command-Grouping">3.2.5.3 Grouping Commands</a></li>
</ul></li>
- <li><a name="toc-Coprocesses-1" href="#Coprocesses">3.2.5 Coprocesses</a></li>
- <li><a name="toc-GNU-Parallel-1" href="#GNU-Parallel">3.2.6 GNU Parallel</a></li>
+ <li><a id="toc-Coprocesses-1" href="#Coprocesses">3.2.6 Coprocesses</a></li>
+ <li><a id="toc-GNU-Parallel-1" href="#GNU-Parallel">3.2.7 GNU Parallel</a></li>
</ul></li>
- <li><a name="toc-Shell-Functions-1" href="#Shell-Functions">3.3 Shell Functions</a></li>
- <li><a name="toc-Shell-Parameters-1" href="#Shell-Parameters">3.4 Shell Parameters</a>
+ <li><a id="toc-Shell-Functions-1" href="#Shell-Functions">3.3 Shell Functions</a></li>
+ <li><a id="toc-Shell-Parameters-1" href="#Shell-Parameters">3.4 Shell Parameters</a>
<ul class="no-bullet">
- <li><a name="toc-Positional-Parameters-1" href="#Positional-Parameters">3.4.1 Positional Parameters</a></li>
- <li><a name="toc-Special-Parameters-1" href="#Special-Parameters">3.4.2 Special Parameters</a></li>
+ <li><a id="toc-Positional-Parameters-1" href="#Positional-Parameters">3.4.1 Positional Parameters</a></li>
+ <li><a id="toc-Special-Parameters-1" href="#Special-Parameters">3.4.2 Special Parameters</a></li>
</ul></li>
- <li><a name="toc-Shell-Expansions-1" href="#Shell-Expansions">3.5 Shell Expansions</a>
+ <li><a id="toc-Shell-Expansions-1" href="#Shell-Expansions">3.5 Shell Expansions</a>
<ul class="no-bullet">
- <li><a name="toc-Brace-Expansion-1" href="#Brace-Expansion">3.5.1 Brace Expansion</a></li>
- <li><a name="toc-Tilde-Expansion-1" href="#Tilde-Expansion">3.5.2 Tilde Expansion</a></li>
- <li><a name="toc-Shell-Parameter-Expansion-1" href="#Shell-Parameter-Expansion">3.5.3 Shell Parameter Expansion</a></li>
- <li><a name="toc-Command-Substitution-1" href="#Command-Substitution">3.5.4 Command Substitution</a></li>
- <li><a name="toc-Arithmetic-Expansion-1" href="#Arithmetic-Expansion">3.5.5 Arithmetic Expansion</a></li>
- <li><a name="toc-Process-Substitution-1" href="#Process-Substitution">3.5.6 Process Substitution</a></li>
- <li><a name="toc-Word-Splitting-1" href="#Word-Splitting">3.5.7 Word Splitting</a></li>
- <li><a name="toc-Filename-Expansion-1" href="#Filename-Expansion">3.5.8 Filename Expansion</a>
+ <li><a id="toc-Brace-Expansion-1" href="#Brace-Expansion">3.5.1 Brace Expansion</a></li>
+ <li><a id="toc-Tilde-Expansion-1" href="#Tilde-Expansion">3.5.2 Tilde Expansion</a></li>
+ <li><a id="toc-Shell-Parameter-Expansion-1" href="#Shell-Parameter-Expansion">3.5.3 Shell Parameter Expansion</a></li>
+ <li><a id="toc-Command-Substitution-1" href="#Command-Substitution">3.5.4 Command Substitution</a></li>
+ <li><a id="toc-Arithmetic-Expansion-1" href="#Arithmetic-Expansion">3.5.5 Arithmetic Expansion</a></li>
+ <li><a id="toc-Process-Substitution-1" href="#Process-Substitution">3.5.6 Process Substitution</a></li>
+ <li><a id="toc-Word-Splitting-1" href="#Word-Splitting">3.5.7 Word Splitting</a></li>
+ <li><a id="toc-Filename-Expansion-1" href="#Filename-Expansion">3.5.8 Filename Expansion</a>
<ul class="no-bullet">
- <li><a name="toc-Pattern-Matching-1" href="#Pattern-Matching">3.5.8.1 Pattern Matching</a></li>
+ <li><a id="toc-Pattern-Matching-1" href="#Pattern-Matching">3.5.8.1 Pattern Matching</a></li>
</ul></li>
- <li><a name="toc-Quote-Removal-1" href="#Quote-Removal">3.5.9 Quote Removal</a></li>
+ <li><a id="toc-Quote-Removal-1" href="#Quote-Removal">3.5.9 Quote Removal</a></li>
</ul></li>
- <li><a name="toc-Redirections-1" href="#Redirections">3.6 Redirections</a>
+ <li><a id="toc-Redirections-1" href="#Redirections">3.6 Redirections</a>
<ul class="no-bullet">
- <li><a name="toc-Redirecting-Input" href="#Redirecting-Input">3.6.1 Redirecting Input</a></li>
- <li><a name="toc-Redirecting-Output" href="#Redirecting-Output">3.6.2 Redirecting Output</a></li>
- <li><a name="toc-Appending-Redirected-Output" href="#Appending-Redirected-Output">3.6.3 Appending Redirected Output</a></li>
- <li><a name="toc-Redirecting-Standard-Output-and-Standard-Error" href="#Redirecting-Standard-Output-and-Standard-Error">3.6.4 Redirecting Standard Output and Standard Error</a></li>
- <li><a name="toc-Appending-Standard-Output-and-Standard-Error" href="#Appending-Standard-Output-and-Standard-Error">3.6.5 Appending Standard Output and Standard Error</a></li>
- <li><a name="toc-Here-Documents" href="#Here-Documents">3.6.6 Here Documents</a></li>
- <li><a name="toc-Here-Strings" href="#Here-Strings">3.6.7 Here Strings</a></li>
- <li><a name="toc-Duplicating-File-Descriptors" href="#Duplicating-File-Descriptors">3.6.8 Duplicating File Descriptors</a></li>
- <li><a name="toc-Moving-File-Descriptors" href="#Moving-File-Descriptors">3.6.9 Moving File Descriptors</a></li>
- <li><a name="toc-Opening-File-Descriptors-for-Reading-and-Writing" href="#Opening-File-Descriptors-for-Reading-and-Writing">3.6.10 Opening File Descriptors for Reading and Writing</a></li>
+ <li><a id="toc-Redirecting-Input" href="#Redirecting-Input">3.6.1 Redirecting Input</a></li>
+ <li><a id="toc-Redirecting-Output" href="#Redirecting-Output">3.6.2 Redirecting Output</a></li>
+ <li><a id="toc-Appending-Redirected-Output" href="#Appending-Redirected-Output">3.6.3 Appending Redirected Output</a></li>
+ <li><a id="toc-Redirecting-Standard-Output-and-Standard-Error" href="#Redirecting-Standard-Output-and-Standard-Error">3.6.4 Redirecting Standard Output and Standard Error</a></li>
+ <li><a id="toc-Appending-Standard-Output-and-Standard-Error" href="#Appending-Standard-Output-and-Standard-Error">3.6.5 Appending Standard Output and Standard Error</a></li>
+ <li><a id="toc-Here-Documents" href="#Here-Documents">3.6.6 Here Documents</a></li>
+ <li><a id="toc-Here-Strings" href="#Here-Strings">3.6.7 Here Strings</a></li>
+ <li><a id="toc-Duplicating-File-Descriptors" href="#Duplicating-File-Descriptors">3.6.8 Duplicating File Descriptors</a></li>
+ <li><a id="toc-Moving-File-Descriptors" href="#Moving-File-Descriptors">3.6.9 Moving File Descriptors</a></li>
+ <li><a id="toc-Opening-File-Descriptors-for-Reading-and-Writing" href="#Opening-File-Descriptors-for-Reading-and-Writing">3.6.10 Opening File Descriptors for Reading and Writing</a></li>
</ul></li>
- <li><a name="toc-Executing-Commands-1" href="#Executing-Commands">3.7 Executing Commands</a>
+ <li><a id="toc-Executing-Commands-1" href="#Executing-Commands">3.7 Executing Commands</a>
<ul class="no-bullet">
- <li><a name="toc-Simple-Command-Expansion-1" href="#Simple-Command-Expansion">3.7.1 Simple Command Expansion</a></li>
- <li><a name="toc-Command-Search-and-Execution-1" href="#Command-Search-and-Execution">3.7.2 Command Search and Execution</a></li>
- <li><a name="toc-Command-Execution-Environment-1" href="#Command-Execution-Environment">3.7.3 Command Execution Environment</a></li>
- <li><a name="toc-Environment-1" href="#Environment">3.7.4 Environment</a></li>
- <li><a name="toc-Exit-Status-1" href="#Exit-Status">3.7.5 Exit Status</a></li>
- <li><a name="toc-Signals-1" href="#Signals">3.7.6 Signals</a></li>
+ <li><a id="toc-Simple-Command-Expansion-1" href="#Simple-Command-Expansion">3.7.1 Simple Command Expansion</a></li>
+ <li><a id="toc-Command-Search-and-Execution-1" href="#Command-Search-and-Execution">3.7.2 Command Search and Execution</a></li>
+ <li><a id="toc-Command-Execution-Environment-1" href="#Command-Execution-Environment">3.7.3 Command Execution Environment</a></li>
+ <li><a id="toc-Environment-1" href="#Environment">3.7.4 Environment</a></li>
+ <li><a id="toc-Exit-Status-1" href="#Exit-Status">3.7.5 Exit Status</a></li>
+ <li><a id="toc-Signals-1" href="#Signals">3.7.6 Signals</a></li>
</ul></li>
- <li><a name="toc-Shell-Scripts-1" href="#Shell-Scripts">3.8 Shell Scripts</a></li>
+ <li><a id="toc-Shell-Scripts-1" href="#Shell-Scripts">3.8 Shell Scripts</a></li>
</ul></li>
- <li><a name="toc-Shell-Builtin-Commands-1" href="#Shell-Builtin-Commands">4 Shell Builtin Commands</a>
+ <li><a id="toc-Shell-Builtin-Commands-1" href="#Shell-Builtin-Commands">4 Shell Builtin Commands</a>
<ul class="no-bullet">
- <li><a name="toc-Bourne-Shell-Builtins-1" href="#Bourne-Shell-Builtins">4.1 Bourne Shell Builtins</a></li>
- <li><a name="toc-Bash-Builtin-Commands" href="#Bash-Builtins">4.2 Bash Builtin Commands</a></li>
- <li><a name="toc-Modifying-Shell-Behavior-1" href="#Modifying-Shell-Behavior">4.3 Modifying Shell Behavior</a>
+ <li><a id="toc-Bourne-Shell-Builtins-1" href="#Bourne-Shell-Builtins">4.1 Bourne Shell Builtins</a></li>
+ <li><a id="toc-Bash-Builtin-Commands" href="#Bash-Builtins">4.2 Bash Builtin Commands</a></li>
+ <li><a id="toc-Modifying-Shell-Behavior-1" href="#Modifying-Shell-Behavior">4.3 Modifying Shell Behavior</a>
<ul class="no-bullet">
- <li><a name="toc-The-Set-Builtin-1" href="#The-Set-Builtin">4.3.1 The Set Builtin</a></li>
- <li><a name="toc-The-Shopt-Builtin-1" href="#The-Shopt-Builtin">4.3.2 The Shopt Builtin</a></li>
+ <li><a id="toc-The-Set-Builtin-1" href="#The-Set-Builtin">4.3.1 The Set Builtin</a></li>
+ <li><a id="toc-The-Shopt-Builtin-1" href="#The-Shopt-Builtin">4.3.2 The Shopt Builtin</a></li>
</ul></li>
- <li><a name="toc-Special-Builtins-1" href="#Special-Builtins">4.4 Special Builtins</a></li>
+ <li><a id="toc-Special-Builtins-1" href="#Special-Builtins">4.4 Special Builtins</a></li>
</ul></li>
- <li><a name="toc-Shell-Variables-1" href="#Shell-Variables">5 Shell Variables</a>
+ <li><a id="toc-Shell-Variables-1" href="#Shell-Variables">5 Shell Variables</a>
<ul class="no-bullet">
- <li><a name="toc-Bourne-Shell-Variables-1" href="#Bourne-Shell-Variables">5.1 Bourne Shell Variables</a></li>
- <li><a name="toc-Bash-Variables-1" href="#Bash-Variables">5.2 Bash Variables</a></li>
+ <li><a id="toc-Bourne-Shell-Variables-1" href="#Bourne-Shell-Variables">5.1 Bourne Shell Variables</a></li>
+ <li><a id="toc-Bash-Variables-1" href="#Bash-Variables">5.2 Bash Variables</a></li>
</ul></li>
- <li><a name="toc-Bash-Features-2" href="#Bash-Features">6 Bash Features</a>
+ <li><a id="toc-Bash-Features-2" href="#Bash-Features">6 Bash Features</a>
<ul class="no-bullet">
- <li><a name="toc-Invoking-Bash-1" href="#Invoking-Bash">6.1 Invoking Bash</a></li>
- <li><a name="toc-Bash-Startup-Files-1" href="#Bash-Startup-Files">6.2 Bash Startup Files</a></li>
- <li><a name="toc-Interactive-Shells-1" href="#Interactive-Shells">6.3 Interactive Shells</a>
+ <li><a id="toc-Invoking-Bash-1" href="#Invoking-Bash">6.1 Invoking Bash</a></li>
+ <li><a id="toc-Bash-Startup-Files-1" href="#Bash-Startup-Files">6.2 Bash Startup Files</a></li>
+ <li><a id="toc-Interactive-Shells-1" href="#Interactive-Shells">6.3 Interactive Shells</a>
<ul class="no-bullet">
- <li><a name="toc-What-is-an-Interactive-Shell_003f-1" href="#What-is-an-Interactive-Shell_003f">6.3.1 What is an Interactive Shell?</a></li>
- <li><a name="toc-Is-this-Shell-Interactive_003f-1" href="#Is-this-Shell-Interactive_003f">6.3.2 Is this Shell Interactive?</a></li>
- <li><a name="toc-Interactive-Shell-Behavior-1" href="#Interactive-Shell-Behavior">6.3.3 Interactive Shell Behavior</a></li>
+ <li><a id="toc-What-is-an-Interactive-Shell_003f-1" href="#What-is-an-Interactive-Shell_003f">6.3.1 What is an Interactive Shell?</a></li>
+ <li><a id="toc-Is-this-Shell-Interactive_003f-1" href="#Is-this-Shell-Interactive_003f">6.3.2 Is this Shell Interactive?</a></li>
+ <li><a id="toc-Interactive-Shell-Behavior-1" href="#Interactive-Shell-Behavior">6.3.3 Interactive Shell Behavior</a></li>
</ul></li>
- <li><a name="toc-Bash-Conditional-Expressions-1" href="#Bash-Conditional-Expressions">6.4 Bash Conditional Expressions</a></li>
- <li><a name="toc-Shell-Arithmetic-1" href="#Shell-Arithmetic">6.5 Shell Arithmetic</a></li>
- <li><a name="toc-Aliases-1" href="#Aliases">6.6 Aliases</a></li>
- <li><a name="toc-Arrays-1" href="#Arrays">6.7 Arrays</a></li>
- <li><a name="toc-The-Directory-Stack-1" href="#The-Directory-Stack">6.8 The Directory Stack</a>
+ <li><a id="toc-Bash-Conditional-Expressions-1" href="#Bash-Conditional-Expressions">6.4 Bash Conditional Expressions</a></li>
+ <li><a id="toc-Shell-Arithmetic-1" href="#Shell-Arithmetic">6.5 Shell Arithmetic</a></li>
+ <li><a id="toc-Aliases-1" href="#Aliases">6.6 Aliases</a></li>
+ <li><a id="toc-Arrays-1" href="#Arrays">6.7 Arrays</a></li>
+ <li><a id="toc-The-Directory-Stack-1" href="#The-Directory-Stack">6.8 The Directory Stack</a>
<ul class="no-bullet">
- <li><a name="toc-Directory-Stack-Builtins-1" href="#Directory-Stack-Builtins">6.8.1 Directory Stack Builtins</a></li>
+ <li><a id="toc-Directory-Stack-Builtins-1" href="#Directory-Stack-Builtins">6.8.1 Directory Stack Builtins</a></li>
</ul></li>
- <li><a name="toc-Controlling-the-Prompt-1" href="#Controlling-the-Prompt">6.9 Controlling the Prompt</a></li>
- <li><a name="toc-The-Restricted-Shell-1" href="#The-Restricted-Shell">6.10 The Restricted Shell</a></li>
- <li><a name="toc-Bash-POSIX-Mode-1" href="#Bash-POSIX-Mode">6.11 Bash POSIX Mode</a></li>
+ <li><a id="toc-Controlling-the-Prompt-1" href="#Controlling-the-Prompt">6.9 Controlling the Prompt</a></li>
+ <li><a id="toc-The-Restricted-Shell-1" href="#The-Restricted-Shell">6.10 The Restricted Shell</a></li>
+ <li><a id="toc-Bash-POSIX-Mode-1" href="#Bash-POSIX-Mode">6.11 Bash POSIX Mode</a></li>
+ <li><a id="toc-Shell-Compatibility-Mode-1" href="#Shell-Compatibility-Mode">6.12 Shell Compatibility Mode</a></li>
</ul></li>
- <li><a name="toc-Job-Control-1" href="#Job-Control">7 Job Control</a>
+ <li><a id="toc-Job-Control-1" href="#Job-Control">7 Job Control</a>
<ul class="no-bullet">
- <li><a name="toc-Job-Control-Basics-1" href="#Job-Control-Basics">7.1 Job Control Basics</a></li>
- <li><a name="toc-Job-Control-Builtins-1" href="#Job-Control-Builtins">7.2 Job Control Builtins</a></li>
- <li><a name="toc-Job-Control-Variables-1" href="#Job-Control-Variables">7.3 Job Control Variables</a></li>
+ <li><a id="toc-Job-Control-Basics-1" href="#Job-Control-Basics">7.1 Job Control Basics</a></li>
+ <li><a id="toc-Job-Control-Builtins-1" href="#Job-Control-Builtins">7.2 Job Control Builtins</a></li>
+ <li><a id="toc-Job-Control-Variables-1" href="#Job-Control-Variables">7.3 Job Control Variables</a></li>
</ul></li>
- <li><a name="toc-Command-Line-Editing-1" href="#Command-Line-Editing">8 Command Line Editing</a>
+ <li><a id="toc-Command-Line-Editing-1" href="#Command-Line-Editing">8 Command Line Editing</a>
<ul class="no-bullet">
- <li><a name="toc-Introduction-to-Line-Editing" href="#Introduction-and-Notation">8.1 Introduction to Line Editing</a></li>
- <li><a name="toc-Readline-Interaction-1" href="#Readline-Interaction">8.2 Readline Interaction</a>
+ <li><a id="toc-Introduction-to-Line-Editing" href="#Introduction-and-Notation">8.1 Introduction to Line Editing</a></li>
+ <li><a id="toc-Readline-Interaction-1" href="#Readline-Interaction">8.2 Readline Interaction</a>
<ul class="no-bullet">
- <li><a name="toc-Readline-Bare-Essentials-1" href="#Readline-Bare-Essentials">8.2.1 Readline Bare Essentials</a></li>
- <li><a name="toc-Readline-Movement-Commands-1" href="#Readline-Movement-Commands">8.2.2 Readline Movement Commands</a></li>
- <li><a name="toc-Readline-Killing-Commands-1" href="#Readline-Killing-Commands">8.2.3 Readline Killing Commands</a></li>
- <li><a name="toc-Readline-Arguments-1" href="#Readline-Arguments">8.2.4 Readline Arguments</a></li>
- <li><a name="toc-Searching-for-Commands-in-the-History" href="#Searching">8.2.5 Searching for Commands in the History</a></li>
+ <li><a id="toc-Readline-Bare-Essentials-1" href="#Readline-Bare-Essentials">8.2.1 Readline Bare Essentials</a></li>
+ <li><a id="toc-Readline-Movement-Commands-1" href="#Readline-Movement-Commands">8.2.2 Readline Movement Commands</a></li>
+ <li><a id="toc-Readline-Killing-Commands-1" href="#Readline-Killing-Commands">8.2.3 Readline Killing Commands</a></li>
+ <li><a id="toc-Readline-Arguments-1" href="#Readline-Arguments">8.2.4 Readline Arguments</a></li>
+ <li><a id="toc-Searching-for-Commands-in-the-History" href="#Searching">8.2.5 Searching for Commands in the History</a></li>
</ul></li>
- <li><a name="toc-Readline-Init-File-1" href="#Readline-Init-File">8.3 Readline Init File</a>
+ <li><a id="toc-Readline-Init-File-1" href="#Readline-Init-File">8.3 Readline Init File</a>
<ul class="no-bullet">
- <li><a name="toc-Readline-Init-File-Syntax-1" href="#Readline-Init-File-Syntax">8.3.1 Readline Init File Syntax</a></li>
- <li><a name="toc-Conditional-Init-Constructs-1" href="#Conditional-Init-Constructs">8.3.2 Conditional Init Constructs</a></li>
- <li><a name="toc-Sample-Init-File-1" href="#Sample-Init-File">8.3.3 Sample Init File</a></li>
+ <li><a id="toc-Readline-Init-File-Syntax-1" href="#Readline-Init-File-Syntax">8.3.1 Readline Init File Syntax</a></li>
+ <li><a id="toc-Conditional-Init-Constructs-1" href="#Conditional-Init-Constructs">8.3.2 Conditional Init Constructs</a></li>
+ <li><a id="toc-Sample-Init-File-1" href="#Sample-Init-File">8.3.3 Sample Init File</a></li>
</ul></li>
- <li><a name="toc-Bindable-Readline-Commands-1" href="#Bindable-Readline-Commands">8.4 Bindable Readline Commands</a>
+ <li><a id="toc-Bindable-Readline-Commands-1" href="#Bindable-Readline-Commands">8.4 Bindable Readline Commands</a>
<ul class="no-bullet">
- <li><a name="toc-Commands-For-Moving-1" href="#Commands-For-Moving">8.4.1 Commands For Moving</a></li>
- <li><a name="toc-Commands-For-Manipulating-The-History" href="#Commands-For-History">8.4.2 Commands For Manipulating The History</a></li>
- <li><a name="toc-Commands-For-Changing-Text" href="#Commands-For-Text">8.4.3 Commands For Changing Text</a></li>
- <li><a name="toc-Killing-And-Yanking" href="#Commands-For-Killing">8.4.4 Killing And Yanking</a></li>
- <li><a name="toc-Specifying-Numeric-Arguments" href="#Numeric-Arguments">8.4.5 Specifying Numeric Arguments</a></li>
- <li><a name="toc-Letting-Readline-Type-For-You" href="#Commands-For-Completion">8.4.6 Letting Readline Type For You</a></li>
- <li><a name="toc-Keyboard-Macros-1" href="#Keyboard-Macros">8.4.7 Keyboard Macros</a></li>
- <li><a name="toc-Some-Miscellaneous-Commands" href="#Miscellaneous-Commands">8.4.8 Some Miscellaneous Commands</a></li>
+ <li><a id="toc-Commands-For-Moving-1" href="#Commands-For-Moving">8.4.1 Commands For Moving</a></li>
+ <li><a id="toc-Commands-For-Manipulating-The-History" href="#Commands-For-History">8.4.2 Commands For Manipulating The History</a></li>
+ <li><a id="toc-Commands-For-Changing-Text" href="#Commands-For-Text">8.4.3 Commands For Changing Text</a></li>
+ <li><a id="toc-Killing-And-Yanking" href="#Commands-For-Killing">8.4.4 Killing And Yanking</a></li>
+ <li><a id="toc-Specifying-Numeric-Arguments" href="#Numeric-Arguments">8.4.5 Specifying Numeric Arguments</a></li>
+ <li><a id="toc-Letting-Readline-Type-For-You" href="#Commands-For-Completion">8.4.6 Letting Readline Type For You</a></li>
+ <li><a id="toc-Keyboard-Macros-1" href="#Keyboard-Macros">8.4.7 Keyboard Macros</a></li>
+ <li><a id="toc-Some-Miscellaneous-Commands" href="#Miscellaneous-Commands">8.4.8 Some Miscellaneous Commands</a></li>
</ul></li>
- <li><a name="toc-Readline-vi-Mode-1" href="#Readline-vi-Mode">8.5 Readline vi Mode</a></li>
- <li><a name="toc-Programmable-Completion-1" href="#Programmable-Completion">8.6 Programmable Completion</a></li>
- <li><a name="toc-Programmable-Completion-Builtins-1" href="#Programmable-Completion-Builtins">8.7 Programmable Completion Builtins</a></li>
- <li><a name="toc-A-Programmable-Completion-Example-1" href="#A-Programmable-Completion-Example">8.8 A Programmable Completion Example</a></li>
+ <li><a id="toc-Readline-vi-Mode-1" href="#Readline-vi-Mode">8.5 Readline vi Mode</a></li>
+ <li><a id="toc-Programmable-Completion-1" href="#Programmable-Completion">8.6 Programmable Completion</a></li>
+ <li><a id="toc-Programmable-Completion-Builtins-1" href="#Programmable-Completion-Builtins">8.7 Programmable Completion Builtins</a></li>
+ <li><a id="toc-A-Programmable-Completion-Example-1" href="#A-Programmable-Completion-Example">8.8 A Programmable Completion Example</a></li>
</ul></li>
- <li><a name="toc-Using-History-Interactively-1" href="#Using-History-Interactively">9 Using History Interactively</a>
+ <li><a id="toc-Using-History-Interactively-1" href="#Using-History-Interactively">9 Using History Interactively</a>
<ul class="no-bullet">
- <li><a name="toc-Bash-History-Facilities-1" href="#Bash-History-Facilities">9.1 Bash History Facilities</a></li>
- <li><a name="toc-Bash-History-Builtins-1" href="#Bash-History-Builtins">9.2 Bash History Builtins</a></li>
- <li><a name="toc-History-Expansion" href="#History-Interaction">9.3 History Expansion</a>
+ <li><a id="toc-Bash-History-Facilities-1" href="#Bash-History-Facilities">9.1 Bash History Facilities</a></li>
+ <li><a id="toc-Bash-History-Builtins-1" href="#Bash-History-Builtins">9.2 Bash History Builtins</a></li>
+ <li><a id="toc-History-Expansion" href="#History-Interaction">9.3 History Expansion</a>
<ul class="no-bullet">
- <li><a name="toc-Event-Designators-1" href="#Event-Designators">9.3.1 Event Designators</a></li>
- <li><a name="toc-Word-Designators-1" href="#Word-Designators">9.3.2 Word Designators</a></li>
- <li><a name="toc-Modifiers-1" href="#Modifiers">9.3.3 Modifiers</a></li>
+ <li><a id="toc-Event-Designators-1" href="#Event-Designators">9.3.1 Event Designators</a></li>
+ <li><a id="toc-Word-Designators-1" href="#Word-Designators">9.3.2 Word Designators</a></li>
+ <li><a id="toc-Modifiers-1" href="#Modifiers">9.3.3 Modifiers</a></li>
</ul></li>
</ul></li>
- <li><a name="toc-Installing-Bash-1" href="#Installing-Bash">10 Installing Bash</a>
+ <li><a id="toc-Installing-Bash-1" href="#Installing-Bash">10 Installing Bash</a>
<ul class="no-bullet">
- <li><a name="toc-Basic-Installation-1" href="#Basic-Installation">10.1 Basic Installation</a></li>
- <li><a name="toc-Compilers-and-Options-1" href="#Compilers-and-Options">10.2 Compilers and Options</a></li>
- <li><a name="toc-Compiling-For-Multiple-Architectures-1" href="#Compiling-For-Multiple-Architectures">10.3 Compiling For Multiple Architectures</a></li>
- <li><a name="toc-Installation-Names-1" href="#Installation-Names">10.4 Installation Names</a></li>
- <li><a name="toc-Specifying-the-System-Type-1" href="#Specifying-the-System-Type">10.5 Specifying the System Type</a></li>
- <li><a name="toc-Sharing-Defaults-1" href="#Sharing-Defaults">10.6 Sharing Defaults</a></li>
- <li><a name="toc-Operation-Controls-1" href="#Operation-Controls">10.7 Operation Controls</a></li>
- <li><a name="toc-Optional-Features-1" href="#Optional-Features">10.8 Optional Features</a></li>
+ <li><a id="toc-Basic-Installation-1" href="#Basic-Installation">10.1 Basic Installation</a></li>
+ <li><a id="toc-Compilers-and-Options-1" href="#Compilers-and-Options">10.2 Compilers and Options</a></li>
+ <li><a id="toc-Compiling-For-Multiple-Architectures-1" href="#Compiling-For-Multiple-Architectures">10.3 Compiling For Multiple Architectures</a></li>
+ <li><a id="toc-Installation-Names-1" href="#Installation-Names">10.4 Installation Names</a></li>
+ <li><a id="toc-Specifying-the-System-Type-1" href="#Specifying-the-System-Type">10.5 Specifying the System Type</a></li>
+ <li><a id="toc-Sharing-Defaults-1" href="#Sharing-Defaults">10.6 Sharing Defaults</a></li>
+ <li><a id="toc-Operation-Controls-1" href="#Operation-Controls">10.7 Operation Controls</a></li>
+ <li><a id="toc-Optional-Features-1" href="#Optional-Features">10.8 Optional Features</a></li>
</ul></li>
- <li><a name="toc-Reporting-Bugs-1" href="#Reporting-Bugs">Appendix A Reporting Bugs</a></li>
- <li><a name="toc-Major-Differences-From-The-Bourne-Shell-1" href="#Major-Differences-From-The-Bourne-Shell">Appendix B Major Differences From The Bourne Shell</a>
+ <li><a id="toc-Reporting-Bugs-1" href="#Reporting-Bugs">Appendix A Reporting Bugs</a></li>
+ <li><a id="toc-Major-Differences-From-The-Bourne-Shell-1" href="#Major-Differences-From-The-Bourne-Shell">Appendix B Major Differences From The Bourne Shell</a>
<ul class="no-bullet">
- <li><a name="toc-Implementation-Differences-From-The-SVR4_002e2-Shell" href="#Implementation-Differences-From-The-SVR4_002e2-Shell">B.1 Implementation Differences From The SVR4.2 Shell</a></li>
+ <li><a id="toc-Implementation-Differences-From-The-SVR4_002e2-Shell" href="#Implementation-Differences-From-The-SVR4_002e2-Shell">B.1 Implementation Differences From The SVR4.2 Shell</a></li>
</ul></li>
- <li><a name="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">Appendix C GNU Free Documentation License</a></li>
- <li><a name="toc-Indexes-1" href="#Indexes">Appendix D Indexes</a>
+ <li><a id="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">Appendix C GNU Free Documentation License</a></li>
+ <li><a id="toc-Indexes-1" href="#Indexes">Appendix D Indexes</a>
<ul class="no-bullet">
- <li><a name="toc-Index-of-Shell-Builtin-Commands" href="#Builtin-Index">D.1 Index of Shell Builtin Commands</a></li>
- <li><a name="toc-Index-of-Shell-Reserved-Words" href="#Reserved-Word-Index">D.2 Index of Shell Reserved Words</a></li>
- <li><a name="toc-Parameter-and-Variable-Index" href="#Variable-Index">D.3 Parameter and Variable Index</a></li>
- <li><a name="toc-Function-Index-1" href="#Function-Index">D.4 Function Index</a></li>
- <li><a name="toc-Concept-Index-1" href="#Concept-Index">D.5 Concept Index</a></li>
+ <li><a id="toc-Index-of-Shell-Builtin-Commands" href="#Builtin-Index" rel="index">D.1 Index of Shell Builtin Commands</a></li>
+ <li><a id="toc-Index-of-Shell-Reserved-Words" href="#Reserved-Word-Index" rel="index">D.2 Index of Shell Reserved Words</a></li>
+ <li><a id="toc-Parameter-and-Variable-Index" href="#Variable-Index" rel="index">D.3 Parameter and Variable Index</a></li>
+ <li><a id="toc-Function-Index-1" href="#Function-Index" rel="index">D.4 Function Index</a></li>
+ <li><a id="toc-Concept-Index-1" href="#Concept-Index" rel="index">D.5 Concept Index</a></li>
</ul></li>
</ul>
</div>
-<a name="Top"></a>
-<div class="header">
+<span id="Top"></span><div class="header">
<p>
Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previous: <a href="dir.html#Top" accesskey="p" rel="prev">(dir)</a>, Up: <a href="dir.html#Top" accesskey="u" rel="up">(dir)</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Features-1"></a>
-<h1 class="top">Bash Features</h1>
+<span id="Bash-Features-1"></span><h1 class="top">Bash Features</h1>
<p>This text is a brief description of the features that are present in
-the Bash shell (version 5.0, 7 December 2018).
+the Bash shell (version 5.1, 29 October 2020).
The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
</p>
-<p>This is Edition 5.0, last updated 7 December 2018,
+<p>This is Edition 5.1, last updated 29 October 2020,
of <cite>The GNU Bash Reference Manual</cite>,
-for <code>Bash</code>, Version 5.0.
+for <code>Bash</code>, Version 5.1.
</p>
<p>Bash contains features that appear in other popular shells, and some
features that only appear in Bash. Some of the shells that Bash has
@@ -304,64 +295,60 @@ Bash. The Bash manual page should be used as the definitive
reference on shell behavior.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Introduction" accesskey="1">Introduction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An introduction to the shell.
+<tr><td align="left" valign="top">&bull; <a href="#Introduction" accesskey="1">Introduction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An introduction to the shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Definitions" accesskey="2">Definitions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some definitions used in the rest of this
+<tr><td align="left" valign="top">&bull; <a href="#Definitions" accesskey="2">Definitions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Some definitions used in the rest of this
manual.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Basic-Shell-Features" accesskey="3">Basic Shell Features</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The shell &quot;building blocks&quot;.
+<tr><td align="left" valign="top">&bull; <a href="#Basic-Shell-Features" accesskey="3">Basic Shell Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The shell &quot;building blocks&quot;.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Builtin-Commands" accesskey="4">Shell Builtin Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands that are a part of the shell.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Builtin-Commands" accesskey="4">Shell Builtin Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands that are a part of the shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Variables" accesskey="5">Shell Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables used or set by Bash.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Variables" accesskey="5">Shell Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables used or set by Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-Features" accesskey="6">Bash Features</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Features found only in Bash.
+<tr><td align="left" valign="top">&bull; <a href="#Bash-Features" accesskey="6">Bash Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Features found only in Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Job-Control" accesskey="7">Job Control</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What job control is and how Bash allows you
+<tr><td align="left" valign="top">&bull; <a href="#Job-Control" accesskey="7">Job Control</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What job control is and how Bash allows you
to use it.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Command-Line-Editing" accesskey="8">Command Line Editing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Chapter describing the command line
+<tr><td align="left" valign="top">&bull; <a href="#Command-Line-Editing" accesskey="8">Command Line Editing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Chapter describing the command line
editing features.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Using-History-Interactively" accesskey="9">Using History Interactively</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command History Expansion
+<tr><td align="left" valign="top">&bull; <a href="#Using-History-Interactively" accesskey="9">Using History Interactively</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command History Expansion
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Installing-Bash">Installing Bash</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to build and install Bash on your system.
+<tr><td align="left" valign="top">&bull; <a href="#Installing-Bash">Installing Bash</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to build and install Bash on your system.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Reporting-Bugs">Reporting Bugs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to report bugs in Bash.
+<tr><td align="left" valign="top">&bull; <a href="#Reporting-Bugs">Reporting Bugs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to report bugs in Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A terse list of the differences
+<tr><td align="left" valign="top">&bull; <a href="#Major-Differences-From-The-Bourne-Shell">Major Differences From The Bourne Shell</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A terse list of the differences
between Bash and historical
versions of /bin/sh.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Copying and sharing this documentation.
+<tr><td align="left" valign="top">&bull; <a href="#GNU-Free-Documentation-License">GNU Free Documentation License</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Copying and sharing this documentation.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Indexes">Indexes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Various indexes for this manual.
+<tr><td align="left" valign="top">&bull; <a href="#Indexes">Indexes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Various indexes for this manual.
</td></tr>
</table>
<hr>
-<a name="Introduction"></a>
-<div class="header">
+<span id="Introduction"></span><div class="header">
<p>
Next: <a href="#Definitions" accesskey="n" rel="next">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Introduction-1"></a>
-<h2 class="chapter">1 Introduction</h2>
+<span id="Introduction-1"></span><h2 class="chapter">1 Introduction</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#What-is-Bash_003f" accesskey="1">What is Bash?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A short description of Bash.
+<tr><td align="left" valign="top">&bull; <a href="#What-is-Bash_003f" accesskey="1">What is Bash?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A short description of Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#What-is-a-shell_003f" accesskey="2">What is a shell?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A brief introduction to shells.
+<tr><td align="left" valign="top">&bull; <a href="#What-is-a-shell_003f" accesskey="2">What is a shell?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A brief introduction to shells.
</td></tr>
</table>
<hr>
-<a name="What-is-Bash_003f"></a>
-<div class="header">
+<span id="What-is-Bash_003f"></span><div class="header">
<p>
Next: <a href="#What-is-a-shell_003f" accesskey="n" rel="next">What is a shell?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="What-is-Bash_003f-1"></a>
-<h3 class="section">1.1 What is Bash?</h3>
+<span id="What-is-Bash_003f-1"></span><h3 class="section">1.1 What is Bash?</h3>
<p>Bash is the shell, or command language interpreter,
for the <small>GNU</small> operating system.
@@ -387,13 +374,11 @@ independently-supported ports exist for <small>MS-DOS</small>, <small>OS/2</smal
and Windows platforms.
</p>
<hr>
-<a name="What-is-a-shell_003f"></a>
-<div class="header">
+<span id="What-is-a-shell_003f"></span><div class="header">
<p>
Previous: <a href="#What-is-Bash_003f" accesskey="p" rel="prev">What is Bash?</a>, Up: <a href="#Introduction" accesskey="u" rel="up">Introduction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="What-is-a-shell_003f-1"></a>
-<h3 class="section">1.2 What is a shell?</h3>
+<span id="What-is-a-shell_003f-1"></span><h3 class="section">1.2 What is a shell?</h3>
<p>At its base, a shell is simply a macro processor that executes
commands. The term macro processor means functionality where text
@@ -448,18 +433,16 @@ editing, command history and aliases. Each of these features is
described in this manual.
</p>
<hr>
-<a name="Definitions"></a>
-<div class="header">
+<span id="Definitions"></span><div class="header">
<p>
Next: <a href="#Basic-Shell-Features" accesskey="n" rel="next">Basic Shell Features</a>, Previous: <a href="#Introduction" accesskey="p" rel="prev">Introduction</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Definitions-1"></a>
-<h2 class="chapter">2 Definitions</h2>
+<span id="Definitions-1"></span><h2 class="chapter">2 Definitions</h2>
<p>These definitions are used throughout the remainder of this manual.
</p>
<dl compact="compact">
<dt><code>POSIX</code></dt>
-<dd><a name="index-POSIX"></a>
+<dd><span id="index-POSIX"></span>
<p>A family of open system standards based on Unix. Bash
is primarily concerned with the Shell and Utilities portion of the
<small>POSIX</small> 1003.1 standard.
@@ -470,13 +453,13 @@ is primarily concerned with the Shell and Utilities portion of the
</p>
</dd>
<dt><code>builtin</code></dt>
-<dd><a name="index-builtin-1"></a>
+<dd><span id="index-builtin-1"></span>
<p>A command that is implemented internally by the shell itself, rather
than by an executable program somewhere in the file system.
</p>
</dd>
<dt><code>control operator</code></dt>
-<dd><a name="index-control-operator"></a>
+<dd><span id="index-control-operator"></span>
<p>A <code>token</code> that performs a control function. It is a <code>newline</code>
or one of the following:
&lsquo;<samp>||</samp>&rsquo;, &lsquo;<samp>&amp;&amp;</samp>&rsquo;, &lsquo;<samp>&amp;</samp>&rsquo;, &lsquo;<samp>;</samp>&rsquo;, &lsquo;<samp>;;</samp>&rsquo;, &lsquo;<samp>;&amp;</samp>&rsquo;, &lsquo;<samp>;;&amp;</samp>&rsquo;,
@@ -484,37 +467,37 @@ or one of the following:
</p>
</dd>
<dt><code>exit status</code></dt>
-<dd><a name="index-exit-status"></a>
+<dd><span id="index-exit-status"></span>
<p>The value returned by a command to its caller. The value is restricted
to eight bits, so the maximum value is 255.
</p>
</dd>
<dt><code>field</code></dt>
-<dd><a name="index-field"></a>
+<dd><span id="index-field"></span>
<p>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.
</p>
</dd>
<dt><code>filename</code></dt>
-<dd><a name="index-filename"></a>
+<dd><span id="index-filename"></span>
<p>A string of characters used to identify a file.
</p>
</dd>
<dt><code>job</code></dt>
-<dd><a name="index-job"></a>
+<dd><span id="index-job"></span>
<p>A set of processes comprising a pipeline, and any processes descended
from it, that are all in the same process group.
</p>
</dd>
<dt><code>job control</code></dt>
-<dd><a name="index-job-control"></a>
+<dd><span id="index-job-control"></span>
<p>A mechanism by which users can selectively stop (suspend) and restart
(resume) execution of processes.
</p>
</dd>
<dt><code>metacharacter</code></dt>
-<dd><a name="index-metacharacter"></a>
+<dd><span id="index-metacharacter"></span>
<p>A character that, when unquoted, separates words. A metacharacter is
a <code>space</code>, <code>tab</code>, <code>newline</code>, or one of the following characters:
&lsquo;<samp>|</samp>&rsquo;, &lsquo;<samp>&amp;</samp>&rsquo;, &lsquo;<samp>;</samp>&rsquo;, &lsquo;<samp>(</samp>&rsquo;, &lsquo;<samp>)</samp>&rsquo;, &lsquo;<samp>&lt;</samp>&rsquo;, or
@@ -522,8 +505,8 @@ a <code>space</code>, <code>tab</code>, <code>newline</code>, or one of the foll
</p>
</dd>
<dt><code>name</code></dt>
-<dd><a name="index-name"></a>
-<a name="index-identifier"></a>
+<dd><span id="index-name"></span>
+<span id="index-identifier"></span>
<p>A <code>word</code> consisting solely of letters, numbers, and underscores,
and beginning with a letter or underscore. <code>Name</code>s are used as
shell variable and function names.
@@ -531,70 +514,68 @@ Also referred to as an <code>identifier</code>.
</p>
</dd>
<dt><code>operator</code></dt>
-<dd><a name="index-operator_002c-shell"></a>
+<dd><span id="index-operator_002c-shell"></span>
<p>A <code>control operator</code> or a <code>redirection operator</code>.
See <a href="#Redirections">Redirections</a>, for a list of redirection operators.
Operators contain at least one unquoted <code>metacharacter</code>.
</p>
</dd>
<dt><code>process group</code></dt>
-<dd><a name="index-process-group"></a>
+<dd><span id="index-process-group"></span>
<p>A collection of related processes each having the same process
group <small>ID</small>.
</p>
</dd>
<dt><code>process group ID</code></dt>
-<dd><a name="index-process-group-ID"></a>
+<dd><span id="index-process-group-ID"></span>
<p>A unique identifier that represents a <code>process group</code>
during its lifetime.
</p>
</dd>
<dt><code>reserved word</code></dt>
-<dd><a name="index-reserved-word"></a>
+<dd><span id="index-reserved-word"></span>
<p>A <code>word</code> that has a special meaning to the shell. Most reserved
words introduce shell flow control constructs, such as <code>for</code> and
<code>while</code>.
</p>
</dd>
<dt><code>return status</code></dt>
-<dd><a name="index-return-status"></a>
+<dd><span id="index-return-status"></span>
<p>A synonym for <code>exit status</code>.
</p>
</dd>
<dt><code>signal</code></dt>
-<dd><a name="index-signal"></a>
+<dd><span id="index-signal"></span>
<p>A mechanism by which a process may be notified by the kernel
of an event occurring in the system.
</p>
</dd>
<dt><code>special builtin</code></dt>
-<dd><a name="index-special-builtin"></a>
+<dd><span id="index-special-builtin"></span>
<p>A shell builtin command that has been classified as special by the
<small>POSIX</small> standard.
</p>
</dd>
<dt><code>token</code></dt>
-<dd><a name="index-token"></a>
+<dd><span id="index-token"></span>
<p>A sequence of characters considered a single unit by the shell.
It is either a <code>word</code> or an <code>operator</code>.
</p>
</dd>
<dt><code>word</code></dt>
-<dd><a name="index-word"></a>
+<dd><span id="index-word"></span>
<p>A sequence of characters treated as a unit by the shell.
Words may not include unquoted <code>metacharacters</code>.
</p></dd>
</dl>
<hr>
-<a name="Basic-Shell-Features"></a>
-<div class="header">
+<span id="Basic-Shell-Features"></span><div class="header">
<p>
Next: <a href="#Shell-Builtin-Commands" accesskey="n" rel="next">Shell Builtin Commands</a>, Previous: <a href="#Definitions" accesskey="p" rel="prev">Definitions</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Basic-Shell-Features-1"></a>
-<h2 class="chapter">3 Basic Shell Features</h2>
-<a name="index-Bourne-shell"></a>
+<span id="Basic-Shell-Features-1"></span><h2 class="chapter">3 Basic Shell Features</h2>
+<span id="index-Bourne-shell"></span>
<p>Bash is an acronym for &lsquo;<samp>Bourne-Again SHell</samp>&rsquo;.
The Bourne shell is
@@ -610,39 +591,37 @@ shell expansions,
and to named files, and how the shell executes commands.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Syntax" accesskey="1">Shell Syntax</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What your input means to the shell.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Syntax" accesskey="1">Shell Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What your input means to the shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Commands" accesskey="2">Shell Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The types of commands you can use.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Commands" accesskey="2">Shell Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The types of commands you can use.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Functions" accesskey="3">Shell Functions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Grouping commands by name.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Functions" accesskey="3">Shell Functions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Grouping commands by name.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Parameters" accesskey="4">Shell Parameters</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the shell stores values.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Parameters" accesskey="4">Shell Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the shell stores values.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Expansions" accesskey="5">Shell Expansions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands parameters and the various
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Expansions" accesskey="5">Shell Expansions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands parameters and the various
expansions available.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Redirections" accesskey="6">Redirections</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A way to control where input and output go.
+<tr><td align="left" valign="top">&bull; <a href="#Redirections" accesskey="6">Redirections</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A way to control where input and output go.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Executing-Commands" accesskey="7">Executing Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens when you run a command.
+<tr><td align="left" valign="top">&bull; <a href="#Executing-Commands" accesskey="7">Executing Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens when you run a command.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Scripts" accesskey="8">Shell Scripts</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Executing files of shell commands.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Scripts" accesskey="8">Shell Scripts</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Executing files of shell commands.
</td></tr>
</table>
<hr>
-<a name="Shell-Syntax"></a>
-<div class="header">
+<span id="Shell-Syntax"></span><div class="header">
<p>
Next: <a href="#Shell-Commands" accesskey="n" rel="next">Shell Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Syntax-1"></a>
-<h3 class="section">3.1 Shell Syntax</h3>
+<span id="Shell-Syntax-1"></span><h3 class="section">3.1 Shell Syntax</h3>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Operation" accesskey="1">Shell Operation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The basic operation of the shell.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Operation" accesskey="1">Shell Operation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The basic operation of the shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Quoting" accesskey="2">Quoting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to remove the special meaning from characters.
+<tr><td align="left" valign="top">&bull; <a href="#Quoting" accesskey="2">Quoting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to remove the special meaning from characters.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Comments" accesskey="3">Comments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify comments.
+<tr><td align="left" valign="top">&bull; <a href="#Comments" accesskey="3">Comments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify comments.
</td></tr>
</table>
@@ -662,13 +641,11 @@ command, waits for the command&rsquo;s exit status, and makes that exit status
available for further inspection or processing.
</p>
<hr>
-<a name="Shell-Operation"></a>
-<div class="header">
+<span id="Shell-Operation"></span><div class="header">
<p>
Next: <a href="#Quoting" accesskey="n" rel="next">Quoting</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Operation-1"></a>
-<h4 class="subsection">3.1.1 Shell Operation</h4>
+<span id="Shell-Operation-1"></span><h4 class="subsection">3.1.1 Shell Operation</h4>
<p>The following is a brief description of the shell&rsquo;s operation when it
reads and executes a command. Basically, the shell does the
@@ -702,27 +679,25 @@ status (see <a href="#Exit-Status">Exit Status</a>).
</li></ol>
<hr>
-<a name="Quoting"></a>
-<div class="header">
+<span id="Quoting"></span><div class="header">
<p>
Next: <a href="#Comments" accesskey="n" rel="next">Comments</a>, Previous: <a href="#Shell-Operation" accesskey="p" rel="prev">Shell Operation</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Quoting-1"></a>
-<h4 class="subsection">3.1.2 Quoting</h4>
-<a name="index-quoting"></a>
+<span id="Quoting-1"></span><h4 class="subsection">3.1.2 Quoting</h4>
+<span id="index-quoting"></span>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Escape-Character" accesskey="1">Escape Character</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to remove the special meaning from a single
+<tr><td align="left" valign="top">&bull; <a href="#Escape-Character" accesskey="1">Escape Character</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to remove the special meaning from a single
character.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Single-Quotes" accesskey="2">Single Quotes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to inhibit all interpretation of a sequence
+<tr><td align="left" valign="top">&bull; <a href="#Single-Quotes" accesskey="2">Single Quotes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to inhibit all interpretation of a sequence
of characters.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Double-Quotes" accesskey="3">Double Quotes</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to suppress most of the interpretation of a
+<tr><td align="left" valign="top">&bull; <a href="#Double-Quotes" accesskey="3">Double Quotes</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to suppress most of the interpretation of a
sequence of characters.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#ANSI_002dC-Quoting" accesskey="4">ANSI-C Quoting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to expand ANSI-C sequences in quoted strings.
+<tr><td align="left" valign="top">&bull; <a href="#ANSI_002dC-Quoting" accesskey="4">ANSI-C Quoting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to expand ANSI-C sequences in quoted strings.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Locale-Translation" accesskey="5">Locale Translation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to translate strings into different languages.
+<tr><td align="left" valign="top">&bull; <a href="#Locale-Translation" accesskey="5">Locale Translation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to translate strings into different languages.
</td></tr>
</table>
@@ -745,13 +720,11 @@ more details concerning history expansion.
<var>escape character</var>, single quotes, and double quotes.
</p>
<hr>
-<a name="Escape-Character"></a>
-<div class="header">
+<span id="Escape-Character"></span><div class="header">
<p>
Next: <a href="#Single-Quotes" accesskey="n" rel="next">Single Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Escape-Character-1"></a>
-<h4 class="subsubsection">3.1.2.1 Escape Character</h4>
+<span id="Escape-Character-1"></span><h4 class="subsubsection">3.1.2.1 Escape Character</h4>
<p>A non-quoted backslash &lsquo;<samp>\</samp>&rsquo; is the Bash escape character.
It preserves the literal value of the next character that follows,
with the exception of <code>newline</code>. If a <code>\newline</code> pair
@@ -760,26 +733,22 @@ is treated as a line continuation (that is, it is removed from
the input stream and effectively ignored).
</p>
<hr>
-<a name="Single-Quotes"></a>
-<div class="header">
+<span id="Single-Quotes"></span><div class="header">
<p>
Next: <a href="#Double-Quotes" accesskey="n" rel="next">Double Quotes</a>, Previous: <a href="#Escape-Character" accesskey="p" rel="prev">Escape Character</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Single-Quotes-1"></a>
-<h4 class="subsubsection">3.1.2.2 Single Quotes</h4>
+<span id="Single-Quotes-1"></span><h4 class="subsubsection">3.1.2.2 Single Quotes</h4>
<p>Enclosing characters in single quotes (&lsquo;<samp>'</samp>&rsquo;) 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.
</p>
<hr>
-<a name="Double-Quotes"></a>
-<div class="header">
+<span id="Double-Quotes"></span><div class="header">
<p>
Next: <a href="#ANSI_002dC-Quoting" accesskey="n" rel="next">ANSI-C Quoting</a>, Previous: <a href="#Single-Quotes" accesskey="p" rel="prev">Single Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Double-Quotes-1"></a>
-<h4 class="subsubsection">3.1.2.3 Double Quotes</h4>
+<span id="Double-Quotes-1"></span><h4 class="subsubsection">3.1.2.3 Double Quotes</h4>
<p>Enclosing characters in double quotes (&lsquo;<samp>&quot;</samp>&rsquo;) preserves the literal value
of all characters within the quotes, with the exception of
@@ -807,14 +776,12 @@ The backslash preceding the &lsquo;<samp>!</samp>&rsquo; is not removed.
when in double quotes (see <a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a>).
</p>
<hr>
-<a name="ANSI_002dC-Quoting"></a>
-<div class="header">
+<span id="ANSI_002dC-Quoting"></span><div class="header">
<p>
Next: <a href="#Locale-Translation" accesskey="n" rel="next">Locale Translation</a>, Previous: <a href="#Double-Quotes" accesskey="p" rel="prev">Double Quotes</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="ANSI_002dC-Quoting-1"></a>
-<h4 class="subsubsection">3.1.2.4 ANSI-C Quoting</h4>
-<a name="index-quoting_002c-ANSI"></a>
+<span id="ANSI_002dC-Quoting-1"></span><h4 class="subsubsection">3.1.2.4 ANSI-C Quoting</h4>
+<span id="index-quoting_002c-ANSI"></span>
<p>Words of the form <code>$'<var>string</var>'</code> are treated specially. The
word expands to <var>string</var>, with backslash-escaped characters replaced
@@ -884,28 +851,31 @@ present, are decoded as follows:
been present.
</p>
<hr>
-<a name="Locale-Translation"></a>
-<div class="header">
+<span id="Locale-Translation"></span><div class="header">
<p>
Previous: <a href="#ANSI_002dC-Quoting" accesskey="p" rel="prev">ANSI-C Quoting</a>, Up: <a href="#Quoting" accesskey="u" rel="up">Quoting</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Locale_002dSpecific-Translation"></a>
-<h4 class="subsubsection">3.1.2.5 Locale-Specific Translation</h4>
-<a name="index-localization"></a>
-<a name="index-internationalization"></a>
-<a name="index-native-languages"></a>
-<a name="index-translation_002c-native-languages"></a>
-
-<p>A double-quoted string preceded by a dollar sign (&lsquo;<samp>$</samp>&rsquo;) will cause
-the string to be translated according to the current locale.
-If the current locale is <code>C</code> or <code>POSIX</code>, the dollar sign
-is ignored.
+<span id="Locale_002dSpecific-Translation"></span><h4 class="subsubsection">3.1.2.5 Locale-Specific Translation</h4>
+<span id="index-localization"></span>
+<span id="index-internationalization"></span>
+<span id="index-native-languages"></span>
+<span id="index-translation_002c-native-languages"></span>
+
+<p>A double-quoted string preceded by a dollar sign (&lsquo;<samp>$</samp>&rsquo;)
+will cause the string to be translated according to the current locale.
+The <var>gettext</var> infrastructure performs the message catalog lookup and
+translation, using the <code>LC_MESSAGES</code> and <code>TEXTDOMAIN</code> shell
+variables, as explained below. See the gettext documentation for additional
+details.
+If the current locale is <code>C</code> or <code>POSIX</code>,
+or if there are no translations available,
+the dollar sign is ignored.
If the string is translated and replaced, the replacement is
double-quoted.
</p>
-<a name="index-LC_005fMESSAGES"></a>
-<a name="index-TEXTDOMAIN"></a>
-<a name="index-TEXTDOMAINDIR"></a>
+<span id="index-LC_005fMESSAGES"></span>
+<span id="index-TEXTDOMAIN"></span>
+<span id="index-TEXTDOMAINDIR"></span>
<p>Some systems use the message catalog selected by the <code>LC_MESSAGES</code>
shell variable. Others create the name of the message catalog from the
value of the <code>TEXTDOMAIN</code> shell variable, possibly adding a
@@ -916,14 +886,12 @@ fashion:
<code>TEXTDOMAINDIR</code>/<code>LC_MESSAGES</code>/LC_MESSAGES/<code>TEXTDOMAIN</code>.mo.
</p>
<hr>
-<a name="Comments"></a>
-<div class="header">
+<span id="Comments"></span><div class="header">
<p>
Previous: <a href="#Quoting" accesskey="p" rel="prev">Quoting</a>, Up: <a href="#Shell-Syntax" accesskey="u" rel="up">Shell Syntax</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Comments-1"></a>
-<h4 class="subsection">3.1.3 Comments</h4>
-<a name="index-comments_002c-shell"></a>
+<span id="Comments-1"></span><h4 class="subsection">3.1.3 Comments</h4>
+<span id="index-comments_002c-shell"></span>
<p>In a non-interactive shell, or an interactive shell in which the
<code>interactive_comments</code> option to the <code>shopt</code>
@@ -937,14 +905,12 @@ See <a href="#Interactive-Shells">Interactive Shells</a>, for a description of w
a shell interactive.
</p>
<hr>
-<a name="Shell-Commands"></a>
-<div class="header">
+<span id="Shell-Commands"></span><div class="header">
<p>
Next: <a href="#Shell-Functions" accesskey="n" rel="next">Shell Functions</a>, Previous: <a href="#Shell-Syntax" accesskey="p" rel="prev">Shell Syntax</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Commands-1"></a>
-<h3 class="section">3.2 Shell Commands</h3>
-<a name="index-commands_002c-shell"></a>
+<span id="Shell-Commands-1"></span><h3 class="section">3.2 Shell Commands</h3>
+<span id="index-commands_002c-shell"></span>
<p>A simple shell command such as <code>echo a b c</code> consists of the command
itself followed by arguments, separated by spaces.
@@ -955,30 +921,56 @@ becomes the input of a second, in a loop or conditional construct, or in
some other grouping.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Simple-Commands" accesskey="1">Simple Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The most common type of command.
+<tr><td align="left" valign="top">&bull; <a href="#Reserved-Words" accesskey="1">Reserved Words</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Words that have special meaning to the shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Pipelines" accesskey="2">Pipelines</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Connecting the input and output of several
+<tr><td align="left" valign="top">&bull; <a href="#Simple-Commands" accesskey="2">Simple Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The most common type of command.
+</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Pipelines" accesskey="3">Pipelines</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Connecting the input and output of several
commands.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Lists" accesskey="3">Lists</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to execute commands sequentially.
+<tr><td align="left" valign="top">&bull; <a href="#Lists" accesskey="4">Lists</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to execute commands sequentially.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Compound-Commands" accesskey="4">Compound Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for control flow.
+<tr><td align="left" valign="top">&bull; <a href="#Compound-Commands" accesskey="5">Compound Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for control flow.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Coprocesses" accesskey="5">Coprocesses</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-way communication between commands.
+<tr><td align="left" valign="top">&bull; <a href="#Coprocesses" accesskey="6">Coprocesses</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Two-way communication between commands.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#GNU-Parallel" accesskey="6">GNU Parallel</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Running commands in parallel.
+<tr><td align="left" valign="top">&bull; <a href="#GNU-Parallel" accesskey="7">GNU Parallel</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Running commands in parallel.
</td></tr>
</table>
<hr>
-<a name="Simple-Commands"></a>
-<div class="header">
+<span id="Reserved-Words"></span><div class="header">
+<p>
+Next: <a href="#Simple-Commands" accesskey="n" rel="next">Simple Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+</div>
+<span id="Reserved-Words-1"></span><h4 class="subsection">3.2.1 Reserved Words</h4>
+<span id="index-reserved-words"></span>
+
+<p>Reserved words are words that have special meaning to the shell.
+They are used to begin and end the shell&rsquo;s compound commands.
+</p>
+<p>The following words are recognized as reserved when unquoted and
+the first word of a command (see below for exceptions):
+</p>
+<table>
+<tr><td width="10%"><code>if</code></td><td width="10%"><code>then</code></td><td width="10%"><code>elif</code></td><td width="10%"><code>else</code></td><td width="12%"><code>fi</code></td><td width="10%"><code>time</code></td></tr>
+<tr><td width="10%"><code>for</code></td><td width="10%"><code>in</code></td><td width="10%"><code>until</code></td><td width="10%"><code>while</code></td><td width="12%"><code>do</code></td><td width="10%"><code>done</code></td></tr>
+<tr><td width="10%"><code>case</code></td><td width="10%"><code>esac</code></td><td width="10%"><code>coproc</code></td><td width="10%"><code>select</code></td><td width="12%"><code>function</code></td></tr>
+<tr><td width="10%"><code>{</code></td><td width="10%"><code>}</code></td><td width="10%"><code>[[</code></td><td width="10%"><code>]]</code></td><td width="12%"><code>!</code></td></tr>
+</table>
+
+<p><code>in</code> is recognized as a reserved word if it is the third word of a
+<code>case</code> or <code>select</code> command.
+<code>in</code> and <code>do</code> are recognized as reserved
+words if they are the third word in a <code>for</code> command.
+</p>
+<hr>
+<span id="Simple-Commands"></span><div class="header">
<p>
-Next: <a href="#Pipelines" accesskey="n" rel="next">Pipelines</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Pipelines" accesskey="n" rel="next">Pipelines</a>, Previous: <a href="#Reserved-Words" accesskey="p" rel="prev">Reserved Words</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Simple-Commands-1"></a>
-<h4 class="subsection">3.2.1 Simple Commands</h4>
-<a name="index-commands_002c-simple"></a>
+<span id="Simple-Commands-1"></span><h4 class="subsection">3.2.2 Simple Commands</h4>
+<span id="index-commands_002c-simple"></span>
<p>A simple command is the kind of command encountered most often.
It&rsquo;s just a sequence of words separated by <code>blank</code>s, terminated
@@ -992,22 +984,20 @@ by the <small>POSIX</small> 1003.1 <code>waitpid</code> function, or 128+<var>n<
the command was terminated by signal <var>n</var>.
</p>
<hr>
-<a name="Pipelines"></a>
-<div class="header">
+<span id="Pipelines"></span><div class="header">
<p>
Next: <a href="#Lists" accesskey="n" rel="next">Lists</a>, Previous: <a href="#Simple-Commands" accesskey="p" rel="prev">Simple Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Pipelines-1"></a>
-<h4 class="subsection">3.2.2 Pipelines</h4>
-<a name="index-pipeline"></a>
-<a name="index-commands_002c-pipelines"></a>
+<span id="Pipelines-1"></span><h4 class="subsection">3.2.3 Pipelines</h4>
+<span id="index-pipeline"></span>
+<span id="index-commands_002c-pipelines"></span>
<p>A <code>pipeline</code> is a sequence of one or more commands separated by
one of the control operators &lsquo;<samp>|</samp>&rsquo; or &lsquo;<samp>|&amp;</samp>&rsquo;.
</p>
-<a name="index-time"></a>
-<a name="index-_0021"></a>
-<a name="index-command-timing"></a>
+<span id="index-time"></span>
+<span id="index-_0021"></span>
+<span id="index-command-timing"></span>
<p>The format for a pipeline is
</p><div class="example">
<pre class="example">[time [-p]] [!] <var>command1</var> [ | or |&amp; <var>command2</var> ] &hellip;
@@ -1071,14 +1061,12 @@ The shell waits for all commands in the pipeline to terminate before
returning a value.
</p>
<hr>
-<a name="Lists"></a>
-<div class="header">
+<span id="Lists"></span><div class="header">
<p>
Next: <a href="#Compound-Commands" accesskey="n" rel="next">Compound Commands</a>, Previous: <a href="#Pipelines" accesskey="p" rel="prev">Pipelines</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Lists-of-Commands"></a>
-<h4 class="subsection">3.2.3 Lists of Commands</h4>
-<a name="index-commands_002c-lists"></a>
+<span id="Lists-of-Commands"></span><h4 class="subsection">3.2.4 Lists of Commands</h4>
+<span id="index-commands_002c-lists"></span>
<p>A <code>list</code> is a sequence of one or more pipelines separated by one
of the operators &lsquo;<samp>;</samp>&rsquo;, &lsquo;<samp>&amp;</samp>&rsquo;, &lsquo;<samp>&amp;&amp;</samp>&rsquo;, or &lsquo;<samp>||</samp>&rsquo;,
@@ -1132,21 +1120,19 @@ returns a non-zero exit status.
executed in the list.
</p>
<hr>
-<a name="Compound-Commands"></a>
-<div class="header">
+<span id="Compound-Commands"></span><div class="header">
<p>
Next: <a href="#Coprocesses" accesskey="n" rel="next">Coprocesses</a>, Previous: <a href="#Lists" accesskey="p" rel="prev">Lists</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Compound-Commands-1"></a>
-<h4 class="subsection">3.2.4 Compound Commands</h4>
-<a name="index-commands_002c-compound"></a>
+<span id="Compound-Commands-1"></span><h4 class="subsection">3.2.5 Compound Commands</h4>
+<span id="index-commands_002c-compound"></span>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Looping-Constructs" accesskey="1">Looping Constructs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for iterative action.
+<tr><td align="left" valign="top">&bull; <a href="#Looping-Constructs" accesskey="1">Looping Constructs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for iterative action.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Conditional-Constructs" accesskey="2">Conditional Constructs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for conditional execution.
+<tr><td align="left" valign="top">&bull; <a href="#Conditional-Constructs" accesskey="2">Conditional Constructs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Shell commands for conditional execution.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Command-Grouping" accesskey="3">Command Grouping</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ways to group commands.
+<tr><td align="left" valign="top">&bull; <a href="#Command-Grouping" accesskey="3">Command Grouping</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Ways to group commands.
</td></tr>
</table>
@@ -1164,14 +1150,12 @@ followed by a newline in place of a semicolon.
to group commands and execute them as a unit.
</p>
<hr>
-<a name="Looping-Constructs"></a>
-<div class="header">
+<span id="Looping-Constructs"></span><div class="header">
<p>
Next: <a href="#Conditional-Constructs" accesskey="n" rel="next">Conditional Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Looping-Constructs-1"></a>
-<h4 class="subsubsection">3.2.4.1 Looping Constructs</h4>
-<a name="index-commands_002c-looping"></a>
+<span id="Looping-Constructs-1"></span><h4 class="subsubsection">3.2.5.1 Looping Constructs</h4>
+<span id="index-commands_002c-looping"></span>
<p>Bash supports the following looping constructs.
</p>
@@ -1180,9 +1164,9 @@ command&rsquo;s syntax, it may be replaced with one or more newlines.
</p>
<dl compact="compact">
<dt><code>until</code></dt>
-<dd><a name="index-until"></a>
-<a name="index-do"></a>
-<a name="index-done"></a>
+<dd><span id="index-until"></span>
+<span id="index-do"></span>
+<span id="index-done"></span>
<p>The syntax of the <code>until</code> command is:
</p>
<div class="example">
@@ -1196,7 +1180,7 @@ in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
<dt><code>while</code></dt>
-<dd><a name="index-while"></a>
+<dd><span id="index-while"></span>
<p>The syntax of the <code>while</code> command is:
</p>
<div class="example">
@@ -1210,7 +1194,7 @@ in <var>consequent-commands</var>, or zero if none was executed.
</p>
</dd>
<dt><code>for</code></dt>
-<dd><a name="index-for"></a>
+<dd><span id="index-for"></span>
<p>The syntax of the <code>for</code> command is:
</p>
<div class="example">
@@ -1251,22 +1235,20 @@ that is executed, or false if any of the expressions is invalid.
may be used to control loop execution.
</p>
<hr>
-<a name="Conditional-Constructs"></a>
-<div class="header">
+<span id="Conditional-Constructs"></span><div class="header">
<p>
Next: <a href="#Command-Grouping" accesskey="n" rel="next">Command Grouping</a>, Previous: <a href="#Looping-Constructs" accesskey="p" rel="prev">Looping Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Conditional-Constructs-1"></a>
-<h4 class="subsubsection">3.2.4.2 Conditional Constructs</h4>
-<a name="index-commands_002c-conditional"></a>
+<span id="Conditional-Constructs-1"></span><h4 class="subsubsection">3.2.5.2 Conditional Constructs</h4>
+<span id="index-commands_002c-conditional"></span>
<dl compact="compact">
<dt><code>if</code></dt>
-<dd><a name="index-if"></a>
-<a name="index-then"></a>
-<a name="index-else"></a>
-<a name="index-elif"></a>
-<a name="index-fi"></a>
+<dd><span id="index-if"></span>
+<span id="index-then"></span>
+<span id="index-else"></span>
+<span id="index-elif"></span>
+<span id="index-fi"></span>
<p>The syntax of the <code>if</code> command is:
</p>
<div class="example">
@@ -1292,9 +1274,9 @@ zero if no condition tested true.
</p>
</dd>
<dt><code>case</code></dt>
-<dd><a name="index-case"></a>
-<a name="index-in"></a>
-<a name="index-esac"></a>
+<dd><span id="index-case"></span>
+<span id="index-in"></span>
+<span id="index-esac"></span>
<p>The syntax of the <code>case</code> command is:
</p>
<div class="example">
@@ -1353,14 +1335,15 @@ Using &lsquo;<samp>;&amp;</samp>&rsquo; in place of &lsquo;<samp>;;</samp>&rsqu
the <var>command-list</var> associated with the next clause, if any.
Using &lsquo;<samp>;;&amp;</samp>&rsquo; in place of &lsquo;<samp>;;</samp>&rsquo; causes the shell to test the patterns
in the next clause, if any, and execute any associated <var>command-list</var>
-on a successful match.
+on a successful match,
+continuing the case statement execution as if the pattern list had not matched.
</p>
<p>The return status is zero if no <var>pattern</var> is matched. Otherwise, the
return status is the exit status of the <var>command-list</var> executed.
</p>
</dd>
<dt><code>select</code></dt>
-<dd><a name="index-select"></a>
+<dd><span id="index-select"></span>
<p>The <code>select</code> construct allows the easy generation of menus.
It has almost the same syntax as the <code>for</code> command:
@@ -1416,8 +1399,8 @@ otherwise the return status is 1. This is exactly equivalent to
</p>
</dd>
<dt><code>[[&hellip;]]</code></dt>
-<dd><a name="index-_005b_005b"></a>
-<a name="index-_005d_005d"></a>
+<dd><span id="index-_005b_005b"></span>
+<span id="index-_005d_005d"></span>
<div class="example">
<pre class="example">[[ <var>expression</var> ]]
</pre></div>
@@ -1454,7 +1437,8 @@ to be matched as a string.
precedence as &lsquo;<samp>==</samp>&rsquo; and &lsquo;<samp>!=</samp>&rsquo;.
When it is used, the string to the right of the operator is considered
a <small>POSIX</small> extended regular expression and matched accordingly
-(as in <i>regex</i>3)).
+(using the <small>POSIX</small> <code>regcomp</code> and <code>regexec</code> interfaces
+usually described in <i>regex</i>(3)).
The return value is 0 if the string matches
the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the conditional
@@ -1469,20 +1453,27 @@ 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.
+</p>
+<p>The pattern will match if it matches any part of the string.
+Anchor the pattern using the &lsquo;<samp>^</samp>&rsquo; and &lsquo;<samp>$</samp>&rsquo; regular expression
+operators to force it to match the entire string.
+The array variable <code>BASH_REMATCH</code> records which parts of the string
+matched the pattern.
+The element of <code>BASH_REMATCH</code> with index 0 contains the portion of
+the string matching the entire regular expression.
Substrings matched by parenthesized subexpressions within the regular
-expression are saved in the array variable <code>BASH_REMATCH</code>.
-The element of <code>BASH_REMATCH</code> with index 0 is the portion of the string
-matching the entire regular expression.
+expression are saved in the remaining <code>BASH_REMATCH</code> indices.
The element of <code>BASH_REMATCH</code> with index <var>n</var> is the portion of the
string matching the <var>n</var>th parenthesized subexpression.
</p>
<p>For example, the following will match a line
(stored in the shell variable <var>line</var>)
-if there is a sequence of characters in the value consisting of
+if there is a sequence of characters anywhere in the value consisting of
any number, including zero, of
-space characters, zero or one instances of &lsquo;<samp>a</samp>&rsquo;, then a &lsquo;<samp>b</samp>&rsquo;:
+characters in the <code>space</code> character class,
+zero or one instances of &lsquo;<samp>a</samp>&rsquo;, then a &lsquo;<samp>b</samp>&rsquo;:
</p><div class="example">
-<pre class="example">[[ $line =~ [[:space:]]*?(a)b ]]
+<pre class="example">[[ $line =~ [[:space:]]*(a)?b ]]
</pre></div>
<p>That means values like &lsquo;<samp>aab</samp>&rsquo; and &lsquo;<samp> aaaaaab</samp>&rsquo; will match, as
@@ -1497,7 +1488,7 @@ expressions while paying attention to the shell&rsquo;s quote removal.
Using a shell variable to store the pattern decreases these problems.
For example, the following is equivalent to the above:
</p><div class="example">
-<pre class="example">pattern='[[:space:]]*?(a)b'
+<pre class="example">pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
</pre></div>
@@ -1557,14 +1548,12 @@ value of the entire conditional expression.
</dl>
<hr>
-<a name="Command-Grouping"></a>
-<div class="header">
+<span id="Command-Grouping"></span><div class="header">
<p>
Previous: <a href="#Conditional-Constructs" accesskey="p" rel="prev">Conditional Constructs</a>, Up: <a href="#Compound-Commands" accesskey="u" rel="up">Compound Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Grouping-Commands"></a>
-<h4 class="subsubsection">3.2.4.3 Grouping Commands</h4>
-<a name="index-commands_002c-grouping"></a>
+<span id="Grouping-Commands"></span><h4 class="subsubsection">3.2.5.3 Grouping Commands</h4>
+<span id="index-commands_002c-grouping"></span>
<p>Bash provides two ways to group a list of commands to be executed
as a unit. When commands are grouped, redirections may be applied
@@ -1585,8 +1574,8 @@ effect after the subshell completes.
</p>
</dd>
<dt><code>{}</code></dt>
-<dd><a name="index-_007b"></a>
-<a name="index-_007d"></a>
+<dd><span id="index-_007b"></span>
+<span id="index-_007d"></span>
<div class="example">
<pre class="example">{ <var>list</var>; }
</pre></div>
@@ -1609,14 +1598,12 @@ from the <var>list</var> by whitespace.
<var>list</var>.
</p>
<hr>
-<a name="Coprocesses"></a>
-<div class="header">
+<span id="Coprocesses"></span><div class="header">
<p>
Next: <a href="#GNU-Parallel" accesskey="n" rel="next">GNU Parallel</a>, Previous: <a href="#Compound-Commands" accesskey="p" rel="prev">Compound Commands</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Coprocesses-1"></a>
-<h4 class="subsection">3.2.5 Coprocesses</h4>
-<a name="index-coprocess"></a>
+<span id="Coprocesses-1"></span><h4 class="subsection">3.2.6 Coprocesses</h4>
+<span id="index-coprocess"></span>
<p>A <code>coprocess</code> is a shell command preceded by the <code>coproc</code>
reserved word.
@@ -1661,13 +1648,11 @@ the <code>coproc</code> command always returns success.
The return status of a coprocess is the exit status of <var>command</var>.
</p>
<hr>
-<a name="GNU-Parallel"></a>
-<div class="header">
+<span id="GNU-Parallel"></span><div class="header">
<p>
Previous: <a href="#Coprocesses" accesskey="p" rel="prev">Coprocesses</a>, Up: <a href="#Shell-Commands" accesskey="u" rel="up">Shell Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="GNU-Parallel-1"></a>
-<h4 class="subsection">3.2.6 GNU Parallel</h4>
+<span id="GNU-Parallel-1"></span><h4 class="subsection">3.2.7 GNU Parallel</h4>
<p>There are ways to run commands in parallel that are not built into Bash.
GNU Parallel is a tool to do just that.
@@ -1694,16 +1679,18 @@ use find&rsquo;s <samp>-print0</samp> option and parallel&rsquo;s <samp>-0</samp
<p>You can use Parallel to move files from the current directory when the
number of files is too large to process with one <code>mv</code> invocation:
</p><div class="example">
-<pre class="example">ls | parallel mv {} destdir
+<pre class="example">printf '%s\n' * | parallel mv {} destdir
</pre></div>
<p>As you can see, the {} is replaced with each line read from standard input.
While using <code>ls</code> will work in most instances, it is not sufficient to
-deal with all filenames.
+deal with all filenames. <code>printf</code> is a shell builtin, and therefore is
+not subject to the kernel&rsquo;s limit on the number of arguments to a program,
+so you can use &lsquo;<samp>*</samp>&rsquo; (but see below about the <code>dotglob</code> shell option).
If you need to accommodate special characters in filenames, you can use
</p>
<div class="example">
-<pre class="example">find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+<pre class="example">printf '%s\0' * | parallel -0 mv {} destdir
</pre></div>
<p>as alluded to above.
@@ -1712,9 +1699,12 @@ If you need to accommodate special characters in filenames, you can use
directory.
You can emulate a parallel <code>xargs</code> by adding the <samp>-X</samp> option:
</p><div class="example">
-<pre class="example">find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
+<pre class="example">printf '%s\0' * | parallel -0 -X mv {} destdir
</pre></div>
+<p>(You may have to modify the pattern if you have the <code>dotglob</code> option
+enabled.)
+</p>
<p>GNU Parallel can replace certain common idioms that operate on lines read
from a file (in this case, filenames listed one per line):
</p><div class="example">
@@ -1781,15 +1771,13 @@ shell commands, one per line,
supplied as an argument), in blocks of ten shell jobs at a time.
</p>
<hr>
-<a name="Shell-Functions"></a>
-<div class="header">
+<span id="Shell-Functions"></span><div class="header">
<p>
Next: <a href="#Shell-Parameters" accesskey="n" rel="next">Shell Parameters</a>, Previous: <a href="#Shell-Commands" accesskey="p" rel="prev">Shell Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Functions-1"></a>
-<h3 class="section">3.3 Shell Functions</h3>
-<a name="index-shell-function"></a>
-<a name="index-functions_002c-shell"></a>
+<span id="Shell-Functions-1"></span><h3 class="section">3.3 Shell Functions</h3>
+<span id="index-shell-function"></span>
+<span id="index-functions_002c-shell"></span>
<p>Shell functions are a way to group commands for later execution
using a single name for the group. They are executed just like
@@ -1800,18 +1788,18 @@ Shell functions are executed in the current
shell context; no new process is created to interpret them.
</p>
<p>Functions are declared using this syntax:
-<a name="index-function"></a>
+<span id="index-function"></span>
</p><div class="example">
-<pre class="example"><var>name</var> () <var>compound-command</var> [ <var>redirections</var> ]
+<pre class="example"><var>fname</var> () <var>compound-command</var> [ <var>redirections</var> ]
</pre></div>
<p>or
</p>
<div class="example">
-<pre class="example">function <var>name</var> [()] <var>compound-command</var> [ <var>redirections</var> ]
+<pre class="example">function <var>fname</var> [()] <var>compound-command</var> [ <var>redirections</var> ]
</pre></div>
-<p>This defines a shell function named <var>name</var>. The reserved
+<p>This defines a shell function named <var>fname</var>. The reserved
word <code>function</code> is optional.
If the <code>function</code> reserved
word is supplied, the parentheses are optional.
@@ -1821,15 +1809,17 @@ That command is usually a <var>list</var> enclosed between { and }, but
may be any compound command listed above,
with one exception: If the <code>function</code> reserved word is used, but the
parentheses are not supplied, the braces are required.
-<var>compound-command</var> is executed whenever <var>name</var> is specified as the
+<var>compound-command</var> is executed whenever <var>fname</var> is specified as the
name of a command.
When the shell is in <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>),
-<var>name</var> may not be the same as one of the special builtins
+<var>fname</var> must be a valid shell <var>name</var> and
+may not be the same as one of the special builtins
(see <a href="#Special-Builtins">Special Builtins</a>).
+In default mode, a function name can be any unquoted shell word that does
+not contain &lsquo;<samp>$</samp>&rsquo;.
Any redirections (see <a href="#Redirections">Redirections</a>) associated with the shell function
are performed when the function is executed.
-</p>
-<p>A function definition may be deleted using the <samp>-f</samp> option to the
+A function definition may be deleted using the <samp>-f</samp> option to the
<code>unset</code> builtin (see <a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a>).
</p>
<p>The exit status of a function definition is zero unless a syntax error
@@ -1969,21 +1959,19 @@ function call stack and restrict the number of function invocations.
By default, no limit is placed on the number of recursive calls.
</p>
<hr>
-<a name="Shell-Parameters"></a>
-<div class="header">
+<span id="Shell-Parameters"></span><div class="header">
<p>
Next: <a href="#Shell-Expansions" accesskey="n" rel="next">Shell Expansions</a>, Previous: <a href="#Shell-Functions" accesskey="p" rel="prev">Shell Functions</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Parameters-1"></a>
-<h3 class="section">3.4 Shell Parameters</h3>
-<a name="index-parameters"></a>
-<a name="index-variable_002c-shell"></a>
-<a name="index-shell-variable"></a>
+<span id="Shell-Parameters-1"></span><h3 class="section">3.4 Shell Parameters</h3>
+<span id="index-parameters"></span>
+<span id="index-variable_002c-shell"></span>
+<span id="index-shell-variable"></span>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Positional-Parameters" accesskey="1">Positional Parameters</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The shell&rsquo;s command-line arguments.
+<tr><td align="left" valign="top">&bull; <a href="#Positional-Parameters" accesskey="1">Positional Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The shell&rsquo;s command-line arguments.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Special-Parameters" accesskey="2">Special Parameters</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Parameters denoted by special characters.
+<tr><td align="left" valign="top">&bull; <a href="#Special-Parameters" accesskey="2">Special Parameters</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Parameters denoted by special characters.
</td></tr>
</table>
@@ -2076,14 +2064,12 @@ Otherwise, if <code>unset</code> is executed with the name of a nameref variable
as an argument, the variable referenced by the nameref variable will be unset.
</p>
<hr>
-<a name="Positional-Parameters"></a>
-<div class="header">
+<span id="Positional-Parameters"></span><div class="header">
<p>
Next: <a href="#Special-Parameters" accesskey="n" rel="next">Special Parameters</a>, Up: <a href="#Shell-Parameters" accesskey="u" rel="up">Shell Parameters</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Positional-Parameters-1"></a>
-<h4 class="subsection">3.4.1 Positional Parameters</h4>
-<a name="index-parameters_002c-positional"></a>
+<span id="Positional-Parameters-1"></span><h4 class="subsection">3.4.1 Positional Parameters</h4>
+<span id="index-parameters_002c-positional"></span>
<p>A <var>positional parameter</var> is a parameter denoted by one or more
digits, other than the single digit <code>0</code>. Positional parameters are
@@ -2102,28 +2088,26 @@ temporarily replaced when a shell function is executed
digit is expanded, it must be enclosed in braces.
</p>
<hr>
-<a name="Special-Parameters"></a>
-<div class="header">
+<span id="Special-Parameters"></span><div class="header">
<p>
Previous: <a href="#Positional-Parameters" accesskey="p" rel="prev">Positional Parameters</a>, Up: <a href="#Shell-Parameters" accesskey="u" rel="up">Shell Parameters</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Special-Parameters-1"></a>
-<h4 class="subsection">3.4.2 Special Parameters</h4>
-<a name="index-parameters_002c-special"></a>
+<span id="Special-Parameters-1"></span><h4 class="subsection">3.4.2 Special Parameters</h4>
+<span id="index-parameters_002c-special"></span>
<p>The shell treats several parameters specially. These parameters may
only be referenced; assignment to them is not allowed.
</p>
<dl compact="compact">
<dt><code>*</code>
-<a name="index-_002a"></a>
+<span id="index-_002a"></span>
</dt>
-<dd><a name="index-_0024_002a"></a>
+<dd><span id="index-_0024_002a"></span>
<p>($*) 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.
+are subject to further word splitting and filename 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
<code>IFS</code> special variable. That is, <code>&quot;$*&quot;</code> is equivalent
@@ -2136,9 +2120,9 @@ separators.
</p>
</dd>
<dt><code>@</code>
-<a name="index-_0040"></a>
+<span id="index-_0040"></span>
</dt>
-<dd><a name="index-_0024_0040"></a>
+<dd><span id="index-_0024_0040"></span>
<p>($@) Expands to the positional parameters, starting from one.
In contexts where word splitting is performed, this expands each
positional parameter to a separate word; if not within double
@@ -2161,24 +2145,24 @@ expand to nothing (i.e., they are removed).
</p>
</dd>
<dt><code>#</code>
-<a name="index-_0023"></a>
+<span id="index-_0023"></span>
</dt>
-<dd><a name="index-_0024_0023"></a>
+<dd><span id="index-_0024_0023"></span>
<p>($#) Expands to the number of positional parameters in decimal.
</p>
</dd>
<dt><code>?</code>
-<a name="index-_003f"></a>
+<span id="index-_003f"></span>
</dt>
-<dd><a name="index-_0024_003f"></a>
+<dd><span id="index-_0024_003f"></span>
<p>($?) Expands to the exit status of the most recently executed foreground
pipeline.
</p>
</dd>
<dt><code>-</code>
-<a name="index-_002d"></a>
+<span id="index-_002d"></span>
</dt>
-<dd><a name="index-_0024_002d"></a>
+<dd><span id="index-_0024_002d"></span>
<p>($-, a hyphen.) Expands to the current option flags as specified upon
invocation, by the <code>set</code>
builtin command, or those set by the shell itself
@@ -2186,26 +2170,26 @@ builtin command, or those set by the shell itself
</p>
</dd>
<dt><code>$</code>
-<a name="index-_0024"></a>
+<span id="index-_0024"></span>
</dt>
-<dd><a name="index-_0024_0024"></a>
+<dd><span id="index-_0024_0024"></span>
<p>($$) Expands to the process <small>ID</small> of the shell. In a <code>()</code> subshell, it
expands to the process <small>ID</small> of the invoking shell, not the subshell.
</p>
</dd>
<dt><code>!</code>
-<a name="index-_0021-1"></a>
+<span id="index-_0021-1"></span>
</dt>
-<dd><a name="index-_0024_0021"></a>
+<dd><span id="index-_0024_0021"></span>
<p>($!) Expands to the process <small>ID</small> of the job most recently placed into the
background, whether executed as an asynchronous command or using
the <code>bg</code> builtin (see <a href="#Job-Control-Builtins">Job Control Builtins</a>).
</p>
</dd>
<dt><code>0</code>
-<a name="index-0"></a>
+<span id="index-0"></span>
</dt>
-<dd><a name="index-_00240"></a>
+<dd><span id="index-_00240"></span>
<p>($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 <a href="#Shell-Scripts">Shell Scripts</a>), <code>$0</code> is set to the name of that file.
@@ -2213,33 +2197,16 @@ If Bash is started with the <samp>-c</samp> option (see <a href="#Invoking-Bash"
then <code>$0</code> 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.
-</p>
-</dd>
-<dt><code>_</code>
-<a name="index-_005f"></a>
-</dt>
-<dd><a name="index-_0024_005f"></a>
-<p>($_, 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 simple
-command executed in the foreground, 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.
</p></dd>
</dl>
<hr>
-<a name="Shell-Expansions"></a>
-<div class="header">
+<span id="Shell-Expansions"></span><div class="header">
<p>
Next: <a href="#Redirections" accesskey="n" rel="next">Redirections</a>, Previous: <a href="#Shell-Parameters" accesskey="p" rel="prev">Shell Parameters</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Expansions-1"></a>
-<h3 class="section">3.5 Shell Expansions</h3>
-<a name="index-expansion"></a>
+<span id="Shell-Expansions-1"></span><h3 class="section">3.5 Shell Expansions</h3>
+<span id="index-expansion"></span>
<p>Expansion is performed on the command line after it has been split into
<code>token</code>s. There are seven kinds of expansion performed:
@@ -2255,25 +2222,25 @@ Next: <a href="#Redirections" accesskey="n" rel="next">Redirections</a>, Previou
</li></ul>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Brace-Expansion" accesskey="1">Brace Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expansion of expressions within braces.
+<tr><td align="left" valign="top">&bull; <a href="#Brace-Expansion" accesskey="1">Brace Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expansion of expressions within braces.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expansion of the ~ character.
+<tr><td align="left" valign="top">&bull; <a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Expansion of the ~ character.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Parameter-Expansion" accesskey="3">Shell Parameter Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands variables to their values.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Parameter-Expansion" accesskey="3">Shell Parameter Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands variables to their values.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Command-Substitution" accesskey="4">Command Substitution</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the output of a command as an argument.
+<tr><td align="left" valign="top">&bull; <a href="#Command-Substitution" accesskey="4">Command Substitution</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Using the output of a command as an argument.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Arithmetic-Expansion" accesskey="5">Arithmetic Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to use arithmetic in shell expansions.
+<tr><td align="left" valign="top">&bull; <a href="#Arithmetic-Expansion" accesskey="5">Arithmetic Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to use arithmetic in shell expansions.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Process-Substitution" accesskey="6">Process Substitution</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A way to write and read to and from a
+<tr><td align="left" valign="top">&bull; <a href="#Process-Substitution" accesskey="6">Process Substitution</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A way to write and read to and from a
command.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Word-Splitting" accesskey="7">Word Splitting</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the results of expansion are split into separate
+<tr><td align="left" valign="top">&bull; <a href="#Word-Splitting" accesskey="7">Word Splitting</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the results of expansion are split into separate
arguments.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Filename-Expansion" accesskey="8">Filename Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A shorthand for specifying filenames matching patterns.
+<tr><td align="left" valign="top">&bull; <a href="#Filename-Expansion" accesskey="8">Filename Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A shorthand for specifying filenames matching patterns.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Quote-Removal" accesskey="9">Quote Removal</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How and when quote characters are removed from
+<tr><td align="left" valign="top">&bull; <a href="#Quote-Removal" accesskey="9">Quote Removal</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How and when quote characters are removed from
words.
</td></tr>
</table>
@@ -2307,15 +2274,13 @@ The only exceptions to this are the expansions of
is performed.
</p>
<hr>
-<a name="Brace-Expansion"></a>
-<div class="header">
+<span id="Brace-Expansion"></span><div class="header">
<p>
Next: <a href="#Tilde-Expansion" accesskey="n" rel="next">Tilde Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Brace-Expansion-1"></a>
-<h4 class="subsection">3.5.1 Brace Expansion</h4>
-<a name="index-brace-expansion"></a>
-<a name="index-expansion_002c-brace"></a>
+<span id="Brace-Expansion-1"></span><h4 class="subsection">3.5.1 Brace Expansion</h4>
+<span id="index-brace-expansion"></span>
+<span id="index-expansion_002c-brace"></span>
<p>Brace expansion is a mechanism by which arbitrary strings may be generated.
This mechanism is similar to
@@ -2370,7 +2335,7 @@ Any incorrectly formed brace expansion is left unchanged.
being considered part of a brace expression.
To avoid conflicts with parameter expansion, the string &lsquo;<samp>${</samp>&rsquo;
is not considered eligible for brace expansion,
-and inhibits brace expansion until the closing &lsquo;<samp>}</samp>&rsquo;..
+and inhibits brace expansion until the closing &lsquo;<samp>}</samp>&rsquo;.
</p>
<p>This construct is typically used as shorthand when the common
prefix of the strings to be generated is longer than in the
@@ -2384,15 +2349,13 @@ above example:
</pre></div>
<hr>
-<a name="Tilde-Expansion"></a>
-<div class="header">
+<span id="Tilde-Expansion"></span><div class="header">
<p>
Next: <a href="#Shell-Parameter-Expansion" accesskey="n" rel="next">Shell Parameter Expansion</a>, Previous: <a href="#Brace-Expansion" accesskey="p" rel="prev">Brace Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Tilde-Expansion-1"></a>
-<h4 class="subsection">3.5.2 Tilde Expansion</h4>
-<a name="index-tilde-expansion"></a>
-<a name="index-expansion_002c-tilde"></a>
+<span id="Tilde-Expansion-1"></span><h4 class="subsection">3.5.2 Tilde Expansion</h4>
+<span id="index-tilde-expansion"></span>
+<span id="index-expansion_002c-tilde"></span>
<p>If a word begins with an unquoted tilde character (&lsquo;<samp>~</samp>&rsquo;), all of the
characters up to the first unquoted slash (or all characters,
@@ -2474,15 +2437,13 @@ Bash does not do this, except for the <var>declaration</var> commands listed
above, when in <small>POSIX</small> mode.
</p>
<hr>
-<a name="Shell-Parameter-Expansion"></a>
-<div class="header">
+<span id="Shell-Parameter-Expansion"></span><div class="header">
<p>
Next: <a href="#Command-Substitution" accesskey="n" rel="next">Command Substitution</a>, Previous: <a href="#Tilde-Expansion" accesskey="p" rel="prev">Tilde Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Parameter-Expansion-1"></a>
-<h4 class="subsection">3.5.3 Shell Parameter Expansion</h4>
-<a name="index-parameter-expansion"></a>
-<a name="index-expansion_002c-parameter"></a>
+<span id="Shell-Parameter-Expansion-1"></span><h4 class="subsection">3.5.3 Shell Parameter Expansion</h4>
+<span id="index-parameter-expansion"></span>
+<span id="index-expansion_002c-parameter"></span>
<p>The &lsquo;<samp>$</samp>&rsquo; character introduces parameter expansion,
command substitution, or arithmetic expansion. The parameter name
@@ -2704,7 +2665,7 @@ results.
</p>
<p>Substring indexing is zero-based unless the positional parameters
are used, in which case the indexing starts at 1 by default.
-If <var>offset</var> is 0, and the positional parameters are used, <code>$@</code> is
+If <var>offset</var> is 0, and the positional parameters are used, <code>$0</code> is
prefixed to the list.
</p>
</dd>
@@ -2762,7 +2723,7 @@ array in turn, and the expansion is the resultant list.
<dt><code>${<var>parameter</var>%%<var>word</var>}</code></dt>
<dd><p>The <var>word</var>
is expanded to produce a pattern and matched according to the rules
-described below (see <a href="#Pattern-Matching">Pattern Matching</a>). If the pattern matches
+described below (see <a href="#Pattern-Matching">Pattern Matching</a>).
If the pattern matches a trailing portion of the expanded value of
<var>parameter</var>, then the result of the expansion is the value of
<var>parameter</var> with the shortest matching pattern (the &lsquo;<samp>%</samp>&rsquo; case)
@@ -2838,6 +2799,18 @@ or information about <var>parameter</var> itself, depending on the value of
<var>operator</var>. Each <var>operator</var> is a single letter:
</p>
<dl compact="compact">
+<dt><code>U</code></dt>
+<dd><p>The expansion is a string that is the value of <var>parameter</var> with lowercase
+alphabetic characters converted to uppercase.
+</p></dd>
+<dt><code>u</code></dt>
+<dd><p>The expansion is a string that is the value of <var>parameter</var> with the first
+character converted to uppercase, if it is alphabetic.
+</p></dd>
+<dt><code>L</code></dt>
+<dd><p>The expansion is a string that is the value of <var>parameter</var> with uppercase
+alphabetic characters converted to lowercase.
+</p></dd>
<dt><code>Q</code></dt>
<dd><p>The expansion is a string that is the value of <var>parameter</var> quoted in a
format that can be reused as input.
@@ -2855,6 +2828,12 @@ escape sequences expanded as with the <code>$'&hellip;'</code> quoting mechanism
an assignment statement or <code>declare</code> command that, if
evaluated, will recreate <var>parameter</var> with its attributes and value.
</p></dd>
+<dt><code>K</code></dt>
+<dd><p>Produces a possibly-quoted version of the value of <var>parameter</var>,
+except that it prints the values of
+indexed and associative arrays as a sequence of quoted key-value pairs
+(see <a href="#Arrays">Arrays</a>).
+</p></dd>
<dt><code>a</code></dt>
<dd><p>The expansion is a string consisting of flag values representing
<var>parameter</var>&rsquo;s attributes.
@@ -2869,20 +2848,18 @@ is an array variable subscripted with &lsquo;<samp>@</samp>&rsquo; or &lsquo;<sa
the operation is applied to each member of the
array in turn, and the expansion is the resultant list.
</p>
-<p>The result of the expansion is subject to word splitting and pathname
+<p>The result of the expansion is subject to word splitting and filename
expansion as described below.
</p></dd>
</dl>
<hr>
-<a name="Command-Substitution"></a>
-<div class="header">
+<span id="Command-Substitution"></span><div class="header">
<p>
Next: <a href="#Arithmetic-Expansion" accesskey="n" rel="next">Arithmetic Expansion</a>, Previous: <a href="#Shell-Parameter-Expansion" accesskey="p" rel="prev">Shell Parameter Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Command-Substitution-1"></a>
-<h4 class="subsection">3.5.4 Command Substitution</h4>
-<a name="index-command-substitution"></a>
+<span id="Command-Substitution-1"></span><h4 class="subsection">3.5.4 Command Substitution</h4>
+<span id="index-command-substitution"></span>
<p>Command substitution allows the output of a command to replace
the command itself.
@@ -2918,15 +2895,13 @@ form, escape the inner backquotes with backslashes.
filename expansion are not performed on the results.
</p>
<hr>
-<a name="Arithmetic-Expansion"></a>
-<div class="header">
+<span id="Arithmetic-Expansion"></span><div class="header">
<p>
Next: <a href="#Process-Substitution" accesskey="n" rel="next">Process Substitution</a>, Previous: <a href="#Command-Substitution" accesskey="p" rel="prev">Command Substitution</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Arithmetic-Expansion-1"></a>
-<h4 class="subsection">3.5.5 Arithmetic Expansion</h4>
-<a name="index-expansion_002c-arithmetic"></a>
-<a name="index-arithmetic-expansion"></a>
+<span id="Arithmetic-Expansion-1"></span><h4 class="subsection">3.5.5 Arithmetic Expansion</h4>
+<span id="index-expansion_002c-arithmetic"></span>
+<span id="index-arithmetic-expansion"></span>
<p>Arithmetic expansion allows the evaluation of an arithmetic expression
and the substitution of the result. The format for arithmetic expansion is:
@@ -2948,14 +2923,12 @@ If the expression is invalid, Bash prints a message indicating
failure to the standard error and no substitution occurs.
</p>
<hr>
-<a name="Process-Substitution"></a>
-<div class="header">
+<span id="Process-Substitution"></span><div class="header">
<p>
Next: <a href="#Word-Splitting" accesskey="n" rel="next">Word Splitting</a>, Previous: <a href="#Arithmetic-Expansion" accesskey="p" rel="prev">Arithmetic Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Process-Substitution-1"></a>
-<h4 class="subsection">3.5.6 Process Substitution</h4>
-<a name="index-process-substitution"></a>
+<span id="Process-Substitution-1"></span><h4 class="subsection">3.5.6 Process Substitution</h4>
+<span id="index-process-substitution"></span>
<p>Process substitution allows a process&rsquo;s input or output to be
referred to using a filename.
@@ -2987,14 +2960,12 @@ parameter and variable expansion, command substitution, and arithmetic
expansion.
</p>
<hr>
-<a name="Word-Splitting"></a>
-<div class="header">
+<span id="Word-Splitting"></span><div class="header">
<p>
Next: <a href="#Filename-Expansion" accesskey="n" rel="next">Filename Expansion</a>, Previous: <a href="#Process-Substitution" accesskey="p" rel="prev">Process Substitution</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Word-Splitting-1"></a>
-<h4 class="subsection">3.5.7 Word Splitting</h4>
-<a name="index-word-splitting"></a>
+<span id="Word-Splitting-1"></span><h4 class="subsection">3.5.7 Word Splitting</h4>
+<span id="index-word-splitting"></span>
<p>The shell scans the results of parameter expansion, command substitution,
and arithmetic expansion that did not occur within double quotes for
@@ -3037,26 +3008,24 @@ null argument removal.
is performed.
</p>
<hr>
-<a name="Filename-Expansion"></a>
-<div class="header">
+<span id="Filename-Expansion"></span><div class="header">
<p>
Next: <a href="#Quote-Removal" accesskey="n" rel="next">Quote Removal</a>, Previous: <a href="#Word-Splitting" accesskey="p" rel="prev">Word Splitting</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Filename-Expansion-1"></a>
-<h4 class="subsection">3.5.8 Filename Expansion</h4>
+<span id="Filename-Expansion-1"></span><h4 class="subsection">3.5.8 Filename Expansion</h4>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Pattern-Matching" accesskey="1">Pattern Matching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the shell matches patterns.
+<tr><td align="left" valign="top">&bull; <a href="#Pattern-Matching" accesskey="1">Pattern Matching</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How the shell matches patterns.
</td></tr>
</table>
-<a name="index-expansion_002c-filename"></a>
-<a name="index-expansion_002c-pathname"></a>
-<a name="index-filename-expansion"></a>
-<a name="index-pathname-expansion"></a>
+<span id="index-expansion_002c-filename"></span>
+<span id="index-expansion_002c-pathname"></span>
+<span id="index-filename-expansion"></span>
+<span id="index-pathname-expansion"></span>
<p>After word splitting, unless the <samp>-f</samp> option has been set
(see <a href="#The-Set-Builtin">The Set Builtin</a>), Bash scans each word for the characters
&lsquo;<samp>*</samp>&rsquo;, &lsquo;<samp>?</samp>&rsquo;, and &lsquo;<samp>[</samp>&rsquo;.
-If one of these characters appears, then the word is
+If one of these characters appears, and is not quoted, then the word is
regarded as a <var>pattern</var>,
and replaced with an alphabetically sorted list of
filenames matching the pattern (see <a href="#Pattern-Matching">Pattern Matching</a>).
@@ -3107,15 +3076,13 @@ The <code>dotglob</code> option is disabled when <code>GLOBIGNORE</code>
is unset.
</p>
<hr>
-<a name="Pattern-Matching"></a>
-<div class="header">
+<span id="Pattern-Matching"></span><div class="header">
<p>
Up: <a href="#Filename-Expansion" accesskey="u" rel="up">Filename Expansion</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Pattern-Matching-1"></a>
-<h4 class="subsubsection">3.5.8.1 Pattern Matching</h4>
-<a name="index-pattern-matching"></a>
-<a name="index-matching_002c-pattern"></a>
+<span id="Pattern-Matching-1"></span><h4 class="subsubsection">3.5.8.1 Pattern Matching</h4>
+<span id="index-pattern-matching"></span>
+<span id="index-matching_002c-pattern"></span>
<p>Any character that appears in a pattern, other than the special pattern
characters described below, matches itself.
@@ -3221,27 +3188,23 @@ Using separate matches against shorter strings, or using arrays of
strings instead of a single long string, may be faster.
</p>
<hr>
-<a name="Quote-Removal"></a>
-<div class="header">
+<span id="Quote-Removal"></span><div class="header">
<p>
Previous: <a href="#Filename-Expansion" accesskey="p" rel="prev">Filename Expansion</a>, Up: <a href="#Shell-Expansions" accesskey="u" rel="up">Shell Expansions</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Quote-Removal-1"></a>
-<h4 class="subsection">3.5.9 Quote Removal</h4>
+<span id="Quote-Removal-1"></span><h4 class="subsection">3.5.9 Quote Removal</h4>
<p>After the preceding expansions, all unquoted occurrences of the
characters &lsquo;<samp>\</samp>&rsquo;, &lsquo;<samp>'</samp>&rsquo;, and &lsquo;<samp>&quot;</samp>&rsquo; that did not
result from one of the above expansions are removed.
</p>
<hr>
-<a name="Redirections"></a>
-<div class="header">
+<span id="Redirections"></span><div class="header">
<p>
Next: <a href="#Executing-Commands" accesskey="n" rel="next">Executing Commands</a>, Previous: <a href="#Shell-Expansions" accesskey="p" rel="prev">Shell Expansions</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Redirections-1"></a>
-<h3 class="section">3.6 Redirections</h3>
-<a name="index-redirection"></a>
+<span id="Redirections-1"></span><h3 class="section">3.6 Redirections</h3>
+<span id="index-redirection"></span>
<p>Before a command is executed, its input and output
may be <var>redirected</var>
@@ -3266,7 +3229,7 @@ by {<var>varname</var>}, the value of <var>varname</var> defines the file
descriptor to close.
If {<var>varname</var>} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor&rsquo;s lifetime manually.
</p>
<p>In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
@@ -3337,8 +3300,7 @@ the corresponding UDP socket.
care, as they may conflict with file descriptors the shell uses
internally.
</p>
-<a name="Redirecting-Input"></a>
-<h4 class="subsection">3.6.1 Redirecting Input</h4>
+<span id="Redirecting-Input"></span><h4 class="subsection">3.6.1 Redirecting Input</h4>
<p>Redirection of input causes the file whose name results from
the expansion of <var>word</var>
to be opened for reading on file descriptor <code>n</code>,
@@ -3350,8 +3312,7 @@ is not specified.
<pre class="example">[<var>n</var>]&lt;<var>word</var>
</pre></div>
-<a name="Redirecting-Output"></a>
-<h4 class="subsection">3.6.2 Redirecting Output</h4>
+<span id="Redirecting-Output"></span><h4 class="subsection">3.6.2 Redirecting Output</h4>
<p>Redirection of output causes the file whose name results from
the expansion of <var>word</var>
to be opened for writing on file descriptor <var>n</var>,
@@ -3372,8 +3333,7 @@ If the redirection operator is &lsquo;<samp>&gt;|</samp>&rsquo;, or the redirect
&lsquo;<samp>&gt;</samp>&rsquo; and the <code>noclobber</code> option is not enabled, the redirection
is attempted even if the file named by <var>word</var> exists.
</p>
-<a name="Appending-Redirected-Output"></a>
-<h4 class="subsection">3.6.3 Appending Redirected Output</h4>
+<span id="Appending-Redirected-Output"></span><h4 class="subsection">3.6.3 Appending Redirected Output</h4>
<p>Redirection of output in this fashion
causes the file whose name results from
the expansion of <var>word</var>
@@ -3386,8 +3346,7 @@ is not specified. If the file does not exist it is created.
<pre class="example">[<var>n</var>]&gt;&gt;<var>word</var>
</pre></div>
-<a name="Redirecting-Standard-Output-and-Standard-Error"></a>
-<h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
+<span id="Redirecting-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.4 Redirecting Standard Output and Standard Error</h4>
<p>This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -3412,8 +3371,7 @@ This is semantically equivalent to
&lsquo;<samp>-</samp>&rsquo;. If it does, other redirection operators apply
(see Duplicating File Descriptors below) for compatibility reasons.
</p>
-<a name="Appending-Standard-Output-and-Standard-Error"></a>
-<h4 class="subsection">3.6.5 Appending Standard Output and Standard Error</h4>
+<span id="Appending-Standard-Output-and-Standard-Error"></span><h4 class="subsection">3.6.5 Appending Standard Output and Standard Error</h4>
<p>This construct allows both the
standard output (file descriptor 1) and
the standard error output (file descriptor 2)
@@ -3430,8 +3388,7 @@ expansion of <var>word</var>.
</pre></div>
<p>(see Duplicating File Descriptors below).
</p>
-<a name="Here-Documents"></a>
-<h4 class="subsection">3.6.6 Here Documents</h4>
+<span id="Here-Documents"></span><h4 class="subsection">3.6.6 Here Documents</h4>
<p>This type of redirection instructs the shell to read input from the
current source until a line containing only <var>word</var>
(with no trailing blanks) is seen. All of
@@ -3463,8 +3420,7 @@ line containing <var>delimiter</var>.
This allows here-documents within shell scripts to be indented in a
natural fashion.
</p>
-<a name="Here-Strings"></a>
-<h4 class="subsection">3.6.7 Here Strings</h4>
+<span id="Here-Strings"></span><h4 class="subsection">3.6.7 Here Strings</h4>
<p>A variant of here documents, the format is:
</p><div class="example">
<pre class="example">[<var>n</var>]&lt;&lt;&lt; <var>word</var>
@@ -3473,14 +3429,13 @@ natural fashion.
<p>The <var>word</var> undergoes
tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
-Pathname expansion and word splitting are not performed.
+Filename 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 <var>n</var> if <var>n</var> is specified).
</p>
-<a name="Duplicating-File-Descriptors"></a>
-<h4 class="subsection">3.6.8 Duplicating File Descriptors</h4>
+<span id="Duplicating-File-Descriptors"></span><h4 class="subsection">3.6.8 Duplicating File Descriptors</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]&lt;&amp;<var>word</var>
@@ -3509,8 +3464,7 @@ As a special case, if <var>n</var> is omitted, and <var>word</var> does not
expand to one or more digits or &lsquo;<samp>-</samp>&rsquo;, the standard output and standard
error are redirected as described previously.
</p>
-<a name="Moving-File-Descriptors"></a>
-<h4 class="subsection">3.6.9 Moving File Descriptors</h4>
+<span id="Moving-File-Descriptors"></span><h4 class="subsection">3.6.9 Moving File Descriptors</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]&lt;&amp;<var>digit</var>-
@@ -3526,8 +3480,7 @@ or the standard input (file descriptor 0) if <var>n</var> is not specified.
<p>moves the file descriptor <var>digit</var> to file descriptor <var>n</var>,
or the standard output (file descriptor 1) if <var>n</var> is not specified.
</p>
-<a name="Opening-File-Descriptors-for-Reading-and-Writing"></a>
-<h4 class="subsection">3.6.10 Opening File Descriptors for Reading and Writing</h4>
+<span id="Opening-File-Descriptors-for-Reading-and-Writing"></span><h4 class="subsection">3.6.10 Opening File Descriptors for Reading and Writing</h4>
<p>The redirection operator
</p><div class="example">
<pre class="example">[<var>n</var>]&lt;&gt;<var>word</var>
@@ -3538,46 +3491,43 @@ to be opened for both reading and writing on file descriptor
is not specified. If the file does not exist, it is created.
</p>
<hr>
-<a name="Executing-Commands"></a>
-<div class="header">
+<span id="Executing-Commands"></span><div class="header">
<p>
Next: <a href="#Shell-Scripts" accesskey="n" rel="next">Shell Scripts</a>, Previous: <a href="#Redirections" accesskey="p" rel="prev">Redirections</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Executing-Commands-1"></a>
-<h3 class="section">3.7 Executing Commands</h3>
+<span id="Executing-Commands-1"></span><h3 class="section">3.7 Executing Commands</h3>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Simple-Command-Expansion" accesskey="1">Simple Command Expansion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands simple commands before
+<tr><td align="left" valign="top">&bull; <a href="#Simple-Command-Expansion" accesskey="1">Simple Command Expansion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash expands simple commands before
executing them.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Command-Search-and-Execution" accesskey="2">Command Search and Execution</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash finds commands and runs them.
+<tr><td align="left" valign="top">&bull; <a href="#Command-Search-and-Execution" accesskey="2">Command Search and Execution</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash finds commands and runs them.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Command-Execution-Environment" accesskey="3">Command Execution Environment</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The environment in which Bash
+<tr><td align="left" valign="top">&bull; <a href="#Command-Execution-Environment" accesskey="3">Command Execution Environment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The environment in which Bash
executes commands that are not
shell builtins.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Environment" accesskey="4">Environment</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The environment given to a command.
+<tr><td align="left" valign="top">&bull; <a href="#Environment" accesskey="4">Environment</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The environment given to a command.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Exit-Status" accesskey="5">Exit Status</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The status returned by commands and how Bash
+<tr><td align="left" valign="top">&bull; <a href="#Exit-Status" accesskey="5">Exit Status</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The status returned by commands and how Bash
interprets it.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Signals" accesskey="6">Signals</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens when Bash or a command it runs
+<tr><td align="left" valign="top">&bull; <a href="#Signals" accesskey="6">Signals</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What happens when Bash or a command it runs
receives a signal.
</td></tr>
</table>
<hr>
-<a name="Simple-Command-Expansion"></a>
-<div class="header">
+<span id="Simple-Command-Expansion"></span><div class="header">
<p>
Next: <a href="#Command-Search-and-Execution" accesskey="n" rel="next">Command Search and Execution</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Simple-Command-Expansion-1"></a>
-<h4 class="subsection">3.7.1 Simple Command Expansion</h4>
-<a name="index-command-expansion"></a>
+<span id="Simple-Command-Expansion-1"></span><h4 class="subsection">3.7.1 Simple Command Expansion</h4>
+<span id="index-command-expansion"></span>
<p>When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in
+the following order.
</p>
<ol>
<li> The words that the parser has marked as variable assignments (those
@@ -3614,15 +3564,13 @@ the exit status of the last command substitution performed. If there
were no command substitutions, the command exits with a status of zero.
</p>
<hr>
-<a name="Command-Search-and-Execution"></a>
-<div class="header">
+<span id="Command-Search-and-Execution"></span><div class="header">
<p>
Next: <a href="#Command-Execution-Environment" accesskey="n" rel="next">Command Execution Environment</a>, Previous: <a href="#Simple-Command-Expansion" accesskey="p" rel="prev">Simple Command Expansion</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Command-Search-and-Execution-1"></a>
-<h4 class="subsection">3.7.2 Command Search and Execution</h4>
-<a name="index-command-execution"></a>
-<a name="index-command-search"></a>
+<span id="Command-Search-and-Execution-1"></span><h4 class="subsection">3.7.2 Command Search and Execution</h4>
+<span id="index-command-execution"></span>
+<span id="index-command-search"></span>
<p>After a command has been split into words, if it results in a
simple command and an optional list of arguments, the following
@@ -3671,14 +3619,12 @@ the command to complete and collects its exit status.
</li></ol>
<hr>
-<a name="Command-Execution-Environment"></a>
-<div class="header">
+<span id="Command-Execution-Environment"></span><div class="header">
<p>
Next: <a href="#Environment" accesskey="n" rel="next">Environment</a>, Previous: <a href="#Command-Search-and-Execution" accesskey="p" rel="prev">Command Search and Execution</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Command-Execution-Environment-1"></a>
-<h4 class="subsection">3.7.3 Command Execution Environment</h4>
-<a name="index-execution-environment"></a>
+<span id="Command-Execution-Environment-1"></span><h4 class="subsection">3.7.3 Command Execution Environment</h4>
+<span id="index-execution-environment"></span>
<p>The shell has an <var>execution environment</var>, which consists of the
following:
@@ -3758,14 +3704,12 @@ Otherwise, the invoked command inherits the file descriptors of the calling
shell as modified by redirections.
</p>
<hr>
-<a name="Environment"></a>
-<div class="header">
+<span id="Environment"></span><div class="header">
<p>
Next: <a href="#Exit-Status" accesskey="n" rel="next">Exit Status</a>, Previous: <a href="#Command-Execution-Environment" accesskey="p" rel="prev">Command Execution Environment</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Environment-1"></a>
-<h4 class="subsection">3.7.4 Environment</h4>
-<a name="index-environment"></a>
+<span id="Environment-1"></span><h4 class="subsection">3.7.4 Environment</h4>
+<span id="index-environment"></span>
<p>When a program is invoked it is given an array of strings
called the <var>environment</var>.
@@ -3802,14 +3746,12 @@ is set to the full pathname of the command and passed to that
command in its environment.
</p>
<hr>
-<a name="Exit-Status"></a>
-<div class="header">
+<span id="Exit-Status"></span><div class="header">
<p>
Next: <a href="#Signals" accesskey="n" rel="next">Signals</a>, Previous: <a href="#Environment" accesskey="p" rel="prev">Environment</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Exit-Status-1"></a>
-<h4 class="subsection">3.7.5 Exit Status</h4>
-<a name="index-exit-status-1"></a>
+<span id="Exit-Status-1"></span><h4 class="subsection">3.7.5 Exit Status</h4>
+<span id="index-exit-status-1"></span>
<p>The exit status of an executed command is the value returned by the
<var>waitpid</var> system call or equivalent function. Exit statuses
@@ -3846,14 +3788,12 @@ All builtins return an exit status of 2 to indicate incorrect usage,
generally invalid options or missing arguments.
</p>
<hr>
-<a name="Signals"></a>
-<div class="header">
+<span id="Signals"></span><div class="header">
<p>
Previous: <a href="#Exit-Status" accesskey="p" rel="prev">Exit Status</a>, Up: <a href="#Executing-Commands" accesskey="u" rel="up">Executing Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Signals-1"></a>
-<h4 class="subsection">3.7.6 Signals</h4>
-<a name="index-signal-handling"></a>
+<span id="Signals-1"></span><h4 class="subsection">3.7.6 Signals</h4>
+<span id="index-signal-handling"></span>
<p>When Bash is interactive, in the absence of any traps, it ignores
<code>SIGTERM</code> (so that &lsquo;<samp>kill 0</samp>&rsquo; does not kill an interactive shell),
@@ -3898,14 +3838,12 @@ immediately with an exit status greater than 128, immediately after
which the trap is executed.
</p>
<hr>
-<a name="Shell-Scripts"></a>
-<div class="header">
+<span id="Shell-Scripts"></span><div class="header">
<p>
Previous: <a href="#Executing-Commands" accesskey="p" rel="prev">Executing Commands</a>, Up: <a href="#Basic-Shell-Features" accesskey="u" rel="up">Basic Shell Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Scripts-1"></a>
-<h3 class="section">3.8 Shell Scripts</h3>
-<a name="index-shell-script"></a>
+<span id="Shell-Scripts-1"></span><h3 class="section">3.8 Shell Scripts</h3>
+<span id="index-shell-script"></span>
<p>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,
@@ -3945,42 +3883,49 @@ are retained by the child.
<p>Most versions of Unix make this a part of the operating system&rsquo;s command
execution mechanism. If the first line of a script begins with
the two characters &lsquo;<samp>#!</samp>&rsquo;, the remainder of the line specifies
-an interpreter for the program.
+an interpreter for the program and, depending on the operating system, one
+or more optional arguments for that interpreter.
Thus, you can specify Bash, <code>awk</code>, Perl, or some other
interpreter and write the rest of the script file in that language.
</p>
<p>The arguments to the interpreter
-consist of a single optional argument following the interpreter
+consist of one or more optional arguments 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.
+the script file, followed by the rest of the arguments supplied to the
+script.
+The details of how the interpreter line is split into an interpreter name
+and a set of arguments vary across systems.
+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 a single argument to a maximum of 32 characters, so it&rsquo;s not
+portable to assume that using more than one argument will work.
</p>
<p>Bash scripts often begin with <code>#! /bin/bash</code> (assuming that
Bash has been installed in <samp>/bin</samp>), since this ensures that
Bash will be used to interpret the script, even if it is executed
-under another shell.
+under another shell. It&rsquo;s a common idiom to use <code>env</code> to find
+<code>bash</code> even if it&rsquo;s been installed in another directory:
+<code>#!/usr/bin/env bash</code> will find the first occurrence of <code>bash</code>
+in <code>$PATH</code>.
</p>
<hr>
-<a name="Shell-Builtin-Commands"></a>
-<div class="header">
+<span id="Shell-Builtin-Commands"></span><div class="header">
<p>
Next: <a href="#Shell-Variables" accesskey="n" rel="next">Shell Variables</a>, Previous: <a href="#Basic-Shell-Features" accesskey="p" rel="prev">Basic Shell Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Builtin-Commands-1"></a>
-<h2 class="chapter">4 Shell Builtin Commands</h2>
+<span id="Shell-Builtin-Commands-1"></span><h2 class="chapter">4 Shell Builtin Commands</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Bourne-Shell-Builtins" accesskey="1">Bourne Shell Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands inherited from the Bourne
+<tr><td align="left" valign="top">&bull; <a href="#Bourne-Shell-Builtins" accesskey="1">Bourne Shell Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands inherited from the Bourne
Shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-Builtins" accesskey="2">Bash Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Table of builtins specific to Bash.
+<tr><td align="left" valign="top">&bull; <a href="#Bash-Builtins" accesskey="2">Bash Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Table of builtins specific to Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Modifying-Shell-Behavior" accesskey="3">Modifying Shell Behavior</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtins to modify shell attributes and
+<tr><td align="left" valign="top">&bull; <a href="#Modifying-Shell-Behavior" accesskey="3">Modifying Shell Behavior</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtins to modify shell attributes and
optional behavior.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Special-Builtins" accesskey="4">Special Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands classified specially by
+<tr><td align="left" valign="top">&bull; <a href="#Special-Builtins" accesskey="4">Special Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands classified specially by
POSIX.
</td></tr>
</table>
@@ -4019,20 +3964,18 @@ options interpret arguments beginning with &lsquo;<samp>-</samp>&rsquo; as inval
require &lsquo;<samp>--</samp>&rsquo; to prevent this interpretation.
</p>
<hr>
-<a name="Bourne-Shell-Builtins"></a>
-<div class="header">
+<span id="Bourne-Shell-Builtins"></span><div class="header">
<p>
Next: <a href="#Bash-Builtins" accesskey="n" rel="next">Bash Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bourne-Shell-Builtins-1"></a>
-<h3 class="section">4.1 Bourne Shell Builtins</h3>
+<span id="Bourne-Shell-Builtins-1"></span><h3 class="section">4.1 Bourne Shell Builtins</h3>
<p>The following shell builtin commands are inherited from the Bourne Shell.
These commands are implemented as specified by the <small>POSIX</small> standard.
</p>
<dl compact="compact">
<dt><code>: <span class="roman">(a colon)</span></code></dt>
-<dd><a name="index-_003a"></a>
+<dd><span id="index-_003a"></span>
<div class="example">
<pre class="example">: [<var>arguments</var>]
</pre></div>
@@ -4042,7 +3985,7 @@ The return status is zero.
</p>
</dd>
<dt><code>. <span class="roman">(a period)</span></code></dt>
-<dd><a name="index-_002e"></a>
+<dd><span id="index-_002e"></span>
<div class="example">
<pre class="example">. <var>filename</var> [<var>arguments</var>]
</pre></div>
@@ -4068,7 +4011,7 @@ This builtin is equivalent to <code>source</code>.
</p>
</dd>
<dt><code>break</code></dt>
-<dd><a name="index-break"></a>
+<dd><span id="index-break"></span>
<div class="example">
<pre class="example">break [<var>n</var>]
</pre></div>
@@ -4080,7 +4023,7 @@ The return status is zero unless <var>n</var> is not greater than or equal to 1.
</p>
</dd>
<dt><code>cd</code></dt>
-<dd><a name="index-cd"></a>
+<dd><span id="index-cd"></span>
<div class="example">
<pre class="example">cd [-L|[-P [-e]] [-@] [<var>directory</var>]
</pre></div>
@@ -4129,7 +4072,7 @@ non-zero otherwise.
</p>
</dd>
<dt><code>continue</code></dt>
-<dd><a name="index-continue"></a>
+<dd><span id="index-continue"></span>
<div class="example">
<pre class="example">continue [<var>n</var>]
</pre></div>
@@ -4143,7 +4086,7 @@ The return status is zero unless <var>n</var> is not greater than or equal to 1.
</p>
</dd>
<dt><code>eval</code></dt>
-<dd><a name="index-eval"></a>
+<dd><span id="index-eval"></span>
<div class="example">
<pre class="example">eval [<var>arguments</var>]
</pre></div>
@@ -4156,7 +4099,7 @@ zero.
</p>
</dd>
<dt><code>exec</code></dt>
-<dd><a name="index-exec"></a>
+<dd><span id="index-exec"></span>
<div class="example">
<pre class="example">exec [-cl] [-a <var>name</var>] [<var>command</var> [<var>arguments</var>]]
</pre></div>
@@ -4182,7 +4125,7 @@ return status is zero; otherwise the return status is non-zero.
</p>
</dd>
<dt><code>exit</code></dt>
-<dd><a name="index-exit"></a>
+<dd><span id="index-exit"></span>
<div class="example">
<pre class="example">exit [<var>n</var>]
</pre></div>
@@ -4193,7 +4136,7 @@ Any trap on <code>EXIT</code> is executed before the shell terminates.
</p>
</dd>
<dt><code>export</code></dt>
-<dd><a name="index-export"></a>
+<dd><span id="index-export"></span>
<div class="example">
<pre class="example">export [-fn] [-p] [<var>name</var>[=<var>value</var>]]
</pre></div>
@@ -4214,9 +4157,9 @@ with a name that is not a shell function.
</p>
</dd>
<dt><code>getopts</code></dt>
-<dd><a name="index-getopts"></a>
+<dd><span id="index-getopts"></span>
<div class="example">
-<pre class="example">getopts <var>optstring</var> <var>name</var> [<var>args</var>]
+<pre class="example">getopts <var>optstring</var> <var>name</var> [<var>arg</var> &hellip;]
</pre></div>
<p><code>getopts</code> is used by shell scripts to parse positional parameters.
@@ -4245,7 +4188,7 @@ and <var>name</var> is set to &lsquo;<samp>?</samp>&rsquo;.
</p>
<p><code>getopts</code>
normally parses the positional parameters, but if more arguments are
-given in <var>args</var>, <code>getopts</code> parses those instead.
+supplied as <var>arg</var> values, <code>getopts</code> parses those instead.
</p>
<p><code>getopts</code> can report errors in two ways. If the first character of
<var>optstring</var> is a colon, <var>silent</var>
@@ -4270,7 +4213,7 @@ If <code>getopts</code> is silent, then a colon (&lsquo;<samp>:</samp>&rsquo;) i
</p>
</dd>
<dt><code>hash</code></dt>
-<dd><a name="index-hash"></a>
+<dd><span id="index-hash"></span>
<div class="example">
<pre class="example">hash [-r] [-p <var>filename</var>] [-dt] [<var>name</var>]
</pre></div>
@@ -4299,7 +4242,7 @@ option is supplied.
</p>
</dd>
<dt><code>pwd</code></dt>
-<dd><a name="index-pwd"></a>
+<dd><span id="index-pwd"></span>
<div class="example">
<pre class="example">pwd [-LP]
</pre></div>
@@ -4315,7 +4258,7 @@ is supplied.
</p>
</dd>
<dt><code>readonly</code></dt>
-<dd><a name="index-readonly"></a>
+<dd><span id="index-readonly"></span>
<div class="example">
<pre class="example">readonly [-aAf] [-p] [<var>name</var>[=<var>value</var>]] &hellip;
</pre></div>
@@ -4342,7 +4285,7 @@ or the <samp>-f</samp> option is supplied with a name that is not a shell functi
</p>
</dd>
<dt><code>return</code></dt>
-<dd><a name="index-return"></a>
+<dd><span id="index-return"></span>
<div class="example">
<pre class="example">return [<var>n</var>]
</pre></div>
@@ -4371,7 +4314,7 @@ and not during the execution of a script by <code>.</code> or <code>source</code
</p>
</dd>
<dt><code>shift</code></dt>
-<dd><a name="index-shift"></a>
+<dd><span id="index-shift"></span>
<div class="example">
<pre class="example">shift [<var>n</var>]
</pre></div>
@@ -4379,7 +4322,7 @@ and not during the execution of a script by <code>.</code> or <code>source</code
<p>Shift the positional parameters to the left by <var>n</var>.
The positional parameters from <var>n</var>+1 &hellip; <code>$#</code> are
renamed to <code>$1</code> &hellip; <code>$#</code>-<var>n</var>.
-Parameters represented by the numbers <code>$#</code> to <code>$#</code>-<var>n</var>+1
+Parameters represented by the numbers <code>$#</code> down to <code>$#</code>-<var>n</var>+1
are unset.
<var>n</var> must be a non-negative number less than or equal to <code>$#</code>.
If <var>n</var> is zero or greater than <code>$#</code>, the positional parameters
@@ -4391,8 +4334,8 @@ less than zero, non-zero otherwise.
</dd>
<dt><code>test</code></dt>
<dt><code>[</code></dt>
-<dd><a name="index-test"></a>
-<a name="index-_005b"></a>
+<dd><span id="index-test"></span>
+<span id="index-_005b"></span>
<div class="example">
<pre class="example">test <var>expr</var>
</pre></div>
@@ -4491,7 +4434,7 @@ operators sort lexicographically using ASCII ordering.
</p>
</dd>
<dt><code>times</code></dt>
-<dd><a name="index-times"></a>
+<dd><span id="index-times"></span>
<div class="example">
<pre class="example">times
</pre></div>
@@ -4501,7 +4444,7 @@ The return status is zero.
</p>
</dd>
<dt><code>trap</code></dt>
-<dd><a name="index-trap"></a>
+<dd><span id="index-trap"></span>
<div class="example">
<pre class="example">trap [-lp] [<var>arg</var>] [<var>sigspec</var> &hellip;]
</pre></div>
@@ -4563,7 +4506,7 @@ valid signal.
</p>
</dd>
<dt><code>umask</code></dt>
-<dd><a name="index-umask"></a>
+<dd><span id="index-umask"></span>
<div class="example">
<pre class="example">umask [-p] [-S] [<var>mode</var>]
</pre></div>
@@ -4586,7 +4529,7 @@ results in permissions of <code>755</code>.
</p>
</dd>
<dt><code>unset</code></dt>
-<dd><a name="index-unset"></a>
+<dd><span id="index-unset"></span>
<div class="example">
<pre class="example">unset [-fnv] [<var>name</var>]
</pre></div>
@@ -4601,21 +4544,21 @@ the <var>nameref</var> attribute, <var>name</var> will be unset rather than the
variable it references.
<samp>-n</samp> has no effect if the <samp>-f</samp> option is supplied.
If no options are supplied, each <var>name</var> refers to a variable; if
-there is no variable by that name, any function with that name is
+there is no variable by that name, a function with that name, if any, is
unset.
Readonly variables and functions may not be unset.
+Some shell variables lose their special behavior if they are unset; such
+behavior is noted in the description of the individual variables.
The return status is zero unless a <var>name</var> is readonly.
</p></dd>
</dl>
<hr>
-<a name="Bash-Builtins"></a>
-<div class="header">
+<span id="Bash-Builtins"></span><div class="header">
<p>
Next: <a href="#Modifying-Shell-Behavior" accesskey="n" rel="next">Modifying Shell Behavior</a>, Previous: <a href="#Bourne-Shell-Builtins" accesskey="p" rel="prev">Bourne Shell Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Builtin-Commands"></a>
-<h3 class="section">4.2 Bash Builtin Commands</h3>
+<span id="Bash-Builtin-Commands"></span><h3 class="section">4.2 Bash Builtin Commands</h3>
<p>This section describes builtin commands which are unique to
or have been extended in Bash.
@@ -4623,7 +4566,7 @@ Some of these commands are specified in the <small>POSIX</small> standard.
</p>
<dl compact="compact">
<dt><code>alias</code></dt>
-<dd><a name="index-alias"></a>
+<dd><span id="index-alias"></span>
<div class="example">
<pre class="example">alias [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
@@ -4638,7 +4581,7 @@ Aliases are described in <a href="#Aliases">Aliases</a>.
</p>
</dd>
<dt><code>bind</code></dt>
-<dd><a name="index-bind"></a>
+<dd><span id="index-bind"></span>
<div class="example">
<pre class="example">bind [-m <var>keymap</var>] [-lpsvPSVX]
bind [-m <var>keymap</var>] [-q <var>function</var>] [-u <var>function</var>] [-r <var>keyseq</var>]
@@ -4729,11 +4672,12 @@ initialization file.
entered.
When <var>shell-command</var> is executed, the shell sets the
<code>READLINE_LINE</code> variable to the contents of the Readline line
-buffer and the <code>READLINE_POINT</code> variable to the current location
-of the insertion point.
-If the executed command changes the value of <code>READLINE_LINE</code> or
-<code>READLINE_POINT</code>, those new values will be reflected in the
-editing state.
+buffer and the <code>READLINE_POINT</code> and <code>READLINE_MARK</code> variables
+to the current location of the insertion point and the saved insertion
+point (the <var>mark</var>), respectively.
+If the executed command changes the value of any of <code>READLINE_LINE</code>,
+<code>READLINE_POINT</code>, or <code>READLINE_MARK</code>, those new values will be
+reflected in the editing state.
</p>
</dd>
<dt><code>-X</code></dt>
@@ -4747,7 +4691,7 @@ error occurs.
</p>
</dd>
<dt><code>builtin</code></dt>
-<dd><a name="index-builtin"></a>
+<dd><span id="index-builtin"></span>
<div class="example">
<pre class="example">builtin [<var>shell-builtin</var> [<var>args</var>]]
</pre></div>
@@ -4761,7 +4705,7 @@ builtin command.
</p>
</dd>
<dt><code>caller</code></dt>
-<dd><a name="index-caller"></a>
+<dd><span id="index-caller"></span>
<div class="example">
<pre class="example">caller [<var>expr</var>]
</pre></div>
@@ -4783,7 +4727,7 @@ call stack.
</p>
</dd>
<dt><code>command</code></dt>
-<dd><a name="index-command"></a>
+<dd><span id="index-command"></span>
<div class="example">
<pre class="example">command [-pVv] <var>command</var> [<var>arguments</var> &hellip;]
</pre></div>
@@ -4810,9 +4754,9 @@ zero if <var>command</var> is found, and non-zero if not.
</p>
</dd>
<dt><code>declare</code></dt>
-<dd><a name="index-declare"></a>
+<dd><span id="index-declare"></span>
<div class="example">
-<pre class="example">declare [-aAfFgilnrtux] [-p] [<var>name</var>[=<var>value</var>] &hellip;]
+<pre class="example">declare [-aAfFgiIlnrtux] [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
<p>Declare variables and give them attributes. If no <var>name</var>s
@@ -4841,6 +4785,12 @@ each <var>name</var> is defined are displayed as well.
the global scope, even when <code>declare</code> is executed in a shell function.
It is ignored in all other cases.
</p>
+<p>The <samp>-I</samp> option causes local variables to inherit the attributes
+(except the <var>nameref</var> attribute)
+and value of any existing variable with the same
+<var>name</var> at a surrounding scope.
+If there is no existing variable, the local variable is initially unset.
+</p>
<p>The following options can be used to restrict output to variables with
the specified attributes or to give variables attributes:
</p>
@@ -4929,7 +4879,7 @@ or an attempt is made to display a non-existent function with <samp>-f</samp>.
</p>
</dd>
<dt><code>echo</code></dt>
-<dd><a name="index-echo"></a>
+<dd><span id="index-echo"></span>
<div class="example">
<pre class="example">echo [-neE] [<var>arg</var> &hellip;]
</pre></div>
@@ -5000,7 +4950,7 @@ escape characters by default.
</dd>
<dt><code>enable</code></dt>
-<dd><a name="index-enable"></a>
+<dd><span id="index-enable"></span>
<div class="example">
<pre class="example">enable [-a] [-dnps] [-f <var>filename</var>] [<var>name</var> &hellip;]
</pre></div>
@@ -5034,7 +4984,7 @@ or there is an error loading a new builtin from a shared object.
</p>
</dd>
<dt><code>help</code></dt>
-<dd><a name="index-help"></a>
+<dd><span id="index-help"></span>
<div class="example">
<pre class="example">help [-dms] [<var>pattern</var>]
</pre></div>
@@ -5062,7 +5012,7 @@ the builtins is printed.
</p>
</dd>
<dt><code>let</code></dt>
-<dd><a name="index-let"></a>
+<dd><span id="index-let"></span>
<div class="example">
<pre class="example">let <var>expression</var> [<var>expression</var> &hellip;]
</pre></div>
@@ -5075,7 +5025,7 @@ otherwise 0 is returned.
</p>
</dd>
<dt><code>local</code></dt>
-<dd><a name="index-local"></a>
+<dd><span id="index-local"></span>
<div class="example">
<pre class="example">local [<var>option</var>] <var>name</var>[=<var>value</var>] &hellip;
</pre></div>
@@ -5090,13 +5040,15 @@ If <var>name</var> is &lsquo;<samp>-</samp>&rsquo;, the set of shell options is
function in which <code>local</code> is invoked: shell options changed using
the <code>set</code> builtin inside the function are restored to their original
values when the function returns.
+The restore is effected as if a series of <code>set</code> commands were executed
+to restore the values that were in place before the function.
The return status is zero unless <code>local</code> is used outside
a function, an invalid <var>name</var> is supplied, or <var>name</var> is a
readonly variable.
</p>
</dd>
<dt><code>logout</code></dt>
-<dd><a name="index-logout"></a>
+<dd><span id="index-logout"></span>
<div class="example">
<pre class="example">logout [<var>n</var>]
</pre></div>
@@ -5106,7 +5058,7 @@ parent.
</p>
</dd>
<dt><code>mapfile</code></dt>
-<dd><a name="index-mapfile"></a>
+<dd><span id="index-mapfile"></span>
<div class="example">
<pre class="example">mapfile [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
[-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
@@ -5167,7 +5119,7 @@ is not an indexed array.
</p>
</dd>
<dt><code>printf</code></dt>
-<dd><a name="index-printf"></a>
+<dd><span id="index-printf"></span>
<div class="example">
<pre class="example">printf [-v <var>var</var>] <var>format</var> [<var>arguments</var>]
</pre></div>
@@ -5207,6 +5159,11 @@ This is an exception to the usual <code>printf</code> behavior.
</p></dd>
</dl>
+<p>The %b, %q, and %T directives all use the field width and precision
+arguments from the format specification and write that many bytes from
+(or use that wide a field for) the expanded argument, which usually
+contains more characters than the original.
+</p>
<p>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
@@ -5220,7 +5177,7 @@ non-zero on failure.
</p>
</dd>
<dt><code>read</code></dt>
-<dd><a name="index-read"></a>
+<dd><span id="index-read"></span>
<div class="example">
<pre class="example">read [-ers] [-a <var>aname</var>] [-d <var>delim</var>] [-i <var>text</var>] [-n <var>nchars</var>]
[-N <var>nchars</var>] [-p <var>prompt</var>] [-t <var>timeout</var>] [-u <var>fd</var>] [<var>name</var> &hellip;]
@@ -5242,12 +5199,6 @@ are used to split the line into words using the same rules the shell
uses for expansion (described above in <a href="#Word-Splitting">Word Splitting</a>).
The backslash character &lsquo;<samp>\</samp>&rsquo; 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 <code>REPLY</code>.
-The exit status is zero, unless end-of-file is encountered, <code>read</code>
-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 <samp>-u</samp>.
</p>
<p>Options, if supplied, have the following meanings:
</p>
@@ -5325,7 +5276,7 @@ from regular files.
If <code>read</code> times out, <code>read</code> saves any partial input read into
the specified variable <var>name</var>.
If <var>timeout</var> is 0, <code>read</code> returns immediately, without trying to
-read and data. The exit status is 0 if input is available on
+read any data. The exit status is 0 if input is available on
the specified file descriptor, non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
</p>
@@ -5335,9 +5286,18 @@ The exit status is greater than 128 if the timeout is exceeded.
</p></dd>
</dl>
+<p>If no <var>name</var>s are supplied, the line read,
+without the ending delimiter but otherwise unmodified,
+is assigned to the
+variable <code>REPLY</code>.
+The exit status is zero, unless end-of-file is encountered, <code>read</code>
+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 <samp>-u</samp>.
+</p>
</dd>
<dt><code>readarray</code></dt>
-<dd><a name="index-readarray"></a>
+<dd><span id="index-readarray"></span>
<div class="example">
<pre class="example">readarray [-d <var>delim</var>] [-n <var>count</var>] [-O <var>origin</var>] [-s <var>count</var>]
[-t] [-u <var>fd</var>] [-C <var>callback</var>] [-c <var>quantum</var>] [<var>array</var>]
@@ -5351,7 +5311,7 @@ if the <samp>-u</samp> option is supplied.
</p>
</dd>
<dt><code>source</code></dt>
-<dd><a name="index-source"></a>
+<dd><span id="index-source"></span>
<div class="example">
<pre class="example">source <var>filename</var>
</pre></div>
@@ -5360,7 +5320,7 @@ if the <samp>-u</samp> option is supplied.
</p>
</dd>
<dt><code>type</code></dt>
-<dd><a name="index-type"></a>
+<dd><span id="index-type"></span>
<div class="example">
<pre class="example">type [-afptP] [<var>name</var> &hellip;]
</pre></div>
@@ -5399,7 +5359,7 @@ if any are not found.
</p>
</dd>
<dt><code>typeset</code></dt>
-<dd><a name="index-typeset"></a>
+<dd><span id="index-typeset"></span>
<div class="example">
<pre class="example">typeset [-afFgrxilnrtux] [-p] [<var>name</var>[=<var>value</var>] &hellip;]
</pre></div>
@@ -5410,9 +5370,10 @@ It is a synonym for the <code>declare</code> builtin command.
</p>
</dd>
<dt><code>ulimit</code></dt>
-<dd><a name="index-ulimit"></a>
+<dd><span id="index-ulimit"></span>
<div class="example">
-<pre class="example">ulimit [-HSabcdefiklmnpqrstuvxPT] [<var>limit</var>]
+<pre class="example">ulimit [-HS] -a
+ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [<var>limit</var>]
</pre></div>
<p><code>ulimit</code> provides control over the resources available to processes
@@ -5429,7 +5390,7 @@ option is given, it is interpreted as follows:
</p>
</dd>
<dt><code>-a</code></dt>
-<dd><p>All current limits are reported.
+<dd><p>All current limits are reported; no limits are set.
</p>
</dd>
<dt><code>-b</code></dt>
@@ -5478,7 +5439,7 @@ allow this value to be set).
</p>
</dd>
<dt><code>-q</code></dt>
-<dd><p>The maximum number of bytes in POSIX message queues.
+<dd><p>The maximum number of bytes in <small>POSIX</small> message queues.
</p>
</dd>
<dt><code>-r</code></dt>
@@ -5510,6 +5471,10 @@ some systems, to its children.
<dd><p>The maximum number of pseudoterminals.
</p>
</dd>
+<dt><code>-R</code></dt>
+<dd><p>The maximum time a real-time process can run before blocking, in microseconds.
+</p>
+</dd>
<dt><code>-T</code></dt>
<dd><p>The maximum number of threads.
</p></dd>
@@ -5524,11 +5489,16 @@ 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 <samp>-H</samp> option is supplied.
+When more than one
+resource is specified, the limit name and unit, if appropriate,
+are printed before the value.
When setting new limits, if neither <samp>-H</samp> nor <samp>-S</samp> is supplied,
both the hard and soft limits are set.
If no option is given, then <samp>-f</samp> is assumed. Values are in 1024-byte
-increments, except for <samp>-t</samp>, which is in seconds; <samp>-p</samp>,
-which is in units of 512-byte blocks;
+increments, except for
+<samp>-t</samp>, which is in seconds;
+<samp>-R</samp>, which is in microseconds;
+<samp>-p</samp>, which is in units of 512-byte blocks;
<samp>-P</samp>,
<samp>-T</samp>,
<samp>-b</samp>,
@@ -5542,7 +5512,7 @@ or an error occurs while setting a new limit.
</p>
</dd>
<dt><code>unalias</code></dt>
-<dd><a name="index-unalias"></a>
+<dd><span id="index-unalias"></span>
<div class="example">
<pre class="example">unalias [-a] [<var>name</var> &hellip; ]
</pre></div>
@@ -5554,30 +5524,26 @@ Aliases are described in <a href="#Aliases">Aliases</a>.
</dl>
<hr>
-<a name="Modifying-Shell-Behavior"></a>
-<div class="header">
+<span id="Modifying-Shell-Behavior"></span><div class="header">
<p>
Next: <a href="#Special-Builtins" accesskey="n" rel="next">Special Builtins</a>, Previous: <a href="#Bash-Builtins" accesskey="p" rel="prev">Bash Builtins</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Modifying-Shell-Behavior-1"></a>
-<h3 class="section">4.3 Modifying Shell Behavior</h3>
+<span id="Modifying-Shell-Behavior-1"></span><h3 class="section">4.3 Modifying Shell Behavior</h3>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#The-Set-Builtin" accesskey="1">The Set Builtin</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Change the values of shell attributes and
+<tr><td align="left" valign="top">&bull; <a href="#The-Set-Builtin" accesskey="1">The Set Builtin</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Change the values of shell attributes and
positional parameters.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#The-Shopt-Builtin" accesskey="2">The Shopt Builtin</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Modify shell optional behavior.
+<tr><td align="left" valign="top">&bull; <a href="#The-Shopt-Builtin" accesskey="2">The Shopt Builtin</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Modify shell optional behavior.
</td></tr>
</table>
<hr>
-<a name="The-Set-Builtin"></a>
-<div class="header">
+<span id="The-Set-Builtin"></span><div class="header">
<p>
Next: <a href="#The-Shopt-Builtin" accesskey="n" rel="next">The Shopt Builtin</a>, Up: <a href="#Modifying-Shell-Behavior" accesskey="u" rel="up">Modifying Shell Behavior</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="The-Set-Builtin-1"></a>
-<h4 class="subsection">4.3.1 The Set Builtin</h4>
+<span id="The-Set-Builtin-1"></span><h4 class="subsection">4.3.1 The Set Builtin</h4>
<p>This builtin is so complicated that it deserves its own section. <code>set</code>
allows you to change the values of shell options and set the positional
@@ -5585,7 +5551,7 @@ parameters, or to display the names and values of shell variables.
</p>
<dl compact="compact">
<dt><code>set</code></dt>
-<dd><a name="index-set"></a>
+<dd><span id="index-set"></span>
<div class="example">
<pre class="example">set [--abefhkmnptuvxBCEHPT] [-o <var>option-name</var>] [<var>argument</var> &hellip;]
set [+abefhkmnptuvxBCEHPT] [+o <var>option-name</var>] [<var>argument</var> &hellip;]
@@ -5916,19 +5882,17 @@ The special parameter <code>#</code> is set to N.
</dl>
<hr>
-<a name="The-Shopt-Builtin"></a>
-<div class="header">
+<span id="The-Shopt-Builtin"></span><div class="header">
<p>
Previous: <a href="#The-Set-Builtin" accesskey="p" rel="prev">The Set Builtin</a>, Up: <a href="#Modifying-Shell-Behavior" accesskey="u" rel="up">Modifying Shell Behavior</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="The-Shopt-Builtin-1"></a>
-<h4 class="subsection">4.3.2 The Shopt Builtin</h4>
+<span id="The-Shopt-Builtin-1"></span><h4 class="subsection">4.3.2 The Shopt Builtin</h4>
<p>This builtin allows you to change additional shell optional behavior.
</p>
<dl compact="compact">
<dt><code>shopt</code></dt>
-<dd><a name="index-shopt"></a>
+<dd><span id="index-shopt"></span>
<div class="example">
<pre class="example">shopt [-pqsu] [-o] [<var>optname</var> &hellip;]
</pre></div>
@@ -6042,67 +6006,14 @@ history is enabled (see <a href="#Bash-History-Facilities">Bash History Faciliti
</p>
</dd>
<dt><code>compat31</code></dt>
-<dd><p>If set, Bash
-changes its behavior to that of version 3.1 with respect to quoted
-arguments to the conditional command&rsquo;s &lsquo;<samp>=~</samp>&rsquo; operator
-and with respect to locale-specific
-string comparison when using the <code>[[</code>
-conditional command&rsquo;s &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; operators.
-Bash versions prior to bash-4.1 use ASCII collation and strcmp(3);
-bash-4.1 and later use the current locale&rsquo;s collation sequence and strcoll(3).
-</p>
-</dd>
<dt><code>compat32</code></dt>
-<dd><p>If set, Bash
-changes its behavior to that of version 3.2 with respect to locale-specific
-string comparison when using the <code>[[</code>
-conditional command&rsquo;s &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; 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.
-</p>
-</dd>
<dt><code>compat40</code></dt>
-<dd><p>If set, Bash
-changes its behavior to that of version 4.0 with respect to locale-specific
-string comparison when using the <code>[[</code>
-conditional command&rsquo;s &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; operators (see description
-of <code>compat31</code>)
-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.
-</p>
-</dd>
<dt><code>compat41</code></dt>
-<dd><p>If set, Bash, when in <small>POSIX</small> 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 <small>POSIX</small> mode through version 4.1.
-The default Bash behavior remains as in previous versions.
-</p>
-</dd>
<dt><code>compat42</code></dt>
-<dd><p>If set, Bash
-does not process the replacement string in the pattern substitution word
-expansion using quote removal.
-</p>
-</dd>
<dt><code>compat43</code></dt>
-<dd><p>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</code>,
-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</code> or
-<code>continue</code> in a shell function to affect loops in the caller&rsquo;s context).
-</p>
-</dd>
<dt><code>compat44</code></dt>
-<dd><p>If set, Bash
-saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
-used, regardless of whether or not extended debugging mode is enabled.
+<dd><p>These control aspects of the shell&rsquo;s compatibility mode
+(see <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>).
</p>
</dd>
<dt><code>complete_fullquote</code></dt>
@@ -6158,7 +6069,9 @@ This option is enabled by default for interactive shells.
</p>
</dd>
<dt><code>extdebug</code></dt>
-<dd><p>If set at shell invocation, arrange to execute the debugger profile
+<dd><p>If set at shell invocation,
+or in a shell startup file,
+arrange to execute the debugger profile
before the shell starts, identical to the <samp>--debugger</samp> option.
If set after invocation, behavior intended for use by debuggers is enabled:
</p>
@@ -6385,23 +6298,16 @@ by default.
</p>
</dd>
</dl>
-
-<p>The return status when listing options is zero if all <var>optnames</var>
-are enabled, non-zero otherwise.
-When setting or unsetting options, the return status is zero unless an
-<var>optname</var> is not a valid shell option.
-</p></dd>
+</dd>
</dl>
<hr>
-<a name="Special-Builtins"></a>
-<div class="header">
+<span id="Special-Builtins"></span><div class="header">
<p>
Previous: <a href="#Modifying-Shell-Behavior" accesskey="p" rel="prev">Modifying Shell Behavior</a>, Up: <a href="#Shell-Builtin-Commands" accesskey="u" rel="up">Shell Builtin Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Special-Builtins-1"></a>
-<h3 class="section">4.4 Special Builtins</h3>
-<a name="index-special-builtin-1"></a>
+<span id="Special-Builtins-1"></span><h3 class="section">4.4 Special Builtins</h3>
+<span id="index-special-builtin-1"></span>
<p>For historical reasons, the <small>POSIX</small> standard has classified
several builtin commands as <em>special</em>.
@@ -6428,19 +6334,17 @@ shift trap unset<!-- /@w -->
</pre></div>
<hr>
-<a name="Shell-Variables"></a>
-<div class="header">
+<span id="Shell-Variables"></span><div class="header">
<p>
Next: <a href="#Bash-Features" accesskey="n" rel="next">Bash Features</a>, Previous: <a href="#Shell-Builtin-Commands" accesskey="p" rel="prev">Shell Builtin Commands</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Variables-1"></a>
-<h2 class="chapter">5 Shell Variables</h2>
+<span id="Shell-Variables-1"></span><h2 class="chapter">5 Shell Variables</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Bourne-Shell-Variables" accesskey="1">Bourne Shell Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables which Bash uses in the same way
+<tr><td align="left" valign="top">&bull; <a href="#Bourne-Shell-Variables" accesskey="1">Bourne Shell Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables which Bash uses in the same way
as the Bourne Shell.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-Variables" accesskey="2">Bash Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">List of variables that exist in Bash.
+<tr><td align="left" valign="top">&bull; <a href="#Bash-Variables" accesskey="2">Bash Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">List of variables that exist in Bash.
</td></tr>
</table>
@@ -6448,27 +6352,25 @@ Next: <a href="#Bash-Features" accesskey="n" rel="next">Bash Features</a>, Previ
Bash automatically assigns default values to a number of variables.
</p>
<hr>
-<a name="Bourne-Shell-Variables"></a>
-<div class="header">
+<span id="Bourne-Shell-Variables"></span><div class="header">
<p>
Next: <a href="#Bash-Variables" accesskey="n" rel="next">Bash Variables</a>, Up: <a href="#Shell-Variables" accesskey="u" rel="up">Shell Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bourne-Shell-Variables-1"></a>
-<h3 class="section">5.1 Bourne Shell Variables</h3>
+<span id="Bourne-Shell-Variables-1"></span><h3 class="section">5.1 Bourne Shell Variables</h3>
<p>Bash uses certain shell variables in the same way as the Bourne shell.
In some cases, Bash assigns a default value to the variable.
</p>
<dl compact="compact">
<dt><code>CDPATH</code>
-<a name="index-CDPATH"></a>
+<span id="index-CDPATH"></span>
</dt>
<dd><p>A colon-separated list of directories used as a search path for
the <code>cd</code> builtin command.
</p>
</dd>
<dt><code>HOME</code>
-<a name="index-HOME"></a>
+<span id="index-HOME"></span>
</dt>
<dd><p>The current user&rsquo;s home directory; the default for the <code>cd</code> builtin
command.
@@ -6477,14 +6379,14 @@ The value of this variable is also used by tilde expansion
</p>
</dd>
<dt><code>IFS</code>
-<a name="index-IFS"></a>
+<span id="index-IFS"></span>
</dt>
<dd><p>A list of characters that separate fields; used when the shell splits
words as part of expansion.
</p>
</dd>
<dt><code>MAIL</code>
-<a name="index-MAIL"></a>
+<span id="index-MAIL"></span>
</dt>
<dd><p>If this parameter is set to a filename or directory name
and the <code>MAILPATH</code> variable
@@ -6493,7 +6395,7 @@ the specified file or Maildir-format directory.
</p>
</dd>
<dt><code>MAILPATH</code>
-<a name="index-MAILPATH"></a>
+<span id="index-MAILPATH"></span>
</dt>
<dd><p>A colon-separated list of filenames which the shell periodically checks
for new mail.
@@ -6505,19 +6407,19 @@ the current mail file.
</p>
</dd>
<dt><code>OPTARG</code>
-<a name="index-OPTARG"></a>
+<span id="index-OPTARG"></span>
</dt>
<dd><p>The value of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
<dt><code>OPTIND</code>
-<a name="index-OPTIND"></a>
+<span id="index-OPTIND"></span>
</dt>
<dd><p>The index of the last option argument processed by the <code>getopts</code> builtin.
</p>
</dd>
<dt><code>PATH</code>
-<a name="index-PATH"></a>
+<span id="index-PATH"></span>
</dt>
<dd><p>A colon-separated list of directories in which the shell looks for
commands.
@@ -6528,7 +6430,7 @@ or trailing colon.
</p>
</dd>
<dt><code>PS1</code>
-<a name="index-PS1"></a>
+<span id="index-PS1"></span>
</dt>
<dd><p>The primary prompt string. The default value is &lsquo;<samp>\s-\v\$ </samp>&rsquo;.
See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for the complete list of escape
@@ -6536,7 +6438,7 @@ sequences that are expanded before <code>PS1</code> is displayed.
</p>
</dd>
<dt><code>PS2</code>
-<a name="index-PS2"></a>
+<span id="index-PS2"></span>
</dt>
<dd><p>The secondary prompt string. The default value is &lsquo;<samp>&gt; </samp>&rsquo;.
<code>PS2</code> is expanded in the same way as <code>PS1</code> before being
@@ -6546,13 +6448,11 @@ displayed.
</dl>
<hr>
-<a name="Bash-Variables"></a>
-<div class="header">
+<span id="Bash-Variables"></span><div class="header">
<p>
Previous: <a href="#Bourne-Shell-Variables" accesskey="p" rel="prev">Bourne Shell Variables</a>, Up: <a href="#Shell-Variables" accesskey="u" rel="up">Shell Variables</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Variables-1"></a>
-<h3 class="section">5.2 Bash Variables</h3>
+<span id="Bash-Variables-1"></span><h3 class="section">5.2 Bash Variables</h3>
<p>These variables are set or used by Bash, but other shells
do not normally treat them specially.
@@ -6562,14 +6462,29 @@ variables for controlling the job control facilities
(see <a href="#Job-Control-Variables">Job Control Variables</a>).
</p>
<dl compact="compact">
+<dt><code>_</code>
+<span id="index-_005f"></span>
+</dt>
+<dd><span id="index-_0024_005f"></span>
+<p>($_, an underscore.)
+At shell startup, set to the 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 simple
+command executed in the foreground, 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.
+</p>
+</dd>
<dt><code>BASH</code>
-<a name="index-BASH"></a>
+<span id="index-BASH"></span>
</dt>
<dd><p>The full pathname used to execute the current instance of Bash.
</p>
</dd>
<dt><code>BASHOPTS</code>
-<a name="index-BASHOPTS"></a>
+<span id="index-BASHOPTS"></span>
</dt>
<dd><p>A colon-separated list of enabled shell options. Each word in
the list is a valid argument for the <samp>-s</samp> option to the
@@ -6582,7 +6497,7 @@ reading any startup files. This variable is readonly.
</p>
</dd>
<dt><code>BASHPID</code>
-<a name="index-BASHPID"></a>
+<span id="index-BASHPID"></span>
</dt>
<dd><p>Expands to the process ID of the current Bash process.
This differs from <code>$$</code> under certain circumstances, such as subshells
@@ -6594,7 +6509,7 @@ subsequently reset.
</p>
</dd>
<dt><code>BASH_ALIASES</code>
-<a name="index-BASH_005fALIASES"></a>
+<span id="index-BASH_005fALIASES"></span>
</dt>
<dd><p>An associative array variable whose members correspond to the internal
list of aliases as maintained by the <code>alias</code> builtin.
@@ -6608,7 +6523,7 @@ subsequently reset.
</p>
</dd>
<dt><code>BASH_ARGC</code>
-<a name="index-BASH_005fARGC"></a>
+<span id="index-BASH_005fARGC"></span>
</dt>
<dd><p>An array variable whose values are the number of parameters in each
frame of the current bash execution call stack. The number of
@@ -6626,7 +6541,7 @@ may result in inconsistent values.
</p>
</dd>
<dt><code>BASH_ARGV</code>
-<a name="index-BASH_005fARGV"></a>
+<span id="index-BASH_005fARGV"></span>
</dt>
<dd><p>An array variable containing all of the parameters in the current bash
execution call stack. The final parameter of the last subroutine call
@@ -6643,7 +6558,7 @@ may result in inconsistent values.
</p>
</dd>
<dt><code>BASH_ARGV0</code>
-<a name="index-BASH_005fARGV0"></a>
+<span id="index-BASH_005fARGV0"></span>
</dt>
<dd><p>When referenced, this variable expands to the name of the shell or shell
script (identical to <code>$0</code>; See <a href="#Special-Parameters">Special Parameters</a>,
@@ -6656,7 +6571,7 @@ subsequently reset.
</p>
</dd>
<dt><code>BASH_CMDS</code>
-<a name="index-BASH_005fCMDS"></a>
+<span id="index-BASH_005fCMDS"></span>
</dt>
<dd><p>An associative array variable whose members correspond to the internal
hash table of commands as maintained by the <code>hash</code> builtin
@@ -6670,19 +6585,22 @@ subsequently reset.
</p>
</dd>
<dt><code>BASH_COMMAND</code>
-<a name="index-BASH_005fCOMMAND"></a>
+<span id="index-BASH_005fCOMMAND"></span>
</dt>
<dd><p>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.
+If <code>BASH_COMMAND</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
</p>
</dd>
<dt><code>BASH_COMPAT</code>
-<a name="index-BASH_005fCOMPAT"></a>
+<span id="index-BASH_005fCOMPAT"></span>
</dt>
<dd><p>The value is used to set the shell&rsquo;s compatibility level.
-See <a href="#The-Shopt-Builtin">The Shopt Builtin</a>, for a description of the various compatibility
-levels and their effects.
+See <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>, 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 <code>BASH_COMPAT</code> is unset or set to the empty string, the compatibility
@@ -6690,14 +6608,16 @@ level is set to the default for the current version.
If <code>BASH_COMPAT</code> 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 <code>shopt</code> builtin described above (for example,
-<var>compat42</var> means that 4.2 and 42 are valid values).
+The valid values correspond to the compatibility levels
+described below (see <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a>).
+For example, 4.2 and 42 are valid values that correspond
+to the <code>compat42</code> <code>shopt</code> option
+and set the compatibility level to 42.
The current version is also a valid value.
</p>
</dd>
<dt><code>BASH_ENV</code>
-<a name="index-BASH_005fENV"></a>
+<span id="index-BASH_005fENV"></span>
</dt>
<dd><p>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
@@ -6705,13 +6625,13 @@ to read before executing the script. See <a href="#Bash-Startup-Files">Bash Sta
</p>
</dd>
<dt><code>BASH_EXECUTION_STRING</code>
-<a name="index-BASH_005fEXECUTION_005fSTRING"></a>
+<span id="index-BASH_005fEXECUTION_005fSTRING"></span>
</dt>
<dd><p>The command argument to the <samp>-c</samp> invocation option.
</p>
</dd>
<dt><code>BASH_LINENO</code>
-<a name="index-BASH_005fLINENO"></a>
+<span id="index-BASH_005fLINENO"></span>
</dt>
<dd><p>An array variable whose members are the line numbers in source files
where each corresponding member of <var>FUNCNAME</var> was invoked.
@@ -6723,7 +6643,7 @@ Use <code>LINENO</code> to obtain the current line number.
</p>
</dd>
<dt><code>BASH_LOADABLES_PATH</code>
-<a name="index-BASH_005fLOADABLES_005fPATH"></a>
+<span id="index-BASH_005fLOADABLES_005fPATH"></span>
</dt>
<dd><p>A colon-separated list of directories in which the shell looks for
dynamically loadable builtins specified by the
@@ -6731,7 +6651,7 @@ dynamically loadable builtins specified by the
</p>
</dd>
<dt><code>BASH_REMATCH</code>
-<a name="index-BASH_005fREMATCH"></a>
+<span id="index-BASH_005fREMATCH"></span>
</dt>
<dd><p>An array variable whose members are assigned by the &lsquo;<samp>=~</samp>&rsquo; binary
operator to the <code>[[</code> conditional command
@@ -6740,11 +6660,10 @@ The element with index 0 is the portion of the string
matching the entire regular expression.
The element with index <var>n</var> is the portion of the
string matching the <var>n</var>th parenthesized subexpression.
-This variable is read-only.
</p>
</dd>
<dt><code>BASH_SOURCE</code>
-<a name="index-BASH_005fSOURCE"></a>
+<span id="index-BASH_005fSOURCE"></span>
</dt>
<dd><p>An array variable whose members are the source filenames where the
corresponding shell function names in the <code>FUNCNAME</code> array
@@ -6754,15 +6673,18 @@ The shell function <code>${FUNCNAME[$i]}</code> is defined in the file
</p>
</dd>
<dt><code>BASH_SUBSHELL</code>
-<a name="index-BASH_005fSUBSHELL"></a>
+<span id="index-BASH_005fSUBSHELL"></span>
</dt>
<dd><p>Incremented by one within each subshell or subshell environment when
the shell begins executing in that environment.
The initial value is 0.
+If <code>BASH_SUBSHELL</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
</p>
</dd>
<dt><code>BASH_VERSINFO</code>
-<a name="index-BASH_005fVERSINFO"></a>
+<span id="index-BASH_005fVERSINFO"></span>
</dt>
<dd><p>A readonly array variable (see <a href="#Arrays">Arrays</a>)
whose members hold version information for this instance of Bash.
@@ -6796,13 +6718,13 @@ The values assigned to the array members are as follows:
</dd>
<dt><code>BASH_VERSION</code>
-<a name="index-BASH_005fVERSION"></a>
+<span id="index-BASH_005fVERSION"></span>
</dt>
<dd><p>The version number of the current instance of Bash.
</p>
</dd>
<dt><code>BASH_XTRACEFD</code>
-<a name="index-BASH_005fXTRACEFD"></a>
+<span id="index-BASH_005fXTRACEFD"></span>
</dt>
<dd><p>If set to an integer corresponding to a valid file descriptor, Bash
will write the trace output generated when &lsquo;<samp>set -x</samp>&rsquo;
@@ -6819,7 +6741,7 @@ being closed.
</p>
</dd>
<dt><code>CHILD_MAX</code>
-<a name="index-CHILD_005fMAX"></a>
+<span id="index-CHILD_005fMAX"></span>
</dt>
<dd><p>Set the number of exited child status values for the shell to remember.
Bash will not allow this value to be decreased below a <small>POSIX</small>-mandated
@@ -6829,7 +6751,7 @@ The minimum value is system-dependent.
</p>
</dd>
<dt><code>COLUMNS</code>
-<a name="index-COLUMNS"></a>
+<span id="index-COLUMNS"></span>
</dt>
<dd><p>Used by the <code>select</code> command to determine the terminal width
when printing selection lists.
@@ -6839,7 +6761,7 @@ Automatically set if the <code>checkwinsize</code> option is enabled
</p>
</dd>
<dt><code>COMP_CWORD</code>
-<a name="index-COMP_005fCWORD"></a>
+<span id="index-COMP_005fCWORD"></span>
</dt>
<dd><p>An index into <code>${COMP_WORDS}</code> of the word containing the current
cursor position.
@@ -6848,7 +6770,7 @@ programmable completion facilities (see <a href="#Programmable-Completion">Progr
</p>
</dd>
<dt><code>COMP_LINE</code>
-<a name="index-COMP_005fLINE"></a>
+<span id="index-COMP_005fLINE"></span>
</dt>
<dd><p>The current command line.
This variable is available only in shell functions and external
@@ -6857,7 +6779,7 @@ programmable completion facilities (see <a href="#Programmable-Completion">Progr
</p>
</dd>
<dt><code>COMP_POINT</code>
-<a name="index-COMP_005fPOINT"></a>
+<span id="index-COMP_005fPOINT"></span>
</dt>
<dd><p>The index of the current cursor position relative to the beginning of
the current command.
@@ -6869,7 +6791,7 @@ programmable completion facilities (see <a href="#Programmable-Completion">Progr
</p>
</dd>
<dt><code>COMP_TYPE</code>
-<a name="index-COMP_005fTYPE"></a>
+<span id="index-COMP_005fTYPE"></span>
</dt>
<dd><p>Set to an integer value corresponding to the type of completion attempted
that caused a completion function to be called:
@@ -6885,23 +6807,24 @@ programmable completion facilities (see <a href="#Programmable-Completion">Progr
</p>
</dd>
<dt><code>COMP_KEY</code>
-<a name="index-COMP_005fKEY"></a>
+<span id="index-COMP_005fKEY"></span>
</dt>
<dd><p>The key (or final key of a key sequence) used to invoke the current
completion function.
</p>
</dd>
<dt><code>COMP_WORDBREAKS</code>
-<a name="index-COMP_005fWORDBREAKS"></a>
+<span id="index-COMP_005fWORDBREAKS"></span>
</dt>
<dd><p>The set of characters that the Readline library treats as word
separators when performing word completion.
-If <code>COMP_WORDBREAKS</code> is unset, it loses its special properties,
+If <code>COMP_WORDBREAKS</code>
+is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
<dt><code>COMP_WORDS</code>
-<a name="index-COMP_005fWORDS"></a>
+<span id="index-COMP_005fWORDS"></span>
</dt>
<dd><p>An array variable consisting of the individual
words in the current command line.
@@ -6912,7 +6835,7 @@ programmable completion facilities (see <a href="#Programmable-Completion">Progr
</p>
</dd>
<dt><code>COMPREPLY</code>
-<a name="index-COMPREPLY"></a>
+<span id="index-COMPREPLY"></span>
</dt>
<dd><p>An array variable from which Bash reads the possible completions
generated by a shell function invoked by the programmable completion
@@ -6921,14 +6844,14 @@ Each array element contains one possible completion.
</p>
</dd>
<dt><code>COPROC</code>
-<a name="index-COPROC"></a>
+<span id="index-COPROC"></span>
</dt>
<dd><p>An array variable created to hold the file descriptors
for output from and input to an unnamed coprocess (see <a href="#Coprocesses">Coprocesses</a>).
</p>
</dd>
<dt><code>DIRSTACK</code>
-<a name="index-DIRSTACK"></a>
+<span id="index-DIRSTACK"></span>
</dt>
<dd><p>An array variable containing the current contents of the directory stack.
Directories appear in the stack in the order they are displayed by the
@@ -6937,12 +6860,13 @@ Assigning to members of this array variable may be used to modify
directories already in the stack, but the <code>pushd</code> and <code>popd</code>
builtins must be used to add and remove directories.
Assignment to this variable will not change the current directory.
-If <code>DIRSTACK</code> is unset, it loses its special properties, even if
+If <code>DIRSTACK</code>
+is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
<dt><code>EMACS</code>
-<a name="index-EMACS"></a>
+<span id="index-EMACS"></span>
</dt>
<dd><p>If Bash finds this variable in the environment when the shell
starts with value &lsquo;<samp>t</samp>&rsquo;, it assumes that the shell is running in an
@@ -6950,44 +6874,48 @@ Emacs shell buffer and disables line editing.
</p>
</dd>
<dt><code>ENV</code>
-<a name="index-ENV"></a>
+<span id="index-ENV"></span>
</dt>
-<dd><p>Similar to <code>BASH_ENV</code>; used when the shell is invoked in
+<dd><p>Expanded and executed similarlty to <code>BASH_ENV</code>
+(see <a href="#Bash-Startup-Files">Bash Startup Files</a>)
+when an interactive shell is invoked in
<small>POSIX</small> Mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
</p>
</dd>
<dt><code>EPOCHREALTIME</code>
-<a name="index-EPOCHREALTIME"></a>
+<span id="index-EPOCHREALTIME"></span>
</dt>
<dd><p>Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch as a floating point value with micro-second granularity
(see the documentation for the C library function <var>time</var> for the
definition of Epoch).
Assignments to <code>EPOCHREALTIME</code> are ignored.
-If <code>EPOCHREALTIME</code> is unset, it loses its special properties, even if
+If <code>EPOCHREALTIME</code>
+is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
<dt><code>EPOCHSECONDS</code>
-<a name="index-EPOCHSECONDS"></a>
+<span id="index-EPOCHSECONDS"></span>
</dt>
<dd><p>Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch (see the documentation for the C library function
<var>time</var> for the definition of Epoch).
Assignments to <code>EPOCHSECONDS</code> are ignored.
-If <code>EPOCHSECONDS</code> is unset, it loses its special properties, even if
+If <code>EPOCHSECONDS</code>
+is unset, it loses its special properties, even if
it is subsequently reset.
</p>
</dd>
<dt><code>EUID</code>
-<a name="index-EUID"></a>
+<span id="index-EUID"></span>
</dt>
<dd><p>The numeric effective user id of the current user. This variable
is readonly.
</p>
</dd>
<dt><code>EXECIGNORE</code>
-<a name="index-EXECIGNORE"></a>
+<span id="index-EXECIGNORE"></span>
</dt>
<dd><p>A colon-separated list of shell patterns (see <a href="#Pattern-Matching">Pattern Matching</a>)
defining the list of filenames to be ignored by command search using
@@ -7005,14 +6933,14 @@ option.
</p>
</dd>
<dt><code>FCEDIT</code>
-<a name="index-FCEDIT"></a>
+<span id="index-FCEDIT"></span>
</dt>
<dd><p>The editor used as a default by the <samp>-e</samp> option to the <code>fc</code>
builtin command.
</p>
</dd>
<dt><code>FIGNORE</code>
-<a name="index-FIGNORE"></a>
+<span id="index-FIGNORE"></span>
</dt>
<dd><p>A colon-separated list of suffixes to ignore when performing
filename completion.
@@ -7023,7 +6951,7 @@ value is &lsquo;<samp>.o:~</samp>&rsquo;
</p>
</dd>
<dt><code>FUNCNAME</code>
-<a name="index-FUNCNAME"></a>
+<span id="index-FUNCNAME"></span>
</dt>
<dd><p>An array variable containing the names of all shell functions
currently in the execution call stack.
@@ -7033,7 +6961,8 @@ The bottom-most element (the one with the highest index)
is <code>&quot;main&quot;</code>.
This variable exists only when a shell function is executing.
Assignments to <code>FUNCNAME</code> have no effect.
-If <code>FUNCNAME</code> is unset, it loses its special properties, even if
+If <code>FUNCNAME</code>
+is unset, it loses its special properties, even if
it is subsequently reset.
</p>
<p>This variable can be used with <code>BASH_LINENO</code> and <code>BASH_SOURCE</code>.
@@ -7046,7 +6975,7 @@ information.
</p>
</dd>
<dt><code>FUNCNEST</code>
-<a name="index-FUNCNEST"></a>
+<span id="index-FUNCNEST"></span>
</dt>
<dd><p>If set to a numeric value greater than 0, defines a maximum function
nesting level. Function invocations that exceed this nesting level
@@ -7054,7 +6983,7 @@ will cause the current command to abort.
</p>
</dd>
<dt><code>GLOBIGNORE</code>
-<a name="index-GLOBIGNORE"></a>
+<span id="index-GLOBIGNORE"></span>
</dt>
<dd><p>A colon-separated list of patterns defining the set of file names to
be ignored by filename expansion.
@@ -7066,17 +6995,18 @@ option.
</p>
</dd>
<dt><code>GROUPS</code>
-<a name="index-GROUPS"></a>
+<span id="index-GROUPS"></span>
</dt>
<dd><p>An array variable containing the list of groups of which the current
user is a member.
Assignments to <code>GROUPS</code> have no effect.
-If <code>GROUPS</code> is unset, it loses its special properties, even if it is
+If <code>GROUPS</code>
+is unset, it loses its special properties, even if it is
subsequently reset.
</p>
</dd>
<dt><code>histchars</code>
-<a name="index-histchars"></a>
+<span id="index-histchars"></span>
</dt>
<dd><p>Up to three characters which control history expansion, quick
substitution, and tokenization (see <a href="#History-Interaction">History Interaction</a>).
@@ -7093,15 +7023,18 @@ parser to treat the rest of the line as a comment.
</p>
</dd>
<dt><code>HISTCMD</code>
-<a name="index-HISTCMD"></a>
+<span id="index-HISTCMD"></span>
</dt>
<dd><p>The history number, or index in the history list, of the current
-command. If <code>HISTCMD</code> is unset, it loses its special properties,
+command.
+Assignments to <code>HISTCMD</code> are ignored.
+If <code>HISTCMD</code>
+is unset, it loses its special properties,
even if it is subsequently reset.
</p>
</dd>
<dt><code>HISTCONTROL</code>
-<a name="index-HISTCONTROL"></a>
+<span id="index-HISTCONTROL"></span>
</dt>
<dd><p>A colon-separated list of values controlling how commands are saved on
the history list.
@@ -7124,14 +7057,14 @@ not tested, and are added to the history regardless of the value of
</p>
</dd>
<dt><code>HISTFILE</code>
-<a name="index-HISTFILE"></a>
+<span id="index-HISTFILE"></span>
</dt>
<dd><p>The name of the file to which the command history is saved. The
default value is <samp>~/.bash_history</samp>.
</p>
</dd>
<dt><code>HISTFILESIZE</code>
-<a name="index-HISTFILESIZE"></a>
+<span id="index-HISTFILESIZE"></span>
</dt>
<dd><p>The maximum number of lines contained in the history file.
When this variable is assigned a value, the history file is truncated,
@@ -7146,7 +7079,7 @@ after reading any startup files.
</p>
</dd>
<dt><code>HISTIGNORE</code>
-<a name="index-HISTIGNORE"></a>
+<span id="index-HISTIGNORE"></span>
</dt>
<dd><p>A colon-separated list of patterns used to decide which command
lines should be saved on the history list. Each pattern is
@@ -7171,7 +7104,7 @@ provides the functionality of <code>ignoreboth</code>.
</p>
</dd>
<dt><code>HISTSIZE</code>
-<a name="index-HISTSIZE"></a>
+<span id="index-HISTSIZE"></span>
</dt>
<dd><p>The maximum number of commands to remember on the history list.
If the value is 0, commands are not saved in the history list.
@@ -7181,7 +7114,7 @@ The shell sets the default value to 500 after reading any startup files.
</p>
</dd>
<dt><code>HISTTIMEFORMAT</code>
-<a name="index-HISTTIMEFORMAT"></a>
+<span id="index-HISTTIMEFORMAT"></span>
</dt>
<dd><p>If this variable is set and not null, its value is used as a format string
for <var>strftime</var> to print the time stamp associated with each history
@@ -7193,7 +7126,7 @@ other history lines.
</p>
</dd>
<dt><code>HOSTFILE</code>
-<a name="index-HOSTFILE"></a>
+<span id="index-HOSTFILE"></span>
</dt>
<dd><p>Contains the name of a file in the same format as <samp>/etc/hosts</samp> that
should be read when the shell needs to complete a hostname.
@@ -7209,19 +7142,19 @@ When <code>HOSTFILE</code> is unset, the hostname list is cleared.
</p>
</dd>
<dt><code>HOSTNAME</code>
-<a name="index-HOSTNAME"></a>
+<span id="index-HOSTNAME"></span>
</dt>
<dd><p>The name of the current host.
</p>
</dd>
<dt><code>HOSTTYPE</code>
-<a name="index-HOSTTYPE"></a>
+<span id="index-HOSTTYPE"></span>
</dt>
<dd><p>A string describing the machine Bash is running on.
</p>
</dd>
<dt><code>IGNOREEOF</code>
-<a name="index-IGNOREEOF"></a>
+<span id="index-IGNOREEOF"></span>
</dt>
<dd><p>Controls the action of the shell on receipt of an <code>EOF</code> character
as the sole input. If set, the value denotes the number
@@ -7234,14 +7167,14 @@ input to the shell. This is only in effect for interactive shells.
</p>
</dd>
<dt><code>INPUTRC</code>
-<a name="index-INPUTRC"></a>
+<span id="index-INPUTRC"></span>
</dt>
<dd><p>The name of the Readline initialization file, overriding the default
of <samp>~/.inputrc</samp>.
</p>
</dd>
<dt><code>INSIDE_EMACS</code>
-<a name="index-INSIDE_005fEMACS"></a>
+<span id="index-INSIDE_005fEMACS"></span>
</dt>
<dd><p>If Bash finds this variable in the environment when the shell
starts, it assumes that the shell is running in an Emacs shell buffer
@@ -7249,21 +7182,21 @@ and may disable line editing depending on the value of <code>TERM</code>.
</p>
</dd>
<dt><code>LANG</code>
-<a name="index-LANG"></a>
+<span id="index-LANG"></span>
</dt>
<dd><p>Used to determine the locale category for any category not specifically
selected with a variable starting with <code>LC_</code>.
</p>
</dd>
<dt><code>LC_ALL</code>
-<a name="index-LC_005fALL"></a>
+<span id="index-LC_005fALL"></span>
</dt>
<dd><p>This variable overrides the value of <code>LANG</code> and any other
<code>LC_</code> variable specifying a locale category.
</p>
</dd>
<dt><code>LC_COLLATE</code>
-<a name="index-LC_005fCOLLATE"></a>
+<span id="index-LC_005fCOLLATE"></span>
</dt>
<dd><p>This variable determines the collation order used when sorting the
results of filename expansion, and
@@ -7273,7 +7206,7 @@ and collating sequences within filename expansion and pattern matching
</p>
</dd>
<dt><code>LC_CTYPE</code>
-<a name="index-LC_005fCTYPE"></a>
+<span id="index-LC_005fCTYPE"></span>
</dt>
<dd><p>This variable determines the interpretation of characters and the
behavior of character classes within filename expansion and pattern
@@ -7281,33 +7214,36 @@ matching (see <a href="#Filename-Expansion">Filename Expansion</a>).
</p>
</dd>
<dt><code>LC_MESSAGES</code>
-<a name="index-LC_005fMESSAGES-1"></a>
+<span id="index-LC_005fMESSAGES-1"></span>
</dt>
<dd><p>This variable determines the locale used to translate double-quoted
strings preceded by a &lsquo;<samp>$</samp>&rsquo; (see <a href="#Locale-Translation">Locale Translation</a>).
</p>
</dd>
<dt><code>LC_NUMERIC</code>
-<a name="index-LC_005fNUMERIC"></a>
+<span id="index-LC_005fNUMERIC"></span>
</dt>
<dd><p>This variable determines the locale category used for number formatting.
</p>
</dd>
<dt><code>LC_TIME</code>
-<a name="index-LC_005fTIME"></a>
+<span id="index-LC_005fTIME"></span>
</dt>
<dd><p>This variable determines the locale category used for data and time
formatting.
</p>
</dd>
<dt><code>LINENO</code>
-<a name="index-LINENO"></a>
+<span id="index-LINENO"></span>
</dt>
<dd><p>The line number in the script or shell function currently executing.
+If <code>LINENO</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
</p>
</dd>
<dt><code>LINES</code>
-<a name="index-LINES"></a>
+<span id="index-LINES"></span>
</dt>
<dd><p>Used by the <code>select</code> command to determine the column length
for printing selection lists.
@@ -7317,14 +7253,14 @@ Automatically set if the <code>checkwinsize</code> option is enabled
</p>
</dd>
<dt><code>MACHTYPE</code>
-<a name="index-MACHTYPE"></a>
+<span id="index-MACHTYPE"></span>
</dt>
<dd><p>A string that fully describes the system type on which Bash
is executing, in the standard <small>GNU</small> <var>cpu-company-system</var> format.
</p>
</dd>
<dt><code>MAILCHECK</code>
-<a name="index-MAILCHECK"></a>
+<span id="index-MAILCHECK"></span>
</dt>
<dd><p>How often (in seconds) that the shell should check for mail in the
files specified in the <code>MAILPATH</code> or <code>MAIL</code> variables.
@@ -7335,33 +7271,33 @@ greater than or equal to zero, the shell disables mail checking.
</p>
</dd>
<dt><code>MAPFILE</code>
-<a name="index-MAPFILE"></a>
+<span id="index-MAPFILE"></span>
</dt>
<dd><p>An array variable created to hold the text read by the
<code>mapfile</code> builtin when no variable name is supplied.
</p>
</dd>
<dt><code>OLDPWD</code>
-<a name="index-OLDPWD"></a>
+<span id="index-OLDPWD"></span>
</dt>
<dd><p>The previous working directory as set by the <code>cd</code> builtin.
</p>
</dd>
<dt><code>OPTERR</code>
-<a name="index-OPTERR"></a>
+<span id="index-OPTERR"></span>
</dt>
<dd><p>If set to the value 1, Bash displays error messages
generated by the <code>getopts</code> builtin command.
</p>
</dd>
<dt><code>OSTYPE</code>
-<a name="index-OSTYPE"></a>
+<span id="index-OSTYPE"></span>
</dt>
<dd><p>A string describing the operating system Bash is running on.
</p>
</dd>
<dt><code>PIPESTATUS</code>
-<a name="index-PIPESTATUS"></a>
+<span id="index-PIPESTATUS"></span>
</dt>
<dd><p>An array variable (see <a href="#Arrays">Arrays</a>)
containing a list of exit status values from the processes
@@ -7370,7 +7306,7 @@ contain only a single command).
</p>
</dd>
<dt><code>POSIXLY_CORRECT</code>
-<a name="index-POSIXLY_005fCORRECT"></a>
+<span id="index-POSIXLY_005fCORRECT"></span>
</dt>
<dd><p>If this variable is in the environment when Bash starts, the shell
enters <small>POSIX</small> mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>) before reading the
@@ -7386,21 +7322,24 @@ not already set.
</p>
</dd>
<dt><code>PPID</code>
-<a name="index-PPID"></a>
+<span id="index-PPID"></span>
</dt>
<dd><p>The process <small>ID</small> of the shell&rsquo;s parent process. This variable
is readonly.
</p>
</dd>
<dt><code>PROMPT_COMMAND</code>
-<a name="index-PROMPT_005fCOMMAND"></a>
+<span id="index-PROMPT_005fCOMMAND"></span>
</dt>
-<dd><p>If set, the value is interpreted as a command to execute
-before the printing of each primary prompt (<code>$PS1</code>).
+<dd><p>If this variable is set, and is an array,
+the value of each set element is interpreted as a command to execute
+before printing the primary prompt (<code>$PS1</code>).
+If this is set but not an array variable,
+its value is used as a command to execute instead.
</p>
</dd>
<dt><code>PROMPT_DIRTRIM</code>
-<a name="index-PROMPT_005fDIRTRIM"></a>
+<span id="index-PROMPT_005fDIRTRIM"></span>
</dt>
<dd><p>If set to a number greater than zero, the value is used as the number of
trailing directory components to retain when expanding the <code>\w</code> and
@@ -7409,15 +7348,15 @@ Characters removed are replaced with an ellipsis.
</p>
</dd>
<dt><code>PS0</code>
-<a name="index-PS0"></a>
+<span id="index-PS0"></span>
</dt>
-<dd><p>The value of this parameter is expanded like <var>PS1</var>
+<dd><p>The value of this parameter is expanded like <code>PS1</code>
and displayed by interactive shells after reading a command
and before the command is executed.
</p>
</dd>
<dt><code>PS3</code>
-<a name="index-PS3"></a>
+<span id="index-PS3"></span>
</dt>
<dd><p>The value of this variable is used as the prompt for the
<code>select</code> command. If this variable is not set, the
@@ -7425,7 +7364,7 @@ and before the command is executed.
</p>
</dd>
<dt><code>PS4</code>
-<a name="index-PS4"></a>
+<span id="index-PS4"></span>
</dt>
<dd><p>The value of this parameter is expanded like <var>PS1</var>
and the expanded value is the prompt printed before the command line
@@ -7436,59 +7375,77 @@ The default is &lsquo;<samp>+ </samp>&rsquo;.
</p>
</dd>
<dt><code>PWD</code>
-<a name="index-PWD"></a>
+<span id="index-PWD"></span>
</dt>
<dd><p>The current working directory as set by the <code>cd</code> builtin.
</p>
</dd>
<dt><code>RANDOM</code>
-<a name="index-RANDOM"></a>
+<span id="index-RANDOM"></span>
</dt>
-<dd><p>Each time this parameter is referenced, a random integer
-between 0 and 32767 is generated. Assigning a value to this
+<dd><p>Each time this parameter is referenced, it expands to a random integer
+between 0 and 32767. Assigning a value to this
variable seeds the random number generator.
+If <code>RANDOM</code>
+is unset, it loses its special properties, even if it is
+subsequently reset.
</p>
</dd>
<dt><code>READLINE_LINE</code>
-<a name="index-READLINE_005fLINE"></a>
+<span id="index-READLINE_005fLINE"></span>
</dt>
<dd><p>The contents of the Readline line buffer, for use
with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtins</a>).
</p>
</dd>
+<dt><code>READLINE_MARK</code>
+<span id="index-READLINE_005fMARK"></span>
+</dt>
+<dd><p>The position of the <var>mark</var> (saved insertion point) in the
+Readline line buffer, for use
+with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtins</a>).
+The characters between the insertion point and the mark are often
+called the <var>region</var>.
+</p>
+</dd>
<dt><code>READLINE_POINT</code>
-<a name="index-READLINE_005fPOINT"></a>
+<span id="index-READLINE_005fPOINT"></span>
</dt>
<dd><p>The position of the insertion point in the Readline line buffer, for use
with &lsquo;<samp>bind -x</samp>&rsquo; (see <a href="#Bash-Builtins">Bash Builtins</a>).
</p>
</dd>
<dt><code>REPLY</code>
-<a name="index-REPLY"></a>
+<span id="index-REPLY"></span>
</dt>
<dd><p>The default variable for the <code>read</code> builtin.
</p>
</dd>
<dt><code>SECONDS</code>
-<a name="index-SECONDS"></a>
+<span id="index-SECONDS"></span>
</dt>
<dd><p>This variable expands to the number of seconds since the
shell was started. Assignment to this variable resets
the count to the value assigned, and the expanded value
becomes the value assigned plus the number of seconds
since the assignment.
+The number of seconds at shell invocation and the current time is always
+determined by querying the system clock.
+If <code>SECONDS</code>
+is unset, it loses its special properties,
+even if it is subsequently reset.
</p>
</dd>
<dt><code>SHELL</code>
-<a name="index-SHELL"></a>
+<span id="index-SHELL"></span>
</dt>
-<dd><p>The full pathname to the shell is kept in this environment variable.
+<dd><p>This environment variable expands to the full pathname to the shell.
If it is not set when the shell starts,
Bash assigns to it the full pathname of the current user&rsquo;s login shell.
</p>
</dd>
<dt><code>SHELLOPTS</code>
-<a name="index-SHELLOPTS"></a>
+<span id="index-SHELLOPTS"></span>
</dt>
<dd><p>A colon-separated list of enabled shell options. Each word in
the list is a valid argument for the <samp>-o</samp> option to the
@@ -7501,14 +7458,28 @@ reading any startup files. This variable is readonly.
</p>
</dd>
<dt><code>SHLVL</code>
-<a name="index-SHLVL"></a>
+<span id="index-SHLVL"></span>
</dt>
<dd><p>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.
</p>
</dd>
+<dt><code>SRANDOM</code>
+<span id="index-SRANDOM"></span>
+</dt>
+<dd><p>This variable expands to a 32-bit pseudo-random number each time it is
+referenced. The random number generator is not linear on systems that
+support <samp>/dev/urandom</samp> or <code>arc4random</code>, so each returned number
+has no relationship to the numbers preceding it.
+The random number generator cannot be seeded, so assignments to this
+variable have no effect.
+If <code>SRANDOM</code>
+is unset, it loses its special properties,
+even if it is subsequently reset.
+</p>
+</dd>
<dt><code>TIMEFORMAT</code>
-<a name="index-TIMEFORMAT"></a>
+<span id="index-TIMEFORMAT"></span>
</dt>
<dd><p>The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the <code>time</code>
@@ -7561,7 +7532,7 @@ A trailing newline is added when the format string is displayed.
</p>
</dd>
<dt><code>TMOUT</code>
-<a name="index-TMOUT"></a>
+<span id="index-TMOUT"></span>
</dt>
<dd><p>If set to a value greater than zero, <code>TMOUT</code> is treated as the
default timeout for the <code>read</code> builtin (see <a href="#Bash-Builtins">Bash Builtins</a>).
@@ -7578,14 +7549,14 @@ line of input does not arrive.
</p>
</dd>
<dt><code>TMPDIR</code>
-<a name="index-TMPDIR"></a>
+<span id="index-TMPDIR"></span>
</dt>
<dd><p>If set, Bash uses its value as the name of a directory in which
Bash creates temporary files for the shell&rsquo;s use.
</p>
</dd>
<dt><code>UID</code>
-<a name="index-UID"></a>
+<span id="index-UID"></span>
</dt>
<dd><p>The numeric real user id of the current user. This variable is readonly.
</p>
@@ -7593,52 +7564,51 @@ Bash creates temporary files for the shell&rsquo;s use.
</dl>
<hr>
-<a name="Bash-Features"></a>
-<div class="header">
+<span id="Bash-Features"></span><div class="header">
<p>
Next: <a href="#Job-Control" accesskey="n" rel="next">Job Control</a>, Previous: <a href="#Shell-Variables" accesskey="p" rel="prev">Shell Variables</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Features-2"></a>
-<h2 class="chapter">6 Bash Features</h2>
+<span id="Bash-Features-2"></span><h2 class="chapter">6 Bash Features</h2>
<p>This chapter describes features unique to Bash.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Invoking-Bash" accesskey="1">Invoking Bash</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command line options that you can give
+<tr><td align="left" valign="top">&bull; <a href="#Invoking-Bash" accesskey="1">Invoking Bash</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Command line options that you can give
to Bash.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-Startup-Files" accesskey="2">Bash Startup Files</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When and how Bash executes scripts.
+<tr><td align="left" valign="top">&bull; <a href="#Bash-Startup-Files" accesskey="2">Bash Startup Files</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">When and how Bash executes scripts.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Interactive-Shells" accesskey="3">Interactive Shells</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What an interactive shell is.
+<tr><td align="left" valign="top">&bull; <a href="#Interactive-Shells" accesskey="3">Interactive Shells</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What an interactive shell is.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-Conditional-Expressions" accesskey="4">Bash Conditional Expressions</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Primitives used in composing expressions for
+<tr><td align="left" valign="top">&bull; <a href="#Bash-Conditional-Expressions" accesskey="4">Bash Conditional Expressions</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Primitives used in composing expressions for
the <code>test</code> builtin.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Shell-Arithmetic" accesskey="5">Shell Arithmetic</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arithmetic on shell variables.
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Arithmetic" accesskey="5">Shell Arithmetic</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Arithmetic on shell variables.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Aliases" accesskey="6">Aliases</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Substituting one command for another.
+<tr><td align="left" valign="top">&bull; <a href="#Aliases" accesskey="6">Aliases</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Substituting one command for another.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Arrays" accesskey="7">Arrays</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Array Variables.
+<tr><td align="left" valign="top">&bull; <a href="#Arrays" accesskey="7">Arrays</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Array Variables.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#The-Directory-Stack" accesskey="8">The Directory Stack</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">History of visited directories.
+<tr><td align="left" valign="top">&bull; <a href="#The-Directory-Stack" accesskey="8">The Directory Stack</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">History of visited directories.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Controlling-the-Prompt" accesskey="9">Controlling the Prompt</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Customizing the various prompt strings.
+<tr><td align="left" valign="top">&bull; <a href="#Controlling-the-Prompt" accesskey="9">Controlling the Prompt</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Customizing the various prompt strings.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#The-Restricted-Shell">The Restricted Shell</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A more controlled mode of shell execution.
+<tr><td align="left" valign="top">&bull; <a href="#The-Restricted-Shell">The Restricted Shell</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A more controlled mode of shell execution.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making Bash behave more closely to what
+<tr><td align="left" valign="top">&bull; <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Making Bash behave more closely to what
the POSIX standard specifies.
</td></tr>
+<tr><td align="left" valign="top">&bull; <a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash supports behavior that was present
+ in earlier versions and has changed.
+</td></tr>
</table>
<hr>
-<a name="Invoking-Bash"></a>
-<div class="header">
+<span id="Invoking-Bash"></span><div class="header">
<p>
Next: <a href="#Bash-Startup-Files" accesskey="n" rel="next">Bash Startup Files</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Invoking-Bash-1"></a>
-<h3 class="section">6.1 Invoking Bash</h3>
+<span id="Invoking-Bash-1"></span><h3 class="section">6.1 Invoking Bash</h3>
<div class="example">
<pre class="example">bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o <var>option</var>]
@@ -7798,11 +7768,11 @@ Any arguments after the <code>--</code> are treated as filenames and arguments.
</p></dd>
</dl>
-<a name="index-login-shell"></a>
+<span id="index-login-shell"></span>
<p>A <em>login</em> shell is one whose first character of argument zero is
&lsquo;<samp>-</samp>&rsquo;, or one invoked with the <samp>--login</samp> option.
</p>
-<a name="index-interactive-shell"></a>
+<span id="index-interactive-shell"></span>
<p>An <em>interactive</em> shell is one started without non-option arguments,
unless <samp>-s</samp> is specified,
without specifying the <samp>-c</samp> option, and whose input and output are both
@@ -7822,14 +7792,12 @@ Bash&rsquo;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.
</p>
<hr>
-<a name="Bash-Startup-Files"></a>
-<div class="header">
+<span id="Bash-Startup-Files"></span><div class="header">
<p>
Next: <a href="#Interactive-Shells" accesskey="n" rel="next">Interactive Shells</a>, Previous: <a href="#Invoking-Bash" accesskey="p" rel="prev">Invoking Bash</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Startup-Files-1"></a>
-<h3 class="section">6.2 Bash Startup Files</h3>
-<a name="index-startup-files"></a>
+<span id="Bash-Startup-Files-1"></span><h3 class="section">6.2 Bash Startup Files</h3>
+<span id="index-startup-files"></span>
<p>This section describes how Bash executes its startup files.
If any of the files exist but cannot be read, Bash reports an error.
@@ -7838,8 +7806,7 @@ Tilde Expansion (see <a href="#Tilde-Expansion">Tilde Expansion</a>).
</p>
<p>Interactive shells are described in <a href="#Interactive-Shells">Interactive Shells</a>.
</p>
-<a name="Invoked-as-an-interactive-login-shell_002c-or-with-_002d_002dlogin"></a>
-<h4 class="subsubheading">Invoked as an interactive login shell, or with <samp>--login</samp></h4>
+<span id="Invoked-as-an-interactive-login-shell_002c-or-with-_002d_002dlogin"></span><h4 class="subsubheading">Invoked as an interactive login shell, or with <samp>--login</samp></h4>
<p>When Bash is invoked as an interactive login shell, or as a
non-interactive shell with the <samp>--login</samp> option, it first reads and
@@ -7855,8 +7822,7 @@ or a non-interactive login shell executes the <code>exit</code> builtin command,
Bash reads and executes commands from
the file <samp>~/.bash_logout</samp>, if it exists.
</p>
-<a name="Invoked-as-an-interactive-non_002dlogin-shell"></a>
-<h4 class="subsubheading">Invoked as an interactive non-login shell</h4>
+<span id="Invoked-as-an-interactive-non_002dlogin-shell"></span><h4 class="subsubheading">Invoked as an interactive non-login shell</h4>
<p>When an interactive shell that is not a login shell is started, Bash
reads and executes commands from <samp>~/.bashrc</samp>, if that file exists.
@@ -7870,8 +7836,7 @@ execute commands from <var>file</var> instead of <samp>~/.bashrc</samp>.
</pre></div>
<p>after (or before) any login-specific initializations.
</p>
-<a name="Invoked-non_002dinteractively"></a>
-<h4 class="subsubheading">Invoked non-interactively</h4>
+<span id="Invoked-non_002dinteractively"></span><h4 class="subsubheading">Invoked non-interactively</h4>
<p>When Bash is started non-interactively, to run a shell script,
for example, it looks for the variable <code>BASH_ENV</code> in the environment,
@@ -7888,8 +7853,7 @@ filename.
<samp>--login</samp> option, Bash attempts to read and execute commands from the
login shell startup files.
</p>
-<a name="Invoked-with-name-sh"></a>
-<h4 class="subsubheading">Invoked with name <code>sh</code></h4>
+<span id="Invoked-with-name-sh"></span><h4 class="subsubheading">Invoked with name <code>sh</code></h4>
<p>If Bash is invoked with the name <code>sh</code>, it tries to mimic the
startup behavior of historical versions of <code>sh</code> as closely as
@@ -7912,8 +7876,7 @@ to read any other startup files.
<p>When invoked as <code>sh</code>, Bash enters <small>POSIX</small> mode after
the startup files are read.
</p>
-<a name="Invoked-in-POSIX-mode"></a>
-<h4 class="subsubheading">Invoked in <small>POSIX</small> mode</h4>
+<span id="Invoked-in-POSIX-mode"></span><h4 class="subsubheading">Invoked in <small>POSIX</small> mode</h4>
<p>When Bash is started in <small>POSIX</small> mode, as with the
<samp>--posix</samp> command line option, it follows the <small>POSIX</small> standard
@@ -7923,8 +7886,7 @@ and commands are read and executed from the file whose name is the
expanded value.
No other startup files are read.
</p>
-<a name="Invoked-by-remote-shell-daemon"></a>
-<h4 class="subsubheading">Invoked by remote shell daemon</h4>
+<span id="Invoked-by-remote-shell-daemon"></span><h4 class="subsubheading">Invoked by remote shell daemon</h4>
<p>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
@@ -7938,8 +7900,7 @@ The <samp>--norc</samp> option may be used to inhibit this behavior, and the
neither <code>rshd</code> nor <code>sshd</code> generally invoke the shell with those
options or allow them to be specified.
</p>
-<a name="Invoked-with-unequal-effective-and-real-UID_002fGIDs"></a>
-<h4 class="subsubheading">Invoked with unequal effective and real <small>UID/GID</small>s</h4>
+<span id="Invoked-with-unequal-effective-and-real-UID_002fGIDs"></span><h4 class="subsubheading">Invoked with unequal effective and real <small>UID/GID</small>s</h4>
<p>If Bash is started with the effective user (group) id not equal to the
real user (group) id, and the <samp>-p</samp> option is not supplied, no startup
@@ -7951,33 +7912,29 @@ If the <samp>-p</samp> option is supplied at invocation, the startup behavior is
the same, but the effective user id is not reset.
</p>
<hr>
-<a name="Interactive-Shells"></a>
-<div class="header">
+<span id="Interactive-Shells"></span><div class="header">
<p>
Next: <a href="#Bash-Conditional-Expressions" accesskey="n" rel="next">Bash Conditional Expressions</a>, Previous: <a href="#Bash-Startup-Files" accesskey="p" rel="prev">Bash Startup Files</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Interactive-Shells-1"></a>
-<h3 class="section">6.3 Interactive Shells</h3>
-<a name="index-interactive-shell-1"></a>
-<a name="index-shell_002c-interactive"></a>
+<span id="Interactive-Shells-1"></span><h3 class="section">6.3 Interactive Shells</h3>
+<span id="index-interactive-shell-1"></span>
+<span id="index-shell_002c-interactive"></span>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#What-is-an-Interactive-Shell_003f" accesskey="1">What is an Interactive Shell?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What determines whether a shell is Interactive.
+<tr><td align="left" valign="top">&bull; <a href="#What-is-an-Interactive-Shell_003f" accesskey="1">What is an Interactive Shell?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What determines whether a shell is Interactive.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Is-this-Shell-Interactive_003f" accesskey="2">Is this Shell Interactive?</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to tell if a shell is interactive.
+<tr><td align="left" valign="top">&bull; <a href="#Is-this-Shell-Interactive_003f" accesskey="2">Is this Shell Interactive?</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to tell if a shell is interactive.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Interactive-Shell-Behavior" accesskey="3">Interactive Shell Behavior</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What changes in a interactive shell?
+<tr><td align="left" valign="top">&bull; <a href="#Interactive-Shell-Behavior" accesskey="3">Interactive Shell Behavior</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What changes in a interactive shell?
</td></tr>
</table>
<hr>
-<a name="What-is-an-Interactive-Shell_003f"></a>
-<div class="header">
+<span id="What-is-an-Interactive-Shell_003f"></span><div class="header">
<p>
Next: <a href="#Is-this-Shell-Interactive_003f" accesskey="n" rel="next">Is this Shell Interactive?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="What-is-an-Interactive-Shell_003f-1"></a>
-<h4 class="subsection">6.3.1 What is an Interactive Shell?</h4>
+<span id="What-is-an-Interactive-Shell_003f-1"></span><h4 class="subsection">6.3.1 What is an Interactive Shell?</h4>
<p>An interactive shell
is one started without non-option arguments, unless <samp>-s</samp> is
@@ -7993,13 +7950,11 @@ terminal.
when an interactive shell is started.
</p>
<hr>
-<a name="Is-this-Shell-Interactive_003f"></a>
-<div class="header">
+<span id="Is-this-Shell-Interactive_003f"></span><div class="header">
<p>
Next: <a href="#Interactive-Shell-Behavior" accesskey="n" rel="next">Interactive Shell Behavior</a>, Previous: <a href="#What-is-an-Interactive-Shell_003f" accesskey="p" rel="prev">What is an Interactive Shell?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Is-this-Shell-Interactive_003f-1"></a>
-<h4 class="subsection">6.3.2 Is this Shell Interactive?</h4>
+<span id="Is-this-Shell-Interactive_003f-1"></span><h4 class="subsection">6.3.2 Is this Shell Interactive?</h4>
<p>To determine within a startup script whether or not Bash is
running interactively,
@@ -8026,13 +7981,11 @@ fi
</pre></div>
<hr>
-<a name="Interactive-Shell-Behavior"></a>
-<div class="header">
+<span id="Interactive-Shell-Behavior"></span><div class="header">
<p>
Previous: <a href="#Is-this-Shell-Interactive_003f" accesskey="p" rel="prev">Is this Shell Interactive?</a>, Up: <a href="#Interactive-Shells" accesskey="u" rel="up">Interactive Shells</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Interactive-Shell-Behavior-1"></a>
-<h4 class="subsection">6.3.3 Interactive Shell Behavior</h4>
+<span id="Interactive-Shell-Behavior-1"></span><h4 class="subsection">6.3.3 Interactive Shell Behavior</h4>
<p>When the shell is running interactively, it changes its behavior in
several ways.
@@ -8052,8 +8005,8 @@ executing it.
See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
-</li><li> Bash executes the value of the <code>PROMPT_COMMAND</code> variable as a command
-before printing the primary prompt, <code>$PS1</code>
+</li><li> Bash executes the values of the set elements of the <code>PROMPT_COMMANDS</code>
+array variable as commands before printing the primary prompt, <code>$PS1</code>
(see <a href="#Bash-Variables">Bash Variables</a>).
</li><li> Readline (see <a href="#Command-Line-Editing">Command Line Editing</a>) is used to read commands from
@@ -8118,14 +8071,12 @@ printing <code>$PS1</code> (see <a href="#Bash-Variables">Bash Variables</a>).
</li></ol>
<hr>
-<a name="Bash-Conditional-Expressions"></a>
-<div class="header">
+<span id="Bash-Conditional-Expressions"></span><div class="header">
<p>
Next: <a href="#Shell-Arithmetic" accesskey="n" rel="next">Shell Arithmetic</a>, Previous: <a href="#Interactive-Shells" accesskey="p" rel="prev">Interactive Shells</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-Conditional-Expressions-1"></a>
-<h3 class="section">6.4 Bash Conditional Expressions</h3>
-<a name="index-expressions_002c-conditional"></a>
+<span id="Bash-Conditional-Expressions-1"></span><h3 class="section">6.4 Bash Conditional Expressions</h3>
+<span id="index-expressions_002c-conditional"></span>
<p>Conditional expressions are used by the <code>[[</code> compound command
and the <code>test</code> and <code>[</code> builtin commands. The <code>test</code>
@@ -8313,18 +8264,16 @@ are evaluated as arithmetic expressions (see <a href="#Shell-Arithmetic">Shell A
</dl>
<hr>
-<a name="Shell-Arithmetic"></a>
-<div class="header">
+<span id="Shell-Arithmetic"></span><div class="header">
<p>
Next: <a href="#Aliases" accesskey="n" rel="next">Aliases</a>, Previous: <a href="#Bash-Conditional-Expressions" accesskey="p" rel="prev">Bash Conditional Expressions</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Shell-Arithmetic-1"></a>
-<h3 class="section">6.5 Shell Arithmetic</h3>
-<a name="index-arithmetic_002c-shell"></a>
-<a name="index-shell-arithmetic"></a>
-<a name="index-expressions_002c-arithmetic"></a>
-<a name="index-evaluation_002c-arithmetic"></a>
-<a name="index-arithmetic-evaluation"></a>
+<span id="Shell-Arithmetic-1"></span><h3 class="section">6.5 Shell Arithmetic</h3>
+<span id="index-arithmetic_002c-shell"></span>
+<span id="index-shell-arithmetic"></span>
+<span id="index-expressions_002c-arithmetic"></span>
+<span id="index-evaluation_002c-arithmetic"></span>
+<span id="index-arithmetic-evaluation"></span>
<p>The shell allows arithmetic expressions to be evaluated, as one of
the shell expansions or by using the <code>((</code> compound command, the
@@ -8425,13 +8374,16 @@ A null value evaluates to 0.
A shell variable need not have its <var>integer</var> attribute turned on
to be used in an expression.
</p>
-<p>Constants with a leading 0 are interpreted as octal numbers.
+<p>Integer constants follow the C language definition, without suffixes or
+character constants.
+Constants with a leading 0 are interpreted as octal numbers.
A leading &lsquo;<samp>0x</samp>&rsquo; or &lsquo;<samp>0X</samp>&rsquo; denotes hexadecimal. Otherwise,
numbers take the form [<var>base</var><code>#</code>]<var>n</var>, where the optional <var>base</var>
is a decimal number between 2 and 64 representing the arithmetic
base, and <var>n</var> is a number in that base.
If <var>base</var><code>#</code> is omitted, then base 10 is used.
When specifying <var>n</var>,
+if a non-digit is required,
the digits greater than 9 are represented by the lowercase letters,
the uppercase letters, &lsquo;<samp>@</samp>&rsquo;, and &lsquo;<samp>_</samp>&rsquo;, in that order.
If <var>base</var> is less than or equal to 36, lowercase and uppercase
@@ -8443,14 +8395,12 @@ parentheses are evaluated first and may override the precedence
rules above.
</p>
<hr>
-<a name="Aliases"></a>
-<div class="header">
+<span id="Aliases"></span><div class="header">
<p>
Next: <a href="#Arrays" accesskey="n" rel="next">Arrays</a>, Previous: <a href="#Shell-Arithmetic" accesskey="p" rel="prev">Shell Arithmetic</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Aliases-1"></a>
-<h3 class="section">6.6 Aliases</h3>
-<a name="index-alias-expansion"></a>
+<span id="Aliases-1"></span><h3 class="section">6.6 Aliases</h3>
+<span id="index-alias-expansion"></span>
<p><var>Aliases</var> allow a string to be substituted for a word when it is used
as the first word of a simple command.
@@ -8510,14 +8460,12 @@ in compound commands.
<p>For almost every purpose, shell functions are preferred over aliases.
</p>
<hr>
-<a name="Arrays"></a>
-<div class="header">
+<span id="Arrays"></span><div class="header">
<p>
Next: <a href="#The-Directory-Stack" accesskey="n" rel="next">The Directory Stack</a>, Previous: <a href="#Aliases" accesskey="p" rel="prev">Aliases</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Arrays-1"></a>
-<h3 class="section">6.7 Arrays</h3>
-<a name="index-arrays"></a>
+<span id="Arrays-1"></span><h3 class="section">6.7 Arrays</h3>
+<span id="index-arrays"></span>
<p>Bash provides one-dimensional indexed and associative array variables.
Any variable may be used as an indexed array;
@@ -8550,7 +8498,7 @@ To explicitly declare an array, use
</p>
<p>Associative arrays are created using
</p><div class="example">
-<pre class="example">declare -A <var>name</var>.
+<pre class="example">declare -A <var>name</var>
</pre></div>
<p>Attributes may be
@@ -8563,14 +8511,27 @@ an array.
<pre class="example"><var>name</var>=(<var>value1</var> <var>value2</var> &hellip; )
</pre></div>
<p>where each
-<var>value</var> is of the form <code>[<var>subscript</var>]=</code><var>string</var>.
+<var>value</var> may be of the form <code>[<var>subscript</var>]=</code><var>string</var>.
Indexed array assignments do not require anything but <var>string</var>.
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.
</p>
-<p>When assigning to an associative array, the subscript is required.
+<p>Each <var>value</var> in the list undergoes all the shell expansions
+described above (see <a href="#Shell-Expansions">Shell Expansions</a>).
+</p>
+<p>When assigning to an associative array, the words in a compound assignment
+may be either assignment statements, for which the subscript is required,
+or a list of words that is interpreted as a sequence of alternating keys
+and values:
+<var>name</var>=(<var>key1</var> <var>value1</var> <var>key2</var> <var>value2</var> &hellip; ).
+These are treated identically to
+<var>name</var>=( [<var>key1</var>]=<var>value1</var> [<var>key2</var>]=<var>value2</var> &hellip; ).
+The first word in the list determines how the remaining words
+are interpreted; all assignments in a list must be of the same type.
+When using key/value pairs, the keys may not be missing or empty;
+a final missing value is treated like the empty string.
</p>
<p>This syntax is also accepted by the <code>declare</code>
builtin. Individual array elements may be assigned to using the
@@ -8652,17 +8613,15 @@ builtins display array values in a way that allows them to be
reused as input.
</p>
<hr>
-<a name="The-Directory-Stack"></a>
-<div class="header">
+<span id="The-Directory-Stack"></span><div class="header">
<p>
Next: <a href="#Controlling-the-Prompt" accesskey="n" rel="next">Controlling the Prompt</a>, Previous: <a href="#Arrays" accesskey="p" rel="prev">Arrays</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="The-Directory-Stack-1"></a>
-<h3 class="section">6.8 The Directory Stack</h3>
-<a name="index-directory-stack"></a>
+<span id="The-Directory-Stack-1"></span><h3 class="section">6.8 The Directory Stack</h3>
+<span id="index-directory-stack"></span>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Directory-Stack-Builtins" accesskey="1">Directory Stack Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bash builtin commands to manipulate
+<tr><td align="left" valign="top">&bull; <a href="#Directory-Stack-Builtins" accesskey="1">Directory Stack Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bash builtin commands to manipulate
the directory stack.
</td></tr>
</table>
@@ -8679,17 +8638,15 @@ of the directory stack.
as the value of the <code>DIRSTACK</code> shell variable.
</p>
<hr>
-<a name="Directory-Stack-Builtins"></a>
-<div class="header">
+<span id="Directory-Stack-Builtins"></span><div class="header">
<p>
Up: <a href="#The-Directory-Stack" accesskey="u" rel="up">The Directory Stack</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Directory-Stack-Builtins-1"></a>
-<h4 class="subsection">6.8.1 Directory Stack Builtins</h4>
+<span id="Directory-Stack-Builtins-1"></span><h4 class="subsection">6.8.1 Directory Stack Builtins</h4>
<dl compact="compact">
<dt><code>dirs</code></dt>
-<dd><a name="index-dirs"></a>
+<dd><span id="index-dirs"></span>
<div class="example">
<pre class="example">dirs [-clpv] [+<var>N</var> | -<var>N</var>]
</pre></div>
@@ -8729,7 +8686,7 @@ with zero.
</dd>
<dt><code>popd</code></dt>
-<dd><a name="index-popd"></a>
+<dd><span id="index-popd"></span>
<div class="example">
<pre class="example">popd [-n] [+<var>N</var> | -<var>N</var>]
</pre></div>
@@ -8755,7 +8712,7 @@ list printed by <code>dirs</code>), starting with zero.
</p></dd>
</dl>
-<a name="index-pushd"></a>
+<span id="index-pushd"></span>
</dd>
<dt><code>pushd</code></dt>
<dd><div class="example">
@@ -8792,19 +8749,18 @@ to the <code>cd</code> builtin.
</dl>
<hr>
-<a name="Controlling-the-Prompt"></a>
-<div class="header">
+<span id="Controlling-the-Prompt"></span><div class="header">
<p>
Next: <a href="#The-Restricted-Shell" accesskey="n" rel="next">The Restricted Shell</a>, Previous: <a href="#The-Directory-Stack" accesskey="p" rel="prev">The Directory Stack</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Controlling-the-Prompt-1"></a>
-<h3 class="section">6.9 Controlling the Prompt</h3>
-<a name="index-prompting"></a>
+<span id="Controlling-the-Prompt-1"></span><h3 class="section">6.9 Controlling the Prompt</h3>
+<span id="index-prompting"></span>
-<p>The value of the variable <code>PROMPT_COMMAND</code> is examined just before
-Bash prints each primary prompt. If <code>PROMPT_COMMAND</code> is set and
-has a non-null value, then the
-value is executed just as if it had been typed on the command line.
+<p>Bash examines the value of the array variable <code>PROMPT_COMMANDS</code> just before
+printing each primary prompt.
+If any elements in <code>PROMPT_COMMANDS</code> are set and non-null, Bash
+executes each value, in numeric order,
+just as if it had been typed on the command line.
</p>
<p>In addition, the following table describes the special characters which
can appear in the prompt variables <code>PS0</code>, <code>PS1</code>, <code>PS2</code>, and
@@ -8910,16 +8866,17 @@ shell session.
parameter expansion, command substitution, arithmetic
expansion, and quote removal, subject to the value of the
<code>promptvars</code> shell option (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>).
+This can have unwanted side effects if escaped portions of the string
+appear within command substitution or contain characters special to
+word expansion.
</p>
<hr>
-<a name="The-Restricted-Shell"></a>
-<div class="header">
+<span id="The-Restricted-Shell"></span><div class="header">
<p>
Next: <a href="#Bash-POSIX-Mode" accesskey="n" rel="next">Bash POSIX Mode</a>, Previous: <a href="#Controlling-the-Prompt" accesskey="p" rel="prev">Controlling the Prompt</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="The-Restricted-Shell-1"></a>
-<h3 class="section">6.10 The Restricted Shell</h3>
-<a name="index-restricted-shell"></a>
+<span id="The-Restricted-Shell-1"></span><h3 class="section">6.10 The Restricted Shell</h3>
+<span id="index-restricted-shell"></span>
<p>If Bash is started with the name <code>rbash</code>, or the
<samp>--restricted</samp>
@@ -8934,10 +8891,13 @@ with the exception that the following are disallowed or not performed:
<ul>
<li> Changing directories with the <code>cd</code> builtin.
</li><li> Setting or unsetting the values of the <code>SHELL</code>, <code>PATH</code>,
+<code>HISTFILE</code>,
<code>ENV</code>, or <code>BASH_ENV</code> variables.
</li><li> Specifying command names containing slashes.
</li><li> Specifying a filename containing a slash as an argument to the <code>.</code>
builtin command.
+</li><li> Specifying a filename containing a slash as an argument to the <code>history</code>
+builtin command.
</li><li> Specifying a filename containing a slash as an argument to the <samp>-p</samp>
option to the <code>hash</code> builtin command.
</li><li> Importing function definitions from the shell environment at startup.
@@ -8958,15 +8918,26 @@ option to the <code>hash</code> builtin command.
(see <a href="#Shell-Scripts">Shell Scripts</a>), <code>rbash</code> turns off any restrictions in
the shell spawned to execute the script.
</p>
+<p>The restricted shell mode is only one component of a useful restricted
+environment. It should be accompanied by setting <code>PATH</code> to a value
+that allows execution of only a few verified commands (commands that
+allow shell escapes are particularly vulnerable), leaving the user
+in a non-writable directory other than his home directory after login,
+not allowing the restricted shell to execute shell scripts, and cleaning
+the environment of variables that cause some commands to modify their
+behavior (e.g., <code>VISUAL</code> or <code>PAGER</code>).
+</p>
+<p>Modern systems provide more secure ways to implement a restricted environment,
+such as <code>jails</code>, <code>zones</code>, or <code>containers</code>.
+</p>
+
<hr>
-<a name="Bash-POSIX-Mode"></a>
-<div class="header">
+<span id="Bash-POSIX-Mode"></span><div class="header">
<p>
-Previous: <a href="#The-Restricted-Shell" accesskey="p" rel="prev">The Restricted Shell</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+Next: <a href="#Shell-Compatibility-Mode" accesskey="n" rel="next">Shell Compatibility Mode</a>, Previous: <a href="#The-Restricted-Shell" accesskey="p" rel="prev">The Restricted Shell</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-POSIX-Mode-1"></a>
-<h3 class="section">6.11 Bash POSIX Mode</h3>
-<a name="index-POSIX-Mode"></a>
+<span id="Bash-POSIX-Mode-1"></span><h3 class="section">6.11 Bash POSIX Mode</h3>
+<span id="index-POSIX-Mode"></span>
<p>Starting Bash with the <samp>--posix</samp> command-line option or executing
&lsquo;<samp>set -o posix</samp>&rsquo; while Bash is running will cause Bash to conform more
@@ -8985,6 +8956,10 @@ startup files.
<code>$PATH</code> to find the new location. This is also available with
&lsquo;<samp>shopt -s checkhash</samp>&rsquo;.
+</li><li> Bash will not insert a command without the execute bit set into the
+command hash table, even if it returns it as a (last-ditch) result
+from a <code>$PATH</code> search.
+
</li><li> The message printed by the job control code and builtins when a job
exits with a non-zero status is &lsquo;Done(status)&rsquo;.
@@ -9049,6 +9024,7 @@ not have to appear as matched pairs.
</li><li> The parser does not recognize <code>time</code> as a reserved word if the next
token begins with a &lsquo;<samp>-</samp>&rsquo;.
+
</li><li> The &lsquo;<samp>!</samp>&rsquo; character does not introduce history expansion within a
double-quoted string, even if the <code>histexpand</code> option is enabled.
@@ -9084,8 +9060,6 @@ results in an invalid expression.
with the <code>.</code> or <code>source</code> builtins, or in a string processed by
the <code>eval</code> builtin.
-</li><li> Process substitution is not available.
-
</li><li> While variable indirection is available, it may not be applied to the
&lsquo;<samp>#</samp>&rsquo; and &lsquo;<samp>?</samp>&rsquo; special parameters.
@@ -9096,10 +9070,6 @@ double-quoted.
</li><li> Assignment statements preceding <small>POSIX</small> special builtins
persist in the shell environment after the builtin completes.
-</li><li> Assignment statements preceding shell function calls persist in the
-shell environment after the function returns, as if a <small>POSIX</small>
-special builtin command had been executed.
-
</li><li> The <code>command</code> builtin does not prevent builtins that take assignment
statements as arguments from expanding them as assignment statements;
when not in <small>POSIX</small> mode, assignment builtins lose their assignment
@@ -9128,6 +9098,9 @@ is a valid signal number. If users want to reset the handler for a given
signal to the original disposition, they should use &lsquo;<samp>-</samp>&rsquo; as the
first argument.
+</li><li> <code>trap -p</code> displays signals whose dispositions are set to SIG_DFL and
+those that were ignored when the shell started.
+
</li><li> The <code>.</code> and <code>source</code> builtins do not search the current directory
for the filename argument if it is not found by searching <code>PATH</code>.
@@ -9222,40 +9195,202 @@ the <samp>--enable-strict-posix-default</samp> to <code>configure</code> when bu
(see <a href="#Optional-Features">Optional Features</a>).
</p>
<hr>
-<a name="Job-Control"></a>
-<div class="header">
+<span id="Shell-Compatibility-Mode"></span><div class="header">
+<p>
+Previous: <a href="#Bash-POSIX-Mode" accesskey="p" rel="prev">Bash POSIX Mode</a>, Up: <a href="#Bash-Features" accesskey="u" rel="up">Bash Features</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
+</div>
+<span id="Shell-Compatibility-Mode-1"></span><h3 class="section">6.12 Shell Compatibility Mode</h3>
+<span id="index-Compatibility-Level"></span>
+<span id="index-Compatibility-Mode"></span>
+
+<p>Bash-4.0 introduced the concept of a &lsquo;shell compatibility level&rsquo;, specified
+as a set of options to the shopt builtin
+(<code>compat31</code>,
+<code>compat32</code>,
+<code>compat40</code>,
+<code>compat41</code>,
+and so on).
+There is only one current
+compatibility level &ndash; each option is mutually exclusive.
+The compatibility level is intended to allow users to select behavior
+from previous versions that is incompatible with newer versions
+while they migrate scripts to use current features and
+behavior. It&rsquo;s intended to be a temporary solution.
+</p>
+<p>This section does not mention behavior that is standard for a particular
+version (e.g., setting <code>compat32</code> means that quoting the rhs of the regexp
+matching operator quotes special regexp characters in the word, which is
+default behavior in bash-3.2 and above).
+</p>
+<p>If a user enables, say, <code>compat32</code>, it may affect the behavior of other
+compatibility levels up to and including the current compatibility level.
+The idea is that each compatibility level controls behavior that changed
+in that version of Bash,
+but that behavior may have been present in earlier versions.
+For instance, the change to use locale-based comparisons with the <code>[[</code>
+command came in bash-4.1, and earlier versions used ASCII-based comparisons,
+so enabling <code>compat32</code> will enable ASCII-based comparisons as well.
+That granularity may not be sufficient for
+all uses, and as a result users should employ compatibility levels carefully.
+Read the documentation for a particular feature to find out the
+current behavior.
+</p>
+<p>Bash-4.3 introduced a new shell variable: <code>BASH_COMPAT</code>.
+The value assigned
+to this variable (a decimal version number like 4.2, or an integer
+corresponding to the <code>compat</code><var>NN</var> option, like 42) determines the
+compatibility level.
+</p>
+<p>Starting with bash-4.4, Bash has begun deprecating older compatibility
+levels.
+Eventually, the options will be removed in favor of <code>BASH_COMPAT</code>.
+</p>
+<p>Bash-5.0 is the final version for which there will be an individual shopt
+option for the previous version. Users should use <code>BASH_COMPAT</code>
+on bash-5.0 and later versions.
+</p>
+<p>The following table describes the behavior changes controlled by each
+compatibility level setting.
+The <code>compat</code><var>NN</var> tag is used as shorthand for setting the
+compatibility level
+to <var>NN</var> using one of the following mechanisms.
+For versions prior to bash-5.0, the compatibility level may be set using
+the corresponding <code>compat</code><var>NN</var> shopt option.
+For bash-4.3 and later versions, the <code>BASH_COMPAT</code> variable is preferred,
+and it is required for bash-5.1 and later versions.
+</p>
+<dl compact="compact">
+<dt><code>compat31</code></dt>
+<dd><ul>
+<li> quoting the rhs of the <code>[[</code> command&rsquo;s regexp matching operator (=~)
+has no special effect
+</li></ul>
+
+</dd>
+<dt><code>compat32</code></dt>
+<dd><ul>
+<li> interrupting a command list such as &quot;a ; b ; c&quot; causes the execution
+of the next command in the list (in bash-4.0 and later versions,
+the shell acts as if it received the interrupt, so
+interrupting one command in a list aborts the execution of the
+entire list)
+</li></ul>
+
+</dd>
+<dt><code>compat40</code></dt>
+<dd><ul>
+<li> the &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; operators to the <code>[[</code> command do not
+consider the current locale when comparing strings; they use ASCII
+ordering.
+Bash versions prior to bash-4.1 use ASCII collation and strcmp(3);
+bash-4.1 and later use the current locale&rsquo;s collation sequence and
+strcoll(3).
+</li></ul>
+
+</dd>
+<dt><code>compat41</code></dt>
+<dd><ul>
+<li> in posix mode, <code>time</code> may be followed by options and still be
+recognized as a reserved word (this is <small>POSIX</small> interpretation 267)
+</li><li> in posix mode, the parser requires that an even number of single
+quotes occur in the <var>word</var> portion of a double-quoted ${&hellip;}
+parameter expansion and treats them specially, so that characters within
+the single quotes are considered quoted
+(this is <small>POSIX</small> interpretation 221)
+</li></ul>
+
+</dd>
+<dt><code>compat42</code></dt>
+<dd><ul>
+<li> the replacement string in double-quoted pattern substitution does not
+undergo quote removal, as it does in versions after bash-4.2
+</li><li> in posix mode, single quotes are considered special when expanding
+the <var>word</var> portion of a double-quoted ${&hellip;} parameter expansion
+and can be used to quote a closing brace or other special character
+(this is part of <small>POSIX</small> interpretation 221);
+in later versions, single quotes
+are not special within double-quoted word expansions
+</li></ul>
+
+</dd>
+<dt><code>compat43</code></dt>
+<dd><ul>
+<li> 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=&rsquo;(1 2)&rsquo;). Later versions warn that this usage is
+deprecated
+</li><li> word expansion errors are considered non-fatal errors that cause the
+current command to fail, even in posix mode
+(the default behavior is to make them fatal errors that cause the shell
+to exit)
+</li><li> when executing a shell function, the loop state (while/until/etc.)
+is not reset, so <code>break</code> or <code>continue</code> in that function will break
+or continue loops in the calling context. Bash-4.4 and later reset
+the loop state to prevent this
+</li></ul>
+
+</dd>
+<dt><code>compat44</code></dt>
+<dd><ul>
+<li> the shell sets up the values used by <code>BASH_ARGV</code> and <code>BASH_ARGC</code>
+so they can expand to the shell&rsquo;s positional parameters even if extended
+debugging mode is not enabled
+</li><li> a subshell inherits loops from its parent context, so <code>break</code>
+or <code>continue</code> will cause the subshell to exit.
+Bash-5.0 and later reset the loop state to prevent the exit
+</li><li> variable assignments preceding builtins like <code>export</code> and <code>readonly</code>
+that set attributes continue to affect variables with the same
+name in the calling environment even if the shell is not in posix
+mode
+</li></ul>
+
+</dd>
+<dt><code>compat50 (set using BASH_COMPAT)</code></dt>
+<dd><ul>
+<li> Bash-5.1 changed the way <code>$RANDOM</code> is generated to introduce slightly
+more randomness. If the shell compatibility level is set to 50 or
+lower, it reverts to the method from bash-5.0 and previous versions,
+so seeding the random number generator by assigning a value to
+<code>RANDOM</code> will produce the same sequence as in bash-5.0
+</li><li> If the command hash table is empty, Bash versions prior to bash-5.1
+printed an informational message to that effect, even when producing
+output that can be reused as input. Bash-5.1 suppresses that message
+when the <samp>-l</samp> option is supplied.
+</li></ul>
+</dd>
+</dl>
+
+<hr>
+<span id="Job-Control"></span><div class="header">
<p>
Next: <a href="#Command-Line-Editing" accesskey="n" rel="next">Command Line Editing</a>, Previous: <a href="#Bash-Features" accesskey="p" rel="prev">Bash Features</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Job-Control-1"></a>
-<h2 class="chapter">7 Job Control</h2>
+<span id="Job-Control-1"></span><h2 class="chapter">7 Job Control</h2>
<p>This chapter discusses what job control is, how it works, and how
Bash allows you to access its facilities.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Basics" accesskey="1">Job Control Basics</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How job control works.
+<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Basics" accesskey="1">Job Control Basics</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How job control works.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Builtins" accesskey="2">Job Control Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bash builtin commands used to interact
+<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Builtins" accesskey="2">Job Control Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Bash builtin commands used to interact
with job control.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Variables" accesskey="3">Job Control Variables</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables Bash uses to customize job
+<tr><td align="left" valign="top">&bull; <a href="#Job-Control-Variables" accesskey="3">Job Control Variables</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Variables Bash uses to customize job
control.
</td></tr>
</table>
<hr>
-<a name="Job-Control-Basics"></a>
-<div class="header">
+<span id="Job-Control-Basics"></span><div class="header">
<p>
Next: <a href="#Job-Control-Builtins" accesskey="n" rel="next">Job Control Builtins</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Job-Control-Basics-1"></a>
-<h3 class="section">7.1 Job Control Basics</h3>
-<a name="index-job-control-1"></a>
-<a name="index-foreground"></a>
-<a name="index-background"></a>
-<a name="index-suspending-jobs"></a>
+<span id="Job-Control-Basics-1"></span><h3 class="section">7.1 Job Control Basics</h3>
+<span id="index-job-control-1"></span>
+<span id="index-foreground"></span>
+<span id="index-background"></span>
+<span id="index-suspending-jobs"></span>
<p>Job control
refers to the ability to selectively stop (suspend)
@@ -9327,7 +9462,8 @@ previous job with a &lsquo;<samp>-</samp>&rsquo;.
<p>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, &lsquo;<samp>%ce</samp>&rsquo; refers
-to a stopped <code>ce</code> job. Using &lsquo;<samp>%?ce</samp>&rsquo;, on the
+to a stopped job whose command name begins with &lsquo;<samp>ce</samp>&rsquo;.
+Using &lsquo;<samp>%?ce</samp>&rsquo;, on the
other hand, refers to any job containing the string &lsquo;<samp>ce</samp>&rsquo; in
its command line. If the prefix or substring matches more than one job,
Bash reports an error.
@@ -9356,21 +9492,19 @@ Bash does not print another warning, and any stopped jobs are terminated.
</p>
<p>When the shell is waiting for a job or process using the <code>wait</code>
builtin, and job control is enabled, <code>wait</code> will return when the
-job changes state. The <samp>-f</samp> option will force <code>wait</code> to wait
+job changes state. The <samp>-f</samp> option causes <code>wait</code> to wait
until the job or process terminates before returning.
</p>
<hr>
-<a name="Job-Control-Builtins"></a>
-<div class="header">
+<span id="Job-Control-Builtins"></span><div class="header">
<p>
Next: <a href="#Job-Control-Variables" accesskey="n" rel="next">Job Control Variables</a>, Previous: <a href="#Job-Control-Basics" accesskey="p" rel="prev">Job Control Basics</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Job-Control-Builtins-1"></a>
-<h3 class="section">7.2 Job Control Builtins</h3>
+<span id="Job-Control-Builtins-1"></span><h3 class="section">7.2 Job Control Builtins</h3>
<dl compact="compact">
<dt><code>bg</code></dt>
-<dd><a name="index-bg"></a>
+<dd><span id="index-bg"></span>
<div class="example">
<pre class="example">bg [<var>jobspec</var> &hellip;]
</pre></div>
@@ -9385,7 +9519,7 @@ that was started without job control.
</p>
</dd>
<dt><code>fg</code></dt>
-<dd><a name="index-fg"></a>
+<dd><span id="index-fg"></span>
<div class="example">
<pre class="example">fg [<var>jobspec</var>]
</pre></div>
@@ -9399,7 +9533,7 @@ job control enabled, <var>jobspec</var> does not specify a valid job or
</p>
</dd>
<dt><code>jobs</code></dt>
-<dd><a name="index-jobs"></a>
+<dd><span id="index-jobs"></span>
<div class="example">
<pre class="example">jobs [-lnprs] [<var>jobspec</var>]
jobs -x <var>command</var> [<var>arguments</var>]
@@ -9443,7 +9577,7 @@ passing it <var>argument</var>s, returning its exit status.
</p>
</dd>
<dt><code>kill</code></dt>
-<dd><a name="index-kill"></a>
+<dd><span id="index-kill"></span>
<div class="example">
<pre class="example">kill [-s <var>sigspec</var>] [-n <var>signum</var>] [-<var>sigspec</var>] <var>jobspec</var> or <var>pid</var>
kill -l|-L [<var>exit_status</var>]
@@ -9467,28 +9601,42 @@ or non-zero if an error occurs or an invalid option is encountered.
</p>
</dd>
<dt><code>wait</code></dt>
-<dd><a name="index-wait"></a>
+<dd><span id="index-wait"></span>
<div class="example">
-<pre class="example">wait [-fn] [<var>jobspec</var> or <var>pid</var> &hellip;]
+<pre class="example">wait [-fn] [-p <var>varname</var>] [<var>jobspec</var> or <var>pid</var> &hellip;]
</pre></div>
<p>Wait until the child process specified by each process <small>ID</small> <var>pid</var>
or job specification <var>jobspec</var> 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 <samp>-n</samp> option is supplied, <code>wait</code> waits for any job to
-terminate and returns its exit status.
-If the <samp>-f</samp> option is supplied, and job control is enabled,
-<code>wait</code> forces each <var>pid</var> or <var>jobspec</var> to terminate before
-returning its status, intead of returning when it changes status.
+If no arguments are given,
+<code>wait</code> waits for all running background jobs and
+the last-executed process substitution, if its process id is the same as
+<var>$!</var>,
+and the return status is zero.
+If the <samp>-n</samp> option is supplied, <code>wait</code> waits for a single job
+from the list of <var>pids</var> or <var>jobspecs</var> or, if no arguments are
+supplied, any job,
+to complete and returns its exit status.
+If none of the supplied arguments is a child of the shell, or if no arguments
+are supplied and the shell has no unwaited-for children, the exit status
+is 127.
+If the <samp>-p</samp> option is supplied, the process or job identifier of the job
+for which the exit status is returned is assigned to the variable
+<var>varname</var> named by the option argument.
+The variable will be unset initially, before any assignment.
+This is useful only when the <samp>-n</samp> option is supplied.
+Supplying the <samp>-f</samp> option, when job control is enabled,
+forces <code>wait</code> to wait for each <var>pid</var> or <var>jobspec</var> to
+terminate before returning its status, intead of returning when it changes
+status.
If neither <var>jobspec</var> nor <var>pid</var> specifies an active child process
of the shell, the return status is 127.
</p>
</dd>
<dt><code>disown</code></dt>
-<dd><a name="index-disown"></a>
+<dd><span id="index-disown"></span>
<div class="example">
<pre class="example">disown [-ar] [-h] [<var>jobspec</var> &hellip; | <var>pid</var> &hellip; ]
</pre></div>
@@ -9506,7 +9654,7 @@ argument restricts operation to running jobs.
</p>
</dd>
<dt><code>suspend</code></dt>
-<dd><a name="index-suspend"></a>
+<dd><span id="index-suspend"></span>
<div class="example">
<pre class="example">suspend [-f]
</pre></div>
@@ -9523,17 +9671,15 @@ builtins do not accept <var>jobspec</var> arguments. They must be
supplied process <small>ID</small>s.
</p>
<hr>
-<a name="Job-Control-Variables"></a>
-<div class="header">
+<span id="Job-Control-Variables"></span><div class="header">
<p>
Previous: <a href="#Job-Control-Builtins" accesskey="p" rel="prev">Job Control Builtins</a>, Up: <a href="#Job-Control" accesskey="u" rel="up">Job Control</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Job-Control-Variables-1"></a>
-<h3 class="section">7.3 Job Control Variables</h3>
+<span id="Job-Control-Variables-1"></span><h3 class="section">7.3 Job Control Variables</h3>
<dl compact="compact">
<dt><code>auto_resume</code>
-<a name="index-auto_005fresume"></a>
+<span id="index-auto_005fresume"></span>
</dt>
<dd><p>This variable controls how the shell interacts with the user and
job control. If this variable exists then single word simple
@@ -9555,19 +9701,17 @@ analogous to the &lsquo;<samp>%</samp>&rsquo; job <small>ID</small>.
</dd>
</dl>
-<a name="index-Readline_002c-how-to-use"></a>
+<span id="index-Readline_002c-how-to-use"></span>
<hr>
-<a name="Command-Line-Editing"></a>
-<div class="header">
+<span id="Command-Line-Editing"></span><div class="header">
<p>
Next: <a href="#Using-History-Interactively" accesskey="n" rel="next">Using History Interactively</a>, Previous: <a href="#Job-Control" accesskey="p" rel="prev">Job Control</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Command-Line-Editing-1"></a>
-<h2 class="chapter">8 Command Line Editing</h2>
+<span id="Command-Line-Editing-1"></span><h2 class="chapter">8 Command Line Editing</h2>
<p>This chapter describes the basic features of the <small>GNU</small>
command line editing interface.
@@ -9585,37 +9729,35 @@ Line editing can be enabled at any time using the <samp>-o emacs</samp> or
<samp>+o vi</samp> options to <code>set</code>.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Introduction-and-Notation" accesskey="1">Introduction and Notation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notation used in this text.
+<tr><td align="left" valign="top">&bull; <a href="#Introduction-and-Notation" accesskey="1">Introduction and Notation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Notation used in this text.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Interaction" accesskey="2">Readline Interaction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The minimum set of commands for editing a line.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Interaction" accesskey="2">Readline Interaction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The minimum set of commands for editing a line.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Init-File" accesskey="3">Readline Init File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Customizing Readline from a user&rsquo;s view.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Init-File" accesskey="3">Readline Init File</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Customizing Readline from a user&rsquo;s view.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bindable-Readline-Commands" accesskey="4">Bindable Readline Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A description of most of the Readline commands
+<tr><td align="left" valign="top">&bull; <a href="#Bindable-Readline-Commands" accesskey="4">Bindable Readline Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A description of most of the Readline commands
available for binding
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A short description of how to make Readline
+<tr><td align="left" valign="top">&bull; <a href="#Readline-vi-Mode" accesskey="5">Readline vi Mode</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">A short description of how to make Readline
behave like the vi editor.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Programmable-Completion" accesskey="6">Programmable Completion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify the possible completions for
+<tr><td align="left" valign="top">&bull; <a href="#Programmable-Completion" accesskey="6">Programmable Completion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify the possible completions for
a specific command.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Programmable-Completion-Builtins" accesskey="7">Programmable Completion Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands to specify how to
+<tr><td align="left" valign="top">&bull; <a href="#Programmable-Completion-Builtins" accesskey="7">Programmable Completion Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Builtin commands to specify how to
complete arguments for a particular command.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#A-Programmable-Completion-Example" accesskey="8">A Programmable Completion Example</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example shell function for
+<tr><td align="left" valign="top">&bull; <a href="#A-Programmable-Completion-Example" accesskey="8">A Programmable Completion Example</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example shell function for
generating possible completions.
</td></tr>
</table>
<hr>
-<a name="Introduction-and-Notation"></a>
-<div class="header">
+<span id="Introduction-and-Notation"></span><div class="header">
<p>
Next: <a href="#Readline-Interaction" accesskey="n" rel="next">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Introduction-to-Line-Editing"></a>
-<h3 class="section">8.1 Introduction to Line Editing</h3>
+<span id="Introduction-to-Line-Editing"></span><h3 class="section">8.1 Introduction to Line Editing</h3>
<p>The following paragraphs describe the notation used to represent
keystrokes.
@@ -9653,14 +9795,12 @@ The <tt class="key">RET</tt> key may be labeled <tt class="key">Return</tt> or <
some keyboards.
</p>
<hr>
-<a name="Readline-Interaction"></a>
-<div class="header">
+<span id="Readline-Interaction"></span><div class="header">
<p>
Next: <a href="#Readline-Init-File" accesskey="n" rel="next">Readline Init File</a>, Previous: <a href="#Introduction-and-Notation" accesskey="p" rel="prev">Introduction and Notation</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Interaction-1"></a>
-<h3 class="section">8.2 Readline Interaction</h3>
-<a name="index-interaction_002c-readline"></a>
+<span id="Readline-Interaction-1"></span><h3 class="section">8.2 Readline Interaction</h3>
+<span id="index-interaction_002c-readline"></span>
<p>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
@@ -9674,29 +9814,27 @@ end of the line to press <tt class="key">RET</tt>; the entire line is accepted
regardless of the location of the cursor within the line.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The least you need to know about Readline.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Bare-Essentials" accesskey="1">Readline Bare Essentials</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The least you need to know about Readline.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Moving about the input line.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Movement-Commands" accesskey="2">Readline Movement Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Moving about the input line.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to delete text, and how to get it back!
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Killing-Commands" accesskey="3">Readline Killing Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to delete text, and how to get it back!
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Arguments" accesskey="4">Readline Arguments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Giving numeric arguments to commands.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Arguments" accesskey="4">Readline Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Giving numeric arguments to commands.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Searching" accesskey="5">Searching</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Searching through previous lines.
+<tr><td align="left" valign="top">&bull; <a href="#Searching" accesskey="5">Searching</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Searching through previous lines.
</td></tr>
</table>
<hr>
-<a name="Readline-Bare-Essentials"></a>
-<div class="header">
+<span id="Readline-Bare-Essentials"></span><div class="header">
<p>
Next: <a href="#Readline-Movement-Commands" accesskey="n" rel="next">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Bare-Essentials-1"></a>
-<h4 class="subsection">8.2.1 Readline Bare Essentials</h4>
-<a name="index-notation_002c-readline"></a>
-<a name="index-command-editing"></a>
-<a name="index-editing-command-lines"></a>
+<span id="Readline-Bare-Essentials-1"></span><h4 class="subsection">8.2.1 Readline Bare Essentials</h4>
+<span id="index-notation_002c-readline"></span>
+<span id="index-command-editing"></span>
+<span id="index-editing-command-lines"></span>
<p>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
@@ -9744,13 +9882,11 @@ to delete the character underneath the cursor, like <kbd>C-d</kbd>, rather
than the character to the left of the cursor.)
</p>
<hr>
-<a name="Readline-Movement-Commands"></a>
-<div class="header">
+<span id="Readline-Movement-Commands"></span><div class="header">
<p>
Next: <a href="#Readline-Killing-Commands" accesskey="n" rel="next">Readline Killing Commands</a>, Previous: <a href="#Readline-Bare-Essentials" accesskey="p" rel="prev">Readline Bare Essentials</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Movement-Commands-1"></a>
-<h4 class="subsection">8.2.2 Readline Movement Commands</h4>
+<span id="Readline-Movement-Commands-1"></span><h4 class="subsection">8.2.2 Readline Movement Commands</h4>
<p>The above table describes the most basic keystrokes that you need
@@ -9782,16 +9918,14 @@ forward a word. It is a loose convention that control keystrokes
operate on characters while meta keystrokes operate on words.
</p>
<hr>
-<a name="Readline-Killing-Commands"></a>
-<div class="header">
+<span id="Readline-Killing-Commands"></span><div class="header">
<p>
Next: <a href="#Readline-Arguments" accesskey="n" rel="next">Readline Arguments</a>, Previous: <a href="#Readline-Movement-Commands" accesskey="p" rel="prev">Readline Movement Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Killing-Commands-1"></a>
-<h4 class="subsection">8.2.3 Readline Killing Commands</h4>
+<span id="Readline-Killing-Commands-1"></span><h4 class="subsection">8.2.3 Readline Killing Commands</h4>
-<a name="index-killing-text"></a>
-<a name="index-yanking-text"></a>
+<span id="index-killing-text"></span>
+<span id="index-yanking-text"></span>
<p><em>Killing</em> text means to delete the text from the line, but to save
it away for later use, usually by <em>yanking</em> (re-inserting)
@@ -9808,7 +9942,7 @@ 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.
-<a name="index-kill-ring"></a>
+<span id="index-kill-ring"></span>
</p>
<p>Here is the list of commands for killing text.
</p>
@@ -9851,13 +9985,11 @@ the prior command is <kbd>C-y</kbd> or <kbd>M-y</kbd>.
</dl>
<hr>
-<a name="Readline-Arguments"></a>
-<div class="header">
+<span id="Readline-Arguments"></span><div class="header">
<p>
Next: <a href="#Searching" accesskey="n" rel="next">Searching</a>, Previous: <a href="#Readline-Killing-Commands" accesskey="p" rel="prev">Readline Killing Commands</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Arguments-1"></a>
-<h4 class="subsection">8.2.4 Readline Arguments</h4>
+<span id="Readline-Arguments-1"></span><h4 class="subsection">8.2.4 Readline Arguments</h4>
<p>You can pass numeric arguments to Readline commands. Sometimes the
argument acts as a repeat count, other times it is the <i>sign</i> of the
@@ -9875,13 +10007,11 @@ the <kbd>C-d</kbd> command an argument of 10, you could type &lsquo;<samp>M-1 0
which will delete the next ten characters on the input line.
</p>
<hr>
-<a name="Searching"></a>
-<div class="header">
+<span id="Searching"></span><div class="header">
<p>
Previous: <a href="#Readline-Arguments" accesskey="p" rel="prev">Readline Arguments</a>, Up: <a href="#Readline-Interaction" accesskey="u" rel="up">Readline Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Searching-for-Commands-in-the-History"></a>
-<h4 class="subsection">8.2.5 Searching for Commands in the History</h4>
+<span id="Searching-for-Commands-in-the-History"></span><h4 class="subsection">8.2.5 Searching for Commands in the History</h4>
<p>Readline provides commands for searching through the command history
(see <a href="#Bash-History-Facilities">Bash History Facilities</a>)
@@ -9924,14 +10054,12 @@ 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.
</p>
<hr>
-<a name="Readline-Init-File"></a>
-<div class="header">
+<span id="Readline-Init-File"></span><div class="header">
<p>
Next: <a href="#Bindable-Readline-Commands" accesskey="n" rel="next">Bindable Readline Commands</a>, Previous: <a href="#Readline-Interaction" accesskey="p" rel="prev">Readline Interaction</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Init-File-1"></a>
-<h3 class="section">8.3 Readline Init File</h3>
-<a name="index-initialization-file_002c-readline"></a>
+<span id="Readline-Init-File-1"></span><h3 class="section">8.3 Readline Init File</h3>
+<span id="index-initialization-file_002c-readline"></span>
<p>Although the Readline library comes with a set of Emacs-like
keybindings installed by default, it is possible to use a different set
@@ -9943,6 +10071,9 @@ file is taken from the value of the shell variable <code>INPUTRC</code>. If
that variable is unset, the default is <samp>~/.inputrc</samp>. If that
file does not exist or cannot be read, the ultimate default is
<samp>/etc/inputrc</samp>.
+The <code>bind</code><!-- /@w --> builtin command can also be used to set Readline
+keybindings and variables.
+See <a href="#Bash-Builtins">Bash Builtins</a>.
</p>
<p>When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
@@ -9951,26 +10082,24 @@ init file is read, and the key bindings are set.
incorporating any changes that you might have made to it.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax for the commands in the inputrc file.
+<tr><td align="left" valign="top">&bull; <a href="#Readline-Init-File-Syntax" accesskey="1">Readline Init File Syntax</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Syntax for the commands in the inputrc file.
</td></tr>
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Conditional key bindings in the inputrc file.
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Conditional-Init-Constructs" accesskey="2">Conditional Init Constructs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Conditional key bindings in the inputrc file.
</td></tr>
<tr><th colspan="3" align="left" valign="top"><pre class="menu-comment">
-</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Sample-Init-File" accesskey="3">Sample Init File</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example inputrc file.
+</pre></th></tr><tr><td align="left" valign="top">&bull; <a href="#Sample-Init-File" accesskey="3">Sample Init File</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">An example inputrc file.
</td></tr>
</table>
<hr>
-<a name="Readline-Init-File-Syntax"></a>
-<div class="header">
+<span id="Readline-Init-File-Syntax"></span><div class="header">
<p>
Next: <a href="#Conditional-Init-Constructs" accesskey="n" rel="next">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-Init-File-Syntax-1"></a>
-<h4 class="subsection">8.3.1 Readline Init File Syntax</h4>
+<span id="Readline-Init-File-Syntax-1"></span><h4 class="subsection">8.3.1 Readline Init File Syntax</h4>
<p>There are only a few basic constructs allowed in the
Readline init file. Blank lines are ignored.
@@ -10011,10 +10140,10 @@ and values. See <a href="#Bash-Builtins">Bash Builtins</a>.
<p>A great deal of run-time behavior is changeable with the following
variables.
</p>
-<a name="index-variables_002c-readline"></a>
+<span id="index-variables_002c-readline"></span>
<dl compact="compact">
<dt><code>bell-style</code></dt>
-<dd><a name="index-bell_002dstyle"></a>
+<dd><span id="index-bell_002dstyle"></span>
<p>Controls what happens when Readline wants to ring the terminal bell.
If set to &lsquo;<samp>none</samp>&rsquo;, Readline never rings the bell. If set to
&lsquo;<samp>visible</samp>&rsquo;, Readline uses a visible bell if one is available.
@@ -10023,21 +10152,21 @@ the terminal&rsquo;s bell.
</p>
</dd>
<dt><code>bind-tty-special-chars</code></dt>
-<dd><a name="index-bind_002dtty_002dspecial_002dchars"></a>
+<dd><span id="index-bind_002dtty_002dspecial_002dchars"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo; (the default), Readline attempts to bind the control
characters treated specially by the kernel&rsquo;s terminal driver to their
Readline equivalents.
</p>
</dd>
<dt><code>blink-matching-paren</code></dt>
-<dd><a name="index-blink_002dmatching_002dparen"></a>
+<dd><span id="index-blink_002dmatching_002dparen"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline attempts to briefly move the cursor to an
opening parenthesis when a closing parenthesis is inserted. The default
is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>colored-completion-prefix</code></dt>
-<dd><a name="index-colored_002dcompletion_002dprefix"></a>
+<dd><span id="index-colored_002dcompletion_002dprefix"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, 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 <code>LS_COLORS</code>
@@ -10046,7 +10175,7 @@ The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>colored-stats</code></dt>
-<dd><a name="index-colored_002dstats"></a>
+<dd><span id="index-colored_002dstats"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline displays possible completions using different
colors to indicate their file type.
The color definitions are taken from the value of the <code>LS_COLORS</code>
@@ -10055,14 +10184,14 @@ The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>comment-begin</code></dt>
-<dd><a name="index-comment_002dbegin"></a>
+<dd><span id="index-comment_002dbegin"></span>
<p>The string to insert at the beginning of the line when the
<code>insert-comment</code> command is executed. The default value
is <code>&quot;#&quot;</code>.
</p>
</dd>
<dt><code>completion-display-width</code></dt>
-<dd><a name="index-completion_002ddisplay_002dwidth"></a>
+<dd><span id="index-completion_002ddisplay_002dwidth"></span>
<p>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
@@ -10072,14 +10201,14 @@ The default value is -1.
</p>
</dd>
<dt><code>completion-ignore-case</code></dt>
-<dd><a name="index-completion_002dignore_002dcase"></a>
+<dd><span id="index-completion_002dignore_002dcase"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline performs filename matching and completion
in a case-insensitive fashion.
The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>completion-map-case</code></dt>
-<dd><a name="index-completion_002dmap_002dcase"></a>
+<dd><span id="index-completion_002dmap_002dcase"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, and <var>completion-ignore-case</var> is enabled, Readline
treats hyphens (&lsquo;<samp>-</samp>&rsquo;) and underscores (&lsquo;<samp>_</samp>&rsquo;) as equivalent when
performing case-insensitive filename matching and completion.
@@ -10087,7 +10216,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>completion-prefix-display-length</code></dt>
-<dd><a name="index-completion_002dprefix_002ddisplay_002dlength"></a>
+<dd><span id="index-completion_002dprefix_002ddisplay_002dlength"></span>
<p>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
@@ -10095,19 +10224,19 @@ replaced with an ellipsis when displaying possible completions.
</p>
</dd>
<dt><code>completion-query-items</code></dt>
-<dd><a name="index-completion_002dquery_002ditems"></a>
+<dd><span id="index-completion_002dquery_002ditems"></span>
<p>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.
+If the number of possible completions is greater than or equal to this value,
+Readline will ask whether or not the user wishes to view them;
+otherwise, they are simply listed.
This variable must be set to an integer value greater than or equal to 0.
A negative value means Readline should never ask.
The default limit is <code>100</code>.
</p>
</dd>
<dt><code>convert-meta</code></dt>
-<dd><a name="index-convert_002dmeta"></a>
+<dd><span id="index-convert_002dmeta"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will convert characters with the
eighth bit set to an <small>ASCII</small> key sequence by stripping the eighth
bit and prefixing an <tt class="key">ESC</tt> character, converting them to a
@@ -10117,21 +10246,21 @@ eight-bit characters.
</p>
</dd>
<dt><code>disable-completion</code></dt>
-<dd><a name="index-disable_002dcompletion"></a>
+<dd><span id="index-disable_002dcompletion"></span>
<p>If set to &lsquo;<samp>On</samp>&rsquo;, Readline will inhibit word completion.
Completion characters will be inserted into the line as if they had
been mapped to <code>self-insert</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>echo-control-characters</code></dt>
-<dd><a name="index-echo_002dcontrol_002dcharacters"></a>
+<dd><span id="index-echo_002dcontrol_002dcharacters"></span>
<p>When set to &lsquo;<samp>on</samp>&rsquo;, on operating systems that indicate they support it,
readline echoes a character corresponding to a signal generated from the
keyboard. The default is &lsquo;<samp>on</samp>&rsquo;.
</p>
</dd>
<dt><code>editing-mode</code></dt>
-<dd><a name="index-editing_002dmode"></a>
+<dd><span id="index-editing_002dmode"></span>
<p>The <code>editing-mode</code> 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
@@ -10139,7 +10268,7 @@ set to either &lsquo;<samp>emacs</samp>&rsquo; or &lsquo;<samp>vi</samp>&rsquo;.
</p>
</dd>
<dt><code>emacs-mode-string</code></dt>
-<dd><a name="index-emacs_002dmode_002dstring"></a>
+<dd><span id="index-emacs_002dmode_002dstring"></span>
<p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when emacs editing mode is active. The value is expanded like a
@@ -10152,16 +10281,16 @@ The default is &lsquo;<samp>@</samp>&rsquo;.
</p>
</dd>
<dt><code>enable-bracketed-paste</code></dt>
-<dd><a name="index-enable_002dbracketed_002dpaste"></a>
+<dd><span id="index-enable_002dbracketed_002dpaste"></span>
<p>When set to &lsquo;<samp>On</samp>&rsquo;, 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 &lsquo;<samp>off</samp>&rsquo;.
+from being interpreted as editing commands. The default is &lsquo;<samp>On</samp>&rsquo;.
</p>
</dd>
<dt><code>enable-keypad</code></dt>
-<dd><a name="index-enable_002dkeypad"></a>
+<dd><span id="index-enable_002dkeypad"></span>
<p>When set to &lsquo;<samp>on</samp>&rsquo;, Readline will try to enable the application
keypad when it is called. Some systems need this to enable the
arrow keys. The default is &lsquo;<samp>off</samp>&rsquo;.
@@ -10175,13 +10304,13 @@ The default is &lsquo;<samp>on</samp>&rsquo;.
</p>
</dd>
<dt><code>expand-tilde</code></dt>
-<dd><a name="index-expand_002dtilde"></a>
+<dd><span id="index-expand_002dtilde"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, tilde expansion is performed when Readline
attempts word completion. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>history-preserve-point</code></dt>
-<dd><a name="index-history_002dpreserve_002dpoint"></a>
+<dd><span id="index-history_002dpreserve_002dpoint"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, the history code attempts to place the point (the
current cursor position) at the
same location on each history line retrieved with <code>previous-history</code>
@@ -10189,7 +10318,7 @@ or <code>next-history</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>history-size</code></dt>
-<dd><a name="index-history_002dsize"></a>
+<dd><span id="index-history_002dsize"></span>
<p>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.
@@ -10201,17 +10330,18 @@ the maximum number of history entries will be set to 500.
</p>
</dd>
<dt><code>horizontal-scroll-mode</code></dt>
-<dd><a name="index-horizontal_002dscroll_002dmode"></a>
+<dd><span id="index-horizontal_002dscroll_002dmode"></span>
<p>This variable can be set to either &lsquo;<samp>on</samp>&rsquo; or &lsquo;<samp>off</samp>&rsquo;. Setting it
to &lsquo;<samp>on</samp>&rsquo; 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 &lsquo;<samp>off</samp>&rsquo;.
+of the screen, instead of wrapping onto a new screen line.
+This variable is automatically set to &lsquo;<samp>on</samp>&rsquo; for terminals of height 1.
+By default, this variable is set to &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>input-meta</code></dt>
-<dd><a name="index-input_002dmeta"></a>
-<a name="index-meta_002dflag"></a>
+<dd><span id="index-input_002dmeta"></span>
+<span id="index-meta_002dflag"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, 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
@@ -10221,7 +10351,7 @@ The name <code>meta-flag</code> is a synonym for this variable.
</p>
</dd>
<dt><code>isearch-terminators</code></dt>
-<dd><a name="index-isearch_002dterminators"></a>
+<dd><span id="index-isearch_002dterminators"></span>
<p>The string of characters that should terminate an incremental search without
subsequently executing the character as a command (see <a href="#Searching">Searching</a>).
If this variable has not been given a value, the characters <tt class="key">ESC</tt> and
@@ -10229,7 +10359,7 @@ If this variable has not been given a value, the characters <tt class="key">ESC<
</p>
</dd>
<dt><code>keymap</code></dt>
-<dd><a name="index-keymap"></a>
+<dd><span id="index-keymap"></span>
<p>Sets Readline&rsquo;s idea of the current keymap for key binding commands.
Built-in <code>keymap</code> names are
<code>emacs</code>,
@@ -10271,14 +10401,14 @@ appended. The default is &lsquo;<samp>on</samp>&rsquo;.
</p>
</dd>
<dt><code>mark-modified-lines</code></dt>
-<dd><a name="index-mark_002dmodified_002dlines"></a>
+<dd><span id="index-mark_002dmodified_002dlines"></span>
<p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to display an
asterisk (&lsquo;<samp>*</samp>&rsquo;) at the start of history lines which have been modified.
This variable is &lsquo;<samp>off</samp>&rsquo; by default.
</p>
</dd>
<dt><code>mark-symlinked-directories</code></dt>
-<dd><a name="index-mark_002dsymlinked_002ddirectories"></a>
+<dd><span id="index-mark_002dsymlinked_002ddirectories"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, completed names which are symbolic links
to directories have a slash appended (subject to the value of
<code>mark-directories</code>).
@@ -10286,7 +10416,7 @@ The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>match-hidden-files</code></dt>
-<dd><a name="index-match_002dhidden_002dfiles"></a>
+<dd><span id="index-match_002dhidden_002dfiles"></span>
<p>This variable, when set to &lsquo;<samp>on</samp>&rsquo;, causes Readline to match files whose
names begin with a &lsquo;<samp>.</samp>&rsquo; (hidden files) when performing filename
completion.
@@ -10296,14 +10426,14 @@ This variable is &lsquo;<samp>on</samp>&rsquo; by default.
</p>
</dd>
<dt><code>menu-complete-display-prefix</code></dt>
-<dd><a name="index-menu_002dcomplete_002ddisplay_002dprefix"></a>
+<dd><span id="index-menu_002dcomplete_002ddisplay_002dprefix"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, menu completion displays the common prefix of the
list of possible completions (which may be empty) before cycling through
the list. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>output-meta</code></dt>
-<dd><a name="index-output_002dmeta"></a>
+<dd><span id="index-output_002dmeta"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will display characters with the
eighth bit set directly rather than as a meta-prefixed escape
sequence.
@@ -10312,7 +10442,7 @@ locale contains eight-bit characters.
</p>
</dd>
<dt><code>page-completions</code></dt>
-<dd><a name="index-page_002dcompletions"></a>
+<dd><span id="index-page_002dcompletions"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline uses an internal <code>more</code>-like pager
to display a screenful of possible completions at a time.
This variable is &lsquo;<samp>on</samp>&rsquo; by default.
@@ -10325,7 +10455,7 @@ The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>revert-all-at-newline</code></dt>
-<dd><a name="index-revert_002dall_002dat_002dnewline"></a>
+<dd><span id="index-revert_002dall_002dat_002dnewline"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, Readline will undo all changes to history lines
before returning when <code>accept-line</code> is executed. By default,
history lines may be modified and retain individual undo lists across
@@ -10333,7 +10463,7 @@ calls to <code>readline</code>. The default is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>show-all-if-ambiguous</code></dt>
-<dd><a name="index-show_002dall_002dif_002dambiguous"></a>
+<dd><span id="index-show_002dall_002dif_002dambiguous"></span>
<p>This alters the default behavior of the completion functions. If
set to &lsquo;<samp>on</samp>&rsquo;,
words which have more than one possible completion cause the
@@ -10342,7 +10472,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>show-all-if-unmodified</code></dt>
-<dd><a name="index-show_002dall_002dif_002dunmodified"></a>
+<dd><span id="index-show_002dall_002dif_002dunmodified"></span>
<p>This alters the default behavior of the completion functions in
a fashion similar to <var>show-all-if-ambiguous</var>.
If set to &lsquo;<samp>on</samp>&rsquo;,
@@ -10354,7 +10484,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>show-mode-in-prompt</code></dt>
-<dd><a name="index-show_002dmode_002din_002dprompt"></a>
+<dd><span id="index-show_002dmode_002din_002dprompt"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, add a string to the beginning of the prompt
indicating the editing mode: emacs, vi command, or vi insertion.
The mode strings are user-settable (e.g., <var>emacs-mode-string</var>).
@@ -10362,7 +10492,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>skip-completed-text</code></dt>
-<dd><a name="index-skip_002dcompleted_002dtext"></a>
+<dd><span id="index-skip_002dcompleted_002dtext"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, this alters the default completion behavior when
inserting a single match into the line. It&rsquo;s only active when
performing completion in the middle of a word. If enabled, readline
@@ -10377,7 +10507,7 @@ The default value is &lsquo;<samp>off</samp>&rsquo;.
</p>
</dd>
<dt><code>vi-cmd-mode-string</code></dt>
-<dd><a name="index-vi_002dcmd_002dmode_002dstring"></a>
+<dd><span id="index-vi_002dcmd_002dmode_002dstring"></span>
<p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in command mode.
@@ -10391,7 +10521,7 @@ The default is &lsquo;<samp>(cmd)</samp>&rsquo;.
</p>
</dd>
<dt><code>vi-ins-mode-string</code></dt>
-<dd><a name="index-vi_002dins_002dmode_002dstring"></a>
+<dd><span id="index-vi_002dins_002dmode_002dstring"></span>
<p>If the <var>show-mode-in-prompt</var> variable is enabled,
this string is displayed immediately before the last line of the primary
prompt when vi editing mode is active and in insertion mode.
@@ -10405,7 +10535,7 @@ The default is &lsquo;<samp>(ins)</samp>&rsquo;.
</p>
</dd>
<dt><code>visible-stats</code></dt>
-<dd><a name="index-visible_002dstats"></a>
+<dd><span id="index-visible_002dstats"></span>
<p>If set to &lsquo;<samp>on</samp>&rsquo;, a character denoting a file&rsquo;s type
is appended to the filename when listing possible
completions. The default is &lsquo;<samp>off</samp>&rsquo;.
@@ -10569,13 +10699,11 @@ insert a single &lsquo;<samp>\</samp>&rsquo; into the line:
</dl>
<hr>
-<a name="Conditional-Init-Constructs"></a>
-<div class="header">
+<span id="Conditional-Init-Constructs"></span><div class="header">
<p>
Next: <a href="#Sample-Init-File" accesskey="n" rel="next">Sample Init File</a>, Previous: <a href="#Readline-Init-File-Syntax" accesskey="p" rel="prev">Readline Init File Syntax</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Conditional-Init-Constructs-1"></a>
-<h4 class="subsection">8.3.2 Conditional Init Constructs</h4>
+<span id="Conditional-Init-Constructs-1"></span><h4 class="subsection">8.3.2 Conditional Init Constructs</h4>
<p>Readline implements a facility similar in spirit to the conditional
compilation features of the C preprocessor which allows key
@@ -10689,13 +10817,11 @@ For example, the following directive reads from <samp>/etc/inputrc</samp>:
</dl>
<hr>
-<a name="Sample-Init-File"></a>
-<div class="header">
+<span id="Sample-Init-File"></span><div class="header">
<p>
Previous: <a href="#Conditional-Init-Constructs" accesskey="p" rel="prev">Conditional Init Constructs</a>, Up: <a href="#Readline-Init-File" accesskey="u" rel="up">Readline Init File</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Sample-Init-File-1"></a>
-<h4 class="subsection">8.3.3 Sample Init File</h4>
+<span id="Sample-Init-File-1"></span><h4 class="subsection">8.3.3 Sample Init File</h4>
<p>Here is an example of an <var>inputrc</var> file. This illustrates key
binding, variable assignment, and conditional syntax.
@@ -10790,8 +10916,8 @@ set convert-meta off
# 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
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
@@ -10803,30 +10929,28 @@ $endif
</pre></div>
<hr>
-<a name="Bindable-Readline-Commands"></a>
-<div class="header">
+<span id="Bindable-Readline-Commands"></span><div class="header">
<p>
Next: <a href="#Readline-vi-Mode" accesskey="n" rel="next">Readline vi Mode</a>, Previous: <a href="#Readline-Init-File" accesskey="p" rel="prev">Readline Init File</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bindable-Readline-Commands-1"></a>
-<h3 class="section">8.4 Bindable Readline Commands</h3>
+<span id="Bindable-Readline-Commands-1"></span><h3 class="section">8.4 Bindable Readline Commands</h3>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Moving about the line.
+<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Moving" accesskey="1">Commands For Moving</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Moving about the line.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Commands-For-History" accesskey="2">Commands For History</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting at previous lines.
+<tr><td align="left" valign="top">&bull; <a href="#Commands-For-History" accesskey="2">Commands For History</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting at previous lines.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Text" accesskey="3">Commands For Text</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands for changing text.
+<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Text" accesskey="3">Commands For Text</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands for changing text.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Killing" accesskey="4">Commands For Killing</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands for killing and yanking.
+<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Killing" accesskey="4">Commands For Killing</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Commands for killing and yanking.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Numeric-Arguments" accesskey="5">Numeric Arguments</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying numeric arguments, repeat counts.
+<tr><td align="left" valign="top">&bull; <a href="#Numeric-Arguments" accesskey="5">Numeric Arguments</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying numeric arguments, repeat counts.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Completion" accesskey="6">Commands For Completion</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting Readline to do the typing for you.
+<tr><td align="left" valign="top">&bull; <a href="#Commands-For-Completion" accesskey="6">Commands For Completion</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Getting Readline to do the typing for you.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Keyboard-Macros" accesskey="7">Keyboard Macros</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Saving and re-executing typed characters
+<tr><td align="left" valign="top">&bull; <a href="#Keyboard-Macros" accesskey="7">Keyboard Macros</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Saving and re-executing typed characters
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Miscellaneous-Commands" accesskey="8">Miscellaneous Commands</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other miscellaneous commands.
+<tr><td align="left" valign="top">&bull; <a href="#Miscellaneous-Commands" accesskey="8">Miscellaneous Commands</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Other miscellaneous commands.
</td></tr>
</table>
@@ -10843,68 +10967,66 @@ position, and <em>mark</em> refers to a cursor position saved by the
The text between the point and mark is referred to as the <em>region</em>.
</p>
<hr>
-<a name="Commands-For-Moving"></a>
-<div class="header">
+<span id="Commands-For-Moving"></span><div class="header">
<p>
Next: <a href="#Commands-For-History" accesskey="n" rel="next">Commands For History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Commands-For-Moving-1"></a>
-<h4 class="subsection">8.4.1 Commands For Moving</h4>
+<span id="Commands-For-Moving-1"></span><h4 class="subsection">8.4.1 Commands For Moving</h4>
<dl compact="compact">
<dt><code>beginning-of-line (C-a)</code>
-<a name="index-beginning_002dof_002dline-_0028C_002da_0029"></a>
+<span id="index-beginning_002dof_002dline-_0028C_002da_0029"></span>
</dt>
<dd><p>Move to the start of the current line.
</p>
</dd>
<dt><code>end-of-line (C-e)</code>
-<a name="index-end_002dof_002dline-_0028C_002de_0029"></a>
+<span id="index-end_002dof_002dline-_0028C_002de_0029"></span>
</dt>
<dd><p>Move to the end of the line.
</p>
</dd>
<dt><code>forward-char (C-f)</code>
-<a name="index-forward_002dchar-_0028C_002df_0029"></a>
+<span id="index-forward_002dchar-_0028C_002df_0029"></span>
</dt>
<dd><p>Move forward a character.
</p>
</dd>
<dt><code>backward-char (C-b)</code>
-<a name="index-backward_002dchar-_0028C_002db_0029"></a>
+<span id="index-backward_002dchar-_0028C_002db_0029"></span>
</dt>
<dd><p>Move back a character.
</p>
</dd>
<dt><code>forward-word (M-f)</code>
-<a name="index-forward_002dword-_0028M_002df_0029"></a>
+<span id="index-forward_002dword-_0028M_002df_0029"></span>
</dt>
<dd><p>Move forward to the end of the next word.
Words are composed of letters and digits.
</p>
</dd>
<dt><code>backward-word (M-b)</code>
-<a name="index-backward_002dword-_0028M_002db_0029"></a>
+<span id="index-backward_002dword-_0028M_002db_0029"></span>
</dt>
<dd><p>Move back to the start of the current or previous word.
Words are composed of letters and digits.
</p>
</dd>
-<dt><code>shell-forward-word ()</code>
-<a name="index-shell_002dforward_002dword-_0028_0029"></a>
+<dt><code>shell-forward-word (M-C-f)</code>
+<span id="index-shell_002dforward_002dword-_0028M_002dC_002df_0029"></span>
</dt>
<dd><p>Move forward to the end of the next word.
Words are delimited by non-quoted shell metacharacters.
</p>
</dd>
-<dt><code>shell-backward-word ()</code>
-<a name="index-shell_002dbackward_002dword-_0028_0029"></a>
+<dt><code>shell-backward-word (M-C-b)</code>
+<span id="index-shell_002dbackward_002dword-_0028M_002dC_002db_0029"></span>
</dt>
<dd><p>Move back to the start of the current or previous word.
Words are delimited by non-quoted shell metacharacters.
</p>
</dd>
<dt><code>previous-screen-line ()</code>
-<a name="index-previous_002dscreen_002dline-_0028_0029"></a>
+<span id="index-previous_002dscreen_002dline-_0028_0029"></span>
</dt>
<dd><p>Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
@@ -10913,7 +11035,7 @@ greater than the length of the prompt plus the screen width.
</p>
</dd>
<dt><code>next-screen-line ()</code>
-<a name="index-next_002dscreen_002dline-_0028_0029"></a>
+<span id="index-next_002dscreen_002dline-_0028_0029"></span>
</dt>
<dd><p>Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
@@ -10922,15 +11044,24 @@ of the current Readline line is not greater than the length of the prompt
plus the screen width.
</p>
</dd>
+<dt><code>clear-display (M-C-l)</code>
+<span id="index-clear_002ddisplay-_0028M_002dC_002dl_0029"></span>
+</dt>
+<dd><p>Clear the screen and, if possible, the terminal&rsquo;s scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+</p>
+</dd>
<dt><code>clear-screen (C-l)</code>
-<a name="index-clear_002dscreen-_0028C_002dl_0029"></a>
+<span id="index-clear_002dscreen-_0028C_002dl_0029"></span>
</dt>
-<dd><p>Clear the screen and redraw the current line,
+<dd><p>Clear the screen,
+then redraw the current line,
leaving the current line at the top of the screen.
</p>
</dd>
<dt><code>redraw-current-line ()</code>
-<a name="index-redraw_002dcurrent_002dline-_0028_0029"></a>
+<span id="index-redraw_002dcurrent_002dline-_0028_0029"></span>
</dt>
<dd><p>Refresh the current line. By default, this is unbound.
</p>
@@ -10938,17 +11069,15 @@ leaving the current line at the top of the screen.
</dl>
<hr>
-<a name="Commands-For-History"></a>
-<div class="header">
+<span id="Commands-For-History"></span><div class="header">
<p>
Next: <a href="#Commands-For-Text" accesskey="n" rel="next">Commands For Text</a>, Previous: <a href="#Commands-For-Moving" accesskey="p" rel="prev">Commands For Moving</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Commands-For-Manipulating-The-History"></a>
-<h4 class="subsection">8.4.2 Commands For Manipulating The History</h4>
+<span id="Commands-For-Manipulating-The-History"></span><h4 class="subsection">8.4.2 Commands For Manipulating The History</h4>
<dl compact="compact">
<dt><code>accept-line (Newline or Return)</code>
-<a name="index-accept_002dline-_0028Newline-or-Return_0029"></a>
+<span id="index-accept_002dline-_0028Newline-or-Return_0029"></span>
</dt>
<dd><p>Accept the line regardless of where the cursor is.
If this line is
@@ -10959,46 +11088,48 @@ to its original state.
</p>
</dd>
<dt><code>previous-history (C-p)</code>
-<a name="index-previous_002dhistory-_0028C_002dp_0029"></a>
+<span id="index-previous_002dhistory-_0028C_002dp_0029"></span>
</dt>
<dd><p>Move &lsquo;back&rsquo; through the history list, fetching the previous command.
</p>
</dd>
<dt><code>next-history (C-n)</code>
-<a name="index-next_002dhistory-_0028C_002dn_0029"></a>
+<span id="index-next_002dhistory-_0028C_002dn_0029"></span>
</dt>
<dd><p>Move &lsquo;forward&rsquo; through the history list, fetching the next command.
</p>
</dd>
<dt><code>beginning-of-history (M-&lt;)</code>
-<a name="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></a>
+<span id="index-beginning_002dof_002dhistory-_0028M_002d_003c_0029"></span>
</dt>
<dd><p>Move to the first line in the history.
</p>
</dd>
<dt><code>end-of-history (M-&gt;)</code>
-<a name="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></a>
+<span id="index-end_002dof_002dhistory-_0028M_002d_003e_0029"></span>
</dt>
<dd><p>Move to the end of the input history, i.e., the line currently
being entered.
</p>
</dd>
<dt><code>reverse-search-history (C-r)</code>
-<a name="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></a>
+<span id="index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"></span>
</dt>
<dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo; through
the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
</p>
</dd>
<dt><code>forward-search-history (C-s)</code>
-<a name="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></a>
+<span id="index-forward_002dsearch_002dhistory-_0028C_002ds_0029"></span>
</dt>
<dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo; through
the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
</p>
</dd>
<dt><code>non-incremental-reverse-search-history (M-p)</code>
-<a name="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></a>
+<span id="index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"></span>
</dt>
<dd><p>Search backward starting at the current line and moving &lsquo;up&rsquo;
through the history as necessary using a non-incremental search
@@ -11007,7 +11138,7 @@ The search string may match anywhere in a history line.
</p>
</dd>
<dt><code>non-incremental-forward-search-history (M-n)</code>
-<a name="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></a>
+<span id="index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"></span>
</dt>
<dd><p>Search forward starting at the current line and moving &lsquo;down&rsquo;
through the history as necessary using a non-incremental search
@@ -11016,7 +11147,7 @@ The search string may match anywhere in a history line.
</p>
</dd>
<dt><code>history-search-forward ()</code>
-<a name="index-history_002dsearch_002dforward-_0028_0029"></a>
+<span id="index-history_002dsearch_002dforward-_0028_0029"></span>
</dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
@@ -11026,7 +11157,7 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>history-search-backward ()</code>
-<a name="index-history_002dsearch_002dbackward-_0028_0029"></a>
+<span id="index-history_002dsearch_002dbackward-_0028_0029"></span>
</dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
@@ -11036,7 +11167,7 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>history-substring-search-forward ()</code>
-<a name="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></a>
+<span id="index-history_002dsubstring_002dsearch_002dforward-_0028_0029"></span>
</dt>
<dd><p>Search forward through the history for the string of characters
between the start of the current line and the point.
@@ -11046,7 +11177,7 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>history-substring-search-backward ()</code>
-<a name="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></a>
+<span id="index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"></span>
</dt>
<dd><p>Search backward through the history for the string of characters
between the start of the current line and the point.
@@ -11056,7 +11187,7 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>yank-nth-arg (M-C-y)</code>
-<a name="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></a>
+<span id="index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"></span>
</dt>
<dd><p>Insert the first argument to the previous command (usually
the second word on the previous line) at point.
@@ -11069,7 +11200,7 @@ as if the &lsquo;<samp>!<var>n</var></samp>&rsquo; history expansion had been sp
</p>
</dd>
<dt><code>yank-last-arg (M-. or M-_)</code>
-<a name="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></a>
+<span id="index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"></span>
</dt>
<dd><p>Insert last argument to the previous command (the last word of the
previous history entry).
@@ -11084,20 +11215,29 @@ The history expansion facilities are used to extract the last argument,
as if the &lsquo;<samp>!$</samp>&rsquo; history expansion had been specified.
</p>
</dd>
+<dt><code>operate-and-get-next (C-o)</code>
+<span id="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></span>
+</dt>
+<dd><p>Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+</p>
+</dd>
</dl>
<hr>
-<a name="Commands-For-Text"></a>
-<div class="header">
+<span id="Commands-For-Text"></span><div class="header">
<p>
Next: <a href="#Commands-For-Killing" accesskey="n" rel="next">Commands For Killing</a>, Previous: <a href="#Commands-For-History" accesskey="p" rel="prev">Commands For History</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Commands-For-Changing-Text"></a>
-<h4 class="subsection">8.4.3 Commands For Changing Text</h4>
+<span id="Commands-For-Changing-Text"></span><h4 class="subsection">8.4.3 Commands For Changing Text</h4>
<dl compact="compact">
<dt><code><i>end-of-file</i> (usually C-d)</code>
-<a name="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></a>
+<span id="index-end_002dof_002dfile-_0028usually-C_002dd_0029"></span>
</dt>
<dd><p>The character indicating end-of-file as set, for example, by
<code>stty</code>. If this character is read when there are no characters
@@ -11106,7 +11246,7 @@ interprets it as the end of input and returns <small>EOF</small>.
</p>
</dd>
<dt><code>delete-char (C-d)</code>
-<a name="index-delete_002dchar-_0028C_002dd_0029"></a>
+<span id="index-delete_002dchar-_0028C_002dd_0029"></span>
</dt>
<dd><p>Delete the character at point. If this function is bound to the
same character as the tty <small>EOF</small> character, as <kbd>C-d</kbd>
@@ -11114,14 +11254,14 @@ commonly is, see above for the effects.
</p>
</dd>
<dt><code>backward-delete-char (Rubout)</code>
-<a name="index-backward_002ddelete_002dchar-_0028Rubout_0029"></a>
+<span id="index-backward_002ddelete_002dchar-_0028Rubout_0029"></span>
</dt>
<dd><p>Delete the character behind the cursor. A numeric argument means
to kill the characters instead of deleting them.
</p>
</dd>
<dt><code>forward-backward-delete-char ()</code>
-<a name="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></a>
+<span id="index-forward_002dbackward_002ddelete_002dchar-_0028_0029"></span>
</dt>
<dd><p>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
@@ -11129,7 +11269,7 @@ deleted. By default, this is not bound to a key.
</p>
</dd>
<dt><code>quoted-insert (C-q or C-v)</code>
-<a name="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></a>
+<span id="index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"></span>
</dt>
<dd><p>Add the next character typed to the line verbatim. This is
how to insert key sequences like <kbd>C-q</kbd>, for example.
@@ -11137,13 +11277,13 @@ how to insert key sequences like <kbd>C-q</kbd>, for example.
</dd>
<dt><code>self-insert (a, b, A, 1, !, &hellip;)</code>
-<a name="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></a>
+<span id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></span>
</dt>
<dd><p>Insert yourself.
</p>
</dd>
<dt><code>bracketed-paste-begin ()</code>
-<a name="index-bracketed_002dpaste_002dbegin-_0028_0029"></a>
+<span id="index-bracketed_002dpaste_002dbegin-_0028_0029"></span>
</dt>
<dd><p>This function is intended to be bound to the &quot;bracketed paste&quot; escape
sequence sent by some terminals, and such a binding is assigned by default.
@@ -11152,9 +11292,14 @@ 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</code> instead of
executing any editing commands.
</p>
+<p>Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text. It uses the concept of an <em>active mark</em>: when the
+mark is active, Readline redisplay uses the terminal&rsquo;s standout mode to
+denote the region.
+</p>
</dd>
<dt><code>transpose-chars (C-t)</code>
-<a name="index-transpose_002dchars-_0028C_002dt_0029"></a>
+<span id="index-transpose_002dchars-_0028C_002dt_0029"></span>
</dt>
<dd><p>Drag the character before the cursor forward over
the character at the cursor, moving the
@@ -11165,7 +11310,7 @@ Negative arguments have no effect.
</p>
</dd>
<dt><code>transpose-words (M-t)</code>
-<a name="index-transpose_002dwords-_0028M_002dt_0029"></a>
+<span id="index-transpose_002dwords-_0028M_002dt_0029"></span>
</dt>
<dd><p>Drag the word before point past the word after point,
moving point past that word as well.
@@ -11174,28 +11319,28 @@ the last two words on the line.
</p>
</dd>
<dt><code>upcase-word (M-u)</code>
-<a name="index-upcase_002dword-_0028M_002du_0029"></a>
+<span id="index-upcase_002dword-_0028M_002du_0029"></span>
</dt>
<dd><p>Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
</p>
</dd>
<dt><code>downcase-word (M-l)</code>
-<a name="index-downcase_002dword-_0028M_002dl_0029"></a>
+<span id="index-downcase_002dword-_0028M_002dl_0029"></span>
</dt>
<dd><p>Lowercase the current (or following) word. With a negative argument,
lowercase the previous word, but do not move the cursor.
</p>
</dd>
<dt><code>capitalize-word (M-c)</code>
-<a name="index-capitalize_002dword-_0028M_002dc_0029"></a>
+<span id="index-capitalize_002dword-_0028M_002dc_0029"></span>
</dt>
<dd><p>Capitalize the current (or following) word. With a negative argument,
capitalize the previous word, but do not move the cursor.
</p>
</dd>
<dt><code>overwrite-mode ()</code>
-<a name="index-overwrite_002dmode-_0028_0029"></a>
+<span id="index-overwrite_002dmode-_0028_0029"></span>
</dt>
<dd><p>Toggle overwrite mode. With an explicit positive numeric argument,
switches to overwrite mode. With an explicit non-positive numeric
@@ -11214,42 +11359,44 @@ before point with a space.
</dl>
<hr>
-<a name="Commands-For-Killing"></a>
-<div class="header">
+<span id="Commands-For-Killing"></span><div class="header">
<p>
Next: <a href="#Numeric-Arguments" accesskey="n" rel="next">Numeric Arguments</a>, Previous: <a href="#Commands-For-Text" accesskey="p" rel="prev">Commands For Text</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Killing-And-Yanking"></a>
-<h4 class="subsection">8.4.4 Killing And Yanking</h4>
+<span id="Killing-And-Yanking"></span><h4 class="subsection">8.4.4 Killing And Yanking</h4>
<dl compact="compact">
<dt><code>kill-line (C-k)</code>
-<a name="index-kill_002dline-_0028C_002dk_0029"></a>
+<span id="index-kill_002dline-_0028C_002dk_0029"></span>
</dt>
<dd><p>Kill the text from point to the end of the line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the current line.
</p>
</dd>
<dt><code>backward-kill-line (C-x Rubout)</code>
-<a name="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></a>
+<span id="index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"></span>
</dt>
<dd><p>Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the current line.
</p>
</dd>
<dt><code>unix-line-discard (C-u)</code>
-<a name="index-unix_002dline_002ddiscard-_0028C_002du_0029"></a>
+<span id="index-unix_002dline_002ddiscard-_0028C_002du_0029"></span>
</dt>
<dd><p>Kill backward from the cursor to the beginning of the current line.
</p>
</dd>
<dt><code>kill-whole-line ()</code>
-<a name="index-kill_002dwhole_002dline-_0028_0029"></a>
+<span id="index-kill_002dwhole_002dline-_0028_0029"></span>
</dt>
<dd><p>Kill all characters on the current line, no matter where point is.
By default, this is unbound.
</p>
</dd>
<dt><code>kill-word (M-d)</code>
-<a name="index-kill_002dword-_0028M_002dd_0029"></a>
+<span id="index-kill_002dword-_0028M_002dd_0029"></span>
</dt>
<dd><p>Kill from point to the end of the current word, or if between
words, to the end of the next word.
@@ -11257,14 +11404,14 @@ Word boundaries are the same as <code>forward-word</code>.
</p>
</dd>
<dt><code>backward-kill-word (M-<span class="key">DEL</span>)</code>
-<a name="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></a>
+<span id="index-backward_002dkill_002dword-_0028M_002dDEL_0029"></span>
</dt>
<dd><p>Kill the word behind point.
Word boundaries are the same as <code>backward-word</code>.
</p>
</dd>
-<dt><code>shell-kill-word ()</code>
-<a name="index-shell_002dkill_002dword-_0028_0029"></a>
+<dt><code>shell-kill-word (M-C-d)</code>
+<span id="index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"></span>
</dt>
<dd><p>Kill from point to the end of the current word, or if between
words, to the end of the next word.
@@ -11272,21 +11419,32 @@ Word boundaries are the same as <code>shell-forward-word</code>.
</p>
</dd>
<dt><code>shell-backward-kill-word ()</code>
-<a name="index-shell_002dbackward_002dkill_002dword-_0028_0029"></a>
+<span id="index-shell_002dbackward_002dkill_002dword-_0028_0029"></span>
</dt>
<dd><p>Kill the word behind point.
Word boundaries are the same as <code>shell-backward-word</code>.
</p>
</dd>
+<dt><code>shell-transpose-words (M-C-t)</code>
+<span id="index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"></span>
+</dt>
+<dd><p>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.
+Word boundaries are the same as <code>shell-forward-word</code> and
+<code>shell-backward-word</code>.
+</p>
+</dd>
<dt><code>unix-word-rubout (C-w)</code>
-<a name="index-unix_002dword_002drubout-_0028C_002dw_0029"></a>
+<span id="index-unix_002dword_002drubout-_0028C_002dw_0029"></span>
</dt>
<dd><p>Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
</p>
</dd>
<dt><code>unix-filename-rubout ()</code>
-<a name="index-unix_002dfilename_002drubout-_0028_0029"></a>
+<span id="index-unix_002dfilename_002drubout-_0028_0029"></span>
</dt>
<dd><p>Kill the word behind point, using white space and the slash character
as the word boundaries.
@@ -11294,27 +11452,27 @@ The killed text is saved on the kill-ring.
</p>
</dd>
<dt><code>delete-horizontal-space ()</code>
-<a name="index-delete_002dhorizontal_002dspace-_0028_0029"></a>
+<span id="index-delete_002dhorizontal_002dspace-_0028_0029"></span>
</dt>
<dd><p>Delete all spaces and tabs around point. By default, this is unbound.
</p>
</dd>
<dt><code>kill-region ()</code>
-<a name="index-kill_002dregion-_0028_0029"></a>
+<span id="index-kill_002dregion-_0028_0029"></span>
</dt>
<dd><p>Kill the text in the current region.
By default, this command is unbound.
</p>
</dd>
<dt><code>copy-region-as-kill ()</code>
-<a name="index-copy_002dregion_002das_002dkill-_0028_0029"></a>
+<span id="index-copy_002dregion_002das_002dkill-_0028_0029"></span>
</dt>
<dd><p>Copy the text in the region to the kill buffer, so it can be yanked
right away. By default, this command is unbound.
</p>
</dd>
<dt><code>copy-backward-word ()</code>
-<a name="index-copy_002dbackward_002dword-_0028_0029"></a>
+<span id="index-copy_002dbackward_002dword-_0028_0029"></span>
</dt>
<dd><p>Copy the word before point to the kill buffer.
The word boundaries are the same as <code>backward-word</code>.
@@ -11322,7 +11480,7 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>copy-forward-word ()</code>
-<a name="index-copy_002dforward_002dword-_0028_0029"></a>
+<span id="index-copy_002dforward_002dword-_0028_0029"></span>
</dt>
<dd><p>Copy the word following point to the kill buffer.
The word boundaries are the same as <code>forward-word</code>.
@@ -11330,13 +11488,13 @@ By default, this command is unbound.
</p>
</dd>
<dt><code>yank (C-y)</code>
-<a name="index-yank-_0028C_002dy_0029"></a>
+<span id="index-yank-_0028C_002dy_0029"></span>
</dt>
<dd><p>Yank the top of the kill ring into the buffer at point.
</p>
</dd>
<dt><code>yank-pop (M-y)</code>
-<a name="index-yank_002dpop-_0028M_002dy_0029"></a>
+<span id="index-yank_002dpop-_0028M_002dy_0029"></span>
</dt>
<dd><p>Rotate the kill-ring, and yank the new top. You can only do this if
the prior command is <code>yank</code> or <code>yank-pop</code>.
@@ -11344,23 +11502,21 @@ the prior command is <code>yank</code> or <code>yank-pop</code>.
</dl>
<hr>
-<a name="Numeric-Arguments"></a>
-<div class="header">
+<span id="Numeric-Arguments"></span><div class="header">
<p>
Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Commands For Completion</a>, Previous: <a href="#Commands-For-Killing" accesskey="p" rel="prev">Commands For Killing</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Specifying-Numeric-Arguments"></a>
-<h4 class="subsection">8.4.5 Specifying Numeric Arguments</h4>
+<span id="Specifying-Numeric-Arguments"></span><h4 class="subsection">8.4.5 Specifying Numeric Arguments</h4>
<dl compact="compact">
<dt><code>digit-argument (<kbd>M-0</kbd>, <kbd>M-1</kbd>, &hellip; <kbd>M--</kbd>)</code>
-<a name="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></a>
+<span id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></span>
</dt>
<dd><p>Add this digit to the argument already accumulating, or start a new
argument. <kbd>M--</kbd> starts a negative argument.
</p>
</dd>
<dt><code>universal-argument ()</code>
-<a name="index-universal_002dargument-_0028_0029"></a>
+<span id="index-universal_002dargument-_0028_0029"></span>
</dt>
<dd><p>This is another way to specify an argument.
If this command is followed by one or more digits, optionally with a
@@ -11378,17 +11534,15 @@ By default, this is not bound to a key.
</dl>
<hr>
-<a name="Commands-For-Completion"></a>
-<div class="header">
+<span id="Commands-For-Completion"></span><div class="header">
<p>
Next: <a href="#Keyboard-Macros" accesskey="n" rel="next">Keyboard Macros</a>, Previous: <a href="#Numeric-Arguments" accesskey="p" rel="prev">Numeric Arguments</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Letting-Readline-Type-For-You"></a>
-<h4 class="subsection">8.4.6 Letting Readline Type For You</h4>
+<span id="Letting-Readline-Type-For-You"></span><h4 class="subsection">8.4.6 Letting Readline Type For You</h4>
<dl compact="compact">
<dt><code>complete (<span class="key">TAB</span>)</code>
-<a name="index-complete-_0028TAB_0029"></a>
+<span id="index-complete-_0028TAB_0029"></span>
</dt>
<dd><p>Attempt to perform completion on the text before point.
The actual completion performed is application-specific.
@@ -11400,7 +11554,7 @@ of these produces a match, filename completion is attempted.
</p>
</dd>
<dt><code>possible-completions (M-?)</code>
-<a name="index-possible_002dcompletions-_0028M_002d_003f_0029"></a>
+<span id="index-possible_002dcompletions-_0028M_002d_003f_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point.
When displaying completions, Readline sets the number of columns used
@@ -11409,14 +11563,14 @@ the environment variable <code>COLUMNS</code>, or the screen width, in that orde
</p>
</dd>
<dt><code>insert-completions (M-*)</code>
-<a name="index-insert_002dcompletions-_0028M_002d_002a_0029"></a>
+<span id="index-insert_002dcompletions-_0028M_002d_002a_0029"></span>
</dt>
<dd><p>Insert all completions of the text before point that would have
been generated by <code>possible-completions</code>.
</p>
</dd>
<dt><code>menu-complete ()</code>
-<a name="index-menu_002dcomplete-_0028_0029"></a>
+<span id="index-menu_002dcomplete-_0028_0029"></span>
</dt>
<dd><p>Similar to <code>complete</code>, but replaces the word to be completed
with a single match from the list of possible completions.
@@ -11433,7 +11587,7 @@ by default.
</p>
</dd>
<dt><code>menu-complete-backward ()</code>
-<a name="index-menu_002dcomplete_002dbackward-_0028_0029"></a>
+<span id="index-menu_002dcomplete_002dbackward-_0028_0029"></span>
</dt>
<dd><p>Identical to <code>menu-complete</code>, but moves backward through the list
of possible completions, as if <code>menu-complete</code> had been given a
@@ -11441,7 +11595,7 @@ negative argument.
</p>
</dd>
<dt><code>delete-char-or-list ()</code>
-<a name="index-delete_002dchar_002dor_002dlist-_0028_0029"></a>
+<span id="index-delete_002dchar_002dor_002dlist-_0028_0029"></span>
</dt>
<dd><p>Deletes the character under the cursor if not at the beginning or
end of the line (like <code>delete-char</code>).
@@ -11451,62 +11605,62 @@ This command is unbound by default.
</p>
</dd>
<dt><code>complete-filename (M-/)</code>
-<a name="index-complete_002dfilename-_0028M_002d_002f_0029"></a>
+<span id="index-complete_002dfilename-_0028M_002d_002f_0029"></span>
</dt>
<dd><p>Attempt filename completion on the text before point.
</p>
</dd>
<dt><code>possible-filename-completions (C-x /)</code>
-<a name="index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029"></a>
+<span id="index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point,
treating it as a filename.
</p>
</dd>
<dt><code>complete-username (M-~)</code>
-<a name="index-complete_002dusername-_0028M_002d_007e_0029"></a>
+<span id="index-complete_002dusername-_0028M_002d_007e_0029"></span>
</dt>
<dd><p>Attempt completion on the text before point, treating
it as a username.
</p>
</dd>
<dt><code>possible-username-completions (C-x ~)</code>
-<a name="index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029"></a>
+<span id="index-possible_002dusername_002dcompletions-_0028C_002dx-_007e_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point,
treating it as a username.
</p>
</dd>
<dt><code>complete-variable (M-$)</code>
-<a name="index-complete_002dvariable-_0028M_002d_0024_0029"></a>
+<span id="index-complete_002dvariable-_0028M_002d_0024_0029"></span>
</dt>
<dd><p>Attempt completion on the text before point, treating
it as a shell variable.
</p>
</dd>
<dt><code>possible-variable-completions (C-x $)</code>
-<a name="index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"></a>
+<span id="index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point,
treating it as a shell variable.
</p>
</dd>
<dt><code>complete-hostname (M-@)</code>
-<a name="index-complete_002dhostname-_0028M_002d_0040_0029"></a>
+<span id="index-complete_002dhostname-_0028M_002d_0040_0029"></span>
</dt>
<dd><p>Attempt completion on the text before point, treating
it as a hostname.
</p>
</dd>
<dt><code>possible-hostname-completions (C-x @)</code>
-<a name="index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029"></a>
+<span id="index-possible_002dhostname_002dcompletions-_0028C_002dx-_0040_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point,
treating it as a hostname.
</p>
</dd>
<dt><code>complete-command (M-!)</code>
-<a name="index-complete_002dcommand-_0028M_002d_0021_0029"></a>
+<span id="index-complete_002dcommand-_0028M_002d_0021_0029"></span>
</dt>
<dd><p>Attempt completion on the text before point, treating
it as a command name. Command completion attempts to
@@ -11516,14 +11670,14 @@ in that order.
</p>
</dd>
<dt><code>possible-command-completions (C-x !)</code>
-<a name="index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029"></a>
+<span id="index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029"></span>
</dt>
<dd><p>List the possible completions of the text before point,
treating it as a command name.
</p>
</dd>
<dt><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code>
-<a name="index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"></a>
+<span id="index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"></span>
</dt>
<dd><p>Attempt completion on the text before point, comparing
the text against lines from the history list for possible
@@ -11531,7 +11685,7 @@ completion matches.
</p>
</dd>
<dt><code>dabbrev-expand ()</code>
-<a name="index-dabbrev_002dexpand-_0028_0029"></a>
+<span id="index-dabbrev_002dexpand-_0028_0029"></span>
</dt>
<dd><p>Attempt menu completion on the text before point, comparing
the text against lines from the history list for possible
@@ -11539,7 +11693,7 @@ completion matches.
</p>
</dd>
<dt><code>complete-into-braces (M-{)</code>
-<a name="index-complete_002dinto_002dbraces-_0028M_002d_007b_0029"></a>
+<span id="index-complete_002dinto_002dbraces-_0028M_002d_007b_0029"></span>
</dt>
<dd><p>Perform filename completion and insert the list of possible completions
enclosed within braces so the list is available to the shell
@@ -11549,36 +11703,34 @@ enclosed within braces so the list is available to the shell
</dl>
<hr>
-<a name="Keyboard-Macros"></a>
-<div class="header">
+<span id="Keyboard-Macros"></span><div class="header">
<p>
Next: <a href="#Miscellaneous-Commands" accesskey="n" rel="next">Miscellaneous Commands</a>, Previous: <a href="#Commands-For-Completion" accesskey="p" rel="prev">Commands For Completion</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Keyboard-Macros-1"></a>
-<h4 class="subsection">8.4.7 Keyboard Macros</h4>
+<span id="Keyboard-Macros-1"></span><h4 class="subsection">8.4.7 Keyboard Macros</h4>
<dl compact="compact">
<dt><code>start-kbd-macro (C-x ()</code>
-<a name="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></a>
+<span id="index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"></span>
</dt>
<dd><p>Begin saving the characters typed into the current keyboard macro.
</p>
</dd>
<dt><code>end-kbd-macro (C-x ))</code>
-<a name="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></a>
+<span id="index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"></span>
</dt>
<dd><p>Stop saving the characters typed into the current keyboard macro
and save the definition.
</p>
</dd>
<dt><code>call-last-kbd-macro (C-x e)</code>
-<a name="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></a>
+<span id="index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"></span>
</dt>
<dd><p>Re-execute the last keyboard macro defined, by making the characters
in the macro appear as if typed at the keyboard.
</p>
</dd>
<dt><code>print-last-kbd-macro ()</code>
-<a name="index-print_002dlast_002dkbd_002dmacro-_0028_0029"></a>
+<span id="index-print_002dlast_002dkbd_002dmacro-_0028_0029"></span>
</dt>
<dd><p>Print the last keboard macro defined in a format suitable for the
<var>inputrc</var> file.
@@ -11587,23 +11739,21 @@ in the macro appear as if typed at the keyboard.
</dl>
<hr>
-<a name="Miscellaneous-Commands"></a>
-<div class="header">
+<span id="Miscellaneous-Commands"></span><div class="header">
<p>
Previous: <a href="#Keyboard-Macros" accesskey="p" rel="prev">Keyboard Macros</a>, Up: <a href="#Bindable-Readline-Commands" accesskey="u" rel="up">Bindable Readline Commands</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Some-Miscellaneous-Commands"></a>
-<h4 class="subsection">8.4.8 Some Miscellaneous Commands</h4>
+<span id="Some-Miscellaneous-Commands"></span><h4 class="subsection">8.4.8 Some Miscellaneous Commands</h4>
<dl compact="compact">
<dt><code>re-read-init-file (C-x C-r)</code>
-<a name="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></a>
+<span id="index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"></span>
</dt>
<dd><p>Read in the contents of the <var>inputrc</var> file, and incorporate
any bindings or variable assignments found there.
</p>
</dd>
<dt><code>abort (C-g)</code>
-<a name="index-abort-_0028C_002dg_0029"></a>
+<span id="index-abort-_0028C_002dg_0029"></span>
</dt>
<dd><p>Abort the current editing command and
ring the terminal&rsquo;s bell (subject to the setting of
@@ -11611,7 +11761,7 @@ ring the terminal&rsquo;s bell (subject to the setting of
</p>
</dd>
<dt><code>do-lowercase-version (M-A, M-B, M-<var>x</var>, &hellip;)</code>
-<a name="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></a>
+<span id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></span>
</dt>
<dd><p>If the metafied character <var>x</var> is upper case, run the command
that is bound to the corresponding metafied lower case character.
@@ -11619,7 +11769,7 @@ The behavior is undefined if <var>x</var> is already lower case.
</p>
</dd>
<dt><code>prefix-meta (<span class="key">ESC</span>)</code>
-<a name="index-prefix_002dmeta-_0028ESC_0029"></a>
+<span id="index-prefix_002dmeta-_0028ESC_0029"></span>
</dt>
<dd><p>Metafy the next character typed. This is for keyboards
without a meta key. Typing &lsquo;<samp><span class="key">ESC</span> f</samp>&rsquo; is equivalent to typing
@@ -11627,47 +11777,47 @@ without a meta key. Typing &lsquo;<samp><span class="key">ESC</span> f</samp>&r
</p>
</dd>
<dt><code>undo (C-_ or C-x C-u)</code>
-<a name="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></a>
+<span id="index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"></span>
</dt>
<dd><p>Incremental undo, separately remembered for each line.
</p>
</dd>
<dt><code>revert-line (M-r)</code>
-<a name="index-revert_002dline-_0028M_002dr_0029"></a>
+<span id="index-revert_002dline-_0028M_002dr_0029"></span>
</dt>
<dd><p>Undo all changes made to this line. This is like executing the <code>undo</code>
command enough times to get back to the beginning.
</p>
</dd>
<dt><code>tilde-expand (M-&amp;)</code>
-<a name="index-tilde_002dexpand-_0028M_002d_0026_0029"></a>
+<span id="index-tilde_002dexpand-_0028M_002d_0026_0029"></span>
</dt>
<dd><p>Perform tilde expansion on the current word.
</p>
</dd>
<dt><code>set-mark (C-@)</code>
-<a name="index-set_002dmark-_0028C_002d_0040_0029"></a>
+<span id="index-set_002dmark-_0028C_002d_0040_0029"></span>
</dt>
<dd><p>Set the mark to the point. If a
numeric argument is supplied, the mark is set to that position.
</p>
</dd>
<dt><code>exchange-point-and-mark (C-x C-x)</code>
-<a name="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></a>
+<span id="index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"></span>
</dt>
<dd><p>Swap the point with the mark. The current cursor position is set to
the saved position, and the old cursor position is saved as the mark.
</p>
</dd>
<dt><code>character-search (C-])</code>
-<a name="index-character_002dsearch-_0028C_002d_005d_0029"></a>
+<span id="index-character_002dsearch-_0028C_002d_005d_0029"></span>
</dt>
<dd><p>A character is read and point is moved to the next occurrence of that
character. A negative count searches for previous occurrences.
</p>
</dd>
<dt><code>character-search-backward (M-C-])</code>
-<a name="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></a>
+<span id="index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"></span>
</dt>
<dd><p>A character is read and point is moved to the previous occurrence
of that character. A negative count searches for subsequent
@@ -11675,7 +11825,7 @@ occurrences.
</p>
</dd>
<dt><code>skip-csi-sequence ()</code>
-<a name="index-skip_002dcsi_002dsequence-_0028_0029"></a>
+<span id="index-skip_002dcsi_002dsequence-_0028_0029"></span>
</dt>
<dd><p>Read enough characters to consume a multi-key sequence such as those
defined for keys like Home and End. Such sequences begin with a
@@ -11687,7 +11837,7 @@ but usually bound to ESC-[.
</p>
</dd>
<dt><code>insert-comment (M-#)</code>
-<a name="index-insert_002dcomment-_0028M_002d_0023_0029"></a>
+<span id="index-insert_002dcomment-_0028M_002d_0023_0029"></span>
</dt>
<dd><p>Without a numeric argument, the value of the <code>comment-begin</code>
variable is inserted at the beginning of the current line.
@@ -11704,7 +11854,7 @@ will be executed by the shell.
</p>
</dd>
<dt><code>dump-functions ()</code>
-<a name="index-dump_002dfunctions-_0028_0029"></a>
+<span id="index-dump_002dfunctions-_0028_0029"></span>
</dt>
<dd><p>Print all of the functions and their key bindings to the
Readline output stream. If a numeric argument is supplied,
@@ -11713,7 +11863,7 @@ of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
<dt><code>dump-variables ()</code>
-<a name="index-dump_002dvariables-_0028_0029"></a>
+<span id="index-dump_002dvariables-_0028_0029"></span>
</dt>
<dd><p>Print all of the settable variables and their values to the
Readline output stream. If a numeric argument is supplied,
@@ -11722,7 +11872,7 @@ of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
<dt><code>dump-macros ()</code>
-<a name="index-dump_002dmacros-_0028_0029"></a>
+<span id="index-dump_002dmacros-_0028_0029"></span>
</dt>
<dd><p>Print all of the Readline key sequences bound to macros and the
strings they output. If a numeric argument is supplied,
@@ -11731,7 +11881,7 @@ of an <var>inputrc</var> file. This command is unbound by default.
</p>
</dd>
<dt><code>glob-complete-word (M-g)</code>
-<a name="index-glob_002dcomplete_002dword-_0028M_002dg_0029"></a>
+<span id="index-glob_002dcomplete_002dword-_0028M_002dg_0029"></span>
</dt>
<dd><p>The word before point is treated as a pattern for pathname expansion,
with an asterisk implicitly appended. This pattern is used to
@@ -11739,7 +11889,7 @@ generate a list of matching file names for possible completions.
</p>
</dd>
<dt><code>glob-expand-word (C-x *)</code>
-<a name="index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029"></a>
+<span id="index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029"></span>
</dt>
<dd><p>The word before point is treated as a pattern for pathname expansion,
and the list of matching file names is inserted, replacing the word.
@@ -11748,7 +11898,7 @@ pathname expansion.
</p>
</dd>
<dt><code>glob-list-expansions (C-x g)</code>
-<a name="index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029"></a>
+<span id="index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029"></span>
</dt>
<dd><p>The list of expansions that would have been generated by
<code>glob-expand-word</code> is displayed, and the line is redrawn.
@@ -11757,13 +11907,13 @@ pathname expansion.
</p>
</dd>
<dt><code>display-shell-version (C-x C-v)</code>
-<a name="index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"></a>
+<span id="index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"></span>
</dt>
<dd><p>Display version information about the current instance of Bash.
</p>
</dd>
<dt><code>shell-expand-line (M-C-e)</code>
-<a name="index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"></a>
+<span id="index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"></span>
</dt>
<dd><p>Expand the line as the shell does.
This performs alias and history expansion as well as all of the shell
@@ -11771,47 +11921,38 @@ word expansions (see <a href="#Shell-Expansions">Shell Expansions</a>).
</p>
</dd>
<dt><code>history-expand-line (M-^)</code>
-<a name="index-history_002dexpand_002dline-_0028M_002d_005e_0029"></a>
+<span id="index-history_002dexpand_002dline-_0028M_002d_005e_0029"></span>
</dt>
<dd><p>Perform history expansion on the current line.
</p>
</dd>
<dt><code>magic-space ()</code>
-<a name="index-magic_002dspace-_0028_0029"></a>
+<span id="index-magic_002dspace-_0028_0029"></span>
</dt>
<dd><p>Perform history expansion on the current line and insert a space
(see <a href="#History-Interaction">History Interaction</a>).
</p>
</dd>
<dt><code>alias-expand-line ()</code>
-<a name="index-alias_002dexpand_002dline-_0028_0029"></a>
+<span id="index-alias_002dexpand_002dline-_0028_0029"></span>
</dt>
<dd><p>Perform alias expansion on the current line (see <a href="#Aliases">Aliases</a>).
</p>
</dd>
<dt><code>history-and-alias-expand-line ()</code>
-<a name="index-history_002dand_002dalias_002dexpand_002dline-_0028_0029"></a>
+<span id="index-history_002dand_002dalias_002dexpand_002dline-_0028_0029"></span>
</dt>
<dd><p>Perform history and alias expansion on the current line.
</p>
</dd>
<dt><code>insert-last-argument (M-. or M-_)</code>
-<a name="index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029"></a>
+<span id="index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029"></span>
</dt>
<dd><p>A synonym for <code>yank-last-arg</code>.
</p>
</dd>
-<dt><code>operate-and-get-next (C-o)</code>
-<a name="index-operate_002dand_002dget_002dnext-_0028C_002do_0029"></a>
-</dt>
-<dd><p>Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing.
-A numeric argument, if supplied, specifies the history entry to use instead
-of the current line.
-</p>
-</dd>
<dt><code>edit-and-execute-command (C-x C-e)</code>
-<a name="index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"></a>
+<span id="index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"></span>
</dt>
<dd><p>Invoke an editor on the current command line, and execute the result as shell
commands.
@@ -11825,13 +11966,11 @@ as the editor, in that order.
</dl>
<hr>
-<a name="Readline-vi-Mode"></a>
-<div class="header">
+<span id="Readline-vi-Mode"></span><div class="header">
<p>
Next: <a href="#Programmable-Completion" accesskey="n" rel="next">Programmable Completion</a>, Previous: <a href="#Bindable-Readline-Commands" accesskey="p" rel="prev">Bindable Readline Commands</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Readline-vi-Mode-1"></a>
-<h3 class="section">8.5 Readline vi Mode</h3>
+<span id="Readline-vi-Mode-1"></span><h3 class="section">8.5 Readline vi Mode</h3>
<p>While the Readline library does not have a full set of <code>vi</code>
editing functions, it does contain enough to allow simple editing
@@ -11851,14 +11990,12 @@ history lines with &lsquo;<samp>k</samp>&rsquo; and subsequent lines with &lsquo
so forth.
</p>
<hr>
-<a name="Programmable-Completion"></a>
-<div class="header">
+<span id="Programmable-Completion"></span><div class="header">
<p>
Next: <a href="#Programmable-Completion-Builtins" accesskey="n" rel="next">Programmable Completion Builtins</a>, Previous: <a href="#Readline-vi-Mode" accesskey="p" rel="prev">Readline vi Mode</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Programmable-Completion-1"></a>
-<h3 class="section">8.6 Programmable Completion</h3>
-<a name="index-programmable-completion"></a>
+<span id="Programmable-Completion-1"></span><h3 class="section">8.6 Programmable Completion</h3>
+<span id="index-programmable-completion"></span>
<p>When word completion is attempted for an argument to a command for
which a completion specification (a <var>compspec</var>) has been defined
@@ -12015,14 +12152,12 @@ complete -D -F _completion_loader -o bashdefault -o default
</pre></div>
<hr>
-<a name="Programmable-Completion-Builtins"></a>
-<div class="header">
+<span id="Programmable-Completion-Builtins"></span><div class="header">
<p>
Next: <a href="#A-Programmable-Completion-Example" accesskey="n" rel="next">A Programmable Completion Example</a>, Previous: <a href="#Programmable-Completion" accesskey="p" rel="prev">Programmable Completion</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Programmable-Completion-Builtins-1"></a>
-<h3 class="section">8.7 Programmable Completion Builtins</h3>
-<a name="index-completion-builtins"></a>
+<span id="Programmable-Completion-Builtins-1"></span><h3 class="section">8.7 Programmable Completion Builtins</h3>
+<span id="index-completion-builtins"></span>
<p>Three builtin commands are available to manipulate the programmable completion
facilities: one to specify how the arguments to a particular command are to
@@ -12030,7 +12165,7 @@ be completed, and two to modify the completion as it is happening.
</p>
<dl compact="compact">
<dt><code>compgen</code></dt>
-<dd><a name="index-compgen"></a>
+<dd><span id="index-compgen"></span>
<div class="example">
<pre class="example"><code>compgen [<var>option</var>] [<var>word</var>]</code>
</pre></div>
@@ -12055,7 +12190,7 @@ matches were generated.
</p>
</dd>
<dt><code>complete</code></dt>
-<dd><a name="index-complete"></a>
+<dd><span id="index-complete"></span>
<div class="example">
<pre class="example"><code>complete [-abcdefgjksuv] [-o <var>comp-option</var>] [-DEI] [-A <var>action</var>] [-G <var>globpat</var>]
[-W <var>wordlist</var>] [-F <var>function</var>] [-C <var>command</var>] [-X <var>filterpat</var>]
@@ -12077,7 +12212,7 @@ The <samp>-E</samp> option indicates that other supplied options and actions sho
apply to &ldquo;empty&rdquo; command completion; that is, completion attempted on a
blank line.
The <samp>-I</samp> option indicates that other supplied options and actions should
-apply to completion on the inital non-assignment word on the line, or after a
+apply to completion on the initial non-assignment word on the line, or after a
command delimiter such as &lsquo;<samp>;</samp>&rsquo; or &lsquo;<samp>|</samp>&rsquo;, which is usually command
name completion.
If multiple options are supplied, the <samp>-D</samp> option takes precedence
@@ -12311,7 +12446,7 @@ an error occurs adding a completion specification.
</p>
</dd>
<dt><code>compopt</code></dt>
-<dd><a name="index-compopt"></a>
+<dd><span id="index-compopt"></span>
<div class="example">
<pre class="example"><code>compopt</code> [-o <var>option</var>] [-DEI] [+o <var>option</var>] [<var>name</var>]
</pre></div>
@@ -12329,7 +12464,7 @@ The <samp>-E</samp> option indicates that other supplied options should
apply to &ldquo;empty&rdquo; command completion; that is, completion attempted on a
blank line.
The <samp>-I</samp> option indicates that other supplied options should
-apply to completion on the inital non-assignment word on the line, or after a
+apply to completion on the initial non-assignment word on the line, or after a
command delimiter such as &lsquo;<samp>;</samp>&rsquo; or &lsquo;<samp>|</samp>&rsquo;, which is usually command
name completion.
</p>
@@ -12344,13 +12479,11 @@ specification exists, or an output error occurs.
</dl>
<hr>
-<a name="A-Programmable-Completion-Example"></a>
-<div class="header">
+<span id="A-Programmable-Completion-Example"></span><div class="header">
<p>
Previous: <a href="#Programmable-Completion-Builtins" accesskey="p" rel="prev">Programmable Completion Builtins</a>, Up: <a href="#Command-Line-Editing" accesskey="u" rel="up">Command Line Editing</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="A-Programmable-Completion-Example-1"></a>
-<h3 class="section">8.8 A Programmable Completion Example</h3>
+<span id="A-Programmable-Completion-Example-1"></span><h3 class="section">8.8 A Programmable Completion Example</h3>
<p>The most common way to obtain additional completion functionality beyond
the default actions <code>complete</code> and <code>compgen</code> provide is to use
@@ -12450,7 +12583,7 @@ character to the directory name, in case we want to append to it.
The <samp>-o bashdefault</samp> option brings in the rest of the &quot;Bash default&quot;
completions &ndash; possible completion that Bash adds to the default Readline
set. These include things like command name completion, variable completion
-for words beginning with &lsquo;<samp>{</samp>&rsquo;, completions containing pathname
+for words beginning with &lsquo;<samp>$</samp>&rsquo; or &lsquo;<samp>${</samp>&rsquo;, completions containing pathname
expansion patterns (see <a href="#Filename-Expansion">Filename Expansion</a>), and so on.
</p>
<p>Once installed using <code>complete</code>, <code>_comp_cd</code> will be called every
@@ -12460,22 +12593,20 @@ time we attempt word completion for a <code>cd</code> command.
the common GNU, Unix, and Linux commands &ndash; 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 <a href="http://bash-completion.alioth.debian.org/">http://bash-completion.alioth.debian.org/</a>. There are ports for
+at <a href="https://github.com/scop/bash-completion/">https://github.com/scop/bash-completion/</a>. There are ports for
other systems such as Solaris and Mac OS X.
</p>
<p>An older version of the bash_completion package is distributed with bash
in the <samp>examples/complete</samp> subdirectory.
</p>
-<a name="index-History_002c-how-to-use"></a>
+<span id="index-History_002c-how-to-use"></span>
<hr>
-<a name="Using-History-Interactively"></a>
-<div class="header">
+<span id="Using-History-Interactively"></span><div class="header">
<p>
Next: <a href="#Installing-Bash" accesskey="n" rel="next">Installing Bash</a>, Previous: <a href="#Command-Line-Editing" accesskey="p" rel="prev">Command Line Editing</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Using-History-Interactively-1"></a>
-<h2 class="chapter">9 Using History Interactively</h2>
+<span id="Using-History-Interactively-1"></span><h2 class="chapter">9 Using History Interactively</h2>
<p>This chapter describes how to use the <small>GNU</small> History Library
@@ -12485,26 +12616,24 @@ For information on using the <small>GNU</small> History Library in other program
see the <small>GNU</small> Readline Library Manual.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Bash-History-Facilities" accesskey="1">Bash History Facilities</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash lets you manipulate your command
+<tr><td align="left" valign="top">&bull; <a href="#Bash-History-Facilities" accesskey="1">Bash History Facilities</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How Bash lets you manipulate your command
history.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Bash-History-Builtins" accesskey="2">Bash History Builtins</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The Bash builtin commands that manipulate
+<tr><td align="left" valign="top">&bull; <a href="#Bash-History-Builtins" accesskey="2">Bash History Builtins</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">The Bash builtin commands that manipulate
the command history.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#History-Interaction" accesskey="3">History Interaction</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What it feels like using History as a user.
+<tr><td align="left" valign="top">&bull; <a href="#History-Interaction" accesskey="3">History Interaction</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">What it feels like using History as a user.
</td></tr>
</table>
<hr>
-<a name="Bash-History-Facilities"></a>
-<div class="header">
+<span id="Bash-History-Facilities"></span><div class="header">
<p>
Next: <a href="#Bash-History-Builtins" accesskey="n" rel="next">Bash History Builtins</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-History-Facilities-1"></a>
-<h3 class="section">9.1 Bash History Facilities</h3>
-<a name="index-command-history"></a>
-<a name="index-history-list"></a>
+<span id="Bash-History-Facilities-1"></span><h3 class="section">9.1 Bash History Facilities</h3>
+<span id="index-command-history"></span>
+<span id="index-history-list"></span>
<p>When the <samp>-o history</samp> option to the <code>set</code> builtin
is enabled (see <a href="#The-Set-Builtin">The Set Builtin</a>),
@@ -12568,21 +12697,19 @@ The <code>shopt</code> builtin is used to set these options.
See <a href="#The-Shopt-Builtin">The Shopt Builtin</a>, for a description of <code>shopt</code>.
</p>
<hr>
-<a name="Bash-History-Builtins"></a>
-<div class="header">
+<span id="Bash-History-Builtins"></span><div class="header">
<p>
Next: <a href="#History-Interaction" accesskey="n" rel="next">History Interaction</a>, Previous: <a href="#Bash-History-Facilities" accesskey="p" rel="prev">Bash History Facilities</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Bash-History-Builtins-1"></a>
-<h3 class="section">9.2 Bash History Builtins</h3>
-<a name="index-history-builtins"></a>
+<span id="Bash-History-Builtins-1"></span><h3 class="section">9.2 Bash History Builtins</h3>
+<span id="index-history-builtins"></span>
<p>Bash provides two builtin commands which manipulate the
history list and history file.
</p>
<dl compact="compact">
<dt><code>fc</code></dt>
-<dd><a name="index-fc"></a>
+<dd><span id="index-fc"></span>
<div class="example">
<pre class="example"><code>fc [-e <var>ename</var>] [-lnr] [<var>first</var>] [<var>last</var>]</code>
<code>fc -s [<var>pat</var>=<var>rep</var>] [<var>command</var>]</code>
@@ -12595,7 +12722,14 @@ Both <var>first</var> and
<var>last</var> may be specified as a string (to locate the most recent
command beginning with that string) or as a number (an index into the
history list, where a negative number is used as an offset from the
-current command number). If <var>last</var> is not specified, it is set to
+current command number).
+</p>
+<p>When listing, a <var>first</var> or <var>last</var> of 0 is equivalent to -1
+and -0 is equivalent to the current command (usually the <code>fc</code>
+command);
+otherwise 0 is equivalent to -1 and -0 is invalid.
+</p>
+<p>If <var>last</var> is not specified, it is set to
<var>first</var>. If <var>first</var> is not specified, it is set to the previous
command for editing and -16 for listing. If the <samp>-l</samp> flag is
given, the commands are listed on standard output. The <samp>-n</samp> flag
@@ -12610,7 +12744,7 @@ When editing is complete, the edited commands are echoed and executed.
</p>
<p>In the second form, <var>command</var> is re-executed after each instance
of <var>pat</var> in the selected command is replaced by <var>rep</var>.
-<var>command</var> is intepreted the same as <var>first</var> above.
+<var>command</var> is interpreted the same as <var>first</var> above.
</p>
<p>A useful alias to use with the <code>fc</code> command is <code>r='fc -s'</code>, so
that typing &lsquo;<samp>r cc</samp>&rsquo; runs the last command beginning with <code>cc</code>
@@ -12618,7 +12752,7 @@ and typing &lsquo;<samp>r</samp>&rsquo; re-executes the last command (see <a hre
</p>
</dd>
<dt><code>history</code></dt>
-<dd><a name="index-history"></a>
+<dd><span id="index-history"></span>
<div class="example">
<pre class="example">history [<var>n</var>]
history -c
@@ -12703,14 +12837,12 @@ the value of the <code>HISTFILE</code> variable is used.
</dl>
<hr>
-<a name="History-Interaction"></a>
-<div class="header">
+<span id="History-Interaction"></span><div class="header">
<p>
Previous: <a href="#Bash-History-Builtins" accesskey="p" rel="prev">Bash History Builtins</a>, Up: <a href="#Using-History-Interactively" accesskey="u" rel="up">Using History Interactively</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="History-Expansion"></a>
-<h3 class="section">9.3 History Expansion</h3>
-<a name="index-history-expansion"></a>
+<span id="History-Expansion"></span><h3 class="section">9.3 History Expansion</h3>
+<span id="index-history-expansion"></span>
<p>The History library provides a history expansion feature that is similar
to the history expansion provided by <code>csh</code>. This section
@@ -12777,29 +12909,27 @@ the history comment character to mark history timestamps when
writing the history file.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Event-Designators" accesskey="1">Event Designators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify which history line to use.
+<tr><td align="left" valign="top">&bull; <a href="#Event-Designators" accesskey="1">Event Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to specify which history line to use.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Word-Designators" accesskey="2">Word Designators</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying which words are of interest.
+<tr><td align="left" valign="top">&bull; <a href="#Word-Designators" accesskey="2">Word Designators</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Specifying which words are of interest.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Modifiers" accesskey="3">Modifiers</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Modifying the results of substitution.
+<tr><td align="left" valign="top">&bull; <a href="#Modifiers" accesskey="3">Modifiers</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Modifying the results of substitution.
</td></tr>
</table>
<hr>
-<a name="Event-Designators"></a>
-<div class="header">
+<span id="Event-Designators"></span><div class="header">
<p>
Next: <a href="#Word-Designators" accesskey="n" rel="next">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Event-Designators-1"></a>
-<h4 class="subsection">9.3.1 Event Designators</h4>
-<a name="index-event-designators"></a>
+<span id="Event-Designators-1"></span><h4 class="subsection">9.3.1 Event Designators</h4>
+<span id="index-event-designators"></span>
<p>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.
-<a name="index-history-events"></a>
+<span id="index-history-events"></span>
</p>
<dl compact="compact">
<dt><code>!</code></dt>
@@ -12833,12 +12963,14 @@ containing <var>string</var>.
The trailing
&lsquo;<samp>?</samp>&rsquo; may be omitted if the <var>string</var> is followed immediately by
a newline.
+If <var>string</var> is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
</p>
</dd>
<dt><code>^<var>string1</var>^<var>string2</var>^</code></dt>
<dd><p>Quick Substitution. Repeat the last command, replacing <var>string1</var>
with <var>string2</var>. Equivalent to
-<code>!!:s/<var>string1</var>/<var>string2</var>/</code>.
+<code>!!:s^<var>string1</var>^<var>string2</var>^</code>.
</p>
</dd>
<dt><code>!#</code></dt>
@@ -12848,13 +12980,11 @@ with <var>string2</var>. Equivalent to
</dl>
<hr>
-<a name="Word-Designators"></a>
-<div class="header">
+<span id="Word-Designators"></span><div class="header">
<p>
Next: <a href="#Modifiers" accesskey="n" rel="next">Modifiers</a>, Previous: <a href="#Event-Designators" accesskey="p" rel="prev">Event Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Word-Designators-1"></a>
-<h4 class="subsection">9.3.2 Word Designators</h4>
+<span id="Word-Designators-1"></span><h4 class="subsection">9.3.2 Word Designators</h4>
<p>Word designators are used to select desired words from the event.
A &lsquo;<samp>:</samp>&rsquo; separates the event specification from the word designator. It
@@ -12902,7 +13032,8 @@ the letters <code>fi</code>.
</p>
</dd>
<dt><code>%</code></dt>
-<dd><p>The word matched by the most recent &lsquo;<samp>?<var>string</var>?</samp>&rsquo; search.
+<dd><p>The first word matched by the most recent &lsquo;<samp>?<var>string</var>?</samp>&rsquo; search,
+if the search string begins with a character that is part of a word.
</p>
</dd>
<dt><code><var>x</var>-<var>y</var></code></dt>
@@ -12921,6 +13052,7 @@ the empty string is returned in that case.
</dd>
<dt><code><var>x</var>-</code></dt>
<dd><p>Abbreviates &lsquo;<samp><var>x</var>-$</samp>&rsquo; like &lsquo;<samp><var>x</var>*</samp>&rsquo;, but omits the last word.
+If &lsquo;<samp>x</samp>&rsquo; is missing, it defaults to 0.
</p>
</dd>
</dl>
@@ -12929,16 +13061,15 @@ the empty string is returned in that case.
previous command is used as the event.
</p>
<hr>
-<a name="Modifiers"></a>
-<div class="header">
+<span id="Modifiers"></span><div class="header">
<p>
Previous: <a href="#Word-Designators" accesskey="p" rel="prev">Word Designators</a>, Up: <a href="#History-Interaction" accesskey="u" rel="up">History Interaction</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Modifiers-1"></a>
-<h4 class="subsection">9.3.3 Modifiers</h4>
+<span id="Modifiers-1"></span><h4 class="subsection">9.3.3 Modifiers</h4>
<p>After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a &lsquo;<samp>:</samp>&rsquo;.
+These modify, or edit, the word or words selected from the history event.
</p>
<dl compact="compact">
<dt><code>h</code></dt>
@@ -12969,15 +13100,25 @@ the basename.
<dt><code>x</code></dt>
<dd><p>Quote the substituted words as with &lsquo;<samp>q</samp>&rsquo;,
but break into words at spaces, tabs, and newlines.
+The &lsquo;<samp>q</samp>&rsquo; and &lsquo;<samp>x</samp>&rsquo; modifiers are mutually exclusive; the last one
+supplied is used.
</p>
</dd>
<dt><code>s/<var>old</var>/<var>new</var>/</code></dt>
<dd><p>Substitute <var>new</var> for the first occurrence of <var>old</var> in the
-event line. Any delimiter may be used in place of &lsquo;<samp>/</samp>&rsquo;.
+event line.
+Any character may be used as the delimiter in place of &lsquo;<samp>/</samp>&rsquo;.
The delimiter may be quoted in <var>old</var> and <var>new</var>
with a single backslash. If &lsquo;<samp>&amp;</samp>&rsquo; appears in <var>new</var>,
it is replaced by <var>old</var>. A single backslash will quote
-the &lsquo;<samp>&amp;</samp>&rsquo;. The final delimiter is optional if it is the last
+the &lsquo;<samp>&amp;</samp>&rsquo;.
+If <var>old</var> is null, it is set to the last <var>old</var>
+substituted, or, if no previous history substitutions took place,
+the last <var>string</var>
+in a !?<var>string</var><code>[?]</code>
+search.
+If <var>new</var> is is null, each matching <var>old</var> is deleted.
+The final delimiter is optional if it is the last
character on the input line.
</p>
</dd>
@@ -12993,19 +13134,18 @@ or with &lsquo;<samp>&amp;</samp>&rsquo;.
</p>
</dd>
<dt><code>G</code></dt>
-<dd><p>Apply the following &lsquo;<samp>s</samp>&rsquo; modifier once to each word in the event.
+<dd><p>Apply the following &lsquo;<samp>s</samp>&rsquo; or &lsquo;<samp>&amp;</samp>&rsquo; modifier once to each word
+in the event.
</p>
</dd>
</dl>
<hr>
-<a name="Installing-Bash"></a>
-<div class="header">
+<span id="Installing-Bash"></span><div class="header">
<p>
Next: <a href="#Reporting-Bugs" accesskey="n" rel="next">Reporting Bugs</a>, Previous: <a href="#Using-History-Interactively" accesskey="p" rel="prev">Using History Interactively</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Installing-Bash-1"></a>
-<h2 class="chapter">10 Installing Bash</h2>
+<span id="Installing-Bash-1"></span><h2 class="chapter">10 Installing Bash</h2>
<p>This chapter provides basic instructions for installing Bash on
the various supported platforms. The distribution supports the
@@ -13015,41 +13155,39 @@ Other independent ports exist for
<small>MS-DOS</small>, <small>OS/2</small>, and Windows platforms.
</p>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Basic-Installation" accesskey="1">Basic Installation</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Installation instructions.
+<tr><td align="left" valign="top">&bull; <a href="#Basic-Installation" accesskey="1">Basic Installation</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Installation instructions.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Compilers-and-Options" accesskey="2">Compilers and Options</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to set special options for various
+<tr><td align="left" valign="top">&bull; <a href="#Compilers-and-Options" accesskey="2">Compilers and Options</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to set special options for various
systems.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Compiling-For-Multiple-Architectures" accesskey="3">Compiling For Multiple Architectures</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to compile Bash for more
+<tr><td align="left" valign="top">&bull; <a href="#Compiling-For-Multiple-Architectures" accesskey="3">Compiling For Multiple Architectures</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to compile Bash for more
than one kind of system from
the same source tree.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Installation-Names" accesskey="4">Installation Names</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to set the various paths used by the installation.
+<tr><td align="left" valign="top">&bull; <a href="#Installation-Names" accesskey="4">Installation Names</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to set the various paths used by the installation.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Specifying-the-System-Type" accesskey="5">Specifying the System Type</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to configure Bash for a particular system.
+<tr><td align="left" valign="top">&bull; <a href="#Specifying-the-System-Type" accesskey="5">Specifying the System Type</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to configure Bash for a particular system.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Sharing-Defaults" accesskey="6">Sharing Defaults</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to share default configuration values among GNU
+<tr><td align="left" valign="top">&bull; <a href="#Sharing-Defaults" accesskey="6">Sharing Defaults</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to share default configuration values among GNU
programs.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Operation-Controls" accesskey="7">Operation Controls</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options recognized by the configuration program.
+<tr><td align="left" valign="top">&bull; <a href="#Operation-Controls" accesskey="7">Operation Controls</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Options recognized by the configuration program.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Optional-Features" accesskey="8">Optional Features</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to enable and disable optional features when
+<tr><td align="left" valign="top">&bull; <a href="#Optional-Features" accesskey="8">Optional Features</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">How to enable and disable optional features when
building Bash.
</td></tr>
</table>
<hr>
-<a name="Basic-Installation"></a>
-<div class="header">
+<span id="Basic-Installation"></span><div class="header">
<p>
Next: <a href="#Compilers-and-Options" accesskey="n" rel="next">Compilers and Options</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Basic-Installation-1"></a>
-<h3 class="section">10.1 Basic Installation</h3>
-<a name="index-installation"></a>
-<a name="index-configuration"></a>
-<a name="index-Bash-installation"></a>
-<a name="index-Bash-configuration"></a>
+<span id="Basic-Installation-1"></span><h3 class="section">10.1 Basic Installation</h3>
+<span id="index-installation"></span>
+<span id="index-configuration"></span>
+<span id="index-Bash-installation"></span>
+<span id="index-Bash-configuration"></span>
<p>These are installation instructions for Bash.
</p>
@@ -13136,13 +13274,11 @@ files that <code>configure</code> created (so you can compile Bash for
a different kind of computer), type &lsquo;<samp>make distclean</samp>&rsquo;.
</p>
<hr>
-<a name="Compilers-and-Options"></a>
-<div class="header">
+<span id="Compilers-and-Options"></span><div class="header">
<p>
Next: <a href="#Compiling-For-Multiple-Architectures" accesskey="n" rel="next">Compiling For Multiple Architectures</a>, Previous: <a href="#Basic-Installation" accesskey="p" rel="prev">Basic Installation</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Compilers-and-Options-1"></a>
-<h3 class="section">10.2 Compilers and Options</h3>
+<span id="Compilers-and-Options-1"></span><h3 class="section">10.2 Compilers and Options</h3>
<p>Some systems require unusual options for compilation or linking
that the <code>configure</code> script does not know about. You can
@@ -13164,13 +13300,11 @@ can do that on the command line like this:
is available.
</p>
<hr>
-<a name="Compiling-For-Multiple-Architectures"></a>
-<div class="header">
+<span id="Compiling-For-Multiple-Architectures"></span><div class="header">
<p>
Next: <a href="#Installation-Names" accesskey="n" rel="next">Installation Names</a>, Previous: <a href="#Compilers-and-Options" accesskey="p" rel="prev">Compilers and Options</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Compiling-For-Multiple-Architectures-1"></a>
-<h3 class="section">10.3 Compiling For Multiple Architectures</h3>
+<span id="Compiling-For-Multiple-Architectures-1"></span><h3 class="section">10.3 Compiling For Multiple Architectures</h3>
<p>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
@@ -13206,13 +13340,11 @@ Bash for at least one architecture before you can create build
directories for other architectures.
</p>
<hr>
-<a name="Installation-Names"></a>
-<div class="header">
+<span id="Installation-Names"></span><div class="header">
<p>
Next: <a href="#Specifying-the-System-Type" accesskey="n" rel="next">Specifying the System Type</a>, Previous: <a href="#Compiling-For-Multiple-Architectures" accesskey="p" rel="prev">Compiling For Multiple Architectures</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Installation-Names-1"></a>
-<h3 class="section">10.4 Installation Names</h3>
+<span id="Installation-Names-1"></span><h3 class="section">10.4 Installation Names</h3>
<p>By default, &lsquo;<samp>make install</samp>&rsquo; will install into
<samp>/usr/local/bin</samp>, <samp>/usr/local/man</samp>, etc. You can
@@ -13229,13 +13361,11 @@ If you give <code>configure</code> the option
Documentation and other data files will still use the regular prefix.
</p>
<hr>
-<a name="Specifying-the-System-Type"></a>
-<div class="header">
+<span id="Specifying-the-System-Type"></span><div class="header">
<p>
Next: <a href="#Sharing-Defaults" accesskey="n" rel="next">Sharing Defaults</a>, Previous: <a href="#Installation-Names" accesskey="p" rel="prev">Installation Names</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Specifying-the-System-Type-1"></a>
-<h3 class="section">10.5 Specifying the System Type</h3>
+<span id="Specifying-the-System-Type-1"></span><h3 class="section">10.5 Specifying the System Type</h3>
<p>There may be some features <code>configure</code> can not figure out
automatically, but need to determine by the type of host Bash
@@ -13250,13 +13380,11 @@ or a canonical name with three fields: &lsquo;<samp>CPU-COMPANY-SYSTEM</samp>&rs
values of each field.
</p>
<hr>
-<a name="Sharing-Defaults"></a>
-<div class="header">
+<span id="Sharing-Defaults"></span><div class="header">
<p>
Next: <a href="#Operation-Controls" accesskey="n" rel="next">Operation Controls</a>, Previous: <a href="#Specifying-the-System-Type" accesskey="p" rel="prev">Specifying the System Type</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Sharing-Defaults-1"></a>
-<h3 class="section">10.6 Sharing Defaults</h3>
+<span id="Sharing-Defaults-1"></span><h3 class="section">10.6 Sharing Defaults</h3>
<p>If you want to set default values for <code>configure</code> scripts to
share, you can create a site shell script called
@@ -13269,13 +13397,11 @@ script. A warning: the Bash <code>configure</code> looks for a site script,
but not all <code>configure</code> scripts do.
</p>
<hr>
-<a name="Operation-Controls"></a>
-<div class="header">
+<span id="Operation-Controls"></span><div class="header">
<p>
Next: <a href="#Optional-Features" accesskey="n" rel="next">Optional Features</a>, Previous: <a href="#Sharing-Defaults" accesskey="p" rel="prev">Sharing Defaults</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Operation-Controls-1"></a>
-<h3 class="section">10.7 Operation Controls</h3>
+<span id="Operation-Controls-1"></span><h3 class="section">10.7 Operation Controls</h3>
<p><code>configure</code> recognizes the following options to control how it
operates.
@@ -13313,13 +13439,11 @@ script, and exit.
options. &lsquo;<samp>configure --help</samp>&rsquo; prints the complete list.
</p>
<hr>
-<a name="Optional-Features"></a>
-<div class="header">
+<span id="Optional-Features"></span><div class="header">
<p>
Previous: <a href="#Operation-Controls" accesskey="p" rel="prev">Operation Controls</a>, Up: <a href="#Installing-Bash" accesskey="u" rel="up">Installing Bash</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Optional-Features-1"></a>
-<h3 class="section">10.8 Optional Features</h3>
+<span id="Optional-Features-1"></span><h3 class="section">10.8 Optional Features</h3>
<p>The Bash <code>configure</code> has a number of <samp>--enable-<var>feature</var></samp>
options, where <var>feature</var> indicates an optional part of Bash.
@@ -13638,13 +13762,11 @@ Read the comments associated with each definition for more
information about its effect.
</p>
<hr>
-<a name="Reporting-Bugs"></a>
-<div class="header">
+<span id="Reporting-Bugs"></span><div class="header">
<p>
Next: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="n" rel="next">Major Differences From The Bourne Shell</a>, Previous: <a href="#Installing-Bash" accesskey="p" rel="prev">Installing Bash</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Reporting-Bugs-1"></a>
-<h2 class="appendix">Appendix A Reporting Bugs</h2>
+<span id="Reporting-Bugs-1"></span><h2 class="appendix">Appendix A Reporting Bugs</h2>
<p>Please report all bugs you find in Bash.
But first, you should
@@ -13677,13 +13799,11 @@ the template it provides for filing a bug report.
<a href="mailto:bug-bash@gnu.org">bug-bash@gnu.org</a>.
</p>
<hr>
-<a name="Major-Differences-From-The-Bourne-Shell"></a>
-<div class="header">
+<span id="Major-Differences-From-The-Bourne-Shell"></span><div class="header">
<p>
Next: <a href="#GNU-Free-Documentation-License" accesskey="n" rel="next">GNU Free Documentation License</a>, Previous: <a href="#Reporting-Bugs" accesskey="p" rel="prev">Reporting Bugs</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Major-Differences-From-The-Bourne-Shell-1"></a>
-<h2 class="appendix">Appendix B Major Differences From The Bourne Shell</h2>
+<span id="Major-Differences-From-The-Bourne-Shell-1"></span><h2 class="appendix">Appendix B Major Differences From The Bourne Shell</h2>
<p>Bash implements essentially the same grammar, parameter and
variable expansion, redirection, and quoting as the Bourne Shell.
@@ -14017,8 +14137,7 @@ shell scripts.
<p>More features unique to Bash may be found in <a href="#Bash-Features">Bash Features</a>.
</p>
-<a name="Implementation-Differences-From-The-SVR4_002e2-Shell"></a>
-<h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
+<span id="Implementation-Differences-From-The-SVR4_002e2-Shell"></span><h3 class="appendixsec">B.1 Implementation Differences From The SVR4.2 Shell</h3>
<p>Since Bash is a completely new implementation, it does not suffer from
many of the limitations of the SVR4.2 shell. For instance:
@@ -14066,13 +14185,11 @@ only for certain failures, as enumerated in the <small>POSIX</small> standard.
</li></ul>
<hr>
-<a name="GNU-Free-Documentation-License"></a>
-<div class="header">
+<span id="GNU-Free-Documentation-License"></span><div class="header">
<p>
Next: <a href="#Indexes" accesskey="n" rel="next">Indexes</a>, Previous: <a href="#Major-Differences-From-The-Bourne-Shell" accesskey="p" rel="prev">Major Differences From The Bourne Shell</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="GNU-Free-Documentation-License-1"></a>
-<h2 class="appendix">Appendix C GNU Free Documentation License</h2>
+<span id="GNU-Free-Documentation-License-1"></span><h2 class="appendix">Appendix C GNU Free Documentation License</h2>
<div align="center">Version 1.3, 3 November 2008
</div>
@@ -14507,15 +14624,14 @@ provided the MMC is eligible for relicensing.
</p>
</li></ol>
-<a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
-<h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
+<span id="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></span><h3 class="heading">ADDENDUM: How to use this License for your documents</h3>
<p>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:
</p>
-<div class="smallexample">
-<pre class="smallexample"> Copyright (C) <var>year</var> <var>your name</var>.
+<div class="example">
+<pre class="example"> Copyright (C) <var>year</var> <var>your name</var>.
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;
@@ -14527,8 +14643,8 @@ license notices just after the title page:
<p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
replace the &ldquo;with&hellip;Texts.&rdquo; line with this:
</p>
-<div class="smallexample">
-<pre class="smallexample"> with the Invariant Sections being <var>list their titles</var>, with
+<div class="example">
+<pre class="example"> with the Invariant Sections being <var>list their titles</var>, with
the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
being <var>list</var>.
</pre></div>
@@ -14545,37 +14661,33 @@ to permit their use in free software.
<hr>
-<a name="Indexes"></a>
-<div class="header">
+<span id="Indexes"></span><div class="header">
<p>
Previous: <a href="#GNU-Free-Documentation-License" accesskey="p" rel="prev">GNU Free Documentation License</a>, Up: <a href="#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Indexes-1"></a>
-<h2 class="appendix">Appendix D Indexes</h2>
+<span id="Indexes-1"></span><h2 class="appendix">Appendix D Indexes</h2>
<table class="menu" border="0" cellspacing="0">
-<tr><td align="left" valign="top">&bull; <a href="#Builtin-Index" accesskey="1">Builtin Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of Bash builtin commands.
+<tr><td align="left" valign="top">&bull; <a href="#Builtin-Index" rel="index" accesskey="1">Builtin Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of Bash builtin commands.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Reserved-Word-Index" accesskey="2">Reserved Word Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of Bash reserved words.
+<tr><td align="left" valign="top">&bull; <a href="#Reserved-Word-Index" rel="index" accesskey="2">Reserved Word Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of Bash reserved words.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Variable-Index" accesskey="3">Variable Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Quick reference helps you find the
+<tr><td align="left" valign="top">&bull; <a href="#Variable-Index" rel="index" accesskey="3">Variable Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Quick reference helps you find the
variable you want.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Function-Index" accesskey="4">Function Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of bindable Readline functions.
+<tr><td align="left" valign="top">&bull; <a href="#Function-Index" rel="index" accesskey="4">Function Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">Index of bindable Readline functions.
</td></tr>
-<tr><td align="left" valign="top">&bull; <a href="#Concept-Index" accesskey="5">Concept Index</a>:</td><td>&nbsp;&nbsp;</td><td align="left" valign="top">General index for concepts described in
+<tr><td align="left" valign="top">&bull; <a href="#Concept-Index" rel="index" accesskey="5">Concept Index</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">General index for concepts described in
this manual.
</td></tr>
</table>
<hr>
-<a name="Builtin-Index"></a>
-<div class="header">
+<span id="Builtin-Index"></span><div class="header">
<p>
Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Index-of-Shell-Builtin-Commands"></a>
-<h3 class="appendixsec">D.1 Index of Shell Builtin Commands</h3>
+<span id="Index-of-Shell-Builtin-Commands"></span><h3 class="appendixsec">D.1 Index of Shell Builtin Commands</h3>
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Builtin-Index_bt_symbol-1"><b>.</b></a>
&nbsp;
<a class="summary-letter" href="#Builtin-Index_bt_symbol-2"><b>:</b></a>
@@ -14623,25 +14735,25 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Inde
<table class="index-bt" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_symbol-1">.</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_symbol-1">.</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_002e"><code>.</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_symbol-2">:</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_symbol-2">:</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_003a"><code>:</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_symbol-3">[</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_symbol-3">[</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_005b"><code>[</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-A">A</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-A">A</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-alias"><code>alias</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-B">B</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-bg"><code>bg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-bind"><code>bind</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-break"><code>break</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-builtin"><code>builtin</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-caller"><code>caller</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-cd"><code>cd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-command"><code>command</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
@@ -14650,12 +14762,12 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Inde
<tr><td></td><td valign="top"><a href="#index-compopt"><code>compopt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-continue"><code>continue</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-D">D</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-declare"><code>declare</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-dirs"><code>dirs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-disown"><code>disown</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-echo"><code>echo</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-enable"><code>enable</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-eval"><code>eval</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
@@ -14663,65 +14775,65 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Inde
<tr><td></td><td valign="top"><a href="#index-exit"><code>exit</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-export"><code>export</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-fc"><code>fc</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-History-Builtins">Bash History Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-fg"><code>fg</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-G">G</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-G">G</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-getopts"><code>getopts</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-H">H</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-H">H</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-hash"><code>hash</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-help"><code>help</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history"><code>history</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-History-Builtins">Bash History Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-J">J</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-J">J</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-jobs"><code>jobs</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-K">K</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-K">K</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill"><code>kill</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-L">L</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-L">L</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-let"><code>let</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-local"><code>local</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-logout"><code>logout</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-M">M</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-M">M</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-mapfile"><code>mapfile</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-P">P</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-P">P</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-popd"><code>popd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-printf"><code>printf</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-pushd"><code>pushd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Directory-Stack-Builtins">Directory Stack Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-pwd"><code>pwd</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-R">R</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-R">R</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-read"><code>read</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-readarray"><code>readarray</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-readonly"><code>readonly</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-return"><code>return</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-S">S</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-set"><code>set</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-Set-Builtin">The Set Builtin</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shift"><code>shift</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shopt"><code>shopt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-Shopt-Builtin">The Shopt Builtin</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-source"><code>source</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-suspend"><code>suspend</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-T">T</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-test"><code>test</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-times"><code>times</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-trap"><code>trap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-type"><code>type</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-typeset"><code>typeset</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-U">U</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-U">U</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-ulimit"><code>ulimit</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-umask"><code>umask</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-unalias"><code>unalias</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Builtins">Bash Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-unset"><code>unset</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Builtins">Bourne Shell Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Builtin-Index_bt_letter-W">W</a></th><td></td><td></td></tr>
+<tr><th id="Builtin-Index_bt_letter-W">W</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-wait"><code>wait</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Builtins">Job Control Builtins</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
</table>
@@ -14771,13 +14883,11 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Reserved Word Inde
</td></tr></table>
<hr>
-<a name="Reserved-Word-Index"></a>
-<div class="header">
+<span id="Reserved-Word-Index"></span><div class="header">
<p>
Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Previous: <a href="#Builtin-Index" accesskey="p" rel="prev">Builtin Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Index-of-Shell-Reserved-Words"></a>
-<h3 class="appendixsec">D.2 Index of Shell Reserved Words</h3>
+<span id="Index-of-Shell-Reserved-Words"></span><h3 class="appendixsec">D.2 Index of Shell Reserved Words</h3>
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Reserved-Word-Index_rw_symbol-1"><b>!</b></a>
&nbsp;
<a class="summary-letter" href="#Reserved-Word-Index_rw_symbol-2"><b>[</b></a>
@@ -14811,53 +14921,53 @@ Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Pre
<table class="index-rw" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_symbol-1">!</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_symbol-1">!</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0021"><code>!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pipelines">Pipelines</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_symbol-2">[</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_symbol-2">[</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_005b_005b"><code>[[</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_symbol-3">]</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_symbol-3">]</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_005d_005d"><code>]]</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_symbol-4">{</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_symbol-4">{</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_007b"><code>{</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Grouping">Command Grouping</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_symbol-5">}</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_symbol-5">}</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_007d"><code>}</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Grouping">Command Grouping</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-case"><code>case</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-D">D</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-do"><code>do</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Looping-Constructs">Looping Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-done"><code>done</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Looping-Constructs">Looping Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-elif"><code>elif</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-else"><code>else</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-esac"><code>esac</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-fi"><code>fi</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-for"><code>for</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Looping-Constructs">Looping Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-function"><code>function</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Functions">Shell Functions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-I">I</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-if"><code>if</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-in"><code>in</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-S">S</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-select"><code>select</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-T">T</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-then"><code>then</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Conditional-Constructs">Conditional Constructs</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-time"><code>time</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pipelines">Pipelines</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-U">U</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-U">U</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-until"><code>until</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Looping-Constructs">Looping Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Reserved-Word-Index_rw_letter-W">W</a></th><td></td><td></td></tr>
+<tr><th id="Reserved-Word-Index_rw_letter-W">W</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-while"><code>while</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Looping-Constructs">Looping Constructs</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
</table>
@@ -14893,13 +15003,11 @@ Next: <a href="#Variable-Index" accesskey="n" rel="next">Variable Index</a>, Pre
</td></tr></table>
<hr>
-<a name="Variable-Index"></a>
-<div class="header">
+<span id="Variable-Index"></span><div class="header">
<p>
Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Previous: <a href="#Reserved-Word-Index" accesskey="p" rel="prev">Reserved Word Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Parameter-and-Variable-Index"></a>
-<h3 class="appendixsec">D.3 Parameter and Variable Index</h3>
+<span id="Parameter-and-Variable-Index"></span><h3 class="appendixsec">D.3 Parameter and Variable Index</h3>
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Variable-Index_vr_symbol-1"><b>!</b></a>
&nbsp;
<a class="summary-letter" href="#Variable-Index_vr_symbol-2"><b>#</b></a>
@@ -14961,13 +15069,13 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<table class="index-vr" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-1">!</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-1">!</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0021-1"><code>!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-2">#</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-2">#</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0023"><code>#</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-3">$</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-3">$</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0024"><code>$</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0024_0021"><code>$!</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0024_0023"><code>$#</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
@@ -14977,30 +15085,30 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-_00240"><code>$0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0024_003f"><code>$?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0024_0040"><code>$@</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_0024_005f"><code>$_</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_0024_005f"><code>$_</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-4">*</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-4">*</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_002a"><code>*</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-5">-</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-5">-</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_002d"><code>-</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-6">0</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-6">0</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-0"><code>0</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-7">?</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-7">?</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_003f"><code>?</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-8">@</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_symbol-8">@</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-_0040"><code>@</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_symbol-9">_</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-_005f"><code>_</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Special-Parameters">Special Parameters</a></td></tr>
+<tr><th id="Variable-Index_vr_symbol-9">_</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-_005f"><code>_</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-A">A</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-A">A</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-auto_005fresume"><code>auto_resume</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Variables">Job Control Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-B">B</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-BASH"><code>BASH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-BASHOPTS"><code>BASHOPTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-BASHPID"><code>BASHPID</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15025,7 +15133,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-bind_002dtty_002dspecial_002dchars"><code>bind-tty-special-chars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-blink_002dmatching_002dparen"><code>blink-matching-paren</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-CDPATH"><code>CDPATH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-CHILD_005fMAX"><code>CHILD_MAX</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-colored_002dcompletion_002dprefix"><code>colored-completion-prefix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
@@ -15048,11 +15156,11 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-convert_002dmeta"><code>convert-meta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-COPROC"><code>COPROC</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-D">D</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-DIRSTACK"><code>DIRSTACK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-disable_002dcompletion"><code>disable-completion</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-echo_002dcontrol_002dcharacters"><code>echo-control-characters</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-editing_002dmode"><code>editing-mode</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-EMACS"><code>EMACS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15066,17 +15174,17 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-EXECIGNORE"><code>EXECIGNORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-expand_002dtilde"><code>expand-tilde</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-FCEDIT"><code>FCEDIT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-FIGNORE"><code>FIGNORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-FUNCNAME"><code>FUNCNAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-FUNCNEST"><code>FUNCNEST</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-G">G</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-G">G</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-GLOBIGNORE"><code>GLOBIGNORE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-GROUPS"><code>GROUPS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-H">H</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-H">H</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-histchars"><code>histchars</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-HISTCMD"><code>HISTCMD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-HISTCONTROL"><code>HISTCONTROL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15093,7 +15201,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-HOSTNAME"><code>HOSTNAME</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-HOSTTYPE"><code>HOSTTYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-I">I</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-IFS"><code>IFS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-IGNOREEOF"><code>IGNOREEOF</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-input_002dmeta"><code>input-meta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
@@ -15101,10 +15209,10 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-INSIDE_005fEMACS"><code>INSIDE_EMACS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-isearch_002dterminators"><code>isearch-terminators</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-K">K</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-K">K</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-keymap"><code>keymap</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-L">L</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-L">L</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-LANG"><code>LANG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fALL"><code>LC_ALL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LC_005fCOLLATE"><code>LC_COLLATE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15116,7 +15224,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-LINENO"><code>LINENO</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-LINES"><code>LINES</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-M">M</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-M">M</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-MACHTYPE"><code>MACHTYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-MAIL"><code>MAIL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-MAILCHECK"><code>MAILCHECK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15128,7 +15236,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete_002ddisplay_002dprefix"><code>menu-complete-display-prefix</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-meta_002dflag"><code>meta-flag</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-O">O</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-O">O</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-OLDPWD"><code>OLDPWD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-OPTARG"><code>OPTARG</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-OPTERR"><code>OPTERR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15136,7 +15244,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-OSTYPE"><code>OSTYPE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-output_002dmeta"><code>output-meta</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-P">P</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-P">P</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-page_002dcompletions"><code>page-completions</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-PATH"><code>PATH</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bourne-Shell-Variables">Bourne Shell Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-PIPESTATUS"><code>PIPESTATUS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15151,14 +15259,15 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-PS4"><code>PS4</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-PWD"><code>PWD</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-R">R</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-R">R</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-RANDOM"><code>RANDOM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-READLINE_005fLINE"><code>READLINE_LINE</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-READLINE_005fMARK"><code>READLINE_MARK</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-READLINE_005fPOINT"><code>READLINE_POINT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-REPLY"><code>REPLY</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-revert_002dall_002dat_002dnewline"><code>revert-all-at-newline</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-S">S</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-SECONDS"><code>SECONDS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SHELL"><code>SHELL</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-SHELLOPTS"><code>SHELLOPTS</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
@@ -15167,18 +15276,19 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
<tr><td></td><td valign="top"><a href="#index-show_002dall_002dif_002dunmodified"><code>show-all-if-unmodified</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-show_002dmode_002din_002dprompt"><code>show-mode-in-prompt</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-skip_002dcompleted_002dtext"><code>skip-completed-text</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-SRANDOM"><code>SRANDOM</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-T">T</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-TEXTDOMAIN"><code>TEXTDOMAIN</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TEXTDOMAINDIR"><code>TEXTDOMAINDIR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TIMEFORMAT"><code>TIMEFORMAT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TMOUT"><code>TMOUT</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-TMPDIR"><code>TMPDIR</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-U">U</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-U">U</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-UID"><code>UID</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Variables">Bash Variables</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Variable-Index_vr_letter-V">V</a></th><td></td><td></td></tr>
+<tr><th id="Variable-Index_vr_letter-V">V</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-vi_002dcmd_002dmode_002dstring"><code>vi-cmd-mode-string</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-vi_002dins_002dmode_002dstring"><code>vi-ins-mode-string</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-visible_002dstats"><code>visible-stats</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
@@ -15244,13 +15354,11 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
</td></tr></table>
<hr>
-<a name="Function-Index"></a>
-<div class="header">
+<span id="Function-Index"></span><div class="header">
<p>
Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previous: <a href="#Variable-Index" accesskey="p" rel="prev">Variable Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Function-Index-1"></a>
-<h3 class="appendixsec">D.4 Function Index</h3>
+<span id="Function-Index-1"></span><h3 class="appendixsec">D.4 Function Index</h3>
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Function-Index_fn_letter-A"><b>A</b></a>
&nbsp;
<a class="summary-letter" href="#Function-Index_fn_letter-B"><b>B</b></a>
@@ -15295,12 +15403,12 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<table class="index-fn" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-A">A</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-A">A</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-abort-_0028C_002dg_0029"><code>abort (C-g)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-accept_002dline-_0028Newline-or-Return_0029"><code>accept-line (Newline or Return)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-alias_002dexpand_002dline-_0028_0029"><code>alias-expand-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-B">B</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-backward_002dchar-_0028C_002db_0029"><code>backward-char (C-b)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-backward_002ddelete_002dchar-_0028Rubout_0029"><code>backward-delete-char (Rubout)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-backward_002dkill_002dline-_0028C_002dx-Rubout_0029"><code>backward-kill-line (C-x Rubout)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
@@ -15310,11 +15418,12 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-beginning_002dof_002dline-_0028C_002da_0029"><code>beginning-of-line (C-a)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-bracketed_002dpaste_002dbegin-_0028_0029"><code>bracketed-paste-begin ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-call_002dlast_002dkbd_002dmacro-_0028C_002dx-e_0029"><code>call-last-kbd-macro (C-x e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-capitalize_002dword-_0028M_002dc_0029"><code>capitalize-word (M-c)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-character_002dsearch-_0028C_002d_005d_0029"><code>character-search (C-])</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-character_002dsearch_002dbackward-_0028M_002dC_002d_005d_0029"><code>character-search-backward (M-C-])</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-clear_002ddisplay-_0028M_002dC_002dl_0029"><code>clear-display (M-C-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-clear_002dscreen-_0028C_002dl_0029"><code>clear-screen (C-l)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-complete-_0028TAB_0029"><code>complete (<span class="key">TAB</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-complete_002dcommand-_0028M_002d_0021_0029"><code>complete-command (M-!)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
@@ -15327,7 +15436,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-copy_002dforward_002dword-_0028_0029"><code>copy-forward-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-copy_002dregion_002das_002dkill-_0028_0029"><code>copy-region-as-kill ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-D">D</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-dabbrev_002dexpand-_0028_0029"><code>dabbrev-expand ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-delete_002dchar-_0028C_002dd_0029"><code>delete-char (C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-delete_002dchar_002dor_002dlist-_0028_0029"><code>delete-char-or-list ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
@@ -15341,7 +15450,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-dump_002dvariables-_0028_0029"><code>dump-variables ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-dynamic_002dcomplete_002dhistory-_0028M_002dTAB_0029"><code>dynamic-complete-history (M-<span class="key">TAB</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-edit_002dand_002dexecute_002dcommand-_0028C_002dx-C_002de_0029"><code>edit-and-execute-command (C-x C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-end_002dkbd_002dmacro-_0028C_002dx-_0029_0029"><code>end-kbd-macro (C-x ))</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-end_002dof_002dfile-_0028usually-C_002dd_0029"><code><i>end-of-file</i> (usually C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
@@ -15349,18 +15458,18 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-end_002dof_002dline-_0028C_002de_0029"><code>end-of-line (C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"><code>exchange-point-and-mark (C-x C-x)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dbackward_002ddelete_002dchar-_0028_0029"><code>forward-backward-delete-char ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dchar-_0028C_002df_0029"><code>forward-char (C-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dsearch_002dhistory-_0028C_002ds_0029"><code>forward-search-history (C-s)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-forward_002dword-_0028M_002df_0029"><code>forward-word (M-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-G">G</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-G">G</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-glob_002dcomplete_002dword-_0028M_002dg_0029"><code>glob-complete-word (M-g)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-glob_002dexpand_002dword-_0028C_002dx-_002a_0029"><code>glob-expand-word (C-x *)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-glob_002dlist_002dexpansions-_0028C_002dx-g_0029"><code>glob-list-expansions (C-x g)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-H">H</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-H">H</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-history_002dand_002dalias_002dexpand_002dline-_0028_0029"><code>history-and-alias-expand-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history_002dexpand_002dline-_0028M_002d_005e_0029"><code>history-expand-line (M-^)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history_002dsearch_002dbackward-_0028_0029"><code>history-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
@@ -15368,33 +15477,33 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dbackward-_0028_0029"><code>history-substring-search-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history_002dsubstring_002dsearch_002dforward-_0028_0029"><code>history-substring-search-forward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-I">I</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-insert_002dcomment-_0028M_002d_0023_0029"><code>insert-comment (M-#)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-insert_002dcompletions-_0028M_002d_002a_0029"><code>insert-completions (M-*)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-insert_002dlast_002dargument-_0028M_002d_002e-or-M_002d_005f_0029"><code>insert-last-argument (M-. or M-_)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-K">K</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-K">K</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill_002dline-_0028C_002dk_0029"><code>kill-line (C-k)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill_002dregion-_0028_0029"><code>kill-region ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill_002dwhole_002dline-_0028_0029"><code>kill-whole-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill_002dword-_0028M_002dd_0029"><code>kill-word (M-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-M">M</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-M">M</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-magic_002dspace-_0028_0029"><code>magic-space ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete-_0028_0029"><code>menu-complete ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-menu_002dcomplete_002dbackward-_0028_0029"><code>menu-complete-backward ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-N">N</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-N">N</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-next_002dhistory-_0028C_002dn_0029"><code>next-history (C-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-next_002dscreen_002dline-_0028_0029"><code>next-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"><code>non-incremental-forward-search-history (M-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"><code>non-incremental-reverse-search-history (M-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-O">O</a></th><td></td><td></td></tr>
-<tr><td></td><td valign="top"><a href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"><code>operate-and-get-next (C-o)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
+<tr><th id="Function-Index_fn_letter-O">O</th><td></td><td></td></tr>
+<tr><td></td><td valign="top"><a href="#index-operate_002dand_002dget_002dnext-_0028C_002do_0029"><code>operate-and-get-next (C-o)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-overwrite_002dmode-_0028_0029"><code>overwrite-mode ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-P">P</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-P">P</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-possible_002dcommand_002dcompletions-_0028C_002dx-_0021_0029"><code>possible-command-completions (C-x !)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-possible_002dcompletions-_0028M_002d_003f_0029"><code>possible-completions (M-?)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-possible_002dfilename_002dcompletions-_0028C_002dx-_002f_0029"><code>possible-filename-completions (C-x /)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
@@ -15406,32 +15515,33 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-previous_002dscreen_002dline-_0028_0029"><code>previous-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"><code>print-last-kbd-macro ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-Q">Q</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-quoted_002dinsert-_0028C_002dq-or-C_002dv_0029"><code>quoted-insert (C-q or C-v)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-R">R</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-R">R</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-re_002dread_002dinit_002dfile-_0028C_002dx-C_002dr_0029"><code>re-read-init-file (C-x C-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-redraw_002dcurrent_002dline-_0028_0029"><code>redraw-current-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-reverse_002dsearch_002dhistory-_0028C_002dr_0029"><code>reverse-search-history (C-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-revert_002dline-_0028M_002dr_0029"><code>revert-line (M-r)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-S">S</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"><code>self-insert (a, b, A, 1, !, &hellip;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-set_002dmark-_0028C_002d_0040_0029"><code>set-mark (C-@)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dbackward_002dkill_002dword-_0028_0029"><code>shell-backward-kill-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell_002dbackward_002dword-_0028_0029"><code>shell-backward-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shell_002dbackward_002dword-_0028M_002dC_002db_0029"><code>shell-backward-word (M-C-b)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"><code>shell-expand-line (M-C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell_002dforward_002dword-_0028_0029"><code>shell-forward-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
-<tr><td></td><td valign="top"><a href="#index-shell_002dkill_002dword-_0028_0029"><code>shell-kill-word ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shell_002dforward_002dword-_0028M_002dC_002df_0029"><code>shell-forward-word (M-C-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"><code>shell-kill-word (M-C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"><code>shell-transpose-words (M-C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-skip_002dcsi_002dsequence-_0028_0029"><code>skip-csi-sequence ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"><code>start-kbd-macro (C-x ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-T">T</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-tilde_002dexpand-_0028M_002d_0026_0029"><code>tilde-expand (M-&amp;)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-transpose_002dchars-_0028C_002dt_0029"><code>transpose-chars (C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-transpose_002dwords-_0028M_002dt_0029"><code>transpose-words (M-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-U">U</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-U">U</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-undo-_0028C_002d_005f-or-C_002dx-C_002du_0029"><code>undo (C-_ or C-x C-u)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-universal_002dargument-_0028_0029"><code>universal-argument ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-unix_002dfilename_002drubout-_0028_0029"><code>unix-filename-rubout ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
@@ -15439,7 +15549,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-unix_002dword_002drubout-_0028C_002dw_0029"><code>unix-word-rubout (C-w)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-upcase_002dword-_0028M_002du_0029"><code>upcase-word (M-u)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Function-Index_fn_letter-Y">Y</a></th><td></td><td></td></tr>
+<tr><th id="Function-Index_fn_letter-Y">Y</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-yank-_0028C_002dy_0029"><code>yank (C-y)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-yank_002dlast_002darg-_0028M_002d_002e-or-M_002d_005f_0029"><code>yank-last-arg (M-. or M-_)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-yank_002dnth_002darg-_0028M_002dC_002dy_0029"><code>yank-nth-arg (M-C-y)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
@@ -15489,13 +15599,11 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
</td></tr></table>
<hr>
-<a name="Concept-Index"></a>
-<div class="header">
+<span id="Concept-Index"></span><div class="header">
<p>
Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>, Up: <a href="#Indexes" accesskey="u" rel="up">Indexes</a> &nbsp; [<a href="#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="#Indexes" title="Index" rel="index">Index</a>]</p>
</div>
-<a name="Concept-Index-1"></a>
-<h3 class="appendixsec">D.5 Concept Index</h3>
+<span id="Concept-Index-1"></span><h3 class="appendixsec">D.5 Concept Index</h3>
<table><tr><th valign="top">Jump to: &nbsp; </th><td><a class="summary-letter" href="#Concept-Index_cp_letter-A"><b>A</b></a>
&nbsp;
<a class="summary-letter" href="#Concept-Index_cp_letter-B"><b>B</b></a>
@@ -15544,14 +15652,14 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<table class="index-cp" border="0">
<tr><td></td><th align="left">Index Entry</th><td>&nbsp;</td><th align="left"> Section</th></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-A">A</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-A">A</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-alias-expansion">alias expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Aliases">Aliases</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-arithmetic-evaluation">arithmetic evaluation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Arithmetic">Shell Arithmetic</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-arithmetic-expansion">arithmetic expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arithmetic-Expansion">Arithmetic Expansion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-arithmetic_002c-shell">arithmetic, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Arithmetic">Shell Arithmetic</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-arrays">arrays</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Arrays">Arrays</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-B">B</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-B">B</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-background">background</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Basics">Job Control Basics</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-Bash-configuration">Bash configuration</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Installation">Basic Installation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-Bash-installation">Bash installation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Installation">Basic Installation</a></td></tr>
@@ -15559,7 +15667,7 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-brace-expansion">brace expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Brace-Expansion">Brace Expansion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-builtin-1">builtin</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-C">C</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-C">C</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-command-editing">command editing</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-command-execution">command execution</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Command-Search-and-Execution">Command Search and Execution</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-command-expansion">command expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Simple-Command-Expansion">Simple Command Expansion</a></td></tr>
@@ -15576,15 +15684,17 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-commands_002c-shell">commands, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Commands">Shell Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-commands_002c-simple">commands, simple</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Simple-Commands">Simple Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-comments_002c-shell">comments, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Comments">Comments</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Compatibility-Level">Compatibility Level</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-Compatibility-Mode">Compatibility Mode</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Compatibility-Mode">Shell Compatibility Mode</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-completion-builtins">completion builtins</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Programmable-Completion-Builtins">Programmable Completion Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-configuration">configuration</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Installation">Basic Installation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-control-operator">control operator</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-coprocess">coprocess</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Coprocesses">Coprocesses</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-D">D</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-D">D</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-directory-stack">directory stack</a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-Directory-Stack">The Directory Stack</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-E">E</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-E">E</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-editing-command-lines">editing command lines</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-environment">environment</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Environment">Environment</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-evaluation_002c-arithmetic">evaluation, arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Arithmetic">Shell Arithmetic</a></td></tr>
@@ -15602,21 +15712,21 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-expressions_002c-arithmetic">expressions, arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Arithmetic">Shell Arithmetic</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-expressions_002c-conditional">expressions, conditional</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Conditional-Expressions">Bash Conditional Expressions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-F">F</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-field">field</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-filename">filename</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-filename-expansion">filename expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Filename-Expansion">Filename Expansion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-foreground">foreground</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Basics">Job Control Basics</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-functions_002c-shell">functions, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Functions">Shell Functions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-H">H</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-H">H</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-history-builtins">history builtins</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-History-Builtins">Bash History Builtins</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history-events">history events</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Event-Designators">Event Designators</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history-expansion">history expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#History-Interaction">History Interaction</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-history-list">history list</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-History-Facilities">Bash History Facilities</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-History_002c-how-to-use">History, how to use</a>:</td><td>&nbsp;</td><td valign="top"><a href="#A-Programmable-Completion-Example">A Programmable Completion Example</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-I">I</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-I">I</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-identifier">identifier</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-initialization-file_002c-readline">initialization file, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File">Readline Init File</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-installation">installation</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Basic-Installation">Basic Installation</a></td></tr>
@@ -15625,32 +15735,32 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-interactive-shell-1">interactive shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Interactive-Shells">Interactive Shells</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-internationalization">internationalization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-J">J</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-J">J</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-job">job</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-job-control">job control</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-job-control-1">job control</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Basics">Job Control Basics</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-K">K</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-K">K</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-kill-ring">kill ring</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-killing-text">killing text</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-L">L</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-L">L</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-localization">localization</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-login-shell">login shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Invoking-Bash">Invoking Bash</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-M">M</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-M">M</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-matching_002c-pattern">matching, pattern</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Pattern-Matching">Pattern Matching</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-metacharacter">metacharacter</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-N">N</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-N">N</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-name">name</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-native-languages">native languages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-notation_002c-readline">notation, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Bare-Essentials">Readline Bare Essentials</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-O">O</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-O">O</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-operator_002c-shell">operator, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-P">P</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-P">P</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-parameter-expansion">parameter expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Parameter-Expansion">Shell Parameter Expansion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-parameters">parameters</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Parameters">Shell Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-parameters_002c-positional">parameters, positional</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Positional-Parameters">Positional Parameters</a></td></tr>
@@ -15666,18 +15776,19 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-programmable-completion">programmable completion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Programmable-Completion">Programmable Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-prompting">prompting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Controlling-the-Prompt">Controlling the Prompt</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-Q">Q</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-Q">Q</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-quoting">quoting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Quoting">Quoting</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-quoting_002c-ANSI">quoting, ANSI</a>:</td><td>&nbsp;</td><td valign="top"><a href="#ANSI_002dC-Quoting">ANSI-C Quoting</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-R">R</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-R">R</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-Readline_002c-how-to-use">Readline, how to use</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Variables">Job Control Variables</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-redirection">redirection</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Redirections">Redirections</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-reserved-word">reserved word</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
+<tr><td></td><td valign="top"><a href="#index-reserved-words">reserved words</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Reserved-Words">Reserved Words</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-restricted-shell">restricted shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#The-Restricted-Shell">The Restricted Shell</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-return-status">return status</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-S">S</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-S">S</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell-arithmetic">shell arithmetic</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Arithmetic">Shell Arithmetic</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell-function">shell function</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Functions">Shell Functions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell-script">shell script</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Scripts">Shell Scripts</a></td></tr>
@@ -15690,20 +15801,20 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
<tr><td></td><td valign="top"><a href="#index-startup-files">startup files</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Bash-Startup-Files">Bash Startup Files</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-suspending-jobs">suspending jobs</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Job-Control-Basics">Job Control Basics</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-T">T</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-T">T</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-tilde-expansion">tilde expansion</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Tilde-Expansion">Tilde Expansion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-token">token</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-translation_002c-native-languages">translation, native languages</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Locale-Translation">Locale Translation</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-V">V</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-V">V</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-variable_002c-shell">variable, shell</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Shell-Parameters">Shell Parameters</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-variables_002c-readline">variables, readline</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Init-File-Syntax">Readline Init File Syntax</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-W">W</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-W">W</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-word">word</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Definitions">Definitions</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-word-splitting">word splitting</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Word-Splitting">Word Splitting</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
-<tr><th><a name="Concept-Index_cp_letter-Y">Y</a></th><td></td><td></td></tr>
+<tr><th id="Concept-Index_cp_letter-Y">Y</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-yanking-text">yanking text</a>:</td><td>&nbsp;</td><td valign="top"><a href="#Readline-Killing-Commands">Readline Killing Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
</table>
diff --git a/doc/bashref.info b/doc/bashref.info
index 934c9feb..20ebf243 100644
--- a/doc/bashref.info
+++ b/doc/bashref.info
@@ -1,13 +1,13 @@
-This is bashref.info, produced by makeinfo version 6.5 from
+This is bashref.info, produced by makeinfo version 6.7 from
bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.0, 7 December 2018).
+Bash shell (version 5.1, 29 October 2020).
- This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.0.
+ This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.1.
- Copyright (C) 1988-2018 Free Software Foundation, Inc.
+ Copyright (C) 1988-2020 Free Software Foundation, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
@@ -27,11 +27,11 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.0, 7 December 2018). The Bash home page is
+Bash shell (version 5.1, 29 October 2020). The Bash home page is
<http://www.gnu.org/software/bash/>.
- This is Edition 5.0, last updated 7 December 2018, of 'The GNU Bash
-Reference Manual', for 'Bash', Version 5.0.
+ This is Edition 5.1, last updated 29 October 2020, of 'The GNU Bash
+Reference Manual', for 'Bash', Version 5.1.
Bash contains features that appear in other popular shells, and some
features that only appear in Bash. Some of the shells that Bash has
@@ -474,9 +474,13 @@ File: bashref.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoti
...................................
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.
+string to be translated according to the current locale. The GETTEXT
+infrastructure performs the message catalog lookup and translation,
+using the 'LC_MESSAGES' and 'TEXTDOMAIN' shell variables, as explained
+below. See the gettext documentation for additional details. If the
+current locale is 'C' or 'POSIX', or if there are no translations
+available, the dollar sign is ignored. If the string is translated and
+replaced, the replacement is double-quoted.
Some systems use the message catalog selected by the 'LC_MESSAGES'
shell variable. Others create the name of the message catalog from the
@@ -517,6 +521,7 @@ construct, or in some other grouping.
* Menu:
+* Reserved Words:: Words that have special meaning to the shell.
* Simple Commands:: The most common type of command.
* Pipelines:: Connecting the input and output of several
commands.
@@ -526,9 +531,30 @@ construct, or in some other grouping.
* GNU Parallel:: Running commands in parallel.

-File: bashref.info, Node: Simple Commands, Next: Pipelines, Up: Shell Commands
+File: bashref.info, Node: Reserved Words, Next: Simple Commands, Up: Shell Commands
-3.2.1 Simple Commands
+3.2.1 Reserved Words
+--------------------
+
+Reserved words are words that have special meaning to the shell. They
+are used to begin and end the shell's compound commands.
+
+ The following words are recognized as reserved when unquoted and the
+first word of a command (see below for exceptions):
+
+'if' 'then' 'elif' 'else' 'fi' 'time'
+'for' 'in' 'until' 'while' 'do' 'done'
+'case' 'esac' 'coproc''select''function'
+'{' '}' '[[' ']]' '!'
+
+'in' is recognized as a reserved word if it is the third word of a
+'case' or 'select' command. 'in' and 'do' are recognized as reserved
+words if they are the third word in a 'for' command.
+
+
+File: bashref.info, Node: Simple Commands, Next: Pipelines, Prev: Reserved Words, Up: Shell Commands
+
+3.2.2 Simple Commands
---------------------
A simple command is the kind of command encountered most often. It's
@@ -544,7 +570,7 @@ if the command was terminated by signal N.

File: bashref.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands
-3.2.2 Pipelines
+3.2.3 Pipelines
---------------
A 'pipeline' is a sequence of one or more commands separated by one of
@@ -604,7 +630,7 @@ the pipeline to terminate before returning a value.

File: bashref.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: Shell Commands
-3.2.3 Lists of Commands
+3.2.4 Lists of Commands
-----------------------
A 'list' is a sequence of one or more pipelines separated by one of the
@@ -652,7 +678,7 @@ command executed in the list.

File: bashref.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up: Shell Commands
-3.2.4 Compound Commands
+3.2.5 Compound Commands
-----------------------
* Menu:
@@ -678,7 +704,7 @@ mechanisms to group commands and execute them as a unit.

File: bashref.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Compound Commands
-3.2.4.1 Looping Constructs
+3.2.5.1 Looping Constructs
..........................
Bash supports the following looping constructs.
@@ -742,7 +768,7 @@ may be used to control loop execution.

File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Prev: Looping Constructs, Up: Compound Commands
-3.2.4.2 Conditional Constructs
+3.2.5.2 Conditional Constructs
..............................
'if'
@@ -815,7 +841,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
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.
+ associated COMMAND-LIST on a successful match, continuing the case
+ statement execution as if the pattern list had not matched.
The return status is zero if no PATTERN is matched. Otherwise, the
return status is the exit status of the COMMAND-LIST executed.
@@ -892,7 +919,8 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
An additional binary operator, '=~', is available, with the same
precedence as '==' and '!='. When it is used, the string to the
right of the operator is considered a POSIX extended regular
- expression and matched accordingly (as in regex3)). The return
+ expression and matched accordingly (using the POSIX 'regcomp' and
+ 'regexec' interfaces usually described in regex(3)). The return
value is 0 if the string matches the pattern, and 1 otherwise. If
the regular expression is syntactically incorrect, the conditional
expression's return value is 2. If the 'nocasematch' shell option
@@ -904,18 +932,24 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
normal quoting characters lose their meanings between brackets. If
the pattern is stored in a shell variable, quoting the variable
expansion forces the entire pattern to be matched as a string.
+
+ The pattern will match if it matches any part of the string.
+ Anchor the pattern using the '^' and '$' regular expression
+ operators to force it to match the entire string. The array
+ variable 'BASH_REMATCH' records which parts of the string matched
+ the pattern. The element of 'BASH_REMATCH' with index 0 contains
+ the portion of the string matching the entire regular expression.
Substrings matched by parenthesized subexpressions within the
- regular expression are saved in the 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.
+ regular expression are saved in the remaining 'BASH_REMATCH'
+ indices. The element of 'BASH_REMATCH' with index N is the portion
+ of the string matching the Nth parenthesized subexpression.
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 ]]
+ variable LINE) if there is a sequence of characters anywhere in the
+ value consisting of any number, including zero, of characters in
+ the 'space' character class, zero or one instances of 'a', then a
+ 'b':
+ [[ $line =~ [[:space:]]*(a)?b ]]
That means values like 'aab' and ' aaaaaab' will match, as will a
line containing a 'b' anywhere in its value.
@@ -928,7 +962,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre
to the shell's quote removal. Using a shell variable to store the
pattern decreases these problems. For example, the following is
equivalent to the above:
- pattern='[[:space:]]*?(a)b'
+ pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
If you want to match a character that's special to the regular
@@ -979,7 +1013,7 @@ File: bashref.info, Node: Conditional Constructs, Next: Command Grouping, Pre

File: bashref.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands
-3.2.4.3 Grouping Commands
+3.2.5.3 Grouping Commands
.........................
Bash provides two ways to group a list of commands to be executed as a
@@ -1016,7 +1050,7 @@ LIST.

File: bashref.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Commands, Up: Shell Commands
-3.2.5 Coprocesses
+3.2.6 Coprocesses
-----------------
A 'coprocess' is a shell command preceded by the 'coproc' reserved word.
@@ -1056,7 +1090,7 @@ coprocess is the exit status of COMMAND.

File: bashref.info, Node: GNU Parallel, Prev: Coprocesses, Up: Shell Commands
-3.2.6 GNU Parallel
+3.2.7 GNU Parallel
------------------
There are ways to run commands in parallel that are not built into Bash.
@@ -1082,21 +1116,27 @@ 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
+ printf '%s\n' * | parallel mv {} destdir
As you can see, the {} is replaced with each line read from standard
input. While using 'ls' will work in most instances, it is not
-sufficient to deal with all filenames. If you need to accommodate
-special characters in filenames, you can use
+sufficient to deal with all filenames. 'printf' is a shell builtin, and
+therefore is not subject to the kernel's limit on the number of
+arguments to a program, so you can use '*' (but see below about the
+'dotglob' shell option). If you need to accommodate special characters
+in filenames, you can use
- find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+ printf '%s\0' * | parallel -0 mv {} destdir
as alluded to above.
This will run as many 'mv' commands as there are files in the current
directory. You can emulate a parallel 'xargs' by adding the '-X'
option:
- find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
+ printf '%s\0' * | parallel -0 -X mv {} destdir
+
+ (You may have to modify the pattern if you have the 'dotglob' option
+enabled.)
GNU Parallel can replace certain common idioms that operate on lines
read from a file (in this case, filenames listed one per line):
@@ -1162,27 +1202,28 @@ 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 ]
+ FNAME () COMPOUND-COMMAND [ REDIRECTIONS ]
or
- function NAME [()] COMPOUND-COMMAND [ REDIRECTIONS ]
+ function FNAME [()] COMPOUND-COMMAND [ REDIRECTIONS ]
- This defines a shell function named NAME. The reserved word
+ This defines a shell function named FNAME. The reserved word
'function' is optional. If the 'function' reserved word is supplied,
the parentheses are optional. The BODY of the function is the compound
command COMPOUND-COMMAND (*note Compound Commands::). That command is
usually a LIST enclosed between { and }, but may be any compound command
listed above, with one exception: If the 'function' reserved word is
used, but the parentheses are not supplied, the braces are required.
-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::).
+COMPOUND-COMMAND is executed whenever FNAME is specified as the name of
+a command. When the shell is in POSIX mode (*note Bash POSIX Mode::),
+FNAME must be a valid shell NAME and may not be the same as one of the
+special builtins (*note Special Builtins::). In default mode, a
+function name can be any unquoted shell word that does not contain '$'.
+Any redirections (*note Redirections::) associated with the shell
+function are performed when the function is executed. A function
+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.
@@ -1409,7 +1450,7 @@ only be referenced; assignment to them is not allowed.
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
+ filename 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
@@ -1465,16 +1506,6 @@ only be referenced; assignment to them is not allowed.
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 simple command executed in the
- foreground, 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
@@ -1576,7 +1607,7 @@ expression. Any incorrectly formed brace expansion is left unchanged.
A { or ',' may be quoted with a backslash to prevent its being
considered part of a brace expression. To avoid conflicts with
parameter expansion, the string '${' is not considered eligible for
-brace expansion, and inhibits brace expansion until the closing '}'..
+brace expansion, and inhibits brace expansion until the closing '}'.
This construct is typically used as shorthand when the common prefix
of the strings to be generated is longer than in the above example:
@@ -1852,7 +1883,7 @@ omitted, the operator tests only for existence.
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, '$0' is
prefixed to the list.
'${!PREFIX*}'
@@ -1898,15 +1929,15 @@ omitted, the operator tests only for existence.
'${PARAMETER%%WORD}'
The WORD is expanded to produce a pattern and matched according to
the rules described below (*note Pattern Matching::). If the
- pattern matches If the pattern matches a trailing portion of the
- expanded value of PARAMETER, then the result of the expansion is
- the value of PARAMETER with the shortest matching pattern (the '%'
- case) or the longest matching pattern (the '%%' case) deleted. If
- 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.
+ 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}'
@@ -1957,6 +1988,16 @@ omitted, the operator tests only for existence.
or information about PARAMETER itself, depending on the value of
OPERATOR. Each OPERATOR is a single letter:
+ 'U'
+ The expansion is a string that is the value of PARAMETER with
+ lowercase alphabetic characters converted to uppercase.
+ 'u'
+ The expansion is a string that is the value of PARAMETER with
+ the first character converted to uppercase, if it is
+ alphabetic.
+ 'L'
+ The expansion is a string that is the value of PARAMETER with
+ uppercase alphabetic characters converted to lowercase.
'Q'
The expansion is a string that is the value of PARAMETER
quoted in a format that can be reused as input.
@@ -1972,6 +2013,11 @@ omitted, the operator tests only for existence.
The expansion is a string in the form of an assignment
statement or 'declare' command that, if evaluated, will
recreate PARAMETER with its attributes and value.
+ 'K'
+ Produces a possibly-quoted version of the value of PARAMETER,
+ except that it prints the values of indexed and associative
+ arrays as a sequence of quoted key-value pairs (*note
+ Arrays::).
'a'
The expansion is a string consisting of flag values
representing PARAMETER's attributes.
@@ -1983,7 +2029,7 @@ omitted, the operator tests only for existence.
and the expansion is the resultant list.
The result of the expansion is subject to word splitting and
- pathname expansion as described below.
+ filename expansion as described below.

File: bashref.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions
@@ -2116,15 +2162,16 @@ File: bashref.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word
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.
+If one of these characters appears, and is not quoted, 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
@@ -2275,7 +2322,7 @@ file descriptor greater than 10 and assign it to {VARNAME}. If >&- or
<&- is preceded by {VARNAME}, the value of VARNAME defines the file
descriptor to close. If {VARNAME} is supplied, the redirection persists
beyond the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor's lifetime manually.
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is '<', the
@@ -2440,7 +2487,7 @@ A variant of here documents, the format is:
[N]<<< WORD
The WORD undergoes tilde expansion, parameter and variable expansion,
-command substitution, arithmetic expansion, and quote removal. Pathname
+command substitution, arithmetic expansion, and quote removal. Filename
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).
@@ -2517,7 +2564,8 @@ File: bashref.info, Node: Simple Command Expansion, Next: Command Search and E
------------------------------
When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in the
+following order.
1. The words that the parser has marked as variable assignments (those
preceding the command name) and redirections are saved for later
@@ -2824,20 +2872,28 @@ of commands remembered by the parent (see the description of 'hash' in
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.
+interpreter for the program and, depending on the operating system, one
+or more optional arguments for that interpreter. 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
+ The arguments to the interpreter consist of one or more optional
+arguments 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.
+the arguments supplied to the script. The details of how the
+interpreter line is split into an interpreter name and a set of
+arguments vary across systems. 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 a single argument
+to a maximum of 32 characters, so it's not portable to assume that using
+more than one argument will work.
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.
+interpret the script, even if it is executed under another shell. It's
+a common idiom to use 'env' to find 'bash' even if it's been installed
+in another directory: '#!/usr/bin/env bash' will find the first
+occurrence of 'bash' in '$PATH'.

File: bashref.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: Basic Shell Features, Up: Top
@@ -3028,7 +3084,7 @@ standard.
supplied with a name that is not a shell function.
'getopts'
- getopts OPTSTRING NAME [ARGS]
+ getopts OPTSTRING NAME [ARG ...]
'getopts' is used by shell scripts to parse positional parameters.
OPTSTRING contains the option characters to be recognized; if a
@@ -3050,7 +3106,8 @@ standard.
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.
+ arguments are supplied as ARG values, '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
@@ -3145,12 +3202,12 @@ standard.
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.
+ Parameters represented by the numbers '$#' down to '$#'-N+1 are
+ unset. N must be a non-negative number less than or equal to '$#'.
+ If N is 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'
'['
@@ -3316,9 +3373,11 @@ standard.
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.
+ is no variable by that name, a function with that name, if any, is
+ unset. Readonly variables and functions may not be unset. Some
+ shell variables lose their special behavior if they are unset; such
+ behavior is noted in the description of the individual variables.
+ The return status is zero unless a NAME is readonly.

File: bashref.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands
@@ -3409,10 +3468,12 @@ standard.
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.
+ buffer and the 'READLINE_POINT' and 'READLINE_MARK' variables
+ to the current location of the insertion point and the saved
+ insertion point (the MARK), respectively. If the executed
+ command changes the value of any of 'READLINE_LINE',
+ 'READLINE_POINT', or 'READLINE_MARK', those new values will be
+ reflected in the editing state.
'-X'
List all key sequences bound to shell commands and the
@@ -3468,7 +3529,7 @@ standard.
non-zero if not.
'declare'
- declare [-aAfFgilnrtux] [-p] [NAME[=VALUE] ...]
+ declare [-aAfFgiIlnrtux] [-p] [NAME[=VALUE] ...]
Declare variables and give them attributes. If no NAMEs are given,
then display the values of variables instead.
@@ -3494,6 +3555,11 @@ standard.
global scope, even when 'declare' is executed in a shell function.
It is ignored in all other cases.
+ The '-I' option causes local variables to inherit the attributes
+ (except the NAMEREF attribute) and value of any existing variable
+ with the same NAME at a surrounding scope. If there is no existing
+ variable, the local variable is initially unset.
+
The following options can be used to restrict output to variables
with the specified attributes or to give variables attributes:
@@ -3680,9 +3746,11 @@ standard.
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.
+ their original values when the function returns. The restore is
+ effected as if a series of 'set' commands were executed to restore
+ the values that were in place before the function. 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]
@@ -3768,6 +3836,11 @@ standard.
conversion behaves as if -1 had been given. This is an
exception to the usual 'printf' behavior.
+ The %b, %q, and %T directives all use the field width and precision
+ arguments from the format specification and write that many bytes
+ from (or use that wide a field for) the expanded argument, which
+ usually contains more characters than the original.
+
Arguments to non-string format specifiers are treated as C 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
@@ -3795,13 +3868,7 @@ standard.
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'.
+ next character read and for line continuation.
Options, if supplied, have the following meanings:
@@ -3866,13 +3933,21 @@ standard.
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
+ read any data. The exit status is 0 if input is available on
the specified file descriptor, non-zero otherwise. The exit
status is greater than 128 if the timeout is exceeded.
'-u FD'
Read input from file descriptor FD.
+ If no NAMEs are supplied, the line read, without the ending
+ delimiter but otherwise unmodified, 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'.
+
'readarray'
readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT]
[-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY]
@@ -3926,7 +4001,8 @@ standard.
shell. It is a synonym for the 'declare' builtin command.
'ulimit'
- ulimit [-HSabcdefiklmnpqrstuvxPT] [LIMIT]
+ ulimit [-HS] -a
+ ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [LIMIT]
'ulimit' provides control over the resources available to processes
started by the shell, on systems that allow such control. If an
@@ -3939,7 +4015,7 @@ standard.
Change and report the hard limit associated with a resource.
'-a'
- All current limits are reported.
+ All current limits are reported; no limits are set.
'-b'
The maximum socket buffer size.
@@ -4002,6 +4078,10 @@ standard.
'-P'
The maximum number of pseudoterminals.
+ '-R'
+ The maximum time a real-time process can run before blocking,
+ in microseconds.
+
'-T'
The maximum number of threads.
@@ -4012,14 +4092,16 @@ standard.
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.
+ printed, unless the '-H' option is supplied. When more than one
+ resource is specified, the limit name and unit, if appropriate, are
+ printed before the value. 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; '-R', which is in
+ microseconds; '-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.
@@ -4424,57 +4506,14 @@ This builtin allows you to change additional shell optional behavior.
(*note Bash History Facilities::).
'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).
-
'compat44'
- If set, Bash saves the positional parameters to BASH_ARGV and
- BASH_ARGC before they are used, regardless of whether or not
- extended debugging mode is enabled.
+ These control aspects of the shell's compatibility mode (*note
+ Shell Compatibility Mode::).
'complete_fullquote'
If set, Bash quotes all shell metacharacters in filenames and
@@ -4518,10 +4557,10 @@ This builtin allows you to change additional shell optional behavior.
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:
+ If set at shell invocation, or in a shell startup file,
+ 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
@@ -4714,11 +4753,6 @@ This builtin allows you to change additional shell optional behavior.
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: bashref.info, Node: Special Builtins, Prev: Modifying Shell Behavior, Up: Shell Builtin Commands
@@ -4832,6 +4866,16 @@ normally treat them specially.
variables for controlling the job control facilities (*note Job Control
Variables::).
+'_'
+ ($_, an underscore.) At shell startup, set to the 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 simple command executed in the foreground,
+ 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.
+
'BASH'
The full pathname used to execute the current instance of Bash.
@@ -4905,22 +4949,25 @@ Variables::).
'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.
+ which case it is the command executing at the time of the trap. If
+ 'BASH_COMMAND' is unset, it loses its special properties, even if
+ it is subsequently reset.
'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.
+ Shell Compatibility Mode::, 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 values correspond to the
+ compatibility levels described below (*note Shell Compatibility
+ Mode::). For example, 4.2 and 42 are valid values that correspond
+ to the 'compat42' 'shopt' option and set the compatibility level to
+ 42. The current version is also a valid value.
'BASH_ENV'
If this variable is set when Bash is invoked to execute a shell
@@ -4949,7 +4996,7 @@ Variables::).
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.
+ subexpression.
'BASH_SOURCE'
An array variable whose members are the source filenames where the
@@ -4961,7 +5008,8 @@ Variables::).
'BASH_SUBSHELL'
Incremented by one within each subshell or subshell environment
when the shell begins executing in that environment. The initial
- value is 0.
+ value is 0. If 'BASH_SUBSHELL' is unset, it loses its special
+ properties, even if it is subsequently reset.
'BASH_VERSINFO'
A readonly array variable (*note Arrays::) whose members hold
@@ -5085,8 +5133,9 @@ Variables::).
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::).
+ Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
+ Files::) when an interactive shell is invoked in POSIX Mode (*note
+ Bash POSIX Mode::).
'EPOCHREALTIME'
Each time this parameter is referenced, it expands to the number of
@@ -5182,8 +5231,9 @@ Variables::).
'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.
+ command. Assignments to 'HISTCMD' are ignored. 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
@@ -5322,7 +5372,8 @@ Variables::).
'LINENO'
The line number in the script or shell function currently
- executing.
+ executing. If 'LINENO' is unset, it loses its special properties,
+ even if it is subsequently reset.
'LINES'
Used by the 'select' command to determine the column length for
@@ -5376,8 +5427,10 @@ Variables::).
readonly.
'PROMPT_COMMAND'
- If set, the value is interpreted as a command to execute before the
- printing of each primary prompt ('$PS1').
+ If this variable is set, and is an array, the value of each set
+ element is interpreted as a command to execute before printing the
+ primary prompt ('$PS1'). If this is set but not an array variable,
+ its value is used as a command to execute instead.
'PROMPT_DIRTRIM'
If set to a number greater than zero, the value is used as the
@@ -5386,7 +5439,7 @@ Variables::).
Prompt::). Characters removed are replaced with an ellipsis.
'PS0'
- The value of this parameter is expanded like PS1 and displayed by
+ The value of this parameter is expanded like 'PS1' and displayed by
interactive shells after reading a command and before the command
is executed.
@@ -5407,14 +5460,21 @@ Variables::).
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.
+ Each time this parameter is referenced, it expands to a random
+ integer between 0 and 32767. Assigning a value to this variable
+ seeds the random number generator. If 'RANDOM' is unset, it loses
+ its special properties, even if it is subsequently reset.
'READLINE_LINE'
The contents of the Readline line buffer, for use with 'bind -x'
(*note Bash Builtins::).
+'READLINE_MARK'
+ The position of the MARK (saved insertion point) in the Readline
+ line buffer, for use with 'bind -x' (*note Bash Builtins::). The
+ characters between the insertion point and the mark are often
+ called the REGION.
+
'READLINE_POINT'
The position of the insertion point in the Readline line buffer,
for use with 'bind -x' (*note Bash Builtins::).
@@ -5426,12 +5486,15 @@ Variables::).
This variable expands to the number of seconds since the shell was
started. Assignment to this variable resets the count to the value
assigned, and the expanded value becomes the value assigned plus
- the number of seconds since the assignment.
+ the number of seconds since the assignment. The number of seconds
+ at shell invocation and the current time is always determined by
+ querying the system clock. If 'SECONDS' is unset, it loses its
+ special properties, even if it is subsequently reset.
'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.
+ This environment variable expands to the full pathname to the
+ shell. If it is not set when the shell starts, Bash assigns to it
+ the full pathname of the current user's login shell.
'SHELLOPTS'
A colon-separated list of enabled shell options. Each word in the
@@ -5447,6 +5510,15 @@ Variables::).
This is intended to be a count of how deeply your Bash shells are
nested.
+'SRANDOM'
+ This variable expands to a 32-bit pseudo-random number each time it
+ is referenced. The random number generator is not linear on
+ systems that support '/dev/urandom' or 'arc4random', so each
+ returned number has no relationship to the numbers preceding it.
+ The random number generator cannot be seeded, so assignments to
+ this variable have no effect. If 'SRANDOM' is unset, it loses its
+ special properties, even if it is subsequently reset.
+
'TIMEFORMAT'
The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the 'time'
@@ -5529,6 +5601,8 @@ This chapter describes features unique to Bash.
* The Restricted Shell:: A more controlled mode of shell execution.
* Bash POSIX Mode:: Making Bash behave more closely to what
the POSIX standard specifies.
+* Shell Compatibility Mode:: How Bash supports behavior that was present
+ in earlier versions and has changed.

File: bashref.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Features
@@ -5866,9 +5940,9 @@ several ways.
See *note Controlling the Prompt::, for a complete list of prompt
string escape sequences.
- 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
- command before printing the primary prompt, '$PS1' (*note Bash
- Variables::).
+ 4. Bash executes the values of the set elements of the
+ 'PROMPT_COMMANDS' array variable as commands 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.
@@ -6158,15 +6232,17 @@ 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.
+ Integer constants follow the C language definition, without suffixes
+or character constants. 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, if a non-digit is required, the digits greater than 9 are
+represented by the lowercase letters, the uppercase letters, '@', and
+'_', in that order. If 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
@@ -6251,7 +6327,7 @@ The syntax
is also accepted; the SUBSCRIPT is ignored.
Associative arrays are created using
- declare -A NAME.
+ 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
@@ -6259,13 +6335,24 @@ 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 may be 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.
+ Each VALUE in the list undergoes all the shell expansions described
+above (*note Shell Expansions::).
+
+ When assigning to an associative array, the words in a compound
+assignment may be either assignment statements, for which the subscript
+is required, or a list of words that is interpreted as a sequence of
+alternating keys and values: NAME=(KEY1 VALUE1 KEY2 VALUE2 ... ). These
+are treated identically to NAME=( [KEY1]=VALUE1 [KEY2]=VALUE2 ... ).
+The first word in the list determines how the remaining words are
+interpreted; all assignments in a list must be of the same type. When
+using key/value pairs, the keys may not be missing or empty; a final
+missing value is treated like the empty string.
This syntax is also accepted by the 'declare' builtin. Individual
array elements may be assigned to using the 'NAME[SUBSCRIPT]=VALUE'
@@ -6436,10 +6523,10 @@ 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
-non-null value, then the value is executed just as if it had been typed
-on the command line.
+Bash examines the value of the array variable 'PROMPT_COMMANDS' just
+before printing each primary prompt. If any elements in
+'PROMPT_COMMANDS' are set and non-null, Bash executes each value, in
+numeric order, just as if it had been typed on the command line.
In addition, the following table describes the special characters
which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
@@ -6513,7 +6600,9 @@ 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 The Shopt
-Builtin::).
+Builtin::). This can have unwanted side effects if escaped portions of
+the string appear within command substitution or contain characters
+special to word expansion.

File: bashref.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features
@@ -6528,11 +6617,13 @@ 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.
+ * Setting or unsetting the values of the 'SHELL', 'PATH', 'HISTFILE',
+ '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
+ 'history' 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
@@ -6555,8 +6646,20 @@ with the exception that the following are disallowed or not performed:
Shell Scripts::), 'rbash' turns off any restrictions in the shell
spawned to execute the script.
+ The restricted shell mode is only one component of a useful
+restricted environment. It should be accompanied by setting 'PATH' to a
+value that allows execution of only a few verified commands (commands
+that allow shell escapes are particularly vulnerable), leaving the user
+in a non-writable directory other than his home directory after login,
+not allowing the restricted shell to execute shell scripts, and cleaning
+the environment of variables that cause some commands to modify their
+behavior (e.g., 'VISUAL' or 'PAGER').
+
+ Modern systems provide more secure ways to implement a restricted
+environment, such as 'jails', 'zones', or 'containers'.
+

-File: bashref.info, Node: Bash POSIX Mode, Prev: The Restricted Shell, Up: Bash Features
+File: bashref.info, Node: Bash POSIX Mode, Next: Shell Compatibility Mode, Prev: The Restricted Shell, Up: Bash Features
6.11 Bash POSIX Mode
====================
@@ -6577,106 +6680,108 @@ startup files.
re-search '$PATH' to find the new location. This is also available
with 'shopt -s checkhash'.
- 3. The message printed by the job control code and builtins when a job
- exits with a non-zero status is 'Done(status)'.
+ 3. Bash will not insert a command without the execute bit set into the
+ command hash table, even if it returns it as a (last-ditch) result
+ from a '$PATH' search.
4. The message printed by the job control code and builtins when a job
+ exits with a non-zero status is 'Done(status)'.
+
+ 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'.
- 5. Alias expansion is always enabled, even in non-interactive shells.
+ 6. Alias expansion is always enabled, even in non-interactive shells.
- 6. Reserved words appearing in a context where reserved words are
+ 7. Reserved words appearing in a context where reserved words are
recognized do not undergo alias expansion.
- 7. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number
+ 8. 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.
- 8. The POSIX startup files are executed ('$ENV') rather than the
+ 9. The POSIX startup files are executed ('$ENV') rather than the
normal Bash files.
- 9. Tilde expansion is only performed on assignments preceding a
+ 10. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
- 10. The default history file is '~/.sh_history' (this is the default
+ 11. The default history file is '~/.sh_history' (this is the default
value of '$HISTFILE').
- 11. Redirection operators do not perform filename expansion on the
+ 12. Redirection operators do not perform filename expansion on the
word in the redirection unless the shell is interactive.
- 12. Redirection operators do not perform word splitting on the word in
+ 13. Redirection operators do not perform word splitting on the word in
the redirection.
- 13. Function names must be valid shell 'name's. That is, they may not
+ 14. 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.
- 14. Function names may not be the same as one of the POSIX special
+ 15. Function names may not be the same as one of the POSIX special
builtins.
- 15. POSIX special builtins are found before shell functions during
+ 16. POSIX special builtins are found before shell functions during
command lookup.
- 16. When printing shell function definitions (e.g., by 'type'), Bash
+ 17. When printing shell function definitions (e.g., by 'type'), Bash
does not print the 'function' keyword.
- 17. Literal tildes that appear as the first character in elements of
+ 18. Literal tildes that appear as the first character in elements of
the 'PATH' variable are not expanded as described above under *note
Tilde Expansion::.
- 18. The 'time' reserved word may be used by itself as a command. When
+ 19. 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.
- 19. When parsing and expanding a ${...} expansion that appears within
+ 20. 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.
- 20. The parser does not recognize 'time' as a reserved word if the
+ 21. The parser does not recognize 'time' as a reserved word if the
next token begins with a '-'.
- 21. The '!' character does not introduce history expansion within a
+ 22. The '!' character does not introduce history expansion within a
double-quoted string, even if the 'histexpand' option is enabled.
- 22. If a POSIX special builtin returns an error status, a
+ 23. 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.
- 23. A non-interactive shell exits with an error status if a variable
+ 24. A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements. A variable assignment error occurs, for example, when
trying to assign a value to a readonly variable.
- 24. A non-interactive shell exits with an error status if a variable
+ 25. 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.
- 25. A non-interactive shell exits with an error status if the
+ 26. 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.
- 26. Non-interactive shells exit if FILENAME in '.' FILENAME is not
+ 27. Non-interactive shells exit if FILENAME in '.' FILENAME is not
found.
- 27. Non-interactive shells exit if a syntax error in an arithmetic
+ 28. Non-interactive shells exit if a syntax error in an arithmetic
expansion results in an invalid expression.
- 28. Non-interactive shells exit if a parameter expansion error occurs.
+ 29. Non-interactive shells exit if a parameter expansion error occurs.
- 29. Non-interactive shells exit if there is a syntax error in a script
+ 30. 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.
- 30. Process substitution is not available.
-
31. While variable indirection is available, it may not be applied to
the '#' and '?' special parameters.
@@ -6687,39 +6792,38 @@ startup files.
33. Assignment statements preceding POSIX special builtins persist in
the shell environment after the builtin completes.
- 34. 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.
-
- 35. The 'command' builtin does not prevent builtins that take
+ 34. The 'command' builtin does not prevent builtins that take
assignment statements as arguments from expanding them as
assignment statements; when not in POSIX mode, assignment builtins
lose their assignment statement expansion properties when preceded
by 'command'.
- 36. The 'bg' builtin uses the required format to describe each job
+ 35. The 'bg' builtin uses the required format to describe each job
placed in the background, which does not include an indication of
whether the job is the current or previous job.
- 37. The output of 'kill -l' prints all the signal names on a single
+ 36. The output of 'kill -l' prints all the signal names on a single
line, separated by spaces, without the 'SIG' prefix.
- 38. The 'kill' builtin does not accept signal names with a 'SIG'
+ 37. The 'kill' builtin does not accept signal names with a 'SIG'
prefix.
- 39. The 'export' and 'readonly' builtin commands display their output
+ 38. The 'export' and 'readonly' builtin commands display their output
in the format required by POSIX.
- 40. The 'trap' builtin displays signal names without the leading
+ 39. The 'trap' builtin displays signal names without the leading
'SIG'.
- 41. 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.
+ 41. 'trap -p' displays signals whose dispositions are set to SIG_DFL
+ and those that were ignored when the shell started.
+
42. The '.' and 'source' builtins do not search the current directory
for the filename argument if it is not found by searching 'PATH'.
@@ -6806,6 +6910,137 @@ specifying the '--enable-strict-posix-default' to 'configure' when
building (*note Optional Features::).

+File: bashref.info, Node: Shell Compatibility Mode, Prev: Bash POSIX Mode, Up: Bash Features
+
+6.12 Shell Compatibility Mode
+=============================
+
+Bash-4.0 introduced the concept of a 'shell compatibility level',
+specified as a set of options to the shopt builtin ('compat31',
+'compat32', 'compat40', 'compat41', and so on). There is only one
+current compatibility level - each option is mutually exclusive. The
+compatibility level is intended to allow users to select behavior from
+previous versions that is incompatible with newer versions while they
+migrate scripts to use current features and behavior. It's intended to
+be a temporary solution.
+
+ This section does not mention behavior that is standard for a
+particular version (e.g., setting 'compat32' means that quoting the rhs
+of the regexp matching operator quotes special regexp characters in the
+word, which is default behavior in bash-3.2 and above).
+
+ If a user enables, say, 'compat32', it may affect the behavior of
+other compatibility levels up to and including the current compatibility
+level. The idea is that each compatibility level controls behavior that
+changed in that version of Bash, but that behavior may have been present
+in earlier versions. For instance, the change to use locale-based
+comparisons with the '[[' command came in bash-4.1, and earlier versions
+used ASCII-based comparisons, so enabling 'compat32' will enable
+ASCII-based comparisons as well. That granularity may not be sufficient
+for all uses, and as a result users should employ compatibility levels
+carefully. Read the documentation for a particular feature to find out
+the current behavior.
+
+ Bash-4.3 introduced a new shell variable: 'BASH_COMPAT'. The value
+assigned to this variable (a decimal version number like 4.2, or an
+integer corresponding to the 'compat'NN option, like 42) determines the
+compatibility level.
+
+ Starting with bash-4.4, Bash has begun deprecating older
+compatibility levels. Eventually, the options will be removed in favor
+of 'BASH_COMPAT'.
+
+ Bash-5.0 is the final version for which there will be an individual
+shopt option for the previous version. Users should use 'BASH_COMPAT'
+on bash-5.0 and later versions.
+
+ The following table describes the behavior changes controlled by each
+compatibility level setting. The 'compat'NN tag is used as shorthand
+for setting the compatibility level to NN using one of the following
+mechanisms. For versions prior to bash-5.0, the compatibility level may
+be set using the corresponding 'compat'NN shopt option. For bash-4.3
+and later versions, the 'BASH_COMPAT' variable is preferred, and it is
+required for bash-5.1 and later versions.
+
+'compat31'
+ * quoting the rhs of the '[[' command's regexp matching operator
+ (=~) has no special effect
+
+'compat32'
+ * interrupting a command list such as "a ; b ; c" causes the
+ execution of the next command in the list (in bash-4.0 and
+ later versions, the shell acts as if it received the
+ interrupt, so interrupting one command in a list aborts the
+ execution of the entire list)
+
+'compat40'
+ * the '<' and '>' operators to the '[[' command do not consider
+ the current locale when comparing strings; they use ASCII
+ ordering. Bash versions prior to bash-4.1 use ASCII collation
+ and strcmp(3); bash-4.1 and later use the current locale's
+ collation sequence and strcoll(3).
+
+'compat41'
+ * in posix mode, 'time' may be followed by options and still be
+ recognized as a reserved word (this is POSIX interpretation
+ 267)
+ * in posix mode, the parser requires that an even number of
+ single quotes occur in the WORD portion of a double-quoted
+ ${...} parameter expansion and treats them specially, so that
+ characters within the single quotes are considered quoted
+ (this is POSIX interpretation 221)
+
+'compat42'
+ * the replacement string in double-quoted pattern substitution
+ does not undergo quote removal, as it does in versions after
+ bash-4.2
+ * in posix mode, single quotes are considered special when
+ expanding the WORD portion of a double-quoted ${...} parameter
+ expansion and can be used to quote a closing brace or other
+ special character (this is part of POSIX interpretation 221);
+ in later versions, single quotes are not special within
+ double-quoted word expansions
+
+'compat43'
+ * the shell does not print a warning message if an attempt is
+ made to use a quoted compound assignment as an argument to
+ declare (declare -a foo='(1 2)'). Later versions warn that
+ this usage is deprecated
+ * word expansion errors are considered non-fatal errors that
+ cause the current command to fail, even in posix mode (the
+ default behavior is to make them fatal errors that cause the
+ shell to exit)
+ * when executing a shell function, the loop state
+ (while/until/etc.) is not reset, so 'break' or 'continue' in
+ that function will break or continue loops in the calling
+ context. Bash-4.4 and later reset the loop state to prevent
+ this
+
+'compat44'
+ * the shell sets up the values used by 'BASH_ARGV' and
+ 'BASH_ARGC' so they can expand to the shell's positional
+ parameters even if extended debugging mode is not enabled
+ * a subshell inherits loops from its parent context, so 'break'
+ or 'continue' will cause the subshell to exit. Bash-5.0 and
+ later reset the loop state to prevent the exit
+ * variable assignments preceding builtins like 'export' and
+ 'readonly' that set attributes continue to affect variables
+ with the same name in the calling environment even if the
+ shell is not in posix mode
+
+'compat50 (set using BASH_COMPAT)'
+ * Bash-5.1 changed the way '$RANDOM' is generated to introduce
+ slightly more randomness. If the shell compatibility level is
+ set to 50 or lower, it reverts to the method from bash-5.0 and
+ previous versions, so seeding the random number generator by
+ assigning a value to 'RANDOM' will produce the same sequence
+ as in bash-5.0
+ * If the command hash table is empty, Bash versions prior to
+ bash-5.1 printed an informational message to that effect, even
+ when producing output that can be reused as input. Bash-5.1
+ suppresses that message when the '-l' option is supplied.
+
+
File: bashref.info, Node: Job Control, Next: Command Line Editing, Prev: Bash Features, Up: Top
7 Job Control
@@ -6884,10 +7119,10 @@ 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 job whose command name begins with
+'ce'. 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
@@ -6911,8 +7146,8 @@ another warning, and any stopped jobs are terminated.
When the shell is waiting for a job or process using the 'wait'
builtin, and job control is enabled, 'wait' will return when the job
-changes state. The '-f' option will force 'wait' to wait until the job
-or process terminates before returning.
+changes state. The '-f' option causes 'wait' to wait until the job or
+process terminates before returning.

File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, Prev: Job Control Basics, Up: Job Control
@@ -6990,20 +7225,29 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables,
option is encountered.
'wait'
- wait [-fn] [JOBSPEC or PID ...]
+ wait [-fn] [-p VARNAME] [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 the '-f' option is
- supplied, and job control is enabled, 'wait' forces each PID or
- JOBSPEC to terminate before returning its status, intead of
- returning when it changes status. If neither JOBSPEC nor PID
- specifies an active child process of the shell, the return status
- is 127.
+ the job are waited for. If no arguments are given, 'wait' waits
+ for all running background jobs and the last-executed process
+ substitution, if its process id is the same as $!, and the return
+ status is zero. If the '-n' option is supplied, 'wait' waits for a
+ single job from the list of PIDS or JOBSPECS or, if no arguments
+ are supplied, any job, to complete and returns its exit status. If
+ none of the supplied arguments is a child of the shell, or if no
+ arguments are supplied and the shell has no unwaited-for children,
+ the exit status is 127. If the '-p' option is supplied, the
+ process or job identifier of the job for which the exit status is
+ returned is assigned to the variable VARNAME named by the option
+ argument. The variable will be unset initially, before any
+ assignment. This is useful only when the '-n' option is supplied.
+ Supplying the '-f' option, when job control is enabled, forces
+ 'wait' to wait for each PID or JOBSPEC to terminate before
+ returning its status, intead of returning when it changes 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 ... ]
@@ -7342,7 +7586,9 @@ 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'.
+ultimate default is '/etc/inputrc'. The 'bind' builtin command can also
+be used to set Readline keybindings and variables. *Note Bash
+Builtins::.
When a program which uses the Readline library starts up, the init
file is read, and the key bindings are set.
@@ -7459,11 +7705,11 @@ Variable Settings
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'.
+ than or equal to this value, Readline will ask whether or not
+ the user wishes to view them; otherwise, they are simply
+ listed. This variable must be set to an integer value greater
+ than or equal to 0. A negative value means Readline should
+ never ask. The default limit is '100'.
'convert-meta'
If set to 'on', Readline will convert characters with the
@@ -7505,7 +7751,7 @@ Variable Settings
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'.
+ editing commands. The default is 'On'.
'enable-keypad'
When set to 'on', Readline will try to enable the application
@@ -7542,7 +7788,9 @@ Variable Settings
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. This variable is automatically set to 'on'
+ for terminals of height 1. By default, this variable is set
+ to 'off'.
'input-meta'
If set to 'on', Readline will enable eight-bit input (it will
@@ -7988,8 +8236,8 @@ variable assignment, and conditional syntax.
# 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
+ # if there are 150 or more possible completions for a word,
+ # ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
@@ -8053,11 +8301,11 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up
Move back to the start of the current or previous word. Words are
composed of letters and digits.
-'shell-forward-word ()'
+'shell-forward-word (M-C-f)'
Move forward to the end of the next word. Words are delimited by
non-quoted shell metacharacters.
-'shell-backward-word ()'
+'shell-backward-word (M-C-b)'
Move back to the start of the current or previous word. Words are
delimited by non-quoted shell metacharacters.
@@ -8075,8 +8323,13 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
+'clear-display (M-C-l)'
+ Clear the screen and, if possible, the terminal's scrollback
+ buffer, then redraw the current line, leaving the current line at
+ the top of the screen.
+
'clear-screen (C-l)'
- Clear the screen and redraw the current line, leaving the current
+ Clear the screen, then redraw the current line, leaving the current
line at the top of the screen.
'redraw-current-line ()'
@@ -8112,10 +8365,14 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev
'reverse-search-history (C-r)'
Search backward starting at the current line and moving 'up'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
'forward-search-history (C-s)'
Search forward starting at the current line and moving 'down'
through the history as necessary. This is an incremental search.
+ This command sets the region to the matched text and activates the
+ mark.
'non-incremental-reverse-search-history (M-p)'
Search backward starting at the current line and moving 'up'
@@ -8174,6 +8431,13 @@ File: bashref.info, Node: Commands For History, Next: Commands For Text, Prev
history expansion facilities are used to extract the last argument,
as if the '!$' history expansion had been specified.
+'operate-and-get-next (C-o)'
+ Accept the current line for return to the calling application as if
+ a newline had been entered, and fetch the next line relative to the
+ current line from the history for editing. A numeric argument, if
+ supplied, specifies the history entry to use instead of the current
+ line.
+

File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands
@@ -8216,6 +8480,11 @@ File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev
was bound to 'self-insert' instead of executing any editing
commands.
+ Bracketed paste sets the region (the characters between point and
+ the mark) to the inserted text. It uses the concept of an _active
+ mark_: when the mark is active, Readline redisplay uses the
+ terminal's standout mode to denote the region.
+
'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
@@ -8260,10 +8529,14 @@ File: bashref.info, Node: Commands For Killing, Next: Numeric Arguments, Prev
-------------------------
'kill-line (C-k)'
- Kill the text from point to the end of the line.
+ Kill the text from point to the end of the line. With a negative
+ numeric argument, kill backward from the cursor to the beginning of
+ the current line.
'backward-kill-line (C-x Rubout)'
Kill backward from the cursor to the beginning of the current line.
+ With a negative numeric argument, kill forward from the cursor to
+ the end of the current line.
'unix-line-discard (C-u)'
Kill backward from the cursor to the beginning of the current line.
@@ -8281,7 +8554,7 @@ File: bashref.info, Node: Commands For Killing, Next: Numeric Arguments, Prev
Kill the word behind point. Word boundaries are the same as
'backward-word'.
-'shell-kill-word ()'
+'shell-kill-word (M-C-d)'
Kill from point to the end of the current word, or if between
words, to the end of the next word. Word boundaries are the same
as 'shell-forward-word'.
@@ -8290,6 +8563,13 @@ File: bashref.info, Node: Commands For Killing, Next: Numeric Arguments, Prev
Kill the word behind point. Word boundaries are the same as
'shell-backward-word'.
+'shell-transpose-words (M-C-t)'
+ Drag the word before point past the word after point, moving point
+ past that word as well. If the insertion point is at the end of
+ the line, this transposes the last two words on the line. Word
+ boundaries are the same as 'shell-forward-word' and
+ '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.
@@ -8611,12 +8891,6 @@ File: bashref.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up:
'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. A
- numeric argument, if supplied, specifies the history entry to use
- instead of the current line.
-
'edit-and-execute-command (C-x C-e)'
Invoke an editor on the current command line, and execute the
result as shell commands. Bash attempts to invoke '$VISUAL',
@@ -8829,8 +9103,8 @@ happening.
that other supplied options and actions should apply to "empty"
command completion; that is, completion attempted on a blank line.
The '-I' option indicates that other supplied options and actions
- should apply to completion on the inital non-assignment word on the
- line, or after a command delimiter such as ';' or '|', which is
+ should apply to completion on the initial non-assignment word on
+ the line, or after a command delimiter such as ';' or '|', which is
usually command name completion. If multiple options are supplied,
the '-D' option takes precedence over '-E', and both take
precedence over '-I'. If any of '-D', '-E', or '-I' are supplied,
@@ -9031,8 +9305,8 @@ happening.
'-E' option indicates that other supplied options should apply to
"empty" command completion; that is, completion attempted on a
blank line. The '-I' option indicates that other supplied options
- should apply to completion on the inital non-assignment word on the
- line, or after a command delimiter such as ';' or '|', which is
+ should apply to completion on the initial non-assignment word on
+ the line, or after a command delimiter such as ';' or '|', which is
usually command name completion.
If multiple options are supplied, the '-D' option takes precedence
@@ -9139,8 +9413,8 @@ 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.
+beginning with '$' or '${', 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.
@@ -9149,7 +9423,7 @@ we attempt word completion for a 'cd' command.
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
+project now lives at <https://github.com/scop/bash-completion/>. There
are ports for other systems such as Solaris and Mac OS X.
An older version of the bash_completion package is distributed with
@@ -9245,22 +9519,28 @@ history file.
FIRST and LAST may be specified as a string (to locate the most
recent command beginning with that string) or as a number (an index
into the history list, where a negative number is used as an offset
- from the current command number). If LAST is not specified, it is
- set to FIRST. If FIRST is not specified, it is set to the previous
- 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.
+ from the current command number).
+
+ When listing, a FIRST or LAST of 0 is equivalent to -1 and -0 is
+ equivalent to the current command (usually the 'fc' command);
+ otherwise 0 is equivalent to -1 and -0 is invalid.
+
+ 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.
+ interpreted 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
@@ -9433,11 +9713,13 @@ the current position in the history list.
'!?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.
+ omitted if the STRING is followed immediately by a newline. If
+ STRING is missing, the string from the most recent search is used;
+ it is an error if there is no previous search string.
'^STRING1^STRING2^'
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.
@@ -9484,7 +9766,8 @@ separated by single spaces.
The last argument.
'%'
- The word matched by the most recent '?STRING?' search.
+ The first word matched by the most recent '?STRING?' search, if the
+ search string begins with a character that is part of a word.
'X-Y'
A range of words; '-Y' abbreviates '0-Y'.
@@ -9498,7 +9781,8 @@ separated by single spaces.
Abbreviates 'X-$'
'X-'
- Abbreviates 'X-$' like 'X*', but omits the last word.
+ Abbreviates 'X-$' like 'X*', but omits the last word. If 'x' is
+ missing, it defaults to 0.
If a word designator is supplied without an event specification, the
previous command is used as the event.
@@ -9510,7 +9794,8 @@ 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 ':'. These modify,
+or edit, the word or words selected from the history event.
'h'
Remove a trailing pathname component, leaving only the head.
@@ -9533,15 +9818,19 @@ more of the following modifiers, each preceded by a ':'.
'x'
Quote the substituted words as with 'q', but break into words at
- spaces, tabs, and newlines.
+ spaces, tabs, and newlines. The 'q' and 'x' modifiers are mutually
+ exclusive; the last one supplied is used.
'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 character may be used as the delimiter 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 '&'. If OLD is null, it is set to the last OLD
+ substituted, or, if no previous history substitutions took place,
+ the last STRING in a !?STRING'[?]' search. If NEW is is null, each
+ matching OLD is deleted. The final delimiter is optional if it is
+ the last character on the input line.
'&'
Repeat the previous substitution.
@@ -9552,7 +9841,8 @@ more of the following modifiers, each preceded by a ':'.
conjunction with 's', as in 'gs/OLD/NEW/', or with '&'.
'G'
- Apply the following 's' modifier once to each word in the event.
+ Apply the following 's' or '&' modifier once to each word in the
+ event.

File: bashref.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top
@@ -10962,18 +11252,18 @@ D.1 Index of Shell Builtin Commands
* :: Bourne Shell Builtins.
(line 11)
* [: Bourne Shell Builtins.
- (line 269)
+ (line 270)
* 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)
+* builtin: Bash Builtins. (line 104)
+* caller: Bash Builtins. (line 113)
* cd: Bourne Shell Builtins.
(line 44)
-* command: Bash Builtins. (line 128)
+* command: Bash Builtins. (line 130)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
@@ -10982,13 +11272,13 @@ D.1 Index of Shell Builtin Commands
(line 237)
* continue: Bourne Shell Builtins.
(line 85)
-* declare: Bash Builtins. (line 148)
+* declare: Bash Builtins. (line 150)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
- (line 92)
-* echo: Bash Builtins. (line 246)
-* enable: Bash Builtins. (line 295)
+ (line 101)
+* echo: Bash Builtins. (line 253)
+* enable: Bash Builtins. (line 302)
* eval: Bourne Shell Builtins.
(line 94)
* exec: Bourne Shell Builtins.
@@ -11004,52 +11294,52 @@ D.1 Index of Shell Builtin Commands
* getopts: Bourne Shell Builtins.
(line 143)
* hash: Bourne Shell Builtins.
- (line 186)
-* help: Bash Builtins. (line 324)
+ (line 187)
+* help: Bash Builtins. (line 331)
* history: Bash History Builtins.
- (line 40)
+ (line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
-* let: Bash Builtins. (line 343)
-* local: Bash Builtins. (line 351)
-* logout: Bash Builtins. (line 365)
-* mapfile: Bash Builtins. (line 370)
+* let: Bash Builtins. (line 350)
+* local: Bash Builtins. (line 358)
+* logout: Bash Builtins. (line 374)
+* mapfile: Bash Builtins. (line 379)
* popd: Directory Stack Builtins.
(line 35)
-* printf: Bash Builtins. (line 416)
+* printf: Bash Builtins. (line 425)
* pushd: Directory Stack Builtins.
(line 53)
* pwd: Bourne Shell Builtins.
- (line 206)
-* read: Bash Builtins. (line 460)
-* readarray: Bash Builtins. (line 554)
+ (line 207)
+* read: Bash Builtins. (line 474)
+* readarray: Bash Builtins. (line 570)
* readonly: Bourne Shell Builtins.
- (line 216)
+ (line 217)
* return: Bourne Shell Builtins.
- (line 235)
+ (line 236)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
- (line 256)
+ (line 257)
* shopt: The Shopt Builtin. (line 9)
-* source: Bash Builtins. (line 563)
+* source: Bash Builtins. (line 579)
* suspend: Job Control Builtins.
- (line 104)
+ (line 113)
* test: Bourne Shell Builtins.
- (line 269)
+ (line 270)
* times: Bourne Shell Builtins.
- (line 348)
+ (line 349)
* trap: Bourne Shell Builtins.
- (line 354)
-* type: Bash Builtins. (line 568)
-* typeset: Bash Builtins. (line 600)
-* ulimit: Bash Builtins. (line 606)
+ (line 355)
+* type: Bash Builtins. (line 584)
+* typeset: Bash Builtins. (line 616)
+* ulimit: Bash Builtins. (line 622)
* umask: Bourne Shell Builtins.
- (line 403)
-* unalias: Bash Builtins. (line 705)
+ (line 404)
+* unalias: Bash Builtins. (line 728)
* unset: Bourne Shell Builtins.
- (line 421)
+ (line 422)
* wait: Job Control Builtins.
(line 76)
@@ -11064,9 +11354,9 @@ D.2 Index of Shell Reserved Words
* !: Pipelines. (line 9)
* [[: Conditional Constructs.
- (line 124)
+ (line 125)
* ]]: Conditional Constructs.
- (line 124)
+ (line 125)
* {: Command Grouping. (line 21)
* }: Command Grouping. (line 21)
* case: Conditional Constructs.
@@ -11088,7 +11378,7 @@ D.2 Index of Shell Reserved Words
* in: Conditional Constructs.
(line 28)
* select: Conditional Constructs.
- (line 82)
+ (line 83)
* then: Conditional Constructs.
(line 7)
* time: Pipelines. (line 9)
@@ -11115,35 +11405,35 @@ D.3 Parameter and Variable Index
* $0: Special Parameters. (line 62)
* $?: Special Parameters. (line 43)
* $@: Special Parameters. (line 23)
-* $_: Special Parameters. (line 71)
+* $_: Bash Variables. (line 14)
* *: Special Parameters. (line 9)
* -: Special Parameters. (line 46)
* 0: Special Parameters. (line 61)
* ?: Special Parameters. (line 42)
* @: Special Parameters. (line 22)
-* _: Special Parameters. (line 70)
+* _: Bash Variables. (line 13)
* 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 32)
-* BASH_ARGC: Bash Variables. (line 41)
-* BASH_ARGV: Bash Variables. (line 54)
-* BASH_ARGV0: Bash Variables. (line 66)
-* BASH_CMDS: Bash Variables. (line 74)
-* BASH_COMMAND: Bash Variables. (line 83)
-* BASH_COMPAT: Bash Variables. (line 88)
-* BASH_ENV: Bash Variables. (line 103)
-* BASH_EXECUTION_STRING: Bash Variables. (line 109)
-* BASH_LINENO: Bash Variables. (line 112)
-* BASH_LOADABLES_PATH: Bash Variables. (line 120)
-* BASH_REMATCH: Bash Variables. (line 124)
-* BASH_SOURCE: Bash Variables. (line 132)
-* BASH_SUBSHELL: Bash Variables. (line 139)
-* BASH_VERSINFO: Bash Variables. (line 144)
-* BASH_VERSION: Bash Variables. (line 167)
-* BASH_XTRACEFD: Bash Variables. (line 170)
+* BASH: Bash Variables. (line 23)
+* BASHOPTS: Bash Variables. (line 26)
+* BASHPID: Bash Variables. (line 35)
+* BASH_ALIASES: Bash Variables. (line 42)
+* BASH_ARGC: Bash Variables. (line 51)
+* BASH_ARGV: Bash Variables. (line 64)
+* BASH_ARGV0: Bash Variables. (line 76)
+* BASH_CMDS: Bash Variables. (line 84)
+* BASH_COMMAND: Bash Variables. (line 93)
+* BASH_COMPAT: Bash Variables. (line 100)
+* BASH_ENV: Bash Variables. (line 116)
+* BASH_EXECUTION_STRING: Bash Variables. (line 122)
+* BASH_LINENO: Bash Variables. (line 125)
+* BASH_LOADABLES_PATH: Bash Variables. (line 133)
+* BASH_REMATCH: Bash Variables. (line 137)
+* BASH_SOURCE: Bash Variables. (line 145)
+* BASH_SUBSHELL: Bash Variables. (line 152)
+* BASH_VERSINFO: Bash Variables. (line 158)
+* BASH_VERSION: Bash Variables. (line 181)
+* BASH_XTRACEFD: Bash Variables. (line 184)
* bell-style: Readline Init File Syntax.
(line 38)
* bind-tty-special-chars: Readline Init File Syntax.
@@ -11152,12 +11442,12 @@ D.3 Parameter and Variable Index
(line 50)
* CDPATH: Bourne Shell Variables.
(line 9)
-* CHILD_MAX: Bash Variables. (line 181)
+* CHILD_MAX: Bash Variables. (line 195)
* colored-completion-prefix: Readline Init File Syntax.
(line 55)
* colored-stats: Readline Init File Syntax.
(line 62)
-* COLUMNS: Bash Variables. (line 188)
+* COLUMNS: Bash Variables. (line 202)
* comment-begin: Readline Init File Syntax.
(line 68)
* completion-display-width: Readline Init File Syntax.
@@ -11170,157 +11460,159 @@ D.3 Parameter and Variable Index
(line 91)
* completion-query-items: Readline Init File Syntax.
(line 98)
-* COMPREPLY: Bash Variables. (line 240)
-* COMP_CWORD: Bash Variables. (line 194)
-* COMP_KEY: Bash Variables. (line 223)
-* COMP_LINE: Bash Variables. (line 200)
-* COMP_POINT: Bash Variables. (line 205)
-* COMP_TYPE: Bash Variables. (line 213)
-* COMP_WORDBREAKS: Bash Variables. (line 227)
-* COMP_WORDS: Bash Variables. (line 233)
+* COMPREPLY: Bash Variables. (line 254)
+* COMP_CWORD: Bash Variables. (line 208)
+* COMP_KEY: Bash Variables. (line 237)
+* COMP_LINE: Bash Variables. (line 214)
+* COMP_POINT: Bash Variables. (line 219)
+* COMP_TYPE: Bash Variables. (line 227)
+* COMP_WORDBREAKS: Bash Variables. (line 241)
+* COMP_WORDS: Bash Variables. (line 247)
* convert-meta: Readline Init File Syntax.
(line 108)
-* COPROC: Bash Variables. (line 246)
-* DIRSTACK: Bash Variables. (line 250)
+* COPROC: Bash Variables. (line 260)
+* DIRSTACK: Bash Variables. (line 264)
* 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 260)
+* EMACS: Bash Variables. (line 274)
* 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 265)
-* EPOCHREALTIME: Bash Variables. (line 269)
-* EPOCHSECONDS: Bash Variables. (line 277)
-* EUID: Bash Variables. (line 284)
-* EXECIGNORE: Bash Variables. (line 288)
+* ENV: Bash Variables. (line 279)
+* EPOCHREALTIME: Bash Variables. (line 284)
+* EPOCHSECONDS: Bash Variables. (line 292)
+* EUID: Bash Variables. (line 299)
+* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
(line 161)
-* FCEDIT: Bash Variables. (line 301)
-* FIGNORE: Bash Variables. (line 305)
-* FUNCNAME: Bash Variables. (line 311)
-* FUNCNEST: Bash Variables. (line 328)
-* GLOBIGNORE: Bash Variables. (line 333)
-* GROUPS: Bash Variables. (line 340)
-* histchars: Bash Variables. (line 346)
-* HISTCMD: Bash Variables. (line 361)
-* HISTCONTROL: Bash Variables. (line 366)
-* HISTFILE: Bash Variables. (line 382)
-* HISTFILESIZE: Bash Variables. (line 386)
-* HISTIGNORE: Bash Variables. (line 397)
+* FCEDIT: Bash Variables. (line 316)
+* FIGNORE: Bash Variables. (line 320)
+* FUNCNAME: Bash Variables. (line 326)
+* FUNCNEST: Bash Variables. (line 343)
+* GLOBIGNORE: Bash Variables. (line 348)
+* GROUPS: Bash Variables. (line 355)
+* histchars: Bash Variables. (line 361)
+* HISTCMD: Bash Variables. (line 376)
+* HISTCONTROL: Bash Variables. (line 382)
+* HISTFILE: Bash Variables. (line 398)
+* HISTFILESIZE: Bash Variables. (line 402)
+* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
(line 165)
* history-size: Readline Init File Syntax.
(line 171)
-* HISTSIZE: Bash Variables. (line 417)
-* HISTTIMEFORMAT: Bash Variables. (line 424)
+* HISTSIZE: Bash Variables. (line 433)
+* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 180)
-* HOSTFILE: Bash Variables. (line 432)
-* HOSTNAME: Bash Variables. (line 443)
-* HOSTTYPE: Bash Variables. (line 446)
+* HOSTFILE: Bash Variables. (line 448)
+* HOSTNAME: Bash Variables. (line 459)
+* HOSTTYPE: Bash Variables. (line 462)
* IFS: Bourne Shell Variables.
(line 18)
-* IGNOREEOF: Bash Variables. (line 449)
+* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
- (line 187)
-* INPUTRC: Bash Variables. (line 459)
-* INSIDE_EMACS: Bash Variables. (line 463)
+ (line 189)
+* INPUTRC: Bash Variables. (line 475)
+* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
- (line 195)
+ (line 197)
* keymap: Readline Init File Syntax.
- (line 202)
-* LANG: Bash Variables. (line 469)
-* LC_ALL: Bash Variables. (line 473)
-* LC_COLLATE: Bash Variables. (line 477)
-* LC_CTYPE: Bash Variables. (line 484)
-* LC_MESSAGES: Locale Translation. (line 11)
-* LC_MESSAGES <1>: Bash Variables. (line 489)
-* LC_NUMERIC: Bash Variables. (line 493)
-* LC_TIME: Bash Variables. (line 497)
-* LINENO: Bash Variables. (line 501)
-* LINES: Bash Variables. (line 505)
-* MACHTYPE: Bash Variables. (line 511)
+ (line 204)
+* LANG: Bash Variables. (line 485)
+* LC_ALL: Bash Variables. (line 489)
+* LC_COLLATE: Bash Variables. (line 493)
+* LC_CTYPE: Bash Variables. (line 500)
+* LC_MESSAGES: Locale Translation. (line 15)
+* LC_MESSAGES <1>: Bash Variables. (line 505)
+* LC_NUMERIC: Bash Variables. (line 509)
+* LC_TIME: Bash Variables. (line 513)
+* LINENO: Bash Variables. (line 517)
+* LINES: Bash Variables. (line 522)
+* MACHTYPE: Bash Variables. (line 528)
* MAIL: Bourne Shell Variables.
(line 22)
-* MAILCHECK: Bash Variables. (line 515)
+* MAILCHECK: Bash Variables. (line 532)
* MAILPATH: Bourne Shell Variables.
(line 27)
-* MAPFILE: Bash Variables. (line 523)
+* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
- (line 232)
+ (line 234)
* mark-symlinked-directories: Readline Init File Syntax.
- (line 237)
+ (line 239)
* match-hidden-files: Readline Init File Syntax.
- (line 242)
+ (line 244)
* menu-complete-display-prefix: Readline Init File Syntax.
- (line 249)
+ (line 251)
* meta-flag: Readline Init File Syntax.
- (line 187)
-* OLDPWD: Bash Variables. (line 527)
+ (line 189)
+* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
-* OPTERR: Bash Variables. (line 530)
+* OPTERR: Bash Variables. (line 547)
* OPTIND: Bourne Shell Variables.
(line 38)
-* OSTYPE: Bash Variables. (line 534)
+* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
- (line 254)
+ (line 256)
* page-completions: Readline Init File Syntax.
- (line 260)
+ (line 262)
* PATH: Bourne Shell Variables.
(line 42)
-* PIPESTATUS: Bash Variables. (line 537)
-* POSIXLY_CORRECT: Bash Variables. (line 542)
-* PPID: Bash Variables. (line 552)
-* PROMPT_COMMAND: Bash Variables. (line 556)
-* PROMPT_DIRTRIM: Bash Variables. (line 560)
-* PS0: Bash Variables. (line 566)
+* PIPESTATUS: Bash Variables. (line 554)
+* POSIXLY_CORRECT: Bash Variables. (line 559)
+* PPID: Bash Variables. (line 569)
+* PROMPT_COMMAND: Bash Variables. (line 573)
+* PROMPT_DIRTRIM: Bash Variables. (line 579)
+* PS0: Bash Variables. (line 585)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
-* PS3: Bash Variables. (line 571)
-* PS4: Bash Variables. (line 576)
-* PWD: Bash Variables. (line 584)
-* RANDOM: Bash Variables. (line 587)
-* READLINE_LINE: Bash Variables. (line 592)
-* READLINE_POINT: Bash Variables. (line 596)
-* REPLY: Bash Variables. (line 600)
+* PS3: Bash Variables. (line 590)
+* PS4: Bash Variables. (line 595)
+* PWD: Bash Variables. (line 603)
+* RANDOM: Bash Variables. (line 606)
+* READLINE_LINE: Bash Variables. (line 612)
+* READLINE_MARK: Bash Variables. (line 616)
+* READLINE_POINT: Bash Variables. (line 622)
+* REPLY: Bash Variables. (line 626)
* revert-all-at-newline: Readline Init File Syntax.
- (line 270)
-* SECONDS: Bash Variables. (line 603)
-* SHELL: Bash Variables. (line 609)
-* SHELLOPTS: Bash Variables. (line 614)
-* SHLVL: Bash Variables. (line 623)
+ (line 272)
+* SECONDS: Bash Variables. (line 629)
+* SHELL: Bash Variables. (line 638)
+* SHELLOPTS: Bash Variables. (line 643)
+* SHLVL: Bash Variables. (line 652)
* show-all-if-ambiguous: Readline Init File Syntax.
- (line 276)
+ (line 278)
* show-all-if-unmodified: Readline Init File Syntax.
- (line 282)
+ (line 284)
* show-mode-in-prompt: Readline Init File Syntax.
- (line 291)
+ (line 293)
* skip-completed-text: Readline Init File Syntax.
- (line 297)
-* TEXTDOMAIN: Locale Translation. (line 11)
-* TEXTDOMAINDIR: Locale Translation. (line 11)
-* TIMEFORMAT: Bash Variables. (line 628)
-* TMOUT: Bash Variables. (line 666)
-* TMPDIR: Bash Variables. (line 678)
-* UID: Bash Variables. (line 682)
+ (line 299)
+* SRANDOM: Bash Variables. (line 657)
+* TEXTDOMAIN: Locale Translation. (line 15)
+* TEXTDOMAINDIR: Locale Translation. (line 15)
+* TIMEFORMAT: Bash Variables. (line 666)
+* TMOUT: Bash Variables. (line 704)
+* TMPDIR: Bash Variables. (line 716)
+* UID: Bash Variables. (line 720)
* vi-cmd-mode-string: Readline Init File Syntax.
- (line 310)
+ (line 312)
* vi-ins-mode-string: Readline Init File Syntax.
- (line 321)
+ (line 323)
* visible-stats: Readline Init File Syntax.
- (line 332)
+ (line 334)

File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -11340,21 +11632,22 @@ D.4 Function Index
* 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)
+ (line 11)
* backward-kill-word (M-<DEL>): Commands For Killing.
- (line 24)
+ (line 28)
* 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)
+* capitalize-word (M-c): Commands For Text. (line 66)
* character-search (C-]): Miscellaneous Commands.
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
(line 47)
-* clear-screen (C-l): Commands For Moving. (line 48)
+* clear-display (M-C-l): Commands For Moving. (line 48)
+* clear-screen (C-l): Commands For Moving. (line 53)
* complete (<TAB>): Commands For Completion.
(line 6)
* complete-command (M-!): Commands For Completion.
@@ -11370,24 +11663,24 @@ D.4 Function Index
* complete-variable (M-$): Commands For Completion.
(line 64)
* copy-backward-word (): Commands For Killing.
- (line 58)
+ (line 69)
* copy-forward-word (): Commands For Killing.
- (line 63)
+ (line 74)
* copy-region-as-kill (): Commands For Killing.
- (line 54)
+ (line 65)
* 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)
+ (line 57)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
(line 110)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
-* downcase-word (M-l): Commands For Text. (line 57)
+* downcase-word (M-l): Commands For Text. (line 62)
* dump-functions (): Miscellaneous Commands.
(line 74)
* dump-macros (): Miscellaneous Commands.
@@ -11397,7 +11690,7 @@ D.4 Function Index
* dynamic-complete-history (M-<TAB>): Commands For Completion.
(line 90)
* edit-and-execute-command (C-x C-e): Miscellaneous Commands.
- (line 140)
+ (line 134)
* 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.
@@ -11408,7 +11701,7 @@ D.4 Function Index
* 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)
+ (line 33)
* forward-word (M-f): Commands For Moving. (line 18)
* glob-complete-word (M-g): Miscellaneous Commands.
(line 92)
@@ -11421,13 +11714,13 @@ D.4 Function Index
* history-expand-line (M-^): Miscellaneous Commands.
(line 118)
* history-search-backward (): Commands For History.
- (line 53)
+ (line 57)
* history-search-forward (): Commands For History.
- (line 47)
+ (line 51)
* history-substring-search-backward (): Commands For History.
- (line 65)
+ (line 69)
* history-substring-search-forward (): Commands For History.
- (line 59)
+ (line 63)
* insert-comment (M-#): Miscellaneous Commands.
(line 61)
* insert-completions (M-*): Commands For Completion.
@@ -11437,11 +11730,11 @@ D.4 Function Index
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
- (line 50)
+ (line 61)
* kill-whole-line (): Commands For Killing.
- (line 15)
-* kill-word (M-d): Commands For Killing.
(line 19)
+* kill-word (M-d): Commands For Killing.
+ (line 23)
* magic-space (): Miscellaneous Commands.
(line 121)
* menu-complete (): Commands For Completion.
@@ -11452,12 +11745,12 @@ D.4 Function Index
(line 17)
* next-screen-line (): Commands For Moving. (line 41)
* non-incremental-forward-search-history (M-n): Commands For History.
- (line 41)
+ (line 45)
* non-incremental-reverse-search-history (M-p): Commands For History.
- (line 35)
-* operate-and-get-next (C-o): Miscellaneous Commands.
- (line 134)
-* overwrite-mode (): Commands For Text. (line 65)
+ (line 39)
+* operate-and-get-next (C-o): Commands For History.
+ (line 96)
+* overwrite-mode (): Commands For Text. (line 70)
* possible-command-completions (C-x !): Commands For Completion.
(line 86)
* possible-completions (M-?): Commands For Completion.
@@ -11479,7 +11772,7 @@ D.4 Function Index
* 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 52)
+* redraw-current-line (): Commands For Moving. (line 57)
* reverse-search-history (C-r): Commands For History.
(line 27)
* revert-line (M-r): Miscellaneous Commands.
@@ -11488,38 +11781,40 @@ D.4 Function Index
* set-mark (C-@): Miscellaneous Commands.
(line 33)
* shell-backward-kill-word (): Commands For Killing.
- (line 33)
-* shell-backward-word (): Commands For Moving. (line 30)
+ (line 37)
+* shell-backward-word (M-C-b): Commands For Moving. (line 30)
* shell-expand-line (M-C-e): Miscellaneous Commands.
(line 113)
-* shell-forward-word (): Commands For Moving. (line 26)
-* shell-kill-word (): Commands For Killing.
- (line 28)
+* shell-forward-word (M-C-f): Commands For Moving. (line 26)
+* shell-kill-word (M-C-d): Commands For Killing.
+ (line 32)
+* shell-transpose-words (M-C-t): Commands For Killing.
+ (line 41)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
* start-kbd-macro (C-x (): Keyboard Macros. (line 6)
* tilde-expand (M-&): Miscellaneous Commands.
(line 30)
-* transpose-chars (C-t): Commands For Text. (line 42)
-* transpose-words (M-t): Commands For Text. (line 48)
+* transpose-chars (C-t): Commands For Text. (line 47)
+* transpose-words (M-t): Commands For Text. (line 53)
* undo (C-_ or C-x C-u): Miscellaneous Commands.
(line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
- (line 41)
+ (line 52)
* unix-line-discard (C-u): Commands For Killing.
- (line 12)
+ (line 16)
* unix-word-rubout (C-w): Commands For Killing.
- (line 37)
-* upcase-word (M-u): Commands For Text. (line 53)
+ (line 48)
+* upcase-word (M-u): Commands For Text. (line 58)
* yank (C-y): Commands For Killing.
- (line 68)
+ (line 79)
* yank-last-arg (M-. or M-_): Commands For History.
- (line 80)
+ (line 84)
* yank-nth-arg (M-C-y): Commands For History.
- (line 71)
+ (line 75)
* yank-pop (M-y): Commands For Killing.
- (line 71)
+ (line 82)

File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Indexes
@@ -11566,6 +11861,10 @@ D.5 Concept Index
* commands, shell: Shell Commands. (line 6)
* commands, simple: Simple Commands. (line 6)
* comments, shell: Comments. (line 6)
+* Compatibility Level: Shell Compatibility Mode.
+ (line 6)
+* Compatibility Mode: Shell Compatibility Mode.
+ (line 6)
* completion builtins: Programmable Completion Builtins.
(line 6)
* configuration: Basic Installation. (line 6)
@@ -11655,6 +11954,7 @@ D.5 Concept Index
(line 23)
* redirection: Redirections. (line 6)
* reserved word: Definitions. (line 70)
+* reserved words: Reserved Words. (line 6)
* restricted shell: The Restricted Shell.
(line 6)
* return status: Definitions. (line 75)
@@ -11697,120 +11997,127 @@ Node: Single Quotes14955
Node: Double Quotes15303
Node: ANSI-C Quoting16581
Node: Locale Translation17840
-Node: Comments18736
-Node: Shell Commands19354
-Node: Simple Commands20226
-Node: Pipelines20857
-Node: Lists23789
-Node: Compound Commands25580
-Node: Looping Constructs26592
-Node: Conditional Constructs29087
-Node: Command Grouping40170
-Node: Coprocesses41649
-Node: GNU Parallel43552
-Node: Shell Functions47610
-Node: Shell Parameters54693
-Node: Positional Parameters59106
-Node: Special Parameters60006
-Node: Shell Expansions63760
-Node: Brace Expansion65883
-Node: Tilde Expansion68607
-Node: Shell Parameter Expansion71224
-Node: Command Substitution85680
-Node: Arithmetic Expansion87035
-Node: Process Substitution87967
-Node: Word Splitting89087
-Node: Filename Expansion91031
-Node: Pattern Matching93561
-Node: Quote Removal97547
-Node: Redirections97842
-Node: Executing Commands107400
-Node: Simple Command Expansion108070
-Node: Command Search and Execution110000
-Node: Command Execution Environment112376
-Node: Environment115360
-Node: Exit Status117019
-Node: Signals118689
-Node: Shell Scripts120656
-Node: Shell Builtin Commands123171
-Node: Bourne Shell Builtins125209
-Node: Bash Builtins145959
-Node: Modifying Shell Behavior174884
-Node: The Set Builtin175229
-Node: The Shopt Builtin185642
-Node: Special Builtins203284
-Node: Shell Variables204263
-Node: Bourne Shell Variables204700
-Node: Bash Variables206804
-Node: Bash Features237264
-Node: Invoking Bash238163
-Node: Bash Startup Files244176
-Node: Interactive Shells249279
-Node: What is an Interactive Shell?249689
-Node: Is this Shell Interactive?250338
-Node: Interactive Shell Behavior251153
-Node: Bash Conditional Expressions254640
-Node: Shell Arithmetic259217
-Node: Aliases262034
-Node: Arrays264654
-Node: The Directory Stack270020
-Node: Directory Stack Builtins270804
-Node: Controlling the Prompt273772
-Node: The Restricted Shell276538
-Node: Bash POSIX Mode278363
-Node: Job Control289296
-Node: Job Control Basics289756
-Node: Job Control Builtins294724
-Node: Job Control Variables299451
-Node: Command Line Editing300607
-Node: Introduction and Notation302278
-Node: Readline Interaction303901
-Node: Readline Bare Essentials305092
-Node: Readline Movement Commands306875
-Node: Readline Killing Commands307835
-Node: Readline Arguments309753
-Node: Searching310797
-Node: Readline Init File312983
-Node: Readline Init File Syntax314130
-Node: Conditional Init Constructs334569
-Node: Sample Init File338765
-Node: Bindable Readline Commands341882
-Node: Commands For Moving343086
-Node: Commands For History344935
-Node: Commands For Text349230
-Node: Commands For Killing352618
-Node: Numeric Arguments355099
-Node: Commands For Completion356238
-Node: Keyboard Macros360429
-Node: Miscellaneous Commands361116
-Node: Readline vi Mode367069
-Node: Programmable Completion367976
-Node: Programmable Completion Builtins375756
-Node: A Programmable Completion Example386449
-Node: Using History Interactively391689
-Node: Bash History Facilities392373
-Node: Bash History Builtins395378
-Node: History Interaction399909
-Node: Event Designators403529
-Node: Word Designators404748
-Node: Modifiers406385
-Node: Installing Bash407787
-Node: Basic Installation408924
-Node: Compilers and Options412182
-Node: Compiling For Multiple Architectures412923
-Node: Installation Names414616
-Node: Specifying the System Type415434
-Node: Sharing Defaults416150
-Node: Operation Controls416823
-Node: Optional Features417781
-Node: Reporting Bugs428299
-Node: Major Differences From The Bourne Shell429493
-Node: GNU Free Documentation License446345
-Node: Indexes471522
-Node: Builtin Index471976
-Node: Reserved Word Index478803
-Node: Variable Index481251
-Node: Function Index497002
-Node: Concept Index510305
+Node: Comments18993
+Node: Shell Commands19611
+Node: Reserved Words20549
+Node: Simple Commands21305
+Node: Pipelines21959
+Node: Lists24891
+Node: Compound Commands26682
+Node: Looping Constructs27694
+Node: Conditional Constructs30189
+Node: Command Grouping41760
+Node: Coprocesses43239
+Node: GNU Parallel45142
+Node: Shell Functions49443
+Node: Shell Parameters56650
+Node: Positional Parameters61063
+Node: Special Parameters61963
+Node: Shell Expansions65187
+Node: Brace Expansion67310
+Node: Tilde Expansion70033
+Node: Shell Parameter Expansion72650
+Node: Command Substitution87779
+Node: Arithmetic Expansion89134
+Node: Process Substitution90066
+Node: Word Splitting91186
+Node: Filename Expansion93130
+Node: Pattern Matching95679
+Node: Quote Removal99665
+Node: Redirections99960
+Node: Executing Commands109530
+Node: Simple Command Expansion110200
+Node: Command Search and Execution112154
+Node: Command Execution Environment114530
+Node: Environment117514
+Node: Exit Status119173
+Node: Signals120843
+Node: Shell Scripts122810
+Node: Shell Builtin Commands125822
+Node: Bourne Shell Builtins127860
+Node: Bash Builtins148789
+Node: Modifying Shell Behavior178898
+Node: The Set Builtin179243
+Node: The Shopt Builtin189656
+Node: Special Builtins204566
+Node: Shell Variables205545
+Node: Bourne Shell Variables205982
+Node: Bash Variables208086
+Node: Bash Features240720
+Node: Invoking Bash241733
+Node: Bash Startup Files247746
+Node: Interactive Shells252849
+Node: What is an Interactive Shell?253259
+Node: Is this Shell Interactive?253908
+Node: Interactive Shell Behavior254723
+Node: Bash Conditional Expressions258237
+Node: Shell Arithmetic262814
+Node: Aliases265754
+Node: Arrays268374
+Node: The Directory Stack274383
+Node: Directory Stack Builtins275167
+Node: Controlling the Prompt278135
+Node: The Restricted Shell281085
+Node: Bash POSIX Mode283679
+Node: Shell Compatibility Mode294715
+Node: Job Control301371
+Node: Job Control Basics301831
+Node: Job Control Builtins306827
+Node: Job Control Variables312227
+Node: Command Line Editing313383
+Node: Introduction and Notation315054
+Node: Readline Interaction316677
+Node: Readline Bare Essentials317868
+Node: Readline Movement Commands319651
+Node: Readline Killing Commands320611
+Node: Readline Arguments322529
+Node: Searching323573
+Node: Readline Init File325759
+Node: Readline Init File Syntax327018
+Node: Conditional Init Constructs347556
+Node: Sample Init File351752
+Node: Bindable Readline Commands354876
+Node: Commands For Moving356080
+Node: Commands For History358131
+Node: Commands For Text362924
+Node: Commands For Killing366573
+Node: Numeric Arguments369606
+Node: Commands For Completion370745
+Node: Keyboard Macros374936
+Node: Miscellaneous Commands375623
+Node: Readline vi Mode381307
+Node: Programmable Completion382214
+Node: Programmable Completion Builtins389994
+Node: A Programmable Completion Example400689
+Node: Using History Interactively405936
+Node: Bash History Facilities406620
+Node: Bash History Builtins409625
+Node: History Interaction414354
+Node: Event Designators417974
+Node: Word Designators419328
+Node: Modifiers421088
+Node: Installing Bash422899
+Node: Basic Installation424036
+Node: Compilers and Options427294
+Node: Compiling For Multiple Architectures428035
+Node: Installation Names429728
+Node: Specifying the System Type430546
+Node: Sharing Defaults431262
+Node: Operation Controls431935
+Node: Optional Features432893
+Node: Reporting Bugs443411
+Node: Major Differences From The Bourne Shell444605
+Node: GNU Free Documentation License461457
+Node: Indexes486634
+Node: Builtin Index487088
+Node: Reserved Word Index493915
+Node: Variable Index496363
+Node: Function Index512260
+Node: Concept Index525770

End Tag Table
+
+
+Local Variables:
+coding: utf-8
+End:
diff --git a/doc/bashref.pdf b/doc/bashref.pdf
index 0864d8bb..50b64fba 100644
--- a/doc/bashref.pdf
+++ b/doc/bashref.pdf
Binary files differ
diff --git a/doc/bashref.ps b/doc/bashref.ps
index d9817653..0ef38c1d 100644
--- a/doc/bashref.ps
+++ b/doc/bashref.ps
@@ -1,8 +1,8 @@
%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.998 Copyright 2018 Radical Eye Software
+%%Creator: dvips(k) 2020.1 Copyright 2020 Radical Eye Software
%%Title: bashref.dvi
-%%CreationDate: Wed Jan 2 14:14:45 2019
-%%Pages: 184
+%%CreationDate: Wed Nov 18 20:13:07 2020
+%%Pages: 189
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%DocumentFonts: CMBX12 CMR10 CMTT10 CMSL10 CMSY10 CMMI12 CMMI10 CMCSC10
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
%DVIPSParameters: dpi=600
-%DVIPSSource: TeX output 2019.01.02:0914
+%DVIPSSource: TeX output 2020.11.18:1513
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -495,9 +495,11 @@ dup 56 /eight put
dup 57 /nine put
dup 65 /A put
dup 66 /B put
+dup 67 /C put
dup 68 /D put
dup 72 /H put
dup 73 /I put
+dup 76 /L put
dup 77 /M put
dup 78 /N put
dup 79 /O put
@@ -761,299 +763,308 @@ F77CEBB50C5254F81570E414B1E9E79269D3B2575E161620CC732C0405A29ED7
1E5A6597D35B11EE08DC09FC9C27F0126C22C73A0EED657D7F91790777E7D8B1
EBAFB0EC9ADAEFEF7F6A91A1028E46D76289EB1BC15D3597CFCD78D88B633759
93CB4477596E28A1E413BE25D513BA611757C994AE812C5A6D9AD3F770499252
-C7F53E585E03B2FF056EECFB7ABAC474A981D757AB3B6F281744F01713782887
-9BE48307BC5516A067743C054A3927E015AB0B2AD2D80D229BA32FDAB660C3C2
-40DE8C83E1E4941B8D765B879222847F855960604EFF94E9D99E4AD0FF2E887D
-54DB39B984A9E9F69ABDDBB2A452661703841BE79200EDF24C4172D736B461E9
-8BC314AC1CE1650083B18B2AD809B5F2DCB314651433E357042A8AA73A184D38
-290AFF0443C4A293CA6F04643EA3C313FC6070D76400B0BCCEDD20B5F0A67200
-01584F0062794AD3D82C83FCE4380E28312815EE20DF3DD21D381046940A8C96
-4DFCB07E5A558DBF1DE489FF4FCD1C851A597B0EA58604BD16DC8FD89B9E70CC
-36F99E8327E9112D98C1AA1C355FEC942E879C3CF8C358FE955B1E2518C81270
-9BBB3F4BDDB57D04685FC0D90AD3566A81086B3BF196B2CDD42BD1455F588342
-C817CB9E0E75A0A24BE751B46DE8DC974554DF975D02864773F2EE856A0CF595
-0D614F71A1AAF4A72DB4E5896AE9C2B33F993C006DD7F644DD1B3AEBBF34AF8F
-A809C51EEF38E3912E82F7F15F4DBB9D6E5D7974B1B871AB3F3A48B72F0356DF
-CAD862D11273580D1BEC9E88931B7B9C74B8AC3DB5F3B3FA05213D3CE48C0F2B
-237A7DDC33D850D1B2B5B8CB7CC1A1A2221451FFF0AF88175EEF18EB932F47FA
-9A8A97F92B6E2A01CF8BDDCEED9E1776A1A3D4328FB7F8537689CCE7F145A8A6
-2DAD7C9C23C0DBA934E4803FCF9E7C292E67D748F972415E62E56B60DE016930
-B82AD792313A7D1CE655B0E08076AEE57E1BA5FB00FA2B264771507126FDEDBC
-688FA19EF5A87B5958A952A2CE751BF57B84FF314D5A005C32D5E7B63A56F336
-BE5C5BEDAC69462C93252A6C5CFA9C3AF6C40C8A2D13A738DBC1730D665FA91C
-60280FBCCF36E3EDEDA845C74817706474551248130533880FCB0B81C5BD0340
-B85157690619844D18A13AF540F18DA0AA3B172636B1FFB5380D937F11BB8F48
-E14384548CD17D33133B624733533E20C1C7A68F32C814E73C790EE009EE9721
-FE6B3C0503A45BF0D1747BD8D5E55E0021A12F97D8A913EC9AC33856CE65D0C6
-4BECD978E7B1C5A22FB51800C9B554341C40C619DE8053C50A3828E2B2AD44BB
-54F2D6AD9B0EF34235533491A2C369324D5045A6A72041FC486D20370D571D6E
-8ED76A32C6F4CB552933AE68B1E71945F9316C6F5DB23CF258A27C358D8F207A
-0B19A734F426D447CD45F2ECA02BE75BE30DAF9FE2F84DBB35DAF6663F34D0FC
-C25F317EBD33FCFAA24848D0F56B54009C105B42BF5CD900AD2C1393D57EE2E0
-6438DD0ACD28B342F813A7C9C0D1CF42E459589F5D7A102F8551158611E14AE4
-9033B687C0D41927D592D79F14FF0467EF256DD23FBFD7AAB6D514C0A7204009
-A1B8BB21323997EFFBE265D369AFF7093B13E98A26AE4B55F9F5F5B5EB77D844
-7F1ED62F1A030DA13046FB40C94080BA76C9C7F25AEBFBDF76997DAD76884D80
-854959216CF55D0A4F13E559B9382617523947D1E5BCA59E7CE7BE0EAF7C269F
-4887C747072D7C96115B9C1145CAB6BEE769A4CAD44518413FA7BBEA3DA15BBC
-E07087389695E766B103DDE55D1F8C1D04F9FB3334A36942CB754F89EBF3EFF0
-679DF5BE6C3E6616B77FE1DC41B111A8029140BF783F2F27268E54CBCAABF4BA
-FD116E27995957C0CC70B58A501847218F77F84AD941E244D1A72A50F537720A
-4BFFD96C7FCFE7B4A79A0BC31377D462371E4024166CDFE5186AEDFA642EABF2
-9FD28CC8CC0C57B2C883B10357C5446D501D0803338FA9F50816D17F6FEB077D
-5DCCC960972610D8AD90DCED3B00F6FBF110FCA7E929E7D393C508DBE61CC834
-EF0AA977EA93C2A3C9CDF7E5C608F838B1B3CB734DD982A1AC623ADB79254851
-474E0E1C2AED4B35A9A18010451F2D7482A9DAC24942F38E8B1AF5D2AD6AA0D1
-BEA5DB0D318A434EBE068EA54431DCC06FA6F926172B8E50CF99A61745EE3372
-49520D7C1B343AAF52BF71F3905BB01CC894D8DE06AA256BBA16F57EDC72094C
-5AF15066607143AFA5878C3090E58FFCA4723DFC356BE32A4F3CDFB06D012A67
-892C6A003A3882F41F09AB778C8E8E10C1AF7C458194706535EA8D4072A61E70
-9176ED028D863C9E5A0AD6949F439A1FF4FADBF40E5E928CEA8777FC00DDB0D1
-E822AEC89BB6B4B336070F0D2BC30AA4AD2A11DBC1F8B9B0549D50949CD3F47C
-C71FCB5081AF3D9E311A28E18E7FD6289B11D1A39EFF0497D9795B85E260F970
-799696C14BA5D5B9151C72DB327CCE9AC8AF75125DA580A2ABBD51E4F6CB72D9
-9ACDCDBA1CD5C9B03898D71294D500F3FB5CDAD4397430A86D6B3977CA15A2CE
-1A87CFE80A49CE46988BEBBD8A7860937AD2DF3DC11005ABB4773ECF0007BD95
-BBF8837949DAA8988D6BB30E422E9DAA401D4FFD63015B094F0A457FCF9AAE88
-3F3E024679830D4150E525BCA3498B184EAF19AD2867770F1F03469433077651
-0094B6581D5B0E54EDD40111A97E60E73C0B9330C9CF68A003D9749902BC0ABD
-8474348A4869B6FD17F55C705C12C31A028151848C6737F72698D1BE9C7088A6
-29E22CB19BF8E3042249D0C2583101AF3ACC511A810D47A473FBF542EC8209F2
-A3D16F24E2DCABAE3CCCF382BA30E258AB884479532DD04A6DA6604DF2B32625
-B3CC54C079281BA50EDDA55B30154547E9A8761659AADB488A018AEEAF68F80E
-0C7034F74267EB98E471E5BA1A9BEE783C32BE433A46FB39D161210FFB2D862B
-B62B8EB2B3C4A5C51A5214B96FB4FA1E040BDA70507B5B20071E401C23CFC0D7
-702EEEDFE1CE5419628C804607362866A89FC32212EC9A32400E65ACF2AAF06D
-2211C1013BB3178BD882E77D1781AF39374641925FDDCAD306E8C03E28FE4104
-750D9AF95BFA667F3A2992A1DD79560AF95D3B5398CD3BECF601C7A42B9B0D30
-943B26DB414F1661C0EF2A1E8D8191E649AF2A33D3F1A4F340F7CE44B95C923C
-EE17F390D1A6480F1C10D55EF9B8007BD1FED5ED6123F9998225BE27A8E6E2B3
-5843A30AAC796EEB9C47F143C965AD99DBF3AFDB7B491C465DB02CD8DE18D62F
-9E3201C95B045490043DA9DACDF9DAD3E79492DF5B2B33A85B2610A1CF604F98
-913BB447E6FA6834AF454BA5D841B7D8EFD9733FA010ADEF81A2E4C2D6874D8E
-80811743BB114A07DC96A66E8520A4054BC1AF6C080147BF8C0B55678194467F
-909043328297E38C777DA2104B14C0E7C7F0D6AAFBD5CE82531DA83DAFAB4059
-70DC981AF4E6A75187B499A13D918600D4D68CB073BFEB8F4EC1E48451E10236
-ACEDF95B93467357C7028C6BC1AFE878E1988B39DA06C2123727AA6549815BD4
-E88BE89E04CD0D9226C8FC0118CB9DE223ED54684A86284D3F6E0192DD8EC04B
-F1E5ADC9B5001C6A5D57605EAE071648045C256B743E02DDE3729D4A2E82BD0B
-A448C6153732FBA2B507607517E0E8F4B3A44A4BA58D546C5A446100B9D94033
-B68D986182DBE076AA0BF2BA88B85A1EB27A1F4F48C77987A84E9FC3F2BD19CE
-F0359FB3C2C0E4A1908D209F78C64A1B6C4F6F9DFA036B764F87715B7AB94E4C
-153F2640F2BBF27A088F1BD64455648CC448B808F15FF1A1209EBC6C6FAEC16A
-B2D161F097766B771C80593A0225256080B651B0BC64B5D07A04DC34C767A796
-B371F1974633D579A7BBE8F5CF1152AE55F7F0766A316CEBBF79D7C59F11DDFB
-6A89E19FF51BFB7DF15FDB6045892B586B6BD1C86C85E01BED07F0E60270B4D9
-2302E6572419FCF662763ED382EAC4FD445BCFC78F62C1CD65F9D12A35EA2D97
-22B818CE6C8CED2C7EEDFABC2F54E043A9DD67645050C2A715093A7EAEAB21DC
-99D14DD19FA2A6A268171AA569A86E6F879F4EBDA7A992F2F6F4ABEA25C489F0
-E4123EE182BD059A8515708BCA74846920202EE2ABBE9D53DC2CC16BBDAF02C5
-BD46600A6E80BD3A477AA960A4A2906651A7338419529F30755BFB064ACF916E
-9F4D354C309DBDB3479EC7F9F5EFA0058E10742DB647B0C45EB886A2F997DE9F
-534C01676E9EE0CC91DAE378111A7B0359978A43F1CE9EA98AF86FB5C59A894A
-B418CB112B4BA5BF017A7AC5D2D1F003FB274715A1D35B4BCCE309FDB9EE0DD1
-AF8567E3F5002155C6413A31D8970CB1A42A6D6E16B67CB24D1609EF671DBF2F
-B1085E1505CB05BEF96770B176A19F521D60B2F9AC46A5464A2401E2945F4559
-1D0603255DCA93B1F958381D3DB4A5FED62548BDEE0CBD9977AED1F17A00F19E
-1CF565C08EC5B4DE3C108B15615285BDB402A4480EFA1AD102846B3E543EDE5A
-5E6F7D37743479426F267415347E4C356B92F7D5D4A0632F333E5CFF2870FE19
-6C398FD66A952EFD26CD6C3BBC23041CD57D0860BC421D710D06E2FEA071080B
-56212A069CDDED701398CD9185BEEF08FA0AB16C97C7FE79FE16D6A6B11B7AF1
-A8816DEA4F99D2EE29A357913C51D569700D5C84A52ADD60F9E75562567E9AB5
-E35A1A1F656D12D0EEBD2AAB9846FAB4F7DE2699CF6D100E973DD0E5373289A9
-570A364A562306BF8501CACA8DB84C63F1EDE6BED1432B138EE201635897586E
-912EDC76BACE7047C529617C42582643BACEA3DE8B895B2AE895F77B140C4E15
-69E8ED61B57223B2BBC5C9E5A9A4475A2FB97BCE4DBF40280469FB1C685884ED
-C5974BE43BEB2A20AC947BEB1CB5CAC0A35E0D7671702AC28BCC4A999E57DA38
-194210379106144B965CDC4F246D0CACA7CD201A72007CE0C5FFCC37EBCF76E9
-45A77F7FCF51C434A9A89A020CA63A27A65972C05887FBE1BBC42B4F4F73957F
-7D33819A42CE80975F3034FB97366691F43273B5B93E472B51D792AC8BC7ADD1
-3519A5AD82C8A0087853DBEA22DFAD4B8534D21B8FC56316AE951E53F81EDC7B
-CADBDEECE84759DA9C23073B64561BA02B8DF0C2459165AF170FB95B316201BE
-D38F5982A2609E1BD8FBD493573F4E52843A2CD17B30B715DBCD82146AD366A6
-DCFF854DEFE6B59491BB56B0632C28D29AA90C76DB5FA0C1F9B128B9B12D53E2
-DA7BF86CDBB5E9432751AC5476690DCDA8F8F8CCF639FDBA2DEF0CA00BCB5011
-CECD240F45B271B6015EB7B7654CFB5DA4A2E8F320FB1E9234B98626D9D8D8F4
-057FDFAD9811182BD620CFF4DE2864AE715AFAD34840D128A30AFD1307FBFB6C
-876DDE39C2796C1718ED8A2DA7D9EB4D4341DF3F534419618FE709DF8BABAF3F
-3FE8288D735493B788668B75845CCBAC3F8C00CFE5E1552DC7107782512C509C
-A20C301A0DB7BCC34CB41D75A104E27B6059B0C3A6C504DF208CC3BF011D04F1
-2AE2716010DDF5AE6133701AC7058B43118C84B41CCC0DC299B6606912276854
-4B83958032CB8EBA71753D1BEBED53D2EEA20CF31FBC5072B2EAB23AEBE5248A
-FA27968481E19EB28B98414B7D31C7F26BB1924B291C366EBB48C571B3A7926F
-749B80FA339E44259F0119A5BD8B57E08DA3D0742043E5BC1C19A346B4895AC1
-3A04F9343956FF300493843F4E4B099F729BD3FD908A6DBBCFFA5ED0215A0BE3
-35ABF720CF166B5BCDD246BF0FDCBE949150BEF341C9E69E05FCC71E0C3E16ED
-4CF58BA615D931F318A071CDDC95EE4F7C5115AEA57B7858628F8E13DE33E771
-1F57861F42DB53EBBC4332DD5D3F96098E01BD1D66EB13144C2CE6A0558279EA
-51742CD7208D1C1E65A283D1CA73556856863CD47D78D1FC79CCE077BC2E5D14
-F10606DA0FEBF17CF8401A6CA37CFFD262A87432223A80BB1ABADED4261D46EC
-A83D208F90699DE6C9A389BB96F6C3F4E02777D308C2E3F508A14E21B1446E2A
-33BD47CA44355E7E128C73B9B3CCF46F50760248270603260C40BD9FCA63C01A
-F3270E80DC263E0B5BEEADFB0AD0EA48ACE0023AA6EBD736AAD1E999C492C674
-167E3746D71B4F58E6CD01B59C73A1E3AC18CEF0891FE511EAC8444133133AB4
-DC7CB359F92E7C53DE1E022B448E7E4E566D4FBD0096F4583EDC6756797D8635
-523B99ABBA63EAA2F25F1AB5F7C687D41B933897E1F8B27A6952E46381EF63BF
-FBA20918503CE2EC45C1A17E29CB5E462DFB547958356E2FF656C3A7C600F28A
-888A1B5DEE4D72CE606CD61AAC7E426BAC6119584F552F04B3D7EC96ED1EF048
-0FFC3B36569070BF4FCD2E46B3792E3A365D695CBB7E4826B4C83B1BFA88FDD2
-133A119122B249CACAA06EDF17D451B21136D01E343A78F365A0116510CB5C2B
-E947F1ECF2A62A32330D778525EA0D577B8F84FF34C27E30FC3C650697B96139
-C54204EA3DBFD74E6C42281A27C121F757FECCE281DB11740E3A56F380C79471
-294ACA3D94D03F62AC700C4B9E53C55AA423C5E0E7581192DF9CBBE60753DD4D
-181FBE50213D9D0705DA4CECF039B959308EDBFE219BE4E0541D30175E448717
-8496143152423969B755D9CDA8B1329836CC618BC0994B93DD83578BA6FDBD21
-AF4923DC8E1075B8BEF515738F2E681DB3D6E9AF5F7AA7BA32FEA6C6C10DA83B
-E1E01A0359A25C564AA1739D56FB040C56018CA5E8F69EDDD735BCE0EAF3EFCF
-7E9E6696C48AE1FA14D4CEBAA680170D300027C1329DFC81CB6C2349EE9789C0
-D15F7F2E1490447870E09FD26D40F18E5DE32E945996FDA4E8A9F77995C9AEEF
-24E82B7F26D107251EFEFD92A62FDC3E46E357EABF76D4B7D3543F02A33941C3
-0EA0A9E1691533C2E2EF79E02E0C4579794418496499C47C1E01C03D30616371
-B14C9850A0FF427FAD4F21FC84777EBB8B0CA14F7526C37779D1ED6ED2526E29
-1072467F0AC8079F509C634445322A859FF846F437D6455A0AC702D59B0F932F
-0EF41B329F42F83566FBA693B87C45E95D743F6523DE11DFA2CF7144CC329060
-BE3C24F17A584998B4EFA6E48CB65ADC840D6554793A9647E3BFEA0B865832D0
-9657A13D20641ADE20DDAC86D26583F5DA14101DA5C971CB385FAB7F4848CB1D
-8800CC239CB3A9E79FD1CCB5A667DE7184EF65A459FFCE472240A803D0ADB5C5
-7FD08B11C77EE7BB13B787DF3E01B99D57D101D8B209B6F7A274299E1EC57BDE
-0D385104C7C0D5F0F835EADB865073C334B74BFD2F5F34705E07334855658D49
-4A1FDE32645FA4DE91CDA7B17B941D0B23F104BB3377E983099AB3B61F794956
-F4854DF574FDA0B4C356C90ACBA0963F98390FA630BFEE1E2D9F995FC82BCD6F
-8C658B842D9574AF472082B60E52CC67070DA5AB29A7C973C9399749018CB904
-88A6FA21224F8DE7EF9F8069B12CC04622CBB7A0C55BA8AEA0523C6D4A64B089
-27E52BBA3B44E98569DBB50ECE9C48B2DDBE9502680E5B618A30C4B95DBEBC91
-9BA2355A940F6304770E70DED7453EC77B3C9C732C9DB9567E4193FB23C89592
-7BB60137EDFC52DF7B06F1262DA52F926E48CD5A750F71FDFC573EB8462845A0
-4EA8E0DAAC302A0EF2A156444F8703D5702EB6C9B58DC70F7F154C0F22A6B53F
-573FBE610D2A2DA232B21DC38D37D56D147670ECCA5DD005B990257691E5548F
-4095517F9FDB1EA0670BB3C325092635CD1207F565B27A6F901AD91484855A71
-A8683156ACB1A795255E8EB09D32F598E9475C97BA191469642FC49C81EE721F
-77B6363572A188885DBD798057AFF88DDF08724DF475B00BB73F681D975E9CF1
-1BFC142990DD34F2E1726FCC8D9F10BD9FDFA8A7BC92212709F00855B547E630
-C26BE4D5488927E8992AD160D8B55FC68C0F1D6A54C0679D275E58A3CAE51977
-B8048A8C2455D58F200DE978859A7D1FC44304C7EA735EFE591E28EC3DD083A9
-9E53D4EA808E10F4B9F3866643E2A0D1CC177FDB0F2CEC6C3DF9B1A92A6ACFAC
-08BE08436F708C3D13DB49DF09EEB57866CDD598B663F10AB42CD229E6325317
-F55716A44C75E7CD8D2B292DF39DE5040DB9F3563CFD2C186065730A0712D446
-501BAED4FD53A9D8F521624E270FA7F932294726E4B84A3FBB7659AD1C5A9240
-DAFC17654ECCDC38A9FAF28F301F10E5923F33DDB0B9AE116143218BB22BC3CE
-402633B164D6E4E3B3788216DE8E9B38677C71AEF5DD109C63641AA99C2B2DCA
-EB99606BC079F386CE077B9647CF93B400D50D11162AABEB08F42A19C52F9D68
-80FF02F006874D2AA3F41BA095DECE25CB7E021C91D25EFC992390C1ACB76357
-9225F06096DDD549FB855CD9F8FDEEFD1375D702E2E806760529475ABA67EE50
-B70FC8860FBBAD5745459DCB1B8AB9F1EAA5084080C2FF89141FF10B459DFB93
-2C35A171AE9219ED5FE507CE7E3813C94F346E924792B1130E9355628980A18C
-6F808F28C396EC813617EBFF922F73BBC8651438A1614C9F24043D110A589B89
-3FFB6F4E99C0AB4EA4E50A6284644137F093D527AB9490A7EBF6140D9DC1FB98
-5090CA16E9F08BE79B49912963719B3B35A442FCA493EE5198F9916F8655005A
-9EE372FC4404CB4168F82F810A58371ACF7AFD46CA46F2F94B194429255A9BC9
-4185CEC1C929945451968B0817842B3BAA28A1CE1E10B6CCC328E0487CFE90BC
-3BD9EECF5F8FF1C99C8805A4970CD486F4DC9BAB0129E86B1F67F08070F04A46
-B0910BA9E173FD4DCB568B08BBECFCF6695414662DE690BF32A90237C8B0E72C
-206D09A580DC92A135179A5E3F1E611A3B05DBB05E4A8D51BA3D0A165D3C40A6
-AE013DEBDF26FA757F6CBC881BE672BB467C1920C067A0B2A49A532A391A8E87
-F2C6E50D247AB108A1740D4D82F955A91D49E95259A3DF9715F34CB45ED5DC9A
-77631A4A1553EDB8D4ABD93869FF52D3CF0017CF887B408C02E8509DFCECDD27
-A295ECFE0332BDA5678C4393ADDD5D171B5FBD360CCA5810F79F5F879939DAE7
-892D53FF5F505CC0501BD40590420A291BFE8E67F09AB7A3E0665F6AA8FD04F9
-67C4B0084C48F9DE8F7E0785F3261844E45C9F5D4A45855BC5B7E00CBB865B31
-2BDBC1B1292DC374B6190D12246DB97BCF04F679DE3605E532451B3E9D7F5997
-E1F353BD1E35CB11C850C9CD5ECBC40C9685DCEAAD279E315FCF85855D6B40C5
-D0FEE8692D4108B04338A70A50BC6E2C04F4472E294A182B88C9021AD8C0ADA8
-0C7A752F764548A51DFECA58D6E39AB4F78BE0A83DF6D60D25CB0F328D8FFD49
-16427FFF198D1FC3F574B3271688A31DA28952EF065C884BC0FFEB547360A372
-7C39E5F2FC458831B9C42128CA69A8198FA0545CFB207856D6BA97E113FF7E26
-DC46395E649205C83DC7565F4130CD6BDD44ED8D4D383D0F37B34C6F2DC98CC7
-4F96BA2722C996879329A4B27089F0A68FD6355D26946039F25D013AAD2F22FF
-12FD7F617282C6F005A6EB12554C47FEE2A5B1D0FC7C595B9DAF268084C91B37
-5FE0ED62A934EB511362D1F14BCAC4950EBFBB2A3D1F45C1E34498871CB4C346
-54B7349577D54D26385D784C5E3C2D869A7336159724FAE151FAEB10E231F3C3
-A17B959192186081556463C3F5EE6FFDB06E82B8B9BD08C0443D8CD84BD6EA7B
-1C2BDB46327CA21FCF002B3E8EF4DECE86077AFE6BB5A941B9E068CA023D54C2
-8E91E503F48B0B4B96ABB07F084C2EADE9B2F41415EB312B9EE0612E69F51177
-654AD20A2D93D457E2FC3C66C3705F9B48A947329BE59DC7B871C055C590FFC3
-F6B5FD8212255D25EB7787E637D5CCAE0E1EA386BF0B911F414BA45E30F36CCD
-6F5A17D0A887B5BEC58B8E8D228E12C9568F820A7F820B6C9B6631EA8C2340EB
-377CEB0A490166FC33AE1F38D3629C090606D3E8AE8662A98D6C63793B1077CF
-092624F46AE4548DB4B22FB602C39EA2E74B5A26DCCCD210E043D508849703E1
-451C8A9061514DC7312755EF16C2165DC1DDE554A29C8AB6F9ABC9A5127041F9
-FC22CD3BF15A4A23DFC8FD5661DCDB1E1E1EA65E77DE4A8D60A2E564F467F071
-5C8EB4509C3F9A97D0371EBBD4584430AC8EF155084B63B9848FD4CE2B5C6DB2
-C3A1946B4BEFA7B088587F912D20F0A2E15A580584441A4742312DD4B34503FD
-338BFA7BFEB94379353CE264541D33433C4E996BECF418A2E3295B9961FBDF28
-77EB608CC870B97D9EB43FC3AF2DBAFEF337BE2F108DDFBFA090190158A244F0
-8A757A95FF8E25B6FBCE09A1DD6FC5C8897456E12AE7A9AAAF0E42FC632D35AD
-EA2C00D7C61E047CB071163F05FB5ADAE82D0E177BB7E6C9492C2FC9F511F75C
-0FCBF74F06E057F6B66D3F72873559C5C983DA7D7E75EEF7B783EA44E4AEDAFB
-2FD8C3779D38EFEFEE5BD565C3A73D307D81EC6C45C2F02B7B342DFBE2356484
-BE59EF6527E956D8E1C48C80395F34CF4AE1B8B5C2A06072DE5C59255ABA30B4
-3B5039CE2524141C0BA73CF79209B0B5AF17C59BA0EAB437802A22A2E2D6407C
-C861A71EA547220134412109DFA1F6D78BB0C34F6FD36003850FD3D9EDF39741
-2EBB9AA349BB5801C9FCFBAB69E1D3BD5F4752663E616A8E1FE486545F3F1BA3
-8F8A11E4C13B2CF97A497C2333A22C696B499647DD7439D3D7B636FBEED2D32C
-86FF745763413B53E064B16E5BF157C9DF7313FB9D46C752B52E963BFAFCB392
-531F4E46194A3BE24E2F51EC9BD57FD5E82668E2AA9D72DFDF7F4500C1B81526
-C09DEF71CA6D3A3A7ABB1BEF21E99DDDB82D307BAE2B6FB28FEFA5160E18304D
-25B1665A7375FFACA6C843A0E8BCBBF59FBE24068A79ED68A6F45AEB7201BB6F
-06EF67DD19243E68DB34025209E851DE3AB65D10E108316E733DFD25B0F8CC8C
-056740761BCF195AA6E1C2857BDE85983408D400A96EDB887889F7CCFF403606
-F9C01F7CA76C9CEFFFC9AB7D3ADCA36A0269283F5A65594ED68F43DC1BFC6117
-1D113760B0F469C34CF089EAEC99C5F7448BF6285DB05D35CE182CD80491D88E
-3CF21FDB249EC96516EA42BA9A716283C7C60A1D9E7EB9E217B2B4EE5F316110
-2DECF4D895423D64B87B776883FA49225B6061E820C9425129736754184CDEC0
-67B63E5D07A455BE0B9AE382FC997195AE0AC4C07FB761EA5002C3943008F7A4
-BC04588165242A9F4C31E811EBF1E145C2D102D1D7C9331EE6660E054E74CD7D
-8FA19BEBD2F89BDEA0DD0B54B0E1B5EBE3E9CB1E5A1F477CCAE0955BFE9950E0
-01211AC8F3430F958A4DFC6E74502D9E2EDF5E2CE261DE00D8DA75BCDB83293A
-0802B7D5F14BE14380DC1013877AE4624853F3FA041F944D19185862A8DCE73F
-5F0181BD84C3E65AD11B2F0A2FE36B1803084E82274CF4BE3B0151D309C3F104
-771C6DC985D7DDDC77BA40D844173A9486B539DCE051DC82FF6D6831F99B9891
-48D6B027B8B6B6279E6CEC7D0606DAAB1A86F2309F1A4842A1DFDD5116FBFEA5
-0AB6C354CB65782464770B72B39DDBA2565CDE941D68ED928151E23675B541EF
-33B070ACC0ED70A3A18D0833CE7A90C911840E06577872FD4C3A67E7C195F73C
-2418EF0889AB1AEA93269CB1B98CEF136DD38DDEEC2450F7C5FAA9775973E178
-1182455E0321C4DF13B1EC1466D8F5BBBFC38A2A054B57FED2E429ADD7CD3EB3
-425F266AD5F0B37576EF54143D42D675E895EF20F54E1CAFE0F2A2D2075B28FB
-EC034601A147177976623733D6FC00CBE2DDB1E9DC5DD9E7D12AF9E589843FD3
-607AFD7DCC3AC648862C559B98790640A78E112B757B15FA513A76E1C3AC4074
-DD520E94998D5DB08C1D3E822FEC4ECBFD1E398B480AE01690B14BF92948135B
-4C042F70CDF3B988BD02CD54CDCACF912AF09C0C59CF23F84094E5C976E6392D
-D7D5ABC68E9EE23C080B564096A30F67241987999244686137175D8570DE9AE4
-57EF670B5576BBC1C0AD4E26D7817B202674F70CA62A5EEB882C2ED1C6272C00
-5598595DF2AC7F82FD1C9606183157EAE7575B07828BC2C0B2D171F86BF3900E
-43FFD4F6463FB5C6A1201D26A8B58677F7CB00C5CBDE1FABE2641CC2172775C6
-3F9FB0496CE71E179D70333A628091B47A3100A5B4CE624EC9CE5E4D740CE3E0
-0F03450F95138A0437BD3A7C4F6FAFD1B8B2A0EE07FDF76E427A8ADEE7CBED56
-B57F9522F8CBDC3236224E6E3FADB549018E757E090E1CEEE91C45C032CF1F25
-67FE17978B998DEE1635236EAAE953623BE263D2C444327E91C4EF9740B768F8
-70A6CFEC3511252D7432C96E5B11B7AA80BF620B63B82AA4777823F7D0266A75
-6DDBBC79CB7EF862FC8AA67C07B87C40EAFC0C81C122AC0348F7702E95760F93
-33508D7852E4A494F5C6CCEB7CF67F1AFD391977AE0D85397BC85BA02C0C02ED
-51C9489230B568BDBB8485087350E140611053373E46EDE979AF4C1D1047925E
-9F67E9708D11BC71659DD61D3166B156670D67046AC2EBA08A25FCF2B84E7BB9
-56FAA25B67004C1D6DF8D12D4E9F1E3793CC1667EA7DFD6D67243DCFAB276AC4
-DA755EC98D63C11D5D10E59D74A4CF627F699F1A018B2AD652584A810B2DC519
-549B2CE246622CB20DB69F25399315A33B244BE0C05FEBAE53D00E4E266DEEDB
-D1912D49E6699105767FE996B0CE64AF777E5D559D36BB141456339447216362
-59721641A762F6F6A54CEB3D0D2D3F75927E362D6A6A99CA6A8BF739681A60C3
-232E952935AE9B34DD4FD3D15385F5A30B045F3670D517BFB924BCAB0371F3D3
-CE9C5161D8C634BCCCD3134F8AE366D3D7B2C7B32EA89FD61231E30DD3DC1BD7
-FD295D5E49051F6C35DD7AEF31CA904FC20F36F19E0B9B838750868D69A752BC
-64398CF36B006D8313D0A349C9D93AF56F0E01274D9AB369309B9F4E4BD0B8F9
-C6B3C66F38C3027CD1AF8802BC82904F3A619F89D5CA5BB78150A8D39B9A92A8
-9B5F5BD2674CBA06F7819C0C9261EA9671810A804C1C14CD6A1D7116F9491BBE
-269653566173D334F26E76CB8AC3C345D47220D777449AC0E82B435A2817AF7A
-711A664519CFC16804C966D8AC088DA2AAAAC79AE21E7B538F3554B65CF29AC1
-57B646E6BA127A7A0B169EC680ECF5C230CAA91A9ED6AB2A54B8EB7E8C94DA78
-67C22B180ED661264EB2004EEDF1923FC5EE30E0A6F87DDC414B7507887F8411
-9B999F25ECBDCF8FC3D9AF99AB8AC08736091CA28D78E77354F3205CD56F9221
-B6CB6D81A34E3C954F73BB23BC73D4E4E6B961EB4589E5C2E21E426D78E71958
-3782FAA65DC184CB4944FCBAD6ED0A882F8767E2E8A8CF272683BBCA8A4657FF
-8E856DB3188939D424341DD0D9B8074461D8F15FBFCFA7AD63C81C4F51396640
-9FF1B14685624376BD753D186F75C695CFF5BF63EC9B20D2CE365BD0A4822069
-686C8737732EA874127D96CE11F889A71071771D8356A5BCE475F98D79C8CA22
-E98F5175D0016913B0C927616AEC836578F02024E3D4FAE49F428F68A026C592
-37870C5DE3A1833AE1C24D461FEA
+C7F53E585E03B2FF056EECFB7ABAC474A981D757AB3B6F2815E7AA8AF8BBA42D
+4D83EF8A0FE21CA5EBC295042AE5D74E6D05BECCEFDC74ACDD0A59AFDAD3E94F
+141E4BFA04ABEF7E6C43418A5EC54C6E8CCEA1C34DDFAC9CC87DD5E9D4BEE705
+F11B003956DB37B145DDEF022C645C19329E6C04E1EDCDB5F6A33AF1EDB9A17F
+79066B1C3579E70B2D43DD89D1F5FD2B2015FA5009D612781CF4916DD8C7B1B5
+21FF0CFAFCE882A106D356D8851F73635A4E7C81FE0BF6378DC2219BC883E3A8
+23290969A2ACC06A77866A8AB83B39289EB14B4F67511FC97F3BE410B4DE91C3
+54876DEB96AB3C60D1FB17D29172F96E98D3FA77B772C69D17A757B6CE32D2C1
+67182DC41B5E19F31F669A886DD4D08092AFAE132C0E0FF810FCBF937EB3AF0F
+5AF1416C11508EBDE0C0EC1C618CB6F66658D9CA3793D523D224F8C9A8ADF6B8
+16CE7D210FD4771ADCFEF08809C0E9A37170F0C02A9C9907FE38DF8795C6093E
+0DD464FC59313CA7EEF4658A498CFDA9458AA1A86B2A0933182954BFEC58E9AB
+3BF65DEF9BE5289826A7AE0AB0E93D83178049CCF8BADDAA7BCBCCA47F983E22
+3CCBB9D2D522DA2A5EDF409A862A52297FAC35CE11176A8B89671BE758CEA324
+5BD245937C46D52F15241E22F803F77E7B5ED83B6395F5387EA7CA46E1DB1F8D
+239374BE3F4640A6FE06CE65A07123B722523AB913DA6EA385F524940432DC0D
+CE2A2A50539C42DC0942ACC30D372BACF8192645F9943391A602A019EDD69241
+BB0EF67C1C367344D82F5669A75D5234A3FE9312EB4C6BE310722AF8065835F7
+E55443034F04E4B41F321B7CF95EF163231979A8D7D2E7B982D6DE774E8F4CCD
+D846A38D9029028C50A99ECE834C67F7CA30F39F4D1803B3CDF4D19FBC3D1FED
+EA3F72427D13D6C51FB97E417D38E4AD86E93498AC245EA17317EEE503D11C60
+E6981F07798D11364ACCAA0F06E6D748584EEC92720F50B71157AB2887406B13
+491C79A0054F145417D7E4902CBB38AF4DFAB4F84E25985A6FBF308D974457D0
+8FACC57B056749382FD35F7D9CFC58B2616D205CA0328294C7F47AB9EB50E1D3
+56B4AA213B1605985939AA68DEBCA1F50407136AE16196EA910089D913A4DDA8
+079F046AAD1DFBBD36DF39C43CF356E40972D8AE3F044F31320A3567520331CD
+67227812DF611C31DF6C7B420A170B43A478D0678F615AE88B94646F0F1A400D
+3E6FE22E584B1197B373FF2A0CA5C90CCF064A5C8A08170269E967DA2833840B
+BE87A26B8A5C80F8460100D97C17B62BB62F5F4DDF270DCE6C4F08A733EE750F
+6FA75D57A96F5EA3D089D5634FE7C29D6A3DD8206FFAC31EFD273484042313DC
+406A646C898E7FCAB097C6E362CE13741CC04549691C6BC246D9FA598AD671DE
+81A05E8D011A838E3B9F984676E03BB77EAA1B1256C04028801748155A2B5082
+57E9BFA74C3C18BBBDB7458B5AA3D484CA516A265A9132CA6A16A1C6A1E8F600
+9F9368F4E22AC348EBB52736035A4A4524BCD4B2EF54314007FC9AF134754FD2
+C20294DA556EF82639E26A3014F597955B8766C1E317D21E978A2ACEBAAFD25B
+6D27E861E254230360B34431BB58A0037C3372CFDF13DD806DC6ED6B0CA4C96F
+B7018FE26AA64C1D23879F117F9969FCBD649805FE66D5B439F6531E5D841B0F
+43D110BFE886A11CE54869E036D6480F6C6E0DDE33B40D605671D99A6D297C82
+65B1F442602A026AB0B73BCBCE1B098C423CC623D40D679E45052492E5129675
+F1CA105AE94D7BBF162E8B3CFECC63429E866ED4CBB69F25687DB74A330C7F5F
+9727BD3DCF5890FA9BEE5A7BD997433CDD1315850B490DD4EF503BC1A4F30F93
+F032E761C9B4A099ECB96F1DDCE4262FBD75620EDD89659CBC70EE3FEF7C50AE
+CB47D9BD8BDDFB7D5ADFCE11EF6871AB41369A582211BB5680DEE2BC141259C3
+08B73E26815015B99AC3683EDD9EBC880A5A64EA728DE0AD8B038D666955E6C4
+0CB961183309835A70BE28AC86A0C90EBCDE36B2C2F9DCF6E61B27845C048932
+1D9CD3F5E7EE7157A478A9B624C46E044AA050942FF1E15C8553321D36EA7586
+3D4A7CB9D971063AF089F6B2A288A83513B4EE3A0F3CF537633604E31FD22B04
+A7A63C54535D31129C4713E5561100F41F596A2771E3399A84C7798C187AC61D
+359E2181B61DEC7EBB1E38A5B188A85B9E0A4CC22E0AE4FDFCFE8DD776C703DF
+D581E9F3F68DC63B91B7CC430EAE05D7451345EE9928B18947D1EF0907138FE8
+EC9F98CEECEABDB91CE0DC993391632A2993E0F23EDB138C388ED74AA061F4AB
+A9879A48EF233D72C2CC6A976212801677FF31818CAA227205687600362634E6
+380A6FE49F7A3E111B50DC40B97D58A7138BEF9BF2D58633643715D96F09568F
+D192E619E4DF5BAD6E934C3AA1E29579E85127024193F3866F235C58A9A097F1
+56158AEDDC8A1B66777C28E798DFFD2404507A1E793E990ABEA01D772343B3C8
+0258461306AB5112B36455E39B024D544BC723C61AE4756B78B97566546201F4
+77EF79F142297609B74AAF54FBB44473197E0B5A706FF921C1D7B80CBFF03524
+C6C9B37BF5FF366B0D60026FBE01D9A213905B384449F62FFC7F872114C64F01
+1BD76FF84899641A793D10A504F0B56A7500354C748A68EA4396296F0EE9448C
+1997C351D262E9055D2265E4C467FBA11F97E80B6A862D398D341E46212B0389
+08BFCB93BB7ED61C0E4D3BAB05C9A620E78E19342F02A9433B97CF7ACB027528
+E70EA97389D55DDA0FE4BAF2BA8205D3ECD294BC8EC81293C9A11F79C87EEFC6
+C18A8AEEA8F0987BC183C9EED25A91F77408952DDBA65BA715018CDF4145B64A
+393ABA54A176F8DCF83A5238D538B3E7B569229F5C4CFAC3CC9827661AF20F1B
+44A7930D1DA6688FC1B11BAF855E3E994751E9FE7BF4D588816618A022E25673
+F9C2D9D9AD9C6A16CCC923BD9E94E9A916C6561E692724C499F0A49E13762197
+DE52122CCBF93E3505209FF7F66A36780C7492650F4534E5984642BC7844C69C
+0DC60DD6145A5B1662884BB82E4A97EFF6541D10D8799707CA86591BD8CD4CB8
+59BFD8D36AF4D1DCCA1433F20CDD724F3550D88875CDF3FFD49C6F1EA956576B
+A1C64746D10C0EE07644371CD7FA3388C308B0E20918061607730E92A11057C2
+27303C387E163212DA3C5EE8952BD9F7F328E35D7AD3CC0FB84943ADB0BAD7E9
+6B4426FA53EEA4F2155359CD3F8E8DD5F0A1FB0B6C8F6A83F5B8BB179FB57256
+57A3DB758AE0F7B0D3A636F09AD0A86BE31303A6F48F2B925B6EF764DE59C3E7
+C995C5422BB61BDD691A5980CCC3639234A7A48A351E67E7ED9F0314B2074210
+36725D5306BBA32DB24BCDBE3F989EC1BB9CFFFDC156280BE9A7F7253F7F4516
+0F368A18CA6B1DCAA5C99693B6B0F593400D09AB18EC8F741091A32E5B5F9BE6
+B628F840E28643A9BF7E24D37E9C39A05BB70479AE6C9905E9B763F23E546A54
+8231D1A6009C658AEA37CA6FD5D2A36604370262583DE5CE3568999E594E5A3F
+4D665BBE80C7109A6FF96A856B511F4251555B7FCFA55FB1F739922F7E62F396
+482ED48EFC10B10E6D68148DE88308307BB7643999890BBBAAF2D11484425A43
+B41A4F2F076CA8D187074F3621C0E4326F7B48D5F582A91763A02CAA769947C6
+A424FA57F87E92EB9B199A540A05D4C65D121321BDD09F99EFFD4D43536EC180
+2A2DA1672CA05956D8737D514B088DCAB5D09C633A75BFD6CD35105A9DE88968
+F46E049EB38822AABEFC6EFC14A693555A7D35BD96764D7B915E6A1153A9F5B3
+84A79D547CA8DFFCC4D1F1C168EB6EF6450DC470DBE0A72D1264EDD2375C69AE
+554AB2DCC7F966F013F0A76F0FBEA1CAACBCE1B372F098EB069DC35688E6A4AD
+6F29454E371DA51CEA13A8E8ACFE916389DBCB162CC81964B4ABE791BB71A27C
+51E24E7571CD8FD16BB862199B562E1B9965AD602A77A644E687129A6980F2F0
+F6C1CB584BB8FD1D1A1F8BAA3812CE8D051D23014622A8A508E4296541EE9846
+4A2551A843B6977091E90E9006ED40E62D487ABF2B48633F09080C6C06B390BA
+CEF77C69E858E23547FBF6F22BC51C1C5ECF5430588F006EF7B3DC6DC0B0356E
+CC8F8099721A5E3475857C1F906A11BDADD1FB27B3A8683FBE50BAF54CD4F4F9
+9EB56147DDDE5B5D861CC8B89DFF9502E088AF20947AE7F72BD6F427F617A7C4
+6A3062AF9029071BE53A25E8C329CD0EE5FD191FA2CC3DFD4D623217C5F6C82D
+5FC9661900C111EAD81C6A88FDD47AF5D4B72B0FF9C658139FA478A05EE75DEB
+83AD2C79BF78D9CA975BE573AFAAB5E5F0F01E0DD9ED868BEFFACB15DEF79237
+6E685CEEC76F5884B37F94D8FF36D3FE25A771CE4523D4F4D7D53904683BBF91
+18996F3FA2090CDDAFF660AD63D9B5CABFEBD576C0F8ADA93B13EEB8147C1976
+C0172D637ED71C995EDA78AB85C3654D1441DCB41083C4EF1A123980F96FDD80
+6D4190183B4153BC8BE62232A0D6493D7A17C1644057A21E1AFE7322406F27C3
+94E714925202996554228981A8C39EF9AFB30F5EBCEDDF39DEEE3824D78C6437
+FA7FEE75F3B2280DAC4D76339F99F5848B0BB425B127DCC6EB20C1CA50A5233C
+793276BFA23F8B2CC4E061BD5797563ABCD7DDF79BF0957436A26D32723EE772
+AA63FC5F282FB238676439B1868946D59ABA007C5C5A2100A0878AE07DEA3CBB
+B14FF6E4F69F2A443D7551A6BEBA2C1654E3A8F3058DA2DC0A26CA05C8724013
+39D3B730E70893F0AB453F43DD2E802A46CF66A3E67CAAAB0C4357F167FFC174
+A9BF4E1BEBCF56DFAE9C5A76577FE0AEB09A738E6BED9E62BDF7BCF5B624312F
+E48B9DE428BAF38EF9AF8F450CF90E8BCF452D1888C42CEF8BBF2A75953E1F64
+AE35EE604F03199852323AFCCC72CCB2C20C489F2514BF347BBB5930BD425888
+6FF69321A007E21D77F57367F9D41E5D0E01171E96EECA01175F3F85A946C621
+9531EE5570189773AEC2E9D9F2AE5E4CEF742E80FBF22B0A3D4C56D825689D81
+6F6186E00B39E9054559F4C05D35EEA024C8B2AD71F0573BCD1B781F31BB44E6
+FDCE0787C66554093121FB5DCFBF83F06092DFF4E1FD10E6195ED375F9B4AF57
+0186238CFBC277EADC64675C7A9F2F2E17BB2652024C2E9AFBB0D9852D6D4B15
+2ED2EE3374436C58A78EAA552617F8694F123FDA2ED16E7E2D4C45593E0EB4B6
+3257A22F303D0D0AFF77A320967E5FBCCE40BA0FEBB14DCD0649B63A68C6F78E
+53DB018C87D8FF4FD1DD789159E76F50CAE880AAB7850FFD309B0B929A641DE0
+FBA51339C4ED5D050398A37EEAAF4D84EB7223D3557E846123462EB60CB8C35F
+8B5A628A16692B1EDDEF9ADA7C53FC1BFC1159A2290682ABA5888506482FC7C5
+26A27CDAE23C5D7079FCFE42CB1BCAF8358886B08585872528C6699442358D53
+FDA54CBF9A6D5AFA19450A5D394D209570C970679BB11806423E7A451D7811AD
+6284843A4CBB0B7591646B650BDB39E17C6344F846A2F3318CABA7BE6BEE67D4
+712AABD80A4623DB2D797B9D109B7403C46659EA299C8274CB49E9D31A0A9889
+5747621182A9986751141890719C900A785C4DD03C8476C2A3DDF1FC85441D6D
+089C7C126A72D8950A453C8C40CF92FBF4107DCC4653E836264BD29F584E1B73
+47B9234FDAEBF0768968BB1F75871DBC0C39CED01611F823B6A17742FF4C407F
+6E514DA20DAB72B53D3752B3F2CB8AA720A3F1A4E71938DEE47821E16E97E0F5
+32C9F57335B12B0CEF6B20917C1CC06F035E23F93B6376BE83467C23F0B3A687
+57D9616B932D6BBBF181B6DF116B3D88E5B6B4327F84A16DBABC9ECF4562A96E
+D89A445409AB5599175743E559E9C642361DA758611C0D56ADBEE0B686AF487A
+EF7EC4FA9CD87239886968B7FC3144313F5F9B90D1A76E45718DB65D2F44D123
+81189F26088D950335E085EB3BB1BDAC3AEE5F5A1AD7C44BD119D04693454422
+CFC2855C6667E64CD8FCC76088F3DB888DA386CB77A060B52930576B80E6CCE1
+D393E689AD64D9A3A3BB37C0EC3CF9286488CFAB18D656E1A0F1B078BC8F5D63
+4B56A82578844BE89201880C0863BBF7F35F1983FBC70C5D6372E298B877E6D9
+89B3A60FFCD876C5372605CF2B5C6E3EB4642D14C75DE75DB264111AD783D49E
+F63C3CA3B6D27A2BDA9C9593E6AA5C0A851CA1B8420249B8A3294664BB8025E1
+EF9246BA8D12186C6EBFF3EAE52B4169832CD1E95EFC52F70F0AC1C4AD47E661
+80997CAE243FD5F4B924C597F32E0FE4E32BE29C6063F4813DDCBB96F25955AE
+2E691AE1A7268B0592C934FF2AC5B6F7F54C8858406D1204EF17B09C3CFA171C
+5FD08034D00EF30FE2276F9E1C0788FF3CFA161EA1B9F233991B949E21942DA0
+B1026B5EF71B85BF1393E114FEDFD47189BA3DD480D3633A8A208DCA897150A3
+C47EAA87B8789E7D57543973497D119AD04F4E3FBFC5DC7741FD7645CEA76742
+8F2F551AD179A45C361D5B314692CE4C4E5A571583804F35D3A45A941C46E168
+68844DD4CD99284F2580E45DA23300B47C10B666E1F7B5C25B8BC054ACD1DC44
+12668056ED2E045E777D11836A5BFBF6B1C79AF48659C57910472C8232C37447
+328185C6FFF6CE1E24EB9D29D0B21E6F40BFA843E2FC6DB59A3A576EA7C26F0D
+9275663D03ED3AF206727909CF6E82B1916FED911C5390D4089E33E01D3A3580
+EE8A6D35421297812C7250FAFA6B333655B2A249BA8489146EF66CD31BB734F8
+EC289D5B6541A15D423BA486E7D173676282FA6A12DFAB03FB706DBF0A2C0332
+DAE3E859146D2ADCC1EEDF29AB5E98A4B4085F8F312CE94E5448F93653A44AEB
+1DB10210A1EA1597064BF3BDC2BF8BE227B8E0321884DC1B2C1F426370929D30
+22D72F8329C8DEF5D80E6DECD597158968F60F4B5F910537749E1963C161DBD8
+83D94CC3C7A334722545D617B9A8586489D5B866429D9130E785AFF3DB7F5AA6
+571A01DEF40E75570CC9F48C4BDD044C5D9412683C282406BF2C5DA0B0661528
+7834CECCAF019ACA31D27C4865A11BB664EA1BE6377A972E76A05F12E697569E
+2C400B018F1EB7BB747BD91DE1557E8B85F890A983D5459EEC773DC0CE99B403
+B15CBA9EED2EA4887C7961E8B62C566CAEE124F329F21BAD56E8CA6ECE16A249
+6256504DDF5C84F5D1222076B4DFA6FB430D2142ECD3765B65DF8A6C87278435
+45E4C826C1922E357DF688EB6F4A6AFB6438D94F7E3C444C0372B7C7CD26AAF5
+6C7B8A44EBE6DD58CE6F878747F7E59FFE8F680661EFDD36DFC4771EECE0403C
+F83B20412E006F32870ECF167167974906F99BA655BB23E5E26288535A4AE670
+D3D087F96E076E060AE6A3544570264FC780DA250805993A69D237712BFFE3AD
+E587B70D2970692918D3F80E38A769697E98EF5D034C9CFF6D8387D95E16AF89
+4B558561839DD96439349C745BA98D28DE129BA9334EF36994171DB9F358A41E
+C1E7CEE3DB6B8CA16E93ED1DABD8C89AB3BA454C20F201D24895D2F2186B9079
+B15430E6742BCD6DBF54A4915CA100B043B341B489F9AB72F5AAB8546E1B2704
+E4E8D752DC3E90B1B153A78CD30E00B87B9E812693BB5F8A72BE121FE861DEC2
+EFBC76D20201C0357C93662F6243AB7C003D51B1B3E4C94830361C81B606C747
+6FE16472E5FF087A25540E66BDB10A7B23641E893396A1BE38C102EB4C391648
+DD50D074BC2B3A10AE6E3A2732C5A94DE40547D21B7F9DC11635B8D6D6AC72AB
+4048758EA9F043295973B44B0917B14A8FDDB152D47E92731762B5FBE7E2D424
+A9BCEF2D296B3D8F41E724B6FA037540C465A087037AC77F1AA11A8AFA6B6E1C
+8960CDB46F764CED85F36A34D12AAB1B6722910A9233134C1544DFFB42B98D2F
+83A97B3898EC57DC07EC4BD53D01E467AAFE50DCFF7135DE13ABF0B826558D66
+5B4FC5862C48A5ED474B3F7BE7EFAB84D141BC92EA5AC299AAA26A6AB4C1DE9A
+AF8EF838CBB14C4959BEE5928DC77A84786A0DE55B91B86290651481CB528085
+AECE1722541CC470971F6A2DE7F4B116667189630CA8CBB78541807DBECDE55A
+D5CACBC8BF7AE4100130E499ADA3521C7D59FFF2ADC8826FB85A4B8A7F6A7B5B
+ED19E9C421D8873270FF623B39A4DB33ED21A32A6A282597595C1FF9E849CC85
+F7AEE01F8CBB21F75660B5520501226CD6B872E116BBB746FB9DDD3B3C545175
+0F4661041FA2A8F5EC7601C145AFE3DF783F676291A3BFE672C743CE2254677A
+646CCF082F592F8A2B074ED57BDD4AF9A5DD8D11C86694CFF16A0C67D1FA1C92
+6653A957054357BB9EAEA4C8988599D7B0EB635C03ACD63463EB8F449FDDEC80
+EA43FDD1B6CAB14E3D9B0C2AD3E118E0A0BEBACE1F893939E2DFABE6BD99BAC7
+96083DFF40B552F469AF20D34A434E48EA180BFC8E900F20992601761DA723C6
+1C37176DE8455D0D9D563CD165FF48348F3B5401A5F192F9FED4321E5E765DDD
+824ED3671F21A449D9A623264174B5D64904CC1B10C10AA482E25100F764D76E
+E73A630AC8A559DE6C260965DC16BA31B46517ABC20C5C3D89FC6FC187D0303A
+516C7A2C1C5462E313DAC0C11EAD5D7E771B42B468AB101F284BB94A82432278
+D77E799D2E8F968EA055EB2512EBB67607569173BD75F5154BD3E8BC74B1991E
+5224C3930CBE1E222A4568A043C508FDA7B3A9FC07C994D90DA667C78D28EDF5
+2CD2CE44DDBD236316CB70DFD53D179A78A01F3A0243A88B94B69CE85588A85C
+FFD9A23A0156293DF9A3F5FD01DB8E1674D691E7ECE78E5767271185C231EBC4
+5D91DE1ADFA89EC1A8FE743062D934120AEDB02006FE70DE82F5EE24B36E829B
+0BF2BB312BE578CC81F4F4DA811E6F25DA2D82173620AC20966C9AAEA2819AF9
+0EDE7FD2EA43F7C02A52DBC4E3E91F287D115B835646E53627A041F700D5B631
+1C9236501F2717B2BADA21C20CD9BA48F7BAC488913DF34E5B8679CC4BA71F87
+0FA9968E9D00C5D0CF8AA0FEE7DFF80131C8F5736361C016BDFCD85E28DF8239
+8DE792BC87B0886EFF1D313EFA13D6486478E6A52F5B6383CE563FF948DF4B8C
+33F95133650F966B3D38E9AC0C61C47527193CCFA54EC6368542691480DEF9EF
+0B74E4382CD2D7EAC72D0DDCF86F9FADED7F2E11C10F992BFD6C74A1AA8A1013
+D317438AFC7F22DD3C7EB64AEB8C8F267FA73F398BAA4434254B993FB12E1922
+EEF8515BE3CDF0BD57C1F0433F9ED466963E0136644C0A4280902C1BE9A86656
+729343D578E0E335407B7D73B9E6657E28675941D76836073E1BDF1768E657E8
+9A06266FED44EB127C0A20650528E3FB33D5771EE49F579C7A70E8231E093A59
+4B8390600524F0198C313F2E6AD936B382098C1BC7FB228F5A647E7EFC382F93
+AF398A0640C5999880057A5619AEAD4CD6BC34F70E7F8B9D5EA6BFCF432C6BBA
+8A23510A0C306C5EA0BB33407C56ADC76892EB7407110CD7D2B2B063F870AFE8
+B1ED86BF1593426FF9CFAB3082CB3ECE1BC3F103E0006B2BA846DEB0A0ADC549
+1AA0D92AA01094F8F5CEFA6C86FD432B40D010C148EFADCB035BEC296A4D6F38
+12406270DE9046C76E80FF56FEE665465BE12AC6FA74C2F4C648D29164248CE5
+8831C4BE49DABD324754CF75DCD125F59948B2B1D1F0E116DF84BD02A99E5803
+1D3309C72875BEF544DC1BD37F4AF566745A2BE93CAD7E55EEF5DB17BA290B5E
+DA86BFE145591C2034BF045006BB8D59AC0B1C585959AAD12B0B50C2A6175093
+3CB5F54B957712912FC0B2BEB6033012D928859F510312EEB5374ED10CFD5C19
+8749731A97AB9DA6A2A63C44A399A1FD09FF17AF1DFE301232A8383A6AC2F797
+40A188F69CD72FFC973B0BA64F7BA901DAFD00F28F986582D9AFE5DA387714E3
+41B60BF69D803539F0A1B0D3D42896D449DF4411348A00C05C38ED31265DD53B
+967427E22F0089F357B5A39B81C1281248214FDD1148F92E75761D4D7D5E8982
+95CDBFE275FE44399FF05DC34245C4BDC38C4F7D265A4F3C1E11717A6F3FCE2E
+720FC5142AF5CEAA75CC1868D172425A72253EE3EF7CB99A09D1E46609E3A935
+0F39505442E1A756FB0AAE7D30BA8D3DDD938D0AB9D746E65349D5705B36F60B
+335DBD91662CD5A12983EE0161F8C4338336575EF6C9C6842E0611331EBB34B4
+DC778CA9FE0CAB8839FD80D19AB95CF070A73CFB99467256F91D37BB669A470F
+C5E25FE5342423A2969CEAB12CCBA86DB276A8ABF9BCDBF377C187CA63BA2087
+FF862833B9F03FFF0132E790064B08913C625E7CEE675C1D4226AD06B75C49CD
+DB8CB63A2D32C57031959F177AC8720313569A540BFD5B31E92EB12A923B7329
+A128E58C06A6A0A056FF16F02B37270C9BC345B8459A7A66E1BBDBAAE72547A1
+D4D7571BD1D23FBA973C096C0ECB08E93EF56EAB20D009C7A1A9F396151964FA
+57DD810E1784731BDCFAC8868F84C666009FEBE9452934099E7DC25EBEDCA33E
+A81D7D49A1FFC7839AEC3A6F621C7170C6BB0F13A2FECBE5A1590A6EA8934E1F
+7396AB950A313852EE08A87B98F103C9E67AB7FBD9641DC4D63B0708B2401D9A
+D2A864D1DB420628B35A9908E9AD019245C30312E8E64819C1D221B964CEA54B
+A195B12E517CF48AE685D2B50D34CB38B685370E762E95455ED521B4D2D9D441
+AD04B19E87CEE1E101E0F6258B66E470A0068EA4ED6AC706D7BB0A4B7A9F56D7
+E166CEB698465FFA3FDD7F63CB9C2F07AA7221BAF32E8066E1608D5CBBC0F1AC
+D7A8460668E59A7C8DF2AD01851199D997CD10496D687413D05E934BBD028721
+EDB1CBB81993265D6547FA78E7BD9D01FF60FA333F90AEAC3B6944D629F5E9FB
+5F8FD93E49E4DE564F9441B83BD8D93D6121C76F8AB0DFE84E62F21C34585514
+CE0C80F8BBCA8E5472404DE3D990015828187F7BDA1D66C324F9217A3AE1C9D8
+6F5AAAA20A7F6AB652BA36971B40C4F0A90D762864F8E2AB4F5327CAB2CD70C6
+F5020B01155F908799EE5B906487A3BAF15579C814D94BA8A38EC38515582A40
+439F347A516379BB54F9770E1449D08F89717E1EC32C305C2D6CDDC35D0D5F8A
+8189D3378D09D6B333C6D5B83CA36C7029FA7795C9DF09EA6DE61362AF79A5FD
+38EA53024DD44FB8E53BDB29EB2BB60A7A284EA01B429DFC9BBD5421C8DF7EA1
+93665459A202289AB7217576CB845E2A1D83EC6693FD3CDE809A0AAB042E3778
+F9506DBA544E1032F690F0C783CD4E7CAA58228247DB04F1FD4B90F3305B0B21
+002737BF3F1DC28217AB98D7632B6F966D9CFDAEF72C2973FF3EFF17E02AD8B2
+1084C5E4DFBCC76B3E1EB7762B965D2D8844A771F08434253A0364120634AE38
+54CE24483F46388CD94601F361FF3FE78A304C549B82F178D204C5E4BE9B2485
+8A39D1D0CE1AF954AEC6B2982EEBDF8A0FADECC33733CBC144576FCA8F58D0EC
+77431B64BE9C9D3744E26BE5FEBF912DA0B16AF22EFDFD92526E9A65431D70DB
+547D241269D266DE9EAF67A24B1EC9E329310DFC31E23EBCBE7FE8DBC78AB553
+6A257514969808E1E79E5AE3C6C24FA363E4F616F52B4724291996DEB52D8E74
+391357477DFD2A594A0B1F10B2831579F4C526B234BEB990A4223F0E5AE15A59
+ADD7112BDE6E257EA454C9E0D439D24E6412520CA5CDD3D5B85EB35934EE5E92
+404C808346B7C97C61CB21908AC35347545F7F426B363175D50AEC231460BD2C
+035BD4A94C40B213D13654E2C778277EE429444F098B2C81D37DF81EF898C799
+E645375E86DE4F00D18B26F303C3102B4E8EFBA1DD6B64E49EA81FB5FF52E94A
+281C8AD2733339FD58E207D80F6E225D53ED62F1BB2FFFE2764F35B80CDFF711
+A3B84DBF388EADE65A4F7E38D6AFAE2DD00E3A161F85F68B79DE87CE4CD5D77A
+73641E1B8E6B355A84740D5CA4E74EB3B245C261F6F769E789C855BC6985090F
+564FAECE25C11FC509D63C661A8E6A8FF1FBE8AAEEB3759CD25FAC35BBEF23BA
+745FE0A1ABA7A477C8FB63968B8AD3F7DA8E248CDA0AD67445B9D6F6FC034B99
+792BE166BBB0781BB3B5BE5B9EF6B3EBD02C01A4BB1AB7FC048A71F0C429B78A
+182BF84D462645F2A11A2A41CB1C94CFEBF17ADBBB9063B4F5D0FA9CDEAEFD14
+FB9E03BD6D5A7737FA1CBF6A7387F84178453B2419CCE7018184E0EAD5F40981
+55A1D215AEB571A861A1F12DFF84A17B142925582709DC5BFB6237C7D37D5ADB
+706179768BB1EAA959137401AB9DF46CD54314F93E31A4CBEC0E1C589134F6D1
+C3D3B273E947D09DEB0704A928571D1468C3CB347EB545040E07D3A670816D72
+764998EC7988C5A25E6D2403382866FE5408037BEAEE7EA98BD8EE300B957965
+5B79E8F4BC6F84E4CB037270D4D9FCBC0008408485D855E67D3CB8ADCF7380A9
+09350593ED80A9BE9CF77DE6D1D4A170DAFE7583CF6851970B14219A3A2B4684
+A8010B4F7B422DD699C167BEE110E3890699D710148550482CBF2BD5CEFBA8A5
+C1B45320C9D0C8838546474830316E1E238CE2704C12D43211639333E9AEB018
+68C7068212A440912FB4E58124325DCC233A8BAE6D634C9E47DBDF449974F42D
+1D346C206E452F1C1AAF76852A3FD5F156AE0FE1DC777E460DFF136FB94A6879
+54F0E6D4825AC0C6F72A71DBCEBBE355BCF1D0A336043325BE80D780DD21992B
+5240312D13CD85C2C2C9F236CCED4F364ACEB22B8712BC0598B75E565BD05A9E
+B579CD12D262FF8114D93BFE09D1EBE2B38C6856938C0224D6D900EA9E3C033E
+18F7C4E9D4954BBF699B4F7BF5424EFBC36C9DAD6A54C1304A425DA7BF3CC236
+CC82139A00874BA953C4581ABC1B6B06567CDCDF78247C090644C8101E0454F7
+37B42EEAA2743D855C90D03A0DCE75EC28AE7765A5AC7888B477AEE2922C1121
+FBAD4188E125B110C216A7AAF048F41AA81E7F32ABBF1A3F597069561BB6470C
+1FA96B179FED4D6781C6F70A343A9CA3D757AD37E73D062970AFC4DD6B54304E
+A9D7F87154801D7DFD1C45E0717387EA331B8A5DB13DA5AFE56B341FE296A775
+EACD862B7D6987BAF4B73B04455341B07BB91830868639DA3FD78C0E570E8CF0
+4E85BA82CADB689E7E5DE5777D0200DBF1691AF7A44D0E3ACB9700B1829AE038
+50566EDDE5A9FDA33AAABD737E5F73FD76FB021805406F8E525EEF4FE985B6ED
+178570FA9B4453535E38C6D3472BD475A07DB82B0EAE3950D569F7D0C16C17B8
+3737B780DA66F50B7F678B8020527277E243001434176C6E8B9B9DAC87139FBC
+30F676E3621F59D2F8F0476FF8C528302C7748CBAEB2997645DC7724FA8588FF
+C2969DD8921AFE6E1773AD1135775DEFA1EFD197C113AD53A656D4B7BC1613F3
+8C56B27578F856FDDA30652F7D6DB38B819D1E536B2745421DAB8F5E21932B7E
+20412937F8668163EA41BF6D7855B884943179FFE4F2C0C3340C86ECFF4B6DBB
+F41CBF9DED39E7BFDABE6AD603FD6202A47536E5102E7181FD60166EB10D51EA
+5729F7FBDBCA979A65A8FE0A387F78A99CC7E41D87E0D791EEC0136BE1A077C0
+19FC4B16C601DED739DF6FE9CEFA9E48997624B7C768FD5259D0766A9C94B0BA
+9FC8336C05005DFEC39BF559A36962F16F21F208F2691705BB19FE25AA2FB0D1
+DB727839FA045A900A0BCC2717A35A2FF401D10B7E504FCE43C58769563D8289
+03EB34FF2A2C34107C0D2F8984ED
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -3453,11 +3464,6 @@ end readonly def
dup 45 /hyphen put
dup 47 /slash put
dup 50 /two put
-dup 73 /I put
-dup 79 /O put
-dup 80 /P put
-dup 83 /S put
-dup 88 /X put
dup 97 /a put
dup 98 /b put
dup 99 /c put
@@ -3660,157 +3666,125 @@ BBBDDBCC34B65A7D17B8BE932148C39084A9C71516582BCE25EBF7C1E0D84314
095B1E04CC60718A2DC2BCD99B34202878786A58AE7C2F43D985874AB8A3F204
4DBD4B9240EE96F0487CB687830972BF302F262C6381B2C79773EEB152B712E9
34E8229E0B59788EB9B9FC1AC1E123751D1FF032610410F0847E6B9B9A575306
-53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BBB19DFBEC179B30
-7096FFA89BF7951FBACEF0966A91BD315A7E26E57749072B3F38583C06A5F183
-08BFF3CDCD59AC365E3B4C4F34AC30366CF2BD15F19CBCE5F93259A6C4A8CAD5
-0B9186BF146124C758FAEDA8362FE97F209BA5C9FCC5C2A7FC3981F26D28B3A6
-7F1D6C440909613246CF1D25767D45EDC8FE21582D6C4C2C678BB9E98974E303
-402F0394B17CF3F4CCF6940D3ED7668AB6C9DAD83D75B11DD3BBF2619239BED9
-A82B053CDB66086058524A379BA308D5043498471B6B043923A40F6C1BB0B71B
-20D261D529E3FCCE19871D097C7A434CE18673A6BE20C67AFA21F48213B6342E
-4E069367C51173364B697E890FB9E4FA1E8FE0EE6A8E8176F6ECC5DE736D4272
-3B640EBD341D5DA2B2F64F46339F7612D1CD04D5598F2286A87F83220DB31878
-F7E83F90D003AFE46B3B9103BE3E344FA1025DA3F45D309641C3FDFCB8815C36
-A563F017E5EFE9E9F15262C5F676C8602EF3F7AF6F4EFD60CA78847679729FD1
-C3837760E538338DA5F0EB8B24758E4FCDC922904A2740D145935233DDE03DFD
-17610BEE7050CAEEE6C705A22C3BA7FA1EB44D82ECCE837422363147ACE218F2
-DE186AA197D71524186FEB923E2AD093B00AF017AED4BBF997093F5ED44FF286
-124A6256DAB404B36D596739F883F7465E6C0DDDD8970909777818CD73650C3D
-8CE623AD60CF2CDAEEEF25B6FE0C7ACA99C3AEC768A4544E0FC120821BA349C1
-986ECB6F6D69ED8B6B3F77465665BA74AD091397F6BBF6F48A1E0974377D4586
-5C3DA4BE5F33CB86CDFDBF253C4D08382BD6D9D92945136DD376CF76ECA37560
-67729573F060DE73497A3B48229E45E17852459096FE82AAEBCF5DDBE92A7F9D
-8D1B7F8813106BEB2DEDD4E220717F25FCEA468F8E5B975813C48B30734139D7
-F7D65F4ABF157C7E13C16BF304CECBE2367511BF14030602BFDED6D2D0F40AB9
-5FD1EADCB2FF72F2BA0BA7E726E7C21FB9B4E0B094FDD6FD7912BC389C9C3C62
-57616605E5B8064E1DB19FF9805D872840C9B3F7873FD61951E87BB298B525A7
-30F4E7883EFC51B92A60AA1E5D6565E4F2D349E6083500BB8867977E2BBB0CD5
-7FB86FB5FE38E8A066E102E5326502EF581C9CA461E6A75170AD698EC27839F0
-ECA5AC6ACEB4AA6EF4DD71A0FE4154A1043E38D1923036D998A064082C293B41
-3D2440FB88F1CC166DA6BEE7B0BE62441F3D21BAB31CD80788DD1713D4F7D87F
-F130A1DF211A3795A903FEE48EDD3E34F6AB66413AF77418D222B3DC62EC4E9F
-B53937B944ADC8E5A90176FBC7EA949E02FE996A8B2F6879F0B4193A47B6FA15
-6A23805F40ACB43D778A4ECA2529054A2EE6D95495F280DE27D04505A5F3ED46
-3F9B87B8F8F4EBE0FB5A36F3038E16F5773181E6FFDF3230B26B41279BC3E29E
-02B0A4C6671381E680629DD54FA396BEB597E90CC554F3715D599185F787683A
-0C1C1BC30F40205C90398240DF656D5E8E79A4FB9E53ED69E6CCE72A43D675C5
-86EA8939F02CC6359A78314B3662A30F8F48DF1823CD44CB569D3CB9E8F0924B
-15B682E9787827EB92F340E548961011152520DF15CEE47994555961414D80FD
-6FF51E7F4AD38A7FA670CE31210F1D57FC3B06953D2E098B711B0D354793A804
-61D7ABDD46872F370D14F8EEDE07E9DA2F2F6F5A0B6017FC62D6AE57A5C61D2C
-EE55183B80853D1D4D8C08572E9A15F753DBC75A000CFBA6D7B1C04A2FC07E69
-EBF9833C6C76E8DF9345B1C7FB73DA67CF85757621D36EF0D33F392103DE58F3
-C0D7ED8003E2EFDC8383FA42FD054AF7E3025B6CE9A21D7FF94D9E2653498186
-81621CCCF53F7D922007692CFC3E88AADFF7CDDFD85B3A3DF27721B89D0F26CB
-34F987919D2B3F1FDF2400528A426010FD67481F336BFED8C546104CFE0DA536
-7E2056AB878E59CEB3D7B836AA794E98F7DC6B3F00B8B803F1D62E8837A27A9F
-CDEBB3D8C50E71E146FD39D15071674D0D4A1CC2F7D8E050DDEAA9CDE1A60CC8
-BA54B64C6AB7760439573412C781F04CB5E4C143AD7440819B35AD3872E8A07E
-687F96086AB326022E120AE62242CC62982612AF4C7E99C991AF793A24A36E3A
-21D30A9E9C475E97645A9141417FB632EE51258A3F7C52C12A5656C7B3BF2D64
-E6887418B020A6FCEA184FE311DD77F8CAAC3E1E8BCA9473E52236582A3AD1EB
-6DC2725757EB9E348AF2E31AE4035D0B3A17852673C97EA8E105D2426A28D367
-1BFB95DD775FA2E70E571BDDE80AFC982D9AD1F5E6E2671087262D565C0E3BC0
-EE89D0FF1CBFF7095238CB4A031FCEAE085F0BD31CD2B90DED17D8CBCE81FFF4
-4E77C1848E10BBE71B25B5D323139308D7499C0532F956866B8F056C3BF893E3
-9F029CA58F0B7A029FE944F791C0D644FDA80F1497E9FC7319ABBBDE8B47E9DB
-CF6F71E7AB2C8C0AAB6140A5F165F462DB2CF40060DDFF908A52760C9EE72286
-09161743C5F8C342C97CF14F67ED86F2D723FB605BCFC43760B3ABE9C88A549A
-8BB4B01D73821FA191D028E44FB2938417485BF4037170D45D2ED840A3838D6A
-4C514FD4BFC2818EC64C4725E4F1C7D72CC8D3982BC50C5A4ED5995E17DB6E20
-9350D86CC8FAF93F854ADBCC42E26B85CB15343CEA1AA2DC43E40AA823418D1D
-92DD7EBBF041EC62DA9764840D46A414B7EB95B5505147BDC31D40A157FE2B7B
-4C641B398A6039F9EFE1E929301E38805C26D1FB0E32212505B1B954C9CAF259
-E440C327D8239B1FE0BD976DE222C38AF2F3FDFB5DEA74954199CBEAC621D611
-30C13591B9C183BAF93DE896C497E461F4CA33455D4B41FD4C77BE7E7A8968B9
-7602BD7B2989667EB31D56C3169BAD6D48D1CC5DBA8819E88A7339CC92D3DD26
-EC81ED5155345321B9DD8BBC25B3A53D95531098CCAEA8617EED83815AE6DB19
-A2E97160B2226B11665020D19F419A851AF73C19785433AE958B68D48D3EAFA3
-77DD833E47592E39F6C5C159595C32CD08DF326BDEAA4BEBA3587F017AFEA9A3
-A3473BD086862E87B5AFEBF06A4419878BDEC99686D125EE11E76AD881E10D0A
-F5C18041C26CF62F07B89E7DE6D6691127CCF83F7BC7E7AB501324C2D44C05CB
-D0B2754F2AA37FE707C3D2979648BE7FB3C85813E0389FBAB87810BECB5438E2
-9082705FB9BCCC4CC31DACAA5CC95B4876601D8617BC0B0E8F006638DA8545AF
-DA33E5D59C056AACE716466544DC0CFDAD5E5EE60F2A68723FB9DD7C107E6C2F
-4DD97E89BE2EC827052011B1042C724CEB4968ED5DFA9EAAAF88A4C4160143E9
-0EFADC700B31D030E52609ACCD3F5BF346F642B702C298E11DD837B5FF0615E0
-F5E1239C6A6C8964A575533F9B939C17FC99EB384DC725B2CE842C9331A90D31
-3344936CEEFAD1CF2281FFA21110457F21705DAB57B28C24995C73542396D5C3
-927D082DD0B4C220E0680B547A5E3220A6F506A2A94267B32B26004FEFB5AD1D
-7519969EFFDD0540D5BB3F499CBA8ACF8BA23BF054D51271F958CCB03A3E5B46
-E8CA77CE6835B84071916CA149B8BADD510C8226825F3915BE719F1BF30D7640
-4B86BCA2ED6E43CF3DC32861A475B5C555DA7C34B1ACBB71DA16F1D9AC1AC459
-C0A217197561A827F2E625FDE90BE83B718583CB018BAD5A49DFC6FBC573129D
-28B466BF5A889FDCE2F5DE2B413BED566E49CA2374BF587F9B6C87F79A286B0C
-A13A7770DEF8E0CBDB53F20731E870162E3913581AD2F2893D8D4BD1C3AC473F
-66C20BCF90DE4C711D051B6A2D3A5A57C0DE38BC0ABC739E4ACD1E91E156246E
-6776B3EA66C3418144EA76297793E67D7C4A75605F612F832CBDCCBE60279236
-7E5E8D59A9C390D31764FBD10A8671BE3628DD9FA203C90B000D8867D56C13D0
-5123366778DFD71829A064EA9CC3CBE9C7E0493307129F99702BC522211BE363
-F9A19038EC98672E3B467BFCCEDCFE7C89865C832E4A0939CD1701D6B2E7D88E
-0211CB61AF49A4A7142F3C4142489D11CAC418AEC20A706080B7B81425783794
-A68040FD847CC21F70D67A07867AD6384380DB4021AE764EDD2CB3F963399A4A
-81DCBB3488D16096631DC2CB4F419E9049D9A79B4ABD73A8E774A7255B69885E
-47D0CE20B65E837CF0EEAD9D373058A6B2569C55BB949C4C566D4607F01D8428
-FFE577130A2F9D401898847307E445D60B8BD6AEB7ED7385108036FF1F4EAE5D
-52CDA197065FBD2F70749E38E5A90E313F059B24776F9A749F846788C2AD1439
-CACDC874C20C9BF9A6615C7C897600F2E3BF821E1799E40445E29AA9BD63B91F
-61B9AFF3B82634D1454696315961BC8E2D7AE1BE4E5080E721E8DEA53F44B690
-5704CF886FCFC26E2838BE675D1014723E4D56189B5A7E65A3C20A0AC3A0134A
-A44CE1A7441BE18660C783BE5813723D0AACD76CF8F076B58CA069FFB73AD779
-47ED97053C750072022CCA6655BD40FD8C55299505F4185CFB01C7C31761A75C
-3CDC009FDD666D82C15897007321F13C88D316CC39A262A30DF71F417035A0A6
-691BB4CC99ABA64602D8175999CF835AD999550F90699BC6B8195E5C5DFBF12E
-CA83FB05CACA501A66F49E65F5283883EC4827914CB72B9FEF723B010CD58192
-5528BDAA88B52B362B02FB31F32AECF4CBBBD6719187339F8F5A199663F56A26
-A90574A586FEA95BF0A3ED3B4DAA223F5D5FEC7B4782E6DBE7ED76E2575CEE2A
-49FFD60D976E6069F98F933F6CCB517220D05C9343AD7E6153EBFB31FC84D40D
-582274C484B16742CC4EC64E63A8B8D6E9372FC62976456B78F16184086BD180
-08FBCBCFDF94C777F3905BAE198090AB09C85130C07160FD111DCDA5E095247D
-A647ED88D7B75A2265F819D82FDA474FB08C08DB58B6B6B821382BC9A6D5FDF6
-1EFF0CA350A463EF9B651CBF84EDBFE2AC986AF8636D1D9A9963D401CEEEFEBE
-BFEBAD3B9DFE073BDC21933323E704182AC95D3D5C85E6E47800AF01B244267F
-2B5BC626B5CB796D2EC7A0A9C8878C1FE14ECC924D1E791561073DED0F14F7C3
-B64AC2D28F396A4C9B93DACF026619D3F8BDB54FD04BD9CC183FE4CC7474976A
-60320C568E9F3850C21FD2240914E4262B370E6D47367E2B15EC09F377FF2F4C
-D46518B529835A89A8FE1A70E24DB827D7BBBD756A50603099BE248B318E8D32
-96CFD61B9710B3A2D60B5027020807951138ECC206C626C3691589935F681851
-779ACB632AC58641E5B59ED49B72A5B3B3CDB2E5D88FBB113C6C4807AA344EA5
-F1B3AB548C7DEFC57DA52F4BCD41CCB04ABA2570DF9758CD55A622C533826EB3
-43F42A28A5A348FC056E974D1BBB4D7213FED3D8C2F862130F299481091D46E2
-2DAABFA91A9F8115DE79D2CABBB7686CC7571251CE6876D8EBE71C9EB45BEDA6
-1F845F7AAB768498557F45F5B94DE6E59BFF0B336D901D4503A0064F64169DD3
-6BF1D67C73C1365924B876F94C7484C8909D567300AC73AA4246D043A301E80E
-5E38A79B2090D5548B633FBB39509B346D2E7510FF6F70E54EA642BF2765DBE0
-3495C66A2E9F3DBCBBA5851F0D3764780499D416E002237702C32E492EA02909
-5ADDA6E8FC7314ECE22F586A05FBEA7F35D96CB2D1892AC9A78656C2AAD47182
-9029C3145F208608B4508AFF111EAFBCD37690D07E31ED18AA94C10D62A12844
-C3808AC8DA5CA8F2D99394693E190F6C02AEFC60A637AD8ED2DFEBCEF08EC3D8
-86725D3F852A90FA74F9CAFBC12DD0146EF2A741B9491A43BCA08B9D68765233
-247B74F12712204D2E66AD91F44B392002B57E691D541EC46B0692A963C07496
-1B8BE15305139D77C92580FA06D9C809B263029117B82A0A78ABE9C6DC0F61C3
-A8ECD12138927031B9D1CCF9A7BFCB7F37873249A7CEE6E49998420B4466B06A
-448EDC2F4B00C73FEF997171AA4364DC49DD5E3D59F31C9DC29064CBC0503FA4
-0188BAE53D62C5BFAA13835C14536C07547DECFD8DB00B7B9590B69D29733E4C
-27B3D020EC1843ECBFD4F1C74D210F7E886407874F52893D5E4D960C311056E5
-AAB46CE02CDB2D14F5BA22AA8AAC05CAF62CA950D6CC279AD6FB80BA1194EA2C
-B380CE9D6F03613542860AD8A21D35C300FF5881885B73745A87228642D981B9
-A19DBD36CFDA547468F0259715F564807E1BF59FC29D4ED8F8A394AAC4609C24
-FBE3F169EB8BC230B5788BE64846AA1E4A92EF1DBF768AEEB465025CA94DAB15
-5068385CE16A9995FA5B117AE9B7BC9A21A40EDFECB2CF53E48FDBAAC9B73C73
-D1129088EEB0C16CED9F042A1375A6E28586C7CCF7A7798CC4F14FD6AEBE9341
-DA1222BA55114253A32A7DE2FD81A269D801E61694A7A5549FDF6555F064AE3B
-DE3B689D8A89840976988D9AB4E9FA38F6F1F563AD72E769CE32AD3764F86226
-327CF11586E8711493731FCBD0F88A02BDA98D73EBD6AD50BD2E1416E01ED0E4
-618A830F6CA2DA58CA47680F705E026B53063D0DF143C59C06066F4A4F0B4707
-C28414153F1001B54E7C470938B972C249EB2B65782FCD0FE61ECAE1B7459F23
-FD9637BD0DAFBFEC2F1E0C715A21F13B6EAAD1017938169122C459F1BB9B56A9
-6D93C017E2FFCB4F81DBA0933A2F37C42C0673336124F0A696F24A58021D9D77
-AC5E73816149EDD6EA75AC1E485CE60E08B84059CAD12A6D9D4C969F0C9153F7
-DCDDF6DC1D409A14539FF828799AC16339106C783DD589E71274B5CB35A5EA3B
-ACEE350AFF93B457C0659CE844783EC57C26BFB35CD43EF81190B9773280878F
-6AA50BD9833F4D7DB73A8BE384A08C9A45401E6FC9E1E3ADF70FC5A0BBBA001A
-2A5ED51A820ACEF131B5EF9E21EA84945F9D
+53FC00ED82D0BDA8EB008F2380FDBA06D2F8C0210A261508BA95DD600436E0BF
+5E8A00CE3C92859961557763D413E79CDD37FDB07131FDC420EF525CC0B5377F
+9772D3876DBFDB57FE6275D187832F2B7A635967B201E70B532E85838ED3874B
+82B36AB9EAB7DD4D2B5C4140419CA04E87316E802CC93DE6336C22FEBE80C3A5
+D43A0F808E5E6A17F7BCF812FF5EE5AC1959E07F36B24C9192E375FCA3C0A84C
+1D1DD2093D4F151B9FEFBA90DB4E94A1D68E49DF5A715A5BE04E7B7D8C384D61
+5DDD71F057FEF51DE7D002AB3BFE0096C47EB3AAC7B89EEEB9E2F9CFC6BCDFD9
+A438C1097D5253E49DC0DE5B6E8F976AE8894914BF8CAB5236C8A3BB2A437CE6
+374D96AFC592F1238357817E1F2836EA763A3C0DEA2DD3F7D758BA61307C21F4
+796A18638504797DD9A5131EC48DB0D23FC9A3E069B2FECA5B36A2260C6FED2E
+6EBDE3AED119EDFA96B837C56202ADF7F7747291A43CDDED6EB7DB5B9373CB78
+F6FA0B92BB2C17AD8DA549E878D8DEA681028539E5E2A223E2F9BA4CA09A6FF4
+EA195F1EAE62CC33F2282888962B9032D1C83EC4EDD832866A472426EBA6080A
+75E02F39CE0421C5C06B9D593022C23D675D7BE879FCE0B20A9CBB394F9D3815
+9C847518BB8DDBF3A89D699C1FA84E704B02BC85D61ADA5E548CD8DBE269A3E7
+03626A0FEE75E116F95B5D31C73BC852C5FDCF524542BFD9D05D8EB4B2A114E0
+C2FFCE282CBD87D82C1D4E64772B0492068B139B1795E287899CED7791EF5C8F
+E77391C51552FF08DAA85BC8B9896CB5C792C3E1C4D44E3CAC1EAEC02E4B986F
+E5059463613DD3643F8DCE2264FA66D712A0DACCF86DDAB315393219F5EBD18E
+E220AD61CE3C67664615A5F9734421152382E8EA9CBED8269ACFFC37873BA329
+20649A6F684D31BF37194952496E8B962B75B83CEDE72F0DAAB761120B710677
+F3AECF2A67F512F7C423B1DA012D0D0D44F009346C4953447950F514731830D1
+59D01BFF4511CD0257D5ECC2CC4A859E0ED92627F659547C8F137DC0F49F06D6
+02F624EEBDBC779FBECB1816A88F02B3565A9C3D42E919F755F3D80F6FAB681B
+585B5A49F62581EDE1D1DF1906007A8926932FE74FA2A94B92026DE9D678EA3B
+ABC3C2EE5A3757317AD5F5CD361A511F4019CAF77C46C8FFE4615CD6CFDF7F8C
+8CD06F1A2DDBD3BBA03FBBF8DCC898EE71E7D19CDE66971150359310D0BB68B8
+65F3E41D34C8D063A71C27B6C0F27753A9E35D291477858E5B734D72C40C4573
+203C5529340CB56BC00EA0E02B3DB54173E6480D29D957E6735146163980F0A8
+CA4086192E6095F411939DD3FF19854F8F58B39A23D3ABA22BEAE05C4B6B6845
+98968C08559A037DE955F77359FC39249C1149BC4634D10DAABB086A23D9A37A
+73A61EAB63BE3B1A8D8E76ED94E731169E892B469056757EC885D8AC4FF50E5C
+1D80EFE20E40E26006953C53D765B3BCB4C5396646DB3AEF01F939BD163ADD87
+FEB1E55A73722A0866DEC922EFF8B06AFDF2FC742EB1CA422822BB378310A994
+794062BE62D5BC4D44C25655C902F4FB4FA63CE21E095E4DF3723CFE7D2D961F
+10A715B194ED855942588BDA460A28F1B5D849A34D85756CC8CE874E2384AD9F
+3A1C348996EA94927BCE9715A8B229C0D7FCC2C07592052796D7BAE23DF895DA
+1CF991E912EAC97601FD79F35616A1F23D82647BCB49C360740CF010CA4E8ADF
+97A9CAC032D12919CC167CA4C2E6C60EBB4AB87C8F2BDF71E28E91A9BC96056F
+5D905902AE964E5336CFDACC8C5CFC5607D75CA5F364AB8E9A65FD372BF15FA9
+0CE1519CD7DBF31F92D2A078754E4BF90F3121F6F698DEC238404EDDD4EEA153
+0335941E4EB8F08DE0104FD8633BE277E9ED26FC65D28FC1D604D8504B2F788A
+11E2206ACE8AB33D14CE9D4CFC917008D44AFA2B1877C3D42455593889867784
+7CE696EABDEF95872F065DAFEFAC253F367D47127CE76FCB85BBF0684DD1663C
+876E68EC35B21593A10EA5553311880B8EF744014CD1ACFC067FDFD46978BA23
+C86FBA05CEB66E67621680BEE0ABF82364D4E3235A20033437C6B84A71FB34E6
+F8A160AC477A1302B4F98D00FDDB2A35ED9B315700669D9D8A3D254F786316AF
+882CAC6555A766281A0836CD45D8CD8245CA69729260D54C11DB43032A0FAC0B
+05869ED0A432CEF854FE665BACB0F780C9123B4DA1E1895F8717DDE4A58BD3FD
+D214195066D4587463E839EDF667E475BC04EEDAEC41422AC9BC27C238E88318
+7DFFED5D04AAFB1F63AC651B1A4113B7CE9838ABAF75632EDA8B5EE0C8474678
+58898AD595ACD99029DC34EB4BADE834C04444941C3D8280B93951A9E8554EF9
+5F0FAA218DD8224B94807CE2D8DF7E4A5E2B28C44A551DB0708B5D6D5F000B96
+0422A8E953233296B6E5EA698921F1EEEBDF0C5CC72263663895940B4C1EA28E
+E0E3AF21698D5430D6495E32E0D5F5E538EF835FBCF4A96DAD8F011B145584EF
+1C33809372DF602D1FB3D80A4EAB65897F672642E4317926DF178BAB6F9851C7
+63613B3DB11FF07F9C7582592B620C7767D005D7B0C28AF2D309E6CAC222055F
+2C20A58AC1B407641B483D571B9E959A3AE0DEF316EFF7A4514D5313C47AAFBE
+82CC583BEB32F20E4C3A5650B58812EF357B68F26882D30A6BBEBDE64E2FD910
+AB8D974CE5C968C7D34390529F4714A9F1D2373DB1D912D418225932541FB250
+9C74346749DE9C5662B1C40437E783A78A283AD6EF43B2C111DEFBEECEB17ED7
+3630AE404B310F1148C82F4969A794D945CA5E1C18F39BB6F9C46EDC8BC3C88B
+FAC2116B2338E1AF9C975ECC8474BCA351E3FDF89ED4352FF6A3D6C7EF7A7BDC
+DD4B2DA9E7C77F8A6623B670963D2B9B9A80F8445E17B85194AD45E02FF10484
+85E0A700BDE9F574487F9494B424646D48999EA67D469A22B9CB72123F31EA5E
+51C07370BFB1C5EDB4ADE75E7111A0116C212920F1362353BF58F33D7E8EE680
+DBF8085B46AFC40ED9FFD7AE756CB267D0F321FDB71F2DD35FBD3003E91E2758
+3DED65748BE5CD0D2D244E8FA187749FED44ED0C71056AD954FCF656DE28E70B
+93A79EB4D7BD59E92911EC64EA794732A79B9908B7C6DD42C99BDF07AAA06E07
+5CD6497C489BC56B09E44D22D0FE69521A9BA20ACBFDAB8EE718625711BF479E
+512FEC4A8F9EC7CF66D4CC44E2D0EA1235BF17C3D0AD6859385CECA3D4A640B0
+762D325D3A449BF7115CE8469A493C494721D6636BCB9C55ACF1D0F3489E5534
+4A76A8F3E3AD6252D8CBD3EDFDAC890A7B497286241AFE35B2261B66018A1523
+4B9FD31AE07A6CCA6B91A176BC38BC03F97D71F80270E14B83B012FA5270B7B4
+73F889DED2D4BFB24536E495F96BDF408E3840AF1567E9960A4F22F0B749749B
+C156336BD7F349F2F82CE54B459462CB7C9846CC090E752DCDC871FF0873076E
+8885B0AEF490DB0C9FA98A8FDF84EDFD52AB0F992EEB236A79FB8FB52718EBA6
+E0D586512F81079D468A75336540163B966670B437304F3272CF6E49252662C6
+419E8B2B14D240A1DB0CF6EF14E024F9D8C6882F865D7E007B46DB65E2E6AB1A
+22C5F096B255E91CABA7C441A3149FFB4E19BA97E5D43779C2A80208E279A91E
+8B8A281C079B819BBB6A5B1A62F34D59B7223D9FBB5F5E96F0D9AFEBD3CE3D57
+A4C4D2345776FCA140EA95242C8AF1EE7B93D2676209B750ABFCFC8CAF50F578
+4C364CF8BC46839A4379624D56B7B917743E9D6A284E7B315D461ED66B262413
+A9AE1741C633A92061DF92AAF78A18586CDCA41248C586F7D272378F9CA76980
+202A391CC9FD46794140F06CC75AF2F4986D690939E083CDF9B96D066B1EC8F3
+DE3B68AC8FAB84970B1A199B3F3AA5BE27ED8119F306CC5F26230C16E9D9FB31
+1EE9D3F5175E4D4D7A8A2945000C37BC73816AEDE6F2AC0F09B788C9988BA69B
+82CF336482F490F05725696EB080E460FC03B3E28C1B3613C8E5FE3DEA048D97
+4AC72C9955FDE282FA8C8385B30E3A7EFE247B48B370DCB439FA721BED19AF4C
+FDC3D3543A25A4E0273419B6CDD7209FB336C1542BA56257E5D31B70529C12D7
+524617868F4F3B49799322EDF504750D1BAAE307ABC4843704B64ED8AD4996B7
+5193CEA660390527734BF1448AC09998E70FF15BD70F8B6388B0A987CBC783FC
+990F7A5EA016EBC024F12BC9812C7C4DD6E991DB89415A49D0B265E453732F4D
+2B6BB50E995E719B00DEBE74E7D1E291A739C4EAB39B5A61763DDB65BDA6E1C9
+17C49BF1A76546BE0EDAAA17310AB2D01BDF059B066263C8FFBDA53281C882DA
+E2DA35ECE5B4454C8031DBECD8675B60E54261A7D1F70560C6D8CBAB436EF058
+5A0189426AF00AD7EB43FBD13976D8D769ED2639ACBF613A308C941CDB5A632F
+F76E14224909A8E7E45B9B5A47BDC9B7B3E3616AEC4DEEAF2899A59B6E144802
+534109EB0E3ECD270E417B2E9CD8D27DE637AC798ED5CCF791061297A0B218A6
+1188C03BAC8DD8DD783BBBF8C4C9AE98E8F1EFC4684CA4BEE6D533458BB229ED
+4E31392DC4591DF2D2D07632EBEC0A5FA2C4508C1FD48D56EE871EAF4A84AC07
+A1E34CA2CD81ED369043998A23DD01301D41C582963F07EC3417F09ABF45844E
+A74F386BA813F0AC462FE268407B9D2A8813FFCA604C342CE82493DAF631B2B3
+B6D3E9F3398761C4B958569F0D833D27973B07F9DA9D84AC512C284844C04866
+74A325E4ED894F640B8F802097B7C6C4F04BBBC8A7BC6EAECC60EBBF4E676A30
+4A5D0DE4AB45D0C913CCEEB8032D1946A35928BFB0FD76AE324E7E3CEB5B99C9
+0A0A6EBAA6F6D8E4292F9C5408D3859CFDEBFC9413032FA1A6E194C5F616A3D6
+FB0FEB8966534CCC9E6D67DFCA105E8994810D8EE414DAFC80B8A95CAFA254CA
+CCAA72B84130B5E485529013A35040074072A8A63B2F4384D976BBFA0A743C5A
+0A079A2CD15E598801AD121303CC37A2FD3942776FD1AA0805BED2B646D4D1CD
+9DE65CB859735EDC177C5A4D1A54C3E8BE7A91BCA91AB93A9DACAC90204CC207
+8432E95B2C47654DA02EC1664566E2137860F16F798E0A1EFFC819F4304B0FE2
+AA54AFE0AF6CC26D417B0CC9E3F5F6B9BD6DDDE6A2D7FC4C840E4AEF73452D16
+241FF01413DF2125BA3563B3A49EECC8EC4D0BF06283B3C8242F362A546E71B6
+21F3C6DA63882992A14E295926387D66EA6D9F296455276D4FEF0CDC706FBC25
+57169AAF546A1BC72114A3A6DC3A1A76CE001962D771C267864A987188BF6087
+183573E3E9DED10D7023965D29F19C8950B6B9B83E680010995360E54911AAAB
+44D07524518EE59F58E49485E885F56FF2CF8D30FC5779770685C305AEC4262C
+B8C0C194C26F5E122DF5E4153316C971460C3B3B336C1B72
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -4984,6 +4958,7 @@ dup 100 /d put
dup 101 /e put
dup 103 /g put
dup 105 /i put
+dup 107 /k put
dup 108 /l put
dup 109 /m put
dup 110 /n put
@@ -5217,108 +5192,117 @@ F435BC210621851001B6A402E3A07D0F204A3B0D75DA3CD7FF6637D1F434B962
F404DB3C6BC318EF517AA0836A975C5196976250B5D6B21DF528FB47181F5279
E1EEBBA0F344D7EABE71904B5C1DB0FD07694C469085D50DF4990E294334E785
5E5BCC4ADCD38685147CE535B23F3027AAC01A0D65AC751D9CA289B4A8906A64
-165427976FE6FD699442196B0C247C960C9086AB2E440885D2C32FFC5FC7105F
-6C40A76A1968AADBBAD6F3C21FBC076F4F67DE62E1CECD38BE03720FFA886743
-846FFD2005F85371FFB9C962AE2D88586DC9DA2F98996DF8572551C3D49E1ED4
-41248FA76E07B2A5CB9C3451247F60C7AA164ED895CD6290427E828A7FB72F71
-7CC249C92A012C0FE99FC07EE7E084E190CCCB95E66A39EAFA7934598C69F04C
-68B2C68DF99ADB347AB05F1905B8704A51FBF9471FB20CCD3CC87EF9FD75DDDE
-125EA68997DDE4174DFA0ADA2664E7209E4EA1B460CBDFA79D033D33FA9C5075
-DB424689F927F06ADB87DF0C3F4600ADC9CDB197E41430047247E7645A0AAFFE
-750AA1A154498C0B5371ADB099C1E273DE2E367DDE7ADEC2CAF9406A67585AB0
-D39F051BC556A8E569AB9EA4E69557A1DFCB8CD459403A616821AC61E35DE1E9
-2673435E5969EE48F3B9F9777E5F70C682FB7C10E6E7FAC5F5732C9EC2DEFD5F
-9A28572ACC62C108861AB22894979195B88E6A08A533629295A58643F854BC9E
-082F9073AC94EE08DC1CFC626DE4D341D7994178E708D4D8226897B54CC2B4DE
-B37D5BEDC430404177977EEEFD7201713AC45FE927D4FBA0F2613A2FBCF890C1
-908E1DBCCD277E78E42363374E103BBD6C3DAD925A9422469648B9D8BE7391F6
-B448994EA40AF3A3EA7E6E938D0F93B9EBB4E09B5D2E8D9ABF1F4AAEE8A0A304
-EDBA6DF569ECD449FF362660B11DE8A13A71C6C8186273C7417C4572DDD8B993
-C96289B16223B271D026929B2CB9D3AB7A3511F09C6F303A7006705482E9AEF4
-FC76BC1B1FD42095857751315F5B06701E774FF08920342667E99EBBF5A19210
-9AAEDC8033E06007AA89BEFA5A1616095A8E90C999BC3EB266879EDE7D1218F1
-3CB238D180C463AAF853E315CA564247B6E029D8200B9DB7B13EAE09264A5DD1
-4A080EAEDA74C7FD21BB208FD8EBEC1D650C0AE392C67D65C1773A68F2CA313C
-15FE2E4A0B6E7DA9CE391BF6D854431F0EEB550A818B6B95EFE6F72504AF5CE9
-73DC8E3326E2E57F4031688F10D1C272D41AB40B7EBA371ED357E67C31DBFDA0
-B8412EDBFBC2B6F26FD7331BC965DDFB1A4A17B72BB94338283A8D9139B9816F
-D13C12E07B69E9FBD0C5FA9B1DAC2E51324695102DAAFA746D969E5F64980707
-228DA50443B2917FF685F5872D782CA265734036B7A7D75588C638AB9687D34D
-D0221C0B3EB0A8DFE91598F07CE2C35E1C4E01E26D0358841EDADA02D3844B26
-C39D492C480244124F422EFE57D38DD912EC98582F05C74B4ED83BE81C363376
-B816F23D10C5C8CA831E1351F3BF914B07F638FA5712A1E05E3B751E756296C9
-2FF074FFC22CFC383804A92057155C4E43FA4990734C83257E810F3C2A62F42C
-B5328A41BE80C23F49479EF84BA8D13BF3A45EC435781B9480659A4D58041190
-3DA62807723CDF1EE71EFA22BB67887DA88EB20DDC0D1A36A75C06BBA651DE67
-651BB57824E4F5264DEAA04927D2A29730B7293E08FE3FAE5FF493EDDC0F2232
-9476F3CA26707E823808329390EC9D8913AAC2D8DF2A6B5673E1A0F4E7E67C9A
-D006E7DD429BCC550DF7323DAB781F82A837C83C80DDB8970CE699153576ABD7
-4BA82C753C82F19E30B853DD086DB119C48ADA56C39352E3C6B1FA232390BA3D
-02482A6B845C324593FF845A572E1F026941AE3DDBFF83E8230FD5214B631EDC
-69E178C52B5FB4BFF0C89B756E759147596D038850F0A468B20163093F8BADE8
-FB0F718C66D82C41A29EBEC417DE0B72C4F8E746EEEA33F2BFC0063E2514456D
-6EC34CA68E1C667D47FB582C3A259AF4D0859C68AAC0E5F89CC91A1F508CE835
-E29B7860E6484F8B0D75C1635A32FDE55F119C8222A5D00D9C45930C9F5C97BE
-A28EFB48BEF95ABD910E66CBC4C34AF6299A84CA55F780A013E8B3DBC4E57F2A
-1EEE358D24775DEC537CEE09212EB3208E497330427706696335F03BA50BD193
-E022E668C6602731D51102FB7BBBF43A630BC428FCE711882EFE6E7739DC10BB
-63B60272DE6FE4841F7728EA80F871F1648E3478DA71BF29F66FC3565AC3C632
-AEDBCCDDA048A807FCB6CC497A1CA11C6E802C1ABEC3BD80E116A648531484F1
-722E3EDA1EAF6DFF1D3CBB1759C4AEF33A300E7770B8A24F7EAD130B31A0AEF6
-26C369A8DDD409A1343BB66DB2B2F7882FD168C008D5721B3EF2DE8B56EA35D9
-2E456FCEF55927D78D20A99B96EE83A25BAD4DB679511BF4E27E552F871612C9
-6B8C2D5BAF77B648C654AE0D9E6402998E07906B58984B94987216AB9EDB2699
-E0EDFB6AD08E25F2575E1B93157F2F6A0D215ADCE1D21AFB6E4DCA3635E2D4B7
-825A4EAF8568D1A2ED4D6E8C9C6DBFC08D259001EEA83D3ED9A416435A79B56B
-3F7B0AE9A5781694E22FC68152BB68409B61B9A59CC8D58CE1EA9C0DBB329554
-44E4D85F3A4BFCF8AD90771A203FEBD6EE00D118EA5833C96F1BC0CAABFE69FB
-0BCC46E7A3280E16976D86722168F695FB6422734512954A97AA0BA8AF8155ED
-2434100023E1FFCC504AFFEF6C2F70B1F2506E53648271DDCB82754F9775C323
-B77590E86374A9B01FD57FBDD3F3BF8D61CACB66909E6C95C81BA7B083913635
-30C7C0BB9EB7310F23D2991BC6D5CFA9A35AAD04B14CC5540A16C9BE0094A8DB
-058B1DC4D5744C8F89257A04B1D8544C1405D8FA71A780E92D767A170C269668
-202ABE3126680D93532C2EB8EC3A140D604C79906C626AB0185669AF9A425CAA
-465C3DD47810CBA44AD7E2BFCA99FCDA98EB641608032051AC5CC30329C28536
-F5637FC7E371BEFE11320FDB5B6530E513CB14122289CEFA88A97733E4F888D1
-23030714F61091B5ADFFE84E3505E32C347EE1D624AE666E8BC6F416F78CF6F5
-96FE5D12F574F8114C71A10596847A8BA0B03DEDB6AC72F218129B223F422908
-138A916F2605142D5EFF5F4BDA5627E59DAAE09A674B7D5BCECDD63BF5E7C119
-410A36161335A18A93891CABC830833D1FAC47B7A85BC9EA27BCE6F727E7D35B
-348918F512C3BF7769C185A277BA930170AAAC6708F04F00C47251D2679DB455
-F9BB928838F148C1AFEA1C56AA779C54948B9DC0E827706834D9469825FEB644
-6AF843E71E44D0380311A3A6D9B7543A6A24B475BEB483D63BAC1B9421211570
-FF9BEA65E81FDAAF0E00A1555B0A69C8355143DA9B547BD1AED32120C58AFA09
-AC34163ACFBFE0E00D57A5ECC73E522AF84A2EE0C9655C6AE6E67BF4473CD8A7
-E7F95AB4EEB4AF83ADF597547CDE2426F200FB8824E2A826356096B962F31B98
-AB1B27FD681C1F67EC07FFEE7240F704E925E62749E2D2C7CD85C61F14B8A03A
-666339793934155EB270C0C7B58AB8DF6C52B72038257BE0CDDD9B2A484DC97E
-862C67F7AEE273480192980A5BCD8CCDDB87CBED18899B09B0A485FB4A1FB061
-79A918589500995F12211C3E636FD1A7F6F746A231E42C80152EE4E2C1E65FC4
-4075CD6B10A7183C711573498FC034C82A5B66EED4F921646F8A9AC989F7C655
-BC0C74049D81A3AA11FFC20CD823BBBEB6E58FED16B9AC143EF2E2981BCB5605
-71C71C8BE4112AF04B3D2D9C46F948C8E3862AAF882871C3A05CF720DB14ABBD
-B0B2A5C41E35DA879B3109E31226C317CE405C2186F54D710AA503B8EC76BE1D
-BABDC05B316D5382568D4938C7D462B3009A648BDC22C640CE6E891375DC26F2
-A7B36C4F4DBF909B2858AD23DB71783204AFA075488322462A92F0E6739E0A28
-486BD3BC19B3665275ABE63BA5B31936B0097A08717141505568962BBD257511
-B714C52EE8CA7A37B3C0322B7F5A5690BE2FB23AA9FB322107CA58B4CA4032BD
-2026815102CD4688655FACF599739F8C10EE5890AB65B167C5FC0C8F855EF2E5
-0B3F95EDE6BED4CC277CBFD004B7D13734F605E1B929204850434638F7244B70
-176FDEDEEED09D16703108DF3041687BE3EF06ECC78CA7BD028A24676753F889
-32E2B027250023B80E514BCE566E9CAB8F8B516544EED082741972528E2D9D94
-29D8F03449066FA4412350A5549767945AF5E678BCBE884532DA8C66A612465F
-4E2D1CA7353C2F7E0418E1C989026583844702D344900E05FB45FED3401FBED1
-F63830D700F1EC2F4AED4EF8D077EB9903AE3E1AEC126EF9A03AC25D5FB37CD1
-8CAD9A29B803EE39CD78AEA670E2304EFDF0B9E52537DF6BDDD44022F0C00895
-6EDCCFCCD3430853617597EFDC25E915E4F977F9910D640FB088085A96E7FB59
-3570E01A50A7D4903E01C398B5F461BF23638812C245AAE2F5DE500FD2D44E57
-336BDD4B538C081BBFDEE78D8FC75A19F204A15C2E18BBE879BEC3F675663D3B
-73124D4FE6BB1AA1E6E5D6FAB878B479523CC51E4E734AA090DC70DF610CE359
-8357A2C4842AEC553871063A9127C952AC9A64FE3891CD4D0879B41CAAA2FF8B
-0F4336BE27DC0C179FF91D867FAB89D05E382EC85C2DD1E1BFB4B66C6EF9AB3A
-7A7FA0285EF3B67A1249BBB1493AAA17E355690753D2978D937FA5373D195D9C
-9F2A3F7F6F71BB04BC47EFC7D24F11DAAFA20FEBBE5098976E8C002629C7A5D0
-4BC339B70105CEF46994F8780AB84FD47367F996418E00BE7002
+165427976FE6FD699442196B0C247C960C9086AB2E440885D11BDD314A3FFD40
+9C5FFF29B40110381ED22F58CA53CB2407E5B993930DE5E32CBC4CDB2FC46604
+AE51C1375F9A41D7B5CB2B2FA52F65CB925BDA5CE18BDCFC46933071789E3F20
+C08FC64F367F409C38279E5F88EDFBEE38105A2469CF009344F9E846419519E5
+8A5EC45DE2F6837C65A883C524305D18769A563691F5887D920CAA8EF0D9D56F
+F208395E7390570C6DBBE5AF515BF64478059F922068F0E473C020E54CEBF22D
+495D5E843839912C58FDE0A61D4E390E4502E9973562BCA49B3A17BCAC0352AE
+5C27DA44578C4FA5821B9A3B03FFAA97E15E83CE09AE155BE919EA42301E6195
+F59C0A9131C4089E97223BF614A37B5C7603190DD465105AD86DFEB74E65479B
+BBCEC9EF93508604339454483E244A348A78F29EC4A60554E77136749A4A74BE
+F4DE4955FFDB6AEEBE19705EA184605994D2A5284C05A479A33D56FF398DDF3C
+5B474F53743255BD5F42DADADD7F71BAC446A10084DE15876FF74765654405C3
+470144E2902EF213A594FB721D0B0FD823DAC347777B7AA58688EA834514299F
+75A3C80BCF2FD24D19650B7D2C21ED664D290EFB9122C125F5DE1B2C4A817905
+06C27E7188C9BF3965A6A25A5A9C0353A53D05BF64FD4C226837AF6D9599BE70
+04142CC78E03626BF10D68CE17C2D081B3A4248FF392E985A6946D89BE97AF1B
+C6BE7E9820405D06F5FFC06D6304028E5697E8AE15225A8FE19CDF3DFA2079A8
+BA537833DDBEB6106BAADD45E9ABD1C7B5157C5CB26F971B0E7EE8069E3C8FD4
+A7A1833B19CB43DE4E7497D505AE0B7BFEBB3E489315842DCB3D6CB7E6E43AEE
+E215D011B2854A3CEE5AADB34A9CB5AE595F2F02CC5CAEA9AB28161FD93F3FD5
+87D17D564939ED05A5055029D1AAAD21726C1AEFA777EFEDF8D687D9F2FCA607
+CE3B585E044A8CFFBD6E93849467378BAE5AB8C02615AA974546C3D7AD70AF26
+55C62A9C4EFE256B5303BBD0B9E13544F408F8AFD7265425BE1421FE6B1E41E3
+B6D9C509B4EB820507F2B41A92F93A584AF62987450095DCE78F9862284F0C53
+F46B02549CA9EA57C9C4CA8A0BC1EBE947AFE73B8F7958853BEAF81D78E23C25
+3BEB6EC3823E1DC7524E38CD63577795EC3DDE03027369957906C85A22F9D805
+2EBD287C2CAEE0D3985264AE614380E421EF23453A68F6E616B3191B506113AD
+F6D569E4A20D3B23961DFB3ECE07B382AFD2CCB1F2BC4F3C1974C06C8652682B
+EE7ED59D4B2F9EB8492FF978747AB12E123932B34C0F9F3335587C7B8B8E13A4
+0E1EE5212AB1671DD7A2AB5AF2373B60B3353C22FF8128198A5245F9C701B6E9
+80E92AB14A77AE7BA217D33ABDED222EEE9B5888AC6653459EA8738703FF7423
+8391380AF83E56A3BDFD3AD43F2F00E87DB9153D99A3B358A38313A7E6D6B43B
+07804A9929FE01EE112C0B1960B286C97E7F563D552250DEB189F3467ADE8491
+9C25A473EC8D590BC6EE6E7F340991D4317F1F0E29737ED93D18BA4DEF6A6C0C
+F9A71EFDDBE489F1A5E27699F8C120DDBC96C4F3F3F2F90AC5014F78AF6517F3
+3C8E2B548C7BD7CA91ABC4E71930761D5C609CCB41B7CE490389C7CA6B1A7B34
+7130074DADA12806475998153EC604A5FD7A04AF35D00DA9564123A384E39126
+B228353532842504229FD646A0FA1C24AC462A75A119743C17071D0F3C370D04
+2FBBB8155EC868014066C6EFEA257752846195C4158AF9DF215C8B20AE276F50
+67AB636CF7A49D34B26435233460DFF6F728E91F1FC4224A7AB1C991C94D3224
+E75B5764642BF2972C9F72A347861CA23B78BD37E0902CE7E3776E347AB20388
+2F97386F31D1D41B43B5A1F52C11C908155E7C3AD9C818BD5F8AB022FE979EFC
+695DB2B79BE6264EF7DEBC936048FF17E81408CC701C0B1C742B11F6D9442E4D
+2BE899B3D354D07CDD71FB19ED3972363ACB918BF229ECDF8C5D6F9ABD5263A1
+81A0BB786D0A859C53BBEEF61872E24BB550FDEF14A66FB0C09836F4677DD4FF
+26FB82FFD120F2F8947B51B0A38F47E65A8019C88A1C343E144F7CCDD1E9C541
+640452BFC800ACD27D181077E8F59E12CFFD7C67DF26CD9DE94B87A16BCA14D5
+9EC57D1963A82E2E1667BA64E7C10015A22C4C6FA06B9D76A9CF591FBD2003C9
+116043C62347D68F99214E90E01E80D140B1D3E8AF7526C17AC8A2056B63E192
+031101D44760E5679C4FFA2FF739CBA5A80AE9F95DDD80973F32D0411F9A43A3
+887CB08E116C823DF5921C157390E1568C76B82DD9A7C69FC76501712D2F24DE
+7478B1FF5F7C648754860E394340F17D90865DF0D75A1A7770C177ED1052E10A
+2A60B370A9DE3A6876B9E102A6706E464A91DFF642F498162C9BDB4F0827AA54
+0D1F36557B76DC6FAB62E52078C40F608CBE6C447CCD32A29C9751C53ED48951
+3E2466B2BC8C28CF21A439CF54B50E6DEA50761A23333E8E96233215BE86B870
+461D46D227790B1E65198B0C32C44F9861B94EDC731836D157B0B3419AB6AA9F
+41BEF201D3637F1F6C3F7DCB71BD670EC111B24C411D0AE3310DFC4C9279BCB8
+F5D936F0211B5FC10B7957259D2C3874724EDF11A646D951E79CD958B60EB6E8
+071CD06657B15B5D0BF492312911076FA5E74F7DD94729A1A17393FE5891280B
+D0BA2F31DFA6B3E01C0C0F662D02EF94590EDA84EDEFE9F28F5E7DE75B79D8F9
+4178ACBA78D1F147820EF76DB4850910C3249DCE6EA13C1161DA6EC36BC129FF
+E9C97EFAF481A1605F788CDD66DAC83A95BF09FA47850FA0D7A844AB7014D9C4
+95A1C6AF0D3AA8A0DBE08FAF4E4FF7D6039F6115845EF41EEBC31D1D6B2CA95C
+FB29A10E77935F79EC66A5D14FA898CF1347CA2502496BFC44DC1057AD6B00D9
+E22C8A982C04B48494C7B1C630FFB2FD1701F65B0558C5A2BE9C5A017B3788A4
+B9A22CA8E87600A54D570A6391D814FB95FCCA3631B123AD03A9EE0ECF9A8B6B
+A5C050A34767371D99220A3395B8EEE63067AD64C93F4323A1C33BAAB8ED8B85
+FB1F71CCB36B381463157A5F19F0CD76CA14C77839BE94271264F5B454044D8F
+4458AF7DC8A85ACD3EC014E424D102D2FED460A7AC342E23B960846056031213
+25CAE1315149CC2069E8963AB540265026F4B11BABD9C4711875217188D5B5DB
+6E9CC8E436A56D53B37809295276DC0A21F0CF2D50CD5FEA1AD417F1098A8999
+F4163AEA50ACBF468E0863C901DC518029692C076C5BBD7954DEE6504EBB39CE
+8F680420CEE573D8338DB67A5BB2B5361734D36D029812BF3AF22AE71CC4BE7C
+8C0E047CA409DA46AA3EF4E6B345A3E1A53A9892A1943BB32ECFD340439C1D52
+14BC35A77EE696CF792BC25DE49B75F3B04F09704B64C8B1EA9FF39E6E8D9B4C
+A39ADDE4B5B49E3FBE3A7F0AC51988057E46379173D5D3AB9E786EDF308B5F0A
+5B2DA6D030F881DFA0D479D8D6D97D66F3D25ED946128B38DECFD701E607221D
+EE1069CADB078D3434253AA89970029EADFE217FF24C825718F68575379A653A
+0024F720B6355DB4C7EA81077DC68DD6DC61F85C2AE59E28FE04234E7887A9DA
+E4E9E36FB0012C49B48F057C1E98380639744B5EF0B135596964BB2F020ADF92
+812966653E399B2EF9D5044A6F8E2C788EAEF6108AEB70166157E322EB549002
+12A5FC7F4DB295C0DC64BE331D154D07E49DB9090DA8194B941117326D763EA0
+4CCC8B7F97881190EA60F9D0B33BD2DFF04BA5AC81143068D66DBA61A08D3930
+439A0A87540C2CD06F56A3D732CA041DCA2F74DFB4CD05FBD76455E389095AEB
+4CE5ED7BE40BFE6003C9D6534F19D150FF8AF8DA936D0739EBE9128BCAD016BE
+70EAC25338227E83963F81AD1466C3618B8044AFA276879B9E621F00B96B0B67
+2E8C2D95E222EA6F4586EC05BE9768957AC121965B9BBF9481EA4C513BC092F9
+A4D44F4F949E5537C1F59F74B48AFAFA371F62823286B5E005EADCC936729DAC
+4817750D66C15D3508DAEF758FDFB5C84245DF6C040EC0A91B207A1377DEEC10
+5387A82D27199E8826C00B44A5C2A4DC784B1A8288769428FD632D7AF1C3508C
+C42FC3ECAE21E060637D961D448568FBF539B8E85B7AD60F1A573995C7857AD9
+9755535F9D04B4ADD5DF7EAAAA0819A5F21F111D9D9821089D071907307025F9
+B6E4C4DCB3E7F6F06492BA6EEF4F32B38393CB787BA9E00D8F60A8B4CC91B228
+0FADC305AC966F9C2547DAE80B4F60959658AEFBFF9F63B95F106EA226978D84
+C7863BEA1C71B13A5FDAC35FE9D7037758574081CB58AF6DDE2C80E90ABC48E6
+DC0716B13DD52ECE01079EE01A114E444C1F09AA1788356432E51806D996A99A
+BF169DFBE02DF5728D88FEC214B3B272CB1A7C9B9168F302B505C54584A0B428
+17CBA6046E0319FB5041FB9319E75E7F805232DBE8312E63C639F35CD679638A
+60E1B0BAE1F1F9D359A2786AB8838694270C368D7BC92E9D65D119BF317B8909
+7BFD7AF55533BCA289460558977CFC99E3E89D0C4A3B50C17DE43E2A7D7210E0
+96F0B6BA7A4C654A8C59DF2DD5881BE5AFACB64489FEC5B129ABFB10FA17B3A7
+426E2445778B53336CE63969C5F3567DC66DEF49A7D1A6C19C84EDE1C2FDDA4D
+4FA5854F4F15C7FC1AC8175587087D068E2150D05141970845D173E5312CAC9F
+8B9CAA28EC46FBDDF610B9371BAC2F577ACFF2F7CE3634CB13941BD437390F84
+ED894384E3130E663F5C0EE25C2C8096B7BF90F7783FE1B00F6EB78D92DC41D6
+BADF384149742D6B9CCF1BA890446599FD957258E9E3041201B958C2E5BA6842
+32176AB1367690BF1AE79B6075315D538C7D6634117A20DD82FD8067F5237B5C
+C93F4989D054A45FEA482AA961738EF0B9CA8D6711DA94A512BA132038866CF6
+E59012950C870598644FC143CB205494BB65EB649FDD6157FACC5814014C5B46
+1153221D8F2D3B3FAFEB01DFF0BEAA0C00353668793379A88FD7C9827277860C
+516724161906BE5B164E
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -6092,12 +6076,12 @@ end readonly def
dup 11 /ff put
dup 12 /fi put
dup 14 /ffi put
+dup 33 /exclam put
dup 36 /dollar put
dup 45 /hyphen put
dup 49 /one put
dup 50 /two put
dup 51 /three put
-dup 52 /four put
dup 65 /A put
dup 66 /B put
dup 67 /C put
@@ -6330,419 +6314,416 @@ BBB027B7D175FD17A704C4668F6F8428262959DACA9F8C687C923CFA053804C9
22570150178893C418531769CB3D96F799BF1C6415820F96B6EFAB5344E82796
38A0DF66609F5EA332C1065274EC93027D264B84B52AA8AD82E13E2A41AED340
B240D1888CB89FBB748FD10B214773D466A44AA2AF44371CA8B9A4450DA76EDC
-0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B0844362B0652A
-6345C6EC83DFEFE099455232455943718297254186940D6305C96EE2B9E3E7C9
-A622D25E0471AC31A8ED3AF8897BD19E322CFC3BD3860D8A0634081D9AF53A9D
-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
+0167B4015A270B9983B89EFFA023A3DFFDE181B90C51D70557B08444263B84F8
+A2A807C55D74265931B553F6D7F132B110DDDD3361BC9563803C888B89881DD5
+09E1A623957F074F5B3644BB3F93D7F96770C73499AC0AFC3D7157EA08BF9D15
+DA7739FAB528A8BC30C0EA7899A3193CB9E8EB51EF67DF4F97D36005EC228B30
+E54D14471A6ADD6DFC0A9E18243743457F55C92DC10202632F8ED3DA25B4EC18
+A8602DA1E1AB8DEA6778893BA825CD9DE6E52089AACB336885882690FFE504C6
+7C0098265EDD8DCF06F07452CC311A8B516C61EBE50214B11B72132EE0033528
+13181B4280F37E2CDE07919B43D2120C22971BAE4821E799143EE8E2726D21A5
+E8728B8F0768597285E8420B583BF7E84B02BAC1991ABC1A5917039DF9EF3B8C
+86C9A3CB4F1666755BBFC2E5623339D0ADDF433A6845728195D58C7AE4C04487
+F42B90E877B053AE9A6DD19B8910851CDBBB0702EAA0294506CBBC0A9A1049AE
+CB08948CBFA5E8F07D51336C68A034893B6D146B0897024D482176B14FC63C97
+1F08988DDA2846BAA3E4EA0084642063BD71B165479641E15AB05BE6D9598891
+B18215FFF0BF4BF195D34703919C1DFB595F52568E46ECCC2855F69A375C25D5
+10718CE804ABB8C07763C09D9FF6A363C6210E108AC351864AFB17CB5A4AE336
+B582016781DE6A38EF6BEBA595FF4AE88B8C995D96417152176B66F9180FB6FB
+5F6D7C6CFF01901E954BBA64CDDD83A0ADA2FF7CD6DD1EC365080E5159E51E66
+E2B32369F28D845BE68AAE8C67C30D2CD4E6ACB627A8DC9568CCCD414D85A2FD
+CAFE36BD8991420E3672E2812D9ADFB4B7FA0C0E027503B6FDFC245B725D7EC6
+8AE43F6C8B168111F7E25DEDFD64AAC0BC8776F2D257A3AA8A74FA883092E4A2
+A887EFBD80EE15DF491C5D43D0CFABA834C11583ABC8D549E1DDEDD1A1A3CD5D
+5659FC5808D20FF87DC95BEC80CD71B9E5BE3F304A1A03C2F666597072DE657F
+75A1AB1193B5EADB81D92C4E4E41648666F0AC8AEBCD484D30FBDEBDD87E6BB5
+06265B9C04BA54625207A13FE4B6F292D27C3014F20FA77588CEC44C3F67DC59
+7F9A77E3CB226C5CC7167A33C006AF85B806097DA22428AF5F2AC68413EF5F44
+A29A02773A2E0C3116B0A016E5D1F5B212896772ECDA058AAB5FE55C60C89AF1
+0ADFAC6A1EEBB828671CC95C7604D4CCB1CCD89FC758131645522626D280A8D3
+B40E343B18EB52ABCF3511C9DE75D9D10E91FD5D780D5D36E484206EE99BBBD7
+FA03A5526800EAECA69F8B9B62E25017576CFB81783F420DCAED6C94CE71E8E7
+CD158B8F7DCA917ACDC5CBAECC9E0DDBF21BFB63DE462B810031D61B385EDBA3
+5FAC4BE68B0442575E0FB9FAB7113797A7EDE04BB699EAE0A23A47009ED0EE95
+58637EF6A5C077B9A0ABDDC9267290F878E80CF79DC2E65842879F2A7AB9D6E3
+0E296776CBDE5DEB9EDEF38BD020DFBD31379A6FED182FB3A0DCCB340A70DB0D
+81280D3A0D373A2E672C68D2B2F08AF6061917779FE33419F77A5CA2ECF6E46F
+E11D9803E4BAF5A7D0971F6708931CE92B5F83C998FA4716B73AE9A29E6F732D
+A89F2A3E686DF93E5DBB6BC6C45C30736081395456D16E25AF42B0F8064DEB21
+2A9E1E4BC599A18E08955209F5195DAE5217F8189CEC5550C1491EE792B7F6B9
+BA2EF22477B92F0F9F6FE8AB9EAD6D6206377D202660FD7FB4BBB21C9F9E289D
+D8F6AABC3862D7CAFE7AE4AA3E02B154749C029337C30E0E6452A8FCCB32B0D3
+E8FB74DC71D0874777F5E78D71E8C3D9FE33939CB3A910651438ABC55BDA1906
+4432BA1EA0366DB8B07247E4D1E5EEAF6AA804350D319AF66CCCDEB1104541BE
+4C621C23CF07173F423D277173989655AE4EC72786203E00B223F19A4A1FEBBF
+7C48EDEF9252AE6330304B5A92DFD8B3BEEEAC5CA058A9F8562E1D016CFFBC02
+539B46123685E87FDCEFFEC42D0106DAFFA86835667DAF47212A9B715DA7A446
+FDE048EC64661262495A7A9D01EF11109EDDB180C43EB9DB662963265EBCFAF9
+5470DD411214CCAEC8AC7F182DF8BD93FE984E1BFA8A1171F4619D213EA9810C
+44C65998F3639A7278966684A56FD3A83060A36416430CB1CAADD42112E4302B
+E3331562F5CCF6B5B68B60851AF7EC86B534CE1963A2149D9582820E4360870F
+8FB29E163121459FACE85EB665765E6455A2D719C9619D55D60DCA65D46F1EB7
+3A5FCDE0284F82FAA0A49ED106D226D7C0052F647F0904556C4729D50455DBFE
+7CFD9F8503FF76A117DFDD2B28BD444DD1B0EFDA48D1F6C2B26D805BF4506D7F
+167850D37D16FD07CB5AFCA2C78769292AE449D53AFABBDAB026162AA850F133
+96D2213EEB37C3CBD535554FA70AA75964F357A5E847E63936740D9AB95B13D2
+90F334D8FEDA273BA84C7B370FB27D4701598BD6FD563DBD3A5F7B98FA97A9B3
+3E1F87D9664D7AF53A3B7CBFECE3A57856D03C766F8E1552EB33E441AC3AA6DF
+1DCA2B9B577B646BEF8F0B25C3AA843939CD0AD20E0659885C7F8E488D2E8E4C
+437ED072CCF065697FAEAF59D6D9E83592121D9B40A202003126983D7E169094
+F7FFF67C8F1F0B9F5F48C616BDA5C100804F8B9E6B4824949DC26B4634AA6C21
+E2B1B891A55E5B954D7987B7E6E3CB5E0FC645D7D0B8F7C627F5C642F4DC0453
+5A8E6494B9F4005D2E5F3432D7418111F730707FA9A0623AE971BAD1AB5FB931
+5EDDAC1DB70CDC151BF085D241202D7F1692A45BFA18EAEE8E8F79D5828C9592
+8D945F5177DDF3AF5062AE044BB523CA31378DAC15E19675497988764781797E
+2EF746525D1857B45A0FDA679076ADBB5C4C2644A29225CD1E15744B1635B21A
+D64C21EAB13BB8EE8B2759504217D8A06DCB690080DA7CDB2D9BC5BCA23017DF
+3C73811C1840B092E3AFF36E3F322E3FD4B6E8A6CFF25BFC2EFA25940FDD4985
+F3D447E20960EA675B7CDC617974772691DEB833CED5F18D98FAC99B1F00CDB6
+EBD9E77A98413284C98E4CFB3726987F80B8A82DEC86085943750ABAF974BFF4
+5348BFF04DA5B9DE8238C13D8937427F03C1CDEE994B0C6ECA9D6ABF474DA97D
+F34ABCC065173765858424E545421E38E79CE216F4FD5791FB51DB485D1467DB
+0EF3A6DB914F763E3B0FC6BF0AF856A0C2BEC44E875C6D6D5A6AD777DA3B17A9
+91A9825B4C3C0AF1ED5D5F43036FE58CF48106D42825AF00D193BBF3B8465BED
+00A2267AED6A07EAD4F5747E1EC018D2645FC78EBFE8D5C49FE792F33DFD8CB8
+CEDE83AE62B5A3112C6F5693A6CA7850D01F2F6582B00E7F9F20672C460A3B80
+09F6C9BBA22780BBA997534DAB7B0FD5DBE4003E3FFE8539900458CB905FB0D1
+8E76029048C7E070D2C24E8840A3269EB340B2394D37B3628EC608366FB2A695
+7FDBE02249D82AB905AD105804B6D8E912F2BB7C9625F4B09A7F99325CD7EBA9
+E7083842781FD5746AAF7AEBD6AB5ECCA4D5928B9913D360AEA835FF9379A782
+7B47DC824CB51E77317540378971D2AACDBBE242BAF561128AF71E639F67ACD0
+B04251C644C9C9B26C6D1AF06AC685B5A0D008EC6FD0105F64976613BFAAD28D
+83AB4F5D1CB5C570AD134575EBB95781C701BF4C9FF8C344251773C12E1C0859
+119108448094F41E3EA84BA93A582FFBF33CD086F1FB78AC26E44858863AE3F2
+15DDBE2B9C27D8484C480EC74C1847E4DAF520E507A6B5BDC786145EAD85FACB
+66900381C821444834B653F6D511AF6553FB221112A438BCC8193B330881027A
+908CFAA18E86A2D326326FFC25457C9041BB23701584BAE3FC9185B4B5AB6956
+D8F2BA841F98B0B93F8144B35234067B12FFFDD274DE40183837AAFFEE380CD7
+28DC181C76DA7A4AF637197F53A931D2666E751A2B899F20FFF9FA312A1A79DF
+E04432E4D4591C525B67D008DB6FB611CE089A96D25457291663FA9F264576B0
+74A5AF80BDEA1D411DC027775EB5F1A1B135B5E5ACFACE7EF66A2EDBE90771D7
+5D52FD964D4DDE1C419EF7812B15EFBF7481F90F44C276CB3AB69FD5C16EDD5D
+41A3F665C6B86CAA2F7C832AEDE7CE813DE65EB0424D45A721CF7CC7E2E2ACA2
+2F0FB88F1D61B60F5B7557BB94A88B94CC15BB89B9E67B1C93156586703EA237
+398EF6F454C70B7F93AD86E1CA3A722BAE4EB6912D19B56DA223484ABFB4C863
+AE40A43BCA384B6FA642B5FDC1877D993BEB7DC9C572B096F15F33A5C95F66EE
+8DD97A03EAA53F319C3BC9D2F12F0AEF079256604C6DF649E264EDE6E30E7828
+7B74BB86578FB903BA583C955B1A4CAD417073145D7B2405F03AA98F989D1C90
+8C3F625B28B2B5A8BB5C3E97DF05017B0DF1C7E32F8203556EC952BB2FA045FD
+76A9903FEA605A8F03BC4025B4737BBF8C35DA55D0DC2E2DCFD8B9D6C1310AFD
+481FCB0AE96095FF7E54BE72F713E00C5553B95EB23247C8F17CBCF9D76CD146
+86543993C53CD843B2284EDF996A0014140A2BC3D6B7CF1883541F932CF17A68
+09030CB936AE925C6CEDE67B053BDA271A427CAC85EADBEEB559E50FE1983DA5
+69476CEAE07BEF681CF40593806F3766189536EBDF92AC72270EBAA9DEC38C82
+8E27F56DC72BB45C38BDEF1E809B69E8C9A787FA37E636C678B7684A74B718B3
+CEF980C3214631C7E89947CC1577259B3E7ED37BCEC9622538B3E21677C48974
+A1F687EB3BB9662F88E6A3D387C9A30C30EB4E206F586B4A90B61729A84A612B
+395975B134FEAE92AA05AF675A9D995F60BFA37FCA4D098F91B9D0854B0D1992
+8A3DBA87301552C291F404FA4F590243B24E3D4C6F23CD9874D4EBEDCD51C1E2
+BAF3EB9B690ADE288031FD6481D5C40044F71CEC3AE50F6704D9236839EF9B1C
+7FDA3F6E4039FBD2E5B99BB31573BDDA7236FED53D49CF51E3D4B1EECC9F530E
+41E5FD3099C5BBDE367D1ABA42A476DC8C7015E1E028595994748D526E2E1D78
+D8DEE2625BD9EBA9A23BD4FAC1BD00DC3C08B078F96F4252843A566B22718B8D
+0D4A3B7FFF310A76ED12B345A3AEE2F6C8A1AD394665A6F8C9EBD044A4AB0706
+958E404F955C4E46DF196E1C9BD16E47D60D4EC935864D1A922A5F08DDFCFD34
+21285BADA201BE83254B4A817F7372B64481B3929F1292E12BC91667763E382D
+66720076AC19BF952A5B6A7A36D50338F256119F85E44093EE26D7EEA0DB0A6A
+2D11DEDFC942EA5E22F4202359C91C65F4B7623EBC539EBA75815866CC964AFA
+6369952AB12AF0F7D0F3BADACE96BCC865B4C246D392F6D118CAD444A97E6F89
+3100F3D786EE03431E1B3F1F45E2BC45AD0EF659667E757BAB0E7182DE558C8F
+4CF615B2B286B2EDAA9B8A28312DDC1E586CC1225FF6435465A4AF56CCB2694E
+B131A72BA2650689E03239761A264AA922FB6544395D991C3DB620F50006C140
+4258D85225E8013155B4531A6FA2017EA450F77F91AC191C50C1A2FAE77B1B05
+F40339270FF24D91BD842CCADBF9DFEA5AA13CA2C8EA069A242C93A73B9BF6CB
+5C01247F02AE06329464E02C5A3F6835C3B2A1F110E0E72D907C8629DC0219E0
+4BD43EAD38454B8100021E55FA294C53188B6323F64C0042CC2F9728F776C99F
+66B34990B279FD59B4AE356D1DB317F18DA66AF2E12EB5C9553D58BD075424A3
+00BFA49F981FBC0733F388710A62EE9216A96A959B700B02FD79E2174093D6EE
+30E5CA22AD61E0563AA18865E47A4DF8FFD40FCAAF36FA72136533B3184BA684
+87E2C88C4A8F119F1DCC5B7CC8BCA31CD23806E08CB77530038FB09CABC6A035
+E21971E5088665D46747FC3D66B0626295252642C833862FCEF1C749CA6B6199
+738198327FBCD7DA364D6F0AE000DC56AA44D8A7D3E74BB7A7C91B117203257C
+1ED384C741B14E526571B06E3665865D89A494F32D78674BB62063DF2A48989E
+12293072B16049DBC1AAD7EDEBE0DF69F69FAC857D950BD962E17C8BF097DD63
+DA98E41A07C1C299FF834D41D6B075C8802E1081764B017809361A4C1043D141
+C340AA469642D10EAD0ED5F01314CDC9024EBE21924D5488B9FF775934B1B563
+591AF1D8973CF814A987637E8C8231653036AC5714B74680F23D2A41770C1E02
+22659A92D305AFCE2AFC973776939095B142E60375D5CC0AA54CE490BDE293A9
+F19DBD653D7BA4D9C968FDDEBB95A0B6035016FE534D438DD0BF26336F83C555
+1BF5AD6CA8F02CD063CC67D2929D2B6ABB42DFE5FCEE51D583155BD8FE72AB28
+BD423808157195E0293F75818ED5ECD68294C8B6866948084078D83246E9ED70
+38667D6B3398710C5ABC172F446AA0C5AF3F4023F08CC22D02E51D804299A12B
+9503C2AA055914AA5DD5481A1B92CF8F70BFED758B447EEB256272CE393FAB8C
+08F090E434EA61838AAA3CF02356D5EA8A8323881E413579C55123F64E817D51
+7504A8A473E7D6C39662B665556F9C5CF0F3DF9D42C0C03AA3FBD95DEAF4DA64
+B41FF342092A5445E96FCC6CC910DD9EDF8DAABDF255814A0D0D874B03D3687B
+1441639C03FE3176093361CFF731478E609E4A86AF8810832EF983C5EACE4CF1
+AB8419AE0655F8DD18DE8E68F320BC1C1FA89DF622A03866E8AC8EBCBC336E76
+8AF4E24D9D53E0003E4FEE40D4386BC59E6FE3FB13AB6FB94D28FBBD95576A20
+8F8ECFC0952959796BE533D4867224DFC44D079FB8166AEF46F118CFC1B114DD
+C87AA0156DFA28A10D8599B40588E1F84907CE0300C7A8CF3C6DB63505A79D04
+1AE29BB896A6B2266FEFB1CA6799CF384B1113F54ECE96FB5C8C90E0B36367AF
+5E580A75E1EA2278CFBD60956D333FA75BCAFBEB7FA767EB960097BD38D4F4F3
+E16F00AB29674C802F1EBE7291B4452664260992AF6F834C1D02273BF1B3EA24
+5D6CB3D611F1A99F27300035ED706E6C3D18F56C7CFC472134A96690FCF476D0
+6843014794534851A4CAAA547D5DC4AADC3D94A03BE478FCDCE19CB05BC7CF54
+8B88D9698141D2309327680139F05275D56D025ECA13A25B3211A0F07AFEFFAF
+2FB4A48CD4CC4915F988A619C6410A2E16B031EC19B7FDB904D149467F1D295D
+6777FDC0712AA90E529D4768339EF966B5907B41CB1258BE514B39C8F853D28A
+8951224C1FD0EA80D19D0BEF548A23E70E9D172A2FC6E6BAE3900D81D4E6C530
+1317BBAC68FFE952F47EDFDE434966B89B9E6DB348C6D3D8D10EF6254AAD9B9E
+427FCA129A3867C5A0CA1723D4828F8DB1D99774606CC00BEBDB15E02A88F7AA
+2B3F47F420E12A5104A09D6AC903E0C9C715BB99A87DBC453829F2ED8CC6A934
+FE875D5947EB0B7C5FBF193769C209CFB55AB5E331DA007C22517035295F7833
+C5F54040629BFE9CF0FD9FA9FF10A7DA143138CE41689004557E0DA6A51349BB
+9530B852DBB52EC7FAFA39FCF8381CE3419AF0E9E6D69B14E5020C8DECFB66CA
+7071451B87A1FDD2789736E5A3DAB0644CC9727B58529B5A807388CF904C1BEB
+8CD7B322676FF8B7CC6A25F887CBCA97DE6A7CC53DD7142BBBD1FB447634E2A5
+E52158C7CA2951E87722298B50ACCD1A381F3FCEA2B8669026C751898DFBE999
+49B86879D78B50F5CBB3FFF59FB9CC55D6C0AFD190C521C9D087B8F0C34B11BE
+7F5C705FCED255F6376E3A86A49B49E8059406A6A387FA711478EAC4007E5D80
+C907C72BCB7DF583F76B6685ED9B4262F607D69B23554D1D275A03692D5DFE85
+5002120CD7786263ACDE7CA7158644D8D8D78A757182C03620DC5112538E66F1
+61B30CC11B60AAA0B1873A846DB6281D7AE2420A76E6F66FA5D5B288B8888666
+F707AA8F77363AE3C2B0BBF0577D0131F0F7FAB358AB10A0511605B28C5402B5
+C5EA4466ABBAC85601CF8E61101D80F84D7FD7629620B931302E14E7A89B8955
+41D7A89413A906399D5E375665A4C24DEBA6DFFBC751E23F4D17642D391A4626
+F8397EC5553572023B0F57D5430E35163156F76CFE24442D041B6FA0B44AF48C
+15FE0C8C9CBC300AF3A8BBB79B5BA6D2D1F45A294E201DC327BCFFBB5CBCF384
+CF4FDE8C9B07874E8C954603C4A4F0EE585610B19976F6682B41FE2EB56299BA
+25EFC2604FBD73F7DE1AF858F325DB0D1FD2A3F8965A1DB71CB68C23ECFFE678
+E08C34E52C0E0B4F61B2CBAF3E765ABABDBE364B31C5C7AD94BB7CD5C92AB012
+43DDCD9A83C43F021176F69945AE6A702FCCACEBF5DBCBA63A92D82453DE824B
+B240CFF9B29DF6677D635BCDB3A22DE9F1C0172F32136BC107A1CF2C614897F5
+D6D1C35B2ECDE7E0C8D8BDBF30944D46DEDBCF50E9C45D49A4AECDD5E079BA5E
+4866856A603494B605E4E5BE811E626B6A5F54938324785CF96240C12CF83F2A
+5302D5588F54E27486A9BB00BAA9262145DA0B7A1DA5E514DD6789692290109C
+3F6C8C1C63E49C74BBCDF5FD1D7CC7CBBDEE68BDEED59DAA8BF185044C159365
+0CE5077F69F99A1368365057527484D54BE5461BE90AD66334149EDB5EE3317A
+E9070F453CC27111F223C18081AE540DEB5F17E1978E28FB47C5033AA48E55E1
+AD0574F400E446499C63C0937ECBC03CD00E75355E2C41BCC160FB1D793D0407
+355BE741FF520F35C41C0EE6F7FE36065F33B4E30C6DCE227B4B514A575D09A0
+47A0BB2C03240393E73A976A06C6FAF22B9EB30619149F05E9B65F651F8E6199
+634F9485E2AAB2BDED709E56126111165A08D0171538BA37E325A173E4982BE2
+55023BBA920F46060883183231565C764196AFB26DEA93056F0FB140630E9725
+1EE72FB4374FF43A2A8E0807B8F77EB429B7B9D5ABBDC04072836F7EFB4DEE53
+26C1CEC5F6CF13334B84F47EBD1975A83FAE789C309A9243919104C844B6220C
+F0FF4E9C6E693A6E4EB2D260D7DA96FDB956216E30C5EAC29AA568894361FAB2
+F9EEEDBFD197B278BAB7F2AD3DEBF46B0B1EE58F005132844C96171806BCD864
+2FD40897CC3E719856A9D137B772AFEEDDAB2D2B353C0705EFEDDC42D169818F
+A2D0404F7C84DC9F9CB7527A36F7D8555FAC44AF8A91E872985FA0D758D1C898
+35BE8560D6B584ED66CF9D834C9EA63434575FBB33E54554D9E4B127EC94F55E
+7B761616E717A84216C8BC656F79B0E567553932D9F30D3355A30BCB9DC8BC80
+1779D6995E35B3D97D019601BFB970E3CBE8483FF168860909534621D8873D37
+0073F48FEE38F40A8468FC016F7F76E6E1F09D33DD992FEDCFB2ED3860472E84
+6204643E41699ADF19440FDD4F0DCEEEEF52351B782DD90583361B7B8B5541BB
+61D25A5AF18FA9F70C599F424C8F9DCFB47420CF4104120FC6F9EF03DF7133FB
+27ECF4D848F5E067A27377985CCD10DF85D1E517B813DAD36E8A40664B352FAA
+184A8DA90C0DE095DBEF531A2481BB31996107FC057A9D6263514089FA589C0E
+AFD82DD4EFEF08B80F0F5D91B22E47A0474E27A0EE54755D6280AF36D52E0938
+C57614778147BEB2E89B4236B540457C7FF03BDB6C6978BB69584FCB58AE4625
+CE733497EC0DF25BEDB7E116C6C5D3FEEEB88D771D616AF3D050B3FA5568F6BB
+0752DD30E42B427CB6E6065CD968C6257F2B325F94CC09F5729FD6FD3797E1B6
+C403A0F1B8F3784A856226E64EC3FDE9F4837B512BA76F78F781E44888186DC9
+C2CABDCD59EC4145F6A70B539A55941E830E6237C72AA0B9BF6EFBA37C0DA4B1
+CB4A72627A658600CEA384EC9C5B0CCD3C1ED49530A29C6A6091529CD8D6B2B7
+027E5759C87D353F4090802F13CCB8BBADF1AB157AA24310AA275F0A4FFDA93E
+00E05E4E534735CF2E575DD02FCA3CFA96A9896451E9C0365CFB4952667E2CFD
+D46D3ABC40FA8F73EC68072FB5AE920E14B37C19FF936649DF5E8A978E9DC653
+FC7DADD3C2DCB18A1839CDA3653470E56E62230A148304BFD323CB1D39F6B50E
+D5444C8608AB03D73183210E6F4AAA2EB97005E0824AA42A2ACA2732A58B1D36
+B1EC88C9C5E2848AADED90D2F1BDA936C84263BE055793C553B986B73FE8A22C
+1AD099E1D845D5AA1106670C003D889E169ED1877DC454B7601112DC539F56A4
+E936C65227E657BE26FEB41C8E950BCF54224805D9FD6D2516C4DEC09FAA3753
+262B0A82357EBA2978E80C291B267EE5FC19FB8B6BD509DEE723E032FBCAD28A
+658F6516D60AE9498A14E1B0AD1FDDC65025EE114FD73EB506992C1FCA660041
+98B6C72AB28D643BFFE1160F600543585524AD00C04BA1C54335536D65B7C471
+FC823F7AEF385E4A013C4924750DC2DC8F12388029D0D958368C15B9C19D718A
+AC77E9831E75A330583871159AB63A0332984FDF9D0498AFFD678ABA43FB885D
+EB0662034DCEB9576F66174254B26CC515DDAF9EDFFADA446BB02E356E2B6499
+C6B7F4BADF5F949F6E50CD85E869646102F2E5222E62405A4798955E7F4D8018
+050125F9F5F1D8B2AD8F4A6472C2661DF0BBC6B669868C6CB8B52D528F389911
+CD58F5AA9592027BE25DB1946ED1216F2E915B4333AF69C8C0CCAEA467A46376
+D0AC46F291251D3B09883EFCF8EDA7386BBE03A5DA3B5F2FEDE4EC516FDCD92F
+12D72BF6C7E690AE3FFCD13C587D2A48574653F562526B0ADCA0B701BE848951
+3A281BE4957189FC236B8CD68FD182FDE918E5C7FE2EFE91C4E6573BD9D0F0C6
+2DDA5F477152DBF21676DEAB763F441C7984F7650920CE6EF3DC77D707F8E03F
+622F8E97AA3E7749D080FF7CC0FD1CC561B84714BB4BEFF4628DDC90711AA7DD
+6EDA62DF8F73B9829904E802D8E0D60AF8F06A0DAB973B4C6A89020D3030B61A
+D8C92ED9D14E29AA92C5305FC4687061998CF71056FE50AEA39BB265E6DF72F5
+F6EF4287D4DB779617F1CFFB3AB1E9D9DF73512C86CF2A82354749586EC9F273
+8CD928A02590A5C51CFB2FBD5F5CF25488800090376519E4A5CF5F0D1FC98BDB
+101ED47F36A3678FBE57A31C09FBDBE605F0E9CBCD3254D415061AB3B9E668C2
+4CF41E833517AC0A07C3A0AD412E608CB5F0996D27E7341A2C637931B1BFD660
+1C330898C707F7323B1A47A6E6794AA94EF07C99D9BCD106108EEB903549140F
+31D5E0DE52FA3FCDE78C9DB6F202940E69F86DA4AFFC8974D669A8802E6D5C49
+D60E640E5433F7474BD623580D24432927E6919E575FEC9FD044398D6174DA64
+7E6B7B042777003E55C4DF4981DC0A45B3AC04B1512380CE39B97544D3420C4C
+B926016CDC82F5CD160FE7106DB362DDACEDAECEBD20464513AFA156038414C7
+DAECA2AE5D517DC2BE95B0E4707E0B191B3730EFB539CC0D3B80E1CC7B6ADCC9
+1F142222BE572124CFAA7246975BD131748A110B0362874FB61D91EA94A4E330
+B88C30A9CC1F7EA5AEAA12018A02EC5681D000A889B19641609A6E712116B7D2
+C7A04AA207CFE9A619290044CC4BDB7979502B5E7182D742DB646A923973EC3D
+04382E589C9FDB590D5B25A1D414060802E1251E1F0DBED3B2674DE3FEB7ED96
+50AC23B0E3D9E44F2904B064D06A002AB11A44813BBE243F907681F6A5B7E4B4
+2BBB1D15AA391977FC0D644B9E4EDDEA1F6593F9D6D64F30F1F8DD238E762E53
+CC5B588DA5014CFDF4E281A34CC875656BF31B1ABE80617C269D3C32EDC40CA8
+E354DD255A369C4DF775C35EC9FFA8941D71FA984261AC1BE8C09C5B656658CC
+CC2AD41D7CCE283A5530AE8DD2B8D03BCBB3B6B3696FD601C563289526310DBA
+FFA90463815A687ECF1D69F69F7B449AEDA02A15E1A9227B0FEBC29F6E16866E
+9E0FF502CB87D973ACC8D1BD08B5B76798CAB1A5D8A17DA7CC244EF085F080AC
+96CB5CF0F0B2DCE2A1DB769A8777C971A7A4550C759071440654E195A7DC4044
+F60BD207C81295CA20A54903E0E2EBA0726C82DE70F2880A52198CFF2AECC6FF
+0DC562A031D56847F6B8E3FEDBEC86862162F3E982169743CBA32DCEF2DFEA24
+D548A862DACE88B14677B0657420CF60E9E186B35AF3863BE4A9E5455BDAE62D
+D39E6C7DE4B3E079BEB082842A1486DB5F8E759204926F146037DA7A77CE50B6
+8C29BC9B5299739FE52778D232B44833033A7DFB300429DD002E14F37EF31D08
+069B7D94E70BD31F90495D237B4F175540B12675874396FC75F9D005497F0424
+F68BED0F8CE28AFCCCDE87BF0D0F5301DADCF69980812F989CA9A7642FC5D50E
+0632D79277781F3CD9E014E9DA160B2A56CA7EB621EE3D89018774B34E943F8E
+EAC217CB05EB834B562B03CCEE6E457C681692C54339506BC7447B943D151012
+93F026765C80712D5398D3EC320BD4864BBA9C4F7242FD066CEBA54390D119BA
+C3A15E45CF70E4999BCD0BA14FBA7C6480DA52D9900CC36DDE18693DD1FDDCC7
+FB5BCB5328E5304C0B3189166A2D7F3F3EFA16A4D8C8EAA30CDA83EC1BA519CD
+C6CDF954A680DC9487D5397201A20B1530AC427F0DD32A17B8823428E4D1AD8C
+8C512FF0F9576EBB8639852BF36E043E302D19A3B559F5F43D4077AC0F9CCDC4
+1A0B6BF5A5F657CB0378772D7476027E060D592492534DA6CFDC84639FDCF136
+036EAB94BBF6AE2A3302A6640EB48A537B579532A557C69240B5BE6DCB609E65
+B248336A2F7A326E85B9651659AD493245223EA204DC2ABBF33007DFA9307E34
+90F924B657395F3622C5449CB9965988E90A9B840FBC2F8B74BB2151B50467FB
+0478F1423A776F79DF8AC78E999B1D6081A9B83F714ADABB5C548CD2AF4E9EF5
+A631BD50FC51817AED8EBC6BF7A46767E562BA211561347D89308D28FBC7C04C
+61A1324C22E2352DF95EAABCE7EC3ADF40B863589557962D4330F443D0A14F5C
+F3DE678CC2C45E6582F47F4EB36EBB12A73B395149CCDBD9A92E3E7A9EFAC658
+13AF608A3BF637A36A7318A342FCC9804352E361AF67436E7B4E6361FEB8656E
+6FC5328E38D8C855BB6994E602481654E5372BEBBCBF48C63F6CFACC9F3D4FD3
+95B963ABCCD595D90C427ABE71671BC690DB170494938B4A9B8C0B329C4B0F65
+28B3BBB68584C7CEC9975566FFBF29EA166441185340639DD0FB38BA355A969B
+1460753D46ADC2B94315E08A56E5023BA5473DA1933EAF6CF46C1C6413966EB6
+246A6F259FB72738C4DF24F91061764EDCCB4B1834F6EEB9BD80AB12CCBB6BAE
+3E9715FC068386456612014DC8457AC3EA92D3140C7E9901856FBF9406F5FEEC
+C4814CB0CEB13A44908644A5B6D69DDCACE742080D4A41A70D93705433D8B1D7
+51C782D483FE38BD619D1E0E863BD24AF8D1ED22CCFD1DDC63E481DD1D525BD3
+A69323974D440E4C676A8480ADA8BEDB2F8D7B82DF7E8CF71E9BFB6594A59055
+A50BF0B479C6D1E62E1C25E9BF89C898F815558AA20DB908210E6156A3C0C98C
+DB0215DC67BEE211C018E82F504DA56DC959DE82E9467C9889CFC353D379E8D3
+08B40C015840E9EA9F9B11AEB3B1690F7B51E00181EAFC769C32A0EB57EDB2CB
+B8304C16B1E391D9C83496A99F765A2F593AE9E60170F93E68D99414A71B2298
+F869CC5617669A5842F10170D8C73BE732CFCE2A2803B1ED4CC582817356A304
+2E80D38F53DB04091D403F76E9648FE51BD4CD3728FE0E27C563DDBA778D2B57
+8B9082ED2A2EA10C0A9EC44DC8695E1B930F408604FC497BB411F34718535925
+A8C763ABD12D21129E018416D6A7F3B85010642706F63E9109CA68AC84FF543F
+5CE4ACEA6680A279A54A7E0A83F28B661684AB955DDFBCF3483D2255986F8CC5
+2141404DA424CE7C0F45AC2938AD5A9908B18259FD2C7865B242C3A6427DFC53
+B2AB4291DDA1CD7484AADAEEBEAEE1F6D9AFD997644C576E703F9588338E7DC3
+3E8BF6265048FD288DABEB790875CB83D7102EE1EF1ADEBD252146F5F1C34CA9
+270577C4D71EE41705F6A2F76A17463C8E553BF1E09C06CE00A600B907F36611
+464B9D2974D1C9C8BCB589AC5BB056FA8502E4CDB65B7FD34F5FDC2108915465
+E92B246505C67119DFB1E0A251ED432409F6674195B591E704B029E40E2AA827
+8D8C6A1E2E6E8A0FFEBEFB75896E0943E394F90F03A0DF61ED23E57A24E0C2D2
+79F9977AAA33E6AA211B48720A1D0AD4789608A29ED895DAA0D4A2428654EFFD
+F5EA4087E6F727DE7C5EA25C15FA2A6A967FD0A240E890997D78AF8466EEB7DF
+8D8BE4552E1996C4684BCE3E853E1C541C7D9C2333ED357D179E4E92A44518B1
+06D92F646AE65F7A27F746EC366EF4921D088CC6CDFD723838AE89648D6B6EAF
+824C08B6AFC9D8439DAA5CCC862FFA61AC4B0EEFB2453C972B1A64FE31C071FA
+A2DCF66B9CEED757FE42B9DCAE3302F807F7CB2C779F7441EC5F11C776036719
+427F1799BEF7CDFAB114B7C30F27C43CE3D71A71C7BA87C4FC34B711FFCCF892
+23450E5CB964642AE0E4638FF80A913FB7BEDF489DA43E315E8CB8506A4AE884
+BC0832A6B83CB4B390519DA862769AEEF454D3C4CAC6CD3899238A044718FEBB
+59F5D7C79EE547269AAEF1ADB1DB7A97E5A01435D957413FF0FB229527025DFB
+E1BC87C4198E5EFCFEFA3ACB877B1370D222C1CC30D0AA411440B6A59D545D53
+7D72D4D98337E08107FE636E3F25932D57108A8E3BA3F72006744D1B2E33EE8B
+CABD44AEEA44A3307ABF8AC6B68F8D83CD6EDA68951673D6984DC6E2FE260C16
+A8673467A85E727DF7D5F2E5909BD2D22D272F87C945B0E93B4EC1A759393A9B
+75F7C462B34542FA02DF5548CAB66E75B88A834354AB7439DDE480C6068A214F
+D3748CE5C2B2F1693DE0EA5162771F7FBD17F5A1A7467667CAAAD0610F38CADD
+89102E1351F7B5DB870DD9A3CEA56863C249263A102E649FD16FD827BD60BD19
+E680DAB90D235E5BF75D5315B2BE376EA7C1FC97D709FA12CCD937CDAC17845D
+C373FDDBB0533C37169A34CF072F187E5661FE60DB1285920E3AD01EE806C874
+48BF676D73DCE4A919E3BD19B6A6DF8C4A23BA65A599774CF0E45F2F20410EAD
+5A9E43CE85B335F953A0879CC8327B903C0F24CBDF65AE01836745EC4946749C
+DC9810CEC0A4868C3356DE8D6447547785EEBD102E069C2DB83EB107696C8EAA
+EB71EDB076E924F27351293F26EEE77DE1ED19EEF02EFF9DC8AD8827BFD0E10F
+E3301ED3500E006F4898D0FA373F902A40DEAFD33850059A0EDBCC4FB23B7BFA
+5087714FF84D9D987933D86D6533C0784BC72A32DE5E26A4CAEAC39715A19360
+79DAAFB08C7097553749CC993001EF6C17100AEDAF505DB97CE45372632F5CEC
+A48C77B21F9E50E81EDE28E19D604ED0D7398D9621B7428F729FFA20F9DA8847
+F83FE50721CCF7260F38E1DF313C9D545D237A28C15934B1018C513F0AE93D72
+F0F22E8F2385686BCE5435122C3EB067F4AA14FDCFB812E7DEB5BA9ADECFBC44
+BA562AAF8AAAC463FC0B2E04A4BA98460A16C49B8AF7B9D624012D432E29FE9C
+44836E970CCD5900BA3C2E7A9F4FA98E4AC8DCDD503162CEF4C0CF1598EF607B
+E11D60FA839D420207FF3B46E1F432A69C99722BD77535A5A1827C0370BFDB83
+5EA905F8EBD42B427A38FAA2CF4E819C9FD74BF27F548875248AB6D00D2E29FC
+6060F2F151C48B758F2C85C1EBF5868A18A1B747D324F7DB49855024F213092E
+FF0BA46976813383A25196A4BF30EB1D2214362C75603407488823D2869ED813
+2D84E759F25F9BAB59629C2AB691076AA9BE254A27B49652B05E9AF71865E5E7
+BC324DDD2A1400F4B2888620E60EB08A9EFABB287CA0E52575A364CB0F22380F
+E27FC8A0DD537BC0959413A2657AE6FE12936A61EA31ACA64F08523AD9B21514
+0F352F2EF3DDC159795F83E9E12870C13D1D9B98D3E152CED06D3BBEF27B9531
+000CE08D0B280C2C37C8D295557F1BA92C8233259A007E1F0FA0D54762E7A6C4
+28AA751CB4E4D6AB5466D8A04E4AE9F64A3781B730A0BCC6108C9D5198810D35
+CC353F1E76DD3C78D33772F3B3245716DC623F4177418224AC4A5F3E2CA59D03
+95BD0C240231093AB97FD553194ED4B63856045E23D72F67BB6D6A4D6CBC0FA6
+B62BBDF0AABB66C36DACD73A99801E813C6F3BBEE1AFA053BFC3530F2699D2CD
+31F66636514A088710DD1DB370BEAFC47470A122381AB4F374BBFBD2AB39A953
+DD0FC82DEDEA60A99C9EB07EC0F702547C9ADF01164D5B22D6A41059984F347F
+CAFE7146B3626AC97EC8AFB2614D085CD5FEDDA92EC73D7EC86FC0DD5BC9E912
+D68AFBC4DD321E00B6954F14D5CD9D6580C8DDDDB34ECC92B16BE8953B035AEF
+0523D929EF5A086E7064E1117DD2AE2CFC346889116731CF431A2E22C6FE34B7
+6B7535EBAD4AE760956837944EAAF4F001120CB784D249E6CACCE4E0E0FFD8F0
+330C57C7A6E27545825F36189476B887BD56A72802D8947A42323C36114FBD24
+B47F11B3B0F7C5498463F54EA557574F1A8EAAD4D47964B9B244D75FEF37327E
+6096D66FCA9E617E441978D58AD792A93E3C37FDB5FDE506AFE0BC0588FDDEA1
+2E64D54283E22364267A5B499EB52F623FFA9CB11DE74FC33715AF2ACFE57C25
+A621B07E7D39E56F4ED2AC442C1B85B412DFA95C574BBDE5111A09F2F70F46CD
+FF84965EE534CC63034A2E579FA7928906DD2E64560CA3405B7B5247ACE33391
+F24669DB56F6BD022BBFA47934547003902ED8344277AE5761DBF7604D69C02A
+33A7F20EE06494669AAE3403BDAB6E4C4373DD56DF66F9700A06FA86B030F3F1
+3B8210C9948A6EEF8400C952C4A81159316390109680E5C9C22595D8E6FA6717
+B0D6803E850AA03F2E854F0A39F819B64357D53B3FA73AE0981ABFEE4352353B
+E5A31D3C3672F07FC2AB8FCA25E5B047F2AEABA8A658ECE9E35579E4214A9834
+C6EEA901E3A72FB1521D22FF6F117C6E80396CF1FAB02A8597F2407BF6CAE3BA
+976537E118C6E84C69C76889DEEAFAD6D658CD83381C8CAF989C52BFC59334DC
+7ED97D2741940291B677BB4AB0F02D45CD63379DA8F02F35658F13AF64F9D6AA
+A42A77A6D2A1653BB1A0FBB7A52249D8133440827678AC81A66FC3DAB5A55F25
+B821E7B5153C6FACED54C203E5FA9F6DFDDFAF54C9C870B719EB0EA4C1131C98
+5DE4047C1862E71FCAD3E4FD982FAC9CC900FC22F6770712FF82BD27683CC442
+9B684AAB15FB663A04001D434E26690056EC7EE8EF3D3E4AF36DFDACEBF21B2D
+681A134805B6D34D639782170DAFEBF22C888757E4BBAED1F72F2AEA9ED6CFF2
+C477430514D06ACD1E2AB0BF1EB27EA4DEE773DD77D140F02D2F4D5DB55B07D8
+23AEDB701A2885BD8AC950E8DD285172BBC6CC90A000EE8D5FB6C4D2693C70C3
+B90F94B7F806D4584935D69257CA0CB3F72BCFF88087865C9326F94BD3FAB401
+6C89D92242195DBE02F2437F6A96170F1D0C28623D6921EC424B6222838D18FA
+E07B02189A3A79B317770FF5ABAA3D8EC721A5AF14B5276651930AED5B20CACC
+34128430F8D6AE1BB7A52DCC22A9796792C926528C0DAC4FD652906A43D695B8
+267B1E89FC1B96628CD003FC2A3E8890E68655532146DC927D36C60E98E956C7
+F86DC4B803247084EF8014C3711867EB692B06F90E1B099501F4CD9AE0EEE694
+5A2B34E927E5239DEA54A8E9BD542DA437CD7928C67AFB661A72B9A2914416FB
+6441889C6316F0D4045E09419F5D507152644126C4B614013B868D9F7631EB98
+46A5979176C2E3F9F6463BE83908141553E90F523420FDA7ED53F711C27A4517
+1052685F33B23C9A3D34288073B7FE4AC7796A0C3D7669531B4A4CD47C8BA1BC
+9179E425B3C5C004A93ADE699B521F798B9AAE48753028A9F95F68ABB41792E8
+D067F9819247E7D81AFA10D72D0A7B3EFB3C202DE67ADEF30EFF42B4FA14DFE8
+573AFA45CF40E34AEE040ED718C7A37604E898F79184D346AFA0299ACE9BE973
+90B606F0B88DB4336292577439829D202B8BC881559868C2D32DACB708DC7EEC
+59632D3E618D37B284780AF2666CC81BADB341C10C9745A1437015AA91AF676E
+36741DEA9046B9EE93C70CDE6E5BE30C1574E295A592B03B951137A5443F980D
+C36ED9B52125EB8A71078F51FC10BB49CFB048A54824A6911D945641933857D0
+A9DC80654384B562FA3F5AB575ACFFBC53B493A0FB579DC9DE1231A49FDF4375
+865FAB1BA20E74E4B314211692DD359441E47068397D57E608871CA05FB89BCF
+E0D46BB5F84BF354BE90BDDE0ED7C565B84C32CF953F2BE1136D9C651891A894
+FC786EC9FACBB8E3F0ABFFE37463BEB48D313D59BAB7210BA2B6CFAE1B2A8BE1
+ED6B45CC9E251C4E8003E5F562EC048B69CF13A634680A2C67550CC94CEF59A1
+F217EE7665184E18D63DC0C91F5C606AD52F2987D379088B39E217C33CA14538
+DF3FF835551D339BF2B836957217D3ABB4DC57BDCEBBCCE14B70DAB6821FAF0E
+FE68781DAB924B6966569A4FE5134ED14A74F72FCCEC988EEC4868DCD443A503
+0974EAE6F07E8311C1979A3B2B586188EB5BBABE38017D31FE9685EA852AD59D
+8CD75108CDD566599D06B611AEDE7C492B3E82186980527C9281DE79D7449BB9
+660A8353E924B4DB1B9F6166553F436409A93BD5C603021AC613D5C470EFB743
+A6ABA267B872D32B531399BF9ECB63364379CFC3D1804CA7BFDDC19D8AB9560C
+66B7D20F94E6AB76722D02E681D3E4561DEE24E21977A4C76967FD8D6499B435
+18BC23E58ABAEB635A8683C4D13551CCFE2B2179661992E3AE95EED9F0470693
+D09152B40DFBBB0298A9429F8B2300676D0353522265ECF91369F3A9888A26
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
@@ -7559,8 +7540,8 @@ TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
@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
+8[58 4[43 57 1[52 60 58 70 48 2[28 58 3[59 55 54 58 7[38
+38 38 38 38 38 38 38 38 38 3[21 31[43 12[{}52 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
@@ -7584,40 +7565,39 @@ TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
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
+42 1[28 1[42 1[42 46 42 1[46 51[33 32[51 12[{}19 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 8[74 4[56 2[67 77 5[37 22[50 2[50
-1[34 45[{}25 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[{}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
+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 13[45 45 45 3[30
+8[45 2[25 18[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
-48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48
+48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 48 48 48
48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
-48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93
-90.9091 /CMTT10 rf /Fu 131[91 45 40 48 48 66 48 51 35
-36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51
-45 25 2[25 45 25 56 68 68 93 68 68 66 51 67 71 62 71
-68 83 57 71 47 33 68 71 59 62 69 66 64 68 71 43 1[71
-1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 1[45
-35 35 25 71 76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091
-/CMR10 rf /Fv 138[108 1[76 79 3[108 1[54 3[108 1[59 88
-1[86 1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12
-rf end
+48 48 48 48 48 48 48 48 48 48 48 48 48 33[{}93 90.9091
+/CMTT10 rf /Fu 131[91 45 40 48 48 66 48 51 35 36 36 48
+51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 25 2[25
+45 25 56 68 68 93 68 68 66 51 67 71 62 71 68 83 57 71
+47 33 68 71 59 62 69 66 64 68 71 43 1[71 1[25 25 45 45
+45 45 45 45 45 45 45 45 45 25 30 25 1[45 35 35 25 71
+76 45 76 45 25 18[76 51 51 53 11[{}91 90.9091 /CMR10
+rf /Fv 138[108 1[76 79 3[108 1[54 3[108 1[59 88 1[86
+1[94 14[144 4[184 10[138 66[{}13 172.154 /CMBX12 rf end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
@@ -7633,23 +7613,23 @@ ifelse
%%Page: 1 1
TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5
b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31
-b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.0,)g(for)f
-Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.0.)3145 1697 y(Decem)m(b)s(er)g(2018)
-150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
-b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068
-y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
+b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.1,)g(for)f
+Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3217 1697 y(Octob)s(er)f(2020)150
+4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
+b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
+b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
b(oundation)p 150 5141 3600 17 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f
(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
-(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.0,)c(7)e(Decem)m(b)s
-(er)i(2018\).)150 4523 y(This)h(is)h(Edition)g(5.0,)i(last)e(up)s
-(dated)f(7)h(Decem)m(b)s(er)g(2018,)j(of)d Fr(The)f(GNU)h(Bash)g
-(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p
-Fu(,)g(V)-8 b(ersion)31 b(5.0.)150 4767 y(Cop)m(yrigh)m(t)602
-4764 y(c)577 4767 y Fq(\015)f Fu(1988{2018)35 b(F)-8
-b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
-4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
+(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(29)f(Octob)s(er)f
+(2020\).)150 4523 y(This)35 b(is)g(Edition)h(5.1,)i(last)f(up)s(dated)d
+(29)i(Octob)s(er)g(2020,)j(of)c Fr(The)h(GNU)g(Bash)f(Reference)i(Man)m
+(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p Fu(,)g(V)-8
+b(ersion)31 b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602 4764
+y(c)577 4767 y Fq(\015)f Fu(1988{2020)35 b(F)-8 b(ree)31
+b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902
+y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
@@ -7715,423 +7695,430 @@ 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(:)23 b Fu(8)399 2658 y(3.2.1)93 b(Reserv)m(ed)31
+b(W)-8 b(ords)27 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)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(11)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)22
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)40
+b Fu(8)399 2767 y(3.2.2)93 b(Simple)30 b(Commands)15
+b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)29 b Fu(8)399 2877 y(3.2.3)93
+b(Pip)s(elines)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)40 b Fu(8)399 2986 y(3.2.4)93 b(Lists)30
+b(of)h(Commands)23 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)36 b Fu(9)399
+3096 y(3.2.5)93 b(Comp)s(ound)28 b(Commands)9 b Fn(:)14
+b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+22 b Fu(10)524 3205 y(3.2.5.1)93 b(Lo)s(oping)30 b(Constructs)16
+b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)29
+b Fu(10)524 3315 y(3.2.5.2)93 b(Conditional)31 b(Constructs)25
+b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39
+b Fu(11)524 3425 y(3.2.5.3)93 b(Grouping)30 b(Commands)22
b 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 Fu(15)399 3534 y(3.2.6)93 b(Copro)s(cesses)26 b Fn(:)15
b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(15)399
-3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h
+3644 y(3.2.7)93 b(GNU)31 b(P)m(arallel)13 b Fn(:)k(:)f(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)26 b Fu(16)275 3644 y(3.3)92 b(Shell)30
+(:)f(:)g(:)h(:)26 b Fu(16)275 3753 y(3.3)92 b(Shell)30
b(F)-8 b(unctions)16 b Fn(:)g(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)29 b Fu(17)275 3753 y(3.4)92 b(Shell)30 b(P)m(arameters)c
+(:)h(:)29 b Fu(18)275 3863 y(3.4)92 b(Shell)30 b(P)m(arameters)c
Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38 b
-Fu(19)399 3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
+Fu(20)399 3973 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)8
b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)21 b Fu(21)399 3973 y(3.4.2)93 b(Sp)s(ecial)30
+h(:)f(:)h(:)21 b Fu(21)399 4082 y(3.4.2)93 b(Sp)s(ecial)30
b(P)m(arameters)c Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4082
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37 b Fu(21)275 4192
y(3.5)92 b(Shell)30 b(Expansions)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)38 b Fu(22)399 4192 y(3.5.1)93 b(Brace)31
+(:)g(:)h(:)f(:)38 b Fu(22)399 4301 y(3.5.1)93 b(Brace)31
b(Expansion)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b
-Fu(23)399 4301 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
+Fu(23)399 4411 y(3.5.2)93 b(Tilde)30 b(Expansion)18 b
Fn(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(23)399 4411 y(3.5.3)93
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)31 b Fu(24)399 4521 y(3.5.3)93
b(Shell)30 b(P)m(arameter)i(Expansion)26 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(24)399 4521 y(3.5.4)93
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)39 b Fu(25)399 4630 y(3.5.4)93
b(Command)29 b(Substitution)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(30)399 4630
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(31)399 4740
y(3.5.5)93 b(Arithmetic)31 b(Expansion)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)40 b
-Fu(31)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
+Fu(31)399 4849 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)15
b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)28 b Fu(31)399 4849 y(3.5.7)93 b(W)-8
+(:)f(:)g(:)h(:)28 b Fu(32)399 4959 y(3.5.7)93 b(W)-8
b(ord)31 b(Splitting)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41
-b Fu(31)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)22
+b Fu(32)399 5068 y(3.5.8)93 b(Filename)32 b(Expansion)22
b Fn(:)14 b(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)35 b Fu(32)524 5068 y(3.5.8.1)93 b(P)m(attern)31
+f(:)h(:)f(:)g(:)35 b Fu(33)524 5178 y(3.5.8.1)93 b(P)m(attern)31
b(Matc)m(hing)14 b Fn(:)k(:)d(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5178 y(3.5.9)93
+h(:)f(:)g(:)h(:)f(:)h(:)27 b Fu(33)399 5288 y(3.5.9)93
b(Quote)31 b(Remo)m(v)-5 b(al)17 b Fn(:)g(:)e(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)30
-b Fu(34)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(34)p
-eop end
+b Fu(35)p eop end
%%Page: -2 4
-TeXDict begin -2 3 bop 3699 -116 a Fu(ii)399 83 y(3.6.1)93
-b(Redirecting)31 b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24
-b Fu(35)399 193 y(3.6.2)93 b(Redirecting)31 b(Output)15
-b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+TeXDict begin -2 3 bop 3699 -116 a Fu(ii)275 83 y(3.6)92
+b(Redirections)14 b Fn(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)27 b Fu(35)399 193 y(3.6.1)93 b(Redirecting)31
+b(Input)11 b Fn(:)j(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(36)399 302
+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(:)28 b Fu(35)399 302 y(3.6.3)93 b(App)s(ending)28
-b(Redirected)k(Output)20 b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)33 b Fu(36)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(36)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(36)399 631 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28
+b Fu(36)399 412 y(3.6.3)93 b(App)s(ending)28 b(Redirected)k(Output)20
+b Fn(:)14 b(:)h(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(36)399
+521 y(3.6.4)93 b(Redirecting)31 b(Standard)e(Output)h(and)f(Standard)h
+(Error)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)29 b
+Fu(37)399 631 y(3.6.5)93 b(App)s(ending)28 b(Standard)i(Output)f(and)h
+(Standard)f(Error)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)40
+b Fu(37)399 741 y(3.6.6)93 b(Here)31 b(Do)s(cumen)m(ts)15
b 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(36)399 741 y(3.6.7)93
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)27 b Fu(37)399 850 y(3.6.7)93
b(Here)31 b(Strings)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(37)399 850 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
+b Fu(38)399 960 y(3.6.8)93 b(Duplicating)32 b(File)f(Descriptors)25
b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37
-b Fu(37)399 960 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
+b Fu(38)399 1069 y(3.6.9)93 b(Mo)m(ving)32 b(File)f(Descriptors)d
Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-40 b Fu(37)399 1069 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
+40 b Fu(38)399 1179 y(3.6.10)93 b(Op)s(ening)29 b(File)j(Descriptors)f
(for)f(Reading)h(and)f(W)-8 b(riting)29 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f
-(:)41 b Fu(37)275 1179 y(3.7)92 b(Executing)31 b(Commands)24
+(:)41 b Fu(38)275 1289 y(3.7)92 b(Executing)31 b(Commands)24
b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(38)399 1289 y(3.7.1)93
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(39)399 1398 y(3.7.1)93
b(Simple)30 b(Command)f(Expansion)11 b Fn(:)k(:)g(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)24 b Fu(38)399 1398 y(3.7.2)93 b(Command)29
+h(:)f(:)g(:)h(:)f(:)24 b Fu(39)399 1508 y(3.7.2)93 b(Command)29
b(Searc)m(h)i(and)f(Execution)15 b Fn(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-28 b Fu(38)399 1508 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
+28 b Fu(39)399 1617 y(3.7.3)93 b(Command)29 b(Execution)i(En)m
(vironmen)m(t)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(39)399
-1617 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)30 b Fu(40)399
+1727 y(3.7.4)93 b(En)m(vironmen)m(t)26 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)39 b Fu(40)399 1727 y(3.7.5)93 b(Exit)31
+(:)f(:)g(:)h(:)39 b Fu(41)399 1836 y(3.7.5)93 b(Exit)31
b(Status)16 b Fn(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)29
-b Fu(40)399 1836 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
+b Fu(41)399 1946 y(3.7.6)93 b(Signals)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(41)275
-1946 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)36 b Fu(42)275
+2056 y(3.8)92 b(Shell)30 b(Scripts)12 b Fn(:)i(:)i(:)f(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(41)150 2197
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)25 b Fu(42)150 2306
y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)14 b Fo(:)20
b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)27 b Fs(43)275 2334 y Fu(4.1)92 b(Bourne)30
+(:)h(:)f(:)h(:)f(:)27 b Fs(44)275 2443 y Fu(4.1)92 b(Bourne)30
b(Shell)g(Builtins)16 b Fn(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)29
-b Fu(43)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
+b Fu(44)275 2553 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)13
b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)26 b Fu(50)275 2553 y(4.3)92 b(Mo)s(difying)30
+(:)f(:)g(:)h(:)f(:)26 b Fu(51)275 2663 y(4.3)92 b(Mo)s(difying)30
b(Shell)g(Beha)m(vior)18 b Fn(:)f(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(61)399
-2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:)
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)31 b Fu(62)399
+2772 y(4.3.1)93 b(The)30 b(Set)g(Builtin)14 b Fn(:)i(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)27 b Fu(61)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
+f(:)g(:)27 b Fu(62)399 2882 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)21
b Fn(:)16 b(:)g(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(65)275 2882 y(4.4)92
+h(:)f(:)h(:)f(:)g(:)h(:)34 b Fu(66)275 2991 y(4.4)92
b(Sp)s(ecial)30 b(Builtins)9 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)22 b Fu(71)150 3132 y Fs(5)135 b(Shell)45
+f(:)g(:)h(:)f(:)22 b Fu(72)150 3242 y Fs(5)135 b(Shell)45
b(V)-11 b(ariables)11 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3269 y Fu(5.1)92
+f(:)h(:)f(:)g(:)h(:)f(:)24 b Fs(73)275 3379 y Fu(5.1)92
b(Bourne)30 b(Shell)g(V)-8 b(ariables)10 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-23 b Fu(73)275 3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
+23 b Fu(73)275 3489 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)26
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)38
-b Fu(73)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
+b Fu(73)150 3739 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)32
b Fo(:)19 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-44 b Fs(85)275 3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
+44 b Fs(86)275 3876 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)16
b Fn(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)29
-b Fu(85)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
+b Fu(86)275 3986 y(6.2)92 b(Bash)30 b(Startup)g(Files)f
Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
-g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(87)275
-3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(88)275
+4095 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)19 b Fn(:)d(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(88)399 4095 y(6.3.1)93
+(:)h(:)f(:)g(:)h(:)f(:)h(:)32 b Fu(89)399 4205 y(6.3.1)93
b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)25 b
Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(89)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
+b Fu(90)399 4315 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m
(e?)22 b Fn(:)d(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)35 b Fu(89)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33
+h(:)35 b Fu(90)399 4424 y(6.3.3)93 b(In)m(teractiv)m(e)33
b(Shell)d(Beha)m(vior)11 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(89)275 4424 y(6.4)92 b(Bash)30
+(:)h(:)f(:)g(:)h(:)f(:)24 b Fu(90)275 4534 y(6.4)92 b(Bash)30
b(Conditional)h(Expressions)10 b Fn(:)k(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(90)275 4534 y(6.5)92
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)23 b Fu(91)275 4643 y(6.5)92
b(Shell)30 b(Arithmetic)13 b Fn(:)k(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)26 b Fu(92)275 4643 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f
+(:)h(:)26 b Fu(93)275 4753 y(6.6)92 b(Aliases)20 b Fn(:)d(:)e(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)33
-b Fu(93)275 4753 y(6.7)92 b(Arra)m(ys)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)
+b Fu(94)275 4863 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(94)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16
+b Fu(95)275 4972 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)16
b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(96)399 4972
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(97)399 5082
y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)23 b
Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-36 b Fu(96)275 5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13
+36 b Fu(97)275 5191 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)13
b Fn(:)h(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(97)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(99)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(99)p eop end
+(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(98)275 5301 y(6.10)92
+b(The)30 b(Restricted)h(Shell)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f
+(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)22
+b Fu(100)p eop end
%%Page: -3 5
-TeXDict begin -3 4 bop 3674 -116 a Fu(iii)150 83 y Fs(7)135
-b(Job)45 b(Con)l(trol)35 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)48 b Fs(103)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(103)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(:)
+TeXDict begin -3 4 bop 3674 -116 a Fu(iii)275 83 y(6.11)92
+b(Bash)31 b(POSIX)e(Mo)s(de)14 b Fn(:)i(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)28
+b Fu(101)275 193 y(6.12)92 b(Shell)30 b(Compatibilit)m(y)i(Mo)s(de)25
+b Fn(:)15 b(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
+h(:)38 b Fu(104)150 443 y Fs(7)135 b(Job)45 b(Con)l(trol)35
+b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)
+g(:)48 b Fs(107)275 580 y Fu(7.1)92 b(Job)30 b(Con)m(trol)h(Basics)23
+b Fn(:)16 b(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
+g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)36 b Fu(107)275 690
+y(7.2)92 b(Job)30 b(Con)m(trol)h(Builtins)11 b Fn(:)k(:)g(:)h(:)f(:)h
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24
-b Fu(104)275 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
+(:)f(:)24 b Fu(108)275 800 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8
b(ariables)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(106)150
-690 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)38 b Fu(110)150
+1050 y Fs(8)135 b(Command)45 b(Line)g(Editing)11 b Fo(:)20
b(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f
-(:)g(:)h(:)f(:)h(:)k Fs(107)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(107)275 936 y(8.2)92
+(:)g(:)h(:)f(:)h(:)k Fs(111)275 1187 y Fu(8.1)92 b(In)m(tro)s(duction)
+30 b(to)h(Line)f(Editing)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
+(:)h(:)f(:)g(:)h(:)f(:)h(:)25 b Fu(111)275 1297 y(8.2)92
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(107)399 1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
+b Fu(111)399 1406 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)13
b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)26
-b Fu(108)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
+b Fu(112)399 1516 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i
(Commands)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)27
-b Fu(108)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
+b Fu(112)399 1626 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)24
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38
-b Fu(109)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
+b Fu(113)399 1735 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)17
b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)30 b Fu(109)399 1484 y(8.2.5)93 b(Searc)m(hing)31
+(:)f(:)h(:)30 b Fu(113)399 1845 y(8.2.5)93 b(Searc)m(hing)31
b(for)f(Commands)f(in)h(the)h(History)15 b Fn(:)g(:)h(:)f(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(109)275
-1594 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)28 b Fu(113)275
+1954 y(8.3)92 b(Readline)31 b(Init)f(File)8 b Fn(:)17
b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(110)399 1704
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)22 b Fu(114)399 2064
y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)21
b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)34
-b Fu(110)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
+b Fu(114)399 2174 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)14
b Fn(:)h(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)27
-b Fu(118)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
+b Fu(122)399 2283 y(8.3.3)93 b(Sample)30 b(Init)g(File)20
b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(119)275 2032 y(8.4)92
+(:)h(:)f(:)g(:)h(:)f(:)h(:)33 b Fu(124)275 2393 y(8.4)92
b(Bindable)30 b(Readline)h(Commands)19 b Fn(:)c(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(122)399 2142 y(8.4.1)93
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)33 b Fu(127)399 2502 y(8.4.1)93
b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)16 b Fn(:)h(:)e(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(122)399
-2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)29 b Fu(127)399
+2612 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f
(History)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)39 b Fu(123)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8
+f(:)39 b Fu(128)399 2721 y(8.4.3)93 b(Commands)29 b(F)-8
b(or)31 b(Changing)f(T)-8 b(ext)9 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)23 b Fu(124)399 2471 y(8.4.4)93 b(Killing)31
+h(:)f(:)23 b Fu(130)399 2831 y(8.4.4)93 b(Killing)31
b(And)e(Y)-8 b(anking)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
-(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(126)399
-2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25
+(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)24 b Fu(131)399
+2941 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)25
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
-(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(127)399
-2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
+(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)39 b Fu(132)399
+3050 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F)-8
b(or)31 b(Y)-8 b(ou)20 b Fn(:)c(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)33
-b Fu(127)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
+b Fu(133)399 3160 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)9
b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(129)399 2909 y(8.4.8)93
+h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(134)399 3269 y(8.4.8)93
b(Some)30 b(Miscellaneous)j(Commands)14 b Fn(:)f(:)j(:)f(:)h(:)f(:)g(:)
h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)27 b Fu(129)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
+(:)f(:)27 b Fu(135)275 3379 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)e
Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(131)275
-3128 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)41 b Fu(137)275
+3489 y(8.6)92 b(Programmable)30 b(Completion)25 b Fn(:)15
b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)37
-b Fu(132)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
+b Fu(137)275 3598 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)14
b Fn(:)i(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(134)275
-3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8
+h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)28 b Fu(139)275
+3708 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)8
b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
-(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(138)150 3598 y
+(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)22 b Fu(143)150 3958 y
Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)28
b Fo(:)22 b(:)d(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g
-(:)h(:)41 b Fs(141)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
+(:)h(:)41 b Fs(146)275 4095 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8
b(acilities)9 b Fn(:)19 b(:)c(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(141)275
-3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)22 b Fu(146)275
+4205 y(9.2)92 b(Bash)30 b(History)h(Builtins)d Fn(:)16
b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)
-h(:)f(:)h(:)f(:)41 b Fu(141)275 3954 y(9.3)92 b(History)31
+h(:)f(:)h(:)f(:)41 b Fu(146)275 4315 y(9.3)92 b(History)31
b(Expansion)10 b Fn(:)k(:)h(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)23
-b Fu(143)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
+b Fu(148)399 4424 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)19
b Fn(:)e(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)
g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)g(:)h(:)32 b Fu(144)399 4174 y(9.3.2)93 b(W)-8
+(:)h(:)f(:)g(:)h(:)32 b Fu(149)399 4534 y(9.3.2)93 b(W)-8
b(ord)31 b(Designators)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h
(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(144)399
-4283 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)
+f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)39 b Fu(150)399
+4643 y(9.3.3)93 b(Mo)s(di\014ers)15 b Fn(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)
h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h
(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)
-h(:)f(:)h(:)f(:)g(:)29 b Fu(145)p eop end
+h(:)f(:)h(:)f(:)g(:)29 b Fu(150)p eop end
%%Page: -4 6
TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135
b(Installing)46 b(Bash)16 b Fo(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)
-f(:)h(:)f(:)29 b Fs(147)275 220 y Fu(10.1)92 b(Basic)32
+f(:)h(:)f(:)29 b Fs(152)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(147)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)17
+b Fu(152)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(148)275 439 y(10.3)92 b(Compiling)30
+(:)f(:)h(:)f(:)30 b Fu(153)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(148)275 549 y(10.4)92
+(:)g(:)h(:)f(:)h(:)f(:)23 b Fu(153)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(148)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s
+b Fu(153)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(149)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
+h(:)34 b Fu(154)275 768 y(10.6)92 b(Sharing)30 b(Defaults)24
b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
-f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(149)275
+f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)37 b Fu(154)275
878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)12 b Fn(:)k(:)f(:)h(:)f
(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)
f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f
-(:)h(:)f(:)25 b Fu(149)275 987 y(10.8)92 b(Optional)31
+(:)h(:)f(:)25 b Fu(154)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(150)150 1238 y Fs(App)t(endix)44 b(A)119 b(Rep)t(orting)46
+b Fu(155)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(155)150 1498 y(App)t(endix)44
+(:)f(:)g(:)h(:)f(:)35 b Fs(160)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(156)275 1776 y Fu(B.1)92
+f(:)g(:)h(:)f(:)h(:)47 b Fs(161)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(160)150 2027 y Fs(App)t(endix)44 b(C)124 b(GNU)36
+(:)35 b Fu(165)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(162)150 2305 y(App)t(endix)44 b(D)118
+Fo(:)20 b(:)29 b Fs(167)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(170)275 2442 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h
+b Fs(175)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(170)275 2552 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8
+b Fu(175)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(171)275 2661 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8
+b Fu(176)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(172)275 2771 y(D.4)92 b(F)-8 b(unction)31
+h(:)f(:)g(:)42 b Fu(177)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(174)275 2880 y(D.5)92 b(Concept)30 b(Index)15 b
+b Fu(179)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(176)p eop end
+Fu(181)p eop end
%%Page: 1 7
TeXDict begin 1 6 bop 3705 -116 a Fu(1)150 299 y Fp(1)80
b(In)l(tro)t(duction)150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150
@@ -8280,7 +8267,7 @@ b(and)e(function)h(names.)630 4020 y(Also)31 b(referred)f(to)h(as)f(an)
h Ft(identifier)p Fu(.)150 4186 y Ft(operator)96 b Fu(A)38
b Ft(control)28 b(operator)36 b Fu(or)h(a)i Ft(redirection)27
b(operator)p Fu(.)61 b(See)38 b(Section)g(3.6)h([Redirec-)630
-4295 y(tions],)f(page)f(34,)i(for)d(a)g(list)h(of)f(redirection)h(op)s
+4295 y(tions],)f(page)f(35,)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
@@ -8352,17 +8339,17 @@ y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g
(shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150
3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h
(follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g
-(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(41\),)k
+(\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(42\),)k
(from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h
(to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g
-(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(85\),)h(or)e(from)g
+(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(86\),)h(or)e(from)g
(the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43
b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d
(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27
b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f
(separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330
4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i
-(Section)f(6.6)g([Aliases],)i(page)e(93\).)199 4186 y(3.)61
+(Section)f(6.6)g([Aliases],)i(page)e(94\).)199 4186 y(3.)61
b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s
(ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330
4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40
@@ -8370,16 +8357,16 @@ b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g
([Shell)g(Expansions],)h(page)f(22\),)330 4551 y(breaking)35
b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h
(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30
-b(page)h(32\))h(and)e(commands)g(and)g(argumen)m(ts.)199
+b(page)h(33\))h(and)e(commands)g(and)g(argumen)m(ts.)199
4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g
-(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(34\))g(and)e(re-)330
+(\(see)h(Section)f(3.6)h([Redirections],)i(page)e(35\))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(38\).)199 5208 y(7.)61
+([Executing)f(Commands],)f(page)h(39\).)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(40\).)p
+y(tion)31 b(3.7.5)h([Exit)f(Status],)g(page)g(41\).)p
eop end
%%Page: 6 12
TeXDict begin 6 11 bop 150 -116 a Fu(Chapter)30 b(3:)41
@@ -8397,11 +8384,11 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m
(quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68
b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j
(are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m
-(teraction],)j(page)c(143\),)47 b(the)150 1124 y Fr(history)30
+(teraction],)j(page)c(148\),)47 b(the)150 1124 y Fr(history)30
b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p
Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g
(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F)
--8 b(acilities],)26 b(page)c(141,)j(for)20 b(more)h(details)h
+-8 b(acilities],)26 b(page)c(146,)j(for)20 b(more)h(details)h
(concerning)g(history)f(expansion.)275 1364 y(There)37
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)
@@ -8429,9 +8416,9 @@ 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 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(99\),)i(the)e(`)p
-Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f
+y(When)c(the)g(shell)g(is)g(in)f Fm(posix)h Fu(mo)s(de)f(\(see)i
+(Section)g(6.11)g([Bash)f(POSIX)f(Mo)s(de],)i(page)g(101\),)h(the)e(`)p
+Ft(!)p Fu(')150 3364 y(has)d(no)g(sp)s(ecial)h(meaning)g(within)f
(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
@@ -8456,7 +8443,7 @@ Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41
b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p
Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g
(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h
-(Expansion],)e(page)h(24\).)150 4672 y Fk(3.1.2.4)63
+(Expansion],)e(page)h(25\).)150 4672 y Fk(3.1.2.4)63
b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f
Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8
b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p
@@ -8498,2372 +8485,2423 @@ Fr(x)38 b Fu(c)m(haracter)150 3313 y(The)30 b(expanded)f(result)i(is)f
b(T)-10 b(ranslation)150 3657 y Fu(A)28 b(double-quoted)g(string)f
(preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p
Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150
-3767 y(according)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
-3876 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g
-(replacemen)m(t)h(is)e(double-quoted.)275 4010 y(Some)20
-b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g
-Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150
-4119 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the)
-g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5
-b(ariable,)150 4229 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p
-Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c
-Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150
-4339 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23
-b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38
-b(Still)23 b(others)f(use)g(b)s(oth)150 4448 y(v)-5 b(ariables)31
+3767 y(according)37 b(to)g(the)f(curren)m(t)g(lo)s(cale.)59
+b(The)36 b Fr(gettext)k Fu(infrastructure)35 b(p)s(erforms)g(the)h
+(message)h(catalog)150 3876 y(lo)s(okup)21 b(and)g(translation,)k
+(using)c(the)h Ft(LC_MESSAGES)d Fu(and)i Ft(TEXTDOMAIN)e
+Fu(shell)i(v)-5 b(ariables,)25 b(as)d(explained)150 3986
+y(b)s(elo)m(w.)57 b(See)36 b(the)g(gettext)i(do)s(cumen)m(tation)e(for)
+g(additional)g(details.)58 b(If)35 b(the)h(curren)m(t)f(lo)s(cale)j(is)
+e Ft(C)f Fu(or)150 4096 y Ft(POSIX)p Fu(,)g(or)g(if)g(there)g(are)h(no)
+f(translations)h(a)m(v)-5 b(ailable,)38 b(the)e(dollar)f(sign)g(is)g
+(ignored.)55 b(If)35 b(the)g(string)g(is)150 4205 y(translated)c(and)f
+(replaced,)h(the)f(replacemen)m(t)i(is)f(double-quoted.)275
+4339 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f
+(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39
+b(Others)150 4448 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)
+i(from)d(the)g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c
+Fu(shell)j(v)-5 b(ariable,)150 4558 y(p)s(ossibly)31
+b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31
+b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33
+b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 4667 y(the)22
+b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i
+(of)e(the)h(message)g(catalog)i(\014les.)38 b(Still)23
+b(others)f(use)g(b)s(oth)150 4777 y(v)-5 b(ariables)31
b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p
-Ft(LC_MESSAGES)p Fu(/LC)p 2528 4448 28 4 v 34 w(MESSA)m(GES/)p
-Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150
-4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m
+Ft(LC_MESSAGES)p Fu(/LC)p 2528 4777 28 4 v 34 w(MESSA)m(GES/)p
+Ft(TEXTDOMAIN)p Fu(.mo.)150 4974 y Fk(3.1.3)63 b(Commen)m(ts)150
+5121 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m
(teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments)
-16 b Fu(option)150 4902 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h
+16 b Fu(option)150 5230 y(to)40 b(the)f Ft(shopt)e Fu(builtin)h(is)h
(enabled)g(\(see)h(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)k(page)e
-(65\),)i(a)d(w)m(ord)150 5011 y(b)s(eginning)26 b(with)g(`)p
+(66\),)i(a)d(w)m(ord)150 5340 y(b)s(eginning)26 b(with)g(`)p
Ft(#)p Fu(')g(causes)h(that)f(w)m(ord)g(and)g(all)h(remaining)g(c)m
-(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)150
-5121 y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g
-Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g
-(allo)m(w)150 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(88,)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
+(haracters)g(on)f(that)h(line)g(to)g(b)s(e)f(ignored.)p
eop end
%%Page: 8 14
TeXDict begin 8 13 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(8)150 299
-y Fs(3.2)68 b(Shell)45 b(Commands)150 458 y Fu(A)d(simple)g(shell)g
-(command)f(suc)m(h)h(as)g Ft(echo)29 b(a)h(b)g(c)41 b
-Fu(consists)i(of)f(the)f(command)h(itself)h(follo)m(w)m(ed)g(b)m(y)150
-568 y(argumen)m(ts,)31 b(separated)g(b)m(y)f(spaces.)275
-704 y(More)h(complex)h(shell)f(commands)g(are)g(comp)s(osed)g(of)g
-(simple)g(commands)g(arranged)g(together)h(in)150 814
-y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41 b(in)31
-b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f(command)h
-(b)s(ecomes)f(the)h(input)f(of)150 923 y(a)h(second,)f(in)h(a)f(lo)s
-(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g
-(grouping.)150 1124 y Fk(3.2.1)63 b(Simple)41 b(Commands)150
-1271 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e(of)i(command)f
-(encoun)m(tered)h(most)g(often.)40 b(It's)29 b(just)f(a)h(sequence)g
-(of)150 1381 y(w)m(ords)22 b(separated)i(b)m(y)e Ft(blank)p
-Fu(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con)m(trol)h
-(op)s(erators)f(\(see)h(Chapter)f(2)150 1491 y([De\014nitions],)37
-b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i(generally)g(sp)s
-(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j(with)150
-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(40\))g(of)g(a)g(simple)f
-(command)g(is)h(its)150 1846 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
+y(An)43 b(in)m(teractiv)m(e)j(shell)e(without)f(the)g
+Ft(interactive_comments)38 b Fu(option)44 b(enabled)f(do)s(es)g(not)g
+(allo)m(w)150 408 y(commen)m(ts.)56 b(The)34 b Ft(interactive_comments)
+c Fu(option)35 b(is)g(on)g(b)m(y)g(default)g(in)g(in)m(teractiv)m(e)j
+(shells.)55 b(See)150 518 y(Section)30 b(6.3)f([In)m(teractiv)m(e)j
+(Shells],)d(page)h(89,)g(for)e(a)i(description)e(of)h(what)g(mak)m(es)h
+(a)f(shell)g(in)m(teractiv)m(e.)150 757 y Fs(3.2)68 b(Shell)45
+b(Commands)150 916 y Fu(A)d(simple)g(shell)g(command)f(suc)m(h)h(as)g
+Ft(echo)29 b(a)h(b)g(c)41 b Fu(consists)i(of)f(the)f(command)h(itself)h
+(follo)m(w)m(ed)g(b)m(y)150 1026 y(argumen)m(ts,)31 b(separated)g(b)m
+(y)f(spaces.)275 1159 y(More)h(complex)h(shell)f(commands)g(are)g(comp)
+s(osed)g(of)g(simple)g(commands)g(arranged)g(together)h(in)150
+1269 y(a)f(v)-5 b(ariet)m(y)32 b(of)f(w)m(a)m(ys:)41
+b(in)31 b(a)g(pip)s(eline)f(in)g(whic)m(h)g(the)h(output)f(of)h(one)f
+(command)h(b)s(ecomes)f(the)h(input)f(of)150 1378 y(a)h(second,)f(in)h
+(a)f(lo)s(op)h(or)f(conditional)i(construct,)f(or)f(in)g(some)h(other)g
+(grouping.)150 1575 y Fk(3.2.1)63 b(Reserv)m(ed)40 b(W)-10
+b(ords)150 1722 y Fu(Reserv)m(ed)33 b(w)m(ords)g(are)g(w)m(ords)g(that)
+g(ha)m(v)m(e)h(sp)s(ecial)g(meaning)f(to)h(the)f(shell.)49
+b(They)32 b(are)h(used)g(to)g(b)s(egin)150 1832 y(and)d(end)f(the)i
+(shell's)g(comp)s(ound)e(commands.)275 1965 y(The)k(follo)m(wing)i(w)m
+(ords)e(are)h(recognized)i(as)e(reserv)m(ed)f(when)g(unquoted)g(and)g
+(the)h(\014rst)f(w)m(ord)h(of)g(a)150 2075 y(command)c(\(see)h(b)s(elo)
+m(w)g(for)f(exceptions\):)150 2208 y Ft(if)364 b(then)168
+b(elif)g(else)g(fi)336 b(time)150 2318 y(for)316 b(in)264
+b(until)120 b(while)g(do)336 b(done)150 2427 y(case)268
+b(esac)168 b(coproc)72 b(select)g(function)150 2537 y({)412
+b(})312 b([[)264 b(]])g(!)150 2670 y(in)33 b Fu(is)h(recognized)h(as)f
+(a)g(reserv)m(ed)f(w)m(ord)h(if)f(it)h(is)g(the)g(third)f(w)m(ord)g(of)
+h(a)g Ft(case)e Fu(or)i Ft(select)e Fu(command.)150 2780
+y Ft(in)e Fu(and)g Ft(do)f Fu(are)i(recognized)h(as)e(reserv)m(ed)h(w)m
+(ords)f(if)g(they)h(are)f(the)h(third)f(w)m(ord)g(in)g(a)g
+Ft(for)g Fu(command.)150 2977 y Fk(3.2.2)63 b(Simple)41
+b(Commands)150 3124 y Fu(A)29 b(simple)f(command)g(is)h(the)g(kind)e
+(of)i(command)f(encoun)m(tered)h(most)g(often.)40 b(It's)29
+b(just)f(a)h(sequence)g(of)150 3233 y(w)m(ords)22 b(separated)i(b)m(y)e
+Ft(blank)p Fu(s,)i(terminated)f(b)m(y)g(one)g(of)g(the)g(shell's)g(con)
+m(trol)h(op)s(erators)f(\(see)h(Chapter)f(2)150 3343
+y([De\014nitions],)37 b(page)e(3\).)54 b(The)35 b(\014rst)e(w)m(ord)i
+(generally)g(sp)s(eci\014es)g(a)g(command)f(to)h(b)s(e)f(executed,)j
+(with)150 3452 y(the)31 b(rest)f(of)h(the)f(w)m(ords)g(b)s(eing)g(that)
+h(command's)f(argumen)m(ts.)275 3586 y(The)h(return)h(status)g(\(see)i
+(Section)f(3.7.5)h([Exit)f(Status],)h(page)f(41\))g(of)g(a)g(simple)f
+(command)g(is)h(its)150 3695 y(exit)38 b(status)f(as)g(pro)m(vided)f(b)
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)21 b Ft(pipeline)d
+(128)p Ft(+)p Fr(n)g Fu(if)g(the)g(command)150 3805 y(w)m(as)31
+b(terminated)g(b)m(y)f(signal)h Fr(n)p Fu(.)150 4002
+y Fk(3.2.3)63 b(Pip)s(elines)150 4149 y Fu(A)21 b Ft(pipeline)d
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
+4259 y(`)p Ft(|)p Fu(')31 b(or)f(`)p Ft(|&)p Fu('.)275
+4392 y(The)f(format)i(for)f(a)h(pip)s(eline)f(is)390
+4525 y Ft([time)46 b([-p]])h([!])g Fj(command1)e Ft([)j(|)f(or)g(|&)g
+Fj(command2)f Ft(])h(...)150 4659 y Fu(The)25 b(output)f(of)i(eac)m(h)g
(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
+e(to)i(the)f(input)f(of)h(the)h(next)150 4768 y(command.)40
b(That)29 b(is,)h(eac)m(h)h(command)e(reads)g(the)h(previous)f
-(command's)g(output.)40 b(This)29 b(connection)150 3041
+(command's)g(output.)40 b(This)29 b(connection)150 4878
y(is)h(p)s(erformed)f(b)s(efore)h(an)m(y)h(redirections)g(sp)s
-(eci\014ed)f(b)m(y)g(the)g(command.)275 3178 y(If)k(`)p
+(eci\014ed)f(b)m(y)g(the)g(command.)275 5011 y(If)k(`)p
Ft(|&)p Fu(')h(is)f(used,)i Fr(command1)7 b Fu('s)35
b(standard)f(error,)i(in)e(addition)h(to)h(its)f(standard)f(output,)i
-(is)e(con-)150 3287 y(nected)h(to)g Fr(command2)7 b Fu('s)35
+(is)e(con-)150 5121 y(nected)h(to)g Fr(command2)7 b Fu('s)35
b(standard)f(input)f(through)h(the)g(pip)s(e;)i(it)f(is)g(shorthand)e
-(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 3397 y(implicit)41
+(for)h Ft(2>&1)29 b(|)p Fu(.)53 b(This)150 5230 y(implicit)41
b(redirection)f(of)g(the)g(standard)f(error)g(to)h(the)g(standard)f
-(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 3506
-y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)275
-3643 y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g Fu(causes)h(timing)g
+(output)g(is)h(p)s(erformed)e(after)j(an)m(y)150 5340
+y(redirections)31 b(sp)s(eci\014ed)f(b)m(y)g(the)g(command.)p
+eop end
+%%Page: 9 15
+TeXDict begin 9 14 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(9)275 299
+y(The)36 b(reserv)m(ed)g(w)m(ord)g Ft(time)g Fu(causes)h(timing)g
(statistics)h(to)f(b)s(e)f(prin)m(ted)g(for)g(the)h(pip)s(eline)f(once)
-h(it)150 3752 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e
+h(it)150 408 y(\014nishes.)51 b(The)34 b(statistics)i(curren)m(tly)e
(consist)h(of)f(elapsed)h(\(w)m(all-clo)s(c)m(k\))i(time)e(and)f(user)f
-(and)h(system)150 3862 y(time)e(consumed)e(b)m(y)h(the)g(command's)g
+(and)h(system)150 518 y(time)e(consumed)e(b)m(y)h(the)g(command's)g
(execution.)44 b(The)31 b Ft(-p)f Fu(option)i(c)m(hanges)g(the)f
-(output)g(format)g(to)150 3971 y(that)j(sp)s(eci\014ed)e(b)m(y)h
+(output)g(format)g(to)150 628 y(that)j(sp)s(eci\014ed)e(b)m(y)h
Fm(posix)p Fu(.)49 b(When)33 b(the)g(shell)g(is)h(in)e
Fm(posix)h Fu(mo)s(de)g(\(see)h(Section)g(6.11)g([Bash)g(POSIX)150
-4081 y(Mo)s(de],)40 b(page)f(99\),)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
+737 y(Mo)s(de],)j(page)e(101\),)j(it)e(do)s(es)e(not)i(recognize)g
+Ft(time)e Fu(as)h(a)h(reserv)m(ed)f(w)m(ord)f(if)h(the)g(next)g(tok)m
+(en)h(b)s(egins)150 847 y(with)d(a)g(`)p Ft(-)p Fu('.)49
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
+956 y(timing)38 b(information)g(should)e(b)s(e)h(displa)m(y)m(ed.)62
b(See)38 b(Section)g(5.2)g([Bash)g(V)-8 b(ariables],)41
-b(page)d(73,)i(for)e(a)150 4410 y(description)27 b(of)g(the)h(a)m(v)-5
+b(page)d(73,)i(for)e(a)150 1066 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
+1176 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(99\),)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
+150 1285 y(these)31 b(easily)-8 b(.)275 1418 y(When)26
+b(the)h(shell)g(is)g(in)g Fm(posix)f Fu(mo)s(de)g(\(see)i(Section)f
+(6.11)i([Bash)e(POSIX)f(Mo)s(de],)i(page)g(101\),)h Ft(time)150
+1527 y Fu(ma)m(y)d(b)s(e)f(follo)m(w)m(ed)j(b)m(y)d(a)h(newline.)39
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
+(user)e(and)g(system)h(time)150 1637 y(consumed)33 b(b)m(y)h(the)h
(shell)f(and)f(its)i(c)m(hildren.)51 b(The)34 b Ft(TIMEFORMAT)d
Fu(v)-5 b(ariable)35 b(ma)m(y)g(b)s(e)e(used)g(to)i(sp)s(ecify)150
-5094 y(the)c(format)f(of)h(the)f(time)h(information.)275
-5230 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m
-(hronously)f(\(see)h(Section)g(3.2.3)h([Lists],)g(page)e(9\),)i(the)f
-(shell)150 5340 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s
-(eline)g(to)h(complete.)p eop end
-%%Page: 9 15
-TeXDict begin 9 14 bop 150 -116 a 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)29 b(command)g(in)g(a)g(pip)s(eline)g(is)g(executed)h(in)e
-(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)g(a)g(separate)h(pro)s(cess)
-150 408 y(\(see)g(Section)g(3.7.3)h([Command)e(Execution)h(En)m
-(vironmen)m(t],)g(page)g(39\).)41 b(If)29 b(the)g Ft(lastpipe)e
-Fu(option)j(is)150 518 y(enabled)35 b(using)g(the)g Ft(shopt)f
-Fu(builtin)g(\(see)i(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)
-f(65\),)i(the)d(last)150 628 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m
-(y)h(b)s(e)f(run)f(b)m(y)h(the)h(shell)f(pro)s(cess.)275
-760 y(The)24 b(exit)i(status)f(of)h(a)f(pip)s(eline)g(is)g(the)g(exit)h
-(status)f(of)h(the)f(last)h(command)f(in)f(the)i(pip)s(eline,)g(unless)
-150 870 y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i
-(Section)f(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(61\).)42
-b(If)30 b Ft(pipefail)150 980 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)
-g(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g
-(\(righ)m(tmost\))i(command)d(to)h(exit)150 1089 y(with)34
+1746 y(the)c(format)f(of)h(the)f(time)h(information.)275
+1879 y(If)24 b(the)h(pip)s(eline)g(is)g(not)g(executed)h(async)m
+(hronously)f(\(see)h(Section)g(3.2.4)h([Lists],)g(page)e(9\),)i(the)f
+(shell)150 1988 y(w)m(aits)31 b(for)f(all)i(commands)e(in)g(the)g(pip)s
+(eline)g(to)h(complete.)275 2121 y(Eac)m(h)e(command)g(in)g(a)g(pip)s
+(eline)g(is)g(executed)h(in)e(its)i(o)m(wn)f(subshell,)f(whic)m(h)h(is)
+g(a)g(separate)h(pro)s(cess)150 2230 y(\(see)g(Section)g(3.7.3)h
+([Command)e(Execution)h(En)m(vironmen)m(t],)g(page)g(40\).)41
+b(If)29 b(the)g Ft(lastpipe)e Fu(option)j(is)150 2340
+y(enabled)35 b(using)g(the)g Ft(shopt)f Fu(builtin)g(\(see)i(Section)g
+(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f(66\),)i(the)d(last)150
+2450 y(elemen)m(t)d(of)e(a)h(pip)s(eline)f(ma)m(y)h(b)s(e)f(run)f(b)m
+(y)h(the)h(shell)f(pro)s(cess.)275 2582 y(The)24 b(exit)i(status)f(of)h
+(a)f(pip)s(eline)g(is)g(the)g(exit)h(status)f(of)h(the)f(last)h
+(command)f(in)f(the)i(pip)s(eline,)g(unless)150 2692
+y(the)31 b Ft(pipefail)d Fu(option)j(is)g(enabled)f(\(see)i(Section)f
+(4.3.1)i([The)d(Set)h(Builtin],)g(page)h(62\).)42 b(If)30
+b Ft(pipefail)150 2801 y Fu(is)f(enabled,)g(the)f(pip)s(eline's)g
+(return)g(status)h(is)f(the)h(v)-5 b(alue)29 b(of)f(the)h(last)g
+(\(righ)m(tmost\))i(command)d(to)h(exit)150 2911 y(with)34
b(a)h(non-zero)g(status,)i(or)d(zero)i(if)e(all)i(commands)e(exit)h
(successfully)-8 b(.)54 b(If)34 b(the)h(reserv)m(ed)g(w)m(ord)f(`)p
-Ft(!)p Fu(')150 1199 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i
+Ft(!)p Fu(')150 3020 y(precedes)e(the)f(pip)s(eline,)h(the)f(exit)i
(status)f(is)f(the)h(logical)i(negation)f(of)e(the)h(exit)g(status)g
-(as)g(describ)s(ed)150 1308 y(ab)s(o)m(v)m(e.)63 b(The)38
+(as)g(describ)s(ed)150 3130 y(ab)s(o)m(v)m(e.)63 b(The)38
b(shell)f(w)m(aits)i(for)e(all)i(commands)e(in)g(the)h(pip)s(eline)f
-(to)h(terminate)h(b)s(efore)e(returning)g(a)150 1418
-y(v)-5 b(alue.)150 1614 y Fk(3.2.3)63 b(Lists)41 b(of)h(Commands)150
-1761 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)
+(to)h(terminate)h(b)s(efore)e(returning)g(a)150 3240
+y(v)-5 b(alue.)150 3435 y Fk(3.2.4)63 b(Lists)41 b(of)h(Commands)150
+3582 y Fu(A)37 b Ft(list)e Fu(is)i(a)g(sequence)g(of)g(one)g(or)f(more)
h(pip)s(elines)f(separated)h(b)m(y)g(one)g(of)f(the)h(op)s(erators)g(`)
-p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 1870 y(`)p Ft(&&)p
+p Ft(;)p Fu(',)i(`)p Ft(&)p Fu(',)150 3691 y(`)p Ft(&&)p
Fu(',)31 b(or)f(`)p Ft(||)p Fu(',)g(and)g(optionally)i(terminated)f(b)m
(y)f(one)h(of)f(`)p Ft(;)p Fu(',)h(`)p Ft(&)p Fu(',)g(or)f(a)h
-Ft(newline)p Fu(.)275 2003 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
+Ft(newline)p Fu(.)275 3824 y(Of)23 b(these)h(list)g(op)s(erators,)i(`)p
Ft(&&)p Fu(')d(and)g(`)p Ft(||)p Fu(')h(ha)m(v)m(e)h(equal)f
(precedence,)i(follo)m(w)m(ed)f(b)m(y)f(`)p Ft(;)p Fu(')g(and)f(`)p
-Ft(&)p Fu(',)i(whic)m(h)150 2113 y(ha)m(v)m(e)32 b(equal)e(precedence.)
-275 2245 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
+Ft(&)p Fu(',)i(whic)m(h)150 3933 y(ha)m(v)m(e)32 b(equal)e(precedence.)
+275 4066 y(A)f(sequence)h(of)g(one)g(or)g(more)g(newlines)f(ma)m(y)h
(app)s(ear)f(in)h(a)g Ft(list)e Fu(to)j(delimit)f(commands,)g(equiv-)
-150 2355 y(alen)m(t)i(to)f(a)g(semicolon.)275 2488 y(If)c(a)h(command)f
+150 4175 y(alen)m(t)i(to)f(a)g(semicolon.)275 4308 y(If)c(a)h(command)f
(is)h(terminated)g(b)m(y)g(the)g(con)m(trol)h(op)s(erator)f(`)p
Ft(&)p Fu(',)h(the)e(shell)h(executes)h(the)f(command)150
-2597 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
+4418 y(async)m(hronously)g(in)h(a)g(subshell.)39 b(This)28
b(is)h(kno)m(wn)f(as)h(executing)h(the)f(command)g(in)f(the)h
-Fr(bac)m(kground)p Fu(,)150 2707 y(and)42 b(these)i(are)f(referred)g
+Fr(bac)m(kground)p Fu(,)150 4527 y(and)42 b(these)i(are)f(referred)g
(to)g(as)h Fr(async)m(hronous)i Fu(commands.)78 b(The)43
-b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 2816
+b(shell)g(do)s(es)g(not)g(w)m(ait)h(for)f(the)150 4637
y(command)34 b(to)h(\014nish,)f(and)f(the)h(return)f(status)i(is)f(0)g
(\(true\).)53 b(When)34 b(job)g(con)m(trol)h(is)f(not)h(activ)m(e)h
-(\(see)150 2926 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(103\),)
+(\(see)150 4746 y(Chapter)27 b(7)h([Job)f(Con)m(trol],)i(page)g(107\),)
h(the)d(standard)g(input)f(for)i(async)m(hronous)f(commands,)h(in)f
-(the)150 3036 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f
-(redirected)h(from)f Ft(/dev/null)p Fu(.)275 3168 y(Commands)19
+(the)150 4856 y(absence)k(of)f(an)m(y)h(explicit)h(redirections,)f(is)f
+(redirected)h(from)f Ft(/dev/null)p Fu(.)275 4988 y(Commands)19
b(separated)j(b)m(y)f(a)g(`)p Ft(;)p Fu(')g(are)h(executed)g(sequen)m
(tially;)k(the)21 b(shell)g(w)m(aits)h(for)f(eac)m(h)h(command)150
-3278 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i
+5098 y(to)31 b(terminate)h(in)e(turn.)39 b(The)30 b(return)f(status)i
(is)f(the)h(exit)g(status)g(of)g(the)f(last)h(command)f(executed.)275
-3411 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
+5230 y Fm(and)g Fu(and)h Fm(or)g Fu(lists)h(are)g(sequences)f(of)h(one)
g(or)f(more)h(pip)s(elines)e(separated)i(b)m(y)g(the)f(con)m(trol)i(op)
-s(er-)150 3520 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
+s(er-)150 5340 y(ators)e(`)p Ft(&&)p Fu(')f(and)g(`)p
Ft(||)p Fu(',)h(resp)s(ectiv)m(ely)-8 b(.)42 b Fm(and)30
b Fu(and)f Fm(or)h Fu(lists)h(are)g(executed)g(with)f(left)h(asso)s
-(ciativit)m(y)-8 b(.)275 3653 y(An)30 b Fm(and)f Fu(list)i(has)f(the)h
-(form)390 3786 y Fj(command1)46 b Ft(&&)h Fj(command2)150
-3918 y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
-Fr(command1)38 b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g
-(\(success\).)275 4051 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390
-4184 y Fj(command1)46 b Ft(||)h Fj(command2)150 4317
-y Fr(command2)38 b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h
-Fr(command1)38 b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275
-4449 y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h
-Fm(or)f Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h
-(command)f(executed)150 4559 y(in)d(the)h(list.)150 4755
-y Fk(3.2.4)63 b(Comp)s(ound)42 b(Commands)150 4902 y
-Fu(Comp)s(ound)29 b(commands)h(are)i(the)f(shell)g(programming)f
-(language)j(constructs.)42 b(Eac)m(h)32 b(construct)f(b)s(e-)150
-5011 y(gins)25 b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h
-(op)s(erator)f(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f
-(reserv)m(ed)150 5121 y(w)m(ord)i(or)g(op)s(erator.)40
-b(An)m(y)26 b(redirections)g(\(see)i(Section)f(3.6)g([Redirections],)h
-(page)f(34\))h(asso)s(ciated)f(with)150 5230 y(a)k(comp)s(ound)f
-(command)h(apply)f(to)i(all)g(commands)f(within)f(that)i(comp)s(ound)d
-(command)i(unless)f(ex-)150 5340 y(plicitly)i(o)m(v)m(erridden.)p
-eop end
+(ciativit)m(y)-8 b(.)p eop end
%%Page: 10 16
TeXDict begin 10 15 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(10)275 299
-y(In)20 b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s
-(ound)f(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
-408 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
+y(An)30 b Fm(and)f Fu(list)i(has)f(the)h(form)390 433
+y Fj(command1)46 b Ft(&&)h Fj(command2)150 567 y Fr(command2)38
+b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38
+b Fu(returns)29 b(an)h(exit)h(status)g(of)g(zero)g(\(success\).)275
+701 y(An)f Fm(or)f Fu(list)i(has)f(the)h(form)390 835
+y Fj(command1)46 b Ft(||)h Fj(command2)150 969 y Fr(command2)38
+b Fu(is)30 b(executed)i(if,)e(and)g(only)g(if,)h Fr(command1)38
+b Fu(returns)29 b(a)i(non-zero)g(exit)g(status.)275 1103
+y(The)h(return)g(status)i(of)f Fm(and)f Fu(and)h Fm(or)f
+Fu(lists)i(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f
+(executed)150 1213 y(in)d(the)h(list.)150 1412 y Fk(3.2.5)63
+b(Comp)s(ound)42 b(Commands)150 1558 y Fu(Comp)s(ound)29
+b(commands)h(are)i(the)f(shell)g(programming)f(language)j(constructs.)
+42 b(Eac)m(h)32 b(construct)f(b)s(e-)150 1668 y(gins)25
+b(with)f(a)i(reserv)m(ed)f(w)m(ord)f(or)h(con)m(trol)h(op)s(erator)f
+(and)g(is)g(terminated)g(b)m(y)g(a)g(corresp)s(onding)f(reserv)m(ed)150
+1778 y(w)m(ord)i(or)g(op)s(erator.)40 b(An)m(y)26 b(redirections)g
+(\(see)i(Section)f(3.6)g([Redirections],)h(page)f(35\))h(asso)s(ciated)
+f(with)150 1887 y(a)k(comp)s(ound)f(command)h(apply)f(to)i(all)g
+(commands)f(within)f(that)i(comp)s(ound)d(command)i(unless)f(ex-)150
+1997 y(plicitly)i(o)m(v)m(erridden.)275 2131 y(In)20
+b(most)h(cases)g(a)g(list)h(of)f(commands)f(in)g(a)h(comp)s(ound)f
+(command's)g(description)h(ma)m(y)g(b)s(e)f(separated)150
+2240 y(from)30 b(the)h(rest)g(of)g(the)g(command)g(b)m(y)f(one)h(or)g
(more)g(newlines,)g(and)f(ma)m(y)i(b)s(e)e(follo)m(w)m(ed)i(b)m(y)f(a)g
-(newline)150 518 y(in)f(place)h(of)g(a)g(semicolon.)275
-663 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
+(newline)150 2350 y(in)f(place)h(of)g(a)g(semicolon.)275
+2484 y(Bash)45 b(pro)m(vides)h(lo)s(oping)g(constructs,)j(conditional)e
(commands,)j(and)44 b(mec)m(hanisms)i(to)g(group)150
-773 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
-983 y Fk(3.2.4.1)63 b(Lo)s(oping)43 b(Constructs)150
-1130 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
-(constructs.)275 1276 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
+2594 y(commands)30 b(and)g(execute)i(them)e(as)g(a)h(unit.)150
+2792 y Fk(3.2.5.1)63 b(Lo)s(oping)43 b(Constructs)150
+2939 y Fu(Bash)31 b(supp)s(orts)d(the)j(follo)m(wing)g(lo)s(oping)g
+(constructs.)275 3073 y(Note)k(that)f(wherev)m(er)g(a)g(`)p
Ft(;)p Fu(')g(app)s(ears)f(in)h(the)g(description)g(of)g(a)g(command's)
-g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 1385 y(replaced)c(with)f(one)h
-(or)f(more)g(newlines.)150 1561 y Ft(until)240 b Fu(The)30
+g(syn)m(tax,)i(it)e(ma)m(y)h(b)s(e)150 3183 y(replaced)c(with)f(one)h
+(or)f(more)g(newlines.)150 3341 y Ft(until)240 b Fu(The)30
b(syn)m(tax)h(of)f(the)h Ft(until)e Fu(command)h(is:)870
-1701 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
-(consequent-commands)p Ft(;)c(done)630 1841 y Fu(Execute)f
+3476 y Ft(until)46 b Fj(test-commands)p Ft(;)e(do)j Fj
+(consequent-commands)p Ft(;)c(done)630 3610 y Fu(Execute)f
Fr(consequen)m(t-commands)k Fu(as)41 b(long)h(as)f Fr(test-commands)46
-b Fu(has)41 b(an)g(exit)h(status)630 1950 y(whic)m(h)c(is)h(not)g
+b Fu(has)41 b(an)g(exit)h(status)630 3719 y(whic)m(h)c(is)h(not)g
(zero.)67 b(The)38 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)g
-(the)g(last)g(command)630 2060 y(executed)31 b(in)f Fr(consequen)m
+(the)g(last)g(command)630 3829 y(executed)31 b(in)f Fr(consequen)m
(t-commands)p Fu(,)i(or)e(zero)h(if)g(none)f(w)m(as)h(executed.)150
-2230 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(while)e Fu(command)h(is:)870 2370 y Ft(while)46 b
+3987 y Ft(while)240 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(while)e Fu(command)h(is:)870 4122 y Ft(while)46 b
Fj(test-commands)p Ft(;)e(do)j Fj(consequent-commands)p
-Ft(;)c(done)630 2510 y Fu(Execute)f Fr(consequen)m(t-commands)k
+Ft(;)c(done)630 4256 y Fu(Execute)f Fr(consequen)m(t-commands)k
Fu(as)41 b(long)h(as)f Fr(test-commands)46 b Fu(has)41
-b(an)g(exit)h(status)630 2620 y(of)34 b(zero.)53 b(The)34
+b(an)g(exit)h(status)630 4365 y(of)34 b(zero.)53 b(The)34
b(return)f(status)h(is)h(the)f(exit)h(status)g(of)f(the)g(last)h
-(command)f(executed)h(in)630 2729 y Fr(consequen)m(t-commands)p
+(command)f(executed)h(in)630 4475 y Fr(consequen)m(t-commands)p
Fu(,)c(or)g(zero)g(if)f(none)g(w)m(as)h(executed.)150
-2900 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
-Ft(for)e Fu(command)i(is:)870 3040 y Ft(for)47 b Fj(name)g
+4633 y Ft(for)336 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(for)e Fu(command)i(is:)870 4768 y Ft(for)47 b Fj(name)g
Ft([)g([in)g([)p Fj(words)f Ft(...)o(])i(])f(;)h(])f(do)g
-Fj(commands)p Ft(;)e(done)630 3180 y Fu(Expand)30 b Fr(w)m(ords)k
+Fj(commands)p Ft(;)e(done)630 4902 y Fu(Expand)30 b Fr(w)m(ords)k
Fu(\(see)d(Section)h(3.5)g([Shell)f(Expansions],)g(page)g(22\),)i(and)d
-(execute)i Fr(com-)630 3289 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem)
+(execute)i Fr(com-)630 5011 y(mands)43 b Fu(once)e(for)g(eac)m(h)g(mem)
m(b)s(er)f(in)g(the)h(resultan)m(t)g(list,)j(with)c Fr(name)46
-b Fu(b)s(ound)39 b(to)i(the)630 3399 y(curren)m(t)34
+b Fu(b)s(ound)39 b(to)i(the)630 5121 y(curren)m(t)34
b(mem)m(b)s(er.)53 b(If)35 b(`)p Ft(in)30 b Fj(words)p
Fu(')j(is)i(not)g(presen)m(t,)h(the)f Ft(for)e Fu(command)i(executes)h
-(the)630 3508 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g
+(the)630 5230 y Fr(commands)j Fu(once)e(for)f(eac)m(h)h(p)s(ositional)g
(parameter)f(that)h(is)f(set,)i(as)e(if)g(`)p Ft(in)30
-b("$@")p Fu(')36 b(had)630 3618 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j
-(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)630
-3758 y(The)c(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h
+b("$@")p Fu(')36 b(had)630 5340 y(b)s(een)30 b(sp)s(eci\014ed)f(\(see)j
+(Section)f(3.4.2)h([Sp)s(ecial)f(P)m(arameters],)h(page)f(21\).)p
+eop end
+%%Page: 11 17
+TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)630 299
+y(The)27 b(return)f(status)h(is)g(the)h(exit)g(status)f(of)g(the)h
(last)g(command)e(that)i(executes.)41 b(If)27 b(there)630
-3868 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g
+408 y(are)38 b(no)f(items)g(in)g(the)h(expansion)f(of)g
Fr(w)m(ords)p Fu(,)i(no)e(commands)g(are)g(executed,)j(and)d(the)630
-3977 y(return)29 b(status)i(is)f(zero.)630 4117 y(An)g(alternate)i
-(form)e(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870
-4257 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e
+518 y(return)29 b(status)i(is)f(zero.)630 644 y(An)g(alternate)i(form)e
+(of)h(the)f Ft(for)g Fu(command)g(is)g(also)h(supp)s(orted:)870
+771 y Ft(for)47 b(\(\()g Fj(expr1)f Ft(;)i Fj(expr2)e
Ft(;)i Fj(expr3)e Ft(\)\))h(;)h(do)f Fj(commands)e Ft(;)j(done)630
-4397 y Fu(First,)38 b(the)f(arithmetic)h(expression)e
+897 y Fu(First,)38 b(the)f(arithmetic)h(expression)e
Fr(expr1)43 b Fu(is)36 b(ev)-5 b(aluated)38 b(according)f(to)g(the)g
-(rules)f(de-)630 4507 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g
-(6.5)g([Shell)g(Arithmetic],)j(page)d(92\).)77 b(The)42
-b(arithmetic)630 4616 y(expression)33 b Fr(expr2)41 b
+(rules)f(de-)630 1007 y(scrib)s(ed)41 b(b)s(elo)m(w)h(\(see)h(Section)g
+(6.5)g([Shell)g(Arithmetic],)j(page)d(93\).)77 b(The)42
+b(arithmetic)630 1116 y(expression)33 b Fr(expr2)41 b
Fu(is)34 b(then)f(ev)-5 b(aluated)35 b(rep)s(eatedly)f(un)m(til)g(it)g
-(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 4726
+(ev)-5 b(aluates)35 b(to)g(zero.)51 b(Eac)m(h)630 1226
y(time)23 b Fr(expr2)30 b Fu(ev)-5 b(aluates)25 b(to)e(a)g(non-zero)h
(v)-5 b(alue,)25 b Fr(commands)h Fu(are)d(executed)g(and)g(the)g
-(arith-)630 4835 y(metic)29 b(expression)f Fr(expr3)36
+(arith-)630 1335 y(metic)29 b(expression)f Fr(expr3)36
b Fu(is)28 b(ev)-5 b(aluated.)41 b(If)28 b(an)m(y)h(expression)f(is)g
-(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 4945 y(if)i(it)h(ev)-5
+(omitted,)i(it)f(b)s(eha)m(v)m(es)g(as)630 1445 y(if)i(it)h(ev)-5
b(aluates)32 b(to)g(1.)44 b(The)30 b(return)g(v)-5 b(alue)32
b(is)f(the)g(exit)h(status)g(of)f(the)g(last)h(command)f(in)630
-5055 y Fr(commands)j Fu(that)d(is)f(executed,)i(or)e(false)h(if)f(an)m
+1555 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
-5230 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
-(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(43\))g(ma)m(y)
-150 5340 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)p
-eop end
-%%Page: 11 17
-TeXDict begin 11 16 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(11)150 299
-y Fk(3.2.4.2)63 b(Conditional)42 b(Constructs)150 472
-y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(if)f
-Fu(command)g(is:)870 608 y Ft(if)47 b Fj(test-commands)p
-Ft(;)d(then)965 718 y Fj(consequent-commands)p Ft(;)870
-828 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965
-937 y Fj(more-consequents)p Ft(;])870 1047 y([else)j
-Fj(alternate-consequents)p Ft(;])870 1156 y(fi)630 1292
+1698 y(The)26 b Ft(break)g Fu(and)h Ft(continue)e Fu(builtins)i(\(see)h
+(Section)h(4.1)f([Bourne)g(Shell)f(Builtins],)i(page)f(44\))g(ma)m(y)
+150 1807 y(b)s(e)i(used)f(to)i(con)m(trol)h(lo)s(op)f(execution.)150
+1990 y Fk(3.2.5.2)63 b(Conditional)42 b(Constructs)150
+2154 y Ft(if)384 b Fu(The)30 b(syn)m(tax)h(of)f(the)h
+Ft(if)f Fu(command)g(is:)870 2280 y Ft(if)47 b Fj(test-commands)p
+Ft(;)d(then)965 2390 y Fj(consequent-commands)p Ft(;)870
+2500 y([elif)i Fj(more-test-commands)p Ft(;)d(then)965
+2609 y Fj(more-consequents)p Ft(;])870 2719 y([else)j
+Fj(alternate-consequents)p Ft(;])870 2828 y(fi)630 2955
y Fu(The)53 b Fr(test-commands)58 b Fu(list)c(is)g(executed,)60
b(and)53 b(if)g(its)h(return)e(status)i(is)f(zero,)61
-b(the)630 1402 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
+b(the)630 3064 y Fr(consequen)m(t-commands)44 b Fu(list)d(is)f
(executed.)70 b(If)40 b Fr(test-commands)k Fu(returns)39
-b(a)h(non-zero)630 1512 y(status,)45 b(eac)m(h)e Ft(elif)d
+b(a)h(non-zero)630 3174 y(status,)45 b(eac)m(h)e Ft(elif)d
Fu(list)i(is)g(executed)h(in)e(turn,)j(and)d(if)g(its)h(exit)h(status)f
-(is)f(zero,)46 b(the)630 1621 y(corresp)s(onding)37 b
+(is)f(zero,)46 b(the)630 3284 y(corresp)s(onding)37 b
Fr(more-consequen)m(ts)42 b Fu(is)c(executed)g(and)f(the)h(command)g
-(completes.)63 b(If)630 1731 y(`)p Ft(else)29 b Fj
+(completes.)63 b(If)630 3393 y(`)p Ft(else)29 b Fj
(alternate-consequents)p Fu(')c(is)30 b(presen)m(t,)h(and)f(the)g
-(\014nal)g(command)g(in)g(the)g(\014nal)630 1840 y Ft(if)44
+(\014nal)g(command)g(in)g(the)g(\014nal)630 3503 y Ft(if)44
b Fu(or)g Ft(elif)f Fu(clause)i(has)f(a)h(non-zero)g(exit)g(status,)j
-(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 1950
+(then)c Fr(alternate-consequen)m(ts)51 b Fu(is)630 3612
y(executed.)k(The)34 b(return)g(status)h(is)f(the)h(exit)h(status)f(of)
-g(the)g(last)g(command)g(executed,)630 2060 y(or)30 b(zero)i(if)e(no)g
-(condition)h(tested)g(true.)150 2222 y Ft(case)288 b
+g(the)g(last)g(command)g(executed,)630 3722 y(or)30 b(zero)i(if)e(no)g
+(condition)h(tested)g(true.)150 3865 y Ft(case)288 b
Fu(The)30 b(syn)m(tax)h(of)f(the)h Ft(case)e Fu(command)h(is:)870
-2358 y Ft(case)47 b Fj(word)f Ft(in)1061 2468 y([)h([\(])g
+3991 y Ft(case)47 b Fj(word)f Ft(in)1061 4101 y([)h([\(])g
Fj(pattern)f Ft([|)h Fj(pattern)p Ft(]...)m(\))h Fj(command-list)c
-Ft(;;]...)870 2577 y(esac)630 2713 y(case)20 b Fu(will)i(selectiv)m
+Ft(;;]...)870 4211 y(esac)630 4337 y(case)20 b Fu(will)i(selectiv)m
(ely)j(execute)e(the)e Fr(command-list)k Fu(corresp)s(onding)20
-b(to)i(the)g(\014rst)f Fr(pattern)630 2823 y Fu(that)h(matc)m(hes)h
+b(to)i(the)g(\014rst)f Fr(pattern)630 4446 y Fu(that)h(matc)m(hes)h
Fr(w)m(ord)p Fu(.)38 b(The)21 b(matc)m(h)h(is)g(p)s(erformed)e
(according)j(to)f(the)g(rules)g(describ)s(ed)e(b)s(e-)630
-2933 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m
+4556 y(lo)m(w)25 b(in)e(Section)i(3.5.8.1)h([P)m(attern)f(Matc)m
(hing],)i(page)e(33.)39 b(If)23 b(the)h Ft(nocasematch)d
-Fu(shell)j(op-)630 3042 y(tion)j(\(see)g(the)f(description)g(of)g
+Fu(shell)j(op-)630 4666 y(tion)j(\(see)g(the)f(description)g(of)g
Ft(shopt)f Fu(in)g(Section)i(4.3.2)h([The)e(Shopt)f(Builtin],)j(page)f
-(65\))630 3152 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)
+(66\))630 4775 y(is)40 b(enabled,)i(the)e(matc)m(h)h(is)e(p)s(erformed)
g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
-3261 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i
+4885 y(c)m(haracters.)48 b(The)32 b(`)p Ft(|)p Fu(')g(is)h(used)e(to)i
(separate)h(m)m(ultiple)f(patterns,)g(and)f(the)g(`)p
-Ft(\))p Fu(')h(op)s(erator)630 3371 y(terminates)f(a)f(pattern)g(list.)
+Ft(\))p Fu(')h(op)s(erator)630 4994 y(terminates)f(a)f(pattern)g(list.)
43 b(A)31 b(list)g(of)g(patterns)g(and)f(an)h(asso)s(ciated)h
-(command-list)g(is)630 3481 y(kno)m(wn)e(as)g(a)h Fr(clause)p
-Fu(.)630 3617 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
+(command-list)g(is)630 5104 y(kno)m(wn)e(as)g(a)h Fr(clause)p
+Fu(.)630 5230 y(Eac)m(h)42 b(clause)g(m)m(ust)f(b)s(e)g(terminated)h
(with)e(`)p Ft(;;)p Fu(',)45 b(`)p Ft(;&)p Fu(',)f(or)d(`)p
Ft(;;&)p Fu('.)73 b(The)41 b Fr(w)m(ord)j Fu(under-)630
-3726 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
-(command)f(substitution,)h(arithmetic)630 3836 y(expansion,)g(and)f
-(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g(3.5.3)h([Shell)e(P)m
-(arameter)h(Expansion],)630 3945 y(page)22 b(24\))g(b)s(efore)f(matc)m
-(hing)h(is)g(attempted.)38 b(Eac)m(h)22 b Fr(pattern)g
-Fu(undergo)s(es)e(tilde)i(expansion,)630 4055 y(parameter)31
-b(expansion,)f(command)g(substitution,)h(and)f(arithmetic)h(expansion.)
-630 4191 y(There)f(ma)m(y)g(b)s(e)f(an)h(arbitrary)g(n)m(um)m(b)s(er)f
-(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g(terminated)g(b)m(y)e(a)i(`)p
-Ft(;;)p Fu(',)630 4301 y(`)p Ft(;&)p Fu(',)c(or)e(`)p
-Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g(pattern)h(that)g(matc)m(hes)h
-(determines)e(the)h(command-list)g(that)630 4410 y(is)35
-b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g(use)g(`)p
-Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e(the)630
-4520 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m(a)m(ys)h
-(matc)m(h.)630 4656 y(Here)j(is)g(an)g(example)h(using)e
-Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h
-(describ)s(e)g(one)630 4766 y(in)m(teresting)d(feature)f(of)f(an)g
-(animal:)870 4902 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
-(animal:)f(")870 5011 y(read)h(ANIMAL)870 5121 y(echo)g(-n)g("The)f
-($ANIMAL)g(has)h(")870 5230 y(case)g($ANIMAL)e(in)965
-5340 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)p
-eop end
+5340 y(go)s(es)35 b(tilde)f(expansion,)h(parameter)g(expansion,)g
+(command)f(substitution,)h(arithmetic)p eop end
%%Page: 12 18
TeXDict begin 12 17 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)965 299
-y Ft(man)47 b(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
-408 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
-518 y(esac)870 628 y(echo)h(")g(legs.")630 781 y Fu(If)25
-b(the)h(`)p Ft(;;)p Fu(')g(op)s(erator)g(is)g(used,)g(no)g(subsequen)m
-(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)f(\014rst)630
-891 y(pattern)g(matc)m(h.)40 b(Using)26 b(`)p Ft(;&)p
-Fu(')f(in)h(place)g(of)g(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)f
-(con)m(tin)m(ue)h(with)f(the)630 1000 y Fr(command-list)39
-b Fu(asso)s(ciated)f(with)e(the)g(next)g(clause,)j(if)d(an)m(y)-8
-b(.)59 b(Using)37 b(`)p Ft(;;&)p Fu(')f(in)g(place)h(of)630
-1110 y(`)p Ft(;;)p Fu(')30 b(causes)g(the)g(shell)g(to)g(test)h(the)f
-(patterns)g(in)f(the)h(next)g(clause,)h(if)e(an)m(y)-8
-b(,)31 b(and)f(execute)630 1219 y(an)m(y)h(asso)s(ciated)h
-Fr(command-list)h Fu(on)d(a)h(successful)f(matc)m(h.)630
-1351 y(The)c(return)f(status)h(is)g(zero)h(if)f(no)g
-Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27 b(the)g(return)e
-(status)630 1461 y(is)30 b(the)h(exit)g(status)g(of)f(the)h
-Fr(command-list)i Fu(executed.)150 1614 y Ft(select)630
-1745 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(12)630 299
+y(expansion,)35 b(and)f(quote)g(remo)m(v)-5 b(al)36 b(\(see)f(Section)g
+(3.5.3)h([Shell)e(P)m(arameter)h(Expansion],)630 408
+y(page)22 b(25\))g(b)s(efore)f(matc)m(hing)h(is)g(attempted.)38
+b(Eac)m(h)22 b Fr(pattern)g Fu(undergo)s(es)e(tilde)i(expansion,)630
+518 y(parameter)31 b(expansion,)f(command)g(substitution,)h(and)f
+(arithmetic)h(expansion.)630 651 y(There)f(ma)m(y)g(b)s(e)f(an)h
+(arbitrary)g(n)m(um)m(b)s(er)f(of)h Ft(case)f Fu(clauses,)i(eac)m(h)g
+(terminated)g(b)m(y)e(a)i(`)p Ft(;;)p Fu(',)630 761 y(`)p
+Ft(;&)p Fu(',)c(or)e(`)p Ft(;;&)p Fu('.)39 b(The)25 b(\014rst)g
+(pattern)h(that)g(matc)m(hes)h(determines)e(the)h(command-list)g(that)
+630 870 y(is)35 b(executed.)55 b(It's)35 b(a)g(common)g(idiom)g(to)g
+(use)g(`)p Ft(*)p Fu(')g(as)g(the)g(\014nal)f(pattern)h(to)h(de\014ne)e
+(the)630 980 y(default)d(case,)g(since)g(that)g(pattern)f(will)h(alw)m
+(a)m(ys)h(matc)m(h.)630 1113 y(Here)j(is)g(an)g(example)h(using)e
+Ft(case)g Fu(in)g(a)h(script)g(that)h(could)f(b)s(e)f(used)g(to)h
+(describ)s(e)g(one)630 1223 y(in)m(teresting)d(feature)f(of)f(an)g
+(animal:)870 1356 y Ft(echo)47 b(-n)g("Enter)f(the)h(name)f(of)i(an)f
+(animal:)f(")870 1465 y(read)h(ANIMAL)870 1575 y(echo)g(-n)g("The)f
+($ANIMAL)g(has)h(")870 1684 y(case)g($ANIMAL)e(in)965
+1794 y(horse)i(|)g(dog)g(|)h(cat\))e(echo)h(-n)g("four";;)965
+1904 y(man)g(|)h(kangaroo)d(\))j(echo)e(-n)i("two";;)965
+2013 y(*\))g(echo)e(-n)h("an)g(unknown)f(number)g(of";;)870
+2123 y(esac)870 2232 y(echo)h(")g(legs.")630 2389 y Fu(If)40
+b(the)i(`)p Ft(;;)p Fu(')e(op)s(erator)i(is)f(used,)i(no)e(subsequen)m
+(t)f(matc)m(hes)i(are)f(attempted)h(after)g(the)630 2498
+y(\014rst)c(pattern)h(matc)m(h.)67 b(Using)39 b(`)p Ft(;&)p
+Fu(')g(in)f(place)i(of)f(`)p Ft(;;)p Fu(')g(causes)g(execution)h(to)g
+(con)m(tin)m(ue)630 2608 y(with)34 b(the)g Fr(command-list)j
+Fu(asso)s(ciated)f(with)e(the)h(next)f(clause,)i(if)f(an)m(y)-8
+b(.)53 b(Using)34 b(`)p Ft(;;&)p Fu(')g(in)630 2718 y(place)c(of)f(`)p
+Ft(;;)p Fu(')g(causes)h(the)f(shell)h(to)g(test)g(the)f(patterns)g(in)g
+(the)g(next)h(clause,)g(if)f(an)m(y)-8 b(,)31 b(and)630
+2827 y(execute)26 b(an)m(y)f(asso)s(ciated)h Fr(command-list)h
+Fu(on)e(a)f(successful)h(matc)m(h,)i(con)m(tin)m(uing)e(the)g(case)630
+2937 y(statemen)m(t)32 b(execution)g(as)e(if)h(the)f(pattern)h(list)g
+(had)f(not)g(matc)m(hed.)630 3070 y(The)c(return)f(status)h(is)g(zero)h
+(if)f(no)g Fr(pattern)g Fu(is)g(matc)m(hed.)40 b(Otherwise,)27
+b(the)g(return)e(status)630 3180 y(is)30 b(the)h(exit)g(status)g(of)f
+(the)h Fr(command-list)i Fu(executed.)150 3336 y Ft(select)630
+3469 y Fu(The)g Ft(select)f Fu(construct)i(allo)m(ws)h(the)f(easy)g
(generation)h(of)e(men)m(us.)50 b(It)34 b(has)f(almost)i(the)630
-1855 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870
-1987 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h
-Fj(commands)p Ft(;)d(done)630 2118 y Fu(The)25 b(list)h(of)f(w)m(ords)g
+3579 y(same)c(syn)m(tax)g(as)f(the)h Ft(for)e Fu(command:)870
+3712 y Ft(select)46 b Fj(name)h Ft([in)g Fj(words)f Ft(...)o(];)h(do)h
+Fj(commands)p Ft(;)d(done)630 3845 y Fu(The)25 b(list)h(of)f(w)m(ords)g
(follo)m(wing)i Ft(in)d Fu(is)h(expanded,)h(generating)h(a)e(list)h(of)
-g(items.)39 b(The)25 b(set)h(of)630 2228 y(expanded)i(w)m(ords)h(is)g
+g(items.)39 b(The)25 b(set)h(of)630 3954 y(expanded)i(w)m(ords)h(is)g
(prin)m(ted)f(on)h(the)g(standard)f(error)h(output)f(stream,)i(eac)m(h)
-g(preceded)630 2337 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37
+g(preceded)630 4064 y(b)m(y)21 b(a)g(n)m(um)m(b)s(er.)37
b(If)20 b(the)i(`)p Ft(in)30 b Fj(words)p Fu(')20 b(is)h(omitted,)j
(the)d(p)s(ositional)h(parameters)g(are)f(prin)m(ted,)630
-2447 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s
+4174 y(as)28 b(if)f(`)p Ft(in)j("$@")p Fu(')d(had)f(b)s(een)h(sp)s
(eci\014ed.)39 b(The)27 b Ft(PS3)g Fu(prompt)f(is)i(then)f(displa)m(y)m
-(ed)h(and)f(a)h(line)630 2556 y(is)h(read)f(from)h(the)f(standard)g
+(ed)h(and)f(a)h(line)630 4283 y(is)h(read)f(from)h(the)f(standard)g
(input.)39 b(If)29 b(the)g(line)g(consists)g(of)g(a)g(n)m(um)m(b)s(er)e
-(corresp)s(onding)630 2666 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h
+(corresp)s(onding)630 4393 y(to)36 b(one)f(of)h(the)f(displa)m(y)m(ed)h
(w)m(ords,)g(then)f(the)g(v)-5 b(alue)36 b(of)f Fr(name)40
-b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 2776
+b Fu(is)35 b(set)h(to)g(that)g(w)m(ord.)54 b(If)630 4502
y(the)37 b(line)h(is)f(empt)m(y)-8 b(,)39 b(the)e(w)m(ords)g(and)f
(prompt)g(are)i(displa)m(y)m(ed)f(again.)62 b(If)37 b
-Ft(EOF)f Fu(is)h(read,)630 2885 y(the)c Ft(select)e Fu(command)i
+Ft(EOF)f Fu(is)h(read,)630 4612 y(the)c Ft(select)e Fu(command)i
(completes.)50 b(An)m(y)33 b(other)g(v)-5 b(alue)33 b(read)g(causes)g
-Fr(name)38 b Fu(to)c(b)s(e)e(set)630 2995 y(to)f(n)m(ull.)41
+Fr(name)38 b Fu(to)c(b)s(e)e(set)630 4722 y(to)f(n)m(ull.)41
b(The)30 b(line)g(read)h(is)f(sa)m(v)m(ed)h(in)g(the)f(v)-5
-b(ariable)31 b Ft(REPLY)p Fu(.)630 3126 y(The)42 b Fr(commands)j
+b(ariable)31 b Ft(REPLY)p Fu(.)630 4855 y(The)42 b Fr(commands)j
Fu(are)d(executed)h(after)g(eac)m(h)g(selection)h(un)m(til)e(a)h
-Ft(break)d Fu(command)i(is)630 3236 y(executed,)32 b(at)f(whic)m(h)f(p)
+Ft(break)d Fu(command)i(is)630 4964 y(executed,)32 b(at)f(whic)m(h)f(p)
s(oin)m(t)g(the)h Ft(select)d Fu(command)i(completes.)630
-3367 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f
+5097 y(Here)39 b(is)g(an)g(example)h(that)f(allo)m(ws)i(the)e(user)f
(to)i(pic)m(k)f(a)g(\014lename)h(from)e(the)h(curren)m(t)630
-3477 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f
-(index)f(of)i(the)g(\014le)f(selected.)870 3608 y Ft(select)46
-b(fname)g(in)i(*;)870 3718 y(do)870 3828 y(echo)f(you)g(picked)f
-($fname)g(\\\($REPLY\\\))870 3937 y(break;)870 4047 y(done)150
-4200 y(\(\(...)o(\)\))870 4332 y(\(\()h Fj(expression)e
-Ft(\)\))630 4463 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 4573 y(\(see)j(Section)f(6.5)h([Shell)f
-(Arithmetic],)i(page)f(92\).)55 b(If)34 b(the)h(v)-5
-b(alue)35 b(of)g(the)g(expression)g(is)630 4682 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 4792 y(equiv)-5
-b(alen)m(t)32 b(to)870 4924 y Ft(let)47 b(")p Fj(expression)p
-Ft(")630 5055 y Fu(See)25 b(Section)h(4.2)h([Bash)e(Builtins],)i(page)f
-(50,)i(for)c(a)i(full)f(description)g(of)g(the)h Ft(let)e
-Fu(builtin.)150 5208 y Ft([[...)o(]])870 5340 y([[)47
-b Fj(expression)e Ft(]])p eop end
+5207 y(directory)-8 b(,)32 b(and)d(displa)m(ys)i(the)f(name)h(and)f
+(index)f(of)i(the)g(\014le)f(selected.)870 5340 y Ft(select)46
+b(fname)g(in)i(*;)p eop end
%%Page: 13 19
TeXDict begin 13 18 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)630 299
-y(Return)25 b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h
-(ev)-5 b(aluation)27 b(of)e(the)h(conditional)h(expres-)630
-408 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(13)870 299
+y Ft(do)870 408 y(echo)47 b(you)g(picked)f($fname)g(\\\($REPLY\\\))870
+518 y(break;)870 628 y(done)150 788 y(\(\(...)o(\)\))870
+923 y(\(\()h Fj(expression)e Ft(\)\))630 1058 y Fu(The)33
+b(arithmetic)i Fr(expression)f Fu(is)f(ev)-5 b(aluated)35
+b(according)g(to)f(the)g(rules)f(describ)s(ed)g(b)s(elo)m(w)630
+1167 y(\(see)j(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)f(93\).)55
+b(If)34 b(the)h(v)-5 b(alue)35 b(of)g(the)g(expression)g(is)630
+1277 y(non-zero,)27 b(the)f(return)e(status)i(is)g(0;)h(otherwise)f
+(the)g(return)e(status)i(is)g(1.)39 b(This)25 b(is)g(exactly)630
+1386 y(equiv)-5 b(alen)m(t)32 b(to)870 1521 y Ft(let)47
+b(")p Fj(expression)p Ft(")630 1656 y Fu(See)25 b(Section)h(4.2)h
+([Bash)e(Builtins],)i(page)f(51,)i(for)c(a)i(full)f(description)g(of)g
+(the)h Ft(let)e Fu(builtin.)150 1816 y Ft([[...)o(]])870
+1951 y([[)47 b Fj(expression)e Ft(]])630 2086 y Fu(Return)25
+b(a)h(status)f(of)h(0)g(or)g(1)g(dep)s(ending)e(on)h(the)h(ev)-5
+b(aluation)27 b(of)e(the)h(conditional)h(expres-)630
+2196 y(sion)j Fr(expression)p Fu(.)41 b(Expressions)29
b(are)i(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s(elo)m
-(w)h(in)630 518 y(Section)36 b(6.4)h([Bash)f(Conditional)g
-(Expressions],)h(page)f(90.)57 b(W)-8 b(ord)36 b(splitting)h(and)e
-(\014le-)630 628 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j
+(w)h(in)630 2305 y(Section)36 b(6.4)h([Bash)f(Conditional)g
+(Expressions],)h(page)f(91.)57 b(W)-8 b(ord)36 b(splitting)h(and)e
+(\014le-)630 2415 y(name)d(expansion)g(are)h(not)g(p)s(erformed)d(on)j
(the)f(w)m(ords)g(b)s(et)m(w)m(een)h(the)f Ft([[)g Fu(and)f
-Ft(]])p Fu(;)i(tilde)630 737 y(expansion,)e(parameter)g(and)f(v)-5
+Ft(]])p Fu(;)i(tilde)630 2524 y(expansion,)e(parameter)g(and)f(v)-5
b(ariable)31 b(expansion,)g(arithmetic)g(expansion,)g(command)630
-847 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h
+2634 y(substitution,)40 b(pro)s(cess)f(substitution,)h(and)e(quote)h
(remo)m(v)-5 b(al)40 b(are)f(p)s(erformed.)63 b(Condi-)630
-956 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p Ft(-f)p
-Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j(as)f
-(primaries.)630 1097 y(When)k(used)f(with)h Ft([[)p Fu(,)h(the)f(`)p
-Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g(sort)g
-(lexicographically)j(using)d(the)630 1207 y(curren)m(t)30
-b(lo)s(cale.)630 1348 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p
+2744 y(tional)32 b(op)s(erators)e(suc)m(h)g(as)h(`)p
+Ft(-f)p Fu(')f(m)m(ust)g(b)s(e)g(unquoted)g(to)h(b)s(e)e(recognized)j
+(as)f(primaries.)630 2878 y(When)k(used)f(with)h Ft([[)p
+Fu(,)h(the)f(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)g
+(sort)g(lexicographically)j(using)d(the)630 2988 y(curren)m(t)30
+b(lo)s(cale.)630 3123 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p
Ft(!=)p Fu(')g(op)s(erators)h(are)g(used,)g(the)g(string)f(to)i(the)e
-(righ)m(t)h(of)g(the)g(op)s(erator)630 1457 y(is)31 b(considered)g(a)h
+(righ)m(t)h(of)g(the)g(op)s(erator)630 3232 y(is)31 b(considered)g(a)h
(pattern)f(and)g(matc)m(hed)h(according)g(to)g(the)g(rules)f(describ)s
-(ed)f(b)s(elo)m(w)h(in)630 1567 y(Section)d(3.5.8.1)h([P)m(attern)f
+(ed)f(b)s(elo)m(w)h(in)630 3342 y(Section)d(3.5.8.1)h([P)m(attern)f
(Matc)m(hing],)h(page)f(33,)g(as)f(if)g(the)g Ft(extglob)d
-Fu(shell)j(option)g(w)m(ere)630 1677 y(enabled.)46 b(The)31
+Fu(shell)j(option)g(w)m(ere)630 3452 y(enabled.)46 b(The)31
b(`)p Ft(=)p Fu(')h(op)s(erator)h(is)f(iden)m(tical)h(to)g(`)p
Ft(==)p Fu('.)46 b(If)31 b(the)h Ft(nocasematch)d Fu(shell)j(option)630
-1786 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d
+3561 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d
Fu(in)i(Section)h(4.3.2)h([The)e(Shopt)f(Builtin],)45
-b(page)d(65\))630 1896 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s
+b(page)d(66\))630 3671 y(is)e(enabled,)i(the)e(matc)m(h)h(is)e(p)s
(erformed)g(without)g(regard)h(to)h(the)f(case)g(of)g(alphab)s(etic)630
-2005 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28
+3780 y(c)m(haracters.)h(The)28 b(return)e(v)-5 b(alue)28
b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(\(`)p Ft(==)p
-Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 2115 y(\(`)p
+Fu('\))f(or)g(do)s(es)f(not)h(matc)m(h)630 3890 y(\(`)p
Ft(!=)p Fu('\))j(the)f(pattern,)h(and)e(1)i(otherwise.)41
b(An)m(y)30 b(part)g(of)h(the)f(pattern)g(ma)m(y)h(b)s(e)f(quoted)g(to)
-630 2225 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed)
-h(as)g(a)f(string.)630 2365 y(An)j(additional)i(binary)e(op)s(erator,)i
-(`)p Ft(=~)p Fu(',)g(is)f(a)m(v)-5 b(ailable,)37 b(with)c(the)h(same)g
-(precedence)h(as)630 2475 y(`)p Ft(==)p Fu(')g(and)g(`)p
-Ft(!=)p Fu('.)55 b(When)35 b(it)g(is)h(used,)f(the)h(string)f(to)h(the)
-f(righ)m(t)h(of)f(the)h(op)s(erator)f(is)g(con-)630 2585
-y(sidered)43 b(a)h Fm(POSIX)f Fu(extended)h(regular)g(expression)f(and)
-g(matc)m(hed)i(accordingly)f(\(as)630 2694 y(in)d Fl(r)-5
-b(e)g(gex)11 b Fu(3\)\).)76 b(The)41 b(return)f(v)-5
-b(alue)42 b(is)g(0)f(if)h(the)f(string)h(matc)m(hes)g(the)g(pattern,)j
-(and)c(1)630 2804 y(otherwise.)59 b(If)35 b(the)i(regular)f(expression)
-g(is)g(syn)m(tactically)j(incorrect,)g(the)e(conditional)630
-2913 y(expression's)27 b(return)f(v)-5 b(alue)28 b(is)f(2.)40
-b(If)27 b(the)g Ft(nocasematch)e Fu(shell)i(option)h(\(see)g(the)f
-(descrip-)630 3023 y(tion)41 b(of)g Ft(shopt)f Fu(in)h(Section)g(4.3.2)
-i([The)e(Shopt)f(Builtin],)k(page)e(65\))g(is)f(enabled,)j(the)630
-3133 y(matc)m(h)36 b(is)f(p)s(erformed)e(without)i(regard)g(to)h(the)f
-(case)h(of)f(alphab)s(etic)g(c)m(haracters.)56 b(An)m(y)630
-3242 y(part)25 b(of)h(the)g(pattern)f(ma)m(y)h(b)s(e)f(quoted)h(to)g
-(force)g(the)g(quoted)f(p)s(ortion)g(to)i(b)s(e)d(matc)m(hed)j(as)630
-3352 y(a)34 b(string.)49 b(Brac)m(k)m(et)36 b(expressions)c(in)h
-(regular)h(expressions)f(m)m(ust)g(b)s(e)f(treated)j(carefully)-8
-b(,)630 3461 y(since)37 b(normal)f(quoting)h(c)m(haracters)g(lose)g
-(their)g(meanings)f(b)s(et)m(w)m(een)h(brac)m(k)m(ets.)60
-b(If)36 b(the)630 3571 y(pattern)e(is)g(stored)g(in)f(a)i(shell)f(v)-5
-b(ariable,)36 b(quoting)e(the)g(v)-5 b(ariable)35 b(expansion)e(forces)
-i(the)630 3680 y(en)m(tire)30 b(pattern)e(to)i(b)s(e)e(matc)m(hed)h(as)
-g(a)g(string.)40 b(Substrings)27 b(matc)m(hed)j(b)m(y)e(paren)m
-(thesized)630 3790 y(sub)s(expressions)40 b(within)h(the)g(regular)h
-(expression)f(are)h(sa)m(v)m(ed)h(in)e(the)h(arra)m(y)g(v)-5
-b(ariable)630 3900 y Ft(BASH_REMATCH)p Fu(.)56 b(The)37
-b(elemen)m(t)h(of)f Ft(BASH_REMATCH)c Fu(with)j(index)h(0)g(is)g(the)f
-(p)s(ortion)h(of)630 4009 y(the)22 b(string)f(matc)m(hing)h(the)g(en)m
-(tire)g(regular)g(expression.)37 b(The)21 b(elemen)m(t)i(of)e
-Ft(BASH_REMATCH)630 4119 y Fu(with)26 b(index)h Fr(n)f
-Fu(is)h(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)f
-Fr(n)p Fu(th)f(paren)m(thesized)h(sub)s(ex-)630 4228
-y(pression.)630 4369 y(F)-8 b(or)28 b(example,)h(the)e(follo)m(wing)i
-(will)e(matc)m(h)h(a)g(line)f(\(stored)h(in)e(the)i(shell)f(v)-5
-b(ariable)28 b Fr(line)5 b Fu(\))28 b(if)630 4479 y(there)22
-b(is)g(a)h(sequence)f(of)h(c)m(haracters)g(in)f(the)g(v)-5
-b(alue)23 b(consisting)g(of)f(an)m(y)h(n)m(um)m(b)s(er,)f(including)630
-4589 y(zero,)31 b(of)g(space)g(c)m(haracters,)h(zero)f(or)g(one)f
-(instances)h(of)g(`)p Ft(a)p Fu(',)f(then)g(a)h(`)p Ft(b)p
-Fu(':)870 4729 y Ft([[)47 b($line)g(=~)g([[:space:]]*?\(a\)b)c(]])630
-4870 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p
+630 4000 y(force)h(the)g(quoted)f(p)s(ortion)g(to)h(b)s(e)f(matc)m(hed)
+h(as)g(a)f(string.)630 4134 y(An)44 b(additional)h(binary)f(op)s
+(erator,)49 b(`)p Ft(=~)p Fu(',)f(is)c(a)m(v)-5 b(ailable,)51
+b(with)44 b(the)h(same)f(precedence)630 4244 y(as)c(`)p
+Ft(==)p Fu(')g(and)f(`)p Ft(!=)p Fu('.)69 b(When)40 b(it)g(is)g(used,)i
+(the)e(string)g(to)g(the)g(righ)m(t)h(of)f(the)g(op)s(erator)g(is)630
+4354 y(considered)23 b(a)g Fm(posix)g Fu(extended)g(regular)g
+(expression)g(and)f(matc)m(hed)i(accordingly)g(\(using)630
+4463 y(the)29 b Fm(posix)g Ft(regcomp)e Fu(and)h Ft(regexec)g
+Fu(in)m(terfaces)i(usually)f(describ)s(ed)f(in)h Fl(r)-5
+b(e)g(gex)11 b Fu(\(3\)\).)42 b(The)630 4573 y(return)20
+b(v)-5 b(alue)21 b(is)g(0)g(if)g(the)g(string)g(matc)m(hes)h(the)f
+(pattern,)j(and)c(1)h(otherwise.)38 b(If)21 b(the)g(regular)630
+4682 y(expression)k(is)h(syn)m(tactically)i(incorrect,)g(the)e
+(conditional)h(expression's)e(return)g(v)-5 b(alue)26
+b(is)630 4792 y(2.)39 b(If)24 b(the)h Ft(nocasematch)c
+Fu(shell)k(option)g(\(see)h(the)e(description)h(of)g
+Ft(shopt)e Fu(in)h(Section)h(4.3.2)630 4902 y([The)e(Shopt)g(Builtin],)
+j(page)e(66\))h(is)e(enabled,)i(the)f(matc)m(h)g(is)g(p)s(erformed)e
+(without)h(regard)630 5011 y(to)36 b(the)g(case)h(of)f(alphab)s(etic)g
+(c)m(haracters.)58 b(An)m(y)36 b(part)g(of)g(the)g(pattern)f(ma)m(y)i
+(b)s(e)e(quoted)630 5121 y(to)f(force)g(the)f(quoted)h(p)s(ortion)f(to)
+h(b)s(e)f(matc)m(hed)h(as)f(a)h(string.)50 b(Brac)m(k)m(et)35
+b(expressions)e(in)630 5230 y(regular)g(expressions)g(m)m(ust)g(b)s(e)f
+(treated)i(carefully)-8 b(,)35 b(since)e(normal)g(quoting)g(c)m
+(haracters)630 5340 y(lose)25 b(their)f(meanings)g(b)s(et)m(w)m(een)h
+(brac)m(k)m(ets.)40 b(If)23 b(the)h(pattern)h(is)f(stored)g(in)f(a)i
+(shell)f(v)-5 b(ariable,)p eop end
+%%Page: 14 20
+TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299
+y(quoting)41 b(the)f(v)-5 b(ariable)42 b(expansion)e(forces)h(the)f(en)
+m(tire)h(pattern)g(to)g(b)s(e)f(matc)m(hed)h(as)g(a)630
+408 y(string.)630 555 y(The)26 b(pattern)g(will)h(matc)m(h)g(if)f(it)h
+(matc)m(hes)h(an)m(y)e(part)h(of)f(the)h(string.)39 b(Anc)m(hor)26
+b(the)h(pattern)630 664 y(using)f(the)i(`)p Ft(^)p Fu(')f(and)f(`)p
+Ft($)p Fu(')h(regular)h(expression)e(op)s(erators)h(to)h(force)g(it)f
+(to)h(matc)m(h)g(the)f(en)m(tire)630 774 y(string.)81
+b(The)44 b(arra)m(y)g(v)-5 b(ariable)45 b Ft(BASH_REMATCH)40
+b Fu(records)k(whic)m(h)f(parts)h(of)g(the)g(string)630
+883 y(matc)m(hed)31 b(the)f(pattern.)41 b(The)30 b(elemen)m(t)i(of)e
+Ft(BASH_REMATCH)d Fu(with)j(index)g(0)g(con)m(tains)i(the)630
+993 y(p)s(ortion)20 b(of)h(the)g(string)f(matc)m(hing)i(the)f(en)m
+(tire)g(regular)g(expression.)37 b(Substrings)19 b(matc)m(hed)630
+1103 y(b)m(y)30 b(paren)m(thesized)g(sub)s(expressions)e(within)i(the)g
+(regular)g(expression)g(are)g(sa)m(v)m(ed)h(in)f(the)630
+1212 y(remaining)j Ft(BASH_REMATCH)c Fu(indices.)49 b(The)32
+b(elemen)m(t)i(of)f Ft(BASH_REMATCH)d Fu(with)i(index)g
+Fr(n)630 1322 y Fu(is)e(the)h(p)s(ortion)f(of)g(the)h(string)f(matc)m
+(hing)i(the)e Fr(n)p Fu(th)g(paren)m(thesized)h(sub)s(expression.)630
+1468 y(F)-8 b(or)34 b(example,)h(the)e(follo)m(wing)i(will)f(matc)m(h)g
+(a)g(line)f(\(stored)h(in)f(the)h(shell)f(v)-5 b(ariable)34
+b Fr(line)5 b Fu(\))630 1577 y(if)42 b(there)h(is)g(a)f(sequence)h(of)g
+(c)m(haracters)h(an)m(ywhere)e(in)g(the)h(v)-5 b(alue)43
+b(consisting)g(of)g(an)m(y)630 1687 y(n)m(um)m(b)s(er,)30
+b(including)h(zero,)h(of)f(c)m(haracters)i(in)e(the)g
+Ft(space)f Fu(c)m(haracter)i(class,)h(zero)f(or)f(one)630
+1797 y(instances)g(of)f(`)p Ft(a)p Fu(',)h(then)f(a)h(`)p
+Ft(b)p Fu(':)870 1943 y Ft([[)47 b($line)g(=~)g([[:space:]]*\(a\)?b)c
+(]])630 2089 y Fu(That)24 b(means)g(v)-5 b(alues)24 b(lik)m(e)h(`)p
Ft(aab)p Fu(')e(and)h(`)30 b Ft(aaaaaab)p Fu(')22 b(will)i(matc)m(h,)j
-(as)d(will)g(a)g(line)g(con)m(taining)630 4980 y(a)31
+(as)d(will)g(a)g(line)g(con)m(taining)630 2198 y(a)31
b(`)p Ft(b)p Fu(')f(an)m(ywhere)h(in)f(its)g(v)-5 b(alue.)630
-5121 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5
+2345 y(Storing)31 b(the)g(regular)g(expression)f(in)h(a)g(shell)g(v)-5
b(ariable)31 b(is)g(often)g(a)g(useful)f(w)m(a)m(y)i(to)f(a)m(v)m(oid)
-630 5230 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp)
+630 2454 y(problems)f(with)g(quoting)h(c)m(haracters)i(that)e(are)g(sp)
s(ecial)g(to)h(the)f(shell.)41 b(It)31 b(is)g(sometimes)630
-5340 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f
-(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)p
-eop end
-%%Page: 14 20
-TeXDict begin 14 19 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(14)630 299
-y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g
+2564 y(di\016cult)24 b(to)h(sp)s(ecify)f(a)h(regular)g(expression)f
+(literally)i(without)f(using)e(quotes,)k(or)d(to)h(k)m(eep)630
+2673 y(trac)m(k)33 b(of)g(the)f(quoting)g(used)g(b)m(y)g(regular)g
(expressions)g(while)g(pa)m(ying)h(atten)m(tion)h(to)f(the)630
-408 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25
+2783 y(shell's)25 b(quote)g(remo)m(v)-5 b(al.)40 b(Using)25
b(a)g(shell)g(v)-5 b(ariable)26 b(to)f(store)g(the)g(pattern)g
-(decreases)g(these)630 518 y(problems.)40 b(F)-8 b(or)31
+(decreases)g(these)630 2892 y(problems.)40 b(F)-8 b(or)31
b(example,)g(the)g(follo)m(wing)h(is)e(equiv)-5 b(alen)m(t)32
-b(to)f(the)g(ab)s(o)m(v)m(e:)870 649 y Ft(pattern='[[:space:]]*?\(a)o
-(\)b')870 758 y([[)47 b($line)g(=~)g($pattern)e(]])630
-889 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m
+b(to)f(the)g(ab)s(o)m(v)m(e:)870 3039 y Ft(pattern='[[:space:]]*\(a\))o
+(?b')870 3148 y([[)47 b($line)g(=~)g($pattern)e(]])630
+3294 y Fu(If)28 b(y)m(ou)h(w)m(an)m(t)g(to)g(matc)m(h)h(a)e(c)m
(haracter)j(that's)e(sp)s(ecial)g(to)g(the)g(regular)f(expression)g
-(gram-)630 999 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m(v)
-m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g
-(the)630 1108 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p
+(gram-)630 3404 y(mar,)g(it)g(has)g(to)g(b)s(e)f(quoted)h(to)g(remo)m
+(v)m(e)h(its)f(sp)s(ecial)g(meaning.)40 b(This)27 b(means)g(that)h(in)g
+(the)630 3513 y(pattern)e(`)p Ft(xxx.txt)p Fu(',)g(the)h(`)p
Ft(.)p Fu(')f(matc)m(hes)i(an)m(y)e(c)m(haracter)i(in)e(the)h(string)f
-(\(its)h(usual)f(regular)630 1218 y(expression)g(meaning\),)i(but)e(in)
+(\(its)h(usual)f(regular)630 3623 y(expression)g(meaning\),)i(but)e(in)
g(the)h(pattern)f(`)p Ft("xxx.txt")p Fu(')f(it)i(can)g(only)f(matc)m(h)
-i(a)e(literal)630 1328 y(`)p Ft(.)p Fu('.)56 b(Shell)35
+i(a)e(literal)630 3733 y(`)p Ft(.)p Fu('.)56 b(Shell)35
b(programmers)f(should)h(tak)m(e)i(sp)s(ecial)e(care)i(with)e(bac)m
-(kslashes,)i(since)f(bac)m(k-)630 1437 y(slashes)27 b(are)g(used)f(b)s
+(kslashes,)i(since)f(bac)m(k-)630 3842 y(slashes)27 b(are)g(used)f(b)s
(oth)g(b)m(y)h(the)f(shell)h(and)f(regular)h(expressions)g(to)g(remo)m
-(v)m(e)h(the)f(sp)s(ecial)630 1547 y(meaning)h(from)f(the)h(follo)m
+(v)m(e)h(the)f(sp)s(ecial)630 3952 y(meaning)h(from)f(the)h(follo)m
(wing)i(c)m(haracter.)41 b(The)27 b(follo)m(wing)j(t)m(w)m(o)f(sets)f
-(of)g(commands)g(are)630 1656 y Fl(not)40 b Fu(equiv)-5
-b(alen)m(t:)870 1787 y Ft(pattern='\\.')870 2006 y([[)47
-b(.)h(=~)f($pattern)e(]])870 2116 y([[)i(.)h(=~)f(\\.)g(]])870
-2335 y([[)g(.)h(=~)f("$pattern")e(]])870 2445 y([[)i(.)h(=~)f('\\.')f
-(]])630 2576 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f
+(of)g(commands)g(are)630 4061 y Fl(not)40 b Fu(equiv)-5
+b(alen)m(t:)870 4208 y Ft(pattern='\\.')870 4427 y([[)47
+b(.)h(=~)f($pattern)e(]])870 4536 y([[)i(.)h(=~)f(\\.)g(]])870
+4756 y([[)g(.)h(=~)f("$pattern")e(]])870 4865 y([[)i(.)h(=~)f('\\.')f
+(]])630 5011 y Fu(The)28 b(\014rst)h(t)m(w)m(o)h(matc)m(hes)g(will)f
(succeed,)h(but)f(the)g(second)g(t)m(w)m(o)h(will)f(not,)h(b)s(ecause)f
-(in)g(the)630 2685 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)
+(in)g(the)630 5121 y(second)39 b(t)m(w)m(o)i(the)e(bac)m(kslash)h(will)
f(b)s(e)g(part)g(of)g(the)h(pattern)f(to)h(b)s(e)e(matc)m(hed.)68
-b(In)39 b(the)630 2795 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e
+b(In)39 b(the)630 5230 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e
(bac)m(kslash)h(remo)m(v)m(es)h(the)f(sp)s(ecial)g(meaning)f(from)g(`)p
-Ft(.)p Fu(',)h(so)g(the)630 2904 y(literal)f(`)p Ft(.)p
+Ft(.)p Fu(',)h(so)g(the)630 5340 y(literal)f(`)p Ft(.)p
Fu(')e(matc)m(hes.)42 b(If)28 b(the)i(string)f(in)g(the)g(\014rst)g
-(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)630
-3014 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 3124 y(loses)i(its)g(sp)s(ecial)g
+(examples)g(w)m(ere)h(an)m(ything)g(other)f(than)p eop
+end
+%%Page: 15 21
+TeXDict begin 15 20 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(15)630 299
+y(`)p Ft(.)p Fu(',)29 b(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g(w)m
+(ould)g(not)h(matc)m(h,)h(b)s(ecause)e(the)g(quoted)g(`)p
+Ft(.)p Fu(')h(in)e(the)i(pattern)630 408 y(loses)i(its)g(sp)s(ecial)g
(meaning)f(of)h(matc)m(hing)g(an)m(y)g(single)g(c)m(haracter.)630
-3254 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h
+542 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
-3364 y(order)30 b(of)g(precedence:)630 3516 y Ft(\()g
-Fj(expression)e Ft(\))1110 3626 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 3735 y(normal)e(precedence)h(of)
-g(op)s(erators.)630 3887 y Ft(!)f Fj(expression)1110
-3997 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630
-4149 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 4259
-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
-4411 y Fj(expression1)c Ft(||)j Fj(expression2)1110 4520
-y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
+651 y(order)30 b(of)g(precedence:)630 808 y Ft(\()g Fj(expression)e
+Ft(\))1110 918 y Fu(Returns)i(the)h(v)-5 b(alue)31 b(of)g
+Fr(expression)p Fu(.)42 b(This)30 b(ma)m(y)i(b)s(e)e(used)g(to)i(o)m(v)
+m(erride)g(the)1110 1027 y(normal)e(precedence)h(of)g(op)s(erators.)630
+1184 y Ft(!)f Fj(expression)1110 1293 y Fu(T)-8 b(rue)30
+b(if)g Fr(expression)g Fu(is)h(false.)630 1450 y Fj(expression1)c
+Ft(&&)j Fj(expression2)1110 1560 y Fu(T)-8 b(rue)30 b(if)g(b)s(oth)g
+Fr(expression1)38 b Fu(and)29 b Fr(expression2)38 b Fu(are)31
+b(true.)630 1716 y Fj(expression1)c Ft(||)j Fj(expression2)1110
+1826 y Fu(T)-8 b(rue)30 b(if)g(either)h Fr(expression1)38
b Fu(or)30 b Fr(expression2)38 b Fu(is)30 b(true.)630
-4672 y(The)24 b Ft(&&)h Fu(and)f Ft(||)g Fu(op)s(erators)h(do)g(not)g
+1983 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 4782 y Fu(is)30 b(su\016cien)m(t)h
+b(alue)25 b(of)g Fr(expression1)630 2092 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 4974 y Fk(3.2.4.3)63
-b(Grouping)43 b(Commands)150 5121 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
+g(conditional)h(expression.)150 2289 y Fk(3.2.5.3)63
+b(Grouping)43 b(Commands)150 2436 y Fu(Bash)30 b(pro)m(vides)g(t)m(w)m
(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 5230
+(executed)h(as)g(a)h(unit.)40 b(When)29 b(com-)150 2545
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 5340 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.)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)150 299
-y Ft(\(\))870 437 y(\()47 b Fj(list)g Ft(\))630 574 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
-684 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(39\),)630 793
+b(example,)150 2655 y(the)f(output)f(of)g(all)h(the)g(commands)f(in)g
+(the)h(list)g(ma)m(y)g(b)s(e)e(redirected)i(to)g(a)g(single)g(stream.)
+150 2812 y Ft(\(\))870 2945 y(\()47 b Fj(list)g Ft(\))630
+3078 y Fu(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i
+(paren)m(theses)e(causes)i(a)f(subshell)e(en)m(vironmen)m(t)630
+3188 y(to)k(b)s(e)e(created)j(\(see)f(Section)g(3.7.3)h([Command)d
+(Execution)i(En)m(vironmen)m(t],)g(page)f(40\),)630 3297
y(and)d(eac)m(h)h(of)g(the)f(commands)g(in)g Fr(list)j
Fu(to)f(b)s(e)d(executed)j(in)e(that)h(subshell.)38 b(Since)28
-b(the)f Fr(list)630 903 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5
+b(the)f Fr(list)630 3407 y Fu(is)i(executed)g(in)f(a)h(subshell,)g(v)-5
b(ariable)29 b(assignmen)m(ts)g(do)g(not)g(remain)f(in)g(e\013ect)j
-(after)e(the)630 1013 y(subshell)g(completes.)150 1178
-y Ft({})870 1316 y({)47 b Fj(list)p Ft(;)g(})630 1453
+(after)e(the)630 3516 y(subshell)g(completes.)150 3673
+y Ft({})870 3806 y({)47 b Fj(list)p Ft(;)g(})630 3939
y Fu(Placing)30 b(a)g(list)g(of)g(commands)f(b)s(et)m(w)m(een)h(curly)f
(braces)g(causes)h(the)f(list)h(to)g(b)s(e)f(executed)630
-1563 y(in)d(the)h(curren)m(t)g(shell)f(con)m(text.)42
+4049 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 1673 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275
-1841 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j
+(newline\))630 4159 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275
+4315 y(In)44 b(addition)h(to)h(the)f(creation)i(of)e(a)g(subshell,)j
(there)e(is)f(a)g(subtle)g(di\013erence)h(b)s(et)m(w)m(een)f(these)150
-1951 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67
+4425 y(t)m(w)m(o)c(constructs)e(due)g(to)g(historical)i(reasons.)67
b(The)39 b(braces)g(are)h Ft(reserved)28 b(words)p Fu(,)40
-b(so)g(they)f(m)m(ust)150 2061 y(b)s(e)d(separated)h(from)f(the)g
+b(so)g(they)f(m)m(ust)150 4535 y(b)s(e)d(separated)h(from)f(the)g
Fr(list)j Fu(b)m(y)e Ft(blank)p Fu(s)e(or)h(other)h(shell)f(metac)m
-(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 2170
+(haracters.)62 b(The)36 b(paren)m(theses)h(are)150 4644
y Ft(operators)p Fu(,)23 b(and)h(are)g(recognized)i(as)e(separate)i
(tok)m(ens)f(b)m(y)f(the)g(shell)h(ev)m(en)g(if)f(they)g(are)h(not)f
-(separated)150 2280 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.)
-275 2421 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h
+(separated)150 4754 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.)
+275 4887 y(The)e(exit)j(status)e(of)h(b)s(oth)f(of)g(these)h
(constructs)g(is)f(the)h(exit)g(status)f(of)h Fr(list)p
-Fu(.)150 2626 y Fk(3.2.5)63 b(Copro)s(cesses)150 2773
+Fu(.)150 5083 y Fk(3.2.6)63 b(Copro)s(cesses)150 5230
y Fu(A)37 b Ft(coprocess)c Fu(is)k(a)g(shell)f(command)h(preceded)f(b)m
(y)g(the)h Ft(coproc)d Fu(reserv)m(ed)j(w)m(ord.)59 b(A)36
-b(copro)s(cess)h(is)150 2883 y(executed)g(async)m(hronously)g(in)f(a)h
+b(copro)s(cess)h(is)150 5340 y(executed)g(async)m(hronously)g(in)f(a)h
(subshell,)g(as)g(if)g(the)f(command)h(had)f(b)s(een)f(terminated)i
-(with)g(the)150 2992 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 3102 y(copro)s(cess.)275
-3243 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390
-3383 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
-Ft([)p Fj(redirections)p Ft(])150 3524 y Fu(This)39 b(creates)j(a)e
+(with)g(the)p eop end
+%%Page: 16 22
+TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)150 299
+y(`)p Ft(&)p Fu(')34 b(con)m(trol)h(op)s(erator,)g(with)f(a)g(t)m(w)m
+(o-w)m(a)m(y)i(pip)s(e)d(established)h(b)s(et)m(w)m(een)h(the)f
+(executing)h(shell)f(and)f(the)150 408 y(copro)s(cess.)275
+550 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390
+691 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g
+Ft([)p Fj(redirections)p Ft(])150 833 y Fu(This)39 b(creates)j(a)e
(copro)s(cess)h(named)f Fr(NAME)p Fu(.)70 b(If)40 b Fr(NAME)46
b Fu(is)40 b(not)g(supplied,)i(the)e(default)h(name)f(is)150
-3634 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23
+942 y Fr(COPR)m(OC)p Fu(.)d Fr(NAME)28 b Fu(m)m(ust)23
b(not)g(b)s(e)e(supplied)h(if)g Fr(command)k Fu(is)d(a)g(simple)f
-(command)g(\(see)i(Section)f(3.2.1)150 3743 y([Simple)39
+(command)g(\(see)i(Section)f(3.2.2)150 1052 y([Simple)39
b(Commands],)h(page)g(8\);)k(otherwise,)e(it)d(is)g(in)m(terpreted)h
(as)f(the)g(\014rst)f(w)m(ord)h(of)g(the)g(simple)150
-3853 y(command.)275 3994 y(When)j(the)i(copro)s(cess)f(is)g(executed,)
+1162 y(command.)275 1303 y(When)j(the)i(copro)s(cess)f(is)g(executed,)
48 b(the)43 b(shell)g(creates)i(an)e(arra)m(y)g(v)-5
-b(ariable)44 b(\(see)g(Section)g(6.7)150 4103 y([Arra)m(ys],)32
-b(page)g(94\))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 1413 y([Arra)m(ys],)32
+b(page)g(95\))h(named)e Ft(NAME)f Fu(in)h(the)h(con)m(text)h(of)e(the)h
(executing)g(shell.)44 b(The)31 b(standard)f(output)150
-4213 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)
+1522 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to)
i(a)f(\014le)f(descriptor)h(in)f(the)h(executing)h(shell,)h(and)d(that)
-150 4322 y(\014le)i(descriptor)h(is)f(assigned)h(to)g
+150 1632 y(\014le)i(descriptor)h(is)f(assigned)h(to)g
Ft(NAME)p Fu([0].)70 b(The)40 b(standard)f(input)h(of)g
-Fr(command)k Fu(is)c(connected)h(via)150 4432 y(a)h(pip)s(e)f(to)i(a)f
+Fr(command)k Fu(is)c(connected)h(via)150 1741 y(a)h(pip)s(e)f(to)i(a)f
(\014le)g(descriptor)g(in)f(the)h(executing)i(shell,)h(and)c(that)h
-(\014le)g(descriptor)g(is)g(assigned)g(to)150 4542 y
+(\014le)g(descriptor)g(is)g(assigned)g(to)150 1851 y
Ft(NAME)p Fu([1].)69 b(This)39 b(pip)s(e)g(is)h(established)g(b)s
(efore)f(an)m(y)h(redirections)h(sp)s(eci\014ed)e(b)m(y)g(the)h
-(command)g(\(see)150 4651 y(Section)45 b(3.6)h([Redirections],)k(page)
-45 b(34\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)
-h(as)g(argumen)m(ts)150 4761 y(to)d(shell)g(commands)f(and)g
+(command)g(\(see)150 1961 y(Section)45 b(3.6)h([Redirections],)k(page)
+45 b(35\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized)
+h(as)g(argumen)m(ts)150 2070 y(to)d(shell)g(commands)f(and)g
(redirections)h(using)f(standard)g(w)m(ord)g(expansions.)74
-b(Other)41 b(than)g(those)150 4870 y(created)27 b(to)g(execute)g
+b(Other)41 b(than)g(those)150 2180 y(created)27 b(to)g(execute)g
(command)f(and)f(pro)s(cess)h(substitutions,)h(the)f(\014le)g
-(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 4980
-y(in)30 b(subshells.)275 5121 y(The)d(pro)s(cess)h(ID)h(of)f(the)h
+(descriptors)g(are)g(not)h(a)m(v)-5 b(ailable)150 2289
+y(in)30 b(subshells.)275 2431 y(The)d(pro)s(cess)h(ID)h(of)f(the)h
(shell)f(spa)m(wned)g(to)h(execute)h(the)e(copro)s(cess)h(is)f(a)m(v)-5
-b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 5230
-y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 5230 28 4 v
+b(ailable)31 b(as)d(the)h(v)-5 b(alue)29 b(of)150 2540
+y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 2540 28 4 v
39 w Fu(PID.)g(The)f Ft(wait)f Fu(builtin)h(command)g(ma)m(y)h(b)s(e)f
-(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 5340
-y(to)e(terminate.)p eop end
-%%Page: 16 22
-TeXDict begin 16 21 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299
-y(Since)20 b(the)g(copro)s(cess)h(is)g(created)g(as)g(an)f(async)m
-(hronous)g(command,)i(the)f Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150
-408 y(returns)29 b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h
-(copro)s(cess)g(is)f(the)h(exit)g(status)g(of)f Fr(command)p
-Fu(.)150 612 y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150
-759 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 869 y(a)e(to)s(ol)g(to)g(do)f(just)g
-(that.)275 1007 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 1117 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 1227 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
-1336 y(to)38 b(man)m(y)g(of)g(the)g(most)g(common)g(op)s(erations)g
-(\(input)f(lines,)j(v)-5 b(arious)38 b(p)s(ortions)f(of)h(the)g(input)e
-(line,)150 1446 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 1555 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 1694 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 1804 y(should)d(pro)m(vide)i(a)
-g(brief)e(in)m(tro)s(duction)i(to)g(its)g(use.)275 1943
-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 2052 y(and)30 b(its)h(sub)s(directories:)390
-2191 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')g(-print)g(|)h
-(parallel)f(gzip)150 2330 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 2439 y Fu(option)i(and)f
-(parallel's)h Ft(-0)f Fu(option.)275 2578 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 2688 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 2827 y Ft(ls)47 b(|)h(parallel)d
-(mv)i({})h(destdir)275 2965 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 3075 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 3185 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
-3323 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 3462 y Fu(as)31
-b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 3601 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
-3711 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 3850 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 3988 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
-4098 y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g
-(line\):)390 4237 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390
-4346 y(do-something1)d("$x")j("config-$x")390 4456 y(do-something2)d(<)
-k("$x")390 4566 y(done)f(<)g(file)g(|)g(process-output)150
-4704 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 4843 y Ft(cat)47 b(list)g(|)g(parallel)f
+(used)g(to)h(w)m(ait)h(for)e(the)h(copro)s(cess)150 2650
+y(to)e(terminate.)275 2791 y(Since)20 b(the)g(copro)s(cess)h(is)g
+(created)g(as)g(an)f(async)m(hronous)g(command,)i(the)f
+Ft(coproc)d Fu(command)i(alw)m(a)m(ys)150 2901 y(returns)29
+b(success.)41 b(The)30 b(return)f(status)i(of)f(a)h(copro)s(cess)g(is)f
+(the)h(exit)g(status)g(of)f Fr(command)p Fu(.)150 3107
+y Fk(3.2.7)63 b(GNU)41 b(P)m(arallel)150 3254 y Fu(There)30
+b(are)h(w)m(a)m(ys)g(to)g(run)f(commands)g(in)g(parallel)h(that)h(are)e
+(not)h(built)g(in)m(to)g(Bash.)41 b(GNU)31 b(P)m(arallel)i(is)150
+3364 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 3505
+y(GNU)e(P)m(arallel,)i(as)e(its)g(name)f(suggests,)j(can)d(b)s(e)g
+(used)g(to)h(build)f(and)g(run)f(commands)h(in)h(parallel.)150
+3615 y(Y)-8 b(ou)41 b(ma)m(y)g(run)e(the)h(same)h(command)f(with)g
+(di\013eren)m(t)h(argumen)m(ts,)j(whether)39 b(they)i(are)g
+(\014lenames,)150 3724 y(usernames,)27 b(hostnames,)h(or)e(lines)h
+(read)f(from)h(\014les.)39 b(GNU)27 b(P)m(arallel)i(pro)m(vides)d
+(shorthand)g(references)150 3834 y(to)38 b(man)m(y)g(of)g(the)g(most)g
+(common)g(op)s(erations)g(\(input)f(lines,)j(v)-5 b(arious)38
+b(p)s(ortions)f(of)h(the)g(input)e(line,)150 3943 y(di\013eren)m(t)f(w)
+m(a)m(ys)h(to)f(sp)s(ecify)f(the)h(input)f(source,)i(and)e(so)h(on\).)
+54 b(P)m(arallel)36 b(can)f(replace)h Ft(xargs)d Fu(or)i(feed)150
+4053 y(commands)30 b(from)g(its)h(input)e(sources)h(to)i(sev)m(eral)f
+(di\013eren)m(t)g(instances)g(of)g(Bash.)275 4194 y(F)-8
+b(or)33 b(a)g(complete)h(description,)g(refer)e(to)i(the)f(GNU)g(P)m
+(arallel)i(do)s(cumen)m(tation.)48 b(A)33 b(few)f(examples)150
+4304 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its)
+g(use.)275 4445 y(F)-8 b(or)37 b(example,)i(it)e(is)f(easy)h(to)g
+(replace)h Ft(xargs)d Fu(to)i(gzip)g(all)g(h)m(tml)g(\014les)f(in)h
+(the)f(curren)m(t)g(directory)150 4555 y(and)30 b(its)h(sub)s
+(directories:)390 4696 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html')
+g(-print)g(|)h(parallel)f(gzip)150 4838 y Fu(If)30 b(y)m(ou)h(need)f
+(to)h(protect)h(sp)s(ecial)f(c)m(haracters)g(suc)m(h)g(as)f(newlines)h
+(in)f(\014le)g(names,)h(use)f(\014nd's)f Ft(-print0)150
+4948 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275
+5089 y(Y)-8 b(ou)34 b(can)g(use)f(P)m(arallel)j(to)e(mo)m(v)m(e)h
+(\014les)f(from)f(the)h(curren)m(t)f(directory)h(when)f(the)h(n)m(um)m
+(b)s(er)e(of)i(\014les)150 5199 y(is)c(to)s(o)i(large)f(to)g(pro)s
+(cess)f(with)g(one)h Ft(mv)f Fu(in)m(v)m(o)s(cation:)390
+5340 y Ft(printf)46 b('\045s\\n')g(*)i(|)f(parallel)f(mv)h({})g
+(destdir)p eop end
+%%Page: 17 23
+TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)275 299
+y(As)28 b(y)m(ou)h(can)g(see,)g(the)g Fi({})g Fu(is)g(replaced)g(with)f
+(eac)m(h)i(line)f(read)f(from)g(standard)g(input.)39
+b(While)29 b(using)150 408 y Ft(ls)34 b Fu(will)i(w)m(ork)f(in)g(most)g
+(instances,)i(it)f(is)f(not)g(su\016cien)m(t)h(to)g(deal)f(with)g(all)h
+(\014lenames.)55 b Ft(printf)33 b Fu(is)j(a)150 518 y(shell)31
+b(builtin,)f(and)g(therefore)h(is)g(not)g(sub)5 b(ject)30
+b(to)h(the)g(k)m(ernel's)g(limit)g(on)g(the)g(n)m(um)m(b)s(er)e(of)i
+(argumen)m(ts)150 628 y(to)37 b(a)f(program,)h(so)g(y)m(ou)f(can)g(use)
+g(`)p Ft(*)p Fu(')g(\(but)f(see)i(b)s(elo)m(w)f(ab)s(out)g(the)g
+Ft(dotglob)e Fu(shell)i(option\).)58 b(If)36 b(y)m(ou)150
+737 y(need)30 b(to)h(accommo)s(date)h(sp)s(ecial)f(c)m(haracters)h(in)e
+(\014lenames,)h(y)m(ou)g(can)f(use)390 877 y Ft(printf)46
+b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(mv)g({})g(destdir)150
+1017 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275
+1157 y(This)e(will)i(run)e(as)h(man)m(y)h Ft(mv)e Fu(commands)h(as)h
+(there)f(are)h(\014les)f(in)h(the)f(curren)m(t)g(directory)-8
+b(.)42 b(Y)-8 b(ou)31 b(can)150 1267 y(em)m(ulate)h(a)f(parallel)g
+Ft(xargs)e Fu(b)m(y)h(adding)g(the)h Ft(-X)f Fu(option:)390
+1407 y Ft(printf)46 b('\045s\\0')g(*)i(|)f(parallel)f(-0)h(-X)g(mv)g
+({})g(destdir)275 1547 y Fu(\(Y)-8 b(ou)31 b(ma)m(y)g(ha)m(v)m(e)g(to)g
+(mo)s(dify)f(the)h(pattern)f(if)g(y)m(ou)h(ha)m(v)m(e)h(the)e
+Ft(dotglob)f Fu(option)h(enabled.\))275 1687 y(GNU)h(P)m(arallel)i(can)
+e(replace)h(certain)g(common)g(idioms)f(that)g(op)s(erate)h(on)f(lines)
+g(read)g(from)f(a)i(\014le)150 1797 y(\(in)e(this)h(case,)g
+(\014lenames)g(listed)g(one)f(p)s(er)g(line\):)390 1937
+y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 2046 y(do-something1)d
+("$x")j("config-$x")390 2156 y(do-something2)d(<)k("$x")390
+2265 y(done)f(<)g(file)g(|)g(process-output)150 2405
+y Fu(with)30 b(a)h(more)f(compact)i(syn)m(tax)f(reminiscen)m(t)g(of)g
+(lam)m(b)s(das:)390 2545 y Ft(cat)47 b(list)g(|)g(parallel)f
("do-something1)d({})48 b(config-{})d(;)i(do-something2)e(<)i({}")g(|)
-915 4953 y(process-output)275 5092 y Fu(P)m(arallel)31
+915 2655 y(process-output)275 2795 y Fu(P)m(arallel)31
b(pro)m(vides)e(a)h(built-in)g(mec)m(hanism)g(to)g(remo)m(v)m(e)h
(\014lename)e(extensions,)i(whic)m(h)e(lends)g(itself)150
-5201 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390
-5340 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g
-(>{.}.bz2)e(&&)j(rm)f({}")p eop end
-%%Page: 17 23
-TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299
-y(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
-408 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 518 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 628 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 770 y Ft(parallel)46 b("zcat)g({})h(|)h(bzip2)e(>{.}.bz2)f(&&)
-j(rm)f({}")g(:::)g(*.gz)275 913 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 1023 y(F)-8 b(or)31
-b(instance,)g(the)g(follo)m(wing)h(command)390 1165 y
-Ft({)581 1275 y(echo)47 b(foss.org.my)d(;)581 1385 y(echo)j(debian.org)
-e(;)581 1494 y(echo)i(freenetproject.org)42 b(;)390 1604
-y(})47 b(|)h(parallel)d(traceroute)150 1747 y Fu(will)31
-b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m(o)s(cation)h
-(that)e(\014nishes)e(\014rst.)40 b(Adding)30 b(the)g
-Ft(-k)g Fu(option)390 1889 y Ft({)581 1999 y(echo)47
-b(foss.org.my)d(;)581 2108 y(echo)j(debian.org)e(;)581
-2218 y(echo)i(freenetproject.org)42 b(;)390 2328 y(})47
-b(|)h(parallel)d(-k)j(traceroute)150 2470 y Fu(will)31
+2905 y(to)i(batc)m(h)g(\014le)g(transformations)f(or)g(renaming:)390
+3045 y Ft(ls)47 b(*.gz)g(|)g(parallel)f(-j+0)g("zcat)h({})g(|)g(bzip2)g
+(>{.}.bz2)e(&&)j(rm)f({}")150 3185 y Fu(This)28 b(will)i(recompress)e
+(all)i(\014les)f(in)g(the)g(curren)m(t)g(directory)g(with)g(names)g
+(ending)f(in)h(.gz)h(using)f(bzip2,)150 3294 y(running)37
+b(one)i(job)f(p)s(er)f(CPU)h(\(-j)p Ft(+)p Fu(0\))i(in)e(parallel.)66
+b(\(W)-8 b(e)40 b(use)e Ft(ls)g Fu(for)h(brevit)m(y)g(here;)j(using)c
+Ft(find)g Fu(as)150 3404 y(ab)s(o)m(v)m(e)e(is)g(more)f(robust)f(in)h
+(the)h(face)g(of)f(\014lenames)h(con)m(taining)g(unexp)s(ected)f(c)m
+(haracters.\))57 b(P)m(arallel)150 3513 y(can)31 b(tak)m(e)h(argumen)m
+(ts)e(from)g(the)h(command)f(line;)h(the)f(ab)s(o)m(v)m(e)i(can)f(also)
+g(b)s(e)f(written)g(as)390 3654 y Ft(parallel)46 b("zcat)g({})h(|)h
+(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)275 3794
+y Fu(If)24 b(a)i(command)f(generates)h(output,)g(y)m(ou)g(ma)m(y)f(w)m
+(an)m(t)h(to)g(preserv)m(e)g(the)f(input)f(order)h(in)g(the)g(output.)
+150 3903 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390
+4043 y Ft({)581 4153 y(echo)47 b(foss.org.my)d(;)581
+4262 y(echo)j(debian.org)e(;)581 4372 y(echo)i(freenetproject.org)42
+b(;)390 4482 y(})47 b(|)h(parallel)d(traceroute)150 4622
+y Fu(will)31 b(displa)m(y)f(as)h(output)f(the)g(traceroute)i(in)m(v)m
+(o)s(cation)h(that)e(\014nishes)e(\014rst.)40 b(Adding)30
+b(the)g Ft(-k)g Fu(option)390 4762 y Ft({)581 4871 y(echo)47
+b(foss.org.my)d(;)581 4981 y(echo)j(debian.org)e(;)581
+5090 y(echo)i(freenetproject.org)42 b(;)390 5200 y(})47
+b(|)h(parallel)d(-k)j(traceroute)150 5340 y Fu(will)31
b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f
-Fu(is)k(displa)m(y)m(ed)g(\014rst.)275 2613 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
-2723 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35
+Fu(is)k(displa)m(y)m(ed)g(\014rst.)p eop end
+%%Page: 18 24
+TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)275 299
+y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d(a)i
+(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to)150
+408 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35
b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h
-(create)g(a)g(series)f(of)g(shell)150 2832 y(commands)24
+(create)g(a)g(series)f(of)g(shell)150 518 y(commands)24
b(to)h(op)s(erate)h(on)e(them,)i(and)e(feed)g(that)h(list)h(of)e
(commands)g(to)i(a)f(shell.)39 b(P)m(arallel)26 b(can)f(sp)s(eed)150
-2942 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e
+628 y(this)30 b(up.)40 b(Assuming)30 b(that)h Ft(file)e
Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g
-(line,)390 3085 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150
-3227 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h
+(line,)390 772 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150
+917 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h
(shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an)
-150 3337 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 3590 y Fs(3.3)68 b(Shell)45
-b(F)-11 b(unctions)150 3750 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m
+150 1027 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h
+(jobs)f(at)h(a)g(time.)150 1283 y Fs(3.3)68 b(Shell)45
+b(F)-11 b(unctions)150 1442 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m
(a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h
-(single)g(name)g(for)150 3859 y(the)f(group.)55 b(They)35
+(single)g(name)g(for)150 1552 y(the)f(group.)55 b(They)35
b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p
Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150
-3969 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e
+1661 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e
(list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150
-4078 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25
+1771 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25
b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m
-(text;)j(no)c(new)150 4188 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m
-(terpret)g(them.)275 4331 y(F)-8 b(unctions)30 b(are)h(declared)g
-(using)f(this)g(syn)m(tax:)390 4473 y Fj(name)47 b Ft(\(\))g
-Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275
-4616 y Fu(or)390 4759 y Ft(function)i Fj(name)g Ft([\(\)])h
-Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275
-4902 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 5011 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 5121 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 5230 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
-5340 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v)
+(text;)j(no)c(new)150 1881 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m
+(terpret)g(them.)275 2025 y(F)-8 b(unctions)30 b(are)h(declared)g
+(using)f(this)g(syn)m(tax:)390 2170 y Fj(fname)46 b Ft(\(\))i
+Fj(compound-command)43 b Ft([)k Fj(redirections)e Ft(])275
+2315 y Fu(or)390 2460 y Ft(function)h Fj(fname)g Ft([\(\)])h
+Fj(compound-command)c Ft([)k Fj(redirections)e Ft(])275
+2604 y Fu(This)37 b(de\014nes)h(a)h(shell)f(function)g(named)g
+Fr(fname)p Fu(.)65 b(The)38 b(reserv)m(ed)h(w)m(ord)f
+Ft(function)e Fu(is)j(optional.)150 2714 y(If)33 b(the)g
+Ft(function)e Fu(reserv)m(ed)i(w)m(ord)g(is)g(supplied,)g(the)g(paren)m
+(theses)h(are)f(optional.)50 b(The)33 b Fr(b)s(o)s(dy)39
+b Fu(of)34 b(the)150 2824 y(function)41 b(is)h(the)g(comp)s(ound)e
+(command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.5)g([Comp)
+s(ound)150 2933 y(Commands],)30 b(page)h(10\).)42 b(That)30
+b(command)g(is)g(usually)h(a)f Fr(list)j Fu(enclosed)e(b)s(et)m(w)m
+(een)g Fi({)g Fu(and)f Fi(})p Fu(,)h(but)e(ma)m(y)150
+3043 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v)
m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e
-Fu(reserv)m(ed)p eop end
-%%Page: 18 24
-TeXDict begin 18 23 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(18)150 299
-y(w)m(ord)38 b(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
-408 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 518 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(99\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 628 y(the)k(same)g(as)g
-(one)g(of)g(the)f(sp)s(ecial)i(builtins)e(\(see)h(Section)h(4.4)g([Sp)s
-(ecial)f(Builtins],)i(page)e(71\).)61 b(An)m(y)150 737
-y(redirections)32 b(\(see)g(Section)h(3.6)f([Redirections],)i(page)e
-(34\))h(asso)s(ciated)g(with)e(the)h(shell)f(function)h(are)150
-847 y(p)s(erformed)d(when)g(the)i(function)f(is)g(executed.)275
-981 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 1090 y(Section)31 b(4.1)h([Bourne)e(Shell)g
-(Builtins],)h(page)h(43\).)275 1224 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 1334 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 1443 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 1577 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
-1687 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 1797 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 1906 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 2016
-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 2150 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 2259 y(rameters)42 b(during)e(its)i
+Fu(reserv)m(ed)150 3152 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m
+(theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63
+b Fr(comp)s(ound-)150 3262 y(command)37 b Fu(is)d(executed)g(whenev)m
+(er)f Fr(fname)39 b Fu(is)34 b(sp)s(eci\014ed)e(as)i(the)g(name)g(of)f
+(a)h(command.)50 b(When)34 b(the)150 3371 y(shell)e(is)f(in)g
+Fm(posix)f Fu(mo)s(de)h(\(see)i(Section)f(6.11)h([Bash)e(POSIX)g(Mo)s
+(de],)h(page)g(101\),)h Fr(fname)k Fu(m)m(ust)31 b(b)s(e)g(a)150
+3481 y(v)-5 b(alid)37 b(shell)f Fr(name)42 b Fu(and)36
+b(ma)m(y)h(not)f(b)s(e)g(the)g(same)h(as)g(one)f(of)h(the)g(sp)s(ecial)
+g(builtins)e(\(see)j(Section)f(4.4)150 3591 y([Sp)s(ecial)e(Builtins],)
+h(page)e(72\).)54 b(In)33 b(default)h(mo)s(de,)h(a)g(function)f(name)g
+(can)g(b)s(e)g(an)m(y)g(unquoted)g(shell)150 3700 y(w)m(ord)g(that)h
+(do)s(es)e(not)i(con)m(tain)g(`)p Ft($)p Fu('.)53 b(An)m(y)34
+b(redirections)h(\(see)g(Section)g(3.6)g([Redirections],)i(page)e(35\))
+150 3810 y(asso)s(ciated)30 b(with)e(the)h(shell)f(function)g(are)h(p)s
+(erformed)e(when)h(the)g(function)g(is)h(executed.)41
+b(A)28 b(function)150 3919 y(de\014nition)g(ma)m(y)h(b)s(e)f(deleted)h
+(using)f(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(unset)e
+Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)150 4029
+y(Shell)g(Builtins],)h(page)h(44\).)275 4174 y(The)26
+b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h
+(unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150
+4283 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46
+b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150
+4393 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed)
+i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4538 y(Note)22 b(that)f(for)f
+(historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g
+(curly)f(braces)h(that)g(surround)150 4647 y(the)38 b(b)s(o)s(dy)d(of)j
+(the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s
+(dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150
+4757 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m
+(ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i
+(are)150 4866 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e
+(whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41
+b(Also,)28 b(when)150 4976 y(using)i(the)g(braces,)h(the)g
+Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a)
+e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 5121 y(When)i(a)i(function)f
+(is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome)
+g(the)h(p)s(ositional)g(pa-)150 5230 y(rameters)42 b(during)e(its)i
(execution)h(\(see)f(Section)g(3.4.1)h([P)m(ositional)h(P)m
-(arameters],)i(page)c(21\).)75 b(The)150 2369 y(sp)s(ecial)37
+(arameters],)i(page)c(21\).)75 b(The)150 5340 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
-2478 y(re\015ect)h(the)f(c)m(hange.)56 b(Sp)s(ecial)35
+s(er)f(of)h(p)s(ositional)h(parameters)f(is)g(up)s(dated)f(to)p
+eop end
+%%Page: 19 25
+TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)150 299
+y(re\015ect)36 b(the)f(c)m(hange.)56 b(Sp)s(ecial)35
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 2588
+b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 408
y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h
(function)f(while)g(the)h(function)f(is)g(executing.)275
-2722 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 2832 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
+540 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m
+(vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g
+(and)150 650 y(its)35 b(caller)i(with)d(these)i(exceptions:)50
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 2941 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
-3051 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 3160 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
-3270 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f
-(Shell)g(Builtins],)i(page)f(43,)i(for)c(the)i(description)f(of)150
-3380 y(the)c Ft(trap)e Fu(builtin.)275 3513 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
-3623 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
+(inherited)f(unless)h(the)150 759 y(function)26 b(has)g(b)s(een)f(giv)m
+(en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e
+Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 869 y Fu(option)f(has)e
+(b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m
+(h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150
+978 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h
+Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h
+Ft(-o)c(errtrace)h Fu(shell)j(option)150 1088 y(has)h(b)s(een)f
+(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i
+(page)f(44,)i(for)c(the)i(description)f(of)150 1198 y(the)c
+Ft(trap)e Fu(builtin.)275 1329 y(The)38 b Ft(FUNCNEST)f
+Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5
+b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150
+1439 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25
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 3733 y(to)31 b(ab)s(ort.)275
-3867 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
+(en)m(tire)g(command)150 1548 y(to)31 b(ab)s(ort.)275
+1680 y(If)37 b(the)g(builtin)g(command)h Ft(return)d
Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h
-(and)150 3976 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f
+(and)150 1789 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 4086 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed)
+(ciated)150 1899 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 4195 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s
+(completes,)150 2008 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 4305 y(v)-5
+Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2118 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 4415 y(that)j(is)g(the)f(function's)h(return)e
+Ft(return)p Fu(,)150 2228 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 4524 y(of)h(the)f(last)h(command)f(executed)i(b)s
-(efore)e(the)g Ft(return)p Fu(.)275 4658 y(V)-8 b(ariables)31
+(exit)h(status)150 2337 y(of)h(the)f(last)h(command)f(executed)i(b)s
+(efore)e(the)g Ft(return)p Fu(.)275 2469 y(V)-8 b(ariables)31
b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f
(the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150
-4768 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i
+2578 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i
(commands)e(it)i(in)m(v)m(ok)m(es.)40 b(This)24 b(is)h(particularly)h
-(imp)s(ortan)m(t)150 4877 y(when)j(a)i(shell)g(function)f(calls)h
-(other)g(functions.)275 5011 y(Lo)s(cal)41 b(v)-5 b(ariables)42
+(imp)s(ortan)m(t)150 2688 y(when)j(a)i(shell)g(function)f(calls)h
+(other)g(functions.)275 2819 y(Lo)s(cal)41 b(v)-5 b(ariables)42
b Ft(")p Fu(shado)m(w)p Ft(")e Fu(v)-5 b(ariables)42
b(with)f(the)g(same)g(name)g(declared)h(at)f(previous)g(scop)s(es.)150
-5121 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5
+2929 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5
b(ariable)41 b(declared)g(in)f(a)h(function)f(hides)g(a)h(global)h(v)-5
-b(ariable)41 b(of)g(the)g(same)150 5230 y(name:)59 b(references)40
+b(ariable)41 b(of)g(the)g(same)150 3039 y(name:)59 b(references)40
b(and)f(assignmen)m(ts)h(refer)f(to)i(the)f(lo)s(cal)g(v)-5
b(ariable,)43 b(lea)m(ving)f(the)d(global)i(v)-5 b(ariable)150
-5340 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the)
-g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)p
-eop end
-%%Page: 19 25
-TeXDict begin 19 24 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(19)275 299
-y(The)30 b(shell)h(uses)g Fr(dynamic)g(scoping)39 b Fu(to)32
-b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h(within)d
-(functions.)42 b(With)150 408 y(dynamic)31 b(scoping,)i(visible)e(v)-5
-b(ariables)32 b(and)f(their)h(v)-5 b(alues)32 b(are)f(a)h(result)g(of)f
-(the)h(sequence)g(of)f(function)150 518 y(calls)37 b(that)g(caused)g
-(execution)g(to)g(reac)m(h)g(the)g(curren)m(t)f(function.)58
-b(The)36 b(v)-5 b(alue)36 b(of)h(a)g(v)-5 b(ariable)37
-b(that)g(a)150 628 y(function)24 b(sees)g(dep)s(ends)f(on)h(its)g(v)-5
-b(alue)25 b(within)e(its)i(caller,)i(if)d(an)m(y)-8 b(,)26
-b(whether)e(that)g(caller)i(is)e(the)g Ft(")p Fu(global)p
-Ft(")150 737 y Fu(scop)s(e)41 b(or)g(another)g(shell)g(function.)73
-b(This)40 b(is)h(also)h(the)f(v)-5 b(alue)41 b(that)h(a)f(lo)s(cal)i(v)
--5 b(ariable)41 b(declaration)150 847 y Ft(")p Fu(shado)m(ws)p
-Ft(")p Fu(,)30 b(and)g(the)g(v)-5 b(alue)31 b(that)g(is)f(restored)h
-(when)e(the)i(function)f(returns.)275 991 y(F)-8 b(or)41
-b(example,)j(if)d(a)g(v)-5 b(ariable)41 b Fr(v)-5 b(ar)48
-b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f(function)f
-Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150 1101
-y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h
+3148 y(unmo)s(di\014ed.)39 b(When)30 b(the)g(function)g(returns,)g(the)
+g(global)i(v)-5 b(ariable)31 b(is)g(once)g(again)g(visible.)275
+3280 y(The)f(shell)h(uses)g Fr(dynamic)g(scoping)39 b
+Fu(to)32 b(con)m(trol)g(a)f(v)-5 b(ariable's)32 b(visibilit)m(y)h
+(within)d(functions.)42 b(With)150 3389 y(dynamic)31
+b(scoping,)i(visible)e(v)-5 b(ariables)32 b(and)f(their)h(v)-5
+b(alues)32 b(are)f(a)h(result)g(of)f(the)h(sequence)g(of)f(function)150
+3499 y(calls)37 b(that)g(caused)g(execution)g(to)g(reac)m(h)g(the)g
+(curren)m(t)f(function.)58 b(The)36 b(v)-5 b(alue)36
+b(of)h(a)g(v)-5 b(ariable)37 b(that)g(a)150 3608 y(function)24
+b(sees)g(dep)s(ends)f(on)h(its)g(v)-5 b(alue)25 b(within)e(its)i
+(caller,)i(if)d(an)m(y)-8 b(,)26 b(whether)e(that)g(caller)i(is)e(the)g
+Ft(")p Fu(global)p Ft(")150 3718 y Fu(scop)s(e)41 b(or)g(another)g
+(shell)g(function.)73 b(This)40 b(is)h(also)h(the)f(v)-5
+b(alue)41 b(that)h(a)f(lo)s(cal)i(v)-5 b(ariable)41 b(declaration)150
+3828 y Ft(")p Fu(shado)m(ws)p Ft(")p Fu(,)30 b(and)g(the)g(v)-5
+b(alue)31 b(that)g(is)f(restored)h(when)e(the)i(function)f(returns.)275
+3959 y(F)-8 b(or)41 b(example,)j(if)d(a)g(v)-5 b(ariable)41
+b Fr(v)-5 b(ar)48 b Fu(is)40 b(declared)h(as)g(lo)s(cal)h(in)f
+(function)f Fr(func1)p Fu(,)j(and)d Fr(func1)48 b Fu(calls)150
+4069 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h
Fr(v)-5 b(ar)39 b Fu(made)33 b(from)f(within)h Fr(func2)39
-b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 1210
+b Fu(will)34 b(resolv)m(e)g(to)g(the)f(lo)s(cal)150 4178
y(v)-5 b(ariable)31 b Fr(v)-5 b(ar)37 b Fu(from)30 b
Fr(func1)p Fu(,)g(shado)m(wing)h(an)m(y)f(global)i(v)-5
-b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 1355 y(The)29
+b(ariable)31 b(named)f Fr(v)-5 b(ar)p Fu(.)275 4310 y(The)29
b(follo)m(wing)j(script)f(demonstrates)f(this)h(b)s(eha)m(vior.)40
b(When)31 b(executed,)g(the)g(script)f(displa)m(ys)390
-1499 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390
-1643 y(func1\(\))390 1753 y({)581 1862 y(local)g(var='func1)f(local')
-581 1972 y(func2)390 2081 y(})390 2301 y(func2\(\))390
-2410 y({)581 2520 y(echo)i("In)f(func2,)h(var)f(=)i($var")390
-2629 y(})390 2849 y(var=global)390 2958 y(func1)275 3102
-y Fu(The)32 b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)
-f(dynamic)g(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34
-b(is)f(lo)s(cal)h(to)g(the)150 3212 y(curren)m(t)i(scop)s(e,)h
-Ft(unset)e Fu(will)h(unset)g(it;)j(otherwise)e(the)f(unset)f(will)h
-(refer)g(to)h(the)f(v)-5 b(ariable)37 b(found)d(in)150
-3322 y(an)m(y)j(calling)h(scop)s(e)f(as)g(describ)s(ed)f(ab)s(o)m(v)m
-(e.)61 b(If)36 b(a)h(v)-5 b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s
-(cal)h(scop)s(e)e(is)h(unset,)h(it)150 3431 y(will)27
-b(remain)h(so)f(un)m(til)g(it)h(is)f(reset)h(in)f(that)g(scop)s(e)h(or)
-f(un)m(til)g(the)h(function)e(returns.)39 b(Once)27 b(the)g(function)
-150 3541 y(returns,)34 b(an)m(y)h(instance)g(of)f(the)g(v)-5
-b(ariable)35 b(at)g(a)g(previous)e(scop)s(e)i(will)f(b)s(ecome)h
-(visible.)52 b(If)34 b(the)g(unset)150 3650 y(acts)e(on)f(a)h(v)-5
-b(ariable)32 b(at)g(a)f(previous)g(scop)s(e,)h(an)m(y)f(instance)h(of)f
-(a)h(v)-5 b(ariable)32 b(with)f(that)h(name)f(that)h(had)150
-3760 y(b)s(een)e(shado)m(w)m(ed)g(will)h(b)s(ecome)g(visible.)275
-3904 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 4014 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(50\).)59
-b(The)35 b Ft(-F)h Fu(option)g(to)150 4123 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
-4233 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 4343 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
-4452 y(Section)31 b(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(43\).)
-275 4596 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 4706 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
-4816 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 5071 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
-5230 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that)
+4441 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390
+4573 y(func1\(\))390 4682 y({)581 4792 y(local)g(var='func1)f(local')
+581 4902 y(func2)390 5011 y(})390 5230 y(func2\(\))390
+5340 y({)p eop end
+%%Page: 20 26
+TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)581 299
+y Ft(echo)47 b("In)f(func2,)h(var)f(=)i($var")390 408
+y(})390 628 y(var=global)390 737 y(func1)275 878 y Fu(The)32
+b Ft(unset)g Fu(builtin)g(also)i(acts)g(using)e(the)i(same)f(dynamic)g
+(scop)s(e:)46 b(if)33 b(a)g(v)-5 b(ariable)34 b(is)f(lo)s(cal)h(to)g
+(the)150 987 y(curren)m(t)i(scop)s(e,)h Ft(unset)e Fu(will)h(unset)g
+(it;)j(otherwise)e(the)f(unset)f(will)h(refer)g(to)h(the)f(v)-5
+b(ariable)37 b(found)d(in)150 1097 y(an)m(y)j(calling)h(scop)s(e)f(as)g
+(describ)s(ed)f(ab)s(o)m(v)m(e.)61 b(If)36 b(a)h(v)-5
+b(ariable)38 b(at)f(the)g(curren)m(t)g(lo)s(cal)h(scop)s(e)e(is)h
+(unset,)h(it)150 1207 y(will)27 b(remain)h(so)f(un)m(til)g(it)h(is)f
+(reset)h(in)f(that)g(scop)s(e)h(or)f(un)m(til)g(the)h(function)e
+(returns.)39 b(Once)27 b(the)g(function)150 1316 y(returns,)34
+b(an)m(y)h(instance)g(of)f(the)g(v)-5 b(ariable)35 b(at)g(a)g(previous)
+e(scop)s(e)i(will)f(b)s(ecome)h(visible.)52 b(If)34 b(the)g(unset)150
+1426 y(acts)e(on)f(a)h(v)-5 b(ariable)32 b(at)g(a)f(previous)g(scop)s
+(e,)h(an)m(y)f(instance)h(of)f(a)h(v)-5 b(ariable)32
+b(with)f(that)h(name)f(that)h(had)150 1535 y(b)s(een)e(shado)m(w)m(ed)g
+(will)h(b)s(ecome)g(visible.)275 1676 y(F)-8 b(unction)51
+b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h
+Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 1786 y
+Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g
+(4.2)g([Bash)f(Builtins],)i(page)f(51\).)59 b(The)35
+b Ft(-F)h Fu(option)g(to)150 1895 y Ft(declare)e Fu(or)i
+Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g
+(optionally)h(the)f(source)g(\014le)h(and)150 2005 y(line)c(n)m(um)m(b)
+s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49
+b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150
+2114 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f
+(with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d
+Fu(builtin)i(\(see)150 2224 y(Section)31 b(4.1)h([Bourne)e(Shell)g
+(Builtins],)h(page)h(44\).)275 2365 y(F)-8 b(unctions)33
+b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f
+Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g(to)i(limit)g(the)f
+(depth)f(of)150 2474 y(the)27 b(function)f(call)i(stac)m(k)h(and)d
+(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f(in)m(v)m(o)s
+(cations.)42 b(By)27 b(default,)g(no)g(limit)150 2584
+y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f
+(calls.)150 2834 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150
+2993 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that)
f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g
Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s
-(ecial)150 5340 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39
+(ecial)150 3103 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39
b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b)
m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24
-b(has)f(a)g Fr(v)-5 b(alue)p eop end
-%%Page: 20 26
-TeXDict begin 20 25 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(20)150 299
-y(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 408 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(50\).)275 542 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 652
-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
-786 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 920 y Fj(name)p
-Ft(=[)p Fj(value)p Ft(])150 1054 y Fu(If)j Fr(v)-5 b(alue)40
+b(has)f(a)g Fr(v)-5 b(alue)150 3212 y Fu(and)33 b(zero)i(or)f(more)g
+Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g
+(the)g Ft(declare)e Fu(builtin)h(command)150 3322 y(\(see)e(the)g
+(description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2)
+g([Bash)g(Builtins],)g(page)g(51\).)275 3462 y(A)d(parameter)h(is)g
+(set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5
+b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5
+b(alid)28 b(v)-5 b(alue.)41 b(Once)150 3572 y(a)31 b(v)-5
+b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f
+(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 3713
+y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h
+(statemen)m(t)h(of)e(the)h(form)390 3853 y Fj(name)p
+Ft(=[)p Fj(value)p Ft(])150 3994 y Fu(If)j Fr(v)-5 b(alue)40
b Fu(is)35 b(not)g(giv)m(en,)h(the)f(v)-5 b(ariable)35
b(is)g(assigned)g(the)f(n)m(ull)h(string.)53 b(All)35
b Fr(v)-5 b(alue)5 b Fu(s)35 b(undergo)f(tilde)h(ex-)150
-1163 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
+4103 y(pansion,)h(parameter)f(and)f(v)-5 b(ariable)36
b(expansion,)f(command)g(substitution,)h(arithmetic)g(expansion,)150
-1273 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).)
+4213 y(and)k(quote)h(remo)m(v)-5 b(al)42 b(\(detailed)h(b)s(elo)m(w\).)
72 b(If)40 b(the)h(v)-5 b(ariable)41 b(has)g(its)g Ft(integer)e
-Fu(attribute)i(set,)j(then)150 1383 y Fr(v)-5 b(alue)38
+Fu(attribute)i(set,)j(then)150 4323 y Fr(v)-5 b(alue)38
b Fu(is)33 b(ev)-5 b(aluated)34 b(as)f(an)g(arithmetic)h(expression)f
(ev)m(en)h(if)e(the)h Ft($\(\(...)o(\)\))f Fu(expansion)h(is)g(not)g
-(used)150 1492 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
+(used)150 4432 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f
(page)h(31\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s
-(erformed,)f(with)150 1602 y(the)35 b(exception)h(of)f
+(erformed,)f(with)150 4542 y(the)35 b(exception)h(of)f
Ft("$@")f Fu(as)h(explained)g(b)s(elo)m(w.)54 b(Filename)36
b(expansion)f(is)g(not)g(p)s(erformed.)53 b(Assign-)150
-1711 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g
+4651 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g
(argumen)m(ts)h(to)g(the)g Ft(alias)p Fu(,)e Ft(declare)p
-Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 1821
+Fu(,)g Ft(typeset)p Fu(,)g Ft(export)p Fu(,)150 4761
y Ft(readonly)p Fu(,)38 b(and)g Ft(local)f Fu(builtin)h(commands)g(\()p
Fr(declaration)j Fu(commands\).)64 b(When)39 b(in)f Fm(posix)f
-Fu(mo)s(de)150 1931 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s
-(de],)j(page)f(99\),)i(these)e(builtins)f(ma)m(y)i(app)s(ear)e(in)g(a)h
-(command)150 2040 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 2150 y(prop)s(erties.)275 2284 y(In)29
+Fu(mo)s(de)150 4871 y(\(see)29 b(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s
+(de],)j(page)f(101\),)h(these)f(builtins)f(ma)m(y)h(app)s(ear)f(in)g(a)
+h(command)150 4980 y(after)34 b(one)g(or)f(more)h(instances)g(of)f(the)
+h Ft(command)d Fu(builtin)i(and)g(retain)h(these)g(assignmen)m(t)g
+(statemen)m(t)150 5090 y(prop)s(erties.)275 5230 y(In)29
b(the)h(con)m(text)i(where)d(an)h(assignmen)m(t)h(statemen)m(t)h(is)e
(assigning)g(a)h(v)-5 b(alue)30 b(to)h(a)f(shell)g(v)-5
-b(ariable)31 b(or)150 2393 y(arra)m(y)24 b(index)f(\(see)h(Section)g
-(6.7)g([Arra)m(ys],)i(page)e(94\),)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
-2503 y(add)k(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5
+b(ariable)31 b(or)150 5340 y(arra)m(y)24 b(index)f(\(see)h(Section)g
+(6.7)g([Arra)m(ys],)i(page)e(95\),)i(the)e(`)p Ft(+=)p
+Fu(')f(op)s(erator)g(can)h(b)s(e)f(used)f(to)i(app)s(end)e(to)i(or)p
+eop end
+%%Page: 21 27
+TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299
+y(add)28 b(to)i(the)f(v)-5 b(ariable's)30 b(previous)e(v)-5
b(alue.)41 b(This)28 b(includes)g(argumen)m(ts)i(to)f(builtin)g
-(commands)f(suc)m(h)h(as)150 2612 y Ft(declare)e Fu(that)i(accept)h
+(commands)f(suc)m(h)h(as)150 408 y Ft(declare)e Fu(that)i(accept)h
(assignmen)m(t)f(statemen)m(ts)h(\()p Fr(declaration)h
Fu(commands\).)40 b(When)28 b(`)p Ft(+=)p Fu(')h(is)f(applied)150
-2722 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h
+518 y(to)d(a)f(v)-5 b(ariable)24 b(for)g(whic)m(h)f(the)h
Fr(in)m(teger)32 b Fu(attribute)24 b(has)g(b)s(een)f(set,)j
Fr(v)-5 b(alue)29 b Fu(is)24 b(ev)-5 b(aluated)25 b(as)f(an)g
-(arithmetic)150 2832 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5
+(arithmetic)150 628 y(expression)30 b(and)f(added)g(to)i(the)f(v)-5
b(ariable's)30 b(curren)m(t)g(v)-5 b(alue,)31 b(whic)m(h)e(is)h(also)h
(ev)-5 b(aluated.)42 b(When)29 b(`)p Ft(+=)p Fu(')h(is)150
-2941 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26
+737 y(applied)25 b(to)h(an)f(arra)m(y)h(v)-5 b(ariable)26
b(using)f(comp)s(ound)f(assignmen)m(t)i(\(see)g(Section)g(6.7)g([Arra)m
-(ys],)h(page)f(94\),)150 3051 y(the)33 b(v)-5 b(ariable's)33
+(ys],)h(page)f(95\),)150 847 y(the)33 b(v)-5 b(ariable's)33
b(v)-5 b(alue)33 b(is)g(not)g(unset)f(\(as)h(it)g(is)g(when)e(using)i
(`)p Ft(=)p Fu('\),)g(and)f(new)g(v)-5 b(alues)33 b(are)g(app)s(ended)e
-(to)150 3160 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h
+(to)150 956 y(the)26 b(arra)m(y)h(b)s(eginning)e(at)i(one)f(greater)h
(than)f(the)g(arra)m(y's)h(maxim)m(um)f(index)f(\(for)i(indexed)e(arra)
-m(ys\),)j(or)150 3270 y(added)c(as)i(additional)g(k)m(ey-v)-5
+m(ys\),)j(or)150 1066 y(added)c(as)i(additional)g(k)m(ey-v)-5
b(alue)26 b(pairs)f(in)g(an)g(asso)s(ciativ)m(e)j(arra)m(y)-8
b(.)40 b(When)24 b(applied)h(to)h(a)g(string-v)-5 b(alued)150
-3380 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31
+1176 y(v)g(ariable,)31 b Fr(v)-5 b(alue)36 b Fu(is)31
b(expanded)e(and)h(app)s(ended)f(to)i(the)f(v)-5 b(ariable's)32
-b(v)-5 b(alue.)275 3513 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f
+b(v)-5 b(alue.)275 1319 y(A)28 b(v)-5 b(ariable)29 b(can)f(b)s(e)f
(assigned)i(the)f Fr(nameref)45 b Fu(attribute)29 b(using)f(the)g
Ft(-n)f Fu(option)i(to)g(the)f Ft(declare)e Fu(or)150
-3623 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)f(50\))h(to)f(create)i(a)e
-Fr(nameref)p Fu(,)g(or)g(a)150 3733 y(reference)f(to)g(another)f(v)-5
+1428 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h
+([Bash)f(Builtins],)h(page)f(51\))h(to)f(create)i(a)e
+Fr(nameref)p Fu(,)g(or)g(a)150 1538 y(reference)f(to)g(another)f(v)-5
b(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
-3842 y(the)31 b(nameref)g(v)-5 b(ariable)32 b(is)f(referenced,)g
+1647 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 3952 y(than)c(using)g(or)h(c)m(hanging)g(the)g(nameref)f
+f(\(other)150 1757 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 4061 y(the)31 b(v)-5 b(ariable)31
+(p)s(erformed)d(on)150 1867 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
-4171 y(shell)h(functions)g(to)h(refer)f(to)h(a)f(v)-5
+1976 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 4281 y(F)-8 b(or)31 b(instance,)g(if)g(a)g(v)-5
+g(the)f(function.)150 2086 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 4415 y Ft(declare)46
-b(-n)h(ref=$1)150 4548 y Fu(inside)31 b(the)h(function)f(creates)i(a)g
+(its)f(\014rst)g(argumen)m(t,)h(running)390 2229 y Ft(declare)46
+b(-n)h(ref=$1)150 2372 y Fu(inside)31 b(the)h(function)f(creates)i(a)g
(nameref)e(v)-5 b(ariable)32 b Fr(ref)49 b Fu(whose)32
b(v)-5 b(alue)32 b(is)g(the)f(v)-5 b(ariable)33 b(name)e(passed)150
-4658 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30
+2481 y(as)e(the)h(\014rst)e(argumen)m(t.)41 b(References)30
b(and)e(assignmen)m(ts)i(to)g Fr(ref)p Fu(,)f(and)g(c)m(hanges)h(to)g
-(its)f(attributes,)i(are)150 4768 y(treated)g(as)f(references,)g
+(its)f(attributes,)i(are)150 2591 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 4877 y(w)m(as)h(passed)f(as)g
-Ft($1)p Fu(.)275 5011 y(If)h(the)g(con)m(trol)i(v)-5
+-5 b(ariable)30 b(whose)g(name)150 2701 y(w)m(as)h(passed)f(as)g
+Ft($1)p Fu(.)275 2844 y(If)h(the)g(con)m(trol)i(v)-5
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
-5121 y(a)h(list)h(of)f(shell)g(v)-5 b(ariables,)34 b(and)e(a)i(name)f
+2953 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 5230 y(in)c(turn,)g(when)g(the)h(lo)s(op)g(is)g
+h(the)g(list,)150 3063 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 5340 y(Ho)m(w)m(ev)m(er,)39
+(giv)m(en)h(the)g(nameref)g(attribute.)150 3172 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.)p
-eop end
-%%Page: 21 27
-TeXDict begin 21 26 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(21)150 299
-y(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 408 y(Shell)43 b(Builtins],)j(page)e(43\).)79
+b(ariables)37 b(and)e(subscripted)f(arra)m(y)i(v)-5 b(ariables.)150
+3282 y(Namerefs)36 b(can)f(b)s(e)g(unset)g(using)g(the)h
+Ft(-n)e Fu(option)i(to)g(the)g Ft(unset)e Fu(builtin)h(\(see)h(Section)
+g(4.1)h([Bourne)150 3392 y(Shell)43 b(Builtins],)j(page)e(44\).)79
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 518 y(v)-5 b(ariable)31 b(as)g(an)f(argumen)m
+g(of)g(a)g(nameref)150 3501 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 741 y Fk(3.4.1)63
-b(P)m(ositional)41 b(P)m(arameters)150 888 y Fu(A)28
+-5 b(ariable)31 b(will)g(b)s(e)f(unset.)150 3709 y Fk(3.4.1)63
+b(P)m(ositional)41 b(P)m(arameters)150 3856 y Fu(A)28
b Fr(p)s(ositional)h(parameter)35 b Fu(is)28 b(a)g(parameter)g(denoted)
g(b)m(y)g(one)g(or)g(more)g(digits,)h(other)g(than)e(the)h(single)150
-998 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 1107 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 1217 y(referenced)34
+3965 y(digit)34 b Ft(0)p Fu(.)48 b(P)m(ositional)36 b(parameters)d(are)
+g(assigned)h(from)e(the)i(shell's)f(argumen)m(ts)g(when)f(it)i(is)f(in)
+m(v)m(ok)m(ed,)150 4075 y(and)38 b(ma)m(y)i(b)s(e)e(reassigned)i(using)
+e(the)h Ft(set)g Fu(builtin)f(command.)67 b(P)m(ositional)41
+b(parameter)e Ft(N)g Fu(ma)m(y)h(b)s(e)150 4185 y(referenced)34
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 1327 y(not)j(b)s(e)f(assigned)h(to)g(with)f
+b(parameters)d(ma)m(y)150 4294 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
-1436 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
-(Builtin)g(Commands],)h(page)f(43\).)68 b(The)39 b(p)s(ositional)150
-1546 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h
+4404 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h
+(Builtin)g(Commands],)h(page)f(44\).)68 b(The)39 b(p)s(ositional)150
+4513 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h
(shell)g(function)g(is)g(executed)g(\(see)h(Section)g(3.3)150
-1655 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275
-1814 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f
+4623 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(18\).)275
+4766 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f
(than)g(a)g(single)h(digit)g(is)f(expanded,)g(it)h(m)m(ust)150
-1923 y(b)s(e)h(enclosed)h(in)f(braces.)150 2146 y Fk(3.4.2)63
-b(Sp)s(ecial)41 b(P)m(arameters)150 2293 y Fu(The)d(shell)g(treats)h
+4876 y(b)s(e)h(enclosed)h(in)f(braces.)150 5083 y Fk(3.4.2)63
+b(Sp)s(ecial)41 b(P)m(arameters)150 5230 y Fu(The)d(shell)g(treats)h
(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
-2403 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150
-2598 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
+5340 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)p
+eop end
+%%Page: 22 28
+TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299
+y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)h
(parameters,)h(starting)f(from)f(one.)59 b(When)36 b(the)g(ex-)630
-2708 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 2817 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 2927
-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 3037 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 3146
-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 3256 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 3365 y Ft(IFS)e Fu(v)-5 b(ariable.)41
+408 y(pansion)h(is)h(not)g(within)f(double)g(quotes,)j(eac)m(h)f(p)s
+(ositional)f(parameter)g(expands)f(to)i(a)630 518 y(separate)23
+b(w)m(ord.)38 b(In)21 b(con)m(texts)j(where)e(it)g(is)h(p)s(erformed,)f
+(those)h(w)m(ords)e(are)i(sub)5 b(ject)22 b(to)h(fur-)630
+628 y(ther)k(w)m(ord)g(splitting)i(and)e(\014lename)g(expansion.)40
+b(When)27 b(the)h(expansion)f(o)s(ccurs)g(within)630
+737 y(double)37 b(quotes,)k(it)d(expands)f(to)h(a)g(single)h(w)m(ord)e
+(with)h(the)f(v)-5 b(alue)39 b(of)f(eac)m(h)g(parameter)630
+847 y(separated)g(b)m(y)g(the)f(\014rst)g(c)m(haracter)i(of)f(the)g
+Ft(IFS)f Fu(sp)s(ecial)h(v)-5 b(ariable.)63 b(That)38
+b(is,)h Ft("$*")e Fu(is)630 956 y(equiv)-5 b(alen)m(t)39
+b(to)g Ft("$1)p Fj(c)p Ft($2)p Fj(c)p Ft(...)m(")p Fu(,)h(where)d
+Fr(c)44 b Fu(is)38 b(the)g(\014rst)g(c)m(haracter)h(of)f(the)g(v)-5
+b(alue)39 b(of)f(the)630 1066 y Ft(IFS)29 b Fu(v)-5 b(ariable.)41
b(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 3475
+g(b)m(y)g(spaces.)41 b(If)29 b Ft(IFS)g Fu(is)630 1176
y(n)m(ull,)i(the)f(parameters)h(are)g(joined)f(without)g(in)m(terv)m
-(ening)i(separators.)150 3658 y Ft(@)432 b Fu(\($@\))43
+(ening)i(separators.)150 1334 y Ft(@)432 b Fu(\($@\))43
b(Expands)f(to)h(the)g(p)s(ositional)g(parameters,)k(starting)c(from)f
-(one.)78 b(In)42 b(con)m(texts)630 3768 y(where)35 b(w)m(ord)h
+(one.)78 b(In)42 b(con)m(texts)630 1444 y(where)35 b(w)m(ord)h
(splitting)g(is)g(p)s(erformed,)g(this)g(expands)e(eac)m(h)j(p)s
-(ositional)g(parameter)f(to)630 3877 y(a)d(separate)h(w)m(ord;)g(if)f
+(ositional)g(parameter)f(to)630 1553 y(a)d(separate)h(w)m(ord;)g(if)f
(not)g(within)g(double)f(quotes,)j(these)e(w)m(ords)g(are)g(sub)5
-b(ject)33 b(to)g(w)m(ord)630 3987 y(splitting.)60 b(In)36
+b(ject)33 b(to)g(w)m(ord)630 1663 y(splitting.)60 b(In)36
b(con)m(texts)j(where)d(w)m(ord)g(splitting)h(is)g(not)g(p)s(erformed,)
-g(this)f(expands)g(to)630 4097 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h)
+g(this)f(expands)g(to)630 1773 y(a)c(single)h(w)m(ord)e(with)h(eac)m(h)
h(p)s(ositional)g(parameter)f(separated)g(b)m(y)g(a)g(space.)46
-b(When)32 b(the)630 4206 y(expansion)i(o)s(ccurs)h(within)e(double)i
+b(When)32 b(the)630 1882 y(expansion)i(o)s(ccurs)h(within)e(double)i
(quotes,)h(and)e(w)m(ord)g(splitting)h(is)g(p)s(erformed,)f(eac)m(h)630
-4316 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37
+1992 y(parameter)23 b(expands)f(to)i(a)f(separate)h(w)m(ord.)37
b(That)23 b(is,)i Ft("$@")c Fu(is)i(equiv)-5 b(alen)m(t)24
-b(to)g Ft("$1")29 b("$2")630 4425 y(...)o Fu(.)39 b(If)26
+b(to)g Ft("$1")29 b("$2")630 2101 y(...)o Fu(.)39 b(If)26
b(the)g(double-quoted)g(expansion)f(o)s(ccurs)h(within)f(a)h(w)m(ord,)h
-(the)f(expansion)g(of)g(the)630 4535 y(\014rst)31 b(parameter)h(is)g
+(the)f(expansion)g(of)g(the)630 2211 y(\014rst)31 b(parameter)h(is)g
(joined)f(with)g(the)h(b)s(eginning)f(part)h(of)f(the)h(original)h(w)m
-(ord,)f(and)f(the)630 4645 y(expansion)25 b(of)g(the)h(last)g
+(ord,)f(and)f(the)630 2321 y(expansion)25 b(of)g(the)h(last)g
(parameter)f(is)h(joined)f(with)g(the)g(last)h(part)f(of)g(the)h
-(original)g(w)m(ord.)630 4754 y(When)i(there)g(are)g(no)g(p)s
+(original)g(w)m(ord.)630 2430 y(When)i(there)g(are)g(no)g(p)s
(ositional)g(parameters,)h Ft("$@")e Fu(and)g Ft($@)h
-Fu(expand)f(to)h(nothing)g(\(i.e.,)630 4864 y(they)j(are)f(remo)m(v)m
-(ed\).)150 5047 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
+Fu(expand)f(to)h(nothing)g(\(i.e.,)630 2540 y(they)j(are)f(remo)m(v)m
+(ed\).)150 2698 y Ft(#)432 b Fu(\($#\))31 b(Expands)e(to)i(the)g(n)m
(um)m(b)s(er)e(of)h(p)s(ositional)i(parameters)e(in)g(decimal.)150
-5230 y Ft(?)432 b Fu(\($?\))88 b(Expands)45 b(to)h(the)g(exit)h(status)
+2857 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
-5340 y(pip)s(eline.)p eop end
-%%Page: 22 28
-TeXDict begin 22 27 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(22)150 299
-y Ft(-)432 b Fu(\($-,)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 408 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 518
-y Fu(option\).)150 675 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
-785 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 943 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 1052 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 1162 y(\(see)31
-b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g(page)h(104\).)150
-1319 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
-1429 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
-1538 y(Scripts],)g(page)g(41\),)h Ft($0)e Fu(is)h(set)g(to)g(the)f
-(name)h(of)f(that)h(\014le.)41 b(If)28 b(Bash)g(is)h(started)g(with)f
-(the)630 1648 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m
-(oking)h(Bash],)g(page)f(85\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)
-f(\014rst)630 1758 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 1867 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
-2025 y Ft(_)432 b Fu(\($)p 716 2025 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 2134 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 2244 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
-2353 y(simple)g(command)f(executed)i(in)e(the)h(foreground,)g(after)g
-(expansion.)51 b(Also)34 b(set)g(to)h(the)630 2463 y(full)d(pathname)h
-(used)f(to)i(in)m(v)m(ok)m(e)g(eac)m(h)g(command)f(executed)g(and)f
-(placed)i(in)e(the)h(en)m(vi-)630 2572 y(ronmen)m(t)24
-b(exp)s(orted)g(to)h(that)g(command.)38 b(When)24 b(c)m(hec)m(king)i
-(mail,)h(this)d(parameter)g(holds)630 2682 y(the)31 b(name)f(of)h(the)f
-(mail)h(\014le.)150 2921 y Fs(3.5)68 b(Shell)45 b(Expansions)150
-3080 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 3190 y(sev)m(en)j(kinds)e(of)i(expansion)
-f(p)s(erformed:)225 3323 y Fq(\017)60 b Fu(brace)31 b(expansion)225
-3457 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 3590
-y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31
-b(expansion)225 3724 y Fq(\017)60 b Fu(command)30 b(substitution)225
-3857 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225
-3991 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 4124
-y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 4282
-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 4391 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 4501 y(w)m(ord)d(splitting;)h(and)f(\014lename)h
-(expansion.)275 4635 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 4744 y(substitution)p
+2967 y(pip)s(eline.)150 3125 y Ft(-)432 b Fu(\($-,)24
+b(a)e(h)m(yphen.\))37 b(Expands)20 b(to)i(the)f(curren)m(t)h(option)f
+(\015ags)h(as)f(sp)s(eci\014ed)g(up)s(on)f(in)m(v)m(o)s(cation,)630
+3235 y(b)m(y)38 b(the)h Ft(set)f Fu(builtin)g(command,)j(or)d(those)i
+(set)f(b)m(y)f(the)h(shell)g(itself)g(\(suc)m(h)g(as)g(the)g
+Ft(-i)630 3344 y Fu(option\).)150 3503 y Ft($)432 b Fu(\($$\))31
+b(Expands)d(to)j(the)e(pro)s(cess)h Fm(id)f Fu(of)h(the)g(shell.)41
+b(In)28 b(a)i Ft(\(\))f Fu(subshell,)h(it)g(expands)e(to)j(the)630
+3613 y(pro)s(cess)f Fm(id)g Fu(of)h(the)g(in)m(v)m(oking)g(shell,)g
+(not)g(the)f(subshell.)150 3771 y Ft(!)432 b Fu(\($!\))51
+b(Expands)32 b(to)i(the)g(pro)s(cess)f Fm(id)h Fu(of)f(the)h(job)f
+(most)h(recen)m(tly)h(placed)f(in)m(to)g(the)g(bac)m(k-)630
+3881 y(ground,)26 b(whether)g(executed)g(as)h(an)f(async)m(hronous)f
+(command)h(or)g(using)g(the)g Ft(bg)f Fu(builtin)630
+3990 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g
+(page)h(108\).)150 4149 y Ft(0)432 b Fu(\($0\))46 b(Expands)d(to)i(the)
+g(name)g(of)f(the)h(shell)g(or)f(shell)h(script.)83 b(This)44
+b(is)g(set)h(at)h(shell)630 4259 y(initialization.)d(If)27
+b(Bash)h(is)g(in)m(v)m(ok)m(ed)h(with)e(a)i(\014le)e(of)h(commands)g
+(\(see)g(Section)h(3.8)g([Shell)630 4368 y(Scripts],)g(page)g(42\),)h
+Ft($0)e Fu(is)h(set)g(to)g(the)f(name)h(of)f(that)h(\014le.)41
+b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 4478 y
+Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g
+(page)f(86\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630
+4587 y(argumen)m(t)g(after)g(the)g(string)g(to)g(b)s(e)f(executed,)i
+(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630
+4697 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m(ok)m(e)h(Bash,)f
+(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 4937
+y Fs(3.5)68 b(Shell)45 b(Expansions)150 5096 y Fu(Expansion)27
+b(is)i(p)s(erformed)d(on)i(the)g(command)g(line)h(after)f(it)h(has)f(b)
+s(een)f(split)h(in)m(to)i Ft(token)p Fu(s.)38 b(There)28
+b(are)150 5206 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225
+5340 y Fq(\017)60 b Fu(brace)31 b(expansion)p eop end
+%%Page: 23 29
+TeXDict begin 23 28 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(23)225 299
+y Fq(\017)60 b Fu(tilde)31 b(expansion)225 436 y Fq(\017)60
+b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225
+574 y Fq(\017)60 b Fu(command)30 b(substitution)225 711
+y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 849 y
+Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 986 y Fq(\017)60
+b Fu(\014lename)31 b(expansion)275 1155 y(The)24 b(order)h(of)h
+(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g
+(parameter)g(and)f(v)-5 b(ariable)26 b(ex-)150 1264 y(pansion,)j
+(arithmetic)i(expansion,)f(and)f(command)g(substitution)g(\(done)g(in)h
+(a)f(left-to-righ)m(t)k(fashion\);)150 1374 y(w)m(ord)d(splitting;)h
+(and)f(\014lename)h(expansion.)275 1515 y(On)42 b(systems)h(that)h(can)
+g(supp)s(ort)e(it,)47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m
+(v)-5 b(ailable:)69 b Fr(pro)s(cess)150 1624 y(substitution)p
Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g
(tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150
-4854 y(metic)d(expansion)g(and)e(command)i(substitution.)275
-4987 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
+1734 y(metic)d(expansion)g(and)e(command)i(substitution.)275
+1874 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m
(haracters)h(presen)m(t)e(in)g(the)g(original)i(w)m(ord)e(are)150
-5097 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g
+1984 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
-5230 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e
+2124 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e
(\014lename)h(expansion)f(can)h(increase)g(the)g(n)m(um)m(b)s(er)150
-5340 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g
+2234 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g
(expand)g(a)g(single)h(w)m(ord)f(to)h(a)f(single)h(w)m(ord.)38
-b(The)24 b(only)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(exceptions)26 b(to)f(this)g(are)g(the)g(expansions)g(of)g
-Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f(3.4.2)i([Sp)s(ecial)e
-(P)m(arameters],)150 408 y(page)31 b(21\),)h(and)e Ft("${)p
-Fj(name)p Ft([@]}")d Fu(and)i Ft(${)p Fj(name)p Ft([*]})f
-Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g(page)g(94\).)275
-537 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(34\))h(is)150 647 y(p)s(erformed.)150 834
-y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 981 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
-1090 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(32\),)150
-1200 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 1310 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 1419
-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 1529 y(pre\014xed)28
+b(The)24 b(only)150 2344 y(exceptions)i(to)f(this)g(are)g(the)g
+(expansions)g(of)g Ft("$@")f Fu(and)g Ft($*)g Fu(\(see)i(Section)f
+(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)150 2453 y(page)31
+b(21\),)h(and)e Ft("${)p Fj(name)p Ft([@]}")d Fu(and)i
+Ft(${)p Fj(name)p Ft([*]})f Fu(\(see)j(Section)h(6.7)f([Arra)m(ys],)g
+(page)g(95\).)275 2594 y(After)41 b(all)i(expansions,)h
+Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m
+(v)-5 b(al],)47 b(page)42 b(35\))h(is)150 2703 y(p)s(erformed.)150
+2908 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3055 y
+Fu(Brace)32 b(expansion)f(is)f(a)i(mec)m(hanism)f(b)m(y)f(whic)m(h)h
+(arbitrary)f(strings)h(ma)m(y)g(b)s(e)f(generated.)43
+b(This)30 b(mec)m(h-)150 3165 y(anism)35 b(is)h(similar)f(to)h
+Fr(\014lename)g(expansion)f Fu(\(see)i(Section)f(3.5.8)h([Filename)g
+(Expansion],)f(page)g(33\),)150 3275 y(but)26 b(the)h(\014lenames)g
+(generated)h(need)f(not)g(exist.)40 b(P)m(atterns)28
+b(to)f(b)s(e)g(brace)g(expanded)f(tak)m(e)i(the)f(form)g(of)150
+3384 y(an)j(optional)h Fr(pream)m(ble)p Fu(,)g(follo)m(w)m(ed)g(b)m(y)f
+(either)g(a)h(series)f(of)g(comma-separated)i(strings)d(or)h(a)h
+(sequence)150 3494 y(expression)36 b(b)s(et)m(w)m(een)g(a)h(pair)e(of)i
+(braces,)g(follo)m(w)m(ed)h(b)m(y)e(an)g(optional)h Fr(p)s(ostscript)p
+Fu(.)57 b(The)36 b(pream)m(ble)g(is)150 3603 y(pre\014xed)28
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
-1638 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
-m(t.)275 1767 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
+3713 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ)
+m(t.)275 3853 y(Brace)37 b(expansions)f(ma)m(y)h(b)s(e)f(nested.)59
b(The)36 b(results)g(of)h(eac)m(h)g(expanded)f(string)g(are)h(not)g
-(sorted;)150 1876 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 2005 y Ft(bash$)46
-b(echo)h(a{d,c,b}e)390 2115 y(ade)g(ace)g(abe)275 2243
+(sorted;)150 3963 y(left)31 b(to)g(righ)m(t)g(order)f(is)g(preserv)m
+(ed.)41 b(F)-8 b(or)31 b(example,)390 4104 y Ft(bash$)46
+b(echo)h(a{d,c,b}e)390 4213 y(ade)g(ace)g(abe)275 4354
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 2353 y(or)42 b(single)h(c)m(haracters,)48
+b(either)g(in)m(tegers)150 4463 y(or)42 b(single)h(c)m(haracters,)48
b(and)41 b Fr(incr)p Fu(,)46 b(an)c(optional)i(incremen)m(t,)i(is)c(an)
-h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 2462
+h(in)m(teger.)78 b(When)42 b(in)m(tegers)i(are)150 4573
y(supplied,)f(the)f(expression)f(expands)f(to)i(eac)m(h)h(n)m(um)m(b)s
(er)d(b)s(et)m(w)m(een)i Fr(x)47 b Fu(and)41 b Fr(y)p
-Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 2572 y(in)m(tegers)33
+Fu(,)j(inclusiv)m(e.)75 b(Supplied)150 4682 y(in)m(tegers)33
b(ma)m(y)e(b)s(e)g(pre\014xed)f(with)h(`)p Ft(0)p Fu(')h(to)g(force)g
(eac)m(h)g(term)g(to)g(ha)m(v)m(e)g(the)g(same)g(width.)42
-b(When)31 b(either)150 2681 y Fr(x)43 b Fu(or)36 b Fr(y)44
+b(When)31 b(either)150 4792 y Fr(x)43 b Fu(or)36 b Fr(y)44
b Fu(b)s(egins)36 b(with)g(a)h(zero,)i(the)e(shell)g(attempts)g(to)g
(force)g(all)h(generated)f(terms)g(to)g(con)m(tain)h(the)150
-2791 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h
+4902 y(same)e(n)m(um)m(b)s(er)e(of)i(digits,)i(zero-padding)d(where)h
(necessary)-8 b(.)57 b(When)35 b(c)m(haracters)i(are)f(supplied,)g(the)
-150 2901 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g
+150 5011 y(expression)24 b(expands)g(to)h(eac)m(h)h(c)m(haracter)g
(lexicographically)h(b)s(et)m(w)m(een)e Fr(x)30 b Fu(and)24
-b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 3010
+b Fr(y)p Fu(,)i(inclusiv)m(e,)h(using)d(the)150 5121
y(default)32 b(C)g(lo)s(cale.)48 b(Note)34 b(that)f(b)s(oth)e
Fr(x)39 b Fu(and)31 b Fr(y)40 b Fu(m)m(ust)32 b(b)s(e)g(of)g(the)h
(same)f(t)m(yp)s(e.)47 b(When)32 b(the)g(incremen)m(t)150
-3120 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s
+5230 y(is)d(supplied,)g(it)h(is)f(used)f(as)i(the)f(di\013erence)h(b)s
(et)m(w)m(een)g(eac)m(h)g(term.)41 b(The)29 b(default)g(incremen)m(t)h
-(is)f(1)h(or)f(-1)150 3229 y(as)i(appropriate.)275 3358
+(is)f(1)h(or)f(-1)150 5340 y(as)i(appropriate.)p eop
+end
+%%Page: 24 30
+TeXDict begin 24 29 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(24)275 299
y(Brace)36 b(expansion)g(is)f(p)s(erformed)f(b)s(efore)h(an)m(y)h
(other)g(expansions,)h(and)e(an)m(y)g(c)m(haracters)i(sp)s(ecial)150
-3467 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f
+408 y(to)32 b(other)g(expansions)g(are)g(preserv)m(ed)f(in)h(the)f
(result.)45 b(It)32 b(is)g(strictly)g(textual.)46 b(Bash)32
-b(do)s(es)f(not)h(apply)150 3577 y(an)m(y)27 b(syn)m(tactic)i(in)m
+b(do)s(es)f(not)h(apply)150 518 y(an)m(y)27 b(syn)m(tactic)i(in)m
(terpretation)g(to)f(the)f(con)m(text)i(of)e(the)g(expansion)g(or)g
-(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 3706
+(the)h(text)g(b)s(et)m(w)m(een)f(the)h(braces.)275 656
y(A)h(correctly-formed)i(brace)f(expansion)f(m)m(ust)h(con)m(tain)h
(unquoted)e(op)s(ening)g(and)g(closing)i(braces,)150
-3815 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5
+766 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 3925 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
-4053 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
+(formed)150 875 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275
+1013 y(A)25 b Fi({)h Fu(or)f(`)p Ft(,)p Fu(')g(ma)m(y)h(b)s(e)f(quoted)
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 4163 y(expression.)51
+(considered)g(part)g(of)h(a)g(brace)150 1123 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 4272 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g
+150 1232 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g
(brace)h(expansion)f(un)m(til)g(the)h(closing)h(`)p Ft(})p
-Fu('..)275 4401 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h
+Fu('.)275 1370 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h
(shorthand)f(when)g(the)h(common)g(pre\014x)f(of)h(the)g(strings)g(to)
-150 4511 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 4639 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
-(ew,)o(dist)o(,bug)o(s})275 4768 y Fu(or)390 4896 y Ft(chown)g(root)h
+150 1480 y(b)s(e)f(generated)h(is)g(longer)g(than)f(in)g(the)g(ab)s(o)m
+(v)m(e)i(example:)390 1618 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o
+(ew,)o(dist)o(,bug)o(s})275 1756 y Fu(or)390 1894 y Ft(chown)g(root)h
(/usr/{ucb/{ex,edit},lib/)o({ex?)o(.?*,)o(how)o(_ex})o(})150
-5083 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 5230 y
+2097 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2243 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 5340 y(unquoted)24 b(slash)g(\(or)h(all)h(c)m
+d(to)j(the)f(\014rst)150 2353 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(.)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(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
-408 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
+(considered)g(a)g Fr(tilde-pre\014x)p Fu(.)150 2463 y(If)38
+b(none)g(of)g(the)h(c)m(haracters)g(in)f(the)h(tilde-pre\014x)f(are)h
+(quoted,)h(the)f(c)m(haracters)h(in)d(the)i(tilde-pre\014x)150
+2572 y(follo)m(wing)28 b(the)g(tilde)f(are)h(treated)g(as)f(a)g(p)s
(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 518 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 628 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 737 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 874 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
+(is)g(the)g(n)m(ull)g(string,)150 2682 y(the)35 b(tilde)g(is)g
+(replaced)g(with)f(the)h(v)-5 b(alue)35 b(of)g(the)g
+Ft(HOME)e Fu(shell)i(v)-5 b(ariable.)54 b(If)34 b Ft(HOME)g
+Fu(is)h(unset,)g(the)g(home)150 2791 y(directory)e(of)g(the)f(user)g
+(executing)i(the)e(shell)h(is)f(substituted)g(instead.)47
+b(Otherwise,)33 b(the)g(tilde-pre\014x)150 2901 y(is)d(replaced)h(with)
+f(the)h(home)f(directory)h(asso)s(ciated)h(with)e(the)h(sp)s(eci\014ed)
+e(login)j(name.)275 3039 y(If)g(the)h(tilde-pre\014x)f(is)h(`)p
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 984 y(the)31 b(tilde-pre\014x)f(is)g(`)p Ft(~-)p
+b(If)150 3149 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 1121 y(If)f(the)h(c)m(haracters)h(follo)m(wing)h(the)
+(substituted.)275 3287 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 1230 y(pre\014xed)22
+(er)d Fr(N)p Fu(,)j(optionally)150 3396 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 1340 y(directory)36 b(stac)m(k,)i(as)e(it)
+(elemen)m(t)j(from)e(the)150 3506 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 1450 y(follo)m(wing)40 b(tilde)f(in)g(the)f(tilde-pre\014x)h(as)g
+150 3615 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 1559 y(page)c(96\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans)
+(k],)150 3725 y(page)c(97\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans)
e(the)h(tilde,)h(consists)f(of)g(a)f(n)m(um)m(b)s(er)f(without)i(a)f
-(leading)h(`)p Ft(+)p Fu(')g(or)150 1669 y(`)p Ft(-)p
-Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 1806 y(If)e(the)i(login)
+(leading)h(`)p Ft(+)p Fu(')g(or)150 3834 y(`)p Ft(-)p
+Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 3972 y(If)e(the)i(login)
g(name)g(is)f(in)m(v)-5 b(alid,)31 b(or)g(the)f(tilde)h(expansion)f
(fails,)i(the)e(w)m(ord)g(is)h(left)g(unc)m(hanged.)275
-1943 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m
+4110 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m
(k)m(ed)j(for)d(unquoted)g(tilde-pre\014xes)h(immediately)g(follo)m
-(wing)150 2052 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p
+(wing)150 4220 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p
Ft(=)p Fu('.)54 b(In)34 b(these)h(cases,)i(tilde)e(expansion)g(is)g
(also)h(p)s(erformed.)52 b(Consequen)m(tly)-8 b(,)37
-b(one)150 2162 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g
+b(one)150 4330 y(ma)m(y)29 b(use)e(\014lenames)h(with)g(tildes)g(in)g
(assignmen)m(ts)g(to)h Ft(PATH)p Fu(,)f Ft(MAILPATH)p
Fu(,)e(and)h Ft(CDPATH)p Fu(,)g(and)h(the)g(shell)150
-2271 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 2408
+4439 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 4577
y(The)29 b(follo)m(wing)j(table)g(sho)m(ws)e(ho)m(w)g(Bash)h(treats)g
-(unquoted)e(tilde-pre\014xes:)150 2572 y Ft(~)432 b Fu(The)30
-b(v)-5 b(alue)31 b(of)f Ft($HOME)150 2733 y(~/foo)240
-b($HOME/foo)150 2895 y(~fred/foo)630 3005 y Fu(The)30
+(unquoted)e(tilde-pre\014xes:)150 4742 y Ft(~)432 b Fu(The)30
+b(v)-5 b(alue)31 b(of)f Ft($HOME)150 4905 y(~/foo)240
+b($HOME/foo)150 5068 y(~fred/foo)630 5177 y Fu(The)30
b(sub)s(directory)f Ft(foo)h Fu(of)g(the)h(home)f(directory)h(of)g(the)
-f(user)g Ft(fred)150 3167 y(~+/foo)192 b($PWD/foo)150
-3329 y(~-/foo)g(${OLDPWD-'~-'}/foo)150 3491 y(~)p Fj(N)384
+f(user)g Ft(fred)150 5340 y(~+/foo)192 b($PWD/foo)p eop
+end
+%%Page: 25 31
+TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)150 299
+y Ft(~-/foo)192 b(${OLDPWD-'~-'}/foo)150 471 y(~)p Fj(N)384
b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m(ed)h(b)m
-(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3653 y Ft(~+)p
+(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 644 y Ft(~+)p
Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g(displa)m(y)m
-(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 3814
-y Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g
+(ed)h(b)m(y)f(`)p Ft(dirs)g(+)p Fj(N)p Fu(')150 816 y
+Ft(~-)p Fj(N)336 b Fu(The)30 b(string)g(that)h(w)m(ould)f(b)s(e)g
(displa)m(y)m(ed)h(b)m(y)f(`)p Ft(dirs)g(-)p Fj(N)p Fu(')275
-3978 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m
-(ords)e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41
-b(as-)150 4087 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m
-(arameters],)k(page)d(19\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m
-(ts)150 4197 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h
+995 y(Bash)40 b(also)h(p)s(erforms)e(tilde)h(expansion)g(on)h(w)m(ords)
+e(satisfying)i(the)f(conditions)h(of)f(v)-5 b(ariable)41
+b(as-)150 1105 y(signmen)m(ts)f(\(see)h(Section)g(3.4)g([Shell)f(P)m
+(arameters],)k(page)d(20\))g(when)e(they)h(app)s(ear)f(as)i(argumen)m
+(ts)150 1215 y(to)c(simple)f(commands.)57 b(Bash)36 b(do)s(es)f(not)h
(do)g(this,)i(except)f(for)e(the)h Fr(declaration)i Fu(commands)d
-(listed)150 4306 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g
-Fu(mo)s(de.)150 4508 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f
-(Expansion)150 4655 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m
+(listed)150 1324 y(ab)s(o)m(v)m(e,)d(when)d(in)h Fm(posix)g
+Fu(mo)s(de.)150 1536 y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f
+(Expansion)150 1683 y Fu(The)g(`)p Ft($)p Fu(')h(c)m(haracter)i(in)m
(tro)s(duces)d(parameter)h(expansion,)j(command)d(substitution,)i(or)e
-(arithmetic)150 4765 y(expansion.)d(The)22 b(parameter)h(name)f(or)g
+(arithmetic)150 1793 y(expansion.)d(The)22 b(parameter)h(name)f(or)g
(sym)m(b)s(ol)h(to)g(b)s(e)e(expanded)h(ma)m(y)h(b)s(e)f(enclosed)h(in)
-f(braces,)i(whic)m(h)150 4874 y(are)31 b(optional)g(but)f(serv)m(e)h
+f(braces,)i(whic)m(h)150 1903 y(are)31 b(optional)g(but)f(serv)m(e)h
(to)h(protect)f(the)g(v)-5 b(ariable)31 b(to)g(b)s(e)f(expanded)g(from)
-g(c)m(haracters)i(immediately)150 4984 y(follo)m(wing)g(it)f(whic)m(h)f
+g(c)m(haracters)i(immediately)150 2012 y(follo)m(wing)g(it)f(whic)m(h)f
(could)g(b)s(e)g(in)m(terpreted)h(as)f(part)h(of)f(the)h(name.)275
-5121 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f
+2160 y(When)44 b(braces)i(are)f(used,)j(the)e(matc)m(hing)g(ending)f
(brace)g(is)g(the)g(\014rst)g(`)p Ft(})p Fu(')g(not)g(escap)s(ed)h(b)m
-(y)f(a)150 5230 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)
+(y)f(a)150 2269 y(bac)m(kslash)40 b(or)f(within)g(a)g(quoted)g(string,)
j(and)c(not)i(within)e(an)h(em)m(b)s(edded)f(arithmetic)j(expansion,)
-150 5340 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)p
-eop end
-%%Page: 25 31
-TeXDict begin 25 30 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(25)275 299
-y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
+150 2379 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275
+2526 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p
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 408 y(substituted.)43
+b(alue)42 b(of)g Fr(parameter)48 b Fu(is)150 2636 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
-518 y(P)m(arameters],)e(page)f(19\))h(or)e(an)g(arra)m(y)h(reference)f
-(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(94\).)42
-b(The)29 b(braces)150 628 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 737 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
-885 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
+2746 y(P)m(arameters],)e(page)f(20\))h(or)e(an)g(arra)m(y)h(reference)f
+(\(see)i(Section)f(6.7)g([Arra)m(ys],)g(page)g(95\).)42
+b(The)29 b(braces)150 2855 y(are)j(required)g(when)f
+Fr(parameter)39 b Fu(is)32 b(a)h(p)s(ositional)f(parameter)h(with)f
+(more)g(than)g(one)g(digit,)i(or)e(when)150 2965 y Fr(parameter)37
+b Fu(is)31 b(follo)m(w)m(ed)h(b)m(y)e(a)h(c)m(haracter)h(that)f(is)f
+(not)h(to)g(b)s(e)f(in)m(terpreted)g(as)h(part)f(of)h(its)f(name.)275
+3112 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)42
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 995 y Fr(nameref)p
+Fr(parameter)42 b Fu(is)34 b(not)i(a)150 3222 y Fr(nameref)p
Fu(,)c(it)f(in)m(tro)s(duces)h(a)f(lev)m(el)i(of)f(indirection.)44
b(Bash)31 b(uses)g(the)g(v)-5 b(alue)32 b(formed)f(b)m(y)g(expanding)g
-(the)150 1104 y(rest)c(of)f Fr(parameter)33 b Fu(as)27
+(the)150 3332 y(rest)c(of)f Fr(parameter)33 b Fu(as)27
b(the)g(new)f Fr(parameter)7 b Fu(;)28 b(this)e(is)g(then)g(expanded)g
(and)g(that)h(v)-5 b(alue)27 b(is)f(used)g(in)g(the)150
-1214 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h
+3441 y(rest)33 b(of)f(the)h(expansion,)g(rather)g(than)f(the)h
(expansion)f(of)h(the)g(original)g Fr(parameter)p Fu(.)48
-b(This)32 b(is)g(kno)m(wn)150 1324 y(as)42 b Ft(indirect)28
+b(This)32 b(is)g(kno)m(wn)150 3551 y(as)42 b Ft(indirect)28
b(expansion)p Fu(.)71 b(The)41 b(v)-5 b(alue)41 b(is)h(sub)5
b(ject)41 b(to)h(tilde)g(expansion,)i(parameter)e(expansion,)150
-1433 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43
+3660 y(command)31 b(substitution,)g(and)g(arithmetic)h(expansion.)43
b(If)31 b Fr(parameter)38 b Fu(is)32 b(a)f(nameref,)h(this)f(expands)
-150 1543 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28
+150 3770 y(to)d(the)g(name)g(of)f(the)h(v)-5 b(ariable)28
b(referenced)g(b)m(y)f Fr(parameter)35 b Fu(instead)27
-b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 1652
+b(of)h(p)s(erforming)e(the)i(complete)h(in-)150 3880
y(direct)e(expansion.)39 b(The)25 b(exceptions)i(to)g(this)f(are)h(the)
f(expansions)g(of)g($)p Fi({)p Fu(!)p Fr(pre\014x)6 b
Fu(*)p Fi(})28 b Fu(and)d($)p Fi({)p Fu(!)p Fr(name)5
-b Fu([@])p Fi(})150 1762 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41
+b Fu([@])p Fi(})150 3989 y Fu(describ)s(ed)28 b(b)s(elo)m(w.)41
b(The)28 b(exclamation)j(p)s(oin)m(t)f(m)m(ust)f(immediately)h(follo)m
-(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 1872 y(in)m(tro)s(duce)i
-(indirection.)275 2019 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
+(w)g(the)g(left)f(brace)h(in)f(order)f(to)150 4099 y(in)m(tro)s(duce)i
+(indirection.)275 4246 y(In)39 b(eac)m(h)i(of)g(the)f(cases)h(b)s(elo)m
(w,)i Fr(w)m(ord)h Fu(is)c(sub)5 b(ject)40 b(to)h(tilde)f(expansion,)j
-(parameter)e(expansion,)150 2129 y(command)30 b(substitution,)g(and)g
-(arithmetic)i(expansion.)275 2277 y(When)h(not)h(p)s(erforming)e
+(parameter)e(expansion,)150 4356 y(command)30 b(substitution,)g(and)g
+(arithmetic)i(expansion.)275 4503 y(When)h(not)h(p)s(erforming)e
(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 2387 y(Bash)d(tests)h(for)e(a)i
+(w)i(\(e.g.,)i(`)p Ft(:-)p Fu('\),)150 4613 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 2496
+b(the)h(colon)f(results)g(in)g(a)g(test)h(only)150 4723
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 2606 y(for)36 b(b)s(oth)g
+(the)h(op)s(erator)g(tests)150 4832 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 2715 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150
-2895 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p
-Ft(})630 3005 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m
+(the)150 4942 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150
+5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p
+Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m
(ull,)f(the)h(expansion)f(of)g Fr(w)m(ord)k Fu(is)c(substituted.)40
-b(Otherwise,)630 3114 y(the)31 b(v)-5 b(alue)30 b(of)h
-Fr(parameter)37 b Fu(is)31 b(substituted.)150 3287 y
-Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 3397
-y Fu(If)i Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f
+b(Otherwise,)630 5340 y(the)31 b(v)-5 b(alue)30 b(of)h
+Fr(parameter)37 b Fu(is)31 b(substituted.)p eop end
+%%Page: 26 32
+TeXDict begin 26 31 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(26)150 299
+y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408
+y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f
(expansion)g(of)g Fr(w)m(ord)j Fu(is)d(assigned)g(to)h
-Fr(parameter)p Fu(.)630 3506 y(The)c(v)-5 b(alue)32 b(of)f
+Fr(parameter)p Fu(.)630 518 y(The)c(v)-5 b(alue)32 b(of)f
Fr(parameter)38 b Fu(is)31 b(then)g(substituted.)42 b(P)m(ositional)33
-b(parameters)e(and)f(sp)s(ecial)630 3616 y(parameters)h(ma)m(y)g(not)f
+b(parameters)e(and)f(sp)s(ecial)630 628 y(parameters)h(ma)m(y)g(not)f
(b)s(e)g(assigned)h(to)g(in)f(this)g(w)m(a)m(y)-8 b(.)150
-3789 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630
-3898 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h
+786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630
+896 y Fu(If)26 b Fr(parameter)33 b Fu(is)26 b(n)m(ull)g(or)g(unset,)h
(the)f(expansion)g(of)g Fr(w)m(ord)k Fu(\(or)c(a)h(message)g(to)g(that)
-f(e\013ect)630 4008 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h
+f(e\013ect)630 1005 y(if)i Fr(w)m(ord)j Fu(is)d(not)g(presen)m(t\))h
(is)f(written)g(to)h(the)f(standard)f(error)h(and)f(the)h(shell,)h(if)f
-(it)h(is)f(not)630 4118 y(in)m(teractiv)m(e,)33 b(exits.)42
+(it)h(is)f(not)630 1115 y(in)m(teractiv)m(e,)33 b(exits.)42
b(Otherwise,)30 b(the)h(v)-5 b(alue)31 b(of)f Fr(parameter)38
-b Fu(is)30 b(substituted.)150 4290 y Ft(${)p Fj(parameter)p
-Ft(:+)p Fj(word)p Ft(})630 4400 y Fu(If)35 b Fr(parameter)42
+b Fu(is)30 b(substituted.)150 1273 y Ft(${)p Fj(parameter)p
+Ft(:+)p Fj(word)p Ft(})630 1383 y Fu(If)35 b Fr(parameter)42
b Fu(is)36 b(n)m(ull)f(or)h(unset,)g(nothing)g(is)f(substituted,)i
-(otherwise)e(the)h(expansion)630 4510 y(of)31 b Fr(w)m(ord)i
-Fu(is)e(substituted.)150 4682 y Ft(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(})150 4792 y(${)p Fj(parameter)p
-Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 4902
+(otherwise)e(the)h(expansion)630 1492 y(of)31 b Fr(w)m(ord)i
+Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p
+Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p
+Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870
y Fu(This)f(is)h(referred)f(to)h(as)g(Substring)f(Expansion.)41
b(It)31 b(expands)f(to)h(up)f(to)h Fr(length)g Fu(c)m(harac-)630
-5011 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42
+1979 y(ters)k(of)g(the)h(v)-5 b(alue)35 b(of)g Fr(parameter)42
b Fu(starting)36 b(at)g(the)f(c)m(haracter)i(sp)s(eci\014ed)d(b)m(y)h
-Fr(o\013set)p Fu(.)55 b(If)630 5121 y Fr(parameter)32
+Fr(o\013set)p Fu(.)55 b(If)630 2089 y Fr(parameter)32
b Fu(is)26 b(`)p Ft(@)p Fu(',)g(an)f(indexed)g(arra)m(y)h(subscripted)e
(b)m(y)h(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(or)g(an)f(asso)s
-(ciativ)m(e)j(ar-)630 5230 y(ra)m(y)g(name,)h(the)f(results)g(di\013er)
+(ciativ)m(e)j(ar-)630 2198 y(ra)m(y)g(name,)h(the)f(results)g(di\013er)
g(as)g(describ)s(ed)f(b)s(elo)m(w.)40 b(If)28 b Fr(length)g
-Fu(is)g(omitted,)i(it)f(expands)630 5340 y(to)e(the)g(substring)f(of)g
+Fu(is)g(omitted,)i(it)f(expands)630 2308 y(to)e(the)g(substring)f(of)g
(the)h(v)-5 b(alue)27 b(of)g Fr(parameter)33 b Fu(starting)28
-b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)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 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 408 y(expressions)30 b(\(see)h(Section)g(6.5)h
-([Shell)e(Arithmetic],)i(page)f(92\).)630 555 y(If)39
+b(at)f(the)g(c)m(haracter)h(sp)s(eci\014ed)e(b)m(y)630
+2418 y Fr(o\013set)37 b Fu(and)d(extending)g(to)h(the)f(end)g(of)g(the)
+g(v)-5 b(alue.)53 b Fr(length)34 b Fu(and)g Fr(o\013set)j
+Fu(are)e(arithmetic)630 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h
+([Shell)e(Arithmetic],)i(page)f(93\).)630 2661 y(If)39
b Fr(o\013set)k Fu(ev)-5 b(aluates)41 b(to)f(a)g(n)m(um)m(b)s(er)f
(less)h(than)f(zero,)k(the)d(v)-5 b(alue)40 b(is)g(used)e(as)i(an)g
-(o\013set)630 664 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h
+(o\013set)630 2771 y(in)33 b(c)m(haracters)i(from)f(the)f(end)g(of)h
(the)g(v)-5 b(alue)34 b(of)g Fr(parameter)p Fu(.)51 b(If)33
-b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 774
+b Fr(length)h Fu(ev)-5 b(aluates)35 b(to)g(a)630 2880
y(n)m(um)m(b)s(er)23 b(less)h(than)g(zero,)j(it)d(is)h(in)m(terpreted)f
(as)g(an)h(o\013set)g(in)f(c)m(haracters)h(from)f(the)g(end)g(of)630
-883 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38
+2990 y(the)31 b(v)-5 b(alue)31 b(of)g Fr(parameter)38
b Fu(rather)30 b(than)h(a)g(n)m(um)m(b)s(er)f(of)g(c)m(haracters,)j
-(and)d(the)h(expansion)630 993 y(is)39 b(the)g(c)m(haracters)i(b)s(et)m
-(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67 b(Note)40
-b(that)g(a)g(negativ)m(e)h(o\013set)630 1103 y(m)m(ust)27
-b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h(least)g(one)f
-(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630 1212
-y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 1358
-y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f
-(expansion)g(on)g(parameters)h(and)630 1468 y(subscripted)29
-b(arra)m(ys:)630 1614 y Ft($)47 b(string=01234567890abcdefgh)630
-1724 y($)g(echo)g(${string:7})630 1833 y(7890abcdefgh)630
-1943 y($)g(echo)g(${string:7:0})630 2162 y($)g(echo)g(${string:7:2})630
-2271 y(78)630 2381 y($)g(echo)g(${string:7:-2})630 2491
-y(7890abcdef)630 2600 y($)g(echo)g(${string:)e(-7})630
-2710 y(bcdefgh)630 2819 y($)i(echo)g(${string:)e(-7:0})630
-3039 y($)i(echo)g(${string:)e(-7:2})630 3148 y(bc)630
-3258 y($)i(echo)g(${string:)e(-7:-2})630 3367 y(bcdef)630
-3477 y($)i(set)g(--)h(01234567890abcdefgh)630 3587 y($)f(echo)g(${1:7})
-630 3696 y(7890abcdefgh)630 3806 y($)g(echo)g(${1:7:0})630
-4025 y($)g(echo)g(${1:7:2})630 4134 y(78)630 4244 y($)g(echo)g
-(${1:7:-2})630 4354 y(7890abcdef)630 4463 y($)g(echo)g(${1:)g(-7})630
-4573 y(bcdefgh)630 4682 y($)g(echo)g(${1:)g(-7:0})630
-4902 y($)g(echo)g(${1:)g(-7:2})630 5011 y(bc)630 5121
-y($)g(echo)g(${1:)g(-7:-2})630 5230 y(bcdef)630 5340
-y($)g(array[0]=01234567890abcdef)o(gh)p eop end
+(and)d(the)h(expansion)630 3099 y(is)39 b(the)g(c)m(haracters)i(b)s(et)
+m(w)m(een)f Fr(o\013set)i Fu(and)c(that)i(result.)67
+b(Note)40 b(that)g(a)g(negativ)m(e)h(o\013set)630 3209
+y(m)m(ust)27 b(b)s(e)g(separated)g(from)g(the)g(colon)i(b)m(y)e(at)h
+(least)g(one)f(space)h(to)g(a)m(v)m(oid)h(b)s(eing)e(confused)630
+3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630
+3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f
+(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29
+b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630
+3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630
+4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630
+4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573
+y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630
+4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630
+5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630
+5340 y($)i(echo)g(${string:)e(-7:-2})p eop end
%%Page: 27 33
TeXDict begin 27 32 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(27)630 299
-y Ft($)47 b(echo)g(${array[0]:7})630 408 y(7890abcdefgh)630
-518 y($)g(echo)g(${array[0]:7:0})630 737 y($)g(echo)g(${array[0]:7:2})
-630 847 y(78)630 956 y($)g(echo)g(${array[0]:7:-2})630
-1066 y(7890abcdef)630 1176 y($)g(echo)g(${array[0]:)e(-7})630
-1285 y(bcdefgh)630 1395 y($)i(echo)g(${array[0]:)e(-7:0})630
-1614 y($)i(echo)g(${array[0]:)e(-7:2})630 1724 y(bc)630
-1833 y($)i(echo)g(${array[0]:)e(-7:-2})630 1943 y(bcdef)630
-2071 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p
+y Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630
+518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737
+y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630
+1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630
+1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614
+y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630
+1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162
+y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630
+2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630
+2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g
+(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2})
+630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630
+3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630
+3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630
+3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630
+4171 y Fu(If)22 b Fr(parameter)30 b Fu(is)23 b(`)p Ft(@)p
Fu(',)i(the)e(result)g(is)g Fr(length)h Fu(p)s(ositional)f(parameters)h
-(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 2180 y(A)36
+(b)s(eginning)e(at)i Fr(o\013set)p Fu(.)630 4281 y(A)36
b(negativ)m(e)j Fr(o\013set)g Fu(is)e(tak)m(en)g(relativ)m(e)i(to)e
(one)g(greater)g(than)f(the)h(greatest)h(p)s(ositional)630
-2290 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5
+4390 y(parameter,)29 b(so)f(an)g(o\013set)h(of)f(-1)g(ev)-5
b(aluates)30 b(to)e(the)g(last)h(p)s(ositional)g(parameter.)40
-b(It)28 b(is)g(an)630 2399 y(expansion)i(error)g(if)h
+b(It)28 b(is)g(an)630 4500 y(expansion)i(error)g(if)h
Fr(length)f Fu(ev)-5 b(aluates)32 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i
-(than)f(zero.)630 2527 y(The)i(follo)m(wing)i(examples)f(illustrate)h
+(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
-2637 y(eters:)630 2765 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f
-(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 2874
-y($)g(echo)g(${@:7})630 2984 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h
-(g)f(h)630 3093 y($)g(echo)g(${@:7:0})630 3313 y($)g(echo)g(${@:7:2})
-630 3422 y(7)g(8)630 3532 y($)g(echo)g(${@:7:-2})630
-3641 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630
-3751 y($)g(echo)g(${@:)g(-7:2})630 3861 y(b)g(c)630 3970
-y($)g(echo)g(${@:0})630 4080 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h
-(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 4189 y($)f(echo)g(${@:0:2})
-630 4299 y(./bash)f(1)630 4408 y($)h(echo)g(${@:)g(-7:0})630
-4646 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
+4755 y(eters:)630 4902 y Ft($)47 b(set)g(--)h(1)f(2)g(3)h(4)f(5)h(6)f
+(7)h(8)f(9)h(0)f(a)h(b)f(c)g(d)h(e)f(f)h(g)f(h)630 5011
+y($)g(echo)g(${@:7})630 5121 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h(e)f(f)h
+(g)f(h)630 5230 y($)g(echo)g(${@:7:0})p eop end
+%%Page: 28 34
+TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299
+y Ft($)47 b(echo)g(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g
+(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630
+737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956
+y($)g(echo)g(${@:0})630 1066 y(./bash)f(1)i(2)f(3)g(4)h(5)f(6)h(7)f(8)h
+(9)f(0)h(a)f(b)h(c)f(d)g(e)h(f)f(g)h(h)630 1176 y($)f(echo)g(${@:0:2})
+630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630
+1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y)
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 4755 y(the)j Fr(length)g
+Ft(*)p Fu(',)h(the)e(result)g(is)630 1786 y(the)j Fr(length)g
Fu(mem)m(b)s(ers)f(of)h(the)f(arra)m(y)i(b)s(eginning)d(with)i
Ft(${)p Fj(parameter)p Ft([)p Fj(offset)p Ft(]})p Fu(.)60
-b(A)630 4865 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
+b(A)630 1896 y(negativ)m(e)33 b Fr(o\013set)g Fu(is)e(tak)m(en)h
(relativ)m(e)g(to)g(one)f(greater)g(than)g(the)f(maxim)m(um)h(index)f
-(of)h(the)630 4975 y(sp)s(eci\014ed)38 b(arra)m(y)-8
+(of)h(the)630 2005 y(sp)s(eci\014ed)38 b(arra)m(y)-8
b(.)65 b(It)38 b(is)g(an)h(expansion)f(error)f(if)i Fr(length)f
Fu(ev)-5 b(aluates)40 b(to)f(a)g(n)m(um)m(b)s(er)e(less)630
-5084 y(than)30 b(zero.)630 5212 y(These)23 b(examples)i(sho)m(w)e(ho)m
+2115 y(than)30 b(zero.)630 2287 y(These)23 b(examples)i(sho)m(w)e(ho)m
(w)h(y)m(ou)g(can)g(use)f(substring)f(expansion)i(with)f(indexed)g
-(arra)m(ys:)630 5340 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
-f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))p eop end
-%%Page: 28 34
-TeXDict begin 28 33 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(28)630 299
-y Ft($)47 b(echo)g(${array[@]:7})630 408 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f
-(d)h(e)f(f)h(g)f(h)630 518 y($)g(echo)g(${array[@]:7:2})630
-628 y(7)g(8)630 737 y($)g(echo)g(${array[@]:)e(-7:2})630
-847 y(b)i(c)630 956 y($)g(echo)g(${array[@]:)e(-7:-2})630
-1066 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
-1176 y($)g(echo)g(${array[@]:0})630 1285 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
-(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 1395
-y($)g(echo)g(${array[@]:0:2})630 1504 y(0)g(1)630 1614
-y($)g(echo)g(${array[@]:)e(-7:0})630 1855 y Fu(Substring)25
+(arra)m(ys:)630 2459 y Ft($)47 b(array=\(0)f(1)h(2)h(3)f(4)h(5)f(6)h(7)
+f(8)h(9)f(0)h(a)f(b)g(c)h(d)f(e)h(f)f(g)h(h\))630 2569
+y($)f(echo)g(${array[@]:7})630 2679 y(7)g(8)h(9)f(0)h(a)f(b)h(c)f(d)h
+(e)f(f)h(g)f(h)630 2788 y($)g(echo)g(${array[@]:7:2})630
+2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630
+3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630
+3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630
+3446 y($)g(echo)g(${array[@]:0})630 3555 y(0)g(1)h(2)f(3)h(4)f(5)h(6)f
+(7)h(8)f(9)h(0)f(a)g(b)h(c)f(d)h(e)f(f)h(g)f(h)630 3665
+y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884
+y($)g(echo)g(${array[@]:)e(-7:0})630 4166 y Fu(Substring)25
b(expansion)g(applied)h(to)h(an)f(asso)s(ciativ)m(e)j(arra)m(y)d(pro)s
-(duces)f(unde\014ned)f(results.)630 1987 y(Substring)32
+(duces)f(unde\014ned)f(results.)630 4338 y(Substring)32
b(indexing)i(is)f(zero-based)i(unless)e(the)h(p)s(ositional)g
-(parameters)g(are)g(used,)g(in)630 2096 y(whic)m(h)29
+(parameters)g(are)g(used,)g(in)630 4448 y(whic)m(h)29
b(case)i(the)f(indexing)g(starts)g(at)g(1)g(b)m(y)g(default.)41
b(If)29 b Fr(o\013set)k Fu(is)d(0,)g(and)f(the)h(p)s(ositional)630
-2206 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h
-(the)f(list.)150 2359 y Ft(${!)p Fj(prefix)p Ft(*})150
-2469 y(${!)p Fj(prefix)p Ft(@})630 2578 y Fu(Expands)24
+4557 y(parameters)h(are)f(used,)g Ft($0)g Fu(is)g(pre\014xed)g(to)h
+(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150
+4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24
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
-2688 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f
+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 2798 y(sion)35
+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
-2907 y(w)m(ord.)150 3061 y Ft(${!)p Fj(name)p Ft([@]})150
-3170 y(${!)p Fj(name)p Ft([*]})630 3280 y Fu(If)26 b
-Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)-5 b(ariable,)29
-b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)g(\(k)m(eys\))h
-(assigned)630 3389 y(in)c Fr(name)p Fu(.)39 b(If)24 b
-Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8 b(,)27
-b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24 b(set)h(and)f(n)m(ull)g
-(otherwise.)630 3499 y(When)39 b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f
-(the)i(expansion)f(app)s(ears)g(within)f(double)h(quotes,)k(eac)m(h)d
-(k)m(ey)630 3608 y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150
-3762 y Ft(${#)p Fj(parameter)p Ft(})630 3871 y Fu(The)40
-b(length)g(in)g(c)m(haracters)i(of)e(the)h(expanded)e(v)-5
-b(alue)41 b(of)f Fr(parameter)47 b Fu(is)40 b(substituted.)630
-3981 y(If)i Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
+5340 y(w)m(ord.)p eop end
+%%Page: 29 35
+TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)150 299
+y Ft(${!)p Fj(name)p Ft([@]})150 408 y(${!)p Fj(name)p
+Ft([*]})630 518 y Fu(If)26 b Fr(name)32 b Fu(is)27 b(an)f(arra)m(y)h(v)
+-5 b(ariable,)29 b(expands)d(to)h(the)g(list)g(of)g(arra)m(y)g(indices)
+g(\(k)m(eys\))h(assigned)630 628 y(in)c Fr(name)p Fu(.)39
+b(If)24 b Fr(name)30 b Fu(is)24 b(not)h(an)f(arra)m(y)-8
+b(,)27 b(expands)c(to)j(0)f(if)f Fr(name)30 b Fu(is)24
+b(set)h(and)f(n)m(ull)g(otherwise.)630 737 y(When)39
+b(`)p Ft(@)p Fu(')h(is)f(used)g(and)f(the)i(expansion)f(app)s(ears)g
+(within)f(double)h(quotes,)k(eac)m(h)d(k)m(ey)630 847
+y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011
+y Ft(${#)p Fj(parameter)p Ft(})630 1121 y Fu(The)40 b(length)g(in)g(c)m
+(haracters)i(of)e(the)h(expanded)e(v)-5 b(alue)41 b(of)f
+Fr(parameter)47 b Fu(is)40 b(substituted.)630 1230 y(If)i
+Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p
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 4091 y(parameters.)i(If)32
+(b)s(er)f(of)h(p)s(ositional)630 1340 y(parameters.)i(If)32
b Fr(parameter)38 b Fu(is)32 b(an)g(arra)m(y)g(name)g(subscripted)f(b)m
(y)g(`)p Ft(*)p Fu(')h(or)g(`)p Ft(@)p Fu(',)g(the)g(v)-5
-b(alue)630 4200 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
+b(alue)630 1450 y(substituted)30 b(is)h(the)g(n)m(um)m(b)s(er)e(of)i
(elemen)m(ts)i(in)d(the)h(arra)m(y)-8 b(.)43 b(If)30
-b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 4310
+b Fr(parameter)38 b Fu(is)31 b(an)f(indexed)630 1559
y(arra)m(y)37 b(name)g(subscripted)f(b)m(y)h(a)g(negativ)m(e)i(n)m(um)m
(b)s(er,)f(that)f(n)m(um)m(b)s(er)f(is)g(in)m(terpreted)i(as)630
-4419 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
+1669 y(relativ)m(e)47 b(to)g(one)e(greater)i(than)e(the)h(maxim)m(um)f
(index)g(of)g Fr(parameter)p Fu(,)50 b(so)c(negativ)m(e)630
-4529 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
+1778 y(indices)30 b(coun)m(t)h(bac)m(k)g(from)f(the)h(end)e(of)i(the)f
(arra)m(y)-8 b(,)32 b(and)e(an)g(index)g(of)g(-1)h(references)g(the)630
-4639 y(last)g(elemen)m(t.)150 4792 y Ft(${)p Fj(parameter)p
-Ft(#)p Fj(word)p Ft(})150 4902 y(${)p Fj(parameter)p
-Ft(##)p Fj(word)p Ft(})630 5011 y Fu(The)43 b Fr(w)m(ord)k
+1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p
+Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p
+Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)43 b Fr(w)m(ord)k
Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
-(according)f(to)h(the)630 5121 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
+(according)f(to)h(the)630 2381 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f
-(33\).)46 b(If)32 b(the)630 5230 y(pattern)37 b(matc)m(hes)h(the)f(b)s
+(33\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s
(eginning)f(of)h(the)g(expanded)f(v)-5 b(alue)38 b(of)f
-Fr(parameter)p Fu(,)i(then)e(the)630 5340 y(result)f(of)h(the)f
+Fr(parameter)p Fu(,)i(then)e(the)630 2600 y(result)f(of)h(the)f
(expansion)h(is)f(the)h(expanded)e(v)-5 b(alue)37 b(of)g
-Fr(parameter)43 b Fu(with)36 b(the)h(shortest)p eop end
-%%Page: 29 35
-TeXDict begin 29 34 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(29)630 299
+Fr(parameter)43 b Fu(with)36 b(the)h(shortest)630 2710
y(matc)m(hing)31 b(pattern)e(\(the)h(`)p Ft(#)p Fu(')g(case\))h(or)e
(the)h(longest)h(matc)m(hing)f(pattern)g(\(the)g(`)p
-Ft(##)p Fu(')g(case\))630 408 y(deleted.)49 b(If)32 b
-Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p
+Ft(##)p Fu(')g(case\))630 2819 y(deleted.)49 b(If)32
+b Fr(parameter)40 b Fu(is)33 b(`)p Ft(@)p Fu(')g(or)g(`)p
Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5 b(al)34 b(op)s(eration)g(is)
-f(applied)f(to)630 518 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f
+f(applied)f(to)630 2929 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f
(turn,)h(and)e(the)h(expansion)g(is)h(the)f(resultan)m(t)h(list.)61
-b(If)630 628 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
+b(If)630 3039 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5
b(ariable)32 b(subscripted)e(with)h(`)p Ft(@)p Fu(')g(or)h(`)p
-Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 737
+Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5 b(al)630 3148
y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e(of)h
(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630
-847 y(the)h(resultan)m(t)g(list.)150 993 y Ft(${)p Fj(parameter)p
-Ft(\045)p Fj(word)p Ft(})150 1103 y(${)p Fj(parameter)p
-Ft(\045\045)p Fj(word)p Ft(})630 1212 y Fu(The)43 b Fr(w)m(ord)k
-Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h(pattern)g(and)f(matc)m(hed)i
-(according)f(to)h(the)630 1322 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w)
-h(\(see)h(Section)g(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f
-(33\).)46 b(If)32 b(the)630 1431 y(pattern)25 b(matc)m(hes)h(If)f(the)g
-(pattern)g(matc)m(hes)i(a)e(trailing)h(p)s(ortion)f(of)g(the)g
-(expanded)f(v)-5 b(alue)630 1541 y(of)23 b Fr(parameter)p
-Fu(,)i(then)e(the)g(result)f(of)h(the)g(expansion)g(is)g(the)g(v)-5
-b(alue)23 b(of)g Fr(parameter)30 b Fu(with)23 b(the)630
-1650 y(shortest)35 b(matc)m(hing)h(pattern)f(\(the)g(`)p
-Ft(\045)p Fu(')g(case\))i(or)d(the)h(longest)i(matc)m(hing)e(pattern)g
-(\(the)630 1760 y(`)p Ft(\045\045)p Fu(')f(case\))i(deleted.)54
-b(If)34 b Fr(parameter)42 b Fu(is)35 b(`)p Ft(@)p Fu(')f(or)h(`)p
-Ft(*)p Fu(',)h(the)e(pattern)h(remo)m(v)-5 b(al)36 b(op)s(eration)f(is)
-630 1870 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
-(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630
-1979 y(list.)56 b(If)34 b Fr(parameter)42 b Fu(is)35
-b(an)g(arra)m(y)h(v)-5 b(ariable)36 b(subscripted)e(with)g(`)p
-Ft(@)p Fu(')i(or)f(`)p Ft(*)p Fu(',)i(the)e(pattern)630
-2089 y(remo)m(v)-5 b(al)44 b(op)s(eration)g(is)e(applied)h(to)h(eac)m
-(h)g(mem)m(b)s(er)e(of)h(the)g(arra)m(y)h(in)e(turn,)j(and)e(the)630
-2198 y(expansion)30 b(is)h(the)f(resultan)m(t)h(list.)150
-2345 y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p
-Fj(stri)o(ng)p Ft(})630 2454 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 2564 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
-2673 y(replaced)31 b(with)g Fr(string)p Fu(.)42 b(The)30
-b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the)f(rules)f
-(describ)s(ed)630 2783 y(b)s(elo)m(w)f(\(see)h(Section)g(3.5.8.1)h([P)m
-(attern)g(Matc)m(hing],)g(page)f(33\).)41 b(If)29 b Fr(pattern)g
-Fu(b)s(egins)f(with)630 2892 y(`)p Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g
-(of)f Fr(pattern)g Fu(are)h(replaced)f(with)g Fr(string)p
-Fu(.)69 b(Normally)41 b(only)f(the)h(\014rst)630 3002
+3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p
+Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p
+Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641
+y Fu(The)43 b Fr(w)m(ord)k Fu(is)d(expanded)f(to)h(pro)s(duce)f(a)h
+(pattern)g(and)f(matc)m(hed)i(according)f(to)h(the)630
+3751 y(rules)f(describ)s(ed)g(b)s(elo)m(w)h(\(see)h(Section)g(3.5.8.1)h
+([P)m(attern)f(Matc)m(hing],)51 b(page)45 b(33\).)85
+b(If)630 3861 y(the)43 b(pattern)g(matc)m(hes)h(a)g(trailing)g(p)s
+(ortion)e(of)h(the)g(expanded)g(v)-5 b(alue)43 b(of)g
+Fr(parameter)p Fu(,)630 3970 y(then)c(the)g(result)g(of)h(the)f
+(expansion)g(is)h(the)f(v)-5 b(alue)40 b(of)f Fr(parameter)46
+b Fu(with)39 b(the)h(shortest)630 4080 y(matc)m(hing)31
+b(pattern)e(\(the)h(`)p Ft(\045)p Fu(')g(case\))h(or)e(the)h(longest)h
+(matc)m(hing)f(pattern)g(\(the)g(`)p Ft(\045\045)p Fu(')g(case\))630
+4189 y(deleted.)49 b(If)32 b Fr(parameter)40 b Fu(is)33
+b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)h(the)f(pattern)g(remo)m(v)-5
+b(al)34 b(op)s(eration)g(is)f(applied)f(to)630 4299 y(eac)m(h)38
+b(p)s(ositional)g(parameter)g(in)f(turn,)h(and)e(the)h(expansion)g(is)h
+(the)f(resultan)m(t)h(list.)61 b(If)630 4408 y Fr(parameter)38
+b Fu(is)32 b(an)f(arra)m(y)h(v)-5 b(ariable)32 b(subscripted)e(with)h
+(`)p Ft(@)p Fu(')g(or)h(`)p Ft(*)p Fu(',)g(the)f(pattern)h(remo)m(v)-5
+b(al)630 4518 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m
+(b)s(er)e(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g
+(is)630 4628 y(the)h(resultan)m(t)g(list.)150 4792 y
+Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p Fj(stri)o(ng)p
+Ft(})630 4902 y Fu(The)37 b Fr(pattern)g Fu(is)g(expanded)g(to)h(pro)s
+(duce)e(a)h(pattern)g(just)g(as)h(in)e(\014lename)i(expansion.)630
+5011 y Fr(P)m(arameter)46 b Fu(is)38 b(expanded)f(and)g(the)i(longest)g
+(matc)m(h)g(of)f Fr(pattern)g Fu(against)h(its)f(v)-5
+b(alue)39 b(is)630 5121 y(replaced)31 b(with)g Fr(string)p
+Fu(.)42 b(The)30 b(matc)m(h)h(is)g(p)s(erformed)f(according)h(to)h(the)
+f(rules)f(describ)s(ed)630 5230 y(b)s(elo)m(w)f(\(see)h(Section)g
+(3.5.8.1)h([P)m(attern)g(Matc)m(hing],)g(page)f(33\).)41
+b(If)29 b Fr(pattern)g Fu(b)s(egins)f(with)630 5340 y(`)p
+Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g(of)f Fr(pattern)g
+Fu(are)h(replaced)f(with)g Fr(string)p Fu(.)69 b(Normally)41
+b(only)f(the)h(\014rst)p eop end
+%%Page: 30 36
+TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299
y(matc)m(h)28 b(is)f(replaced.)40 b(If)26 b Fr(pattern)h
Fu(b)s(egins)f(with)h(`)p Ft(#)p Fu(',)h(it)f(m)m(ust)g(matc)m(h)h(at)g
-(the)f(b)s(eginning)f(of)630 3112 y(the)32 b(expanded)f(v)-5
+(the)f(b)s(eginning)f(of)630 408 y(the)32 b(expanded)f(v)-5
b(alue)32 b(of)g Fr(parameter)p Fu(.)45 b(If)31 b Fr(pattern)h
Fu(b)s(egins)f(with)g(`)p Ft(\045)p Fu(',)i(it)f(m)m(ust)g(matc)m(h)g
-(at)630 3221 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5
+(at)630 518 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5
b(alue)24 b(of)g Fr(parameter)p Fu(.)39 b(If)24 b Fr(string)31
b Fu(is)24 b(n)m(ull,)i(matc)m(hes)f(of)f Fr(pattern)630
-3331 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i
+628 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i
Fr(pattern)e Fu(ma)m(y)h(b)s(e)f(omitted.)57 b(If)34
-b(the)i Ft(nocasematch)630 3440 y Fu(shell)31 b(option)h(\(see)g(the)g
+b(the)i Ft(nocasematch)630 737 y Fu(shell)31 b(option)h(\(see)g(the)g
(description)f(of)g Ft(shopt)f Fu(in)h(Section)h(4.3.2)h([The)e(Shopt)f
-(Builtin],)630 3550 y(page)45 b(65\))h(is)f(enabled,)j(the)d(matc)m(h)g
+(Builtin],)630 847 y(page)45 b(66\))h(is)f(enabled,)j(the)d(matc)m(h)g
(is)g(p)s(erformed)e(without)i(regard)f(to)h(the)g(case)h(of)630
-3660 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b
+956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b
Fr(parameter)42 b Fu(is)36 b(`)p Ft(@)p Fu(')f(or)g(`)p
Ft(*)p Fu(',)h(the)g(substitution)e(op)s(eration)i(is)630
-3769 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
+1066 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e
(turn,)h(and)f(the)h(expansion)g(is)f(the)h(resultan)m(t)630
-3879 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22
+1176 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22
b(an)f(arra)m(y)h(v)-5 b(ariable)22 b(subscripted)e(with)h(`)p
Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)j(the)d(substitution)630
-3988 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e
+1285 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e
(of)h(the)g(arra)m(y)g(in)f(turn,)g(and)g(the)h(expansion)g(is)630
-4098 y(the)h(resultan)m(t)g(list.)150 4244 y Ft(${)p
-Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 4354 y(${)p
-Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 4463 y(${)p
-Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 4573 y(${)p
-Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 4682 y Fu(This)36
+1395 y(the)h(resultan)m(t)g(list.)150 1551 y Ft(${)p
+Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1661 y(${)p
+Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1771 y(${)p
+Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1880 y(${)p
+Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1990 y Fu(This)36
b(expansion)g(mo)s(di\014es)g(the)g(case)i(of)f(alphab)s(etic)g(c)m
-(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 4792
+(haracters)h(in)e Fr(parameter)p Fu(.)59 b(The)630 2099
y Fr(pattern)33 b Fu(is)g(expanded)e(to)j(pro)s(duce)d(a)j(pattern)e
(just)g(as)h(in)g(\014lename)g(expansion.)47 b(Eac)m(h)630
-4902 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31
+2209 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 5011 y(it)j(matc)m(hes)h(the)g
+Fr(pattern)p Fu(,)e(and,)g(if)630 2318 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 5121 y(to)f(matc)m(h)g(more)f
+b(pattern)g(should)f(not)h(attempt)630 2428 y(to)f(matc)m(h)g(more)f
(than)g(one)g(c)m(haracter.)44 b(The)30 b(`)p Ft(^)p
Fu(')i(op)s(erator)f(con)m(v)m(erts)h(lo)m(w)m(ercase)i(letters)630
-5230 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p
+2538 y(matc)m(hing)i Fr(pattern)f Fu(to)h(upp)s(ercase;)h(the)e(`)p
Ft(,)p Fu(')g(op)s(erator)g(con)m(v)m(erts)i(matc)m(hing)f(upp)s
-(ercase)630 5340 y(letters)e(to)f(lo)m(w)m(ercase.)50
+(ercase)630 2647 y(letters)e(to)f(lo)m(w)m(ercase.)50
b(The)32 b(`)p Ft(^^)p Fu(')h(and)f(`)p Ft(,,)p Fu(')g(expansions)h
-(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)p eop
-end
-%%Page: 30 36
-TeXDict begin 30 35 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(30)630 299
-y(acter)29 b(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 408 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 518 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 628 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 737 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
-847 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 956 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 1120
-y Ft(${)p Fj(parameter)p Ft(@)p Fj(operator)p Ft(})630
-1230 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 1340 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
-1449 y Fu(is)j(a)h(single)g(letter:)630 1613 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
+(con)m(v)m(ert)h(eac)m(h)g(matc)m(hed)f(c)m(har-)630
+2757 y(acter)c(in)f(the)h(expanded)e(v)-5 b(alue;)30
+b(the)e(`)p Ft(^)p Fu(')g(and)g(`)p Ft(,)p Fu(')g(expansions)g(matc)m
+(h)h(and)f(con)m(v)m(ert)i(only)630 2866 y(the)37 b(\014rst)g(c)m
+(haracter)i(in)e(the)g(expanded)g(v)-5 b(alue.)61 b(If)37
+b Fr(pattern)g Fu(is)h(omitted,)i(it)e(is)f(treated)630
+2976 y(lik)m(e)h(a)f(`)p Ft(?)p Fu(',)i(whic)m(h)d(matc)m(hes)i(ev)m
+(ery)f(c)m(haracter.)61 b(If)37 b Fr(parameter)43 b Fu(is)37
+b(`)p Ft(@)p Fu(')g(or)f(`)p Ft(*)p Fu(',)j(the)e(case)630
+3086 y(mo)s(di\014cation)29 b(op)s(eration)f(is)g(applied)g(to)h(eac)m
+(h)h(p)s(ositional)f(parameter)f(in)g(turn,)g(and)g(the)630
+3195 y(expansion)38 b(is)g(the)g(resultan)m(t)h(list.)65
+b(If)37 b Fr(parameter)46 b Fu(is)38 b(an)g(arra)m(y)g(v)-5
+b(ariable)39 b(subscripted)630 3305 y(with)26 b(`)p Ft(@)p
+Fu(')f(or)h(`)p Ft(*)p Fu(',)h(the)f(case)h(mo)s(di\014cation)f(op)s
+(eration)h(is)e(applied)h(to)h(eac)m(h)g(mem)m(b)s(er)e(of)h(the)630
+3414 y(arra)m(y)31 b(in)f(turn,)f(and)h(the)h(expansion)f(is)g(the)h
+(resultan)m(t)g(list.)150 3571 y Ft(${)p Fj(parameter)p
+Ft(@)p Fj(operator)p Ft(})630 3680 y Fu(The)d(expansion)h(is)f(either)h
+(a)g(transformation)g(of)g(the)g(v)-5 b(alue)29 b(of)g
+Fr(parameter)35 b Fu(or)29 b(informa-)630 3790 y(tion)e(ab)s(out)f
+Fr(parameter)33 b Fu(itself,)28 b(dep)s(ending)c(on)i(the)h(v)-5
+b(alue)26 b(of)h Fr(op)s(erator)p Fu(.)39 b(Eac)m(h)27
+b Fr(op)s(erator)630 3900 y Fu(is)j(a)h(single)g(letter:)630
+4056 y Ft(U)432 b Fu(The)31 b(expansion)g(is)g(a)g(string)h(that)f(is)h
+(the)f(v)-5 b(alue)32 b(of)f Fr(parameter)38 b Fu(with)31
+b(lo)m(w-)1110 4166 y(ercase)g(alphab)s(etic)g(c)m(haracters)h(con)m(v)
+m(erted)g(to)f(upp)s(ercase.)630 4322 y Ft(u)432 b Fu(The)34
+b(expansion)g(is)g(a)h(string)f(that)h(is)g(the)f(v)-5
+b(alue)35 b(of)f Fr(parameter)42 b Fu(with)34 b(the)1110
+4432 y(\014rst)c(c)m(haracter)i(con)m(v)m(erted)f(to)h(upp)s(ercase,)d
+(if)i(it)g(is)f(alphab)s(etic.)630 4589 y Ft(L)432 b
+Fu(The)33 b(expansion)h(is)g(a)g(string)g(that)h(is)f(the)g(v)-5
+b(alue)34 b(of)g Fr(parameter)41 b Fu(with)34 b(up-)1110
+4698 y(p)s(ercase)c(alphab)s(etic)h(c)m(haracters)h(con)m(v)m(erted)g
+(to)f(lo)m(w)m(ercase.)630 4855 y Ft(Q)432 b Fu(The)30
+b(expansion)h(is)g(a)g(string)f(that)i(is)f(the)g(v)-5
b(alue)31 b(of)g Fr(parameter)37 b Fu(quoted)31 b(in)1110
-1723 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630
-1887 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h
+4964 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i(input.)630
+5121 y Ft(E)432 b Fu(The)27 b(expansion)g(is)g(a)g(string)h(that)f(is)h
(the)f(v)-5 b(alue)28 b(of)f Fr(parameter)34 b Fu(with)27
-b(bac)m(k-)1110 1996 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g
+b(bac)m(k-)1110 5230 y(slash)e(escap)s(e)h(sequences)f(expanded)g(as)g
(with)g(the)h Ft($'...)o(')e Fu(quoting)i(mec)m(h-)1110
-2106 y(anism.)630 2270 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 2379 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 2489 y(the)31 b(Prompt],)f(page)h(97\).)630
-2653 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
-2763 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 2872
-y(its)31 b(attributes)g(and)e(v)-5 b(alue.)630 3036 y
+5340 y(anism.)p eop end
+%%Page: 31 37
+TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)630 299
+y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g(string)g(that)g(is)g(the)
+g(result)g(of)g(expanding)f(the)h(v)-5 b(alue)24 b(of)1110
+408 y Fr(parameter)31 b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f
+(string)h(\(see)g(Section)h(6.9)g([Con)m(trolling)1110
+518 y(the)31 b(Prompt],)f(page)h(98\).)630 676 y Ft(A)432
+b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)g(of)h(an)f
+(assignmen)m(t)h(statemen)m(t)h(or)1110 785 y Ft(declare)h
+Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 b(will)e(recreate)i
+Fr(parameter)36 b Fu(with)1110 895 y(its)31 b(attributes)g(and)e(v)-5
+b(alue.)630 1052 y Ft(K)432 b Fu(Pro)s(duces)33 b(a)i(p)s
+(ossibly-quoted)e(v)m(ersion)i(of)f(the)h(v)-5 b(alue)34
+b(of)h Fr(parameter)p Fu(,)g(ex-)1110 1162 y(cept)46
+b(that)h(it)f(prin)m(ts)f(the)h(v)-5 b(alues)47 b(of)f(indexed)f(and)g
+(asso)s(ciativ)m(e)k(arra)m(ys)1110 1271 y(as)37 b(a)g(sequence)f(of)h
+(quoted)g(k)m(ey-v)-5 b(alue)38 b(pairs)e(\(see)h(Section)h(6.7)f
+([Arra)m(ys],)1110 1381 y(page)31 b(95\).)630 1539 y
Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f(consisting)h(of)g
(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h Fr(pa-)1110
-3146 y(rameter)7 b Fu('s)31 b(attributes.)630 3310 y(If)e
+1648 y(rameter)7 b Fu('s)31 b(attributes.)630 1806 y(If)e
Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p
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 3419 y(in)24 b(turn,)g(and)f(the)h
+(ositional)f(parameter)630 1915 y(in)24 b(turn,)g(and)f(the)h
(expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23
b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630
-3529 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p
+2025 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p
Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m
-(b)s(er)e(of)h(the)f(arra)m(y)630 3639 y(in)30 b(turn,)g(and)f(the)i
-(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 3775
-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
-3885 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 4089 y
-Fk(3.5.4)63 b(Command)41 b(Substitution)150 4236 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 4345 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 4484 y Ft($\()p Fj(command)p Ft(\))150
-4623 y Fu(or)390 4763 y Ft(`)p Fj(command)p Ft(`)150
-4902 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i
+(b)s(er)e(of)h(the)f(arra)m(y)630 2134 y(in)30 b(turn,)g(and)f(the)i
+(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 2268
+y(The)c(result)h(of)g(the)f(expansion)h(is)g(sub)5 b(ject)27
+b(to)h(w)m(ord)g(splitting)g(and)f(\014lename)h(expansion)630
+2378 y(as)j(describ)s(ed)e(b)s(elo)m(w.)150 2575 y Fk(3.5.4)63
+b(Command)41 b(Substitution)150 2722 y Fu(Command)f(substitution)h
+(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h(replace)g(the)g
+(command)f(itself.)150 2831 y(Command)29 b(substitution)h(o)s(ccurs)h
+(when)e(a)i(command)f(is)g(enclosed)h(as)g(follo)m(ws:)390
+2965 y Ft($\()p Fj(command)p Ft(\))150 3098 y Fu(or)390
+3232 y Ft(`)p Fj(command)p Ft(`)150 3366 y Fu(Bash)20
+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 5011 y(the)40 b(command)g(substitution)f(with)h(the)g
+(replacing)150 3475 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
-5121 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g
+3585 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 5230 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g
+150 3694 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 5340
-y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)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)275 299
-y(When)33 b(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g
+(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 3804
+y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275
+3937 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g
(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150
-408 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p
+4047 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
-518 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72
+4157 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 628 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 762 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 872 y(the)31 b(inner)e(bac)m(kquotes)j
-(with)e(bac)m(kslashes.)275 1007 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 1116 y(are)i(not)f(p)s(erformed)f(on)h(the)
-h(results.)150 1316 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150
-1463 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5
+Fu(form,)43 b(all)150 4266 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the)
+f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h
+(treated)g(sp)s(ecially)-8 b(.)275 4400 y(Command)22
+b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8
+b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e)
+150 4509 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275
+4643 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f
+(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150
+4753 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150
+4950 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 5097
+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 1572 y(of)31 b(the)f(result.)41 b(The)30
-b(format)g(for)g(arithmetic)i(expansion)e(is:)390 1707
-y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 1841 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 1951
-y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8
+(substitution)150 5206 y(of)31 b(the)f(result.)41 b(The)30
+b(format)g(for)g(arithmetic)i(expansion)e(is:)390 5340
+y Ft($\(\()47 b Fj(expression)e Ft(\)\))p eop end
+%%Page: 32 38
+TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)275 299
+y(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)
+f(double)h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150
+408 y(the)k(paren)m(theses)g(is)g(not)g(treated)h(sp)s(ecially)-8
b(.)65 b(All)38 b(tok)m(ens)h(in)f(the)g(expression)f(undergo)g
-(parameter)150 2061 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 2170
-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 2305 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 2415 y(Arithmetic],)32 b(page)f(92\).)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
-2524 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s
-(ccurs.)150 2724 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150
-2870 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 2980 y(It)d(tak)m(es)i(the)f(form)f(of)390
-3115 y Ft(<\()p Fj(list)p Ft(\))150 3249 y Fu(or)390
-3384 y Ft(>\()p Fj(list)p Ft(\))150 3519 y Fu(The)e(pro)s(cess)h
+(parameter)150 518 y(and)26 b(v)-5 b(ariable)28 b(expansion,)g(command)
+e(substitution,)i(and)e(quote)i(remo)m(v)-5 b(al.)41
+b(The)26 b(result)h(is)g(treated)h(as)150 628 y(the)j(arithmetic)g
+(expression)f(to)h(b)s(e)f(ev)-5 b(aluated.)42 b(Arithmetic)31
+b(expansions)g(ma)m(y)g(b)s(e)e(nested.)275 761 y(The)34
+b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g(the)g
+(rules)f(listed)h(b)s(elo)m(w)g(\(see)g(Section)g(6.5)h([Shell)150
+870 y(Arithmetic],)32 b(page)f(93\).)42 b(If)30 b(the)h(expression)f
+(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g
+(indicating)h(failure)150 980 y(to)f(the)g(standard)e(error)h(and)g(no)
+g(substitution)g(o)s(ccurs.)150 1177 y Fk(3.5.6)63 b(Pro)s(cess)42
+b(Substitution)150 1324 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i
+(a)e(pro)s(cess's)g(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i
+(using)f(a)g(\014lename.)150 1433 y(It)d(tak)m(es)i(the)f(form)f(of)390
+1567 y Ft(<\()p Fj(list)p Ft(\))150 1700 y Fu(or)390
+1833 y Ft(>\()p Fj(list)p Ft(\))150 1966 y Fu(The)e(pro)s(cess)h
Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i
(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41
-b(This)150 3628 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h
+b(This)150 2076 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h
(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h
-(expansion.)38 b(If)150 3738 y(the)28 b Ft(>\()p Fj(list)p
+(expansion.)38 b(If)150 2186 y(the)28 b Ft(>\()p Fj(list)p
Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h
(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26
-b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 3848 y(is)g(used,)g(the)
+b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 2295 y(is)g(used,)g(the)
f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to)
g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25
-b(that)150 3957 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m
+b(that)150 2405 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m
(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m
-(thesis,)f(otherwise)h(the)f(construct)150 4067 y(w)m(ould)j(b)s(e)g
+(thesis,)f(otherwise)h(the)f(construct)150 2514 y(w)m(ould)j(b)s(e)g
(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36
b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150
-4176 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p
+2624 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p
Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g
-(\014les.)275 4311 y(When)36 b(a)m(v)-5 b(ailable,)40
+(\014les.)275 2757 y(When)36 b(a)m(v)-5 b(ailable,)40
b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i
-(with)g(parameter)g(and)150 4421 y(v)-5 b(ariable)31
+(with)g(parameter)g(and)150 2867 y(v)-5 b(ariable)31
b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.)
-150 4620 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150
-4767 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g
+150 3064 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150
+3210 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g
(expansion,)g(command)g(substitution,)g(and)f(arithmetic)150
-4877 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
-(quotes)h(for)f(w)m(ord)g(splitting.)275 5011 y(The)e(shell)g(treats)i
+3320 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h
+(quotes)h(for)f(w)m(ord)g(splitting.)275 3453 y(The)e(shell)g(treats)i
(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 5121 y(expansions)22
+(splits)g(the)h(results)f(of)h(the)g(other)150 3563 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 5230 y(is)36 b(exactly)j Ft(<space><tab><newline>)p
+b(alue)150 3672 y(is)36 b(exactly)j Ft(<space><tab><newline>)p
Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67
-b Ft(<space>)p Fu(,)36 b Ft(<tab>)p Fu(,)h(and)150 5340
+b Ft(<space>)p Fu(,)36 b Ft(<tab>)p Fu(,)h(and)150 3782
y Ft(<newline>)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,)p
-eop end
-%%Page: 32 38
-TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)150 299
-y(and)36 b(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
+(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150
+3892 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f
(at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m
-(ords.)150 408 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 518 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
-628 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
+(ords.)150 4001 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5
+b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f
+(the)h(whitespace)f(c)m(haracters)150 4111 y Ft(space)p
+Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g
+(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as)
+g(the)150 4220 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5
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 737
+(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 4330
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 847 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f
+(delimits)150 4440 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 956 y(of)31
+(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 4549 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
-1114 y(Explicit)21 b(n)m(ull)g(argumen)m(ts)g(\()p Ft("")g
+4682 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 1224 y(Unquoted)37 b(implicit)i(n)m(ull)f
+(as)i(empt)m(y)f(strings.)150 4792 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 1333 y(no)32 b(v)-5 b(alues,)33
+(that)i(ha)m(v)m(e)150 4902 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
-1443 y(n)m(ull)c(argumen)m(t)g(results)g(and)f(is)h(retained)g(and)f
+5011 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 1552 y(a)f(quoted)f(n)m(ull)g(argumen)m(t)h(app)s(ears)e(as)
+b(When)150 5121 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 1662 y(argumen)m(t)i(is)f(remo)m(v)m(ed.)69
+(the)e(n)m(ull)150 5230 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
-1772 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 1929 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 2152 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150
-2299 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 2408 y(page)d(61\),)i(Bash)d(scans)h(eac)m
-(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p Ft(*)p
-Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39
-b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 2518 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
-2627 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(33\).)43
-b(If)150 2737 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 2846 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
-2956 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 3066 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 3175 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
-3333 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 3442 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
-3552 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p Ft(.)p
-Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e(matc)m
-(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d
-Fu(is)i(set.)150 3662 y(In)i(other)g(cases,)i(the)e(`)p
+5340 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)p eop end
+%%Page: 33 39
+TeXDict begin 33 38 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(33)275 299
+y(Note)31 b(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h(splitting)g
+(is)f(p)s(erformed.)150 505 y Fk(3.5.8)63 b(Filename)41
+b(Expansion)150 652 y Fu(After)30 b(w)m(ord)f(splitting,)i(unless)d
+(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h(\(see)g(Section)h
+(4.3.1)g([The)e(Set)h(Builtin],)150 762 y(page)d(62\),)i(Bash)d(scans)h
+(eac)m(h)h(w)m(ord)e(for)g(the)h(c)m(haracters)g(`)p
+Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39
+b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 872 y(app)s(ears,)34
+b(and)f(is)g(not)h(quoted,)h(then)e(the)h(w)m(ord)f(is)h(regarded)f(as)
+h(a)g Fr(pattern)p Fu(,)h(and)e(replaced)h(with)f(an)150
+981 y(alphab)s(etically)41 b(sorted)e(list)h(of)g(\014lenames)f(matc)m
+(hing)i(the)e(pattern)g(\(see)i(Section)f(3.5.8.1)i([P)m(attern)150
+1091 y(Matc)m(hing],)e(page)e(33\).)60 b(If)36 b(no)h(matc)m(hing)g
+(\014lenames)g(are)g(found,)g(and)f(the)g(shell)h(option)g
+Ft(nullglob)150 1200 y Fu(is)k(disabled,)i(the)f(w)m(ord)e(is)h(left)h
+(unc)m(hanged.)72 b(If)40 b(the)h Ft(nullglob)e Fu(option)i(is)g(set,)k
+(and)40 b(no)h(matc)m(hes)150 1310 y(are)c(found,)g(the)g(w)m(ord)f(is)
+g(remo)m(v)m(ed.)60 b(If)36 b(the)h Ft(failglob)d Fu(shell)j(option)g
+(is)g(set,)i(and)c(no)i(matc)m(hes)h(are)150 1420 y(found,)e(an)g
+(error)f(message)i(is)f(prin)m(ted)f(and)h(the)g(command)f(is)h(not)g
+(executed.)58 b(If)35 b(the)h(shell)g(option)150 1529
+y Ft(nocaseglob)e Fu(is)j(enabled,)i(the)e(matc)m(h)h(is)f(p)s
+(erformed)e(without)i(regard)g(to)h(the)f(case)h(of)f(alphab)s(etic)150
+1639 y(c)m(haracters.)275 1781 y(When)23 b(a)h(pattern)f(is)h(used)f
+(for)g(\014lename)h(expansion,)h(the)e(c)m(haracter)i(`)p
+Ft(.)p Fu(')f(at)g(the)g(start)g(of)g(a)g(\014lename)150
+1890 y(or)f(immediately)i(follo)m(wing)g(a)f(slash)f(m)m(ust)h(b)s(e)f
+(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g
+Ft(dotglob)150 2000 y Fu(is)k(set.)41 b(The)28 b(\014lenames)g(`)p
+Ft(.)p Fu(')g(and)g(`)p Ft(..)p Fu(')g(m)m(ust)g(alw)m(a)m(ys)i(b)s(e)e
+(matc)m(hed)h(explicitly)-8 b(,)30 b(ev)m(en)f(if)g Ft(dotglob)d
+Fu(is)i(set.)150 2109 y(In)i(other)g(cases,)i(the)e(`)p
Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8
-b(.)275 3819 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f
+b(.)275 2251 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f
(c)m(haracter)j(m)m(ust)d(alw)m(a)m(ys)j(b)s(e)d(matc)m(hed)h
-(explicitly)i(b)m(y)e(a)150 3929 y(slash)d(in)f(the)h(pattern,)h(but)e
+(explicitly)i(b)m(y)e(a)150 2361 y(slash)d(in)f(the)h(pattern,)h(but)e
(in)h(other)g(matc)m(hing)h(con)m(texts)h(it)e(can)g(b)s(e)g(matc)m
-(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 4038 y(c)m(haracter)j(as)f
+(hed)g(b)m(y)g(a)g(sp)s(ecial)h(pattern)150 2470 y(c)m(haracter)j(as)f
(describ)s(ed)e(b)s(elo)m(w)h(\(see)i(Section)f(3.5.8.1)i([P)m(attern)e
-(Matc)m(hing],)i(page)e(33\).)275 4196 y(See)d(the)g(description)g(of)g
+(Matc)m(hing],)i(page)e(33\).)275 2612 y(See)d(the)g(description)g(of)g
Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g
-(65,)g(for)f(a)g(descrip-)150 4306 y(tion)j(of)f(the)h
+(66,)g(for)f(a)g(descrip-)150 2722 y(tion)j(of)f(the)h
Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p
-Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 4463 y(The)36
+Fu(,)h(and)g Ft(dotglob)g Fu(options.)275 2864 y(The)36
b Ft(GLOBIGNORE)d Fu(shell)k(v)-5 b(ariable)37 b(ma)m(y)g(b)s(e)f(used)
g(to)h(restrict)g(the)g(set)g(of)g(\014le)f(names)h(matc)m(hing)150
-4573 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)
+2973 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac)
m(h)e(matc)m(hing)f(\014le)g(name)f(that)h(also)h(matc)m(hes)f(one)g
-(of)g(the)150 4682 y(patterns)34 b(in)g Ft(GLOBIGNORE)d
+(of)g(the)150 3083 y(patterns)34 b(in)g Ft(GLOBIGNORE)d
Fu(is)k(remo)m(v)m(ed)g(from)f(the)g(list)h(of)f(matc)m(hes.)54
-b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 4792
+b(If)33 b(the)i Ft(nocaseglob)c Fu(option)k(is)150 3192
y(set,)c(the)e(matc)m(hing)i(against)g(the)f(patterns)f(in)h
Ft(GLOBIGNORE)c Fu(is)k(p)s(erformed)e(without)i(regard)f(to)i(case.)
-150 4902 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h
+150 3302 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h
Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)f
Fu(is)i(set)g(and)f(not)h(n)m(ull.)41 b(Ho)m(w)m(ev)m(er,)150
-5011 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5
+3412 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5
b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h
-Ft(dotglob)d Fu(shell)i(option,)150 5121 y(so)j(all)h(other)f
+Ft(dotglob)d Fu(shell)i(option,)150 3521 y(so)j(all)h(other)f
(\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc)
m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h
-(ignoring)150 5230 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p
+(ignoring)150 3631 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p
Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g
(in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150
-5340 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d
-Fu(is)k(unset.)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)150 299
-y Fk(3.5.8.1)63 b(P)m(attern)40 b(Matc)m(hing)150 446
-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 555 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
-665 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 775 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 901 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
-1045 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 1155 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
-1264 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
-1374 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
+3740 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d
+Fu(is)k(unset.)150 3947 y Fk(3.5.8.1)63 b(P)m(attern)40
+b(Matc)m(hing)150 4094 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s
+(ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g
+(c)m(haracters)h(describ)s(ed)150 4203 y(b)s(elo)m(w,)31
+b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y)
+e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s
+(es)150 4313 y(the)38 b(follo)m(wing)g(c)m(haracter;)43
+b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m
+(hing.)63 b(The)36 b(sp)s(ecial)150 4423 y(pattern)30
+b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s
+(e)d(matc)m(hed)i(literally)-8 b(.)275 4564 y(The)29
+b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m
+(wing)h(meanings:)150 4735 y Ft(*)432 b Fu(Matc)m(hes)31
+b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41
+b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630
+4844 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h
+(\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p
+Ft(*)p Fu('s)630 4954 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc)
+m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630
+5064 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p
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 1484 y(and)k(sub)s(directories.)150
-1627 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)
-150 1771 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 1881 y(h)m(yphen)k(denotes)i(a)g
+(matc)m(h)h(only)f(directories)630 5173 y(and)k(sub)s(directories.)150
+5340 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.)p
+eop end
+%%Page: 34 40
+TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299
+y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g(the)g
+(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters)i
+(separated)e(b)m(y)g(a)630 408 y(h)m(yphen)k(denotes)i(a)g
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 1990 y(c)m(haracters,)d
+(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 518 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 2100 y(set,)31 b(is)f(matc)m(hed.)42
+(sequence)e(and)f(c)m(haracter)630 628 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 2210 y(c)m(haracter)c(not)f(enclosed)g
+Ft(^)p Fu(')g(then)f(an)m(y)630 737 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 2319
+(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 847
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 2429 y(\014rst)25 b(c)m(haracter)i(in)e
+(including)g(it)g(as)h(the)630 956 y(\014rst)25 b(c)m(haracter)i(in)e
(the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f
-(range)g(expressions)f(is)630 2538 y(determined)h(b)m(y)h(the)g(curren)
+(range)g(expressions)f(is)630 1066 y(determined)h(b)m(y)h(the)g(curren)
m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g
-Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 2648 y Fu(shell)31
-b(v)-5 b(ariables,)31 b(if)f(set.)630 2775 y(F)-8 b(or)34
+Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 1176 y Fu(shell)31
+b(v)-5 b(ariables,)31 b(if)f(set.)630 1312 y(F)-8 b(or)34
b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p
Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p
-Ft([abcdxyz])p Fu('.)630 2884 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m
+Ft([abcdxyz])p Fu('.)630 1422 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m
(haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s
-(cales)630 2994 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e
+(cales)630 1531 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e
(equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m
-(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 3104 y(to)34 b(`)p
+(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 1641 y(to)34 b(`)p
Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8
b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630
-3213 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g
+1751 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g
(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630
-3323 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i
+1860 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i
(v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p
-Ft(C)p Fu(',)g(or)f(enable)h(the)630 3432 y Ft(globasciiranges)c
-Fu(shell)31 b(option.)630 3559 y(Within)23 b(`)p Ft([)p
+Ft(C)p Fu(',)g(or)f(enable)h(the)630 1970 y Ft(globasciiranges)c
+Fu(shell)31 b(option.)630 2106 y(Within)23 b(`)p Ft([)p
Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j
Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f
-Ft([:)p Fr(class)t Ft(:])p Fu(,)630 3669 y(where)30 b
+Ft([:)p Fr(class)t Ft(:])p Fu(,)630 2216 y(where)30 b
Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f
-(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 3795
+(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 2353
y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower)
-870 3905 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630
-4032 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m
+870 2462 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630
+2599 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m
(haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41
-b Ft(word)630 4141 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h
+b Ft(word)630 2709 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 4268 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p
+Ft(_)p Fu('.)630 2845 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 4378 y(whic)m(h)29
+Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 2955 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 4487
+m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 3064
y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h
-Fr(c)p Fu(.)630 4614 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p
+Fr(c)p Fu(.)630 3201 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 4758 y(If)29 b(the)g Ft(extglob)f
+Fr(sym)m(b)s(ol)p Fu(.)275 3367 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 4867
+Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 3477
y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58
b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j
-Fu(is)d(a)g(list)g(of)150 4977 y(one)d(or)f(more)h(patterns)f
+Fu(is)d(a)g(list)g(of)150 3586 y(one)d(or)f(more)h(patterns)f
(separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33
b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150
-5087 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
-5230 y Ft(?\()p Fj(pattern-list)p Ft(\))630 5340 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.)p
-eop end
-%%Page: 34 40
-TeXDict begin 34 39 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(34)150 299
-y Ft(*\()p Fj(pattern-list)p Ft(\))630 408 y Fu(Matc)m(hes)32
-b(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)
-150 554 y Ft(+\()p Fj(pattern-list)p Ft(\))630 663 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 809 y Ft(@\()p Fj(pattern-list)p Ft(\))630
-918 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)150
-1064 y Ft(!\()p Fj(pattern-list)p Ft(\))630 1173 y Fu(Matc)m(hes)h(an)m
-(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g(patterns.)275
-1319 y(Complicated)41 b(extended)f(pattern)g(matc)m(hing)h(against)h
-(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d(when)150
-1428 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f(the)g
-(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42
-b(Using)29 b(separate)150 1538 y(matc)m(hes)38 b(against)g(shorter)e
-(strings,)i(or)f(using)f(arra)m(ys)h(of)g(strings)f(instead)h(of)g(a)g
-(single)g(long)h(string,)150 1647 y(ma)m(y)31 b(b)s(e)f(faster.)150
-1833 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150
-1979 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
-2089 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 2316 y Fs(3.6)68
-b(Redirections)150 2475 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 2585 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 2694
-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 2804 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 2914 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 3023 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 3133 y(in)g(the)h(order)f
-(they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275
-3260 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 3370 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 3479 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 3589 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 3698 y(descriptor)i(to)g(close.)52
-b(If)34 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})34 b Fu(is)g(supplied,)g
-(the)g(redirection)g(p)s(ersists)f(b)s(ey)m(ond)g(the)h(scop)s(e)g(of)
-150 3808 y(the)d(command,)f(allo)m(wing)i(the)f(shell)f(programmer)g
-(to)h(manage)h(the)e(\014le)h(descriptor)f(himself.)275
-3936 y(In)d(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g
-(descriptor)f(n)m(um)m(b)s(er)g(is)g(omitted,)i(and)f(the)f(\014rst)g
-(c)m(har-)150 4045 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 4155 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 4264 y(to)e(the)g(standard)e(output)h(\(\014le)h
-(descriptor)f(1\).)275 4392 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 4501 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 4611 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 4721 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
-4848 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
-4975 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 5103 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 5213 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390
-5340 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)p eop end
+3696 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150
+3862 y Ft(?\()p Fj(pattern-list)p Ft(\))630 3971 y Fu(Matc)m(hes)h
+(zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150
+4135 y Ft(*\()p Fj(pattern-list)p Ft(\))630 4245 y Fu(Matc)m(hes)h
+(zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.)
+150 4408 y Ft(+\()p Fj(pattern-list)p Ft(\))630 4518
+y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m
+(en)i(patterns.)150 4682 y Ft(@\()p Fj(pattern-list)p
+Ft(\))630 4791 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.)
+150 4955 y Ft(!\()p Fj(pattern-list)p Ft(\))630 5064
+y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g
+(patterns.)275 5230 y(Complicated)41 b(extended)f(pattern)g(matc)m
+(hing)h(against)h(long)f(strings)f(is)g(slo)m(w,)k(esp)s(ecially)d
+(when)150 5340 y(the)29 b(patterns)g(con)m(tain)i(alternations)f(and)f
+(the)g(strings)g(con)m(tain)h(m)m(ultiple)g(matc)m(hes.)42
+b(Using)29 b(separate)p eop end
%%Page: 35 41
TeXDict begin 35 40 bop 150 -116 a Fu(Chapter)30 b(3:)41
b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(35)150 299
-y(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 408 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 543 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 652 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 762
-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 871 y(describ)s(ed)j(b)s(elo)m(w.)150 1030
-y Ft(/dev/fd/)p Fj(fd)630 1140 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 1298 y Ft(/dev/stdin)630 1408
-y Fu(File)i(descriptor)e(0)h(is)f(duplicated.)150 1566
-y Ft(/dev/stdout)630 1676 y Fu(File)i(descriptor)e(1)h(is)f
-(duplicated.)150 1835 y Ft(/dev/stderr)630 1944 y Fu(File)i(descriptor)
-e(2)h(is)f(duplicated.)150 2103 y Ft(/dev/tcp/)p Fj(host)p
-Ft(/)p Fj(port)630 2212 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 2322
-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
-2480 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 2590
-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 2700 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 2858 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
-2992 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
-3102 y(con\015ict)i(with)f(\014le)h(descriptors)f(the)g(shell)h(uses)f
-(in)m(ternally)-8 b(.)150 3300 y Fk(3.6.1)63 b(Redirecting)40
-b(Input)150 3447 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 3557 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
-3667 y(sp)s(eci\014ed.)275 3801 y(The)c(general)j(format)e(for)h
-(redirecting)g(input)e(is:)390 3935 y Ft([)p Fj(n)p Ft(]<)p
-Fj(word)150 4133 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150
-4280 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose)
+y(matc)m(hes)38 b(against)g(shorter)e(strings,)i(or)f(using)f(arra)m
+(ys)h(of)g(strings)f(instead)h(of)g(a)g(single)g(long)h(string,)150
+408 y(ma)m(y)31 b(b)s(e)f(faster.)150 614 y Fk(3.5.9)63
+b(Quote)41 b(Remo)m(v)-7 b(al)150 760 y Fu(After)32 b(the)g(preceding)g
+(expansions,)h(all)f(unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m
+(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p
+Ft(")p Fu(')150 870 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g
+(the)f(ab)s(o)m(v)m(e)i(expansions)e(are)h(remo)m(v)m(ed.)150
+1120 y Fs(3.6)68 b(Redirections)150 1279 y Fu(Before)32
+b(a)f(command)f(is)h(executed,)h(its)f(input)e(and)h(output)h(ma)m(y)g
+(b)s(e)f Fr(redirected)k Fu(using)c(a)i(sp)s(ecial)f(no-)150
+1389 y(tation)d(in)m(terpreted)f(b)m(y)f(the)h(shell.)40
+b(Redirection)27 b(allo)m(ws)h(commands')f(\014le)f(handles)g(to)i(b)s
+(e)e(duplicated,)150 1498 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f
+(to)h(di\013eren)m(t)f(\014les,)h(and)f(can)g(c)m(hange)h(the)g
+(\014les)f(the)g(command)g(reads)150 1608 y(from)39 b(and)g(writes)h
+(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s
+(dify)f(\014le)g(handles)g(in)g(the)h(curren)m(t)150
+1717 y(shell)e(execution)h(en)m(vironmen)m(t.)65 b(The)37
+b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g(precede)h(or)f
+(app)s(ear)150 1827 y(an)m(ywhere)30 b(within)f(a)h(simple)f(command)h
+(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 b(Redirections)30
+b(are)g(pro)s(cessed)150 1936 y(in)g(the)h(order)f(they)g(app)s(ear,)g
+(from)g(left)h(to)g(righ)m(t.)275 2077 y(Eac)m(h)45 b(redirection)h
+(that)f(ma)m(y)h(b)s(e)e(preceded)g(b)m(y)h(a)h(\014le)f(descriptor)f
+(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b)s(e)150 2186
+y(preceded)41 b(b)m(y)g(a)h(w)m(ord)f(of)g(the)h(form)f
+Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(.)74 b(In)41 b(this)g(case,)k
+(for)c(eac)m(h)i(redirection)f(op)s(erator)150 2296 y(except)37
+b Ft(>)p Fu(&-)e(and)g Ft(<)p Fu(&-,)i(the)f(shell)g(will)g(allo)s
+(cate)j(a)d(\014le)g(descriptor)f(greater)i(than)f(10)g(and)f(assign)h
+(it)150 2406 y(to)e Fi({)p Fr(v)-5 b(arname)5 b Fi(})p
+Fu(.)52 b(If)33 b Ft(>)p Fu(&-)g(or)h Ft(<)p Fu(&-)f(is)g(preceded)h(b)
+m(y)f Fi({)p Fr(v)-5 b(arname)5 b Fi(})p Fu(,)36 b(the)e(v)-5
+b(alue)34 b(of)f Fr(v)-5 b(arname)39 b Fu(de\014nes)33
+b(the)150 2515 y(\014le)e(descriptor)g(to)h(close.)43
+b(If)31 b Fi({)p Fr(v)-5 b(arname)5 b Fi(})32 b Fu(is)f(supplied,)f
+(the)h(redirection)g(p)s(ersists)f(b)s(ey)m(ond)h(the)g(scop)s(e)150
+2625 y(of)42 b(the)f(command,)j(allo)m(wing)f(the)f(shell)g(programmer)
+f(to)h(manage)g(the)g(\014le)f(descriptor's)h(lifetime)150
+2734 y(man)m(ually)-8 b(.)275 2875 y(In)27 b(the)i(follo)m(wing)h
+(descriptions,)g(if)e(the)h(\014le)g(descriptor)f(n)m(um)m(b)s(er)g(is)
+g(omitted,)i(and)f(the)f(\014rst)g(c)m(har-)150 2984
+y(acter)42 b(of)f(the)g(redirection)g(op)s(erator)g(is)g(`)p
+Ft(<)p Fu(',)i(the)e(redirection)g(refers)g(to)g(the)g(standard)f
+(input)f(\(\014le)150 3094 y(descriptor)33 b(0\).)49
+b(If)33 b(the)g(\014rst)f(c)m(haracter)i(of)g(the)f(redirection)g(op)s
+(erator)h(is)f(`)p Ft(>)p Fu(',)h(the)f(redirection)g(refers)150
+3203 y(to)e(the)g(standard)e(output)h(\(\014le)h(descriptor)f(1\).)275
+3344 y(The)h(w)m(ord)h(follo)m(wing)i(the)f(redirection)g(op)s(erator)f
+(in)g(the)h(follo)m(wing)h(descriptions,)f(unless)e(other-)150
+3453 y(wise)21 b(noted,)i(is)e(sub)5 b(jected)21 b(to)h(brace)f
+(expansion,)i(tilde)f(expansion,)h(parameter)e(expansion,)i(command)150
+3563 y(substitution,)31 b(arithmetic)h(expansion,)f(quote)h(remo)m(v)-5
+b(al,)33 b(\014lename)e(expansion,)g(and)f(w)m(ord)h(splitting.)150
+3672 y(If)f(it)h(expands)e(to)i(more)g(than)f(one)h(w)m(ord,)f(Bash)h
+(rep)s(orts)e(an)h(error.)275 3813 y(Note)h(that)g(the)g(order)f(of)g
+(redirections)h(is)g(signi\014can)m(t.)41 b(F)-8 b(or)31
+b(example,)h(the)e(command)390 3953 y Ft(ls)47 b(>)h
+Fj(dirlist)d Ft(2>&1)150 4093 y Fu(directs)28 b(b)s(oth)f(standard)g
+(output)g(\(\014le)h(descriptor)f(1\))i(and)e(standard)f(error)i
+(\(\014le)g(descriptor)f(2\))h(to)h(the)150 4203 y(\014le)h
+Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 4343 y
+Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 4484 y Fu(directs)28
+b(only)f(the)h(standard)e(output)i(to)g(\014le)f Fr(dirlist)p
+Fu(,)h(b)s(ecause)g(the)f(standard)g(error)g(w)m(as)h(made)f(a)h(cop)m
+(y)150 4593 y(of)j(the)f(standard)g(output)g(b)s(efore)g(the)g
+(standard)g(output)g(w)m(as)g(redirected)h(to)g Fr(dirlist)p
+Fu(.)275 4733 y(Bash)26 b(handles)f(sev)m(eral)j(\014lenames)e(sp)s
+(ecially)h(when)f(they)g(are)g(used)g(in)g(redirections,)i(as)e
+(describ)s(ed)150 4843 y(in)38 b(the)h(follo)m(wing)h(table.)66
+b(If)38 b(the)h(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)h(is)f
+(running)f(pro)m(vides)h(these)150 4953 y(sp)s(ecial)27
+b(\014les,)g(bash)e(will)i(use)f(them;)h(otherwise)g(it)f(will)h(em)m
+(ulate)h(them)e(in)m(ternally)h(with)f(the)g(b)s(eha)m(vior)150
+5062 y(describ)s(ed)j(b)s(elo)m(w.)150 5230 y Ft(/dev/fd/)p
+Fj(fd)630 5340 y Fu(If)h Fr(fd)j Fu(is)d(a)h(v)-5 b(alid)31
+b(in)m(teger,)h(\014le)e(descriptor)h Fr(fd)i Fu(is)d(duplicated.)p
+eop end
+%%Page: 36 42
+TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299
+y Ft(/dev/stdin)630 408 y Fu(File)32 b(descriptor)e(0)h(is)f
+(duplicated.)150 577 y Ft(/dev/stdout)630 687 y Fu(File)i(descriptor)e
+(1)h(is)f(duplicated.)150 856 y Ft(/dev/stderr)630 965
+y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 1134
+y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1244 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 1354 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 1522 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630
+1632 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 1742 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 1915 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 2059 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 2169 y(con\015ict)i(with)f(\014le)h
+(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8
+b(.)150 2378 y Fk(3.6.1)63 b(Redirecting)40 b(Input)150
+2525 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 2634 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 2744
+y(sp)s(eci\014ed.)275 2888 y(The)c(general)j(format)e(for)h
+(redirecting)g(input)e(is:)390 3032 y Ft([)p Fj(n)p Ft(]<)p
+Fj(word)150 3241 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150
+3388 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 4390 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h
+Fu(to)f(b)s(e)150 3497 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 4499
+(descriptor)f(1\))h(if)g Fr(n)e Fu(is)i(not)150 3607
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 4633 y(The)e(general)j(format)e(for)h
-(redirecting)g(output)f(is:)390 4768 y Ft([)p Fj(n)p
-Ft(]>[|])p Fj(word)275 4902 y Fu(If)g(the)h(redirection)g(op)s(erator)g
+(to)h(zero)g(size.)275 3751 y(The)e(general)j(format)e(for)h
+(redirecting)g(output)f(is:)390 3895 y Ft([)p Fj(n)p
+Ft(]>[|])p Fj(word)275 4039 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 5011 y(enabled,)h(the)g
+(the)g Ft(set)f Fu(builtin)g(has)h(b)s(een)150 4148 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
-5121 y Fu(exists)f(and)f(is)g(a)h(regular)g(\014le.)41
+4258 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
-5230 y(`)p Ft(>)p Fu(')36 b(and)f(the)g Ft(noclobber)e
+4367 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 5340 y(named)30 b(b)m(y)g
-Fr(w)m(ord)k Fu(exists.)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 Fk(3.6.3)63 b(App)s(ending)42 b(Redirected)e(Output)150
-446 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 555 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 665 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 796 y(The)f(general)j
-(format)e(for)h(app)s(ending)e(output)h(is:)390 928 y
-Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 1120 y Fk(3.6.4)63
-b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g(Error)150
-1267 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 1377 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 1508 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
-1639 y Ft(&>)p Fj(word)150 1771 y Fu(and)390 1902 y Ft(>&)p
-Fj(word)150 2033 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 2164 y Ft(>)p Fj(word)46 b Ft(2>&1)275
-2296 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 2405 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
-2515 y(reasons.)150 2707 y Fk(3.6.5)63 b(App)s(ending)42
-b(Standard)f(Output)g(and)g(Standard)g(Error)150 2854
+(ev)m(en)h(if)e(the)h(\014le)150 4477 y(named)30 b(b)m(y)g
+Fr(w)m(ord)k Fu(exists.)150 4686 y Fk(3.6.3)63 b(App)s(ending)42
+b(Redirected)e(Output)150 4833 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 4942 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 5052 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 5196 y(The)f(general)j(format)e(for)h(app)s(ending)e
+(output)h(is:)390 5340 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)p
+eop end
+%%Page: 37 43
+TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)150 299
+y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g(Standard)g
+(Error)150 446 y Fu(This)33 b(construct)i(allo)m(ws)g(b)s(oth)f(the)g
+(standard)g(output)f(\(\014le)i(descriptor)f(1\))h(and)f(the)g
+(standard)f(error)150 555 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 712 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 870 y Ft(&>)p Fj(word)150 1027 y Fu(and)390
+1184 y Ft(>&)p Fj(word)150 1341 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 1498 y Ft(>)p Fj(word)46
+b Ft(2>&1)275 1655 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 1764
+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
+1874 y(reasons.)150 2096 y Fk(3.6.5)63 b(App)s(ending)42
+b(Standard)f(Output)g(and)g(Standard)g(Error)150 2243
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 2964 y(output)d(\(\014le)h(descriptor)f(2\))h(to)g(b)s(e)f(app)s
+150 2352 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 3095 y(The)f(format)i(for)f(app)s(ending)f
+Fr(w)m(ord)p Fu(.)275 2509 y(The)f(format)i(for)f(app)s(ending)f
(standard)h(output)g(and)f(standard)h(error)g(is:)390
-3226 y Ft(&>>)p Fj(word)150 3358 y Fu(This)g(is)g(seman)m(tically)j
-(equiv)-5 b(alen)m(t)32 b(to)390 3489 y Ft(>>)p Fj(word)46
-b Ft(2>&1)275 3620 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g
-(b)s(elo)m(w\).)150 3813 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150
-3960 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g
+2666 y Ft(&>>)p Fj(word)150 2823 y Fu(This)g(is)g(seman)m(tically)j
+(equiv)-5 b(alen)m(t)32 b(to)390 2980 y Ft(>>)p Fj(word)46
+b Ft(2>&1)275 3138 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g
+(b)s(elo)m(w\).)150 3359 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150
+3506 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 4070 y(con)m(taining)h(only)e Fr(w)m(ord)k
+(til)h(a)g(line)150 3616 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
-4179 y(are)k(then)f(used)f(as)i(the)g(standard)e(input)h(\(or)g(\014le)
+3725 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 4310 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f
-(is:)390 4442 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p
-Fj(word)772 4551 y(here-document)390 4661 y(delimiter)275
-4792 y Fu(No)i(parameter)h(and)f(v)-5 b(ariable)32 b(expansion,)h
+(a)f(command.)275 3883 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f
+(is:)390 4040 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p
+Fj(word)772 4149 y(here-document)390 4259 y(delimiter)275
+4416 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
-4902 y(\014lename)26 b(expansion)g(is)g(p)s(erformed)e(on)i
+4525 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
-5011 y(result)33 b(of)g(quote)g(remo)m(v)-5 b(al)34 b(on)f
+4635 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 5121 y Fr(w)m(ord)26
+g(are)g(not)g(expanded.)47 b(If)150 4745 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
-5230 y(mand)30 b(substitution,)g(and)g(arithmetic)h(expansion,)g(the)f
+4854 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
-5340 y(and)f(`)p Ft(\\)p Fu(')g(m)m(ust)h(b)s(e)e(used)h(to)h(quote)g
+4964 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('.)p eop end
-%%Page: 37 43
-TeXDict begin 37 42 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(37)275 299
-y(If)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 408 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
-518 y(b)s(e)e(inden)m(ted)g(in)g(a)h(natural)f(fashion.)150
-709 y Fk(3.6.7)63 b(Here)41 b(Strings)150 856 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 987 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275
-1117 y Fu(The)29 b Fr(w)m(ord)k Fu(undergo)s(es)c(tilde)i(expansion,)f
-(parameter)h(and)e(v)-5 b(ariable)31 b(expansion,)f(command)g(sub-)150
-1227 y(stitution,)25 b(arithmetic)f(expansion,)h(and)d(quote)h(remo)m
-(v)-5 b(al.)40 b(P)m(athname)23 b(expansion)g(and)f(w)m(ord)g
-(splitting)150 1336 y(are)35 b(not)g(p)s(erformed.)51
-b(The)34 b(result)h(is)g(supplied)e(as)i(a)f(single)i(string,)f(with)g
-(a)g(newline)f(app)s(ended,)g(to)150 1446 y(the)d(command)f(on)g(its)h
-(standard)e(input)h(\(or)g(\014le)h(descriptor)f Fr(n)g
-Fu(if)g Fr(n)g Fu(is)h(sp)s(eci\014ed\).)150 1637 y Fk(3.6.8)63
-b(Duplicating)41 b(File)g(Descriptors)150 1784 y Fu(The)30
-b(redirection)h(op)s(erator)390 1914 y Ft([)p Fj(n)p
-Ft(]<&)p Fj(word)150 2045 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 2154 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 2264 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
-2373 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
-2483 y(is)g(used.)275 2613 y(The)f(op)s(erator)390 2744
-y Ft([)p Fj(n)p Ft(]>&)p Fj(word)150 2874 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
-2984 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
-3093 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
-3203 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 3313 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 3504 y Fk(3.6.9)63 b(Mo)m(ving)41
-b(File)h(Descriptors)150 3651 y Fu(The)30 b(redirection)h(op)s(erator)
-390 3781 y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150
-3911 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 4021 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 4151 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s
-(erator)390 4282 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p
-Ft(-)150 4412 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f
+Fu(',)g(and)f(`)p Ft(`)p Fu('.)275 5121 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
+5230 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 5340 y(b)s(e)e(inden)m(ted)g(in)g(a)
+h(natural)f(fashion.)p eop end
+%%Page: 38 44
+TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299
+y Fk(3.6.7)63 b(Here)41 b(Strings)150 446 y Fu(A)30 b(v)-5
+b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h(is:)390
+600 y Ft([)p Fj(n)p Ft(]<<<)46 b Fj(word)275 753 y Fu(The)29
+b Fr(w)m(ord)k Fu(undergo)s(es)c(tilde)i(expansion,)f(parameter)h(and)e
+(v)-5 b(ariable)31 b(expansion,)f(command)g(sub-)150
+863 y(stitution,)f(arithmetic)f(expansion,)g(and)f(quote)h(remo)m(v)-5
+b(al.)41 b(Filename)29 b(expansion)e(and)f(w)m(ord)h(splitting)150
+973 y(are)35 b(not)g(p)s(erformed.)51 b(The)34 b(result)h(is)g
+(supplied)e(as)i(a)f(single)i(string,)f(with)g(a)g(newline)f(app)s
+(ended,)g(to)150 1082 y(the)d(command)f(on)g(its)h(standard)e(input)h
+(\(or)g(\014le)h(descriptor)f Fr(n)g Fu(if)g Fr(n)g Fu(is)h(sp)s
+(eci\014ed\).)150 1301 y Fk(3.6.8)63 b(Duplicating)41
+b(File)g(Descriptors)150 1448 y Fu(The)30 b(redirection)h(op)s(erator)
+390 1602 y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 1755 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 1865 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
+1975 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 2084 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 2194 y(is)g(used.)275
+2348 y(The)f(op)s(erator)390 2502 y Ft([)p Fj(n)p Ft(]>&)p
+Fj(word)150 2655 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 2765 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 2875 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 2984 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
+3094 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
+3312 y Fk(3.6.9)63 b(Mo)m(ving)41 b(File)h(Descriptors)150
+3459 y Fu(The)30 b(redirection)h(op)s(erator)390 3613
+y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 3767 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 3876 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 4030 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s
+(erator)390 4184 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p
+Ft(-)150 4338 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
-4522 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150
-4713 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 4860 y Fu(The)30
-b(redirection)h(op)s(erator)390 4990 y Ft([)p Fj(n)p
+4448 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150
+4666 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 4813 y Fu(The)30
+b(redirection)h(op)s(erator)390 4967 y Ft([)p Fj(n)p
Ft(]<>)p Fj(word)150 5121 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 5230 y(writing)33
@@ -10871,89 +10909,89 @@ b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h
(descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47
b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 5340 y(exist,)e(it)g(is)g
(created.)p eop end
-%%Page: 38 44
-TeXDict begin 38 43 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(38)150 299
+%%Page: 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 Fs(3.7)68 b(Executing)46 b(Commands)150 523 y Fk(3.7.1)63
b(Simple)41 b(Command)h(Expansion)150 670 y Fu(When)33
b(a)g(simple)g(command)g(is)g(executed,)h(the)g(shell)f(p)s(erforms)e
(the)i(follo)m(wing)i(expansions,)e(assign-)150 779 y(men)m(ts,)e(and)f
-(redirections,)h(from)f(left)h(to)g(righ)m(t.)199 913
-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 1023 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 1157 y(2.)61 b(The)39
-b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h
-(or)e(redirections)i(are)f(expanded)f(\(see)h(Sec-)330
-1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g(22\).)61
-b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h(the)e
-(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f(the)g
-(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g(are)g
-(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61 b(Redirections)25
-b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m(v)m(e)i(\(see)g
-(Section)g(3.6)g([Redirections],)i(page)d(34\).)199 1754
-y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h)
-j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)e(tilde)i
-(expansion,)g(parameter)330 1864 y(expansion,)49 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 1973 y(b)s(eing)30 b(assigned)h(to)g(the)f(v)-5
-b(ariable.)275 2132 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)
--5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)
-h(en)m(viron-)150 2242 y(men)m(t.)39 b(Otherwise,)27
-b(the)e(v)-5 b(ariables)26 b(are)g(added)f(to)h(the)f(en)m(vironmen)m
-(t)h(of)g(the)f(executed)h(command)g(and)150 2351 y(do)35
-b(not)f(a\013ect)j(the)d(curren)m(t)h(shell)g(en)m(vironmen)m(t.)54
-b(If)34 b(an)m(y)h(of)g(the)f(assignmen)m(ts)i(attempts)f(to)h(assign)
-150 2461 y(a)j(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5
-b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j(and)c(the)i(command)f(exits)h
-(with)g(a)f(non-zero)150 2570 y(status.)275 2705 y(If)33
-b(no)g(command)g(name)h(results,)g(redirections)g(are)g(p)s(erformed,)f
-(but)g(do)h(not)f(a\013ect)i(the)f(curren)m(t)150 2814
-y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f(causes)h
-(the)g(command)f(to)h(exit)g(with)f(a)h(non-zero)g(status.)275
-2948 y(If)26 b(there)i(is)f(a)h(command)f(name)h(left)g(after)g
-(expansion,)g(execution)h(pro)s(ceeds)e(as)g(describ)s(ed)f(b)s(elo)m
-(w.)150 3058 y(Otherwise,)39 b(the)e(command)g(exits.)62
-b(If)37 b(one)g(of)g(the)h(expansions)f(con)m(tained)h(a)g(command)f
-(substitu-)150 3167 y(tion,)i(the)d(exit)h(status)g(of)f(the)h(command)
-f(is)h(the)f(exit)h(status)g(of)f(the)h(last)g(command)f(substitution)
-150 3277 y(p)s(erformed.)55 b(If)35 b(there)g(w)m(ere)h(no)g(command)f
-(substitutions,)i(the)e(command)h(exits)g(with)f(a)h(status)g(of)150
-3387 y(zero.)150 3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h
-(Execution)150 3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h
-(in)m(to)h(w)m(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g
-(and)f(an)150 3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g
-(follo)m(wing)g(actions)h(are)f(tak)m(en.)199 3976 y(1.)61
-b(If)24 b(the)g(command)g(name)g(con)m(tains)i(no)e(slashes,)i(the)e
-(shell)h(attempts)g(to)g(lo)s(cate)h(it.)39 b(If)24 b(there)g(exists)
-330 4085 y(a)h(shell)g(function)f(b)m(y)g(that)h(name,)h(that)f
-(function)f(is)h(in)m(v)m(ok)m(ed)h(as)e(describ)s(ed)g(in)g(Section)h
-(3.3)h([Shell)330 4195 y(F)-8 b(unctions],)31 b(page)h(17.)199
-4329 y(2.)61 b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e
-(function,)j(the)e(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h
-(of)g(shell)330 4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g
-(that)h(builtin)f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61
-b(If)40 b(the)g(name)h(is)f(neither)h(a)f(shell)h(function)f(nor)g(a)g
-(builtin,)j(and)d(con)m(tains)h(no)g(slashes,)i(Bash)330
-4682 y(searc)m(hes)c(eac)m(h)g(elemen)m(t)g(of)g Ft($PATH)d
-Fu(for)i(a)g(directory)h(con)m(taining)g(an)f(executable)h(\014le)f(b)m
-(y)g(that)330 4792 y(name.)56 b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)
-f(remem)m(b)s(er)f(the)h(full)f(pathnames)g(of)h(executable)h(\014les)e
-(to)330 4902 y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f
-Fu(searc)m(hes)i(\(see)f(the)g(description)g(of)f Ft(hash)g
-Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)330 5011 y(Builtins],)37
-b(page)f(43\).)55 b(A)35 b(full)g(searc)m(h)g(of)g(the)g(directories)h
-(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h(if)g(the)330
-5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f(table.)39
-b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g(shell)g(searc)m
-(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function)h(named)e
-Ft(command_not_found_handle)p Fu(.)32 b(If)23 b(that)h(function)f
-(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i(in)e(a)h(separate)h
-(execution)f(en)m(vironmen)m(t)g(with)f(the)h(original)h(command)e(and)
-g(the)p eop end
-%%Page: 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)330 299
+(redirections,)h(from)f(left)h(to)g(righ)m(t,)g(in)f(the)h(follo)m
+(wing)h(order.)199 913 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 1023 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
+1157 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5
+b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f
+(\(see)h(Sec-)330 1267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g
+(22\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h
+(the)e(\014rst)330 1376 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f
+(the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g
+(are)g(the)h(argu-)330 1486 y(men)m(ts.)199 1620 y(3.)61
+b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m
+(v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(35\).)199
+1754 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p
+Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es)
+e(tilde)i(expansion,)g(parameter)330 1864 y(expansion,)49
+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 1973 y(b)s(eing)30
+b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 2132 y(If)32
+b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34
+b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-)
+150 2242 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26
+b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h
+(command)g(and)150 2351 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h
+(shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen)
+m(ts)i(attempts)f(to)h(assign)150 2461 y(a)j(v)-5 b(alue)39
+b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j
+(and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150
+2570 y(status.)275 2705 y(If)33 b(no)g(command)g(name)h(results,)g
+(redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f
+(curren)m(t)150 2814 y(shell)d(en)m(vironmen)m(t.)41
+b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g
+(with)f(a)h(non-zero)g(status.)275 2948 y(If)26 b(there)i(is)f(a)h
+(command)f(name)h(left)g(after)g(expansion,)g(execution)h(pro)s(ceeds)e
+(as)g(describ)s(ed)f(b)s(elo)m(w.)150 3058 y(Otherwise,)39
+b(the)e(command)g(exits.)62 b(If)37 b(one)g(of)g(the)h(expansions)f
+(con)m(tained)h(a)g(command)f(substitu-)150 3167 y(tion,)i(the)d(exit)h
+(status)g(of)f(the)h(command)f(is)h(the)f(exit)h(status)g(of)f(the)h
+(last)g(command)f(substitution)150 3277 y(p)s(erformed.)55
+b(If)35 b(there)g(w)m(ere)h(no)g(command)f(substitutions,)i(the)e
+(command)h(exits)g(with)f(a)h(status)g(of)150 3387 y(zero.)150
+3585 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150
+3732 y Fu(After)i(a)h(command)f(has)g(b)s(een)f(split)h(in)m(to)h(w)m
+(ords,)j(if)c(it)g(results)g(in)g(a)h(simple)f(command)g(and)f(an)150
+3842 y(optional)32 b(list)f(of)f(argumen)m(ts,)h(the)g(follo)m(wing)g
+(actions)h(are)f(tak)m(en.)199 3976 y(1.)61 b(If)24 b(the)g(command)g
+(name)g(con)m(tains)i(no)e(slashes,)i(the)e(shell)h(attempts)g(to)g(lo)
+s(cate)h(it.)39 b(If)24 b(there)g(exists)330 4085 y(a)h(shell)g
+(function)f(b)m(y)g(that)h(name,)h(that)f(function)f(is)h(in)m(v)m(ok)m
+(ed)h(as)e(describ)s(ed)g(in)g(Section)h(3.3)h([Shell)330
+4195 y(F)-8 b(unctions],)31 b(page)h(18.)199 4329 y(2.)61
+b(If)41 b(the)g(name)h(do)s(es)f(not)g(matc)m(h)i(a)e(function,)j(the)e
+(shell)f(searc)m(hes)i(for)e(it)h(in)f(the)g(list)h(of)g(shell)330
+4439 y(builtins.)e(If)30 b(a)h(matc)m(h)g(is)f(found,)g(that)h(builtin)
+f(is)g(in)m(v)m(ok)m(ed.)199 4573 y(3.)61 b(If)40 b(the)g(name)h(is)f
+(neither)h(a)f(shell)h(function)f(nor)g(a)g(builtin,)j(and)d(con)m
+(tains)h(no)g(slashes,)i(Bash)330 4682 y(searc)m(hes)c(eac)m(h)g
+(elemen)m(t)g(of)g Ft($PATH)d Fu(for)i(a)g(directory)h(con)m(taining)g
+(an)f(executable)h(\014le)f(b)m(y)g(that)330 4792 y(name.)56
+b(Bash)36 b(uses)f(a)h(hash)e(table)j(to)f(remem)m(b)s(er)f(the)h(full)
+f(pathnames)g(of)h(executable)h(\014les)e(to)330 4902
+y(a)m(v)m(oid)e(m)m(ultiple)f Ft(PATH)f Fu(searc)m(hes)i(\(see)f(the)g
+(description)g(of)f Ft(hash)g Fu(in)g(Section)i(4.1)f([Bourne)g(Shell)
+330 5011 y(Builtins],)37 b(page)f(44\).)55 b(A)35 b(full)g(searc)m(h)g
+(of)g(the)g(directories)h(in)f Ft($PATH)e Fu(is)i(p)s(erformed)f(only)h
+(if)g(the)330 5121 y(command)24 b(is)h(not)g(found)e(in)i(the)g(hash)f
+(table.)39 b(If)25 b(the)f(searc)m(h)i(is)e(unsuccessful,)h(the)g
+(shell)g(searc)m(hes)330 5230 y(for)e(a)h(de\014ned)e(shell)h(function)
+h(named)e Ft(command_not_found_handle)p Fu(.)32 b(If)23
+b(that)h(function)f(exists,)330 5340 y(it)33 b(is)f(in)m(v)m(ok)m(ed)i
+(in)e(a)h(separate)h(execution)f(en)m(vironmen)m(t)g(with)f(the)h
+(original)h(command)e(and)g(the)p eop end
+%%Page: 40 46
+TeXDict begin 40 45 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(40)330 299
y(original)26 b(command's)e(argumen)m(ts)h(as)g(its)g(argumen)m(ts,)h
(and)e(the)h(function's)f(exit)i(status)f(b)s(ecomes)330
408 y(the)j(exit)g(status)g(of)f(that)h(subshell.)39
@@ -10971,7 +11009,7 @@ b(.)199 1118 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g
(\014le)g(is)g(not)330 1228 y(a)d(directory)-8 b(,)34
b(it)f(is)g(assumed)e(to)j(b)s(e)d(a)i Fr(shell)g(script)h
Fu(and)e(the)h(shell)f(executes)i(it)f(as)g(describ)s(ed)e(in)330
-1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(41.)199
+1338 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(42.)199
1473 y(6.)61 b(If)38 b(the)h(command)f(w)m(as)h(not)g(b)s(egun)e(async)
m(hronously)-8 b(,)42 b(the)c(shell)h(w)m(aits)h(for)e(the)h(command)f
(to)330 1583 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150
@@ -10999,12 +11037,12 @@ b(enabled)g(at)h(in)m(v)m(o)s(cation)h(\(either)f(b)m(y)f(default)g(or)
g(with)g(command-line)g(argumen)m(ts\))h(or)330 3432
y(b)m(y)c Ft(set)225 3567 y Fq(\017)60 b Fu(options)31
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(65\))225 3703 y Fq(\017)60
+(Shopt)g(Builtin],)h(page)g(66\))225 3703 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(93\))225
+Fu(\(see)i(Section)g(6.6)h([Aliases],)g(page)f(94\))225
3839 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f
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 3948 y(page)31
+(\(see)i(Section)g(3.2.4)g([Lists],)330 3948 y(page)31
b(9\),)g(the)g(v)-5 b(alue)31 b(of)f Ft($$)p Fu(,)g(and)g(the)h(v)-5
b(alue)31 b(of)f Ft($PPID)275 4112 y Fu(When)k(a)g(simple)h(command)f
(other)g(than)g(a)h(builtin)f(or)g(shell)h(function)f(is)g(to)h(b)s(e)f
@@ -11021,14 +11059,14 @@ y Fq(\017)60 b Fu(the)31 b(curren)m(t)f(w)m(orking)g(directory)225
b(and)e(functions)h(mark)m(ed)g(for)g(exp)s(ort,)g(along)h(with)f(v)-5
b(ariables)32 b(exp)s(orted)g(for)g(the)330 5095 y(command,)e(passed)g
(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(40\))225 5230 y Fq(\017)60 b
+(vironmen)m(t],)e(page)g(41\))225 5230 y Fq(\017)60 b
Fu(traps)31 b(caugh)m(t)h(b)m(y)f(the)g(shell)h(are)f(reset)h(to)g(the)
f(v)-5 b(alues)32 b(inherited)e(from)h(the)g(shell's)h(paren)m(t,)g
(and)330 5340 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored)p
eop end
-%%Page: 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(A)41 b(command)g(in)m(v)m(ok)m(ed)i(in)e(this)h(separate)g(en)m
(vironmen)m(t)g(cannot)g(a\013ect)h(the)f(shell's)g(execution)150
408 y(en)m(vironmen)m(t.)275 552 y(Command)35 b(substitution,)j
@@ -11086,10 +11124,10 @@ y(The)j(en)m(vironmen)m(t)i(for)f(an)m(y)g(simple)h(command)f(or)g
(function)g(ma)m(y)g(b)s(e)g(augmen)m(ted)h(temp)s(orarily)150
3457 y(b)m(y)c(pre\014xing)e(it)i(with)g(parameter)g(assignmen)m(ts,)h
(as)e(describ)s(ed)g(in)g(Section)i(3.4)g([Shell)e(P)m(arameters],)150
-3566 y(page)g(19.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
+3566 y(page)g(20.)41 b(These)29 b(assignmen)m(t)i(statemen)m(ts)g
(a\013ect)f(only)g(the)f(en)m(vironmen)m(t)h(seen)g(b)m(y)f(that)h
(command.)275 3710 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g
-(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(61\),)h(then)e(all)g
+(Section)g(4.3.1)g([The)f(Set)g(Builtin],)h(page)g(62\),)h(then)e(all)g
(parameter)150 3820 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m
(vironmen)m(t)g(for)g(a)g(command,)f(not)h(just)f(those)i(that)f
(precede)g(the)150 3929 y(command)g(name.)275 4073 y(When)h(Bash)h(in)m
@@ -11116,9 +11154,9 @@ f(failure)h(mo)s(des.)275 5121 y(F)-8 b(or)32 b(the)g(shell's)g(purp)s
b(is)g(one)g(w)m(ell-de\014ned)g(w)m(a)m(y)g(to)h(indicate)g(success)f
(and)f(a)h(v)-5 b(ariet)m(y)35 b(of)f(w)m(a)m(ys)h(to)f(indicate)h(v)-5
b(arious)p eop end
-%%Page: 41 47
-TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(41)150 299
+%%Page: 42 48
+TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)150 299
y(failure)38 b(mo)s(des.)62 b(When)37 b(a)h(command)f(terminates)i(on)e
(a)h(fatal)h(signal)g(whose)e(n)m(um)m(b)s(er)f(is)i
Fr(N)p Fu(,)i(Bash)150 408 y(uses)30 b(the)g(v)-5 b(alue)31
@@ -11131,9 +11169,9 @@ b(128)p Ft(+)p Fr(N)42 b Fu(as)30 b(the)h(exit)g(status.)275
g(expansion)h(or)g(redirection,)i(the)f(exit)g(status)150
885 y(is)c(greater)i(than)e(zero.)275 1014 y(The)38 b(exit)h(status)g
(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 1123 y(ditional)i(Constructs],)h(page)f
+(Section)h(3.2.5.2)h([Con-)150 1123 y(ditional)i(Constructs],)h(page)f
(11\))g(and)e(some)i(of)f(the)g(list)g(constructs)g(\(see)h(Section)f
-(3.2.3)i([Lists],)150 1233 y(page)31 b(9\).)275 1362
+(3.2.4)i([Lists],)150 1233 y(page)31 b(9\).)275 1362
y(All)40 b(of)g(the)h(Bash)f(builtins)f(return)g(an)h(exit)h(status)g
(of)f(zero)h(if)f(they)g(succeed)g(and)g(a)g(non-zero)150
1471 y(status)34 b(on)f(failure,)i(so)f(they)g(ma)m(y)g(b)s(e)f(used)g
@@ -11151,7 +11189,7 @@ h(that)h(the)f Ft(wait)150 2244 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 2354 y(In)31 b(all)h(cases,)h(Bash)f(ignores)g
Ft(SIGQUIT)p Fu(.)42 b(If)32 b(job)f(con)m(trol)i(is)e(in)h(e\013ect)h
-(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(103\),)h
+(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(107\),)h
(Bash)f(ignores)g Ft(SIGTTIN)p Fu(,)d Ft(SIGTTOU)p Fu(,)h(and)h
Ft(SIGTSTP)p Fu(.)275 2592 y(Non-builtin)h(commands)g(started)g(b)m(y)g
(Bash)h(ha)m(v)m(e)g(signal)g(handlers)e(set)i(to)g(the)g(v)-5
@@ -11174,11 +11212,11 @@ g(from)g(sending)f(the)h Ft(SIGHUP)e Fu(signal)150 3488
y(to)i(a)g(particular)g(job,)g(it)g(should)f(b)s(e)g(remo)m(v)m(ed)h
(from)g(the)f(jobs)g(table)i(with)e(the)h Ft(disown)e
Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i
-(Builtins],)g(page)g(104\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i
+(Builtins],)g(page)g(108\))h(or)e(mark)m(ed)g(to)g(not)g(receiv)m(e)i
Ft(SIGHUP)c Fu(using)i Ft(disown)150 3707 y(-h)p Fu(.)275
3836 y(If)38 b(the)h Ft(huponexit)e Fu(shell)i(option)g(has)g(b)s(een)f
(set)i(with)f Ft(shopt)e Fu(\(see)j(Section)g(4.3.2)h([The)e(Shopt)150
-3946 y(Builtin],)31 b(page)g(65\),)h(Bash)f(sends)e(a)i
+3946 y(Builtin],)31 b(page)g(66\),)h(Bash)f(sends)e(a)i
Ft(SIGHUP)e Fu(to)i(all)g(jobs)f(when)f(an)i(in)m(teractiv)m(e)i(login)
e(shell)g(exits.)275 4075 y(If)38 b(Bash)h(is)g(w)m(aiting)h(for)f(a)g
(command)f(to)i(complete)g(and)e(receiv)m(es)j(a)e(signal)h(for)e(whic)
@@ -11196,7 +11234,7 @@ f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h
(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 5011 y(non-option)c
(argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g
Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150
-5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(85\),)i
+5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(86\),)i
(Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150
5230 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f
(creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31
@@ -11204,9 +11242,9 @@ b(shell)i(\014rst)e(searc)m(hes)150 5340 y(for)d(the)g(\014le)g(in)g
(the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i
(directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)p
eop end
-%%Page: 42 48
-TeXDict begin 42 47 bop 150 -116 a Fu(Chapter)30 b(3:)41
-b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(42)275 299
+%%Page: 43 49
+TeXDict begin 43 48 bop 150 -116 a Fu(Chapter)30 b(3:)41
+b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(43)275 299
y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f(sp)s
(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g(\014le,)150
408 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j(and)d(the)h(p)s
@@ -11230,39 +11268,52 @@ m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h
(that)f(the)150 1738 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s
(ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g
Ft(hash)f Fu(in)h(Section)h(4.1)150 1848 y([Bourne)30
-b(Shell)h(Builtins],)g(page)g(43\))h(are)e(retained)h(b)m(y)f(the)h(c)m
+b(Shell)h(Builtins],)g(page)g(44\))h(are)e(retained)h(b)m(y)f(the)h(c)m
(hild.)275 1983 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g
(a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution)
150 2092 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h
(script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p
-Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)d(the)g(line)h(sp)s
-(eci\014es)e(an)h(in)m(terpreter)g(for)g(the)g(program.)43
-b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p
-Fu(,)e(P)m(erl,)150 2311 y(or)g(some)h(other)g(in)m(terpreter)g(and)e
-(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h
-(language.)275 2446 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 2555 y(in)m(terpreter)33 b(name)h(on)f(the)g
-(\014rst)f(line)i(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)
-e(the)g(name)g(of)g(the)h(script)f(\014le,)150 2665 y(follo)m(w)m(ed)g
-(b)m(y)f(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31
-b(will)h(p)s(erform)e(this)i(action)h(on)e(op)s(erating)h(systems)150
-2775 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40
-b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f(of)h(Unix)f(limit)i
-(the)f(in)m(terpreter)150 2884 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g
-(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 3019 y(Bash)h(scripts)g
-(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h
-(Bash)f(has)g(b)s(een)f(installed)i(in)150 3128 y Ft(/bin)p
-Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f(will)h(b)s(e)f(used)
-f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g(if)f(it)h(is)f
-(executed)150 3238 y(under)j(another)h(shell.)p eop end
-%%Page: 43 49
-TeXDict begin 43 48 bop 3659 -116 a Fu(43)150 299 y Fp(4)80
+Ft(#!)p Fu(',)f(the)g(remainder)150 2202 y(of)27 b(the)g(line)g(sp)s
+(eci\014es)g(an)g(in)m(terpreter)g(for)g(the)g(program)g(and,)g(dep)s
+(ending)e(on)i(the)g(op)s(erating)h(system,)150 2311
+y(one)e(or)g(more)g(optional)h(argumen)m(ts)f(for)g(that)g(in)m
+(terpreter.)40 b(Th)m(us,)26 b(y)m(ou)g(can)g(sp)s(ecify)g(Bash,)h
+Ft(awk)p Fu(,)f(P)m(erl,)150 2421 y(or)k(some)h(other)g(in)m(terpreter)
+g(and)e(write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h
+(language.)275 2555 y(The)k(argumen)m(ts)h(to)h(the)f(in)m(terpreter)h
+(consist)f(of)h(one)f(or)g(more)g(optional)h(argumen)m(ts)f(follo)m
+(wing)150 2665 y(the)e(in)m(terpreter)g(name)g(on)g(the)g(\014rst)g
+(line)g(of)g(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y)e(the)g
+(name)g(of)g(the)g(script)150 2775 y(\014le,)k(follo)m(w)m(ed)g(b)m(y)e
+(the)g(rest)g(of)g(the)h(argumen)m(ts)f(supplied)f(to)i(the)f(script.)
+58 b(The)35 b(details)i(of)g(ho)m(w)f(the)150 2884 y(in)m(terpreter)26
+b(line)g(is)g(split)g(in)m(to)h(an)f(in)m(terpreter)g(name)g(and)f(a)h
+(set)h(of)e(argumen)m(ts)i(v)-5 b(ary)25 b(across)i(systems.)150
+2994 y(Bash)j(will)f(p)s(erform)g(this)g(action)i(on)e(op)s(erating)h
+(systems)g(that)g(do)f(not)h(handle)f(it)h(themselv)m(es.)42
+b(Note)150 3103 y(that)e(some)g(older)g(v)m(ersions)g(of)g(Unix)f
+(limit)i(the)f(in)m(terpreter)g(name)g(and)f(a)h(single)g(argumen)m(t)g
+(to)h(a)150 3213 y(maxim)m(um)21 b(of)g(32)h(c)m(haracters,)j(so)c
+(it's)h(not)g(p)s(ortable)f(to)h(assume)e(that)i(using)f(more)g(than)g
+(one)g(argumen)m(t)150 3323 y(will)31 b(w)m(ork.)275
+3457 y(Bash)h(scripts)g(often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g
+Fu(\(assuming)i(that)h(Bash)f(has)g(b)s(een)f(installed)i(in)150
+3567 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f
+(will)h(b)s(e)f(used)f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g
+(if)f(it)h(is)f(executed)150 3676 y(under)h(another)h(shell.)41
+b(It's)28 b(a)h(common)g(idiom)f(to)h(use)f Ft(env)g
+Fu(to)h(\014nd)e Ft(bash)g Fu(ev)m(en)i(if)f(it's)i(b)s(een)d
+(installed)150 3786 y(in)h(another)g(directory:)40 b
+Ft(#!/usr/bin/env)27 b(bash)f Fu(will)j(\014nd)d(the)j(\014rst)e(o)s
+(ccurrence)h(of)g Ft(bash)f Fu(in)h Ft($PATH)p Fu(.)p
+eop end
+%%Page: 44 50
+TeXDict begin 44 49 bop 3659 -116 a Fu(44)150 299 y Fp(4)80
b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34
b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50
b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150
608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f
-(simple)h(command)f(\(see)h(Section)g(3.2.1)h([Simple)f(Commands],)150
+(simple)h(command)f(\(see)h(Section)g(3.2.2)h([Simple)f(Commands],)150
718 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f
(directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37
b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g
@@ -11276,12 +11327,12 @@ b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g
(other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150
1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f
(con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h
-(Builtins],)150 1521 y(page)37 b(104\),)i(the)d(directory)g(stac)m(k)h
+(Builtins],)150 1521 y(page)37 b(108\),)i(the)d(directory)g(stac)m(k)h
(\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e
-(96\),)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(141\),)h(and)d(the)h
+(97\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h
+([Bash)f(History)g(Builtins],)h(page)g(146\),)h(and)d(the)h
(programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f
-(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(134\).)275
+(8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(139\).)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
@@ -11340,9 +11391,9 @@ b Fr(\014lename)42 b Fu(is)630 5230 y(not)f(found,)h(or)e(cannot)h(b)s
(e)f(read,)j(the)e(return)e(status)i(is)g(non-zero.)71
b(This)40 b(builtin)g(is)630 5340 y(equiv)-5 b(alen)m(t)32
b(to)f Ft(source)p Fu(.)p eop end
-%%Page: 44 50
-TeXDict begin 44 49 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(44)150 299 y Ft(break)870
+%%Page: 45 51
+TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(45)150 299 y Ft(break)870
428 y(break)46 b([)p Fj(n)p Ft(])630 558 y Fu(Exit)f(from)f(a)g
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
@@ -11415,9 +11466,9 @@ b(argumen)m(ts)h(are)g(concatenated)i(together)f(in)m(to)f(a)g(single)h
Ft(eval)p Fu(.)54 b(If)630 5340 y(there)31 b(are)f(no)h(argumen)m(ts)f
(or)h(only)f(empt)m(y)h(argumen)m(ts,)g(the)f(return)g(status)g(is)h
(zero.)p eop end
-%%Page: 45 51
-TeXDict begin 45 50 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f
-(Builtin)h(Commands)2079 b(45)150 299 y Ft(exec)870 430
+%%Page: 46 52
+TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)h(Shell)f
+(Builtin)h(Commands)2079 b(46)150 299 y Ft(exec)870 430
y(exec)47 b([-cl])f([-a)h Fj(name)p Ft(])f([)p Fj(command)g
Ft([)p Fj(arguments)p Ft(]])630 562 y Fu(If)36 b Fr(command)k
Fu(is)c(supplied,)h(it)g(replaces)h(the)e(shell)h(without)f(creating)i
@@ -11471,7 +11522,7 @@ Fr(v)-5 b(alue)p Fu(.)630 3499 y(The)29 b(return)e(status)j(is)f(zero)h
b(shell)h(v)-5 b(ariable)33 b(name,)i(or)e Ft(-f)f Fu(is)h(supplied)f
(with)h(a)g(name)g(that)h(is)f(not)h(a)630 3718 y(shell)d(function.)150
3871 y Ft(getopts)870 4003 y(getopts)46 b Fj(optstring)f(name)i
-Ft([)p Fj(args)p Ft(])630 4134 y(getopts)28 b Fu(is)i(used)g(b)m(y)g
+Ft([)p Fj(arg)f 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
(haracters)i(to)g(b)s(e)d(recognized;)49 b(if)42 b(a)f(c)m(haracter)j
@@ -11498,9 +11549,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: 46 52
-TeXDict begin 46 51 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(46)630 299 y(When)41
+%%Page: 47 53
+TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(When)41
b(the)h(end)e(of)i(options)g(is)f(encoun)m(tered,)k Ft(getopts)39
b Fu(exits)j(with)f(a)h(return)e(v)-5 b(alue)630 408
y(greater)32 b(than)e(zero.)41 b Ft(OPTIND)29 b Fu(is)h(set)h(to)g(the)
@@ -11508,9 +11559,10 @@ g(index)f(of)g(the)h(\014rst)f(non-option)g(argumen)m(t,)630
518 y(and)g Fr(name)35 b Fu(is)c(set)g(to)g(`)p Ft(?)p
Fu('.)630 655 y Ft(getopts)c Fu(normally)j(parses)e(the)i(p)s
(ositional)g(parameters,)g(but)e(if)i(more)f(argumen)m(ts)h(are)630
-765 y(giv)m(en)h(in)f Fr(args)p Fu(,)h Ft(getopts)e Fu(parses)h(those)h
-(instead.)630 902 y Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m
-(w)m(o)h(w)m(a)m(ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d
+765 y(supplied)f(as)i Fr(arg)38 b Fu(v)-5 b(alues,)31
+b Ft(getopts)e Fu(parses)h(those)h(instead.)630 902 y
+Ft(getopts)h Fu(can)h(rep)s(ort)g(errors)g(in)h(t)m(w)m(o)h(w)m(a)m
+(ys.)51 b(If)33 b(the)h(\014rst)e(c)m(haracter)k(of)d
Fr(optstring)42 b Fu(is)34 b(a)630 1011 y(colon,)g Fr(silen)m(t)h
Fu(error)d(rep)s(orting)f(is)i(used.)45 b(In)31 b(normal)h(op)s
(eration,)h(diagnostic)h(messages)630 1121 y(are)c(prin)m(ted)e(when)g
@@ -11581,9 +11633,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: 47 53
-TeXDict begin 47 52 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(47)630 299 y(a)37
+%%Page: 48 54
+TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(a)37
b(shell)g(function.)59 b(The)36 b Ft(-a)g Fu(option)h(means)f(eac)m(h)i
Fr(name)k Fu(refers)36 b(to)h(an)f(indexed)g(arra)m(y)630
408 y(v)-5 b(ariable;)28 b(the)f Ft(-A)e Fu(option)h(means)g(eac)m(h)h
@@ -11642,16 +11694,16 @@ 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 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 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
-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 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
+(b)m(y)g(the)630 3856 y(n)m(um)m(b)s(ers)d Ft($#)i Fu(do)m(wn)f(to)i
+Ft($#)p Fu(-)p Fr(n)p Ft(+)p Fu(1)e(are)h(unset.)48 b
+Fr(n)32 b Fu(m)m(ust)h(b)s(e)f(a)h(non-negativ)m(e)i(n)m(um)m(b)s(er)d
+(less)630 3966 y(than)g(or)g(equal)h(to)g Ft($#)p Fu(.)46
+b(If)31 b Fr(n)h Fu(is)g(zero)h(or)f(greater)i(than)e
+Ft($#)p Fu(,)g(the)h(p)s(ositional)g(parameters)630 4075
+y(are)e(not)h(c)m(hanged.)43 b(If)31 b Fr(n)g Fu(is)g(not)g(supplied,)f
+(it)i(is)f(assumed)f(to)i(b)s(e)f(1.)43 b(The)31 b(return)f(status)630
+4185 y(is)g(zero)i(unless)d Fr(n)h Fu(is)g(greater)i(than)e
+Ft($#)g Fu(or)g(less)h(than)f(zero,)i(non-zero)e(otherwise.)150
4362 y Ft(test)150 4472 y([)870 4615 y(test)47 b Fj(expr)630
4758 y Fu(Ev)-5 b(aluate)43 b(a)f(conditional)h(expression)f
Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f
@@ -11659,16 +11711,16 @@ Fr(expr)48 b Fu(and)41 b(return)g(a)h(status)g(of)g(0)g(\(true\))h(or)f
g(m)m(ust)h(b)s(e)f(a)i(separate)g(argumen)m(t.)41 b(Expressions)630
4977 y(are)26 b(comp)s(osed)f(of)g(the)h(primaries)f(describ)s(ed)f(b)s
(elo)m(w)h(in)g(Section)h(6.4)h([Bash)e(Conditional)630
-5087 y(Expressions],)39 b(page)g(90.)64 b Ft(test)37
+5087 y(Expressions],)39 b(page)g(91.)64 b Ft(test)37
b Fu(do)s(es)g(not)h(accept)i(an)m(y)e(options,)i(nor)e(do)s(es)f(it)h
(accept)630 5197 y(and)30 b(ignore)h(an)f(argumen)m(t)h(of)f
Ft(--)g Fu(as)h(signifying)f(the)h(end)f(of)g(options.)630
5340 y(When)g(the)h Ft([)f Fu(form)g(is)g(used,)g(the)g(last)i(argumen)
m(t)e(to)i(the)e(command)g(m)m(ust)h(b)s(e)e(a)i Ft(])p
Fu(.)p eop end
-%%Page: 48 54
-TeXDict begin 48 53 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(48)630 299 y(Expressions)23
+%%Page: 49 55
+TeXDict begin 49 54 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(49)630 299 y(Expressions)23
b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h(follo)m(wing)h(op)s
(erators,)g(listed)f(in)f(decreasing)630 408 y(order)30
b(of)h(precedence.)43 b(The)30 b(ev)-5 b(aluation)33
@@ -11697,7 +11749,7 @@ b(conditional)f(expressions)f(using)g(a)g(set)h(of)f(rules)630
b(If)33 b(the)h(\014rst)e(argumen)m(t)i(is)g(one)g(of)f(the)h(unary)
1110 2746 y(conditional)42 b(op)s(erators)f(\(see)g(Section)h(6.4)f
([Bash)g(Conditional)g(Expres-)1110 2856 y(sions],)34
-b(page)f(90\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
+b(page)f(91\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
(test)j(is)f(true.)47 b(If)1110 2966 y(the)33 b(\014rst)g(argumen)m(t)h
(is)f(not)g(a)h(v)-5 b(alid)34 b(unary)e(op)s(erator,)i(the)g
(expression)f(is)1110 3075 y(false.)630 3230 y(3)e(argumen)m(ts)1110
@@ -11705,7 +11757,7 @@ b(page)f(90\),)i(the)e(expression)f(is)h(true)g(if)g(the)g(unary)e
(order)g(listed.)1159 3472 y(1.)61 b(If)29 b(the)g(second)g(argumen)m
(t)h(is)f(one)h(of)f(the)h(binary)e(conditional)j(op)s(era-)1290
3582 y(tors)c(\(see)h(Section)g(6.4)g([Bash)g(Conditional)f
-(Expressions],)h(page)f(90\),)1290 3692 y(the)d(result)g(of)f(the)h
+(Expressions],)h(page)f(91\),)1290 3692 y(the)d(result)g(of)f(the)h
(expression)g(is)g(the)f(result)h(of)g(the)g(binary)f(test)h(using)1290
3801 y(the)35 b(\014rst)e(and)h(third)g(argumen)m(ts)h(as)f(op)s
(erands.)52 b(The)34 b(`)p Ft(-a)p Fu(')g(and)g(`)p Ft(-o)p
@@ -11727,9 +11779,9 @@ h(remaining)g(argumen)m(ts.)50 b(Oth-)1110 5230 y(erwise,)34
b(the)f(expression)g(is)g(parsed)g(and)f(ev)-5 b(aluated)34
b(according)h(to)e(prece-)1110 5340 y(dence)e(using)e(the)i(rules)f
(listed)h(ab)s(o)m(v)m(e.)p eop end
-%%Page: 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(5)31
+%%Page: 50 56
+TeXDict begin 50 55 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(50)630 299 y(5)31
b(or)f(more)h(argumen)m(ts)1110 408 y(The)43 b(expression)f(is)i
(parsed)e(and)g(ev)-5 b(aluated)45 b(according)f(to)f(precedence)1110
518 y(using)30 b(the)g(rules)g(listed)h(ab)s(o)m(v)m(e.)630
@@ -11778,7 +11830,7 @@ b(the)g(\014rst)f(command)h(executes)i(in)e(a)g(shell)h(function.)37
b(Refer)22 b(to)h(the)g(description)f(of)630 3493 y(the)i
Ft(extdebug)d Fu(option)j(to)h(the)f Ft(shopt)e Fu(builtin)h(\(see)i
(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)630 3602
-y(page)33 b(65\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g
+y(page)33 b(66\))g(for)f(details)h(of)f(its)h(e\013ect)g(on)f(the)g
Ft(DEBUG)f Fu(trap.)46 b(If)31 b(a)i Fr(sigsp)s(ec)38
b Fu(is)32 b Ft(RETURN)p Fu(,)f(the)630 3712 y(command)h
Fr(arg)41 b Fu(is)33 b(executed)g(eac)m(h)h(time)f(a)g(shell)g
@@ -11813,1287 +11865,1257 @@ b(alues)28 b(in)e(a)i(subshell)630 5199 y(or)i(subshell)g(en)m
(status)i(is)f(zero)h(unless)f(a)h Fr(sigsp)s(ec)36 b
Fu(do)s(es)30 b(not)h(sp)s(ecify)f(a)g(v)-5 b(alid)31
b(signal.)p eop end
-%%Page: 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(umask)870
-427 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630
-554 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g
+%%Page: 51 57
+TeXDict begin 51 56 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(51)150 299 y Ft(umask)870
+434 y(umask)46 b([-p])h([-S])g([)p Fj(mode)p Ft(])630
+570 y Fu(Set)30 b(the)f(shell)h(pro)s(cess's)f(\014le)h(creation)g
(mask)g(to)g Fr(mo)s(de)p Fu(.)40 b(If)29 b Fr(mo)s(de)34
-b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 664 y(it)e(is)f(in)m
+b Fu(b)s(egins)29 b(with)g(a)h(digit,)630 679 y(it)e(is)f(in)m
(terpreted)g(as)g(an)g(o)s(ctal)i(n)m(um)m(b)s(er;)e(if)g(not,)h(it)g
(is)f(in)m(terpreted)g(as)g(a)h(sym)m(b)s(olic)f(mo)s(de)630
-773 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g
+789 y(mask)i(similar)g(to)g(that)h(accepted)g(b)m(y)f(the)g
Ft(chmod)e Fu(command.)40 b(If)28 b Fr(mo)s(de)34 b Fu(is)28
-b(omitted,)j(the)630 883 y(curren)m(t)39 b(v)-5 b(alue)40
+b(omitted,)j(the)630 899 y(curren)m(t)39 b(v)-5 b(alue)40
b(of)f(the)g(mask)g(is)h(prin)m(ted.)66 b(If)39 b(the)g
-Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 993
+Ft(-S)g Fu(option)g(is)h(supplied)d(without)j(a)630 1008
y Fr(mo)s(de)d Fu(argumen)m(t,)d(the)e(mask)g(is)h(prin)m(ted)f(in)g(a)
g(sym)m(b)s(olic)h(format.)47 b(If)32 b(the)g Ft(-p)g
-Fu(option)h(is)630 1102 y(supplied,)f(and)f Fr(mo)s(de)37
+Fu(option)h(is)630 1118 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 1212 y(input.)62 b(The)38
+(y)g(b)s(e)e(reused)h(as)630 1227 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 1321 y Fr(mo)s(de)d Fu(argumen)m(t)c
-(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1449
+g(c)m(hanged)g(or)g(if)g(no)630 1337 y Fr(mo)s(de)d Fu(argumen)m(t)c
+(is)f(supplied,)g(and)f(non-zero)i(otherwise.)630 1473
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
-1559 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p
+1582 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 1668 y(of)d Ft(755)p Fu(.)150 1814 y
-Ft(unset)870 1942 y(unset)46 b([-fnv])g([)p Fj(name)p
-Ft(])630 2069 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
+(ermissions)630 1692 y(of)d Ft(755)p Fu(.)150 1853 y
+Ft(unset)870 1989 y(unset)46 b([-fnv])g([)p Fj(name)p
+Ft(])630 2124 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35
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 2179
+Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 2234
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 2288 y(the)37
+Ft(-f)g Fu(option)g(is)h(giv)m(en,)630 2343 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
-2398 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g
+2453 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g
Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f
-Fr(nameref)51 b Fu(attribute,)630 2508 y Fr(name)42 b
+Fr(nameref)51 b Fu(attribute,)630 2563 y Fr(name)42 b
Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5
b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect)
-h(if)630 2617 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65
+h(if)630 2672 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65
b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h
-Fr(name)j Fu(refers)39 b(to)h(a)630 2727 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 2836 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 2946
-y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8
-b(.)150 3173 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150
-3332 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m
+Fr(name)j Fu(refers)39 b(to)h(a)630 2782 y(v)-5 b(ariable;)45
+b(if)39 b(there)g(is)g(no)g(v)-5 b(ariable)40 b(b)m(y)f(that)h(name,)h
+(a)f(function)f(with)g(that)g(name,)j(if)630 2891 y(an)m(y)-8
+b(,)34 b(is)e(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33
+b(and)f(functions)g(ma)m(y)h(not)f(b)s(e)g(unset.)46
+b(Some)33 b(shell)630 3001 y(v)-5 b(ariables)29 b(lose)h(their)e(sp)s
+(ecial)h(b)s(eha)m(vior)g(if)f(they)h(are)g(unset;)g(suc)m(h)f(b)s(eha)
+m(vior)h(is)g(noted)f(in)630 3110 y(the)35 b(description)h(of)f(the)g
+(individual)g(v)-5 b(ariables.)56 b(The)34 b(return)g(status)i(is)f
+(zero)h(unless)f(a)630 3220 y Fr(name)h Fu(is)30 b(readonly)-8
+b(.)150 3464 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150
+3623 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m
(h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150
-3442 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 3588 y Ft(alias)870
-3715 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p
-Ft(])d(...)o(])630 3843 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f
+3733 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g
+(in)g(the)h Fm(posix)e Fu(standard.)150 3895 y Ft(alias)870
+4031 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p
+Ft(])d(...)o(])630 4166 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f
(the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f
-(aliases)h(on)f(the)630 3953 y(standard)g(output)g(in)g(a)h(form)f
+(aliases)h(on)f(the)630 4276 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 4062 y(are)j(supplied,)e(an)i(alias)g(is)f
+b(If)25 b(argumen)m(ts)630 4385 y(are)j(supplied,)e(an)i(alias)g(is)f
(de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27
b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26
-b(no)h Fr(v)-5 b(alue)630 4172 y Fu(is)37 b(giv)m(en,)j(the)d(name)g
+b(no)h Fr(v)-5 b(alue)630 4495 y Fu(is)37 b(giv)m(en,)j(the)d(name)g
(and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61
-b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4281 y(Section)31
-b(6.6)h([Aliases],)g(page)f(93.)150 4427 y Ft(bind)870
-4555 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870
-4664 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p
+b(Aliases)38 b(are)f(describ)s(ed)f(in)630 4605 y(Section)31
+b(6.6)h([Aliases],)g(page)f(94.)150 4766 y Ft(bind)870
+4902 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870
+5011 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p
Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870
-4774 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870
-4884 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)
-870 4993 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)
-870 5103 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj
-(keyseq:readline-command)630 5230 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(107\))g(k)m(ey)630 5340 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,)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(or)44
+5121 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870
+5230 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command)
+870 5340 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name)p
+eop end
+%%Page: 52 58
+TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(52)870 299 y Ft(bind)47
+b([-m)g Fj(keymap)p Ft(])e Fj(keyseq:readline-command)630
+432 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g
+([Command)f(Line)h(Editing],)j(page)e(111\))g(k)m(ey)630
+542 y(and)36 b(function)g(bindings,)i(bind)d(a)i(k)m(ey)g(sequence)g
+(to)h(a)f(Readline)g(function)f(or)h(macro,)630 651 y(or)44
b(set)h(a)g(Readline)f(v)-5 b(ariable.)83 b(Eac)m(h)45
b(non-option)g(argumen)m(t)f(is)g(a)h(command)f(as)g(it)630
-408 y(w)m(ould)e(app)s(ear)f(in)h(a)h(Readline)g(initialization)i
+761 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
-518 y(File],)c(page)d(110\),)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 628
+870 y(File],)c(page)d(114\),)j(but)c(eac)m(h)h(binding)f(or)g(command)h
+(m)m(ust)f(b)s(e)g(passed)g(as)h(a)g(separate)630 980
y(argumen)m(t;)31 b(e.g.,)h(`)p Ft("\\C-x\\C-r":re-read-init-f)o(ile)p
-Fu('.)630 762 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m
-(wing)h(meanings:)630 921 y Ft(-m)e Fj(keymap)66 b Fu(Use)54
+Fu('.)630 1113 y(Options,)e(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m
+(wing)h(meanings:)630 1270 y Ft(-m)e Fj(keymap)66 b Fu(Use)54
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 1031 y(bindings.)46 b(Acceptable)34
+m(y)f(the)g(subsequen)m(t)1110 1379 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 1140 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
+Fu(,)1110 1489 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 1250 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
+Fu(,)f(and)1110 1598 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 1359 y(synon)m(ym\);)30
+Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 1708 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 1518 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
-(Readline)g(functions.)630 1678 y Ft(-p)384 b Fu(Displa)m(y)34
+Fu(.)630 1864 y Ft(-l)384 b Fu(List)31 b(the)f(names)g(of)h(all)g
+(Readline)g(functions.)630 2021 y Ft(-p)384 b Fu(Displa)m(y)34
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 1787 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 1946
+(a)m(y)f(that)1110 2131 y(they)e(can)f(b)s(e)g(used)g(as)g(input)g(or)g
+(in)g(a)h(Readline)g(initialization)i(\014le.)630 2287
y Ft(-P)384 b Fu(List)31 b(curren)m(t)f(Readline)h(function)f(names)g
-(and)g(bindings.)630 2105 y Ft(-v)384 b Fu(Displa)m(y)25
+(and)g(bindings.)630 2444 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 2215
+b(in)g(suc)m(h)f(a)i(w)m(a)m(y)f(that)h(they)1110 2553
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 2374 y Ft(-V)384 b Fu(List)31
+(initialization)j(\014le.)630 2710 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 2533 y Ft(-s)384 b Fu(Displa)m(y)39 b(Readline)f(k)m(ey)g
+b(alues.)630 2866 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
-2643 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 2752
-y(Readline)d(initialization)i(\014le.)630 2911 y Ft(-S)384
+2976 y(they)d(output)f(in)h(suc)m(h)f(a)h(w)m(a)m(y)h(that)f(they)g
+(can)g(b)s(e)f(used)g(as)h(input)e(or)i(in)g(a)1110 3086
+y(Readline)d(initialization)i(\014le.)630 3242 y Ft(-S)384
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 3021 y(they)31 b(output.)630
-3180 y Ft(-f)f Fj(filename)1110 3290 y Fu(Read)h(k)m(ey)g(bindings)e
-(from)h Fr(\014lename)p Fu(.)630 3449 y Ft(-q)g Fj(function)1110
-3558 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 3717 y Ft(-u)g
-Fj(function)1110 3827 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 3986 y Ft(-r)g
+(macros)g(and)f(the)g(strings)1110 3352 y(they)31 b(output.)630
+3508 y Ft(-f)f Fj(filename)1110 3618 y Fu(Read)h(k)m(ey)g(bindings)e
+(from)h Fr(\014lename)p Fu(.)630 3774 y Ft(-q)g Fj(function)1110
+3884 y Fu(Query)g(ab)s(out)g(whic)m(h)g(k)m(eys)h(in)m(v)m(ok)m(e)h
+(the)f(named)f Fr(function)p Fu(.)630 4041 y Ft(-u)g
+Fj(function)1110 4150 y Fu(Un)m(bind)f(all)i(k)m(eys)g(b)s(ound)e(to)i
+(the)f(named)g Fr(function)p Fu(.)630 4307 y Ft(-r)g
Fj(keyseq)66 b Fu(Remo)m(v)m(e)32 b(an)m(y)f(curren)m(t)f(binding)f
-(for)h Fr(k)m(eyseq)p Fu(.)630 4145 y Ft(-x)g Fj(keyseq:shell-command)
-1110 4255 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
+(for)h Fr(k)m(eyseq)p Fu(.)630 4463 y Ft(-x)g Fj(keyseq:shell-command)
+1110 4573 y Fu(Cause)35 b Fr(shell-command)k Fu(to)d(b)s(e)f(executed)h
(whenev)m(er)f Fr(k)m(eyseq)j Fu(is)d(en)m(tered.)1110
-4364 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 4474
+4682 y(When)46 b Fr(shell-command)k Fu(is)c(executed,)51
+b(the)46 b(shell)g(sets)g(the)g Ft(READLINE_)1110 4792
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 4583
-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 4693 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 4803 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 4912 y(editing)h(state.)
-630 5071 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
-5181 y(commands)j(in)g(a)h(format)g(that)f(can)h(b)s(e)f(reused)f(as)i
-(input.)630 5340 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.)p eop end
-%%Page: 52 58
-TeXDict begin 52 57 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(52)150 299 y Ft(builtin)870
-437 y(builtin)46 b([)p Fj(shell-builtin)e Ft([)p Fj(args)p
-Ft(]])630 576 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 685 y(when)29 b(de\014ning)h(a)g(shell)h
+(the)g(Readline)g(line)g(bu\013er)f(and)g(the)1110 4902
+y Ft(READLINE_POINT)21 b Fu(and)k Ft(READLINE_MARK)c
+Fu(v)-5 b(ariables)26 b(to)g(the)g(curren)m(t)f(lo)s(ca-)1110
+5011 y(tion)f(of)g(the)g(insertion)g(p)s(oin)m(t)g(and)f(the)h(sa)m(v)m
+(ed)h(insertion)f(p)s(oin)m(t)g(\(the)g Fr(mark)6 b Fu(\),)1110
+5121 y(resp)s(ectiv)m(ely)-8 b(.)43 b(If)30 b(the)h(executed)g(command)
+g(c)m(hanges)g(the)g(v)-5 b(alue)31 b(of)g(an)m(y)g(of)1110
+5230 y Ft(READLINE_LINE)p Fu(,)40 b Ft(READLINE_POINT)p
+Fu(,)f(or)i Ft(READLINE_MARK)p Fu(,)e(those)i(new)1110
+5340 y(v)-5 b(alues)31 b(will)f(b)s(e)g(re\015ected)h(in)f(the)h
+(editing)g(state.)p eop end
+%%Page: 53 59
+TeXDict begin 53 58 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(53)630 299 y Ft(-X)384
+b Fu(List)27 b(all)i(k)m(ey)f(sequences)f(b)s(ound)e(to)j(shell)g
+(commands)e(and)h(the)g(asso)s(ciated)1110 408 y(commands)j(in)g(a)h
+(format)g(that)f(can)h(b)s(e)f(reused)f(as)i(input.)630
+568 y(The)26 b(return)f(status)i(is)f(zero)i(unless)d(an)i(in)m(v)-5
+b(alid)27 b(option)g(is)f(supplied)f(or)i(an)f(error)g(o)s(ccurs.)150
+727 y Ft(builtin)870 862 y(builtin)46 b([)p Fj(shell-builtin)e
+Ft([)p Fj(args)p Ft(]])630 996 y Fu(Run)35 b(a)i(shell)f(builtin,)i
+(passing)e(it)h Fr(args)p Fu(,)h(and)e(return)f(its)i(exit)g(status.)59
+b(This)35 b(is)i(useful)630 1106 y(when)29 b(de\014ning)h(a)g(shell)h
(function)f(with)g(the)g(same)h(name)f(as)h(a)g(shell)f(builtin,)g
-(retaining)630 795 y(the)k(functionalit)m(y)h(of)f(the)f(builtin)g
+(retaining)630 1215 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
-905 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f(builtin)
-g(command.)150 1072 y Ft(caller)870 1210 y(caller)46
-b([)p Fj(expr)p Ft(])630 1349 y Fu(Returns)34 b(the)g(con)m(text)j(of)e
+1325 y(zero)e(if)g Fr(shell-builtin)f Fu(is)g(not)h(a)g(shell)f
+(builtin)g(command.)150 1484 y Ft(caller)870 1619 y(caller)46
+b([)p Fj(expr)p Ft(])630 1753 y Fu(Returns)34 b(the)g(con)m(text)j(of)e
(an)m(y)g(activ)m(e)i(subroutine)c(call)j(\(a)f(shell)g(function)f(or)h
-(a)g(script)630 1458 y(executed)c(with)f(the)h Ft(.)f
-Fu(or)g Ft(source)f Fu(builtins\).)630 1597 y(Without)45
+(a)g(script)630 1863 y(executed)c(with)f(the)h Ft(.)f
+Fu(or)g Ft(source)f Fu(builtins\).)630 1998 y(Without)45
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 1706
+m(b)s(er)f(and)g(source)g(\014lename)h(of)g(the)630 2107
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
-1816 y Fu(displa)m(ys)k(the)f(line)h(n)m(um)m(b)s(er,)h(subroutine)d
+2217 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
-1925 y(that)c(p)s(osition)g(in)f(the)h(curren)m(t)f(execution)i(call)g
+2326 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
-2035 y(b)s(e)30 b(used,)g(for)g(example,)h(to)g(prin)m(t)f(a)h(stac)m
+2436 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
-2173 y(The)d(return)g(v)-5 b(alue)29 b(is)g(0)g(unless)f(the)h(shell)g
+2570 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 2283 y Fu(do)s(es)h(not)h(corresp)s(ond)e(to)i(a)g(v)-5
+Fr(expr)630 2680 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
-2450 y Ft(command)870 2589 y(command)46 b([-pVv])g Fj(command)g
-Ft([)p Fj(arguments)f Ft(...)o(])630 2727 y Fu(Runs)32
+2839 y Ft(command)870 2974 y(command)46 b([-pVv])g Fj(command)g
+Ft([)p Fj(arguments)f Ft(...)o(])630 3108 y Fu(Runs)32
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 2837
+(shell)h(function)e(named)h Fr(command)p Fu(.)630 3218
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 2946 y(executed.)59
+h(searc)m(hing)h(the)f Ft(PATH)f Fu(are)630 3328 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 3056 y(the)c(function)f(will)h(execute)g(the)g(external)g
+b(within)630 3437 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
-3165 y(tion)36 b(recursiv)m(ely)-8 b(.)56 b(The)34 b
+3547 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 3275 y(guaran)m(teed)f(to)
+b(alue)35 b(for)g Ft(PATH)f Fu(that)i(is)630 3656 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 3385
+b(The)33 b(return)g(status)h(in)f(this)h(case)630 3766
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
-3494 y Fr(command)34 b Fu(otherwise.)630 3633 y(If)e(either)h(the)f
+3875 y Fr(command)34 b Fu(otherwise.)630 4010 y(If)e(either)h(the)f
Ft(-V)g Fu(or)g Ft(-v)g Fu(option)h(is)f(supplied,)g(a)h(description)f
-(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 3742 y(The)f
+(of)h Fr(command)j Fu(is)c(prin)m(ted.)630 4120 y(The)f
Ft(-v)h Fu(option)g(causes)g(a)g(single)h(w)m(ord)f(indicating)g(the)g
-(command)g(or)g(\014le)g(name)g(used)630 3852 y(to)40
+(command)g(or)g(\014le)g(name)g(used)630 4229 y(to)40
b(in)m(v)m(ok)m(e)h Fr(command)h Fu(to)e(b)s(e)e(displa)m(y)m(ed;)44
b(the)39 b Ft(-V)f Fu(option)i(pro)s(duces)d(a)j(more)f(v)m(erb)s(ose)
-630 3961 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
+630 4339 y(description.)61 b(In)36 b(this)h(case,)j(the)e(return)e
(status)h(is)g(zero)h(if)f Fr(command)k Fu(is)c(found,)h(and)630
-4071 y(non-zero)31 b(if)f(not.)150 4238 y Ft(declare)870
-4377 y(declare)46 b([-aAfFgilnrtux])d([-p])k([)p Fj(name)p
-Ft([=)p Fj(value)p Ft(])d(...)o(])630 4515 y Fu(Declare)29
+4448 y(non-zero)31 b(if)f(not.)150 4608 y Ft(declare)870
+4742 y(declare)46 b([-aAfFgiIlnrtux])d([-p])k([)p Fj(name)p
+Ft([=)p Fj(value)p Ft(])d(...)o(])630 4877 y Fu(Declare)29
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 4625 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
-b(instead.)630 4763 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
+(y)630 4986 y(the)k(v)-5 b(alues)30 b(of)h(v)-5 b(ariables)31
+b(instead.)630 5121 y(The)k Ft(-p)f Fu(option)i(will)g(displa)m(y)f
(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 4873 y Fu(is)i(used)g(with)g
+Fr(name)p Fu(.)55 b(When)36 b Ft(-p)630 5230 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 4982 y(ignored.)630
-5121 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
-5230 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
+Ft(-f)g Fu(and)g Ft(-F)p Fu(,)i(are)630 5340 y(ignored.)p
+eop end
+%%Page: 54 60
+TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)40
+b Ft(-p)g Fu(is)g(supplied)f(without)i Fr(name)k Fu(argumen)m(ts,)f
+Ft(declare)38 b Fu(will)j(displa)m(y)f(the)h(at-)630
+408 y(tributes)31 b(and)f(v)-5 b(alues)31 b(of)g(all)h(v)-5
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 5340 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)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(the)33
-b(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
-408 y(displa)m(y)d(to)g(shell)f(functions.)630 544 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 654
-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
-764 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i([The)d(Shopt)f
-(Builtin],)k(page)e(65\),)i(the)d(source)h(\014le)f(name)h(and)630
-873 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 1009 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
-1119 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
-1228 y(cases.)630 1364 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 1474 y(i\014ed)j(attributes)h(or)f(to)h
-(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630 1636
-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
-1745 y(page)31 b(94\).)630 1908 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
-2017 y(page)31 b(94\).)630 2179 y Ft(-f)384 b Fu(Use)31
-b(function)f(names)g(only)-8 b(.)630 2342 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
-2451 y(\(see)29 b(Section)f(6.5)h([Shell)f(Arithmetic],)i(page)e(92\))h
-(is)f(p)s(erformed)e(when)h(the)1110 2561 y(v)-5 b(ariable)31
-b(is)g(assigned)f(a)h(v)-5 b(alue.)630 2723 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
-2833 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 2995
-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 3104 y(to)32 b(another)g(v)-5 b(ariable.)46
+(the)g(addi-)630 518 y(tional)k(options.)52 b(If)34 b(no)g(other)g
+(options)g(are)g(supplied)f(with)h Ft(-p)p Fu(,)g Ft(declare)e
+Fu(will)j(displa)m(y)630 628 y(the)e(attributes)h(and)e(v)-5
+b(alues)33 b(of)g(all)h(shell)f(v)-5 b(ariables.)50 b(The)32
+b Ft(-f)g Fu(option)i(will)f(restrict)h(the)630 737 y(displa)m(y)d(to)g
+(shell)f(functions.)630 877 y(The)41 b Ft(-F)f Fu(option)i(inhibits)e
+(the)i(displa)m(y)f(of)g(function)g(de\014nitions;)47
+b(only)41 b(the)g(function)630 986 y(name)30 b(and)f(attributes)i(are)f
+(prin)m(ted.)40 b(If)30 b(the)g Ft(extdebug)e Fu(shell)i(option)g(is)g
+(enabled)g(using)630 1096 y Ft(shopt)24 b Fu(\(see)i(Section)g(4.3.2)i
+([The)d(Shopt)f(Builtin],)k(page)e(66\),)i(the)d(source)h(\014le)f
+(name)h(and)630 1205 y(line)31 b(n)m(um)m(b)s(er)e(where)h(eac)m(h)h
+Fr(name)36 b Fu(is)30 b(de\014ned)f(are)i(displa)m(y)m(ed)g(as)g(w)m
+(ell.)41 b Ft(-F)30 b Fu(implies)h Ft(-f)p Fu(.)630 1345
+y(The)36 b Ft(-g)g Fu(option)h(forces)g(v)-5 b(ariables)37
+b(to)g(b)s(e)f(created)i(or)e(mo)s(di\014ed)g(at)h(the)g(global)h(scop)
+s(e,)630 1455 y(ev)m(en)g(when)e Ft(declare)f Fu(is)j(executed)g(in)f
+(a)g(shell)h(function.)61 b(It)37 b(is)g(ignored)h(in)f(all)h(other)630
+1564 y(cases.)630 1704 y(The)50 b Ft(-I)h Fu(option)g(causes)h(lo)s
+(cal)g(v)-5 b(ariables)51 b(to)h(inherit)f(the)g(attributes)g(\(except)
+i(the)630 1813 y Fr(nameref)63 b Fu(attribute\))46 b(and)f(v)-5
+b(alue)45 b(of)h(an)m(y)f(existing)i(v)-5 b(ariable)46
+b(with)f(the)g(same)h Fr(name)630 1923 y Fu(at)40 b(a)f(surrounding)d
+(scop)s(e.)66 b(If)39 b(there)g(is)g(no)f(existing)i(v)-5
+b(ariable,)42 b(the)d(lo)s(cal)h(v)-5 b(ariable)40 b(is)630
+2032 y(initially)32 b(unset.)630 2172 y(The)27 b(follo)m(wing)h
+(options)g(can)f(b)s(e)g(used)f(to)i(restrict)g(output)e(to)i(v)-5
+b(ariables)28 b(with)f(the)g(sp)s(ec-)630 2281 y(i\014ed)j(attributes)h
+(or)f(to)h(giv)m(e)h(v)-5 b(ariables)31 b(attributes:)630
+2451 y Ft(-a)384 b Fu(Eac)m(h)36 b Fr(name)k Fu(is)34
+b(an)h(indexed)g(arra)m(y)g(v)-5 b(ariable)36 b(\(see)f(Section)h(6.7)g
+([Arra)m(ys],)1110 2560 y(page)31 b(95\).)630 2730 y
+Ft(-A)384 b Fu(Eac)m(h)24 b Fr(name)k Fu(is)23 b(an)g(asso)s(ciativ)m
+(e)j(arra)m(y)e(v)-5 b(ariable)24 b(\(see)g(Section)g(6.7)g([Arra)m
+(ys],)1110 2839 y(page)31 b(95\).)630 3009 y Ft(-f)384
+b Fu(Use)31 b(function)f(names)g(only)-8 b(.)630 3178
+y Ft(-i)384 b Fu(The)36 b(v)-5 b(ariable)37 b(is)f(to)h(b)s(e)f
+(treated)h(as)g(an)f(in)m(teger;)41 b(arithmetic)c(ev)-5
+b(aluation)1110 3288 y(\(see)29 b(Section)f(6.5)h([Shell)f
+(Arithmetic],)i(page)e(93\))h(is)f(p)s(erformed)e(when)h(the)1110
+3397 y(v)-5 b(ariable)31 b(is)g(assigned)f(a)h(v)-5 b(alue.)630
+3567 y Ft(-l)384 b Fu(When)26 b(the)g(v)-5 b(ariable)27
+b(is)f(assigned)g(a)g(v)-5 b(alue,)28 b(all)f(upp)s(er-case)e(c)m
+(haracters)j(are)1110 3676 y(con)m(v)m(erted)k(to)f(lo)m(w)m(er-case.)
+43 b(The)30 b(upp)s(er-case)g(attribute)h(is)g(disabled.)630
+3846 y Ft(-n)384 b Fu(Giv)m(e)28 b(eac)m(h)g Fr(name)k
+Fu(the)27 b Fr(nameref)44 b Fu(attribute,)28 b(making)f(it)h(a)f(name)f
+(reference)1110 3955 y(to)32 b(another)g(v)-5 b(ariable.)46
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 3214 y Fr(name)p Fu(.)54 b(All)35
+(v)-5 b(alue)32 b(of)1110 4065 y Fr(name)p Fu(.)54 b(All)35
b(references,)h(assignmen)m(ts,)h(and)d(attribute)h(mo)s(di\014cations)
-g(to)1110 3324 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or)
+g(to)1110 4174 y Fr(name)p Fu(,)27 b(except)f(for)f(those)h(using)f(or)
g(c)m(hanging)h(the)f Ft(-n)g Fu(attribute)h(itself,)i(are)1110
-3433 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25
+4284 y(p)s(erformed)22 b(on)h(the)g(v)-5 b(ariable)25
b(referenced)e(b)m(y)g Fr(name)5 b Fu('s)23 b(v)-5 b(alue.)39
-b(The)23 b(nameref)1110 3543 y(attribute)31 b(cannot)g(b)s(e)f(applied)
-g(to)h(arra)m(y)g(v)-5 b(ariables.)630 3705 y Ft(-r)384
+b(The)23 b(nameref)1110 4394 y(attribute)31 b(cannot)g(b)s(e)f(applied)
+g(to)h(arra)m(y)g(v)-5 b(ariables.)630 4563 y Ft(-r)384
b Fu(Mak)m(e)25 b Fr(name)5 b Fu(s)23 b(readonly)-8 b(.)39
b(These)24 b(names)f(cannot)h(then)f(b)s(e)g(assigned)h(v)-5
-b(alues)1110 3814 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
-(statemen)m(ts)h(or)f(unset.)630 3977 y Ft(-t)384 b Fu(Giv)m(e)33
+b(alues)1110 4672 y(b)m(y)30 b(subsequen)m(t)g(assignmen)m(t)h
+(statemen)m(ts)h(or)f(unset.)630 4842 y Ft(-t)384 b Fu(Giv)m(e)33
b(eac)m(h)h Fr(name)j Fu(the)32 b Ft(trace)f Fu(attribute.)46
-b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4086
+b(T)-8 b(raced)32 b(functions)g(inherit)g(the)1110 4951
y Ft(DEBUG)26 b Fu(and)h Ft(RETURN)f Fu(traps)h(from)g(the)h(calling)h
-(shell.)40 b(The)27 b(trace)i(attribute)1110 4196 y(has)h(no)g(sp)s
-(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 4358 y
+(shell.)40 b(The)27 b(trace)i(attribute)1110 5061 y(has)h(no)g(sp)s
+(ecial)h(meaning)g(for)f(v)-5 b(ariables.)630 5230 y
Ft(-u)384 b Fu(When)28 b(the)h(v)-5 b(ariable)29 b(is)f(assigned)h(a)f
(v)-5 b(alue,)30 b(all)f(lo)m(w)m(er-case)i(c)m(haracters)f(are)1110
-4468 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 4630
-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
-4739 y(ronmen)m(t.)630 4902 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 5011 y(`)p Ft(+a)p Fu(')23
+5340 y(con)m(v)m(erted)i(to)f(upp)s(er-case.)40 b(The)30
+b(lo)m(w)m(er-case)j(attribute)e(is)g(disabled.)p eop
+end
+%%Page: 55 61
+TeXDict begin 55 60 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(55)630 299 y Ft(-x)384
+b Fu(Mark)30 b(eac)m(h)h Fr(name)k Fu(for)29 b(exp)s(ort)h(to)g
+(subsequen)m(t)f(commands)h(via)g(the)g(en)m(vi-)1110
+408 y(ronmen)m(t.)630 560 y(Using)e(`)p Ft(+)p Fu(')h(instead)f(of)g(`)
+p Ft(-)p Fu(')g(turns)f(o\013)i(the)f(attribute)h(instead,)g(with)f
+(the)g(exceptions)h(that)630 670 y(`)p Ft(+a)p Fu(')23
b(and)f(`)p Ft(+A)p Fu(')h(ma)m(y)h(not)f(b)s(e)f(used)g(to)i(destro)m
(y)g(arra)m(y)f(v)-5 b(ariables)24 b(and)e(`)p Ft(+r)p
-Fu(')h(will)g(not)g(remo)m(v)m(e)630 5121 y(the)36 b(readonly)h
+Fu(')h(will)g(not)g(remo)m(v)m(e)630 780 y(the)36 b(readonly)h
(attribute.)59 b(When)36 b(used)f(in)h(a)h(function,)g
-Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 5230
+Ft(declare)d Fu(mak)m(es)j(eac)m(h)h Fr(name)630 889
y Fu(lo)s(cal,)e(as)d(with)h(the)f Ft(local)f Fu(command,)j(unless)d
(the)i Ft(-g)f Fu(option)h(is)f(used.)49 b(If)33 b(a)h(v)-5
-b(ariable)630 5340 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p
+b(ariable)630 999 y(name)30 b(is)h(follo)m(w)m(ed)h(b)m(y)e(=)p
Fr(v)-5 b(alue)p Fu(,)31 b(the)f(v)-5 b(alue)31 b(of)g(the)f(v)-5
-b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)p
-eop end
-%%Page: 54 60
-TeXDict begin 54 59 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(54)630 299 y(When)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
-408 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m
+b(ariable)32 b(is)e(set)h(to)g Fr(v)-5 b(alue)p Fu(.)630
+1130 y(When)41 b(using)g Ft(-a)g Fu(or)h Ft(-A)e Fu(and)h(the)h(comp)s
+(ound)e(assignmen)m(t)i(syn)m(tax)g(to)g(create)h(arra)m(y)630
+1239 y(v)-5 b(ariables,)28 b(additional)f(attributes)g(do)f(not)h(tak)m
(e)h(e\013ect)g(un)m(til)e(subsequen)m(t)g(assignmen)m(ts.)630
-537 y(The)35 b(return)f(status)i(is)g(zero)g(unless)f(an)g(in)m(v)-5
+1370 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
-647 y(is)c(made)g(to)g(de\014ne)f(a)h(function)g(using)f(`)p
+1480 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
-757 y(a)42 b(v)-5 b(alue)43 b(to)g(a)f(readonly)g(v)-5
+1589 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 866 y(arra)m(y)30 b(v)-5 b(ariable)30
+b(alue)42 b(to)h(an)630 1699 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 976 y([Arra)m(ys],)47 b(page)c(94\),)48
+(\(see)h(Section)f(6.7)630 1808 y([Arra)m(ys],)47 b(page)c(95\),)48
b(one)43 b(of)g(the)g Fr(names)k Fu(is)c(not)g(a)g(v)-5
b(alid)43 b(shell)g(v)-5 b(ariable)44 b(name,)i(an)630
-1085 y(attempt)28 b(is)f(made)h(to)f(turn)f(o\013)i(readonly)f(status)g
+1918 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
-1195 y(is)h(made)h(to)g(turn)e(o\013)i(arra)m(y)f(status)h(for)f(an)g
+2028 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
-1305 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
-Ft(-f)p Fu(.)150 1453 y Ft(echo)870 1582 y(echo)47 b([-neE])f([)p
-Fj(arg)g Ft(...])630 1711 y Fu(Output)31 b(the)i Fr(arg)8
+2137 y(displa)m(y)j(a)f(non-existen)m(t)i(function)e(with)g
+Ft(-f)p Fu(.)150 2289 y Ft(echo)870 2420 y(echo)47 b([-neE])f([)p
+Fj(arg)g Ft(...])630 2551 y Fu(Output)31 b(the)i Fr(arg)8
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 1820 y(status)f(is)f(0)h(unless)f(a)
+(newline.)47 b(The)32 b(return)630 2660 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 1930
+(eci\014ed,)f(the)h(trailing)g(newline)g(is)630 2770
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
-2039 y(escap)s(ed)43 b(c)m(haracters)h(is)e(enabled.)78
+2880 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 2149 y(these)27 b(escap)s(e)g(c)m(haracters,)i(ev)m(en)e(on)g
+630 2989 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
-2259 y(The)32 b Ft(xpg_echo)f Fu(shell)i(option)g(ma)m(y)h(b)s(e)e
+3099 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
-2368 y(not)h Ft(echo)f Fu(expands)g(these)h(escap)s(e)h(c)m(haracters)g
+3208 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
-2478 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
-2607 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
-(sequences:)630 2755 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
-2903 y Ft(\\b)384 b Fu(bac)m(kspace)630 3051 y Ft(\\c)g
-Fu(suppress)28 b(further)h(output)630 3200 y Ft(\\e)630
-3309 y(\\E)384 b Fu(escap)s(e)630 3458 y Ft(\\f)g Fu(form)30
-b(feed)630 3606 y Ft(\\n)384 b Fu(new)30 b(line)630 3754
-y Ft(\\r)384 b Fu(carriage)32 b(return)630 3902 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 4051 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 4199 y Ft(\\\\)384 b Fu(bac)m(kslash)630 4347
+3318 y Ft(--)c Fu(to)h(mean)f(the)h(end)f(of)g(options.)630
+3449 y Ft(echo)f Fu(in)m(terprets)i(the)f(follo)m(wing)i(escap)s(e)f
+(sequences:)630 3601 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630
+3753 y Ft(\\b)384 b Fu(bac)m(kspace)630 3905 y Ft(\\c)g
+Fu(suppress)28 b(further)h(output)630 4057 y Ft(\\e)630
+4166 y(\\E)384 b Fu(escap)s(e)630 4318 y Ft(\\f)g Fu(form)30
+b(feed)630 4470 y Ft(\\n)384 b Fu(new)30 b(line)630 4622
+y Ft(\\r)384 b Fu(carriage)32 b(return)630 4774 y Ft(\\t)384
+b Fu(horizon)m(tal)32 b(tab)630 4926 y Ft(\\v)384 b Fu(v)m(ertical)32
+b(tab)630 5078 y Ft(\\\\)384 b Fu(bac)m(kslash)630 5230
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 4457 y(three)e(o)s(ctal)g
-(digits\))630 4605 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 4715 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 4863 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 4973 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
-5121 y Ft(\\U)p Fj(HHHHHHHH)1110 5230 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 5340 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\))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)150 299 y Ft(enable)870
-433 y(enable)46 b([-a])h([-dnps])f([-f)g Fj(filename)p
-Ft(])g([)p Fj(name)g Ft(...)o(])630 567 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 676 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 786 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 896 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 1005 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
-1115 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 1249
-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 1358 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
+b(alue)32 b Fr(nnn)f Fu(\(zero)i(to)1110 5340 y(three)e(o)s(ctal)g
+(digits\))p eop end
+%%Page: 56 62
+TeXDict begin 56 61 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(56)630 299 y Ft(\\x)p
+Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e(v)-5
+b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39 b
+Fr(HH)1110 408 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
+563 y Ft(\\u)p Fj(HHHH)192 b Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f
+(10646\))j(c)m(haracter)g(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110
+673 y(adecimal)32 b(v)-5 b(alue)31 b Fr(HHHH)41 b Fu(\(one)31
+b(to)g(four)e(hex)h(digits\))630 828 y Ft(\\U)p Fj(HHHHHHHH)1110
+938 y Fu(the)41 b(Unico)s(de)g(\(ISO/IEC)f(10646\))j(c)m(haracter)g
+(whose)e(v)-5 b(alue)41 b(is)g(the)g(hex-)1110 1047 y(adecimal)32
+b(v)-5 b(alue)31 b Fr(HHHHHHHH)41 b Fu(\(one)31 b(to)g(eigh)m(t)h(hex)e
+(digits\))150 1202 y Ft(enable)870 1334 y(enable)46 b([-a])h([-dnps])f
+([-f)g Fj(filename)p Ft(])g([)p Fj(name)g Ft(...)o(])630
+1467 y Fu(Enable)36 b(and)f(disable)h(builtin)g(shell)g(commands.)56
+b(Disabling)37 b(a)g(builtin)e(allo)m(ws)i(a)f(disk)630
+1576 y(command)e(whic)m(h)g(has)g(the)g(same)h(name)f(as)h(a)f(shell)h
+(builtin)e(to)i(b)s(e)f(executed)h(without)630 1686 y(sp)s(ecifying)27
+b(a)g(full)g(pathname,)g(ev)m(en)h(though)f(the)g(shell)g(normally)g
+(searc)m(hes)h(for)f(builtins)630 1795 y(b)s(efore)35
+b(disk)g(commands.)55 b(If)35 b Ft(-n)g Fu(is)g(used,)h(the)g
+Fr(name)5 b Fu(s)35 b(b)s(ecome)h(disabled.)55 b(Otherwise)630
+1905 y Fr(name)5 b Fu(s)44 b(are)h(enabled.)82 b(F)-8
+b(or)45 b(example,)k(to)c(use)f(the)g Ft(test)f Fu(binary)h(found)f
+(via)h Ft($PATH)630 2015 y Fu(instead)31 b(of)f(the)h(shell)f(builtin)g
+(v)m(ersion,)h(t)m(yp)s(e)g(`)p Ft(enable)e(-n)h(test)p
+Fu('.)630 2147 y(If)45 b(the)i Ft(-p)e Fu(option)h(is)g(supplied,)j(or)
+d(no)g Fr(name)51 b Fu(argumen)m(ts)46 b(app)s(ear,)k(a)c(list)h(of)f
+(shell)630 2256 y(builtins)37 b(is)h(prin)m(ted.)63 b(With)38
b(no)f(other)h(argumen)m(ts,)j(the)d(list)g(consists)g(of)g(all)h
-(enabled)630 1468 y(shell)d(builtins.)57 b(The)35 b Ft(-a)h
+(enabled)630 2366 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 1577 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
-630 1711 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
+(indication)h(of)630 2476 y(whether)30 b(or)g(not)h(it)g(is)f(enabled.)
+630 2608 y(The)22 b Ft(-f)f Fu(option)h(means)g(to)h(load)g(the)f(new)g
(builtin)f(command)h Fr(name)27 b Fu(from)22 b(shared)f(ob)5
-b(ject)630 1821 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
+b(ject)630 2717 y Fr(\014lename)p Fu(,)33 b(on)e(systems)h(that)h(supp)
s(ort)d(dynamic)i(loading.)46 b(The)31 b Ft(-d)g Fu(option)h(will)h
-(delete)630 1931 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
-Fu(.)630 2064 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
+(delete)630 2827 y(a)e(builtin)f(loaded)h(with)f Ft(-f)p
+Fu(.)630 2959 y(If)j(there)i(are)f(no)g(options,)h(a)f(list)h(of)f(the)
g(shell)g(builtins)g(is)g(displa)m(y)m(ed.)52 b(The)33
-b Ft(-s)g Fu(option)630 2174 y(restricts)j Ft(enable)d
+b Ft(-s)g Fu(option)630 3069 y(restricts)j Ft(enable)d
Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54
b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630
-2284 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(71\).)630
-2418 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
+3178 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i
+(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(72\).)630
+3311 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i
Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g
-(error)630 2527 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
-(ob)5 b(ject.)150 2685 y Ft(help)870 2819 y(help)47 b([-dms])f([)p
-Fj(pattern)p Ft(])630 2953 y Fu(Displa)m(y)40 b(helpful)e(information)h
+(error)630 3420 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g
+(ob)5 b(ject.)150 3575 y Ft(help)870 3707 y(help)47 b([-dms])f([)p
+Fj(pattern)p Ft(])630 3840 y Fu(Displa)m(y)40 b(helpful)e(information)h
(ab)s(out)g(builtin)f(commands.)66 b(If)38 b Fr(pattern)h
-Fu(is)g(sp)s(eci\014ed,)630 3063 y Ft(help)28 b Fu(giv)m(es)i(detailed)
+Fu(is)g(sp)s(eci\014ed,)630 3949 y Ft(help)28 b Fu(giv)m(es)i(detailed)
g(help)e(on)h(all)h(commands)e(matc)m(hing)i Fr(pattern)p
-Fu(,)g(otherwise)f(a)g(list)h(of)630 3173 y(the)h(builtins)e(is)i(prin)
-m(ted.)630 3306 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
-m(wing)h(meanings:)630 3465 y Ft(-d)384 b Fu(Displa)m(y)32
+Fu(,)g(otherwise)f(a)g(list)h(of)630 4059 y(the)h(builtins)e(is)i(prin)
+m(ted.)630 4191 y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)
+m(wing)h(meanings:)630 4346 y Ft(-d)384 b Fu(Displa)m(y)32
b(a)e(short)g(description)h(of)f(eac)m(h)i Fr(pattern)630
-3623 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
+4501 y Ft(-m)384 b Fu(Displa)m(y)32 b(the)e(description)g(of)h(eac)m(h)
h Fr(pattern)e Fu(in)g(a)h(manpage-lik)m(e)h(format)630
-3781 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 3940 y Fu(The)f(return)f
+4656 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(a)h(short)f(usage)h
+(synopsis)e(for)i(eac)m(h)g Fr(pattern)630 4811 y Fu(The)f(return)f
(status)i(is)f(zero)h(unless)f(no)g(command)h(matc)m(hes)g
-Fr(pattern)p Fu(.)150 4098 y Ft(let)870 4232 y(let)47
+Fr(pattern)p Fu(.)150 4966 y Ft(let)870 5098 y(let)47
b Fj(expression)e Ft([)p Fj(expression)g Ft(...)o(])630
-4366 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
+5230 y Fu(The)c Ft(let)g Fu(builtin)g(allo)m(ws)i(arithmetic)f(to)h(b)s
(e)d(p)s(erformed)g(on)i(shell)g(v)-5 b(ariables.)74
-b(Eac)m(h)630 4475 y Fr(expression)31 b Fu(is)g(ev)-5
+b(Eac)m(h)630 5340 y Fr(expression)31 b Fu(is)g(ev)-5
b(aluated)32 b(according)f(to)h(the)f(rules)g(giv)m(en)h(b)s(elo)m(w)f
-(in)f(Section)i(6.5)g([Shell)630 4585 y(Arithmetic],)51
-b(page)46 b(92.)87 b(If)45 b(the)g(last)h Fr(expression)g
+(in)f(Section)i(6.5)g([Shell)p eop end
+%%Page: 57 63
+TeXDict begin 57 62 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(57)630 299 y(Arithmetic],)51
+b(page)46 b(93.)87 b(If)45 b(the)g(last)h Fr(expression)g
Fu(ev)-5 b(aluates)47 b(to)f(0,)k Ft(let)44 b Fu(returns)g(1;)630
-4695 y(otherwise)31 b(0)g(is)f(returned.)150 4853 y Ft(local)870
-4987 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
-Fj(value)p Ft(])e(...)630 5121 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
+408 y(otherwise)31 b(0)g(is)f(returned.)150 568 y Ft(local)870
+702 y(local)46 b([)p Fj(option)p Ft(])g Fj(name)p Ft([=)p
+Fj(value)p Ft(])e(...)630 836 y Fu(F)-8 b(or)27 b(eac)m(h)g(argumen)m
(t,)g(a)f(lo)s(cal)h(v)-5 b(ariable)27 b(named)e Fr(name)31
b Fu(is)26 b(created,)i(and)d(assigned)h Fr(v)-5 b(alue)p
-Fu(.)630 5230 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 5340 y(b)s(e)j(used)h(within)f(a)i
+Fu(.)630 946 y(The)37 b Fr(option)h Fu(can)f(b)s(e)g(an)m(y)h(of)f(the)
+h(options)g(accepted)g(b)m(y)g Ft(declare)p Fu(.)59 b
+Ft(local)36 b Fu(can)i(only)630 1055 y(b)s(e)j(used)h(within)f(a)i
(function;)48 b(it)42 b(mak)m(es)h(the)f(v)-5 b(ariable)43
-b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)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(restricted)44
-b(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78
+b Fr(name)48 b Fu(ha)m(v)m(e)43 b(a)f(visible)h(scop)s(e)630
+1165 y(restricted)h(to)f(that)h(function)e(and)g(its)i(c)m(hildren.)78
b(If)42 b Fr(name)48 b Fu(is)43 b(`)p Ft(-)p Fu(',)j(the)d(set)h(of)f
-(shell)630 408 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f
+(shell)630 1275 y(options)34 b(is)f(made)g(lo)s(cal)i(to)f(the)f
(function)g(in)g(whic)m(h)g Ft(local)f Fu(is)h(in)m(v)m(ok)m(ed:)48
-b(shell)34 b(options)630 518 y(c)m(hanged)e(using)e(the)i
+b(shell)34 b(options)630 1384 y(c)m(hanged)e(using)e(the)i
Ft(set)e Fu(builtin)h(inside)g(the)g(function)g(are)g(restored)h(to)g
-(their)f(original)630 628 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 737 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
-887 y Ft(logout)870 1016 y(logout)46 b([)p Fj(n)p Ft(])630
-1146 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 1295 y
-Ft(mapfile)870 1425 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h
+(their)f(original)630 1494 y(v)-5 b(alues)36 b(when)e(the)i(function)f
+(returns.)54 b(The)35 b(restore)h(is)g(e\013ected)h(as)e(if)h(a)g
+(series)f(of)h Ft(set)630 1603 y Fu(commands)j(w)m(ere)g(executed)h(to)
+f(restore)h(the)f(v)-5 b(alues)39 b(that)h(w)m(ere)f(in)f(place)i(b)s
+(efore)f(the)630 1713 y(function.)j(The)30 b(return)g(status)h(is)g
+(zero)h(unless)e Ft(local)g Fu(is)h(used)f(outside)h(a)g(function,)g
+(an)630 1823 y(in)m(v)-5 b(alid)31 b Fr(name)k Fu(is)c(supplied,)e(or)i
+Fr(name)k Fu(is)c(a)f(readonly)h(v)-5 b(ariable.)150
+1982 y Ft(logout)870 2116 y(logout)46 b([)p Fj(n)p Ft(])630
+2250 y Fu(Exit)31 b(a)g(login)g(shell,)g(returning)e(a)i(status)g(of)f
+Fr(n)g Fu(to)h(the)g(shell's)f(paren)m(t.)150 2409 y
+Ft(mapfile)870 2544 y(mapfile)46 b([-d)h Fj(delim)p Ft(])f([-n)h
Fj(count)p Ft(])f([-O)h Fj(origin)p Ft(])f([-s)g Fj(count)p
-Ft(])1061 1534 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+Ft(])1061 2653 y([-t])h([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
-1664 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+2788 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 1773 y(from)28 b(\014le)h(descriptor)f
+Fu(,)i(or)630 2897 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
-1883 y(default)i Fr(arra)m(y)p Fu(.)41 b(Options,)30
+3007 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
-2032 y Ft(-d)384 b Fu(The)37 b(\014rst)g(c)m(haracter)i(of)f
+3166 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
-2142 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h
+3275 y(rather)41 b(than)h(newline.)74 b(If)41 b Fr(delim)h
Fu(is)g(the)f(empt)m(y)h(string,)j Ft(mapfile)40 b Fu(will)1110
-2252 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m
-(haracter.)630 2401 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g
+3385 y(terminate)31 b(a)g(line)g(when)e(it)i(reads)f(a)h(NUL)g(c)m
+(haracter.)630 3544 y Ft(-n)384 b Fu(Cop)m(y)30 b(at)h(most)g
Fr(coun)m(t)i Fu(lines.)41 b(If)30 b Fr(coun)m(t)j Fu(is)d(0,)h(all)h
-(lines)e(are)h(copied.)630 2550 y Ft(-O)384 b Fu(Begin)31
+(lines)e(are)h(copied.)630 3703 y Ft(-O)384 b Fu(Begin)31
b(assigning)g(to)g Fr(arra)m(y)39 b Fu(at)31 b(index)f
Fr(origin)p Fu(.)41 b(The)30 b(default)h(index)f(is)g(0.)630
-2700 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j
-Fu(lines)e(read.)630 2849 y Ft(-t)384 b Fu(Remo)m(v)m(e)32
+3862 y Ft(-s)384 b Fu(Discard)31 b(the)f(\014rst)g Fr(coun)m(t)j
+Fu(lines)e(read.)630 4021 y Ft(-t)384 b Fu(Remo)m(v)m(e)32
b(a)f(trailing)g Fr(delim)g Fu(\(default)g(newline\))f(from)g(eac)m(h)i
-(line)f(read.)630 2999 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g
+(line)f(read.)630 4180 y Ft(-u)384 b Fu(Read)31 b(lines)f(from)g
(\014le)h(descriptor)f Fr(fd)j Fu(instead)e(of)f(the)h(standard)e
-(input.)630 3148 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b
+(input.)630 4340 y Ft(-C)384 b Fu(Ev)-5 b(aluate)26 b
Fr(callbac)m(k)33 b Fu(eac)m(h)26 b(time)g Fr(quan)m(tum)f
Fu(lines)g(are)g(read.)39 b(The)25 b Ft(-c)f Fu(option)1110
-3258 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 3407
+4449 y(sp)s(eci\014es)30 b Fr(quan)m(tum)p Fu(.)630 4608
y Ft(-c)384 b Fu(Sp)s(ecify)30 b(the)g(n)m(um)m(b)s(er)f(of)i(lines)f
(read)h(b)s(et)m(w)m(een)g(eac)m(h)g(call)h(to)f Fr(callbac)m(k)p
-Fu(.)630 3557 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g
+Fu(.)630 4767 y(If)36 b Ft(-C)g Fu(is)g(sp)s(eci\014ed)g(without)g
Ft(-c)p Fu(,)h(the)g(default)f(quan)m(tum)g(is)h(5000.)60
-b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 3666 y(ev)-5
+b(When)36 b Fr(callbac)m(k)44 b Fu(is)630 4877 y(ev)-5
b(aluated,)30 b(it)e(is)g(supplied)f(the)h(index)f(of)i(the)f(next)g
(arra)m(y)g(elemen)m(t)h(to)g(b)s(e)e(assigned)i(and)630
-3776 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
+4986 y(the)39 b(line)g(to)h(b)s(e)e(assigned)h(to)h(that)f(elemen)m(t)i
(as)e(additional)h(argumen)m(ts.)66 b Fr(callbac)m(k)47
-b Fu(is)630 3885 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
+b Fu(is)630 5096 y(ev)-5 b(aluated)32 b(after)e(the)h(line)g(is)f(read)
g(but)g(b)s(efore)g(the)h(arra)m(y)g(elemen)m(t)g(is)g(assigned.)630
-4015 y(If)25 b(not)g(supplied)f(with)h(an)g(explicit)i(origin,)g
+5230 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 4125 y(to)31 b(it.)630 4254 y Ft(mapfile)41
+b(assigning)630 5340 y(to)31 b(it.)p eop end
+%%Page: 58 64
+TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(mapfile)41
b 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
-4364 y(supplied,)29 b Fr(arra)m(y)39 b Fu(is)30 b(in)m(v)-5
+408 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
-4513 y Ft(printf)870 4643 y(printf)46 b([-v)h Fj(var)p
-Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 4772
+564 y Ft(printf)870 697 y(printf)46 b([-v)h Fj(var)p
+Ft(])g Fj(format)f Ft([)p Fj(arguments)p Ft(])630 830
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 4882 y Fr(format)p Fu(.)66 b(The)39 b Ft(-v)f Fu(option)h(causes)g
+630 939 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 4991 y Fu(rather)30 b(than)g(b)s(eing)g
-(prin)m(ted)g(to)h(the)g(standard)e(output.)630 5121
+b(ariable)39 b Fr(v)-5 b(ar)630 1049 y Fu(rather)30 b(than)g(b)s(eing)g
+(prin)m(ted)g(to)h(the)g(standard)e(output.)630 1181
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 5230 y(c)m(haracters,)41 b(whic)m(h)c(are)h(simply)e
+b(plain)630 1291 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
-5340 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)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(sp)s
-(eci\014cations,)39 b(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
-408 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
+1401 y(quences,)g(whic)m(h)f(are)g(con)m(v)m(erted)h(and)f(copied)g(to)
+g(the)g(standard)f(output,)i(and)f(format)630 1510 y(sp)s
+(eci\014cations,)j(eac)m(h)e(of)g(whic)m(h)f(causes)g(prin)m(ting)g(of)
+h(the)f(next)h(successiv)m(e)g Fr(argumen)m(t)p Fu(.)630
+1620 y(In)24 b(addition)h(to)g(the)g(standard)f Ft(printf\(1\))e
Fu(formats,)27 b Ft(printf)c Fu(in)m(terprets)i(the)f(follo)m(wing)630
-518 y(extensions:)630 690 y Ft(\045b)384 b Fu(Causes)38
+1729 y(extensions:)630 1885 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 800 y(resp)s(onding)31 b Fr(argumen)m(t)j
+(in)f(the)h(cor-)1110 1995 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 909 y([Bash)e(Builtins],)g(page)g(50\).)
-630 1082 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
+Fu(\(see)h(Section)g(4.2)1110 2104 y([Bash)e(Builtins],)g(page)g(51\).)
+630 2260 y Ft(\045q)384 b Fu(Causes)32 b Ft(printf)e
Fu(to)i(output)g(the)g(corresp)s(onding)f Fr(argumen)m(t)j
-Fu(in)d(a)i(format)1110 1191 y(that)e(can)g(b)s(e)e(reused)h(as)h
-(shell)f(input.)630 1363 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
-1473 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 1583 y Fr(datefm)m(t)45
+Fu(in)d(a)i(format)1110 2370 y(that)e(can)g(b)s(e)e(reused)h(as)h
+(shell)f(input.)630 2525 y Ft(\045\()p Fj(datefmt)p Ft(\)T)1110
+2635 y Fu(Causes)f Ft(printf)e Fu(to)j(output)f(the)g(date-time)i
+(string)e(resulting)h(from)e(using)1110 2744 y Fr(datefm)m(t)45
b Fu(as)d(a)g(format)g(string)g(for)g Ft(strftime)p Fu(\(3\).)74
-b(The)41 b(corresp)s(onding)1110 1692 y Fr(argumen)m(t)h
+b(The)41 b(corresp)s(onding)1110 2854 y Fr(argumen)m(t)h
Fu(is)e(an)g(in)m(teger)i(represen)m(ting)e(the)g(n)m(um)m(b)s(er)f(of)
-h(seconds)g(since)1110 1802 y(the)24 b(ep)s(o)s(c)m(h.)38
+h(seconds)g(since)1110 2964 y(the)24 b(ep)s(o)s(c)m(h.)38
b(Tw)m(o)24 b(sp)s(ecial)h(argumen)m(t)f(v)-5 b(alues)24
b(ma)m(y)h(b)s(e)e(used:)36 b(-1)25 b(represen)m(ts)1110
-1911 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
+3073 y(the)30 b(curren)m(t)g(time,)h(and)e(-2)i(represen)m(ts)f(the)g
(time)h(the)f(shell)g(w)m(as)g(in)m(v)m(ok)m(ed.)1110
-2021 y(If)38 b(no)g(argumen)m(t)h(is)f(sp)s(eci\014ed,)i(con)m(v)m
+3183 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
-2131 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 2303 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 2412 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 2522 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
-2663 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 2772 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 2882 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 2992 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
-3164 y Ft(read)870 3305 y(read)47 b([-ers])f([-a)h Fj(aname)p
+3292 y(giv)m(en.)k(This)29 b(is)i(an)f(exception)i(to)f(the)f(usual)g
+Ft(printf)f Fu(b)s(eha)m(vior.)630 3448 y(The)d(\045b,)h(\045q,)h(and)e
+(\045T)g(directiv)m(es)j(all)e(use)g(the)g(\014eld)f(width)g(and)h
+(precision)g(argumen)m(ts)630 3558 y(from)f(the)g(format)h(sp)s
+(eci\014cation)g(and)e(write)i(that)f(man)m(y)h(b)m(ytes)f(from)g(\(or)
+h(use)e(that)i(wide)630 3667 y(a)42 b(\014eld)g(for\))g(the)h(expanded)
+e(argumen)m(t,)k(whic)m(h)d(usually)g(con)m(tains)h(more)f(c)m
+(haracters)630 3777 y(than)30 b(the)h(original.)630 3910
+y(Argumen)m(ts)d(to)h(non-string)e(format)i(sp)s(eci\014ers)e(are)h
+(treated)h(as)g(C)e(language)j(constan)m(ts,)630 4019
+y(except)22 b(that)g(a)g(leading)g(plus)e(or)h(min)m(us)f(sign)i(is)f
+(allo)m(w)m(ed,)k(and)c(if)g(the)g(leading)h(c)m(haracter)h(is)630
+4129 y(a)i(single)g(or)f(double)h(quote,)h(the)f(v)-5
+b(alue)25 b(is)f(the)h(ASCI)s(I)e(v)-5 b(alue)25 b(of)f(the)h(follo)m
+(wing)h(c)m(haracter.)630 4261 y(The)31 b Fr(format)i
+Fu(is)f(reused)e(as)i(necessary)f(to)i(consume)e(all)h(of)f(the)h
+Fr(argumen)m(ts)p Fu(.)44 b(If)30 b(the)i Fr(for-)630
+4371 y(mat)c Fu(requires)e(more)g Fr(argumen)m(ts)k Fu(than)25
+b(are)i(supplied,)e(the)h(extra)h(format)f(sp)s(eci\014cations)630
+4481 y(b)s(eha)m(v)m(e)j(as)g(if)f(a)h(zero)g(v)-5 b(alue)29
+b(or)g(n)m(ull)f(string,)h(as)g(appropriate,)g(had)f(b)s(een)g
+(supplied.)38 b(The)630 4590 y(return)29 b(v)-5 b(alue)31
+b(is)g(zero)g(on)f(success,)h(non-zero)g(on)f(failure.)150
+4746 y Ft(read)870 4879 y(read)47 b([-ers])f([-a)h Fj(aname)p
Ft(])f([-d)h Fj(delim)p Ft(])f([-i)h Fj(text)p Ft(])f([-n)h
-Fj(nchars)p Ft(])1061 3414 y([-N)g Fj(nchars)p Ft(])f([-p)h
+Fj(nchars)p Ft(])1061 4988 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 3555 y Fu(One)38
+Ft(])g([)p Fj(name)f Ft(...)o(])630 5121 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 3665 y(plied)34
+(\014le)f(descriptor)g Fr(fd)j Fu(sup-)630 5230 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
-3774 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(31,)j
-(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)630
-3884 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 3994 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 4103 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 4213 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 4322 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 4432
-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
-4542 y(Splitting],)38 b(page)f(31\).)60 b(The)35 b(bac)m(kslash)i(c)m
-(haracter)h(`)p Ft(\\)p Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m
-(e)h(an)m(y)630 4651 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 4761 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 4870 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 4980 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 5089 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
-5199 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
+5340 y(Section)j(3.5.7)h([W)-8 b(ord)38 b(Splitting],)i(page)e(32,)j
+(and)36 b(the)i(\014rst)f(w)m(ord)g(is)g(assigned)h(to)g(the)p
eop end
-%%Page: 58 64
-TeXDict begin 58 63 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(58)630 299 y Ft(-a)30
-b Fj(aname)114 b Fu(The)34 b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m
-(tial)h(indices)e(of)g(the)g(arra)m(y)h(v)-5 b(ariable)1110
-408 y Fr(aname)p Fu(,)29 b(starting)h(at)f(0.)40 b(All)29
-b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i(from)d Fr(aname)34
-b Fu(b)s(efore)1110 518 y(the)d(assignmen)m(t.)41 b(Other)30
-b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630
-671 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
+%%Page: 59 65
+TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(59)630 299 y(\014rst)32
+b Fr(name)p Fu(,)h(the)g(second)g(w)m(ord)f(to)h(the)g(second)g
+Fr(name)p Fu(,)g(and)f(so)h(on.)47 b(If)32 b(there)h(are)g(more)630
+408 y(w)m(ords)39 b(than)g(names,)j(the)e(remaining)f(w)m(ords)g(and)g
+(their)h(in)m(terv)m(ening)g(delimiters)h(are)630 518
+y(assigned)29 b(to)h(the)g(last)g Fr(name)p Fu(.)40 b(If)29
+b(there)g(are)h(few)m(er)f(w)m(ords)g(read)g(from)g(the)g(input)g
+(stream)630 628 y(than)35 b(names,)i(the)e(remaining)h(names)f(are)h
+(assigned)f(empt)m(y)h(v)-5 b(alues.)56 b(The)34 b(c)m(haracters)630
+737 y(in)e(the)h(v)-5 b(alue)33 b(of)g(the)g Ft(IFS)f
+Fu(v)-5 b(ariable)33 b(are)h(used)d(to)j(split)f(the)g(line)g(in)m(to)g
+(w)m(ords)g(using)f(the)630 847 y(same)d(rules)f(the)g(shell)h(uses)f
+(for)g(expansion)g(\(describ)s(ed)g(ab)s(o)m(v)m(e)i(in)e(Section)h
+(3.5.7)h([W)-8 b(ord)630 956 y(Splitting],)38 b(page)f(32\).)60
+b(The)35 b(bac)m(kslash)i(c)m(haracter)h(`)p Ft(\\)p
+Fu(')e(ma)m(y)h(b)s(e)f(used)f(to)i(remo)m(v)m(e)h(an)m(y)630
+1066 y(sp)s(ecial)31 b(meaning)g(for)f(the)g(next)h(c)m(haracter)h
+(read)e(and)g(for)g(line)h(con)m(tin)m(uation.)630 1196
+y(Options,)f(if)h(supplied,)e(ha)m(v)m(e)i(the)g(follo)m(wing)h
+(meanings:)630 1348 y Ft(-a)e Fj(aname)114 b Fu(The)34
+b(w)m(ords)f(are)i(assigned)f(to)h(sequen)m(tial)h(indices)e(of)g(the)g
+(arra)m(y)h(v)-5 b(ariable)1110 1457 y Fr(aname)p Fu(,)29
+b(starting)h(at)f(0.)40 b(All)29 b(elemen)m(ts)h(are)e(remo)m(v)m(ed)i
+(from)d Fr(aname)34 b Fu(b)s(efore)1110 1567 y(the)d(assignmen)m(t.)41
+b(Other)30 b Fr(name)36 b Fu(argumen)m(ts)30 b(are)h(ignored.)630
+1718 y Ft(-d)f Fj(delim)114 b Fu(The)41 b(\014rst)h(c)m(haracter)h(of)f
Fr(delim)g Fu(is)g(used)g(to)g(terminate)h(the)f(input)f(line,)1110
-781 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h
+1828 y(rather)31 b(than)g(newline.)42 b(If)30 b Fr(delim)h
Fu(is)g(the)h(empt)m(y)f(string,)g Ft(read)f Fu(will)h(termi-)1110
-891 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)630
-1044 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)f
-(Line)h(Editing],)50 b(page)45 b(107\))i(is)1110 1154
+1937 y(nate)g(a)g(line)f(when)g(it)h(reads)f(a)h(NUL)f(c)m(haracter.)
+630 2089 y Ft(-e)384 b Fu(Readline)46 b(\(see)g(Chapter)e(8)h([Command)
+f(Line)h(Editing],)50 b(page)45 b(111\))i(is)1110 2198
y(used)37 b(to)i(obtain)g(the)f(line.)65 b(Readline)39
b(uses)e(the)i(curren)m(t)f(\(or)g(default,)j(if)1110
-1263 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k
-(editing)d(settings,)j(but)c(uses)1110 1373 y(Readline's)31
-b(default)g(\014lename)f(completion.)630 1526 y Ft(-i)g
+2308 y(line)h(editing)g(w)m(as)g(not)g(previously)f(activ)m(e\))k
+(editing)d(settings,)j(but)c(uses)1110 2418 y(Readline's)31
+b(default)g(\014lename)f(completion.)630 2569 y Ft(-i)g
Fj(text)162 b Fu(If)36 b(Readline)i(is)f(b)s(eing)g(used)f(to)h(read)g
(the)g(line,)j Fr(text)f Fu(is)e(placed)h(in)m(to)g(the)1110
-1636 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630
-1789 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j
+2679 y(editing)31 b(bu\013er)e(b)s(efore)h(editing)h(b)s(egins.)630
+2830 y Ft(-n)f Fj(nchars)66 b Ft(read)38 b Fu(returns)f(after)j
(reading)f Fr(nc)m(hars)j Fu(c)m(haracters)e(rather)f(than)g(w)m
-(aiting)1110 1899 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f
-(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 2008
+(aiting)1110 2939 y(for)d(a)h(complete)h(line)f(of)g(input,)g(but)f
+(honors)g(a)h(delimiter)g(if)f(few)m(er)h(than)1110 3049
y Fr(nc)m(hars)d Fu(c)m(haracters)e(are)e(read)h(b)s(efore)f(the)g
-(delimiter.)630 2162 y Ft(-N)g Fj(nchars)66 b Ft(read)39
+(delimiter.)630 3200 y Ft(-N)g Fj(nchars)66 b Ft(read)39
b Fu(returns)f(after)j(reading)e(exactly)j Fr(nc)m(hars)h
-Fu(c)m(haracters)f(rather)d(than)1110 2271 y(w)m(aiting)32
+Fu(c)m(haracters)f(rather)d(than)1110 3310 y(w)m(aiting)32
b(for)f(a)g(complete)i(line)e(of)g(input,)g(unless)f(EOF)h(is)g(encoun)
-m(tered)g(or)1110 2381 y Ft(read)f Fu(times)i(out.)43
+m(tered)g(or)1110 3420 y Ft(read)f Fu(times)i(out.)43
b(Delimiter)33 b(c)m(haracters)f(encoun)m(tered)g(in)f(the)g(input)g
-(are)1110 2491 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause)
+(are)1110 3529 y(not)g(treated)h(sp)s(ecially)f(and)f(do)h(not)g(cause)
g Ft(read)e Fu(to)j(return)d(un)m(til)i Fr(nc)m(hars)1110
-2600 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24
+3639 y Fu(c)m(haracters)26 b(are)f(read.)38 b(The)24
b(result)g(is)h(not)f(split)h(on)f(the)h(c)m(haracters)h(in)e
-Ft(IFS)p Fu(;)1110 2710 y(the)e(in)m(ten)m(t)i(is)e(that)h(the)f(v)-5
+Ft(IFS)p Fu(;)1110 3748 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 2819 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
-(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 2973 y
+1110 3858 y(\(with)30 b(the)h(exception)h(of)e(bac)m(kslash;)h(see)g
+(the)g Ft(-r)f Fu(option)h(b)s(elo)m(w\).)630 4009 y
Ft(-p)f Fj(prompt)66 b Fu(Displa)m(y)38 b Fr(prompt)p
Fu(,)g(without)e(a)h(trailing)h(newline,)h(b)s(efore)d(attempting)i(to)
-1110 3082 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
-(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 3192 y(from)30
-b(a)h(terminal.)630 3345 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
+1110 4119 y(read)f(an)m(y)h(input.)60 b(The)37 b(prompt)g(is)g(displa)m
+(y)m(ed)h(only)f(if)g(input)g(is)g(coming)1110 4228 y(from)30
+b(a)h(terminal.)630 4380 y Ft(-r)384 b Fu(If)21 b(this)h(option)g(is)f
(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 3455 y(The)30 b(bac)m(kslash)i(is)f(considered)g
+(c)m(haracter.)1110 4489 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
-3565 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f
-(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 3718
+4599 y(bac)m(kslash-newline)26 b(pair)e(ma)m(y)h(not)g(then)g(b)s(e)f
+(used)g(as)h(a)g(line)g(con)m(tin)m(uation.)630 4750
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
-3828 y(ec)m(ho)s(ed.)630 3981 y Ft(-t)i Fj(timeout)1110
-4091 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f
-(failure)i(if)g(a)g(complete)h(line)f(of)1110 4200 y(input)26
+4860 y(ec)m(ho)s(ed.)630 5011 y Ft(-t)i Fj(timeout)1110
+5121 y Fu(Cause)42 b Ft(read)g Fu(to)h(time)h(out)f(and)f(return)f
+(failure)i(if)g(a)g(complete)h(line)f(of)1110 5230 y(input)26
b(\(or)h(a)g(sp)s(eci\014ed)f(n)m(um)m(b)s(er)g(of)h(c)m(haracters\))h
-(is)f(not)g(read)g(within)f Fr(time-)1110 4310 y(out)37
+(is)f(not)g(read)g(within)f Fr(time-)1110 5340 y(out)37
b Fu(seconds.)53 b Fr(timeout)38 b Fu(ma)m(y)d(b)s(e)f(a)h(decimal)h(n)
-m(um)m(b)s(er)d(with)h(a)h(fractional)1110 4419 y(p)s(ortion)29
+m(um)m(b)s(er)d(with)h(a)h(fractional)p eop end
+%%Page: 60 66
+TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(60)1110 299 y(p)s(ortion)29
b(follo)m(wing)h(the)f(decimal)h(p)s(oin)m(t.)40 b(This)29
-b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 4529
-y Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e
-(or)g(other)f(sp)s(ecial)i(\014le;)1110 4639 y(it)31
-b(has)g(no)g(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42
-b(If)30 b Ft(read)g Fu(times)h(out,)1110 4748 y Ft(read)d
+b(option)g(is)g(only)g(e\013ectiv)m(e)j(if)1110 408 y
+Ft(read)j Fu(is)i(reading)g(input)e(from)h(a)h(terminal,)i(pip)s(e,)e
+(or)g(other)f(sp)s(ecial)i(\014le;)1110 518 y(it)31 b(has)g(no)g
+(e\013ect)h(when)e(reading)h(from)g(regular)g(\014les.)42
+b(If)30 b Ft(read)g Fu(times)h(out,)1110 628 y Ft(read)d
Fu(sa)m(v)m(es)j(an)m(y)f(partial)h(input)d(read)i(in)m(to)h(the)e(sp)s
(eci\014ed)g(v)-5 b(ariable)31 b Fr(name)p Fu(.)1110
-4858 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f
+737 y(If)k Fr(timeout)j Fu(is)e(0,)h Ft(read)e Fu(returns)f
(immediately)-8 b(,)39 b(without)c(trying)h(to)g(read)1110
-4967 y(and)30 b(data.)44 b(The)30 b(exit)i(status)f(is)g(0)g(if)g
-(input)f(is)h(a)m(v)-5 b(ailable)34 b(on)c(the)i(sp)s(eci\014ed)1110
-5077 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
-b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 5187
-y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 5340
+847 y(an)m(y)c(data.)44 b(The)31 b(exit)h(status)f(is)h(0)f(if)h(input)
+e(is)h(a)m(v)-5 b(ailable)34 b(on)d(the)h(sp)s(eci\014ed)1110
+956 y(\014le)g(descriptor,)g(non-zero)h(otherwise.)46
+b(The)31 b(exit)i(status)f(is)g(greater)h(than)1110 1066
+y(128)f(if)e(the)h(timeout)g(is)f(exceeded.)630 1225
y Ft(-u)g Fj(fd)258 b Fu(Read)31 b(input)e(from)h(\014le)g(descriptor)h
-Fr(fd)p Fu(.)p eop end
-%%Page: 59 65
-TeXDict begin 59 64 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(59)150 299 y Ft(readarray)870
-408 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p
+Fr(fd)p Fu(.)630 1385 y(If)h(no)g Fr(name)5 b Fu(s)33
+b(are)f(supplied,)g(the)h(line)g(read,)g(without)f(the)h(ending)f
+(delimiter)h(but)e(oth-)630 1494 y(erwise)36 b(unmo)s(di\014ed,)e(is)i
+(assigned)f(to)h(the)g(v)-5 b(ariable)36 b Ft(REPLY)p
+Fu(.)55 b(The)34 b(exit)j(status)e(is)h(zero,)630 1604
+y(unless)i(end-of-\014le)h(is)f(encoun)m(tered,)j Ft(read)d
+Fu(times)h(out)f(\(in)h(whic)m(h)f(case)h(the)g(status)g(is)630
+1714 y(greater)31 b(than)f(128\),)i(a)e(v)-5 b(ariable)30
+b(assignmen)m(t)h(error)f(\(suc)m(h)f(as)i(assigning)f(to)h(a)f
+(readonly)630 1823 y(v)-5 b(ariable\))30 b(o)s(ccurs,)f(or)f(an)h(in)m
+(v)-5 b(alid)29 b(\014le)g(descriptor)f(is)h(supplied)e(as)i(the)g
+(argumen)m(t)g(to)g Ft(-u)p Fu(.)150 1983 y Ft(readarray)870
+2092 y(readarray)45 b([-d)i Fj(delim)p Ft(])f([-n)h Fj(count)p
Ft(])f([-O)h Fj(origin)p Ft(])f([-s)h Fj(count)p Ft(])1061
-518 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
+2202 y([-t])g([-u)f Fj(fd)p Ft(])h([-C)g Fj(callback)p
Ft(])f([-c)g Fj(quantum)p Ft(])g([)p Fj(array)p Ft(])630
-650 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
+2336 y Fu(Read)38 b(lines)f(from)g(the)h(standard)e(input)g(in)m(to)j
(the)e(indexed)g(arra)m(y)h(v)-5 b(ariable)38 b Fr(arra)m(y)p
-Fu(,)i(or)630 760 y(from)30 b(\014le)g(descriptor)h Fr(fd)i
-Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
-892 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 1047
-y Ft(source)870 1179 y(source)46 b Fj(filename)630 1312
+Fu(,)i(or)630 2446 y(from)30 b(\014le)g(descriptor)h
+Fr(fd)i Fu(if)d(the)h Ft(-u)e Fu(option)i(is)g(supplied.)630
+2580 y(A)f(synon)m(ym)g(for)g Ft(mapfile)p Fu(.)150 2740
+y Ft(source)870 2874 y(source)46 b Fj(filename)630 3009
y Fu(A)30 b(synon)m(ym)g(for)g Ft(.)g Fu(\(see)i(Section)f(4.1)g
-([Bourne)g(Shell)f(Builtins],)h(page)g(43\).)150 1467
-y Ft(type)870 1599 y(type)47 b([-afptP])e([)p Fj(name)i
-Ft(...)o(])630 1731 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
+([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)150 3168
+y Ft(type)870 3303 y(type)47 b([-afptP])e([)p Fj(name)i
+Ft(...)o(])630 3437 y Fu(F)-8 b(or)42 b(eac)m(h)g Fr(name)p
Fu(,)i(indicate)e(ho)m(w)g(it)f(w)m(ould)g(b)s(e)g(in)m(terpreted)g(if)
-g(used)f(as)i(a)f(command)630 1841 y(name.)630 1973 y(If)g(the)g
+g(used)f(as)i(a)f(command)630 3547 y(name.)630 3681 y(If)g(the)g
Ft(-t)g Fu(option)h(is)f(used,)j Ft(type)c Fu(prin)m(ts)h(a)h(single)g
(w)m(ord)f(whic)m(h)g(is)g(one)h(of)g(`)p Ft(alias)p
-Fu(',)630 2083 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
+Fu(',)630 3791 y(`)p Ft(function)p Fu(',)32 b(`)p Ft(builtin)p
Fu(',)g(`)p Ft(file)p Fu(')g(or)h(`)p Ft(keyword)p Fu(',)f(if)h
Fr(name)38 b Fu(is)33 b(an)f(alias,)j(shell)e(function,)630
-2192 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g
+3900 y(shell)i(builtin,)g(disk)g(\014le,)h(or)e(shell)h(reserv)m(ed)g
(w)m(ord,)h(resp)s(ectiv)m(ely)-8 b(.)55 b(If)34 b(the)h
-Fr(name)40 b Fu(is)35 b(not)630 2302 y(found,)29 b(then)h(nothing)h(is)
+Fr(name)40 b Fu(is)35 b(not)630 4010 y(found,)29 b(then)h(nothing)h(is)
f(prin)m(ted,)g(and)g Ft(type)f Fu(returns)g(a)i(failure)g(status.)630
-2434 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
+4144 y(If)25 b(the)g Ft(-p)g Fu(option)h(is)f(used,)h
Ft(type)e Fu(either)h(returns)g(the)g(name)g(of)h(the)f(disk)g(\014le)g
-(that)h(w)m(ould)630 2544 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
+(that)h(w)m(ould)630 4254 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g
Ft(-t)g Fu(w)m(ould)g(not)h(return)e(`)p Ft(file)p Fu('.)630
-2676 y(The)h Ft(-P)g Fu(option)h(forces)g(a)g(path)f(searc)m(h)h(for)g
+4389 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 2785 y(`)p Ft(file)p Fu('.)630 2918 y(If)f(a)g(command)g
+(return)630 4498 y(`)p Ft(file)p Fu('.)630 4633 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 3027
+(v)-5 b(alue,)31 b(whic)m(h)f(is)g(not)g(neces-)630 4742
y(sarily)h(the)f(\014le)h(that)g(app)s(ears)e(\014rst)h(in)g
-Ft($PATH)p Fu(.)630 3160 y(If)22 b(the)i Ft(-a)e Fu(option)h(is)g
+Ft($PATH)p Fu(.)630 4877 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 3269 y(named)32 b Fr(\014le)p
+(tain)i(an)d(executable)630 4986 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 3379 y(not)d(also)g
-(used.)630 3511 y(If)f(the)g Ft(-f)g Fu(option)g(is)h(used,)e
+(only)h(if)g(the)g Ft(-p)f Fu(option)i(is)630 5096 y(not)d(also)g
+(used.)630 5230 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 3621 y(the)h Ft(command)d
-Fu(builtin.)630 3753 y(The)j(return)f(status)h(is)g(zero)h(if)f(all)h
-(of)f(the)h Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h
-(not)630 3862 y(found.)150 4017 y Ft(typeset)870 4150
-y(typeset)46 b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p
-Ft([=)p Fj(value)p Ft(])d(...)o(])630 4282 y Fu(The)31
-b Ft(typeset)e Fu(command)i(is)g(supplied)f(for)h(compatibilit)m(y)i
-(with)e(the)g(Korn)f(shell.)44 b(It)31 b(is)630 4391
-y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f Fu(builtin)h(command.)150
-4546 y Ft(ulimit)870 4679 y(ulimit)46 b([-HSabcdefiklmnpqrstuvxPT)o(])c
-([)p Fj(limit)p Ft(])630 4811 y(ulimit)25 b Fu(pro)m(vides)h(con)m
-(trol)i(o)m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29
-b(to)e(pro)s(cesses)f(started)h(b)m(y)g(the)630 4921
-y(shell,)i(on)f(systems)g(that)h(allo)m(w)h(suc)m(h)e(con)m(trol.)41
-b(If)28 b(an)g(option)h(is)f(giv)m(en,)i(it)e(is)h(in)m(terpreted)630
-5030 y(as)i(follo)m(ws:)630 5185 y Ft(-S)384 b Fu(Change)30
-b(and)g(rep)s(ort)g(the)g(soft)h(limit)g(asso)s(ciated)h(with)e(a)h
-(resource.)630 5340 y Ft(-H)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)
-g(hard)g(limit)h(asso)s(ciated)h(with)e(a)h(resource.)p
-eop end
-%%Page: 60 66
-TeXDict begin 60 65 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(60)630 299 y Ft(-a)384
-b Fu(All)31 b(curren)m(t)f(limits)h(are)g(rep)s(orted.)630
-454 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i(bu\013er)e
-(size.)630 610 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g(core)
-g(\014les)f(created.)630 765 y Ft(-d)384 b Fu(The)30
-b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h(segmen)m(t.)630
-921 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m(heduling)h(priorit)m(y)
-f(\()p Ft(")p Fu(nice)p Ft(")p Fu(\).)630 1076 y Ft(-f)384
-b Fu(The)30 b(maxim)m(um)g(size)h(of)g(\014les)f(written)h(b)m(y)f(the)
-g(shell)h(and)f(its)h(c)m(hildren.)630 1232 y Ft(-i)384
-b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s(ending)e
-(signals.)630 1387 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s
-(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630
-1543 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s
-(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 1698
-y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g
-(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 1808
-y(limit\).)630 1963 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s
-(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110
-2073 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)
-630 2228 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
-2384 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
-(ytes)g(in)f(POSIX)f(message)j(queues.)630 2539 y Ft(-r)384
-b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f(priorit)m(y)-8
-b(.)630 2695 y Ft(-s)384 b Fu(The)30 b(maxim)m(um)g(stac)m(k)i(size.)
-630 2850 y Ft(-t)384 b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g
-(time)h(in)f(seconds.)630 3005 y Ft(-u)384 b Fu(The)30
-b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pro)s(cesses)f(a)m(v)-5
-b(ailable)33 b(to)e(a)f(single)i(user.)630 3161 y Ft(-v)384
-b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f(memory)g(a)m(v)-5
-b(ailable)44 b(to)e(the)g(shell,)1110 3271 y(and,)30
-b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
-3426 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(\014le)f(lo)s(c)m(ks.)630 3581 y Ft(-P)384 b Fu(The)30
-b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630
-3737 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
-(threads.)630 3892 y(If)36 b Fr(limit)k Fu(is)c(giv)m(en,)k(and)c(the)h
-Ft(-a)f Fu(option)h(is)f(not)h(used,)h Fr(limit)h Fu(is)e(the)g(new)f
-(v)-5 b(alue)37 b(of)g(the)630 4002 y(sp)s(eci\014ed)c(resource.)51
-b(The)34 b(sp)s(ecial)g Fr(limit)j Fu(v)-5 b(alues)34
-b Ft(hard)p Fu(,)g Ft(soft)p Fu(,)g(and)f Ft(unlimited)e
-Fu(stand)630 4112 y(for)h(the)g(curren)m(t)g(hard)f(limit,)i(the)g
-(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)h(resp)s(ectiv)m(ely)-8
-b(.)48 b(A)630 4221 y(hard)37 b(limit)h(cannot)h(b)s(e)e(increased)h(b)
-m(y)f(a)h(non-ro)s(ot)g(user)f(once)i(it)f(is)g(set;)k(a)c(soft)g
-(limit)630 4331 y(ma)m(y)j(b)s(e)e(increased)i(up)e(to)h(the)h(v)-5
-b(alue)40 b(of)g(the)h(hard)e(limit.)70 b(Otherwise,)43
-b(the)d(curren)m(t)630 4440 y(v)-5 b(alue)29 b(of)h(the)f(soft)g(limit)
-h(for)e(the)h(sp)s(eci\014ed)g(resource)g(is)g(prin)m(ted,)g(unless)f
-(the)h Ft(-H)f Fu(option)630 4550 y(is)h(supplied.)39
-b(When)29 b(setting)h(new)f(limits,)h(if)f(neither)g
-Ft(-H)g Fu(nor)f Ft(-S)h Fu(is)g(supplied,)f(b)s(oth)h(the)630
-4660 y(hard)i(and)h(soft)h(limits)g(are)f(set.)48 b(If)31
-b(no)i(option)f(is)h(giv)m(en,)h(then)e Ft(-f)g Fu(is)g(assumed.)46
-b(V)-8 b(alues)630 4769 y(are)31 b(in)f(1024-b)m(yte)j(incremen)m(ts,)e
-(except)g(for)f Ft(-t)p Fu(,)g(whic)m(h)g(is)g(in)g(seconds;)h
-Ft(-p)p Fu(,)f(whic)m(h)g(is)g(in)630 4879 y(units)h(of)g(512-b)m(yte)j
-(blo)s(c)m(ks;)e Ft(-P)p Fu(,)f Ft(-T)p Fu(,)h Ft(-b)p
-Fu(,)f Ft(-k)p Fu(,)g Ft(-n)g Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)h(are)f
-(unscaled)g(v)-5 b(alues;)630 4988 y(and,)31 b(when)f(in)g
-Fm(posix)g Fu(Mo)s(de)h(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s
-(de],)h(page)h(99\),)h Ft(-c)630 5098 y Fu(and)d Ft(-f)p
-Fu(,)g(whic)m(h)g(are)h(in)f(512-b)m(yte)i(incremen)m(ts.)630
-5230 y(The)i(return)g(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5
-b(alid)36 b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630
-5340 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)p
-eop end
+(functions,)f(as)g(with)630 5340 y(the)h Ft(command)d
+Fu(builtin.)p eop end
%%Page: 61 67
TeXDict begin 61 66 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(61)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(93.)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(Shell)30 b(Builtin)h(Commands)2069 b(61)630 299 y(The)31
+b(return)f(status)h(is)g(zero)h(if)f(all)h(of)f(the)h
+Fr(names)i Fu(are)e(found,)e(non-zero)i(if)f(an)m(y)g(are)h(not)630
+408 y(found.)150 566 y Ft(typeset)870 700 y(typeset)46
+b([-afFgrxilnrtux])d([-p])k([)p Fj(name)p Ft([=)p Fj(value)p
+Ft(])d(...)o(])630 834 y Fu(The)31 b Ft(typeset)e Fu(command)i(is)g
+(supplied)f(for)h(compatibilit)m(y)i(with)e(the)g(Korn)f(shell.)44
+b(It)31 b(is)630 943 y(a)g(synon)m(ym)f(for)g(the)g Ft(declare)f
+Fu(builtin)h(command.)150 1101 y Ft(ulimit)870 1235 y(ulimit)46
+b([-HS])g(-a)870 1344 y(ulimit)g([-HS])g([-bcdefiklmnpqrstuvxPRT])c([)p
+Fj(limit)p Ft(])630 1478 y(ulimit)25 b Fu(pro)m(vides)h(con)m(trol)i(o)
+m(v)m(er)g(the)f(resources)f(a)m(v)-5 b(ailable)29 b(to)e(pro)s(cesses)
+f(started)h(b)m(y)g(the)630 1588 y(shell,)i(on)f(systems)g(that)h(allo)
+m(w)h(suc)m(h)e(con)m(trol.)41 b(If)28 b(an)g(option)h(is)f(giv)m(en,)i
+(it)e(is)h(in)m(terpreted)630 1697 y(as)i(follo)m(ws:)630
+1855 y Ft(-S)384 b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(soft)h(limit)
+g(asso)s(ciated)h(with)e(a)h(resource.)630 2013 y Ft(-H)384
+b Fu(Change)30 b(and)g(rep)s(ort)g(the)g(hard)g(limit)h(asso)s(ciated)h
+(with)e(a)h(resource.)630 2171 y Ft(-a)384 b Fu(All)31
+b(curren)m(t)f(limits)h(are)g(rep)s(orted;)f(no)g(limits)h(are)g(set.)
+630 2328 y Ft(-b)384 b Fu(The)30 b(maxim)m(um)g(so)s(c)m(k)m(et)i
+(bu\013er)e(size.)630 2486 y Ft(-c)384 b Fu(The)30 b(maxim)m(um)g(size)
+h(of)g(core)g(\014les)f(created.)630 2644 y Ft(-d)384
+b Fu(The)30 b(maxim)m(um)g(size)h(of)g(a)g(pro)s(cess's)f(data)h
+(segmen)m(t.)630 2802 y Ft(-e)384 b Fu(The)30 b(maxim)m(um)g(sc)m
+(heduling)h(priorit)m(y)f(\()p Ft(")p Fu(nice)p Ft(")p
+Fu(\).)630 2960 y Ft(-f)384 b Fu(The)30 b(maxim)m(um)g(size)h(of)g
+(\014les)f(written)h(b)m(y)f(the)g(shell)h(and)f(its)h(c)m(hildren.)630
+3118 y Ft(-i)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(p)s
+(ending)e(signals.)630 3275 y Ft(-k)384 b Fu(The)30 b(maxim)m(um)g(n)m
+(um)m(b)s(er)f(of)i(kqueues)f(that)h(ma)m(y)g(b)s(e)e(allo)s(cated.)630
+3433 y Ft(-l)384 b Fu(The)30 b(maxim)m(um)g(size)h(that)g(ma)m(y)g(b)s
+(e)f(lo)s(c)m(k)m(ed)i(in)m(to)f(memory)-8 b(.)630 3591
+y Ft(-m)384 b Fu(The)36 b(maxim)m(um)g(residen)m(t)h(set)g(size)g
+(\(man)m(y)g(systems)f(do)h(not)f(honor)g(this)1110 3701
+y(limit\).)630 3858 y Ft(-n)384 b Fu(The)38 b(maxim)m(um)h(n)m(um)m(b)s
+(er)e(of)i(op)s(en)f(\014le)h(descriptors)g(\(most)g(systems)g(do)1110
+3968 y(not)31 b(allo)m(w)g(this)g(v)-5 b(alue)31 b(to)g(b)s(e)e(set\).)
+630 4126 y Ft(-p)384 b Fu(The)30 b(pip)s(e)f(bu\013er)h(size.)630
+4284 y Ft(-q)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(b)m
+(ytes)g(in)f Fm(posix)f Fu(message)j(queues.)630 4441
+y Ft(-r)384 b Fu(The)30 b(maxim)m(um)g(real-time)i(sc)m(heduling)f
+(priorit)m(y)-8 b(.)630 4599 y Ft(-s)384 b Fu(The)30
+b(maxim)m(um)g(stac)m(k)i(size.)630 4757 y Ft(-t)384
+b Fu(The)30 b(maxim)m(um)g(amoun)m(t)h(of)f(cpu)g(time)h(in)f(seconds.)
+630 4915 y Ft(-u)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(pro)s(cesses)f(a)m(v)-5 b(ailable)33 b(to)e(a)f(single)i(user.)630
+5073 y Ft(-v)384 b Fu(The)41 b(maxim)m(um)h(amoun)m(t)g(of)h(virtual)f
+(memory)g(a)m(v)-5 b(ailable)44 b(to)e(the)g(shell,)1110
+5182 y(and,)30 b(on)g(some)h(systems,)g(to)g(its)g(c)m(hildren.)630
+5340 y Ft(-x)384 b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i
+(\014le)f(lo)s(c)m(ks.)p eop end
+%%Page: 62 68
+TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(62)630 299 y Ft(-P)384
+b Fu(The)30 b(maxim)m(um)g(n)m(um)m(b)s(er)f(of)i(pseudoterminals.)630
+478 y Ft(-R)384 b Fu(The)27 b(maxim)m(um)h(time)h(a)f(real-time)i(pro)s
+(cess)d(can)i(run)d(b)s(efore)i(blo)s(c)m(king,)h(in)1110
+587 y(microseconds.)630 766 y Ft(-T)384 b Fu(The)30 b(maxim)m(um)g(n)m
+(um)m(b)s(er)f(of)i(threads.)630 945 y(If)36 b Fr(limit)k
+Fu(is)c(giv)m(en,)k(and)c(the)h Ft(-a)f Fu(option)h(is)f(not)h(used,)h
+Fr(limit)h Fu(is)e(the)g(new)f(v)-5 b(alue)37 b(of)g(the)630
+1055 y(sp)s(eci\014ed)c(resource.)51 b(The)34 b(sp)s(ecial)g
+Fr(limit)j Fu(v)-5 b(alues)34 b Ft(hard)p Fu(,)g Ft(soft)p
+Fu(,)g(and)f Ft(unlimited)e Fu(stand)630 1164 y(for)h(the)g(curren)m(t)
+g(hard)f(limit,)i(the)g(curren)m(t)f(soft)g(limit,)h(and)f(no)g(limit,)
+h(resp)s(ectiv)m(ely)-8 b(.)48 b(A)630 1274 y(hard)24
+b(limit)i(cannot)g(b)s(e)e(increased)h(b)m(y)g(a)h(non-ro)s(ot)f(user)f
+(once)i(it)g(is)f(set;)j(a)d(soft)g(limit)h(ma)m(y)630
+1384 y(b)s(e)37 b(increased)h(up)e(to)j(the)f(v)-5 b(alue)38
+b(of)f(the)h(hard)f(limit.)63 b(Otherwise,)39 b(the)f(curren)m(t)f(v)-5
+b(alue)630 1493 y(of)39 b(the)g(soft)h(limit)g(for)f(the)g(sp)s
+(eci\014ed)f(resource)h(is)g(prin)m(ted,)i(unless)e(the)g
+Ft(-H)f Fu(option)i(is)630 1603 y(supplied.)47 b(When)33
+b(more)g(than)g(one)g(resource)g(is)g(sp)s(eci\014ed,)g(the)g(limit)h
+(name)f(and)f(unit,)630 1712 y(if)27 b(appropriate,)h(are)f(prin)m(ted)
+g(b)s(efore)g(the)g(v)-5 b(alue.)40 b(When)27 b(setting)h(new)e
+(limits,)j(if)e(neither)630 1822 y Ft(-H)38 b Fu(nor)g
+Ft(-S)g Fu(is)h(supplied,)h(b)s(oth)e(the)h(hard)f(and)g(soft)h(limits)
+g(are)g(set.)67 b(If)38 b(no)h(option)g(is)630 1932 y(giv)m(en,)c(then)
+f Ft(-f)e Fu(is)i(assumed.)49 b(V)-8 b(alues)35 b(are)e(in)h(1024-b)m
+(yte)i(incremen)m(ts,)f(except)f(for)f Ft(-t)p Fu(,)630
+2041 y(whic)m(h)e(is)g(in)g(seconds;)h Ft(-R)p Fu(,)g(whic)m(h)f(is)g
+(in)g(microseconds;)h Ft(-p)p Fu(,)g(whic)m(h)f(is)g(in)g(units)g(of)g
+(512-)630 2151 y(b)m(yte)k(blo)s(c)m(ks;)j Ft(-P)p Fu(,)e
+Ft(-T)p Fu(,)f Ft(-b)p Fu(,)h Ft(-k)p Fu(,)f Ft(-n)g
+Fu(and)f Ft(-u)p Fu(,)h(whic)m(h)g(are)g(unscaled)g(v)-5
+b(alues;)37 b(and,)f(when)630 2260 y(in)g Fm(posix)f
+Fu(Mo)s(de)h(\(see)g(Section)h(6.11)g([Bash)g(POSIX)d(Mo)s(de],)k(page)
+f(101\),)i Ft(-c)c Fu(and)g Ft(-f)p Fu(,)630 2370 y(whic)m(h)30
+b(are)h(in)f(512-b)m(yte)j(incremen)m(ts.)630 2514 y(The)h(return)g
+(status)h(is)f(zero)i(unless)e(an)g(in)m(v)-5 b(alid)36
+b(option)f(or)f(argumen)m(t)i(is)e(supplied,)h(or)630
+2624 y(an)30 b(error)g(o)s(ccurs)g(while)h(setting)g(a)g(new)f(limit.)
+150 2803 y Ft(unalias)870 2947 y(unalias)46 b([-a])g([)p
+Fj(name)h Ft(...)g(])630 3091 y Fu(Remo)m(v)m(e)42 b(eac)m(h)f
+Fr(name)k Fu(from)39 b(the)i(list)f(of)g(aliases.)71
+b(If)40 b Ft(-a)f Fu(is)h(supplied,)h(all)g(aliases)h(are)630
+3201 y(remo)m(v)m(ed.)g(Aliases)31 b(are)g(describ)s(ed)e(in)h(Section)
+i(6.6)f([Aliases],)h(page)f(94.)150 3471 y Fs(4.3)68
+b(Mo)t(difying)45 b(Shell)g(Beha)l(vior)150 3695 y Fk(4.3.1)63
+b(The)41 b(Set)g(Builtin)150 3842 y Fu(This)35 b(builtin)h(is)g(so)g
+(complicated)i(that)f(it)f(deserv)m(es)h(its)f(o)m(wn)g(section.)59
+b Ft(set)35 b Fu(allo)m(ws)j(y)m(ou)e(to)h(c)m(hange)150
+3951 y(the)c(v)-5 b(alues)34 b(of)f(shell)g(options)h(and)e(set)i(the)f
+(p)s(ositional)h(parameters,)h(or)e(to)h(displa)m(y)f(the)g(names)h
+(and)150 4061 y(v)-5 b(alues)31 b(of)f(shell)h(v)-5 b(ariables.)150
+4250 y Ft(set)870 4394 y(set)47 b([--abefhkmnptuvxBCEHPT])41
+b([-o)47 b Fj(option-name)p Ft(])e([)p Fj(argument)g
+Ft(...)o(])870 4504 y(set)i([+abefhkmnptuvxBCEHPT])42
+b([+o)47 b Fj(option-name)p Ft(])d([)p Fj(argument)h
+Ft(...)o(])630 4648 y Fu(If)22 b(no)h(options)g(or)g(argumen)m(ts)g
+(are)g(supplied,)g Ft(set)f Fu(displa)m(ys)g(the)h(names)g(and)f(v)-5
+b(alues)23 b(of)g(all)630 4757 y(shell)j(v)-5 b(ariables)27
+b(and)e(functions,)h(sorted)g(according)h(to)g(the)f(curren)m(t)f(lo)s
+(cale,)k(in)c(a)i(format)630 4867 y(that)i(ma)m(y)h(b)s(e)e(reused)g
+(as)h(input)f(for)h(setting)h(or)e(resetting)i(the)f(curren)m(tly-set)h
+(v)-5 b(ariables.)630 4977 y(Read-only)37 b(v)-5 b(ariables)37
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)f(v)-5 b(ariables)38 b(are)630 5086 y(listed.)630
+5230 y(When)29 b(options)g(are)g(supplied,)f(they)h(set)h(or)f(unset)f
(shell)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
+5340 y(i\014ed,)h(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)p
+eop end
+%%Page: 63 69
+TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(63)630 299 y Ft(-a)384
+b Fu(Eac)m(h)37 b(v)-5 b(ariable)36 b(or)g(function)g(that)g(is)g
+(created)h(or)f(mo)s(di\014ed)f(is)h(giv)m(en)h(the)1110
+408 y(exp)s(ort)28 b(attribute)h(and)f(mark)m(ed)g(for)g(exp)s(ort)g
+(to)h(the)g(en)m(vironmen)m(t)f(of)h(sub-)1110 518 y(sequen)m(t)i
+(commands.)630 682 y Ft(-b)384 b Fu(Cause)44 b(the)h(status)g(of)f
+(terminated)h(bac)m(kground)g(jobs)f(to)h(b)s(e)f(rep)s(orted)1110
+792 y(immediately)-8 b(,)30 b(rather)d(than)f(b)s(efore)h(prin)m(ting)g
+(the)g(next)g(primary)g(prompt.)630 956 y Ft(-e)384 b
+Fu(Exit)65 b(immediately)g(if)f(a)h(pip)s(eline)e(\(see)i(Section)g
+(3.2.3)h([Pip)s(elines],)1110 1066 y(page)56 b(8\),)62
+b(whic)m(h)55 b(ma)m(y)h(consist)f(of)h(a)f(single)h(simple)f(command)g
+(\(see)1110 1176 y(Section)30 b(3.2.2)i([Simple)d(Commands],)g(page)h
+(8\),)h(a)f(list)g(\(see)h(Section)f(3.2.4)1110 1285
+y([Lists],)66 b(page)59 b(9\),)67 b(or)58 b(a)h(comp)s(ound)e(command)h
+(\(see)h(Section)g(3.2.5)1110 1395 y([Comp)s(ound)h(Commands],)70
+b(page)63 b(10\))g(returns)e(a)i(non-zero)f(status.)1110
+1504 y(The)41 b(shell)g(do)s(es)g(not)g(exit)h(if)f(the)h(command)f
+(that)h(fails)f(is)g(part)g(of)h(the)1110 1614 y(command)g(list)h
(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
+Ft(until)e Fu(k)m(eyw)m(ord,)1110 1724 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
+(command)1110 1833 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
+1943 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
+2052 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
+2162 y(command)g(other)g(than)f(a)i(subshell)d(returns)h(a)h(non-zero)h
+(status)f(b)s(ecause)1110 2271 y(a)k(command)g(failed)g(while)g
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
+1110 2381 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
+2518 y(This)f(option)h(applies)f(to)h(the)g(shell)g(en)m(vironmen)m(t)g
+(and)f(eac)m(h)h(subshell)f(en-)1110 2628 y(vironmen)m(t)j(separately)i
(\(see)f(Section)g(3.7.3)h([Command)d(Execution)i(En-)1110
-5230 y(vironmen)m(t],)i(page)f(39\),)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: 62 68
-TeXDict begin 62 67 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(62)1110 299 y(If)41
+2737 y(vironmen)m(t],)i(page)f(40\),)i(and)d(ma)m(y)h(cause)f
+(subshells)g(to)h(exit)g(b)s(efore)f(exe-)1110 2847 y(cuting)d(all)g
+(the)g(commands)f(in)g(the)g(subshell.)1110 2984 y(If)41
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
+(a)g(con)m(text)1110 3093 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
+3203 y(the)j(comp)s(ound)f(command)h(or)g(function)f(b)s(o)s(dy)g(will)
+h(b)s(e)f(a\013ected)j(b)m(y)e(the)1110 3313 y Ft(-e)25
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
+g(returns)e(a)i(failure)g(status.)1110 3422 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
+1110 3532 y(in)40 b(a)h(con)m(text)i(where)d Ft(-e)g
+Fu(is)h(ignored,)j(that)d(setting)h(will)f(not)g(ha)m(v)m(e)h(an)m(y)
+1110 3641 y(e\013ect)g(un)m(til)e(the)h(comp)s(ound)e(command)h(or)g
+(the)g(command)g(con)m(taining)1110 3751 y(the)31 b(function)f(call)h
+(completes.)630 3915 y Ft(-f)384 b Fu(Disable)31 b(\014lename)g
+(expansion)f(\(globbing\).)630 4080 y Ft(-h)384 b Fu(Lo)s(cate)33
b(and)e(remem)m(b)s(er)h(\(hash\))g(commands)f(as)h(they)g(are)g(lo)s
-(ok)m(ed)h(up)e(for)1110 1477 y(execution.)42 b(This)29
-b(option)i(is)g(enabled)f(b)m(y)g(default.)630 1628 y
+(ok)m(ed)h(up)e(for)1110 4189 y(execution.)42 b(This)29
+b(option)i(is)g(enabled)f(b)m(y)g(default.)630 4354 y
Ft(-k)384 b Fu(All)34 b(argumen)m(ts)g(in)f(the)h(form)f(of)g
(assignmen)m(t)h(statemen)m(ts)i(are)d(placed)h(in)1110
-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(103\).)41
-b(All)1110 2107 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
+4463 y(the)k(en)m(vironmen)m(t)g(for)g(a)g(command,)h(not)f(just)f
+(those)i(that)f(precede)g(the)1110 4573 y(command)30
+b(name.)630 4737 y Ft(-m)384 b Fu(Job)28 b(con)m(trol)h(is)f(enabled)g
+(\(see)h(Chapter)f(7)g([Job)g(Con)m(trol],)i(page)f(107\).)41
+b(All)1110 4847 y(pro)s(cesses)27 b(run)f(in)i(a)g(separate)g(pro)s
(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
+4956 y(completes,)32 b(the)f(shell)f(prin)m(ts)g(a)h(line)f(con)m
+(taining)i(its)f(exit)g(status.)630 5121 y Ft(-n)384
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
+b(This)37 b(ma)m(y)h(b)s(e)f(used)f(to)1110 5230 y(c)m(hec)m(k)d(a)e
(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
-(107\).)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(141.)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: 63 69
-TeXDict begin 63 68 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(63)1110 299 y
-Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110
-457 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110
-615 y Ft(noclobber)1590 725 y Fu(Same)f(as)h Ft(-C)p
-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
+(ignored)g(b)m(y)g(in)m(terac-)1110 5340 y(tiv)m(e)h(shells.)p
+eop end
+%%Page: 64 70
+TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(64)630 299 y Ft(-o)30
+b Fj(option-name)1110 408 y Fu(Set)h(the)f(option)h(corresp)s(onding)e
+(to)i Fr(option-name)5 b Fu(:)1110 575 y Ft(allexport)1590
+685 y Fu(Same)30 b(as)h Ft(-a)p Fu(.)1110 852 y Ft(braceexpand)1590
+962 y Fu(Same)f(as)h Ft(-B)p Fu(.)1110 1129 y Ft(emacs)240
+b Fu(Use)25 b(an)f Ft(emacs)p Fu(-st)m(yle)h(line)f(editing)h(in)m
+(terface)h(\(see)g(Chapter)e(8)1590 1238 y([Command)33
+b(Line)g(Editing],)h(page)h(111\).)51 b(This)32 b(also)i(a\013ects)1590
+1348 y(the)d(editing)g(in)m(terface)h(used)d(for)h Ft(read)f(-e)p
+Fu(.)1110 1515 y Ft(errexit)144 b Fu(Same)30 b(as)h Ft(-e)p
+Fu(.)1110 1682 y Ft(errtrace)96 b Fu(Same)30 b(as)h Ft(-E)p
+Fu(.)1110 1849 y Ft(functrace)1590 1958 y Fu(Same)f(as)h
+Ft(-T)p Fu(.)1110 2125 y Ft(hashall)144 b Fu(Same)30
+b(as)h Ft(-h)p Fu(.)1110 2292 y Ft(histexpand)1590 2402
+y Fu(Same)f(as)h Ft(-H)p Fu(.)1110 2569 y Ft(history)144
+b Fu(Enable)39 b(command)g(history)-8 b(,)42 b(as)d(describ)s(ed)f(in)h
+(Section)h(9.1)1590 2679 y([Bash)d(History)g(F)-8 b(acilities],)41
+b(page)c(146.)60 b(This)36 b(option)h(is)f(on)1590 2788
+y(b)m(y)30 b(default)h(in)f(in)m(teractiv)m(e)j(shells.)1110
+2955 y Ft(ignoreeof)1590 3065 y Fu(An)d(in)m(teractiv)m(e)j(shell)e
+(will)g(not)f(exit)h(up)s(on)e(reading)i(EOF.)1110 3232
+y Ft(keyword)144 b Fu(Same)30 b(as)h Ft(-k)p Fu(.)1110
+3399 y Ft(monitor)144 b Fu(Same)30 b(as)h Ft(-m)p Fu(.)1110
+3566 y Ft(noclobber)1590 3675 y Fu(Same)f(as)h Ft(-C)p
+Fu(.)1110 3842 y Ft(noexec)192 b Fu(Same)30 b(as)h Ft(-n)p
+Fu(.)1110 4009 y Ft(noglob)192 b Fu(Same)30 b(as)h Ft(-f)p
+Fu(.)1110 4176 y Ft(nolog)240 b Fu(Curren)m(tly)30 b(ignored.)1110
+4343 y Ft(notify)192 b Fu(Same)30 b(as)h Ft(-b)p Fu(.)1110
+4510 y Ft(nounset)144 b Fu(Same)30 b(as)h Ft(-u)p Fu(.)1110
+4677 y Ft(onecmd)192 b Fu(Same)30 b(as)h Ft(-t)p Fu(.)1110
+4844 y Ft(physical)96 b Fu(Same)30 b(as)h Ft(-P)p Fu(.)1110
+5011 y Ft(pipefail)96 b Fu(If)44 b(set,)k(the)d(return)e(v)-5
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
+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
-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(99\).)
-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
+5340 y(cessfully)-8 b(.)41 b(This)30 b(option)h(is)f(disabled)g(b)m(y)h
+(default.)p eop end
+%%Page: 65 71
+TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y
+Ft(posix)240 b Fu(Change)30 b(the)g(b)s(eha)m(vior)h(of)f(Bash)g(where)
+g(the)g(default)h(op)s(era-)1590 408 y(tion)25 b(di\013ers)f(from)g
+(the)h Fm(posix)f Fu(standard)f(to)i(matc)m(h)h(the)f(stan-)1590
+518 y(dard)h(\(see)j(Section)f(6.11)h([Bash)f(POSIX)e(Mo)s(de],)j(page)
+f(101\).)1590 628 y(This)37 b(is)g(in)m(tended)g(to)h(mak)m(e)g(Bash)g
+(b)s(eha)m(v)m(e)g(as)g(a)f(strict)h(su-)1590 737 y(p)s(erset)30
+b(of)h(that)f(standard.)1110 911 y Ft(privileged)1590
+1020 y Fu(Same)g(as)h Ft(-p)p Fu(.)1110 1194 y Ft(verbose)144
+b Fu(Same)30 b(as)h Ft(-v)p Fu(.)1110 1367 y Ft(vi)384
b Fu(Use)36 b(a)g Ft(vi)p Fu(-st)m(yle)g(line)g(editing)g(in)m
-(terface.)58 b(This)35 b(also)h(a\013ects)1590 3611 y(the)31
+(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 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
+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 4037 y Fu(\014les)23 b(are)h(not)f(pro)s(cessed,)
+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
-4147 y(vironmen)m(t,)h(and)e(the)g Ft(SHELLOPTS)p Fu(,)f
+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
-4256 y Fu(v)-5 b(ariables,)23 b(if)e(they)g(app)s(ear)f(in)g(the)h(en)m
+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
-4366 y(is)37 b(started)h(with)f(the)g(e\013ectiv)m(e)j(user)d
+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
-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
+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 4695 y
+(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 4804 y(T)-8 b(urning)35
+(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 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
+(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
-5230 y Ft(-u)384 b Fu(T)-8 b(reat)25 b(unset)e(v)-5 b(ariables)25
+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
-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: 64 70
-TeXDict begin 64 69 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(64)1110 299 y(An)28
-b(error)h(message)g(will)g(b)s(e)f(written)h(to)h(the)e(standard)g
-(error,)h(and)f(a)h(non-)1110 408 y(in)m(teractiv)m(e)k(shell)e(will)g
-(exit.)630 568 y Ft(-v)384 b Fu(Prin)m(t)30 b(shell)h(input)e(lines)i
-(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
+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 1166 y(the)24
+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 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
+(command)g(and)f(its)i(expanded)1110 4381 y(argumen)m(ts.)630
+4555 y Ft(-B)384 b Fu(The)41 b(shell)g(will)g(p)s(erform)f(brace)h
+(expansion)g(\(see)h(Section)g(3.5.1)g([Brace)1110 4664
y(Expansion],)30 b(page)h(23\).)42 b(This)30 b(option)h(is)f(on)g(b)m
-(y)h(default.)630 1704 y Ft(-C)384 b Fu(Prev)m(en)m(t)25
+(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
-1813 y(existing)31 b(\014les.)630 1973 y Ft(-E)384 b
+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 2082 y(substitutions,)35
+(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 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
-(143\).)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
+1110 5340 y(The)d Ft(ERR)f Fu(trap)i(is)f(normally)h(not)f(inherited)g
+(in)g(suc)m(h)g(cases.)p eop end
+%%Page: 66 72
+TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(-H)384
+b Fu(Enable)38 b(`)p Ft(!)p Fu(')h(st)m(yle)h(history)e(substitution)g
+(\(see)h(Section)h(9.3)f([History)g(In-)1110 408 y(teraction],)g(page)d
+(148\).)57 b(This)34 b(option)i(is)f(on)g(b)m(y)h(default)f(for)g(in)m
+(teractiv)m(e)1110 518 y(shells.)630 670 y Ft(-P)384
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
+(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 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
+-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
-3168 y(directory)-8 b(.)1110 3303 y(F)g(or)42 b(example,)i(if)d
+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 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(/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 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
+(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 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
+(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
-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
+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('.)p eop end
-%%Page: 65 71
-TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(-)432
-b Fu(Signal)45 b(the)g(end)f(of)h(options,)k(cause)c(all)h(remaining)e
-Fr(argumen)m(ts)49 b Fu(to)d(b)s(e)1110 408 y(assigned)33
-b(to)h(the)g(p)s(ositional)g(parameters.)49 b(The)33
-b Ft(-x)g Fu(and)f Ft(-v)h Fu(options)h(are)1110 518
-y(turned)k(o\013.)68 b(If)38 b(there)i(are)f(no)g(argumen)m(ts,)j(the)e
-(p)s(ositional)g(parameters)1110 628 y(remain)30 b(unc)m(hanged.)630
-775 y(Using)d(`)p Ft(+)p Fu(')h(rather)f(than)g(`)p Ft(-)p
-Fu(')g(causes)h(these)f(options)h(to)g(b)s(e)e(turned)g(o\013.)40
-b(The)27 b(options)h(can)630 884 y(also)36 b(b)s(e)f(used)f(up)s(on)g
-(in)m(v)m(o)s(cation)j(of)e(the)g(shell.)56 b(The)34
-b(curren)m(t)h(set)h(of)f(options)h(ma)m(y)g(b)s(e)630
-994 y(found)29 b(in)h Ft($-)p Fu(.)630 1122 y(The)43
+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 1232 y(order,)30
+(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 1360 y(The)f(return)f(status)i(is)f(alw)m(a)m
+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 1548 y Fk(4.3.2)63 b(The)41 b(Shopt)h(Builtin)150
-1695 y Fu(This)30 b(builtin)g(allo)m(ws)h(y)m(ou)g(to)g(c)m(hange)h
+(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
-1842 y Ft(shopt)870 1970 y(shopt)46 b([-pqsu])g([-o])h([)p
-Fj(optname)e Ft(...])630 2099 y Fu(T)-8 b(oggle)37 b(the)e(v)-5
+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 2208 y(can)24
+(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)630 2318 y(the)k Ft(-o)f Fu(option)i(to)f(the)g
-Ft(set)f Fu(builtin)h(command)f(\(see)i(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)630 2427 y(page)i(61\).)45 b(With)32 b(no)f(options,)h(or)g
-(with)f(the)g Ft(-p)g Fu(option,)h(a)g(list)g(of)f(all)i(settable)g
-(options)630 2537 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h
-(of)g(whether)e(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e
-Fr(optnames)38 b Fu(are)630 2647 y(supplied,)25 b(the)g(output)g(is)g
-(restricted)g(to)h(those)g(options.)39 b(The)24 b Ft(-p)h
-Fu(option)g(causes)g(output)630 2756 y(to)30 b(b)s(e)f(displa)m(y)m(ed)
-g(in)g(a)h(form)f(that)g(ma)m(y)h(b)s(e)f(reused)f(as)i(input.)39
-b(Other)29 b(options)g(ha)m(v)m(e)i(the)630 2866 y(follo)m(wing)h
-(meanings:)630 3013 y Ft(-s)384 b Fu(Enable)30 b(\(set\))i(eac)m(h)f
-Fr(optname)p Fu(.)630 3160 y Ft(-u)384 b Fu(Disable)31
-b(\(unset\))g(eac)m(h)h Fr(optname)p Fu(.)630 3307 y
-Ft(-q)384 b Fu(Suppresses)28 b(normal)h(output;)h(the)g(return)e
-(status)i(indicates)h(whether)e(the)1110 3417 y Fr(optname)37
-b Fu(is)31 b(set)h(or)f(unset.)43 b(If)31 b(m)m(ultiple)h
-Fr(optname)37 b Fu(argumen)m(ts)31 b(are)h(giv)m(en)1110
-3527 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 3636
-y(zero)i(otherwise.)630 3784 y Ft(-o)384 b Fu(Restricts)22
-b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27 b Fu(to)22
-b(b)s(e)e(those)i(de\014ned)e(for)h(the)g Ft(-o)f Fu(option)1110
-3893 y(to)31 b(the)g Ft(set)e Fu(builtin)h(\(see)h(Section)h(4.3.1)g
-([The)e(Set)g(Builtin],)i(page)f(61\).)630 4040 y(If)e(either)i
-Ft(-s)e Fu(or)h Ft(-u)f Fu(is)h(used)f(with)g(no)h Fr(optname)35
-b Fu(argumen)m(ts,)c Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630
-4150 y(options)h(whic)m(h)f(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m
-(ely)-8 b(.)630 4278 y(Unless)30 b(otherwise)h(noted,)g(the)g
-Ft(shopt)d Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32
-b(b)m(y)e(default.)630 4407 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 4516 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f
-(unsetting)g(options,)i(the)e(return)f(status)h(is)g(zero)630
-4626 y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5
-b(alid)30 b(shell)h(option.)630 4754 y(The)f(list)h(of)f
-Ft(shopt)f Fu(options)i(is:)630 4902 y Ft(assoc_expand_once)1110
-5011 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5
+b(with)p eop end
+%%Page: 67 73
+TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y(the)30
+b Ft(-o)f Fu(option)i(to)f(the)g Ft(set)f Fu(builtin)h(command)f(\(see)
+i(Section)g(4.3.1)g([The)f(Set)g(Builtin],)630 408 y(page)i(62\).)45
+b(With)32 b(no)f(options,)h(or)g(with)f(the)g Ft(-p)g
+Fu(option,)h(a)g(list)g(of)f(all)i(settable)g(options)630
+518 y(is)g(displa)m(y)m(ed,)i(with)e(an)g(indication)h(of)g(whether)e
+(or)h(not)h(eac)m(h)g(is)g(set;)h(if)e Fr(optnames)38
+b Fu(are)630 628 y(supplied,)25 b(the)g(output)g(is)g(restricted)g(to)h
+(those)g(options.)39 b(The)24 b Ft(-p)h Fu(option)g(causes)g(output)630
+737 y(to)30 b(b)s(e)f(displa)m(y)m(ed)g(in)g(a)h(form)f(that)g(ma)m(y)h
+(b)s(e)f(reused)f(as)i(input.)39 b(Other)29 b(options)g(ha)m(v)m(e)i
+(the)630 847 y(follo)m(wing)h(meanings:)630 1004 y Ft(-s)384
+b Fu(Enable)30 b(\(set\))i(eac)m(h)f Fr(optname)p Fu(.)630
+1161 y Ft(-u)384 b Fu(Disable)31 b(\(unset\))g(eac)m(h)h
+Fr(optname)p Fu(.)630 1319 y Ft(-q)384 b Fu(Suppresses)28
+b(normal)h(output;)h(the)g(return)e(status)i(indicates)h(whether)e(the)
+1110 1428 y Fr(optname)37 b Fu(is)31 b(set)h(or)f(unset.)43
+b(If)31 b(m)m(ultiple)h Fr(optname)37 b Fu(argumen)m(ts)31
+b(are)h(giv)m(en)1110 1538 y(with)d Ft(-q)p Fu(,)g(the)g(return)f
+(status)h(is)g(zero)h(if)f(all)h Fr(optnames)j Fu(are)d(enabled;)f
+(non-)1110 1647 y(zero)i(otherwise.)630 1805 y Ft(-o)384
+b Fu(Restricts)22 b(the)f(v)-5 b(alues)22 b(of)f Fr(optname)27
+b Fu(to)22 b(b)s(e)e(those)i(de\014ned)e(for)h(the)g
+Ft(-o)f Fu(option)1110 1914 y(to)31 b(the)g Ft(set)e
+Fu(builtin)h(\(see)h(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f
+(62\).)630 2071 y(If)e(either)i Ft(-s)e Fu(or)h Ft(-u)f
+Fu(is)h(used)f(with)g(no)h Fr(optname)35 b Fu(argumen)m(ts,)c
+Ft(shopt)d Fu(sho)m(ws)h(only)h(those)630 2181 y(options)h(whic)m(h)f
+(are)h(set)f(or)h(unset,)f(resp)s(ectiv)m(ely)-8 b(.)630
+2314 y(Unless)30 b(otherwise)h(noted,)g(the)g Ft(shopt)d
+Fu(options)j(are)g(disabled)f(\(o\013)7 b(\))32 b(b)m(y)e(default.)630
+2448 y(The)d(return)f(status)i(when)f(listing)h(options)g(is)f(zero)i
+(if)e(all)i Fr(optnames)i Fu(are)d(enabled,)g(non-)630
+2557 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g
+(options,)i(the)e(return)f(status)h(is)g(zero)630 2667
+y(unless)30 b(an)g Fr(optname)36 b Fu(is)30 b(not)h(a)g(v)-5
+b(alid)30 b(shell)h(option.)630 2800 y(The)f(list)h(of)f
+Ft(shopt)f Fu(options)i(is:)630 2958 y Ft(assoc_expand_once)1110
+3067 y Fu(If)h(set,)i(the)e(shell)h(suppresses)e(m)m(ultiple)i(ev)-5
b(aluation)34 b(of)e(asso)s(ciativ)m(e)j(arra)m(y)1110
-5121 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5
-b(aluation,)28 b(while)e(executing)1110 5230 y(builtins)c(that)i(can)f
+3177 y(subscripts)24 b(during)h(arithmetic)h(expression)g(ev)-5
+b(aluation,)28 b(while)e(executing)1110 3286 y(builtins)c(that)i(can)f
(p)s(erform)f(v)-5 b(ariable)24 b(assignmen)m(ts,)h(and)e(while)g
-(executing)1110 5340 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i
-(dereferencing.)p eop end
-%%Page: 66 72
-TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(66)630 299 y Ft(autocd)192
-b Fu(If)27 b(set,)h(a)g(command)f(name)g(that)h(is)f(the)g(name)g(of)h
-(a)f(directory)h(is)f(executed)1110 408 y(as)j(if)f(it)h(w)m(ere)f(the)
-h(argumen)m(t)g(to)g(the)f Ft(cd)g Fu(command.)40 b(This)29
-b(option)g(is)h(only)1110 518 y(used)g(b)m(y)g(in)m(teractiv)m(e)j
-(shells.)630 682 y Ft(cdable_vars)1110 792 y Fu(If)h(this)h(is)g(set,)i
-(an)e(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i
-(is)f(not)1110 902 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h
+(executing)1110 3396 y(builtins)30 b(that)h(p)s(erform)e(arra)m(y)i
+(dereferencing.)630 3553 y Ft(autocd)192 b Fu(If)27 b(set,)h(a)g
+(command)f(name)g(that)h(is)f(the)g(name)g(of)h(a)f(directory)h(is)f
+(executed)1110 3663 y(as)j(if)f(it)h(w)m(ere)f(the)h(argumen)m(t)g(to)g
+(the)f Ft(cd)g Fu(command.)40 b(This)29 b(option)g(is)h(only)1110
+3772 y(used)g(b)m(y)g(in)m(teractiv)m(e)j(shells.)630
+3930 y Ft(cdable_vars)1110 4039 y Fu(If)h(this)h(is)g(set,)i(an)e
+(argumen)m(t)g(to)h(the)f Ft(cd)f Fu(builtin)h(command)f(that)i(is)f
+(not)1110 4149 y(a)c(directory)g(is)g(assumed)f(to)h(b)s(e)f(the)h
(name)f(of)h(a)g(v)-5 b(ariable)31 b(whose)g(v)-5 b(alue)31
-b(is)1110 1011 y(the)g(directory)f(to)i(c)m(hange)f(to.)630
-1176 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g
+b(is)1110 4258 y(the)g(directory)f(to)i(c)m(hange)f(to.)630
+4416 y Ft(cdspell)144 b Fu(If)27 b(set,)h(minor)f(errors)f(in)h(the)g
(sp)s(elling)h(of)f(a)g(directory)h(comp)s(onen)m(t)f(in)g(a)h
-Ft(cd)1110 1285 y Fu(command)i(will)h(b)s(e)f(corrected.)43
+Ft(cd)1110 4525 y Fu(command)i(will)h(b)s(e)f(corrected.)43
b(The)30 b(errors)g(c)m(hec)m(k)m(ed)j(for)d(are)h(transp)s(osed)1110
-1395 y(c)m(haracters,)46 b(a)c(missing)f(c)m(haracter,)47
+4635 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 1504 y(correction)25 b(is)e(found,)g(the)h(corrected)g
-(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 1614
+b(If)42 b(a)1110 4744 y(correction)25 b(is)e(found,)g(the)h(corrected)g
+(path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 4854
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 1778 y Ft(checkhash)1110
-1888 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
-(command)f(found)g(in)g(the)h(hash)f(table)1110 1998
+(teractiv)m(e)k(shells.)630 5011 y Ft(checkhash)1110
+5121 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f
+(command)f(found)g(in)g(the)h(hash)f(table)1110 5230
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 2107
-y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630
-2271 y Ft(checkjobs)1110 2381 y Fu(If)d(set,)i(Bash)e(lists)h(the)g
-(status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)
-1110 2491 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72
-b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110
-2600 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
-(exit)g(is)g(attempted)h(without)e(an)1110 2710 y(in)m(terv)m(ening)d
-(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(103\).)40
-b(The)1110 2819 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
-(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2984 y Ft(checkwinsize)1110
-3093 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h
-(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 3203
+b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 5340
+y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)p
+eop end
+%%Page: 68 74
+TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(checkjobs)1110
+408 y Fu(If)28 b(set,)i(Bash)e(lists)h(the)g(status)g(of)f(an)m(y)h
+(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore)1110 518
+y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41
+b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110
+628 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h
+(exit)g(is)g(attempted)h(without)e(an)1110 737 y(in)m(terv)m(ening)d
+(command)f(\(see)h(Chapter)e(7)h([Job)g(Con)m(trol],)i(page)f(107\).)40
+b(The)1110 847 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h
+(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 1029 y Ft(checkwinsize)1110
+1139 y Fu(If)23 b(set,)j(Bash)e(c)m(hec)m(ks)h(the)f(windo)m(w)f(size)h
+(after)h(eac)m(h)f(external)h(\(non-builtin\))1110 1249
y(command)55 b(and,)60 b(if)55 b(necessary)-8 b(,)62
b(up)s(dates)54 b(the)h(v)-5 b(alues)55 b(of)g Ft(LINES)f
-Fu(and)1110 3313 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g
-(enabled)f(b)m(y)g(default.)630 3477 y Ft(cmdhist)144
+Fu(and)1110 1358 y Ft(COLUMNS)p Fu(.)39 b(This)29 b(option)i(is)g
+(enabled)f(b)m(y)g(default.)630 1541 y Ft(cmdhist)144
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 3587 y(in)c(the)g(same)g
+(of)g(a)h(m)m(ultiple-line)g(command)1110 1650 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 3696 y(commands.)79
+(re-editing)g(of)f(m)m(ulti-line)1110 1760 y(commands.)79
b(This)43 b(option)g(is)h(enabled)f(b)m(y)g(default,)k(but)c(only)g
-(has)g(an)1110 3806 y(e\013ect)30 b(if)e(command)g(history)g(is)h
+(has)g(an)1110 1870 y(e\013ect)30 b(if)e(command)g(history)g(is)h
(enabled)f(\(see)h(Section)g(9.1)h([Bash)e(History)1110
-3915 y(F)-8 b(acilities],)34 b(page)d(141\).)630 4080
-y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)
-m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect)1110
-4189 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h
-(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 4299
-y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e
-(comparison)g(when)f(using)1110 4408 y(the)31 b Ft([[)e
-Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p
-Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110
-4518 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e
-(strcmp\(3\);)i(bash-4.1)g(and)1110 4628 y(later)e(use)f(the)h(curren)m
-(t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630
-4792 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s
-(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect)
-1110 4902 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g
-(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 5011
-y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s
-(erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110
-5121 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24
-b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110
-5230 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h
-(terminates)g(due)e(to)i(an)1110 5340 y(in)m(terrupt.)p
-eop end
-%%Page: 67 73
-TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(compat40)96
-b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i
-(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110
-408 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f
-(using)h(the)g Ft([[)g Fu(conditional)1110 518 y(command's)28
-b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s(erators)f(\(see)i
-(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 628
-y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)64
-b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 737 y(later)24
-b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i
-(the)e(in)m(terrupt;)i(previous)1110 847 y(v)m(ersions)31
-b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)630
-1003 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g
-Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in)f(a)h
-(double-)1110 1113 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s
-(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 1223
-y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e
-(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 1332
-y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69
-b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 1442
-y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69
-b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110
-1551 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630
-1708 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s
-(cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110
-1817 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5
-b(al.)630 1974 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g
-(not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f
-(made)1110 2084 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i
-(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 2193
-y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g
-(non-fatal)i(errors)d(that)i(cause)1110 2303 y(the)28
-b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f
-(is)h(to)g(mak)m(e)g(them)1110 2412 y(fatal)42 b(errors)e(that)i(cause)
-f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110
-2522 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g
-(executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110
-2632 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g
-(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 2788
-y Ft(compat44)96 b Fu(If)33 b(set,)i(Bash)f(sa)m(v)m(es)h(the)e(p)s
-(ositional)i(parameters)f(to)g(BASH)p 3264 2788 28 4
-v 40 w(AR)m(GV)h(and)1110 2898 y(BASH)p 1367 2898 V 40
-w(AR)m(GC)k(b)s(efore)e(they)i(are)f(used,)i(regardless)e(of)g(whether)
-g(or)g(not)1110 3007 y(extended)30 b(debugging)h(mo)s(de)f(is)g
-(enabled.)630 3164 y Ft(complete_fullquote)1110 3273
-y Fu(If)h(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e
-(\014lenames)g(and)g(direc-)1110 3383 y(tory)g(names)f(when)g(p)s
+1979 y(F)-8 b(acilities],)34 b(page)d(146\).)630 2162
+y Ft(compat31)630 2271 y(compat32)630 2381 y(compat40)630
+2491 y(compat41)630 2600 y(compat42)630 2710 y(compat43)630
+2819 y(compat44)96 b Fu(These)39 b(con)m(trol)i(asp)s(ects)f(of)f(the)h
+(shell's)g(compatibilit)m(y)h(mo)s(de)e(\(see)h(Sec-)1110
+2929 y(tion)31 b(6.12)h([Shell)e(Compatibilit)m(y)i(Mo)s(de],)f(page)g
+(104\).)630 3112 y Ft(complete_fullquote)1110 3221 y
+Fu(If)g(set,)g(Bash)h(quotes)f(all)h(shell)f(metac)m(haracters)i(in)e
+(\014lenames)g(and)g(direc-)1110 3331 y(tory)g(names)f(when)g(p)s
(erforming)f(completion.)43 b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m
-(es)1110 3493 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g
-(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3602
+(es)1110 3440 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g
+(sign)g(from)f(the)h(set)g(of)f(c)m(haracters)1110 3550
y(that)f(will)g(b)s(e)f(quoted)g(in)g(completed)i(\014lenames)e(when)f
-(these)i(metac)m(har-)1110 3712 y(acters)29 b(app)s(ear)e(in)g(shell)h
+(these)i(metac)m(har-)1110 3660 y(acters)29 b(app)s(ear)e(in)g(shell)h
(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e
-(completed.)1110 3821 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)
+(completed.)1110 3769 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)
-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110
-3931 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)
-g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 4041
+3879 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,)
+g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 3988
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
-4150 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
-(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4260
+4098 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f
+(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 4208
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 4369 y(through)30
-b(4.2.)630 4526 y Ft(direxpand)1110 4635 y Fu(If)k(set,)i(Bash)f
+(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 4317 y(through)30
+b(4.2.)630 4500 y Ft(direxpand)1110 4609 y Fu(If)k(set,)i(Bash)f
(replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g
-(ex-)1110 4745 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
-(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4855
+(ex-)1110 4719 y(pansion)k(when)g(p)s(erforming)f(\014lename)i
+(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 4829
y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38
-b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4964
+b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 4938
y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630
5121 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s
(elling)g(correction)g(on)g(directory)g(names)f(during)1110
5230 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g
(initially)h(supplied)e(do)s(es)h(not)1110 5340 y(exist.)p
eop end
-%%Page: 68 74
-TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft(dotglob)144
+%%Page: 69 75
+TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(69)630 299 y Ft(dotglob)144
b Fu(If)36 b(set,)i(Bash)e(includes)g(\014lenames)g(b)s(eginning)f
(with)h(a)g(`.')58 b(in)36 b(the)g(results)1110 408 y(of)f(\014lename)f
(expansion.)53 b(The)33 b(\014lenames)i(`)p Ft(.)p Fu(')f(and)g(`)p
@@ -13107,116 +13129,117 @@ Fu(builtin)h(command.)39 b(An)1110 902 y(in)m(teractiv)m(e)33
b(shell)e(do)s(es)f(not)g(exit)i(if)e Ft(exec)f Fu(fails.)630
1066 y Ft(expand_aliases)1110 1176 y Fu(If)j(set,)h(aliases)g(are)g
(expanded)e(as)h(describ)s(ed)f(b)s(elo)m(w)h(under)f(Aliases,)i(Sec-)
-1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(93.)64
+1110 1285 y(tion)38 b(6.6)h([Aliases],)j(page)d(94.)64
b(This)37 b(option)h(is)g(enabled)g(b)m(y)g(default)g(for)1110
1395 y(in)m(teractiv)m(e)33 b(shells.)630 1559 y Ft(extdebug)96
-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 1669 y(b)s(efore)f(the)h
-(shell)f(starts,)j(iden)m(tical)f(to)f(the)g Ft(--debugger)c
-Fu(option.)56 b(If)35 b(set)1110 1778 y(after)25 b(in)m(v)m(o)s
-(cation,)j(b)s(eha)m(vior)d(in)m(tended)g(for)f(use)h(b)m(y)g
-(debuggers)f(is)h(enabled:)1159 1915 y(1.)61 b(The)37
-b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i
-(Section)f(4.2)h([Bash)1290 2025 y(Builtins],)29 b(page)g(50\))g
-(displa)m(ys)f(the)g(source)h(\014le)f(name)g(and)f(line)h(n)m(um-)1290
-2134 y(b)s(er)h(corresp)s(onding)g(to)i(eac)m(h)g(function)f(name)g
-(supplied)f(as)i(an)f(argu-)1290 2244 y(men)m(t.)1159
-2381 y(2.)61 b(If)20 b(the)h(command)g(run)e(b)m(y)i(the)f
-Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 b(alue,)1290
-2491 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g(not)i
-(executed.)1159 2628 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m(y)i
-(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38
-b(of)f(2,)1290 2737 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h
-(subroutine)e(\(a)i(shell)g(function)f(or)1290 2847 y(a)h(shell)g
+b Fu(If)35 b(set)i(at)f(shell)g(in)m(v)m(o)s(cation,)k(or)c(in)f(a)h
+(shell)h(startup)e(\014le,)i(arrange)g(to)f(ex-)1110
+1669 y(ecute)h(the)f(debugger)g(pro\014le)g(b)s(efore)g(the)g(shell)h
+(starts,)h(iden)m(tical)g(to)f(the)1110 1778 y Ft(--debugger)32
+b Fu(option.)56 b(If)35 b(set)h(after)g(in)m(v)m(o)s(cation,)j(b)s(eha)
+m(vior)c(in)m(tended)g(for)1110 1888 y(use)30 b(b)m(y)g(debuggers)g(is)
+h(enabled:)1159 2025 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g
+Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290
+2134 y(Builtins],)29 b(page)g(51\))g(displa)m(ys)f(the)g(source)h
+(\014le)f(name)g(and)f(line)h(n)m(um-)1290 2244 y(b)s(er)h(corresp)s
+(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-)
+1290 2354 y(men)m(t.)1159 2491 y(2.)61 b(If)20 b(the)h(command)g(run)e
+(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5
+b(alue,)1290 2600 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g
+(not)i(executed.)1159 2737 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m
+(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38
+b(of)f(2,)1290 2847 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h
+(subroutine)e(\(a)i(shell)g(function)f(or)1290 2956 y(a)h(shell)g
(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 2956 y(sim)m(ulates)d(a)g(call)h(to)f
-Ft(return)p Fu(.)1159 3093 y(4.)61 b Ft(BASH_ARGC)34
+Fu(builtins\),)i(the)g(shell)1290 3066 y(sim)m(ulates)d(a)g(call)h(to)f
+Ft(return)p Fu(.)1159 3203 y(4.)61 b Ft(BASH_ARGC)34
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 3203 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
-(V)-8 b(ariables],)32 b(page)f(73\).)1159 3340 y(5.)61
+g(their)1290 3313 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g
+(V)-8 b(ariables],)32 b(page)f(73\).)1159 3450 y(5.)61
b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56
-b(substitution,)63 b(shell)1290 3450 y(functions,)32
+b(substitution,)63 b(shell)1290 3559 y(functions,)32
b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f
-Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3559 y Ft(DEBUG)d
-Fu(and)h Ft(RETURN)e Fu(traps.)1159 3696 y(6.)61 b(Error)41
+Fj(command)e Ft(\))j Fu(inherit)h(the)1290 3669 y Ft(DEBUG)d
+Fu(and)h Ft(RETURN)e Fu(traps.)1159 3806 y(6.)61 b(Error)41
b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f
-(func-)1290 3806 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i
+(func-)1290 3915 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i
(with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g
-Ft(ERR)1290 3915 y Fu(trap.)630 4080 y Ft(extglob)144
+Ft(ERR)1290 4025 y Fu(trap.)630 4189 y Ft(extglob)144
b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g
-(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4189 y(Section)j(3.5.8.1)i
+(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 4299 y(Section)j(3.5.8.1)i
([P)m(attern)f(Matc)m(hing],)g(page)f(33\))h(are)f(enabled.)630
-4354 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p
+4463 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p
Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e
-Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4463 y Ft(${)p
+Fu(quoting)k(is)e(p)s(erformed)f(within)1110 4573 y Ft(${)p
Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f
-(quotes.)55 b(This)33 b(option)1110 4573 y(is)d(enabled)h(b)m(y)f
-(default.)630 4737 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d
+(quotes.)55 b(This)33 b(option)1110 4682 y(is)d(enabled)h(b)m(y)f
+(default.)630 4847 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d
(whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g
-(ex-)1110 4847 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
-5011 y Ft(force_fignore)1110 5121 y Fu(If)43 b(set,)k(the)d(su\016xes)f
+(ex-)1110 4956 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630
+5121 y Ft(force_fignore)1110 5230 y Fu(If)43 b(set,)k(the)d(su\016xes)f
(sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5
-b(ariable)44 b(cause)1110 5230 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h
-(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110
-5340 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g
-(completions.)62 b(See)37 b(Section)h(5.2)p eop end
-%%Page: 69 75
-TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(69)1110 299 y([Bash)24
-b(V)-8 b(ariables],)27 b(page)e(73,)h(for)d(a)h(description)g(of)g
-Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 408 y(is)30
-b(enabled)h(b)m(y)f(default.)630 603 y Ft(globasciiranges)1110
-713 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc)m
-(hing)h(brac)m(k)m(et)h(expres-)1110 822 y(sions)28 b(\(see)h(Section)h
-(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)
-g(as)g(if)1110 932 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)
-s(erforming)g(comparisons.)44 b(That)31 b(is,)1110 1042
-y(the)d(curren)m(t)g(lo)s(cale's)i(collating)h(sequence)d(is)h(not)f
-(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 1151 y(`)p
-Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p
-Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m
-(w)m(er-)1110 1261 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i
-(together.)630 1456 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)
-f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m
-(text)j(will)1110 1565 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)
-f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)1110
-1675 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p
+b(ariable)44 b(cause)1110 5340 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h
+(when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)p
+eop end
+%%Page: 70 76
+TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(70)1110 299 y(ignored)37
+b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g(completions.)62
+b(See)37 b(Section)h(5.2)1110 408 y([Bash)24 b(V)-8 b(ariables],)27
+b(page)e(73,)h(for)d(a)h(description)g(of)g Ft(FIGNORE)p
+Fu(.)37 b(This)22 b(option)1110 518 y(is)30 b(enabled)h(b)m(y)f
+(default.)630 701 y Ft(globasciiranges)1110 810 y Fu(If)j(set,)h(range)
+f(expressions)g(used)f(in)h(pattern)g(matc)m(hing)h(brac)m(k)m(et)h
+(expres-)1110 920 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)
+g(Matc)m(hing],)h(page)e(33\))g(b)s(eha)m(v)m(e)g(as)g(if)1110
+1029 y(in)i(the)g(traditional)i(C)d(lo)s(cale)j(when)d(p)s(erforming)g
+(comparisons.)44 b(That)31 b(is,)1110 1139 y(the)d(curren)m(t)g(lo)s
+(cale's)i(collating)h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g
+(accoun)m(t,)i(so)1110 1249 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i
+(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p
+Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m(w)m(er-)1110
+1358 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i(together.)630
+1541 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern)f(`)p
+Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m(text)j
+(will)1110 1650 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or)f(more)
+g(directories)h(and)e(sub)s(directories.)54 b(If)1110
+1760 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p
Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110
-1784 y(matc)m(h.)630 1979 y Ft(gnu_errfmt)1110 2089 y
+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 2198 y(message)c(format.)630
-2393 y Ft(histappend)1110 2503 y Fu(If)c(set,)j(the)e(history)g(list)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 2612 y(the)d Ft(HISTFILE)d Fu(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 2722 y(the)31 b(\014le.)630 2917 y Ft(histreedit)1110
-3026 y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g
+(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
-3136 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630
-3331 y Ft(histverify)1110 3440 y Fu(If)35 b(set,)i(and)e(Readline)h(is)
+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
-3550 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g
-(parser.)59 b(Instead,)38 b(the)1110 3660 y(resulting)i(line)f(is)h
+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 3769 y(further)29 b(mo)s(di\014cation.)630 3964
-y Ft(hostcomplete)1110 4074 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f
+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
-4183 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f
-(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 4293 y(pleted)g(\(see)h
+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
-(127\).)1110 4402 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
-630 4597 y Ft(huponexit)1110 4707 y Fu(If)i(set,)i(Bash)f(will)h(send)d
+(133\).)1110 4427 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)
+630 4609 y Ft(huponexit)1110 4719 y Fu(If)i(set,)i(Bash)f(will)h(send)d
Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login)
-1110 4816 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
-(page)f(41\).)630 5011 y Ft(inherit_errexit)1110 5121
+1110 4829 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g
+(page)f(42\).)630 5011 y Ft(inherit_errexit)1110 5121
y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5
b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 5230
y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m
(vironmen)m(t.)46 b(This)32 b(op-)1110 5340 y(tion)f(is)f(enabled)h
(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)p eop end
-%%Page: 70 76
-TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(70)630 299 y Ft
+%%Page: 71 77
+TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft
(interactive_comments)1110 408 y Fu(Allo)m(w)27 b(a)g(w)m(ord)e(b)s
(eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and)
f(all)i(remain-)1110 518 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g
@@ -13247,7 +13270,7 @@ y(v)-5 b(ariables)31 b(at)g(the)g(curren)m(t)f(function)g(scop)s(e.)630
2580 y Ft(login_shell)1110 2690 y Fu(The)35 b(shell)h(sets)g(this)f
(option)h(if)g(it)g(is)f(started)h(as)g(a)g(login)g(shell)g(\(see)g
(Sec-)1110 2800 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g
-(85\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m
+(86\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m
(hanged.)630 2949 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h
(\014le)g(that)g(Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s
(een)g(accessed)1110 3059 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)
@@ -13274,12 +13297,12 @@ b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m
(string,)h(rather)f(than)g(themselv)m(es.)630 5121 y
Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g
(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 5230
-y(grammable)45 b(Completion],)k(page)c(132\))h(are)f(enabled.)82
+y(grammable)45 b(Completion],)k(page)c(137\))h(are)f(enabled.)82
b(This)44 b(option)h(is)1110 5340 y(enabled)30 b(b)m(y)h(default.)p
eop end
-%%Page: 71 77
-TeXDict begin 71 76 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(71)630 299 y Ft(progcomp_alias)
+%%Page: 72 78
+TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41
+b(Shell)30 b(Builtin)h(Commands)2069 b(72)630 299 y Ft(progcomp_alias)
1110 408 y Fu(If)23 b(set,)j(and)d(programmable)h(completion)h(is)f
(enabled,)h(Bash)f(treats)h(a)f(com-)1110 518 y(mand)34
b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g
@@ -13287,943 +13310,997 @@ b(name)h(that)g(do)s(esn't)f(ha)m(v)m(e)i(an)m(y)g(completions)f(as)g
(expansion.)72 b(If)41 b(it)g(has)g(an)g(alias,)k(Bash)c(attempts)1110
737 y(programmable)28 b(completion)h(using)e(the)h(command)f(w)m(ord)h
(resulting)f(from)1110 847 y(the)k(expanded)e(alias.)630
-996 y Ft(promptvars)1110 1106 y Fu(If)50 b(set,)56 b(prompt)49
+1006 y Ft(promptvars)1110 1116 y Fu(If)50 b(set,)56 b(prompt)49
b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110
-1215 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 1325 y(expanded)53
+1225 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo)
+m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1335 y(expanded)53
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 1434 y(Prompt],)30 b(page)h(97\).)42
+(trolling)g(the)1110 1445 y(Prompt],)30 b(page)h(98\).)42
b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630
-1584 y Ft(restricted_shell)1110 1693 y Fu(The)40 b(shell)h(sets)g(this)
+1604 y Ft(restricted_shell)1110 1714 y Fu(The)40 b(shell)h(sets)g(this)
g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see)
-1110 1803 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e
-(99\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110
-1913 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 2022
+1110 1823 y(Section)32 b(6.10)h([The)d(Restricted)j(Shell],)e(page)h
+(100\).)45 b(The)30 b(v)-5 b(alue)32 b(ma)m(y)g(not)1110
+1933 y(b)s(e)g(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f
+(the)h(startup)g(\014les)f(are)i(executed,)1110 2042
y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h
-(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2132
-y(stricted.)630 2281 y Ft(shift_verbose)1110 2391 y Fu(If)g(this)g(is)g
+(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2152
+y(stricted.)630 2311 y Ft(shift_verbose)1110 2421 y Fu(If)g(this)g(is)g
(set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message)
-i(when)d(the)1110 2500 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 2649 y
-Ft(sourcepath)1110 2759 y Fu(If)22 b(set,)j(the)e Ft(source)e
+i(when)d(the)1110 2531 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m
+(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2690 y
+Ft(sourcepath)1110 2800 y Fu(If)22 b(set,)j(the)e Ft(source)e
Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e
-Fu(to)j(\014nd)d(the)h(directory)1110 2869 y(con)m(taining)29
+Fu(to)j(\014nd)d(the)h(directory)1110 2909 y(con)m(taining)29
b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40
-b(This)27 b(option)h(is)f(enabled)1110 2978 y(b)m(y)j(default.)630
-3127 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e
+b(This)27 b(option)h(is)f(enabled)1110 3019 y(b)m(y)j(default.)630
+3178 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e
Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f
-(de-)1110 3237 y(fault.)630 3386 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 3496 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 3606 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
-3836 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 3996
-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 4105 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
-4215 y(commands)e(in)g(three)h(resp)s(ects:)199 4344
+(de-)1110 3288 y(fault.)150 3528 y Fs(4.4)68 b(Sp)t(ecial)45
+b(Builtins)150 3688 y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e
+Fm(posix)g Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e
+(commands)g(as)h Fl(sp)-5 b(e-)150 3797 y(cial)p Fu(.)47
+b(When)33 b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g
+(sp)s(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150
+3907 y(commands)e(in)g(three)h(resp)s(ects:)199 4042
y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h
-(functions)f(during)f(command)h(lo)s(okup.)199 4474 y(2.)61
+(functions)f(during)f(command)h(lo)s(okup.)199 4176 y(2.)61
b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h
-(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4603
+(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4311
y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command)
g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330
-4713 y(after)i(the)f(command)h(completes.)275 4862 y(When)36
+4420 y(after)i(the)f(command)h(completes.)275 4579 y(When)36
b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f
(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150
-4972 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41
+4689 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41
b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h
-(Section)h(6.11)150 5081 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(99.)275
-5211 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390
-5340 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
-(readonly)f(return)h(set)p eop end
-%%Page: 72 78
-TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(4:)41
-b(Shell)30 b(Builtin)h(Commands)2069 b(72)390 299 y Ft(shift)46
-b(trap)h(unset)p eop end
+(Section)h(6.11)150 4799 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(101.)275
+4933 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390
+5068 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f
+(readonly)f(return)h(set)390 5177 y(shift)g(trap)h(unset)p
+eop end
%%Page: 73 79
TeXDict begin 73 78 bop 3659 -116 a Fu(73)150 299 y Fp(5)80
-b(Shell)53 b(V)-13 b(ariables)150 522 y Fu(This)21 b(c)m(hapter)i
+b(Shell)53 b(V)-13 b(ariables)150 504 y Fu(This)21 b(c)m(hapter)i
(describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.)
37 b(Bash)23 b(automatically)h(assigns)f(default)150
-631 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5
-b(ariables.)150 867 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11
-b(ariables)150 1027 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5
+614 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 843 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11
+b(ariables)150 1003 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 1136 y(assigns)f(a)f
+(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1112 y(assigns)f(a)f
(default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150
-1291 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g
+1260 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 1401 y(command.)150 1556 y Ft(HOME)288
+Ft(cd)f Fu(builtin)630 1370 y(command.)150 1518 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
-1665 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37
+1628 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37
b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f
-(3.5.2)h([Tilde)630 1775 y(Expansion],)30 b(page)h(23\).)150
-1930 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f
+(3.5.2)h([Tilde)630 1737 y(Expansion],)30 b(page)h(24\).)150
+1885 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f
(separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e
-(as)i(part)630 2039 y(of)31 b(expansion.)150 2194 y Ft(MAIL)288
+(as)i(part)630 1995 y(of)31 b(expansion.)150 2143 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 2304
+(directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2252
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 2413 y(\014le)f(or)h(Maildir-format)g(directory)-8
-b(.)150 2568 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f
+630 2362 y(\014le)f(or)h(Maildir-format)g(directory)-8
+b(.)150 2510 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 2678 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g
+(ks)g(for)f(new)630 2619 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 2787 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m
+(new)h(mail)630 2729 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 2897 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g
+(`)p Ft(?)p Fu('.)630 2839 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 3006 y(mail)f(\014le.)150 3161 y Ft(OPTARG)192
+(t)630 2948 y(mail)f(\014le.)150 3096 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
-3316 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g
+3244 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 3471 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f
+Fu(builtin.)150 3392 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 3581 y(zero-length)e(\(n)m(ull\))g(directory)f
+(commands.)45 b(A)630 3502 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 3690 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f
+(curren)m(t)630 3611 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 3800 y(initial)f(or)e(trailing)h(colon.)150
-3955 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55
+(colons,)g(or)f(as)g(an)630 3721 y(initial)f(or)e(trailing)h(colon.)150
+3869 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55
b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28
-b Fu('.)56 b(See)36 b(Section)g(6.9)630 4064 y([Con)m(trolling)42
-b(the)e(Prompt],)j(page)e(97,)j(for)c(the)g(complete)i(list)f(of)f
-(escap)s(e)h(sequences)630 4174 y(that)31 b(are)g(expanded)e(b)s(efore)
-h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4329 y Ft(PS2)336
+b Fu('.)56 b(See)36 b(Section)g(6.9)630 3979 y([Con)m(trolling)42
+b(the)e(Prompt],)j(page)e(98,)j(for)c(the)g(complete)i(list)f(of)f
+(escap)s(e)h(sequences)630 4088 y(that)31 b(are)g(expanded)e(b)s(efore)
+h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4236 y Ft(PS2)336
b Fu(The)28 b(secondary)g(prompt)g(string.)40 b(The)28
b(default)g(v)-5 b(alue)29 b(is)g(`)p Ft(>)h Fu('.)40
-b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4438 y(same)j(w)m(a)m(y)g
+b Ft(PS2)28 b Fu(is)g(expanded)g(in)g(the)630 4346 y(same)j(w)m(a)m(y)g
(as)g Ft(PS1)e Fu(b)s(efore)h(b)s(eing)g(displa)m(y)m(ed.)150
-4674 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4834
+4575 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4734
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 4943 y(sp)s(ecially)-8 b(.)275 5076 y(A)24
+(them)150 4844 y(sp)s(ecially)-8 b(.)275 4973 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 5185 y(the)31 b(job)f(con)m(trol)h
+b(for)f(con)m(trolling)150 5082 y(the)31 b(job)f(con)m(trol)h
(facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8
-b(ariables],)32 b(page)g(106\).)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
+b(ariables],)32 b(page)g(110\).)150 5230 y Ft(_)432 b
+Fu(\($)p 716 5230 28 4 v 41 w(,)34 b(an)g(underscore.\))49
+b(A)m(t)35 b(shell)f(startup,)g(set)g(to)g(the)g(pathname)f(used)g(to)h
+(in)m(v)m(ok)m(e)i(the)630 5340 y(shell)e(or)g(shell)h(script)f(b)s
+(eing)f(executed)j(as)e(passed)g(in)f(the)i(en)m(vironmen)m(t)f(or)g
+(argumen)m(t)p eop end
%%Page: 74 80
TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(74)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(65\).)60
-b(The)36 b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e
-Fu(are)i(those)630 628 y(rep)s(orted)e(as)h(`)p Ft(on)p
-Fu(')f(b)m(y)h(`)p Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5
-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
+b(Shell)30 b(V)-8 b(ariables)2459 b(74)630 299 y(list.)55
+b(Subsequen)m(tly)-8 b(,)35 b(expands)f(to)i(the)f(last)g(argumen)m(t)h
+(to)f(the)g(previous)f(simple)h(com-)630 408 y(mand)21
+b(executed)i(in)e(the)i(foreground,)g(after)f(expansion.)38
+b(Also)22 b(set)h(to)f(the)g(full)g(pathname)630 518
+y(used)h(to)i(in)m(v)m(ok)m(e)h(eac)m(h)g(command)e(executed)h(and)f
+(placed)g(in)g(the)g(en)m(vironmen)m(t)h(exp)s(orted)630
+628 y(to)33 b(that)g(command.)45 b(When)32 b(c)m(hec)m(king)i(mail,)g
+(this)e(parameter)g(holds)g(the)g(name)g(of)h(the)630
+737 y(mail)e(\014le.)150 920 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.)150 1103 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
+1212 y(argumen)m(t)37 b(for)g(the)g Ft(-s)f Fu(option)i(to)f(the)g
+Ft(shopt)f Fu(builtin)g(command)h(\(see)g(Section)h(4.3.2)630
+1322 y([The)e(Shopt)g(Builtin],)i(page)f(66\).)60 b(The)36
+b(options)h(app)s(earing)f(in)g Ft(BASHOPTS)e Fu(are)i(those)630
+1431 y(rep)s(orted)e(as)h(`)p Ft(on)p Fu(')f(b)m(y)h(`)p
+Ft(shopt)p Fu('.)53 b(If)34 b(this)g(v)-5 b(ariable)36
+b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630
+1541 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 1044 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f
+1650 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8
+b(.)150 1833 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 1154 y Fu(under)31 b(certain)j
+b(di\013ers)h(from)g Ft($$)630 1943 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 1263 y(re-initialized.)57 b(Assignmen)m(ts)35
+g(Bash)g(to)h(b)s(e)630 2052 y(re-initialized.)57 b(Assignmen)m(ts)35
b(to)h Ft(BASHPID)d Fu(ha)m(v)m(e)j(no)f(e\013ect.)56
-b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 1373 y(loses)31
+b(If)34 b Ft(BASHPID)f Fu(is)i(unset,)h(it)630 2162 y(loses)31
b(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)150 1570 y Ft(BASH_ALIASES)630
-1680 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5
+(subsequen)m(tly)f(reset.)150 2345 y Ft(BASH_ALIASES)630
+2454 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 1789 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g
+(ternal)h(list)630 2564 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g
(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f([Bourne)g
-(Shell)630 1899 y(Builtins],)31 b(page)g(43\).)42 b(Elemen)m(ts)31
+(Shell)630 2673 y(Builtins],)31 b(page)g(44\).)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 2008 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g
+(ho)m(w-)630 2783 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g
(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b)s(e)f(remo)m
-(v)m(ed)630 2118 y(from)25 b(the)h(alias)h(list.)40 b(If)25
+(v)m(ed)630 2892 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 2228 y(if)k(it)h(is)g(subsequen)m(tly)f
-(reset.)150 2425 y Ft(BASH_ARGC)630 2534 y Fu(An)39 b(arra)m(y)g(v)-5
+(prop)s(erties,)g(ev)m(en)630 3002 y(if)k(it)h(is)g(subsequen)m(tly)f
+(reset.)150 3185 y Ft(BASH_ARGC)630 3294 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 2644 y(of)i(the)g(curren)m
+(of)h(parameters)g(in)g(eac)m(h)h(frame)630 3404 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 2754
+b(n)m(um)m(b)s(er)e(of)i(parameters)g(to)h(the)630 3513
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
-2863 y(the)27 b(top)g(of)g(the)g(stac)m(k.)41 b(When)27
+3623 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 2973 y(passed)44 b(is)h(pushed)e(on)m(to)j
+(parameters)630 3733 y(passed)44 b(is)h(pushed)e(on)m(to)j
Ft(BASH_ARGC)p Fu(.)81 b(The)44 b(shell)h(sets)g Ft(BASH_ARGC)e
-Fu(only)i(when)e(in)630 3082 y(extended)34 b(debugging)f(mo)s(de)g
-(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(65,)g(for)
-630 3192 y(a)e(description)g(of)f(the)h Ft(extdebug)d
+Fu(only)i(when)e(in)630 3842 y(extended)34 b(debugging)f(mo)s(de)g
+(\(see)i(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)g(66,)g(for)
+630 3952 y(a)e(description)g(of)f(the)h Ft(extdebug)d
Fu(option)j(to)h(the)e Ft(shopt)g Fu(builtin\).)47 b(Setting)33
-b Ft(extdebug)630 3302 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g
+b Ft(extdebug)630 4061 y Fu(after)c(the)g(shell)g(has)g(started)g(to)g
(execute)i(a)e(script,)g(or)g(referencing)g(this)f(v)-5
-b(ariable)30 b(when)630 3411 y Ft(extdebug)e Fu(is)j(not)f(set,)h(ma)m
+b(ariable)30 b(when)630 4171 y Ft(extdebug)e Fu(is)j(not)f(set,)h(ma)m
(y)g(result)g(in)f(inconsisten)m(t)h(v)-5 b(alues.)150
-3608 y Ft(BASH_ARGV)630 3718 y Fu(An)24 b(arra)m(y)g(v)-5
+4354 y Ft(BASH_ARGV)630 4463 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 3828 y(call)35 b(stac)m(k.)53
+(curren)m(t)g(bash)g(execution)630 4573 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 3937 y(stac)m(k;)28
+(is)f(at)h(the)f(top)h(of)f(the)630 4682 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 4047
+(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 4792
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 4156
+(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 4902
y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g(debugging)g
-(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 4266 y(Shopt)g(Builtin],)
-h(page)g(65,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
-Fu(option)j(to)g(the)f Ft(shopt)630 4376 y Fu(builtin\).)64
+(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 5011 y(Shopt)g(Builtin],)
+h(page)g(66,)g(for)g(a)f(description)h(of)f(the)h Ft(extdebug)d
+Fu(option)j(to)g(the)f Ft(shopt)630 5121 y Fu(builtin\).)64
b(Setting)38 b Ft(extdebug)e Fu(after)j(the)f(shell)g(has)g(started)g
-(to)h(execute)g(a)g(script,)h(or)630 4485 y(referencing)35
+(to)h(execute)g(a)g(script,)h(or)630 5230 y(referencing)35
b(this)f(v)-5 b(ariable)35 b(when)e Ft(extdebug)f Fu(is)j(not)f(set,)j
-(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 4595 y(v)-5
-b(alues.)150 4792 y Ft(BASH_ARGV0)630 4902 y Fu(When)31
-b(referenced,)g(this)g(v)-5 b(ariable)32 b(expands)e(to)h(the)h(name)f
-(of)g(the)g(shell)g(or)g(shell)g(script)630 5011 y(\(iden)m(tical)42
-b(to)e Ft($0)p Fu(;)j(See)d(Section)g(3.4.2)i([Sp)s(ecial)e(P)m
-(arameters],)j(page)d(21,)j(for)c(the)h(de-)630 5121
-y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45
-b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5
-b(alue)630 5230 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g
-Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h
-(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)p eop end
+(ma)m(y)e(result)f(in)g(inconsisten)m(t)630 5340 y(v)-5
+b(alues.)p eop end
%%Page: 75 81
TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_CMDS)630
-408 y Fu(An)34 b(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 518 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 628 y(Shell)42 b(Builtins],)k(page)d(43\).)77 b(Elemen)m(ts)43
+b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(BASH_ARGV0)630
+408 y Fu(When)31 b(referenced,)g(this)g(v)-5 b(ariable)32
+b(expands)e(to)h(the)h(name)f(of)g(the)g(shell)g(or)g(shell)g(script)
+630 518 y(\(iden)m(tical)42 b(to)e Ft($0)p Fu(;)j(See)d(Section)g
+(3.4.2)i([Sp)s(ecial)e(P)m(arameters],)j(page)d(21,)j(for)c(the)h(de-)
+630 628 y(scription)32 b(of)g(sp)s(ecial)g(parameter)g(0\).)45
+b(Assignmen)m(t)32 b(to)h Ft(BASH_ARGV0)c Fu(causes)j(the)f(v)-5
+b(alue)630 737 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g
+Ft($0)p Fu(.)51 b(If)33 b Ft(BASH_ARGV0)f Fu(is)h(unset,)i(it)f(loses)h
+(its)f(sp)s(ecial)630 847 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)150 1048 y Ft(BASH_CMDS)630
+1157 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 1267 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g
+(the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630
+1377 y(Shell)42 b(Builtins],)k(page)d(44\).)77 b(Elemen)m(ts)43
b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630
-737 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 847
-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
-956 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 1129 y Ft(BASH_COMMAND)630
-1238 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e
+1486 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts)
+i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630
+1596 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 1705 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 1906 y Ft(BASH_COMMAND)630
+2016 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
-1348 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g
+2125 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
-1457 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)150
-1630 y Ft(BASH_COMPAT)630 1739 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 1849 y(Shopt)40
-b(Builtin],)45 b(page)c(65,)k(for)c(a)g(description)g(of)g(the)g(v)-5
-b(arious)41 b(compatibilit)m(y)i(lev)m(els)630 1958 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 2068 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 2178 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
-2287 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 2397 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 2506 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 2616
-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
-2725 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 2835 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
-3007 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30
+2235 y(command)30 b(executing)i(at)g(the)f(time)g(of)g(the)g(trap.)41
+b(If)30 b Ft(BASH_COMMAND)e Fu(is)i(unset,)h(it)g(loses)630
+2345 y(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)f
+(subsequen)m(tly)g(reset.)150 2545 y Ft(BASH_COMPAT)630
+2655 y Fu(The)i(v)-5 b(alue)33 b(is)g(used)f(to)h(set)g(the)g(shell's)g
+(compatibilit)m(y)i(lev)m(el.)49 b(See)33 b(Section)h(6.12)g([Shell)630
+2765 y(Compatibilit)m(y)j(Mo)s(de],)h(page)e(104,)i(for)e(a)g
+(description)g(of)f(the)h(v)-5 b(arious)36 b(compatibilit)m(y)630
+2874 y(lev)m(els)g(and)f(their)g(e\013ects.)55 b(The)34
+b(v)-5 b(alue)36 b(ma)m(y)f(b)s(e)f(a)i(decimal)f(n)m(um)m(b)s(er)f
+(\(e.g.,)k(4.2\))e(or)f(an)630 2984 y(in)m(teger)44 b(\(e.g.,)j(42\))d
+(corresp)s(onding)d(to)i(the)g(desired)e(compatibilit)m(y)k(lev)m(el.)
+78 b(If)42 b Ft(BASH_)630 3093 y(COMPAT)28 b Fu(is)j(unset)e(or)h(set)h
+(to)g(the)f(empt)m(y)h(string,)f(the)h(compatibilit)m(y)h(lev)m(el)g
+(is)e(set)h(to)g(the)630 3203 y(default)39 b(for)g(the)g(curren)m(t)g
+(v)m(ersion.)67 b(If)38 b Ft(BASH_COMPAT)e Fu(is)j(set)h(to)f(a)h(v)-5
+b(alue)39 b(that)h(is)f(not)630 3313 y(one)31 b(of)f(the)h(v)-5
+b(alid)31 b(compatibilit)m(y)i(lev)m(els,)f(the)f(shell)f(prin)m(ts)g
+(an)h(error)f(message)i(and)e(sets)630 3422 y(the)i(compatibilit)m(y)j
+(lev)m(el)e(to)g(the)g(default)f(for)g(the)g(curren)m(t)g(v)m(ersion.)
+47 b(The)31 b(v)-5 b(alid)33 b(v)-5 b(alues)630 3532
+y(corresp)s(ond)31 b(to)i(the)g(compatibilit)m(y)i(lev)m(els)f(describ)
+s(ed)d(b)s(elo)m(w)i(\(see)g(Section)h(6.12)g([Shell)630
+3641 y(Compatibilit)m(y)d(Mo)s(de],)f(page)g(104\).)42
+b(F)-8 b(or)30 b(example,)h(4.2)f(and)f(42)h(are)g(v)-5
+b(alid)30 b(v)-5 b(alues)29 b(that)630 3751 y(corresp)s(ond)d(to)i(the)
+f Ft(compat42)e(shopt)g Fu(option)j(and)e(set)i(the)f(compatibilit)m(y)
+i(lev)m(el)g(to)f(42.)630 3861 y(The)i(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 4061 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 3117
+(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 4171
y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g
-(to)h(read)f(b)s(efore)g(executing)i(the)630 3226 y(script.)41
-b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(87.)150
-3399 y Ft(BASH_EXECUTION_STRING)630 3508 y Fu(The)f(command)g(argumen)m
+(to)h(read)f(b)s(efore)g(executing)i(the)630 4281 y(script.)41
+b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(88.)150
+4482 y Ft(BASH_EXECUTION_STRING)630 4591 y Fu(The)f(command)g(argumen)m
(t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150
-3680 y Ft(BASH_LINENO)630 3790 y Fu(An)62 b(arra)m(y)i(v)-5
+4792 y Ft(BASH_LINENO)630 4902 y Fu(An)62 b(arra)m(y)i(v)-5
b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s
-(ers)f(in)g(source)h(\014les)630 3900 y(where)46 b(eac)m(h)i(corresp)s
+(ers)f(in)g(source)h(\014les)630 5011 y(where)46 b(eac)m(h)i(corresp)s
(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47
-b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 4009 y(LINENO[$i]})39
+b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 5121 y(LINENO[$i]})39
b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g
-(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 4119 y(where)d
+(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 5230 y(where)d
Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft
(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630
-4228 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31
+5340 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31
b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s
-(er.)150 4401 y Ft(BASH_LOADABLES_PATH)630 4510 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 4620 y(loadable)32
-b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e
-Fu(command.)150 4792 y Ft(BASH_REMATCH)630 4902 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
-5011 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
-5121 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
-(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630
-5230 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 5340 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(.)p eop end
+(er.)p eop end
%%Page: 76 82
TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(BASH_SOURCE)630
-408 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
-518 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h
+b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft
+(BASH_LOADABLES_PATH)630 408 y Fu(A)39 b(colon-separated)i(list)f(of)f
+(directories)h(in)f(whic)m(h)g(the)g(shell)h(lo)s(oks)f(for)g
+(dynamically)630 518 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y)
+g(the)h Ft(enable)e Fu(command.)150 673 y Ft(BASH_REMATCH)630
+783 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 892 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e
+(\(see)h(Section)g(3.2.5.2)i([Conditional)e(Constructs],)630
+1002 y(page)e(11\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f
+(the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630
+1112 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27
+b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g
+(the)g(string)630 1221 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m
+(thesized)h(sub)s(expression.)150 1377 y Ft(BASH_SOURCE)630
+1486 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
+1596 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 628 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c
+b(The)630 1705 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 737 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150
-892 y(BASH_SUBSHELL)630 1002 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 1112 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 1267 y Ft(BASH_VERSINFO)630 1377 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(94\))h(whose)f(mem)m(b)s(ers)630
-1486 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
-1596 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g(follo)m(ws:)630
-1751 y Ft(BASH_VERSINFO[0])1110 1861 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 2016 y Ft(BASH_VERSINFO[1])1110 2125 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 2281 y Ft(BASH_VERSINFO[2])1110 2390 y Fu(The)f(patc)m(h)h
-(lev)m(el.)630 2545 y Ft(BASH_VERSINFO[3])1110 2655 y
-Fu(The)f(build)f(v)m(ersion.)630 2810 y Ft(BASH_VERSINFO[4])1110
-2920 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7
-b Fu(\).)630 3075 y Ft(BASH_VERSINFO[5])1110 3185 y Fu(The)30
-b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 3340 y
-Ft(BASH_VERSION)630 3450 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 3605 y
-Ft(BASH_XTRACEFD)630 3714 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i
+b Fu(and)630 1815 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150
+1970 y(BASH_SUBSHELL)630 2080 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 2189 y(b)s(egins)j(executing)i
+(in)e(that)h(en)m(vironmen)m(t.)41 b(The)27 b(initial)i(v)-5
+b(alue)28 b(is)f(0.)40 b(If)28 b Ft(BASH_SUBSHELL)630
+2299 y Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,)
+f(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150
+2454 y Ft(BASH_VERSINFO)630 2564 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5
+b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(95\))h
+(whose)f(mem)m(b)s(ers)630 2673 y(hold)c(v)m(ersion)h(information)f
+(for)g(this)g(instance)h(of)g(Bash.)46 b(The)32 b(v)-5
+b(alues)32 b(assigned)h(to)g(the)630 2783 y(arra)m(y)e(mem)m(b)s(ers)e
+(are)i(as)g(follo)m(ws:)630 2938 y Ft(BASH_VERSINFO[0])1110
+3048 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 3203 y Ft(BASH_VERSINFO[1])1110
+3313 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 3468 y Ft(BASH_VERSINFO[2])1110
+3577 y Fu(The)f(patc)m(h)h(lev)m(el.)630 3733 y Ft(BASH_VERSINFO[3])
+1110 3842 y Fu(The)f(build)f(v)m(ersion.)630 3998 y Ft
+(BASH_VERSINFO[4])1110 4107 y Fu(The)h(release)i(status)e(\(e.g.,)j
+Fr(b)s(eta1)7 b Fu(\).)630 4262 y Ft(BASH_VERSINFO[5])1110
+4372 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p
+Fu(.)150 4527 y Ft(BASH_VERSION)630 4637 y Fu(The)g(v)m(ersion)h(n)m
+(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150
+4792 y Ft(BASH_XTRACEFD)630 4902 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i
(corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g
-(Bash)g(will)g(write)g(the)630 3824 y(trace)37 b(output)f(generated)h
+(Bash)g(will)g(write)g(the)630 5011 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 3934 y(allo)m(ws)29
+(\014le)h(descriptor.)58 b(This)630 5121 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 4043 y(\014le)31 b(descriptor)f(is)h
+(error)f(messages.)41 b(The)630 5230 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 4153 y(Unsetting)45 b Ft(BASH_XTRACEFD)40
+(new)f(v)-5 b(alue.)630 5340 y(Unsetting)45 b Ft(BASH_XTRACEFD)40
b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f
-(trace)630 4262 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 4372 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 4482 y(standard)30 b(error)g(b)s(eing)f(closed.)150
-4637 y Ft(CHILD_MAX)630 4746 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h
+(trace)p eop end
+%%Page: 77 83
+TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(output)33
+b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g(standard)e(error.)50
+b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c Fu(to)630
+408 y(2)39 b(\(the)h(standard)e(error)g(\014le)h(descriptor\))h(and)e
+(then)h(unsetting)g(it)g(will)g(result)g(in)g(the)630
+518 y(standard)30 b(error)g(b)s(eing)f(closed.)150 664
+y Ft(CHILD_MAX)630 774 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 4856 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 4966 y(and)30
+h(remem)m(b)s(er.)55 b(Bash)630 883 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 993 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
-5075 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.)
-150 5230 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h
+1103 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.)
+150 1249 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 5340 y(selection)39 b(lists.)63
+(when)h(prin)m(ting)630 1358 y(selection)39 b(lists.)63
b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d
-Fu(option)j(is)f(enabled)h(\(see)p eop end
-%%Page: 77 83
-TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(Section)44
-b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43
-b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 408
-y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 555 y
-Ft(COMP_CWORD)630 664 y Fu(An)38 b(index)g(in)m(to)h
+Fu(option)j(is)f(enabled)h(\(see)630 1468 y(Section)44
+b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(66\),)k(or)43
+b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1577
+y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1724 y
+Ft(COMP_CWORD)630 1833 y Fu(An)38 b(index)g(in)m(to)h
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 774 y(sition.)72 b(This)40
+(curren)m(t)g(cursor)g(p)s(o-)630 1943 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
-883 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
-([Programmable)g(Completion],)630 993 y(page)31 b(132\).)150
-1139 y Ft(COMP_LINE)630 1249 y Fu(The)38 b(curren)m(t)h(command)f
+2052 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g
+([Programmable)g(Completion],)630 2162 y(page)31 b(137\).)150
+2308 y Ft(COMP_LINE)630 2418 y Fu(The)38 b(curren)m(t)h(command)f
(line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5
-b(ailable)41 b(only)d(in)h(shell)f(functions)630 1358
+b(ailable)41 b(only)d(in)h(shell)f(functions)630 2527
y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h
-(programmable)f(completion)i(facilities)g(\(see)630 1468
-y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(132\).)150
-1614 y Ft(COMP_POINT)630 1724 y Fu(The)25 b(index)g(of)h(the)g(curren)m
+(programmable)f(completion)i(facilities)g(\(see)630 2637
+y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(137\).)150
+2783 y Ft(COMP_POINT)630 2892 y Fu(The)25 b(index)g(of)h(the)g(curren)m
(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)
-g(the)h(curren)m(t)630 1833 y(command.)40 b(If)27 b(the)h(curren)m(t)g
+g(the)h(curren)m(t)630 3002 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 1943 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5
+(command,)630 3112 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
-2052 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 2162
+3221 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g
+(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 3331
y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g
-(Completion],)h(page)f(132\).)150 2308 y Ft(COMP_TYPE)630
-2418 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28
+(Completion],)h(page)f(137\).)150 3477 y Ft(COMP_TYPE)630
+3587 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28
b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h
-(attempted)g(that)630 2527 y(caused)e(a)h(completion)h(function)e(to)h
+(attempted)g(that)630 3696 y(caused)e(a)h(completion)h(function)e(to)h
(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f
-(completion,)j(`)p Ft(?)p Fu(',)e(for)630 2637 y(listing)35
+(completion,)j(`)p Ft(?)p Fu(',)e(for)630 3806 y(listing)35
b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p
Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630
-2746 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g
+3915 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g
(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h
-(`)p Ft(\045)p Fu(',)h(for)630 2856 y(men)m(u)i(completion.)41
+(`)p Ft(\045)p Fu(',)h(for)630 4025 y(men)m(u)i(completion.)41
b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28
b(only)f(in)f(shell)g(functions)g(and)g(external)630
-2966 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h
+4134 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h
(completion)g(facilities)i(\(see)e(Section)g(8.6)630
-3075 y([Programmable)e(Completion],)h(page)f(132\).)150
-3221 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i
+4244 y([Programmable)e(Completion],)h(page)f(137\).)150
+4390 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i
(of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e
-(curren)m(t)g(completion)630 3331 y(function.)150 3477
-y Ft(COMP_WORDBREAKS)630 3587 y Fu(The)f(set)i(of)e(c)m(haracters)j
+(curren)m(t)g(completion)630 4500 y(function.)150 4646
+y Ft(COMP_WORDBREAKS)630 4756 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 3696 y(p)s(erforming)i(w)m(ord)h(completion.)51
+(when)630 4865 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 3806 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g
-(subsequen)m(tly)f(reset.)150 3952 y Ft(COMP_WORDS)630
-4061 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the)
+(sp)s(ecial)630 4975 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)150 5121 y Ft(COMP_WORDS)630
+5230 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
-4171 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
-4281 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 4390 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 4500 y(grammable)e(Completion],)g(page)g(132\).)150
-4646 y Ft(COMPREPLY)630 4756 y Fu(An)37 b(arra)m(y)h(v)-5
+5340 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as)
+h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)p
+eop end
+%%Page: 78 84
+TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(78)630 299 y Ft(WORDBREAKS)34
+b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36
+b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 b(only)e(in)f(shell)h
+(func-)630 408 y(tions)32 b(in)m(v)m(ok)m(ed)i(b)m(y)d(the)i
+(programmable)f(completion)h(facilities)h(\(see)f(Section)g(8.6)g
+([Pro-)630 518 y(grammable)e(Completion],)g(page)g(137\).)150
+676 y Ft(COMPREPLY)630 786 y Fu(An)37 b(arra)m(y)h(v)-5
b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e
-(completions)j(generated)630 4865 y(b)m(y)33 b(a)g(shell)h(function)f
+(completions)j(generated)630 896 y(b)m(y)33 b(a)g(shell)h(function)f
(in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m
-(y)h(\(see)f(Sec-)630 4975 y(tion)g(8.6)g([Programmable)g(Completion],)
-h(page)f(132\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
-630 5084 y(one)c(p)s(ossible)f(completion.)150 5230 y
+(y)h(\(see)f(Sec-)630 1005 y(tion)g(8.6)g([Programmable)g(Completion],)
+h(page)f(137\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains)
+630 1115 y(one)c(p)s(ossible)f(completion.)150 1273 y
Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28
b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f
-(from)h(and)f(input)630 5340 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\).)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(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 408 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 518 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 628 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 737 y(and)37 b(remo)m(v)m(e)h(directories.)63
+(from)h(and)f(input)630 1383 y(to)31 b(an)f(unnamed)f(copro)s(cess)i
+(\(see)g(Section)h(3.2.6)g([Copro)s(cesses],)f(page)g(15\).)150
+1541 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28
+b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f
+(directory)i(stac)m(k.)41 b(Direc-)630 1650 y(tories)33
+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
+1760 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
+1870 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 1979 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 847 y(ren)m(t)c(directory)-8
+(hange)i(the)e(cur-)630 2089 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
-956 y(subsequen)m(tly)d(reset.)150 1115 y Ft(EMACS)240
+2198 y(subsequen)m(tly)d(reset.)150 2357 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 1224 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
+(v)-5 b(alue)630 2466 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and)
-h(disables)630 1334 y(line)d(editing.)150 1492 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
-1602 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(99\).)150
-1760 y Ft(EPOCHREALTIME)630 1870 y Fu(Eac)m(h)38 b(time)f(this)g
+h(disables)630 2576 y(line)d(editing.)150 2734 y Ft(ENV)336
+b Fu(Expanded)30 b(and)h(executed)h(similarlt)m(y)g(to)g
+Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)g([Bash)g(Startup)630
+2844 y(Files],)39 b(page)e(88\))h(when)d(an)h(in)m(teractiv)m(e)j
+(shell)d(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h
+(Sec-)630 2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g
+(101\).)150 3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38
+b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)
+f(n)m(um)m(b)s(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s
+(o)s(c)m(h)g(as)h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5
+b(alue)36 b(with)f(micro-second)i(gran)m(ularit)m(y)630
+3440 y(\(see)42 b(the)g(do)s(cumen)m(tation)g(for)f(the)g(C)g(library)g
+(function)g Fr(time)47 b Fu(for)41 b(the)h(de\014nition)f(of)630
+3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 b(to)h
+Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 b Ft(EPOCHREALTIME)e
+Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s
+(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
+3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 b(time)f(this)g
(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s
-(er)f(of)h(seconds)630 1979 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as)
-h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i
-(gran)m(ularit)m(y)630 2089 y(\(see)42 b(the)g(do)s(cumen)m(tation)g
-(for)f(the)g(C)g(library)g(function)g Fr(time)47 b Fu(for)41
-b(the)h(de\014nition)f(of)630 2198 y(Ep)s(o)s(c)m(h\).)82
-b(Assignmen)m(ts)44 b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83
-b(If)43 b Ft(EPOCHREALTIME)e Fu(is)630 2308 y(unset,)30
-b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h
-(is)g(subsequen)m(tly)f(reset.)150 2466 y Ft(EPOCHSECONDS)630
-2576 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it)
-f(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(seconds)630
-2685 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m
-(tation)g(for)g(the)f(C)h(library)f(function)g Fr(time)630
-2795 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73
-b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73
-b(If)630 2905 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its)
-g(sp)s(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m
-(tly)630 3014 y(reset.)150 3173 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 3331 y Ft(EXECIGNORE)630 3440 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 3550 y(page)j(33\))g(de\014ning)e(the)h
-(list)g(of)g(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h
-(searc)m(h)g(using)630 3660 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 3769 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 3879 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
-3988 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
-4098 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 4208 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 4317 y Ft(extglob)28 b Fu(shell)j(option.)150 4475
-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 4634 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g
+(er)f(of)h(seconds)630 4037 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g
+(\(see)i(the)f(do)s(cumen)m(tation)g(for)g(the)f(C)h(library)f
+(function)g Fr(time)630 4147 y Fu(for)41 b(the)g(de\014nition)g(of)h
+(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c
+Fu(are)k(ignored.)73 b(If)630 4256 y Ft(EPOCHSECONDS)27
+b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s(ecial)f(prop)s(erties,)g(ev)
+m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 4366 y(reset.)150
+4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d
+(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5
+b(ariable)31 b(is)f(readonly)-8 b(.)150 4682 y Ft(EXECIGNORE)630
+4792 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f
+(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630
+4902 y(page)j(33\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g
+(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630
+5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h)
+h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630
+5121 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j
+(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630
+5230 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b)
+s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f
+Ft([[)g Fu(commands.)630 5340 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g
+(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41
+b(to)g Ft(EXECIGNORE)p Fu(.)p eop end
+%%Page: 79 85
+TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Use)30
+b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g
+(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)630
+408 y(but)36 b(are)h(not)g(executable)i(\014les.)60 b(The)36
+b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the)630
+518 y Ft(extglob)28 b Fu(shell)j(option.)150 679 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
+840 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 4743 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i
+630 950 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
-4853 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41
+1060 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 5011 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5
+Fu(')150 1221 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 5121 y(execution)g(call)h
+(functions)g(curren)m(tly)f(in)h(the)630 1330 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 5230 y(executing)f(shell)f
+(name)h(of)f(an)m(y)h(curren)m(tly-)630 1440 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 5340 y(index\))e(is)h Ft("main")p
+(with)g(the)g(highest)630 1549 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.)p eop end
-%%Page: 79 85
-TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Assignmen)m(ts)23
+(shell)f(function)g(is)g(executing.)630 1659 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 408 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)
-f(reset.)630 543 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 653 y(of)g Ft(FUNCNAME)d
+630 1769 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m
+(tly)f(reset.)630 1904 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 2014 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 763 y(describ)s(e)39
+Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 2123 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
-872 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27
+2233 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 982 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
-1142 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5
+b(The)27 b Ft(caller)630 2342 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
+2504 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 1251 y(lev)m(el.)42 b(F)-8 b(unction)29
+(function)g(nesting)630 2613 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 1361 y(command)i(to)h(ab)s(ort.)
-150 1521 y Ft(GLOBIGNORE)630 1631 y Fu(A)k(colon-separated)i(list)f(of)
+(will)f(cause)g(the)f(curren)m(t)630 2723 y(command)i(to)h(ab)s(ort.)
+150 2884 y Ft(GLOBIGNORE)630 2993 y Fu(A)k(colon-separated)i(list)f(of)
f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e)
-g(ignored)630 1740 y(b)m(y)28 b(\014lename)h(expansion.)40
+g(ignored)630 3103 y(b)m(y)28 b(\014lename)h(expansion.)40
b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f
-(expansion)h(pattern)630 1850 y(also)k(matc)m(hes)g(one)f(of)g(the)g
+(expansion)h(pattern)630 3213 y(also)k(matc)m(hes)g(one)f(of)g(the)g
(patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from)
-e(the)h(list)h(of)630 1960 y(matc)m(hes.)41 b(The)27
+e(the)h(list)h(of)630 3322 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 2120 y Ft(GROUPS)192
+Ft(extglob)d Fu(shell)i(option.)150 3483 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
-2229 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d
+3593 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 2339 y(sp)s(ecial)f(prop)s
+Fu(is)i(unset,)f(it)h(loses)h(its)630 3703 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
-2499 y Ft(histchars)630 2609 y Fu(Up)c(to)g(three)g(c)m(haracters)i
+3864 y Ft(histchars)630 3973 y Fu(Up)c(to)g(three)g(c)m(haracters)i
(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g
-(substitution,)g(and)630 2718 y(tok)m(enization)k(\(see)f(Section)f
-(9.3)h([History)f(In)m(teraction],)i(page)f(143\).)41
-b(The)29 b(\014rst)e(c)m(harac-)630 2828 y(ter)j(is)f(the)g
+(substitution,)g(and)630 4083 y(tok)m(enization)k(\(see)f(Section)f
+(9.3)h([History)f(In)m(teraction],)i(page)f(148\).)41
+b(The)29 b(\014rst)e(c)m(harac-)630 4193 y(ter)j(is)f(the)g
Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m
-(haracter)h(whic)m(h)d(signi\014es)i(the)630 2937 y(start)25
+(haracter)h(whic)m(h)d(signi\014es)i(the)630 4302 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
-3047 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f
+4412 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
-3157 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d
+4521 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 3266 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h
+630 4631 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
-3376 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34
+4740 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 3485 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f
+(substitution)630 4850 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 3595 y(the)k(shell)f(parser)g(to)h(treat)g
+(necessarily)g(cause)630 4960 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
-3755 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 3865 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 4025 y Ft(HISTCONTROL)630 4134 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 4244
-y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5
+5121 y Ft(HISTCMD)144 b Fu(The)44 b(history)h(n)m(um)m(b)s(er,)j(or)d
+(index)g(in)f(the)h(history)g(list,)50 b(of)45 b(the)g(curren)m(t)g
+(command.)630 5230 y(Assignmen)m(ts)37 b(to)h Ft(HISTCMD)d
+Fu(are)j(ignored.)61 b(If)37 b Ft(HISTCMD)e Fu(is)i(unset,)h(it)g
+(loses)g(its)f(sp)s(ecial)630 5340 y(prop)s(erties,)30
+b(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)p
+eop end
+%%Page: 80 86
+TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(HISTCONTROL)630
+408 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40
+b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630
+518 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5
b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g
-(b)s(egin)f(with)630 4354 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g
+(b)s(egin)f(with)630 628 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 4463 y(causes)34
+b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 737 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
-4573 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p
+847 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 4682 y(`)p Ft(erasedups)p
+b(A)32 b(v)-5 b(alue)32 b(of)630 956 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 4792 y(from)42
+(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 1066 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
-4902 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e
+1176 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 5011 y(lines)30
+b(alid)35 b(v)-5 b(alue,)36 b(all)630 1285 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 5121 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42
+b(alue)630 1395 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 5230 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added)
+s(ound)630 1504 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
-5340 y(of)31 b Ft(HISTCONTROL)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(HISTFILE)96
+1614 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 1763 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 408 y(is)30 b Ft(~/.bash_history)p Fu(.)150
-569 y Ft(HISTFILESIZE)630 678 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 788 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 897 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
-1007 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g
+b(alue)630 1873 y(is)30 b Ft(~/.bash_history)p Fu(.)150
+2022 y Ft(HISTFILESIZE)630 2132 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 2242 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
+2351 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 2461 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 1117 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i
+b(is)630 2570 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 1226 y(v)-5 b(alues)31 b(less)f(than)g(zero)h
+b(and)f(n)m(umeric)630 2680 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 1336 y(v)-5 b(alue)31 b(of)f
+-5 b(alue)31 b(to)g(the)630 2790 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
-1496 y Ft(HISTIGNORE)630 1606 y Fu(A)j(colon-separated)h(list)f(of)g
+2939 y Ft(HISTIGNORE)630 3049 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 1715 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47
+630 3158 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 1825 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g
+(of)h(the)630 3268 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 1934 y(pattern)42 b(is)g(tested)g(against)h
+(ended\).)75 b(Eac)m(h)630 3377 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 2044 y Fu(are)37 b(applied.)59 b(In)36
+Ft(HISTCONTROL)630 3487 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 2153 y(matc)m(hes)d(the)f(previous)g
+(haracters,)i(`)p Ft(&)p Fu(')630 3597 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 2263 y(bac)m(kslash)34
+h(using)g(a)g(bac)m(kslash;)k(the)630 3706 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 2373 y(lines)e(of)h(a)g(m)m
+b(The)34 b(second)f(and)h(subsequen)m(t)630 3816 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 2482 y(history)k(regardless)h(of)f(the)g(v)-5
+(added)g(to)h(the)630 3925 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 2592 y(the)31 b(setting)g(of)g(the)f
-Ft(extglob)f Fu(shell)h(option.)630 2727 y Ft(HISTIGNORE)20
+(hing)i(honors)630 4035 y(the)31 b(setting)g(of)g(the)f
+Ft(extglob)f Fu(shell)h(option.)630 4164 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
-2836 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p
+4274 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 2946 y(these)30 b(t)m(w)m(o)h(patterns,)f
+Fu(.)36 b(Com)m(bining)630 4384 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 3055 y Ft(ignoreboth)p Fu(.)150
-3216 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j
+(functionalit)m(y)h(of)630 4493 y Ft(ignoreboth)p Fu(.)150
+4643 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 3325 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h
+b(If)37 b(the)630 4752 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 3435 y(zero)i(result)e(in)h(ev)m
+b(v)-5 b(alues)26 b(less)g(than)630 4862 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 3544 y(The)j(shell)g(sets)h(the)g
+(\(there)f(is)g(no)g(limit\).)630 4971 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 3705 y Ft(HISTTIMEFORMAT)630
-3814 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m
+(startup)f(\014les.)150 5121 y Ft(HISTTIMEFORMAT)630
+5230 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m
(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g
-(for)630 3924 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp)
+(for)630 5340 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp)
f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m
-(ed)630 4033 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 4143 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 4253 y(commen)m(t)31
-b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g
-(history)h(lines.)150 4413 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 4522 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 4632
-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 4741
-y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5
+(ed)p eop end
+%%Page: 81 87
+TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(81)630 299 y(b)m(y)34
+b(the)f Ft(history)f Fu(builtin.)50 b(If)33 b(this)h(v)-5
+b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g(written)f(to)i(the)630
+408 y(history)26 b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e)e(preserv)m(ed)g
+(across)i(shell)f(sessions.)39 b(This)25 b(uses)h(the)g(history)630
+518 y(commen)m(t)31 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h
+(from)f(other)g(history)h(lines.)150 687 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
+797 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
+907 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
+1016 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 4851 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53
+630 1126 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 4961 y(not)d(name)f(a)h(readable)g
+b(alue,)36 b(or)e(do)s(es)630 1235 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 5070 y(of)h(p)s(ossible)f(hostname)h
+Fu(to)j(obtain)g(the)f(list)630 1345 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 5180 y(is)f(cleared.)150 5340 y
-Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)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(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 448 y Ft(IGNOREEOF)630 557 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
-667 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s
+(hostname)g(list)630 1455 y(is)f(cleared.)150 1624 y
+Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150
+1793 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 1963 y Ft(IGNOREEOF)630
+2072 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
+2182 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 776 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f
+s(e)630 2291 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 886 y(v)-5 b(ariable)39 b(exists)f(but)g(do)s(es)f
+b(If)39 b(the)630 2401 y(v)-5 b(ariable)39 b(exists)f(but)g(do)s(es)f
(not)h(ha)m(v)m(e)h(a)g(n)m(umeric)f(v)-5 b(alue,)40
-b(or)e(has)g(no)g(v)-5 b(alue,)40 b(then)e(the)630 996
+b(or)e(has)g(no)g(v)-5 b(alue,)40 b(then)e(the)630 2511
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 1105 y(to)g(the)g(shell.)41 b(This)29
+(of)h(input)630 2620 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
-1254 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g
+2790 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 1363 y Ft(~/.inputrc)p Fu(.)150 1512 y Ft(INSIDE_EMACS)630
-1622 y Fu(If)29 b(Bash)h(\014nds)e(this)h(v)-5 b(ariable)31
+(of)630 2899 y Ft(~/.inputrc)p Fu(.)150 3068 y Ft(INSIDE_EMACS)630
+3178 y Fu(If)29 b(Bash)h(\014nds)e(this)h(v)-5 b(ariable)31
b(in)e(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)g(starts,)g(it)g
-(assumes)630 1731 y(that)i(the)g(shell)g(is)f(running)f(in)i(an)f
+(assumes)630 3288 y(that)i(the)g(shell)g(is)f(running)f(in)i(an)f
(Emacs)h(shell)g(bu\013er)e(and)h(ma)m(y)i(disable)e(line)h(editing)630
-1841 y(dep)s(ending)d(on)h(the)h(v)-5 b(alue)31 b(of)f
-Ft(TERM)p Fu(.)150 1990 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f
+3397 y(dep)s(ending)d(on)h(the)h(v)-5 b(alue)31 b(of)f
+Ft(TERM)p Fu(.)150 3567 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 2099 y(with)i(a)h(v)-5 b(ariable)31
-b(starting)g(with)f Ft(LC_)p Fu(.)150 2248 y Ft(LC_ALL)192
+(eci\014cally)g(selected)630 3676 y(with)i(a)h(v)-5 b(ariable)31
+b(starting)g(with)f Ft(LC_)p Fu(.)150 3846 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 2358
-y(a)i(lo)s(cale)h(category)-8 b(.)150 2506 y Ft(LC_COLLATE)630
-2616 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i
+Ft(LC_)f Fu(v)-5 b(ariable)29 b(sp)s(ecifying)630 3955
+y(a)i(lo)s(cale)h(category)-8 b(.)150 4125 y Ft(LC_COLLATE)630
+4234 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
-2725 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 2835 y(alence)e
+4344 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 4453 y(alence)e
(classes,)h(and)e(collating)i(sequences)e(within)f(\014lename)h
-(expansion)g(and)f(pattern)630 2945 y(matc)m(hing)d(\(see)h(Section)f
-(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150 3093
+(expansion)g(and)f(pattern)630 4563 y(matc)m(hing)d(\(see)h(Section)f
+(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150 4732
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 3203 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h
+(of)630 4842 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h
(expansion)g(and)f(pattern)h(matc)m(hing)h(\(see)f(Sec-)630
-3313 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(32\).)150
-3461 y Ft(LC_MESSAGES)630 3571 y Fu(This)25 b(v)-5 b(ariable)27
+4951 y(tion)31 b(3.5.8)h([Filename)g(Expansion],)e(page)h(33\).)150
+5121 y Ft(LC_MESSAGES)630 5230 y Fu(This)25 b(v)-5 b(ariable)27
b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted)
-f(strings)g(pre-)630 3680 y(ceded)31 b(b)m(y)f(a)h(`)p
+f(strings)g(pre-)630 5340 y(ceded)31 b(b)m(y)f(a)h(`)p
Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8
-b(ranslation],)32 b(page)f(7\).)150 3829 y Ft(LC_NUMERIC)630
-3939 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h
+b(ranslation],)32 b(page)f(7\).)p eop end
+%%Page: 82 88
+TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(82)150 299 y Ft(LC_NUMERIC)630
+408 y Fu(This)30 b(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h
(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150
-4088 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26
+573 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 4236 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 4385 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 4495 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 4604 y(Section)44
-b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(65\),)k(or)43
-b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4714
-y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4862 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 4972 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h
-Fu(format.)150 5121 y Ft(MAILCHECK)630 5230 y Fu(Ho)m(w)d(often)g(\(in)
+(time)i(formatting.)150 737 y Ft(LINENO)192 b Fu(The)32
+b(line)h(n)m(um)m(b)s(er)e(in)i(the)f(script)h(or)f(shell)h(function)f
+(curren)m(tly)h(executing.)49 b(If)32 b Ft(LINENO)630
+847 y Fu(is)e(unset,)h(it)g(loses)g(its)f(sp)s(ecial)h(prop)s(erties,)f
+(ev)m(en)h(if)g(it)g(is)f(subsequen)m(tly)g(reset.)150
+1011 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 1121 y(selection)c(lists.)63 b(Automatically)41
+b(set)d(if)f(the)h Ft(checkwinsize)d Fu(option)j(is)f(enabled)h(\(see)
+630 1230 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d
+(66\),)k(or)43 b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630
+1340 y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1504
+y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f
+(the)h(system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i
+(in)e(the)630 1614 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h
+Fu(format.)150 1778 y Ft(MAILCHECK)630 1888 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 5340 y(in)i(the)h
+(in)f(the)h(\014les)g(sp)s(eci\014ed)630 1998 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)p eop end
-%%Page: 82 88
-TeXDict begin 82 87 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(82)630 299 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
-408 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 518 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f
-(mail)h(c)m(hec)m(king.)150 682 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
-792 y(no)30 b(v)-5 b(ariable)31 b(name)g(is)f(supplied.)150
-956 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 1121
-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 1230 y Fu(builtin)30 b(command.)150
-1395 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 1559
-y Ft(PIPESTATUS)630 1669 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(94\))h
-(con)m(taining)g(a)f(list)g(of)g(exit)g(sta-)630 1778
-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
-1888 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
-(command\).)150 2052 y Ft(POSIXLY_CORRECT)630 2162 y
+b(it)h(is)g(time)630 2107 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 2217 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 2326 y(equal)31
+b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150
+2491 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 2600 y(no)30 b(v)-5
+b(ariable)31 b(name)g(is)f(supplied.)150 2765 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 2929 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
+3039 y Fu(builtin)30 b(command.)150 3203 y Ft(OSTYPE)192
+b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f
+(is)h(running)d(on.)150 3367 y Ft(PIPESTATUS)630 3477
+y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h
+([Arra)m(ys],)g(page)f(95\))h(con)m(taining)g(a)f(list)g(of)g(exit)g
+(sta-)630 3587 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g
+(in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630
+3696 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h
+(command\).)150 3861 y Ft(POSIXLY_CORRECT)630 3970 y
Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g
(when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630
-2271 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s
-(de],)k(page)e(99\))g(b)s(efore)f(reading)g(the)g(startup)630
-2381 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 2491 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
-2628 y Ft(set)47 b(-o)g(posix)630 2765 y Fu(had)33 b(b)s(een)g
-(executed.)51 b(When)33 b(the)h(shell)f(en)m(ters)h Fm(posix)f
-Fu(mo)s(de,)h(it)g(sets)g(this)g(v)-5 b(ariable)34 b(if)630
-2874 y(it)d(w)m(as)g(not)f(already)h(set.)150 3039 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 3203 y Ft(PROMPT_COMMAND)630
-3313 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 3422 y(eac)m(h)g(primary)d(prompt)g(\()p Ft($PS1)p
-Fu(\).)150 3587 y Ft(PROMPT_DIRTRIM)630 3696 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
-3806 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
-3915 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h([Con)m(trolling)g(the)f
-(Prompt],)h(page)f(97\).)39 b(Characters)21 b(remo)m(v)m(ed)630
-4025 y(are)31 b(replaced)g(with)f(an)g(ellipsis.)150
-4189 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 4299 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
-4463 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 4573 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 4737 y Ft(PS4)336
-b Fu(The)37 b(v)-5 b(alue)37 b(of)g(this)g(parameter)h(is)f(expanded)f
-(lik)m(e)i Fr(PS1)44 b Fu(and)37 b(the)g(expanded)f(v)-5
-b(alue)38 b(is)630 4847 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h
-(command)f(line)h(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f
-Fu(option)h(is)630 4956 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)j(page)e(61\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e
-(the)630 5066 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m
-(ultiple)g(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m
-(ultiple)630 5176 y(lev)m(els)e(of)e(indirection.)42
-b(The)29 b(default)i(is)f(`)p Ft(+)h Fu('.)150 5340 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.)p eop end
+4080 y Fu(mo)s(de)46 b(\(see)h(Section)g(6.11)g([Bash)g(POSIX)e(Mo)s
+(de],)50 b(page)d(101\))h(b)s(efore)e(reading)g(the)630
+4189 y(startup)38 b(\014les,)j(as)e(if)g(the)g Ft(--posix)d
+Fu(in)m(v)m(o)s(cation)41 b(option)e(had)f(b)s(een)g(supplied.)64
+b(If)39 b(it)g(is)630 4299 y(set)31 b(while)f(the)h(shell)f(is)h
+(running,)e(Bash)h(enables)h Fm(posix)f Fu(mo)s(de,)g(as)g(if)h(the)f
+(command)870 4436 y Ft(set)47 b(-o)g(posix)630 4573 y
+Fu(had)33 b(b)s(een)g(executed.)51 b(When)33 b(the)h(shell)f(en)m(ters)
+h Fm(posix)f Fu(mo)s(de,)h(it)g(sets)g(this)g(v)-5 b(ariable)34
+b(if)630 4682 y(it)d(w)m(as)g(not)f(already)h(set.)150
+4847 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 5011 y
+Ft(PROMPT_COMMAND)630 5121 y Fu(If)23 b(this)h(v)-5 b(ariable)24
+b(is)g(set,)i(and)d(is)h(an)f(arra)m(y)-8 b(,)27 b(the)d(v)-5
+b(alue)24 b(of)g(eac)m(h)g(set)h(elemen)m(t)g(is)f(in)m(terpreted)630
+5230 y(as)29 b(a)g(command)f(to)i(execute)g(b)s(efore)e(prin)m(ting)h
+(the)g(primary)f(prompt)f(\()p Ft($PS1)p Fu(\).)40 b(If)28
+b(this)h(is)630 5340 y(set)c(but)f(not)g(an)h(arra)m(y)g(v)-5
+b(ariable,)26 b(its)f(v)-5 b(alue)25 b(is)f(used)g(as)h(a)f(command)g
+(to)i(execute)f(instead.)p eop end
%%Page: 83 89
TeXDict begin 83 88 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(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
-408 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 518 y(erator.)150 675 y Ft(READLINE_LINE)630
-784 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 894 y([Bash)i(Builtins],)g(page)g(50\).)150 1050
-y Ft(READLINE_POINT)630 1160 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 1270 y(-x)p Fu(')30
-b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).)150
-1426 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 1583 y Ft(SECONDS)144
+b(Shell)30 b(V)-8 b(ariables)2459 b(83)150 299 y Ft(PROMPT_DIRTRIM)630
+408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f
+(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)
+e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h
+(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g
+Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f
+(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(98\).)39
+b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f
+(an)g(ellipsis.)150 892 y Ft(PS0)336 b Fu(The)32 b(v)-5
+b(alue)33 b(of)g(this)g(parameter)g(is)g(expanded)e(lik)m(e)j
+Ft(PS1)e Fu(and)g(displa)m(y)m(ed)i(b)m(y)e(in)m(teractiv)m(e)630
+1002 y(shells)e(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h
+(command)f(is)h(executed.)150 1157 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 1267 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e
+Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g
+Fu(')150 1422 y Ft(PS4)336 b Fu(The)37 b(v)-5 b(alue)37
+b(of)g(this)g(parameter)h(is)f(expanded)f(lik)m(e)i Fr(PS1)44
+b Fu(and)37 b(the)g(expanded)f(v)-5 b(alue)38 b(is)630
+1532 y(the)d(prompt)f(prin)m(ted)g(b)s(efore)g(the)h(command)f(line)h
+(is)g(ec)m(ho)s(ed)g(when)f(the)h Ft(-x)f Fu(option)h(is)630
+1641 y(set)k(\(see)h(Section)g(4.3.1)g([The)f(Set)g(Builtin],)j(page)e
+(62\).)67 b(The)38 b(\014rst)g(c)m(haracter)j(of)e(the)630
+1751 y(expanded)33 b(v)-5 b(alue)33 b(is)h(replicated)g(m)m(ultiple)g
+(times,)h(as)f(necessary)-8 b(,)35 b(to)f(indicate)g(m)m(ultiple)630
+1861 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p
+Ft(+)h Fu('.)150 2016 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 2171 y Ft(RANDOM)192 b Fu(Eac)m(h)26
+b(time)g(this)f(parameter)h(is)g(referenced,)g(it)g(expands)f(to)h(a)g
+(random)e(in)m(teger)j(b)s(et)m(w)m(een)630 2281 y(0)e(and)e(32767.)41
+b(Assigning)25 b(a)f(v)-5 b(alue)25 b(to)g(this)f(v)-5
+b(ariable)25 b(seeds)f(the)h(random)e(n)m(um)m(b)s(er)g(gener-)630
+2390 y(ator.)41 b(If)27 b Ft(RANDOM)f Fu(is)h(unset,)h(it)g(loses)h
+(its)f(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)f
+(subsequen)m(tly)630 2500 y(reset.)150 2655 y Ft(READLINE_LINE)630
+2765 y Fu(The)g(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g
+(bu\013er,)f(for)h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h
+(Section)h(4.2)630 2874 y([Bash)i(Builtins],)g(page)g(51\).)150
+3029 y Ft(READLINE_MARK)630 3139 y Fu(The)26 b(p)s(osition)h(of)g(the)g
+Fr(mark)32 b Fu(\(sa)m(v)m(ed)c(insertion)f(p)s(oin)m(t\))g(in)g(the)g
+(Readline)g(line)g(bu\013er,)g(for)630 3249 y(use)36
+b(with)f(`)p Ft(bind)30 b(-x)p Fu(')35 b(\(see)i(Section)g(4.2)g([Bash)
+f(Builtins],)i(page)f(51\).)58 b(The)35 b(c)m(haracters)630
+3358 y(b)s(et)m(w)m(een)c(the)g(insertion)f(p)s(oin)m(t)g(and)g(the)h
+(mark)f(are)h(often)f(called)i(the)f Fr(region)p Fu(.)150
+3513 y Ft(READLINE_POINT)630 3623 y Fu(The)23 b(p)s(osition)g(of)g(the)
+h(insertion)f(p)s(oin)m(t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h
+(for)f(use)g(with)g(`)p Ft(bind)630 3733 y(-x)p Fu(')30
+b(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)150
+3888 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32
+b(for)e(the)g Ft(read)g Fu(builtin.)150 4043 y Ft(SECONDS)144
b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s
(er)e(of)i(seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630
-1692 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43
+4153 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 1802 y(expanded)35 b(v)-5
+b(assigned,)j(and)c(the)630 4262 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 1911 y(the)31
-b(assignmen)m(t.)150 2068 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
-2178 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
-2287 y(user's)30 b(login)h(shell.)150 2444 y Ft(SHELLOPTS)630
-2553 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 2663 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 2772 y(Set)g(Builtin],)h(page)f(61\).)42
-b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e
-Fu(are)j(those)h(rep)s(orted)630 2882 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 2992 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 3101 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
-b(.)150 3258 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 3367 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
-3524 y Ft(TIMEFORMAT)630 3634 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 3743 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 3853 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 3962 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
-4072 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h
-(p)s(ortions.)630 4228 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p
-Ft(\045)p Fu('.)630 4385 y Ft(\045[)p Fj(p)p Ft(][l]R)96
-b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 4542
-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
-4698 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
-4855 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 5011
-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
-5121 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 5230 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 5340 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.)p eop end
+(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 4372 y(the)24
+b(assignmen)m(t.)39 b(The)23 b(n)m(um)m(b)s(er)g(of)h(seconds)f(at)i
+(shell)f(in)m(v)m(o)s(cation)i(and)d(the)h(curren)m(t)f(time)630
+4482 y(is)j(alw)m(a)m(ys)i(determined)e(b)m(y)g(querying)g(the)h
+(system)f(clo)s(c)m(k.)41 b(If)26 b Ft(SECONDS)e Fu(is)i(unset,)h(it)g
+(loses)630 4591 y(its)k(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f
+(it)h(is)f(subsequen)m(tly)g(reset.)150 4746 y Ft(SHELL)240
+b Fu(This)24 b(en)m(vironmen)m(t)i(v)-5 b(ariable)26
+b(expands)e(to)i(the)g(full)f(pathname)g(to)h(the)f(shell.)39
+b(If)25 b(it)g(is)h(not)630 4856 y(set)36 b(when)f(the)h(shell)g
+(starts,)i(Bash)e(assigns)h(to)f(it)h(the)f(full)f(pathname)h(of)g(the)
+g(curren)m(t)630 4966 y(user's)30 b(login)h(shell.)150
+5121 y Ft(SHELLOPTS)630 5230 y Fu(A)g(colon-separated)h(list)f(of)g
+(enabled)f(shell)h(options.)41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h
+(list)g(is)g(a)g(v)-5 b(alid)630 5340 y(argumen)m(t)28
+b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e
+Fu(builtin)h(command)g(\(see)i(Section)f(4.3.1)h([The)p
+eop end
%%Page: 84 90
TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(5:)41
-b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(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
-408 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 518 y(included.)630 653
-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 787 y Ft
+b(Shell)30 b(V)-8 b(ariables)2459 b(84)630 299 y(Set)29
+b(Builtin],)h(page)f(62\).)42 b(The)28 b(options)h(app)s(earing)f(in)g
+Ft(SHELLOPTS)e Fu(are)j(those)h(rep)s(orted)630 408 y(as)g(`)p
+Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29
+b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f
+(Bash)h(starts)g(up,)630 518 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h
+(list)g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h
+(startup)f(\014les.)630 628 y(This)30 b(v)-5 b(ariable)31
+b(is)f(readonly)-8 b(.)150 790 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21
+b(b)m(y)g(one)g(eac)m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g
+(started.)38 b(This)20 b(is)h(in)m(tended)630 899 y(to)31
+b(b)s(e)f(a)h(coun)m(t)g(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h
+(shells)f(are)h(nested.)150 1062 y Ft(SRANDOM)144 b Fu(This)36
+b(v)-5 b(ariable)37 b(expands)f(to)h(a)g(32-bit)h(pseudo-random)d(n)m
+(um)m(b)s(er)g(eac)m(h)j(time)f(it)g(is)g(ref-)630 1171
+y(erenced.)47 b(The)32 b(random)g(n)m(um)m(b)s(er)f(generator)j(is)e
+(not)h(linear)g(on)f(systems)h(that)g(supp)s(ort)630
+1281 y Ft(/dev/urandom)26 b Fu(or)k Ft(arc4random)p Fu(,)d(so)j(eac)m
+(h)g(returned)f(n)m(um)m(b)s(er)f(has)h(no)g(relationship)h(to)630
+1390 y(the)39 b(n)m(um)m(b)s(ers)e(preceding)i(it.)66
+b(The)38 b(random)g(n)m(um)m(b)s(er)f(generator)j(cannot)g(b)s(e)e
+(seeded,)630 1500 y(so)c(assignmen)m(ts)g(to)g(this)f(v)-5
+b(ariable)34 b(ha)m(v)m(e)h(no)e(e\013ect.)51 b(If)33
+b Ft(SRANDOM)e Fu(is)j(unset,)g(it)f(loses)i(its)630
+1610 y(sp)s(ecial)c(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g
+(subsequen)m(tly)f(reset.)150 1772 y Ft(TIMEFORMAT)630
+1881 y Fu(The)g(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f
+(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630
+1991 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h
+(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630
+2101 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h
+(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g
+(to)630 2210 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f
+(information.)59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i
+(meanings)630 2320 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)
+h(optional)h(p)s(ortions.)630 2482 y Ft(\045\045)384
+b Fu(A)30 b(literal)i(`)p Ft(\045)p Fu('.)630 2644 y
+Ft(\045[)p Fj(p)p Ft(][l]R)96 b Fu(The)30 b(elapsed)h(time)g(in)f
+(seconds.)630 2806 y Ft(\045[)p Fj(p)p Ft(][l]U)96 b
+Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g
+(user)f(mo)s(de.)630 2968 y Ft(\045[)p Fj(p)p Ft(][l]S)96
+b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g
+(system)g(mo)s(de.)630 3131 y Ft(\045P)384 b Fu(The)30
+b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h(\(\045U)f
+Ft(+)g Fu(\045S\))g(/)h(\045R.)630 3293 y(The)23 b(optional)j
+Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h(precision,)i(the)e(n)m
+(um)m(b)s(er)f(of)h(fractional)h(digits)630 3402 y(after)36
+b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36
+b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h(fraction)g(to)g
+(b)s(e)630 3512 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h
+(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)h(b)s(e)e(sp)s
+(eci\014ed;)i(v)-5 b(alues)630 3622 y(of)31 b Fr(p)h
+Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42
+b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5
+b(alue)30 b(3)h(is)g(used.)630 3758 y(The)54 b(optional)h
+Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54
+b(min)m(utes,)61 b(of)54 b(the)g(form)630 3867 y Fr(MM)10
+b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5
+b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f
+(fraction)h(is)630 3977 y(included.)630 4113 y(If)30
+b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f
+(it)h(had)f(the)h(v)-5 b(alue)870 4248 y Ft
($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630
-922 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f
+4384 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 1031 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
-(y)m(ed.)150 1191 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
+(is)630 4494 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m
+(y)m(ed.)150 4656 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5
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 1300 y Ft(read)31
+(the)h(default)g(timeout)g(for)g(the)630 4766 y Ft(read)31
b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g
-(50\).)47 b(The)32 b Ft(select)e Fu(command)630 1410
-y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i
-(11\))f(terminates)g(if)g(input)e(do)s(es)630 1519 y(not)k(arriv)m(e)g
+(51\).)47 b(The)32 b Ft(select)e Fu(command)630 4875
+y(\(see)f(Section)h(3.2.5.2)g([Conditional)g(Constructs],)e(page)i
+(11\))f(terminates)g(if)g(input)e(do)s(es)630 4985 y(not)k(arriv)m(e)g
(after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a)
-h(terminal.)630 1654 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d
+h(terminal.)630 5121 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d
(v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f
-(of)h(seconds)f(to)630 1763 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)
+(of)h(seconds)f(to)630 5230 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input)
e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26
-b(terminates)h(after)630 1873 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m
+b(terminates)h(after)630 5340 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m
(b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s
-(es)h(not)h(arriv)m(e.)150 2032 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 2142
-y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150
-2301 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
+(es)h(not)h(arriv)m(e.)p eop end
%%Page: 85 91
-TeXDict begin 85 90 bop 3659 -116 a Fu(85)150 299 y Fp(6)80
+TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(5:)41
+b(Shell)30 b(V)-8 b(ariables)2459 b(85)150 299 y Ft(TMPDIR)192
+b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40
+b(as)f(the)h(name)f(of)h(a)g(directory)g(in)f(whic)m(h)g(Bash)h
+(creates)630 408 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g
+(use.)150 568 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)
+g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31
+b(is)f(readonly)-8 b(.)p eop end
+%%Page: 86 92
+TeXDict begin 86 91 bop 3659 -116 a Fu(86)150 299 y Fp(6)80
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
@@ -14237,7 +14314,7 @@ b([-o)k Fj(option)p Ft(])581 1438 y([-O)h Fj(shopt_option)p
Ft(])d([)p Fj(argument)h Ft(...)o(])275 1567 y Fu(All)31
b(of)g(the)f(single-c)m(haracter)k(options)d(used)f(with)g(the)h
Ft(set)f Fu(builtin)g(\(see)h(Section)h(4.3.1)g([The)f(Set)150
-1676 y(Builtin],)45 b(page)c(61\))i(can)e(b)s(e)f(used)h(as)g(options)g
+1676 y(Builtin],)45 b(page)c(62\))i(can)e(b)s(e)f(used)h(as)g(options)g
(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.)74 b(In)41
b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m(ulti-c)m
(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38
@@ -14247,7 +14324,7 @@ b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j(options)e(to)g(b)s(e)f
(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e(executed)i(b)s(efore)f(the)g
(shell)g(starts.)49 b(T)-8 b(urns)630 2262 y(on)35 b(extended)g
(debugging)f(mo)s(de)h(\(see)g(Section)h(4.3.2)h([The)d(Shopt)g
-(Builtin],)j(page)f(65,)630 2371 y(for)30 b(a)h(description)f(of)h(the)
+(Builtin],)j(page)f(66,)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
@@ -14265,7 +14342,7 @@ b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150
3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g
Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h
(the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command)
-f(Line)g(Editing],)630 4131 y(page)h(107\))h(to)f(read)g(command)f
+f(Line)g(Editing],)630 4131 y(page)h(111\))h(to)f(read)g(command)f
(lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150
4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g
(system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h
@@ -14281,16 +14358,16 @@ 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(99,)630
-5340 y(for)k(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f
+(as)g(a)630 5230 y(strict)22 b(sup)s(erset)e(of)h(that)g(standard.)37
+b(See)21 b(Section)h(6.11)g([Bash)f(POSIX)f(Mo)s(de],)k(page)d(101,)630
+5340 y(for)30 b(a)h(description)f(of)h(the)f(Bash)h Fm(posix)f
Fu(mo)s(de.)p eop end
-%%Page: 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(--restricted)630
+%%Page: 87 93
+TeXDict begin 87 92 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(87)150 299 y Ft(--restricted)630
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(99\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5
+y(page)31 b(100\).)150 677 y Ft(--verbose)630 787 y Fu(Equiv)-5
b(alen)m(t)31 b(to)g Ft(-v)p Fu(.)41 b(Prin)m(t)30 b(shell)g(input)g
(lines)g(as)h(they're)g(read.)150 946 y Ft(--version)630
1056 y Fu(Sho)m(w)d(v)m(ersion)g(information)g(for)g(this)g(instance)h
@@ -14312,7 +14389,7 @@ b(assignmen)m(t)i(to)g Ft($0)f Fu(sets)g(the)h(name)f(of)g(the)g
(error)g(messages.)150 2192 y Ft(-i)384 b Fu(F)-8 b(orce)22
b(the)g(shell)f(to)g(run)f(in)m(teractiv)m(ely)-8 b(.)41
b(In)m(teractiv)m(e)23 b(shells)e(are)h(describ)s(ed)d(in)i(Section)h
-(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(88.)150
+(6.3)630 2301 y([In)m(teractiv)m(e)33 b(Shells],)e(page)g(89.)150
2461 y Ft(-l)384 b Fu(Mak)m(e)33 b(this)e(shell)h(act)g(as)g(if)f(it)h
(had)f(b)s(een)f(directly)i(in)m(v)m(ok)m(ed)h(b)m(y)f(login.)44
b(When)31 b(the)h(shell)630 2570 y(is)37 b(in)m(teractiv)m(e,)43
@@ -14323,11 +14400,11 @@ b(this)37 b(is)g(equiv)-5 b(alen)m(t)39 b(to)f(starting)h(a)e(login)i
2790 y(`)p Ft(exec)e(bash)h(-l)p Fu(')43 b(or)h(`)p Ft(exec)29
b(bash)g(--login)p Fu(')42 b(will)i(replace)h(the)f(curren)m(t)f(shell)
h(with)g(a)630 2899 y(Bash)26 b(login)g(shell.)39 b(See)26
-b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(87,)i(for)d(a)h
+b(Section)g(6.2)h([Bash)e(Startup)g(Files],)j(page)e(88,)i(for)d(a)h
(description)630 3009 y(of)31 b(the)f(sp)s(ecial)h(b)s(eha)m(vior)g(of)
f(a)h(login)g(shell.)150 3168 y Ft(-r)384 b Fu(Mak)m(e)54
b(the)e(shell)g(a)h(restricted)g(shell)f(\(see)h(Section)g(6.10)h([The)
-d(Restricted)j(Shell],)630 3278 y(page)31 b(99\).)150
+d(Restricted)j(Shell],)630 3278 y(page)31 b(100\).)150
3437 y Ft(-s)384 b Fu(If)24 b(this)h(option)h(is)f(presen)m(t,)h(or)f
(if)g(no)f(argumen)m(ts)i(remain)e(after)i(option)f(pro)s(cessing,)h
(then)630 3547 y(commands)i(are)h(read)g(from)f(the)h(standard)f
@@ -14347,7 +14424,7 @@ b(implies)i(the)f Ft(-n)g Fu(option;)h(no)f(commands)g(will)h(b)s(e)f
Ft(])630 4523 y Fr(shopt)p 854 4523 V 40 w(option)44
b Fu(is)g(one)h(of)f(the)g(shell)h(options)f(accepted)h(b)m(y)f(the)h
Ft(shopt)d Fu(builtin)i(\(see)630 4633 y(Section)32 b(4.3.2)h([The)e
-(Shopt)f(Builtin],)i(page)g(65\).)44 b(If)31 b Fr(shopt)p
+(Shopt)f(Builtin],)i(page)g(66\).)44 b(If)31 b Fr(shopt)p
2724 4633 V 40 w(option)g Fu(is)g(presen)m(t,)h Ft(-O)f
Fu(sets)630 4742 y(the)24 b(v)-5 b(alue)24 b(of)g(that)h(option;)h
Ft(+O)e Fu(unsets)f(it.)39 b(If)23 b Fr(shopt)p 2423
@@ -14362,9 +14439,9 @@ f(a)h(format)f(that)630 5071 y(ma)m(y)i(b)s(e)f(reused)f(as)i(input.)
b(An)m(y)630 5340 y(argumen)m(ts)31 b(after)g(the)f Ft(--)g
Fu(are)h(treated)g(as)g(\014lenames)f(and)g(argumen)m(ts.)p
eop end
-%%Page: 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)275 299 y(A)27 b
+%%Page: 88 94
+TeXDict begin 88 93 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(88)275 299 y(A)27 b
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
@@ -14376,13 +14453,13 @@ g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150
774 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p
Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51
b(See)33 b(Section)i(6.3)150 884 y([In)m(teractiv)m(e)e(Shells],)e
-(page)g(88,)g(for)f(more)h(information.)275 1031 y(If)i(argumen)m(ts)h
+(page)g(89,)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(41\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h
+h(42\).)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
@@ -14396,9 +14473,9 @@ b(If)26 b(no)g(commands)g(are)h(executed,)150 1688 y(the)k(exit)g
(exist)h(but)e(cannot)150 2216 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f
(an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g
(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2326 y(Tilde)f(Expansion)g
-(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(23\).)275
+(\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(24\).)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(88.)150
+(6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(89.)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
@@ -14437,9 +14514,9 @@ b(the)f(line)390 4725 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g
5340 y(v)-5 b(ariable)35 b Ft(BASH_ENV)d Fu(in)i(the)h(en)m(vironmen)m
(t,)h(expands)e(its)g(v)-5 b(alue)35 b(if)g(it)g(app)s(ears)e(there,)j
(and)e(uses)g(the)p eop end
-%%Page: 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(expanded)30
+%%Page: 89 95
+TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y(expanded)30
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
@@ -14520,9 +14597,9 @@ y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m
(but)d(the)150 5070 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.)
150 5324 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p
eop end
-%%Page: 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 Fk(6.3.1)63
+%%Page: 90 96
+TeXDict begin 90 95 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(90)150 299 y Fk(6.3.1)63
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
@@ -14530,1075 +14607,1299 @@ g(non-option)g(argumen)m(ts,)j(unless)c Ft(-s)h Fu(is)f(sp)s
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
+Ft(-i)f Fu(option.)275 808 y(An)g(in)m(teractiv)m(e)j(shell)d
(generally)i(reads)e(from)g(and)g(writes)g(to)h(a)g(user's)f(terminal.)
-275 929 y(The)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s
+275 952 y(The)i Ft(-s)g Fu(in)m(v)m(o)s(cation)j(option)f(ma)m(y)f(b)s
(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
+(in)m(ter-)150 1061 y(activ)m(e)g(shell)d(is)h(started.)150
+1269 y Fk(6.3.2)63 b(Is)41 b(this)g(Shell)g(In)m(teractiv)m(e?)150
+1416 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
+b(,)33 b(test)e(the)150 1526 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(F)-8 b(or)30 b(example:)390 1669 y Ft(case)47 b("$-")f(in)390
+1779 y(*i*\))h(echo)f(This)h(shell)f(is)h(interactive)e(;;)390
+1888 y(*\))i(echo)g(This)f(shell)h(is)g(not)g(interactive)e(;;)390
+1998 y(esac)275 2141 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
+(teractiv)m(e)150 2251 y(shells,)31 b(and)e(set)i(in)f(in)m(teractiv)m
+(e)k(shells.)40 b(Th)m(us:)390 2394 y Ft(if)47 b([)h(-z)f("$PS1")f(];)h
+(then)772 2503 y(echo)f(This)h(shell)f(is)i(not)f(interactive)390
+2613 y(else)772 2723 y(echo)f(This)h(shell)f(is)i(interactive)390
+2832 y(fi)150 3040 y Fk(6.3.3)63 b(In)m(teractiv)m(e)38
+b(Shell)k(Beha)m(vior)150 3187 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
+(eha)m(vior)f(in)g(sev)m(eral)i(w)m(a)m(ys.)199 3330
y(1.)61 b(Startup)37 b(\014les)g(are)h(read)f(and)g(executed)h(as)f
(describ)s(ed)g(in)g(Section)h(6.2)g([Bash)g(Startup)e(Files],)330
-3343 y(page)31 b(87.)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(103\))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
+3440 y(page)31 b(88.)199 3579 y(2.)61 b(Job)32 b(Con)m(trol)h(\(see)g
+(Chapter)e(7)i([Job)f(Con)m(trol],)i(page)f(107\))h(is)e(enabled)g(b)m
+(y)g(default.)46 b(When)32 b(job)330 3689 y(con)m(trol)j(is)f(in)f
(e\013ect,)k(Bash)d(ignores)g(the)g(k)m(eyb)s(oard-generated)h(job)e
-(con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3694 y
-Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3826
+(con)m(trol)i(signals)g Ft(SIGTTIN)p Fu(,)330 3798 y
+Ft(SIGTTOU)p Fu(,)29 b(and)g Ft(SIGTSTP)p Fu(.)199 3937
y(3.)61 b(Bash)25 b(expands)e(and)h(displa)m(ys)h Ft(PS1)e
Fu(b)s(efore)h(reading)h(the)f(\014rst)g(line)h(of)f(a)h(command,)h
-(and)e(expands)330 3936 y(and)33 b(displa)m(ys)h Ft(PS2)f
+(and)e(expands)330 4047 y(and)33 b(displa)m(ys)h Ft(PS2)f
Fu(b)s(efore)h(reading)g(the)g(second)g(and)f(subsequen)m(t)g(lines)i
-(of)f(a)g(m)m(ulti-line)h(com-)330 4045 y(mand.)42 b(Bash)31
+(of)f(a)g(m)m(ulti-line)h(com-)330 4156 y(mand.)42 b(Bash)31
b(expands)f(and)h(displa)m(ys)g Ft(PS0)f Fu(after)h(it)h(reads)f(a)g
-(command)g(but)f(b)s(efore)h(executing)330 4155 y(it.)62
+(command)g(but)f(b)s(efore)h(executing)330 4266 y(it.)62
b(See)38 b(Section)g(6.9)h([Con)m(trolling)g(the)e(Prompt],)j(page)e
-(97,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4265
-y(string)30 b(escap)s(e)h(sequences.)199 4396 y(4.)61
-b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h
-Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s
-(efore)g(prin)m(ting)330 4506 y(the)31 b(primary)e(prompt,)h
-Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32
-b(page)f(73\).)199 4638 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h
-([Command)g(Line)g(Editing],)h(page)g(107\))g(is)f(used)g(to)g(read)g
-(commands)330 4748 y(from)k(the)g(user's)g(terminal.)199
-4879 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37
-b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29
-b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4989
-y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g
-(standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330
-5099 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(61\).)199
-5230 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f
-(History)h(F)-8 b(acilities],)51 b(page)45 b(141\))h(and)d(history)330
-5340 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)
-k(page)45 b(143\))h(are)f(enabled)g(b)m(y)f(default.)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)330 299 y(Bash)28
-b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)g(\014le)g
-(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)330
-408 y(history)i(enabled)h(exits.)199 541 y(8.)61 b(Alias)31
-b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e(93\))h(is)e
-(p)s(erformed)f(b)m(y)h(default.)199 674 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(41\).)154
-807 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g(traps,)f
-Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j(Section)f
-(3.7.6)h([Signals],)330 916 y(page)g(41\).)42 b Ft(SIGINT)29
-b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
-1049 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
+(98,)i(for)d(a)h(complete)h(list)f(of)g(prompt)330 4375
+y(string)30 b(escap)s(e)h(sequences.)199 4514 y(4.)61
+b(Bash)28 b(executes)h(the)e(v)-5 b(alues)28 b(of)g(the)g(set)g(elemen)
+m(ts)h(of)f(the)g Ft(PROMPT_COMMANDS)23 b Fu(arra)m(y)28
+b(v)-5 b(ariable)29 b(as)330 4624 y(commands)e(b)s(efore)f(prin)m(ting)
+h(the)g(primary)g(prompt,)g Ft($PS1)f Fu(\(see)i(Section)f(5.2)i([Bash)
+e(V)-8 b(ariables],)330 4733 y(page)31 b(73\).)199 4872
+y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g
+(Editing],)h(page)g(111\))g(is)f(used)g(to)g(read)g(commands)330
+4982 y(from)k(the)g(user's)g(terminal.)199 5121 y(6.)61
+b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g
+Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f
+(exiting)i(imme-)330 5230 y(diately)f(when)e(it)i(receiv)m(es)h(an)e
+Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command)
+g(\(see)330 5340 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g
+(62\).)p eop end
+%%Page: 91 97
+TeXDict begin 91 96 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(91)199 299 y(7.)61
+b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f(History)h(F)-8
+b(acilities],)51 b(page)45 b(146\))h(and)d(history)330
+408 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],)k
+(page)45 b(148\))h(are)f(enabled)g(b)m(y)f(default.)330
+518 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)
+g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g(with)
+330 628 y(history)i(enabled)h(exits.)199 762 y(8.)61
+b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e
+(94\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 896
+y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g
+(ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)
+f(42\).)154 1030 y(10.)61 b(In)29 b(the)g(absence)h(of)g(an)m(y)g
+(traps,)f Ft(SIGINT)f Fu(is)h(caugh)m(t)i(and)e(handled)f(\(see)j
+(Section)f(3.7.6)h([Signals],)330 1140 y(page)g(42\).)42
+b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154
+1274 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i
Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f
-Ft(huponexit)e Fu(shell)330 1159 y(option)31 b(has)f(b)s(een)g(enabled)
-g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(41\).)154
-1291 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g
+Ft(huponexit)e Fu(shell)330 1383 y(option)31 b(has)f(b)s(een)g(enabled)
+g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(42\).)154
+1517 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g
(ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see)
-e(Section)h(4.3.1)g([The)330 1401 y(Set)g(Builtin],)g(page)g(61\).)154
-1534 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s
+e(Section)h(4.3.1)g([The)330 1627 y(Set)g(Builtin],)g(page)g(62\).)154
+1761 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s
(dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32
b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330
-1643 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31
+1871 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31
b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32
-b(page)f(73\).)154 1776 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
+b(page)f(73\).)154 2005 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i
(references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34
b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330
-1886 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
-(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(61\).)154
-2018 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f
+2114 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g
+(Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(62\).)154
+2248 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f
(errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48
-b(unset)g(or)h(n)m(ull)f(in)330 2128 y Ft(${)p Fj(var)p
+b(unset)g(or)h(n)m(ull)f(in)330 2358 y Ft(${)p Fj(var)p
Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g
-([Shell)e(P)m(arameter)i(Expansion],)e(page)h(24\).)154
-2261 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f
+([Shell)e(P)m(arameter)i(Expansion],)e(page)h(25\).)154
+2492 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f
(shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154
-2393 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f
+2626 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f
(sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f
-(cause)330 2503 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(99\).)154 2636 y(18.)61
+(cause)330 2736 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h
+([Bash)f(POSIX)e(Mo)s(de],)i(page)g(101\).)154 2870 y(18.)61
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
-2745 y(page)e(43\).)154 2878 y(19.)61 b(P)m(arser)31
+2980 y(page)e(44\).)154 3114 y(19.)61 b(P)m(arser)31
b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.)
-154 3011 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g
+154 3248 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g
(directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h
-(enabled)f(b)m(y)h(default)330 3120 y(\(see)35 b(the)g(description)f
+(enabled)f(b)m(y)h(default)330 3357 y(\(see)35 b(the)g(description)f
(of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f
-Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3230 y(Shopt)30
-b(Builtin],)h(page)g(65\).)154 3363 y(21.)61 b(The)42
+Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 3467 y(Shopt)30
+b(Builtin],)h(page)g(66\).)154 3601 y(21.)61 b(The)42
b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h
Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h
-(not)330 3472 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s
+(not)330 3711 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s
(er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f
-Fu(\(see)i(Section)g(5.2)h([Bash)330 3582 y(V)-8 b(ariables],)32
-b(page)f(73\).)150 3819 y Fs(6.4)68 b(Bash)45 b(Conditional)h
-(Expressions)150 3979 y Fu(Conditional)26 b(expressions)g(are)g(used)f
+Fu(\(see)i(Section)g(5.2)h([Bash)330 3820 y(V)-8 b(ariables],)32
+b(page)f(73\).)150 4060 y Fs(6.4)68 b(Bash)45 b(Conditional)h
+(Expressions)150 4220 y Fu(Conditional)26 b(expressions)g(are)g(used)f
(b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h
-Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4088 y(commands.)50
+Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 4329 y(commands.)50
b(The)33 b Ft(test)g Fu(and)f Ft([)i Fu(commands)f(determine)h(their)f
(b)s(eha)m(vior)h(based)f(on)h(the)f(n)m(um)m(b)s(er)g(of)150
-4198 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g
+4439 y(argumen)m(ts;)28 b(see)f(the)f(descriptions)g(of)g(those)g
(commands)g(for)g(an)m(y)g(other)h(command-sp)s(eci\014c)e(actions.)275
-4331 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
+4573 y(Expressions)d(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8
b(,)24 b(and)f(are)g(formed)g(from)g(the)g(follo)m(wing)h(primaries.)38
-b(Unary)150 4440 y(expressions)c(are)g(often)g(used)g(to)g(examine)h
+b(Unary)150 4682 y(expressions)c(are)g(often)g(used)g(to)g(examine)h
(the)f(status)g(of)h(a)f(\014le.)52 b(There)33 b(are)h(string)g(op)s
-(erators)h(and)150 4550 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f
+(erators)h(and)150 4792 y(n)m(umeric)c(comparison)g(op)s(erators)h(as)f
(w)m(ell.)44 b(Bash)31 b(handles)g(sev)m(eral)h(\014lenames)g(sp)s
-(ecially)g(when)e(they)150 4659 y(are)35 b(used)e(in)i(expressions.)52
+(ecially)g(when)e(they)150 4902 y(are)35 b(used)e(in)i(expressions.)52
b(If)34 b(the)h(op)s(erating)f(system)h(on)f(whic)m(h)g(Bash)h(is)f
-(running)f(pro)m(vides)h(these)150 4769 y(sp)s(ecial)22
+(running)f(pro)m(vides)h(these)150 5011 y(sp)s(ecial)22
b(\014les,)i(Bash)e(will)g(use)f(them;)k(otherwise)d(it)g(will)g(em)m
(ulate)h(them)f(in)m(ternally)h(with)e(this)h(b)s(eha)m(vior:)150
-4878 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27
+5121 y(If)27 b(the)g Fr(\014le)33 b Fu(argumen)m(t)27
b(to)h(one)g(of)f(the)h(primaries)f(is)g(of)h(the)f(form)g
Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h(descriptor)f
-Fr(N)150 4988 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26
+Fr(N)150 5230 y Fu(is)g(c)m(hec)m(k)m(ed.)42 b(If)26
b(the)h Fr(\014le)32 b Fu(argumen)m(t)c(to)f(one)h(of)f(the)g
(primaries)f(is)h(one)h(of)f Ft(/dev/stdin)p Fu(,)e Ft(/dev/stdout)p
-Fu(,)150 5098 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h
+Fu(,)150 5340 y(or)30 b Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h
(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 b(,)32 b(is)f(c)m(hec)m(k)m
-(ed.)275 5230 y(When)37 b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p
-Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g
-(lexicographically)i(using)d(the)h(curren)m(t)150 5340
-y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI)s(I)e
-(ordering.)p eop end
-%%Page: 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(Unless)44
+(ed.)p eop end
+%%Page: 92 98
+TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(92)275 299 y(When)37
+b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p
+Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h
+(curren)m(t)150 408 y(lo)s(cale.)k(The)30 b Ft(test)f
+Fu(command)i(uses)f(ASCI)s(I)e(ordering.)275 542 y(Unless)44
b(otherwise)h(sp)s(eci\014ed,)j(primaries)c(that)h(op)s(erate)g(on)g
(\014les)f(follo)m(w)i(sym)m(b)s(olic)f(links)g(and)150
-408 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h
-(than)f(the)g(link)h(itself.)150 564 y Ft(-a)f Fj(file)162
+651 y(op)s(erate)31 b(on)f(the)h(target)h(of)e(the)h(link,)f(rather)h
+(than)f(the)g(link)h(itself.)150 808 y Ft(-a)f Fj(file)162
b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists.)150
-720 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+965 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g
-(\014le.)150 876 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30
+(\014le.)150 1122 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30
b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(c)m(haracter)h(sp)s
-(ecial)f(\014le.)150 1032 y Ft(-d)f Fj(file)162 b Fu(T)-8
+(ecial)f(\014le.)150 1279 y Ft(-d)f Fj(file)162 b Fu(T)-8
b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(directory)
--8 b(.)150 1188 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30
-b(if)g Fr(\014le)36 b Fu(exists.)150 1344 y Ft(-f)30
+-8 b(.)150 1436 y Ft(-e)30 b Fj(file)162 b Fu(T)-8 b(rue)30
+b(if)g Fr(\014le)36 b Fu(exists.)150 1592 y Ft(-f)30
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
-1500 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+1749 y Ft(-g)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(its)g(set-group-id)h(bit)g(is)f
-(set.)150 1656 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30
+(set.)150 1906 y Ft(-h)g Fj(file)162 b Fu(T)-8 b(rue)30
b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g
-(link.)150 1812 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30
+(link.)150 2063 y Ft(-k)f Fj(file)162 b Fu(T)-8 b(rue)30
b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g Ft(")p
-Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 1968 y Ft(-p)g
+Fu(stic)m(ky)p Ft(")h Fu(bit)g(is)f(set.)150 2220 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
-2124 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+2377 y Ft(-r)h Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(readable.)150
-2280 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+2534 y Ft(-s)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(a)g(size)i(greater)f(than)f
-(zero.)150 2436 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30
+(zero.)150 2690 y Ft(-t)g Fj(fd)258 b Fu(T)-8 b(rue)30
b(if)g(\014le)h(descriptor)f Fr(fd)j Fu(is)e(op)s(en)e(and)h(refers)g
-(to)h(a)g(terminal.)150 2592 y Ft(-u)f Fj(file)162 b
+(to)h(a)g(terminal.)150 2847 y Ft(-u)f Fj(file)162 b
Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(its)g
-(set-user-id)h(bit)f(is)h(set.)150 2748 y Ft(-w)f Fj(file)162
+(set-user-id)h(bit)f(is)h(set.)150 3004 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 2904 y Ft(-x)g Fj(file)162
+b(and)f(is)g(writable.)150 3161 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 3060 y Ft(-G)g Fj(file)162
+b(and)f(is)g(executable.)150 3318 y Ft(-G)g Fj(file)162
b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31
b(and)f(is)g(o)m(wned)g(b)m(y)h(the)f(e\013ectiv)m(e)j(group)d(id.)150
-3216 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+3475 y Ft(-L)g Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(sym)m(b)s(olic)g(link.)150
-3372 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
+3632 y Ft(-N)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g
Fr(\014le)36 b Fu(exists)31 b(and)f(has)g(b)s(een)f(mo)s(di\014ed)h
-(since)g(it)h(w)m(as)g(last)g(read.)150 3528 y Ft(-O)f
+(since)g(it)h(w)m(as)g(last)g(read.)150 3789 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 3683 y Ft(-S)g Fj(file)162 b Fu(T)-8
+(user)d(id.)150 3945 y Ft(-S)g Fj(file)162 b Fu(T)-8
b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(so)s(c)m
-(k)m(et.)150 3839 y Fj(file1)e Ft(-ef)g Fj(file2)630
-3949 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30
+(k)m(et.)150 4102 y Fj(file1)e Ft(-ef)g Fj(file2)630
+4212 y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(and)30
b Fr(\014le2)38 b Fu(refer)30 b(to)i(the)e(same)h(device)g(and)f(ino)s
-(de)g(n)m(um)m(b)s(ers.)150 4105 y Fj(file1)f Ft(-nt)g
-Fj(file2)630 4215 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32
+(de)g(n)m(um)m(b)s(ers.)150 4369 y Fj(file1)f Ft(-nt)g
+Fj(file2)630 4478 y Fu(T)-8 b(rue)23 b(if)h Fr(\014le1)32
b Fu(is)24 b(new)m(er)g(\(according)h(to)g(mo)s(di\014cation)f(date\))h
(than)f Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le1)31 b
-Fu(exists)630 4324 y(and)f Fr(\014le2)38 b Fu(do)s(es)30
-b(not.)150 4480 y Fj(file1)f Ft(-ot)g Fj(file2)630 4590
+Fu(exists)630 4588 y(and)f Fr(\014le2)38 b Fu(do)s(es)30
+b(not.)150 4745 y Fj(file1)f Ft(-ot)g Fj(file2)630 4854
y Fu(T)-8 b(rue)30 b(if)g Fr(\014le1)38 b Fu(is)31 b(older)f(than)g
Fr(\014le2)p Fu(,)i(or)e(if)g Fr(\014le2)38 b Fu(exists)31
-b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 4746
-y Ft(-o)g Fj(optname)630 4855 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h
+b(and)f Fr(\014le1)38 b Fu(do)s(es)30 b(not.)150 5011
+y Ft(-o)g Fj(optname)630 5121 y Fu(T)-8 b(rue)41 b(if)g(the)g(shell)h
(option)f Fr(optname)47 b Fu(is)41 b(enabled.)73 b(The)41
-b(list)h(of)f(options)h(app)s(ears)e(in)630 4965 y(the)33
+b(list)h(of)f(options)h(app)s(ears)e(in)630 5230 y(the)33
b(description)h(of)f(the)g Ft(-o)g Fu(option)g(to)h(the)g
Ft(set)e Fu(builtin)h(\(see)h(Section)g(4.3.1)h([The)e(Set)630
-5074 y(Builtin],)e(page)g(61\).)150 5230 y Ft(-v)f Fj(varname)630
-5340 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32
-b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e(assigned)i
-(a)g(v)-5 b(alue\).)p eop end
-%%Page: 92 98
-TeXDict begin 92 97 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(92)150 299 y Ft(-R)30
+5340 y(Builtin],)e(page)g(62\).)p eop end
+%%Page: 93 99
+TeXDict begin 93 98 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(93)150 299 y Ft(-v)30
b Fj(varname)630 408 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5
-b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f
-(name)h(reference.)150 571 y Ft(-z)f Fj(string)66 b Fu(T)-8
+b(ariable)32 b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(\(has)g(b)s(een)e
+(assigned)i(a)g(v)-5 b(alue\).)150 565 y Ft(-R)30 b Fj(varname)630
+674 y Fu(T)-8 b(rue)30 b(if)g(the)h(shell)f(v)-5 b(ariable)32
+b Fr(v)-5 b(arname)35 b Fu(is)30 b(set)h(and)f(is)h(a)f(name)h
+(reference.)150 830 y Ft(-z)f Fj(string)66 b Fu(T)-8
b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38 b Fu(is)31
-b(zero.)150 734 y Ft(-n)f Fj(string)150 844 y(string)192
+b(zero.)150 987 y Ft(-n)f Fj(string)150 1096 y(string)192
b Fu(T)-8 b(rue)30 b(if)g(the)h(length)g(of)f Fr(string)38
-b Fu(is)31 b(non-zero.)150 1006 y Fj(string1)d Ft(==)i
-Fj(string2)150 1116 y(string1)e Ft(=)i Fj(string2)630
-1225 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82
+b Fu(is)31 b(non-zero.)150 1252 y Fj(string1)d Ft(==)i
+Fj(string2)150 1362 y(string1)e Ft(=)i Fj(string2)630
+1472 y Fu(T)-8 b(rue)43 b(if)h(the)g(strings)g(are)g(equal.)82
b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-)
-630 1335 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m
-(v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630
-1445 y(Constructs],)30 b(page)h(11\).)630 1581 y(`)p
+630 1581 y(forms)d(pattern)g(matc)m(hing)i(as)f(describ)s(ed)e(ab)s(o)m
+(v)m(e)j(\(see)f(Section)g(3.2.5.2)i([Conditional)630
+1691 y(Constructs],)30 b(page)h(11\).)630 1824 y(`)p
Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e
-Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1743
-y Fj(string1)e Ft(!=)i Fj(string2)630 1853 y Fu(T)-8
+Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1980
+y Fj(string1)e Ft(!=)i Fj(string2)630 2089 y Fu(T)-8
b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150
-2016 y Fj(string1)e Ft(<)i Fj(string2)630 2125 y Fu(T)-8
+2246 y Fj(string1)e Ft(<)i Fj(string2)630 2355 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 2288
-y Fj(string1)28 b Ft(>)i Fj(string2)630 2398 y Fu(T)-8
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2511
+y Fj(string1)28 b Ft(>)i Fj(string2)630 2621 y Fu(T)-8
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 2560
-y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2670 y Ft(OP)j Fu(is)h(one)g(of)h(`)
+Fr(string2)38 b Fu(lexicographically)-8 b(.)150 2777
+y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 2887 y Ft(OP)j Fu(is)h(one)g(of)h(`)
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
-2780 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44
+2996 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 2889 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i
+(than)f(or)630 3106 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 2999 y Fr(arg2)41 b
+b(.)42 b Fr(Arg1)36 b Fu(and)630 3215 y Fr(arg2)41 b
Fu(ma)m(y)34 b(b)s(e)f(p)s(ositiv)m(e)h(or)f(negativ)m(e)j(in)m
(tegers.)50 b(When)33 b(used)g(with)g(the)g Ft([[)g Fu(command,)630
-3108 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33
+3325 y Fr(Arg1)41 b Fu(and)33 b Fr(Arg2)41 b Fu(are)33
b(ev)-5 b(aluated)35 b(as)e(arithmetic)i(expressions)d(\(see)j(Section)
-f(6.5)g([Shell)630 3218 y(Arithmetic],)e(page)f(92\).)150
-3464 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3623 y Fu(The)26
+f(6.5)g([Shell)630 3435 y(Arithmetic],)e(page)f(93\).)150
+3672 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 3832 y Fu(The)26
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 3733 y(using)h(the)g Ft(\(\()g Fu(comp)s(ound)e(command,)j(the)g
+150 3941 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 3870 y(Ev)-5 b(aluation)27
+Ft(declare)d Fu(builtin.)275 4074 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
-3980 y(0)g(is)g(trapp)s(ed)f(and)h(\015agged)g(as)h(an)f(error.)39
+4184 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 4090 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h
+(y)-8 b(,)32 b(and)150 4293 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 4199 y(lev)m(els)27
+(erators)g(is)g(group)s(ed)f(in)m(to)150 4403 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
-4364 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31
+4559 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
-4526 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
-b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4689
+4715 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31
+b(pre-incremen)m(t)g(and)f(pre-decremen)m(t)150 4871
y Ft(-)g(+)354 b Fu(unary)29 b(min)m(us)h(and)g(plus)150
-4852 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
-5015 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5177 y
+5028 y Ft(!)g(~)354 b Fu(logical)33 b(and)d(bit)m(wise)h(negation)150
+5184 y Ft(**)384 b Fu(exp)s(onen)m(tiation)150 5340 y
Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d
-(remainder)150 5340 y Ft(+)g(-)354 b Fu(addition,)31
-b(subtraction)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(<<)30
-b(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150
-456 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 612
+(remainder)p eop end
+%%Page: 94 100
+TeXDict begin 94 99 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Ft(+)30
+b(-)354 b Fu(addition,)31 b(subtraction)150 460 y Ft(<<)f(>>)258
+b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g(shifts)150
+620 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 781
y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150
-769 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 926 y Ft(^)432
-b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1082 y Ft(|)432
-b Fu(bit)m(wise)31 b(OR)150 1239 y Ft(&&)384 b Fu(logical)33
-b(AND)150 1396 y Ft(||)384 b Fu(logical)33 b(OR)150 1552
-y Ft(expr)c(?)h(expr)f(:)h(expr)630 1662 y Fu(conditional)i(op)s
-(erator)150 1819 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
-(^=)f(|=)630 1928 y Fu(assignmen)m(t)150 2085 y Ft(expr1)g(,)h(expr2)
-630 2195 y Fu(comma)275 2351 y(Shell)38 b(v)-5 b(ariables)39
+942 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 1103 y Ft(^)432
+b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 1263 y Ft(|)432
+b Fu(bit)m(wise)31 b(OR)150 1424 y Ft(&&)384 b Fu(logical)33
+b(AND)150 1585 y Ft(||)384 b Fu(logical)33 b(OR)150 1746
+y Ft(expr)c(?)h(expr)f(:)h(expr)630 1855 y Fu(conditional)i(op)s
+(erator)150 2016 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h(-=)g(<<=)f(>>=)h(&=)g
+(^=)f(|=)630 2126 y Fu(assignmen)m(t)150 2287 y Ft(expr1)g(,)h(expr2)
+630 2396 y Fu(comma)275 2558 y(Shell)38 b(v)-5 b(ariables)39
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 2461 y(expression)g(is)g(ev)-5
+f(p)s(erformed)g(b)s(efore)g(the)150 2667 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
-2570 y(name)31 b(without)f(using)g(the)h(parameter)g(expansion)f(syn)m
+2777 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 2680 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b)
+f(unset)150 2886 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 2790 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5
+(tax.)150 2996 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 2899
+(expression)f(when)f(it)h(is)g(referenced,)i(or)150 3106
y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m
(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p
-Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3009 y(a)j(v)-5
+Ft(declare)d(-i)p Fu(')i(is)i(assigned)150 3215 y(a)j(v)-5
b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5
b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37
b(need)e(not)h(ha)m(v)m(e)h(its)f Fr(in)m(teger)44 b
-Fu(attribute)150 3118 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g
-(expression.)275 3252 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)
-g(in)m(terpreted)f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72
-b(A)41 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p
-Fu(')150 3361 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30
+Fu(attribute)150 3325 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g
+(expression.)275 3461 y(In)m(teger)41 b(constan)m(ts)g(follo)m(w)h(the)
+e(C)g(language)i(de\014nition,)g(without)f(su\016xes)e(or)h(c)m
+(haracter)i(con-)150 3570 y(stan)m(ts.)f(Constan)m(ts)31
+b(with)f(a)g(leading)h(0)f(are)h(in)m(terpreted)f(as)g(o)s(ctal)i(n)m
+(um)m(b)s(ers.)39 b(A)30 b(leading)h(`)p Ft(0x)p Fu(')f(or)g(`)p
+Ft(0X)p Fu(')150 3680 y(denotes)g(hexadecimal.)42 b(Otherwise,)30
b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f(form)g([)p Fr(base)5
b Ft(#)p Fu(])p Fr(n)p Fu(,)30 b(where)f(the)i(optional)g
-Fr(base)150 3471 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m
+Fr(base)150 3789 y Fu(is)e(a)h(decimal)g(n)m(um)m(b)s(er)e(b)s(et)m(w)m
(een)h(2)h(and)e(64)i(represen)m(ting)g(the)f(arithmetic)i(base,)e(and)
-g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3580 y(in)c(that)g(base.)39
-b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h
-(is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h
-(greater)150 3690 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h
-(lo)m(w)m(ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p
-Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150
-3800 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f
-(equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i
-(ma)m(y)g(b)s(e)e(used)150 3909 y(in)m(terc)m(hangeably)32
-b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f
-(35.)275 4042 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46
-b(in)f(order)f(of)h(precedence.)85 b(Sub-expressions)44
-b(in)g(paren)m(theses)i(are)150 4152 y(ev)-5 b(aluated)32
-b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g(the)g(precedence)g(rules)f
-(ab)s(o)m(v)m(e.)150 4390 y Fs(6.6)68 b(Aliases)150 4549
-y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g
-(for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m
-(ord)h(of)h(a)150 4659 y(simple)32 b(command.)45 b(The)31
-b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s
-(e)e(set)h(and)g(unset)f(with)h(the)150 4768 y Ft(alias)d
-Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 4902
-y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f
-(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g
-(alias.)150 5011 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m
-(y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p
-Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p
-Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 5121 y(the)e(shell)g(metac)m
-(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g
-(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150
-5230 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v)
--5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.)
-40 b(The)150 5340 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i
-(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g
-(iden)m(tical)i(to)e(an)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(alias)32
-b(b)s(eing)f(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43
+g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 3899 y(in)g(that)i(base.)40
+b(If)30 b Fr(base)5 b Ft(#)30 b Fu(is)f(omitted,)i(then)f(base)g(10)g
+(is)g(used.)40 b(When)30 b(sp)s(ecifying)f Fr(n)p Fu(,)h(if)f(a)i
+(non-digit)f(is)150 4008 y(required,)k(the)g(digits)h(greater)g(than)e
+(9)i(are)f(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m(ercase)j(letters,)f
+(the)e(upp)s(ercase)150 4118 y(letters,)26 b(`)p Ft(@)p
+Fu(',)g(and)d(`)p Ft(_)p Fu(',)i(in)e(that)i(order.)38
+b(If)23 b Fr(base)29 b Fu(is)23 b(less)h(than)g(or)f(equal)h(to)h(36,)h
+(lo)m(w)m(ercase)g(and)d(upp)s(ercase)150 4228 y(letters)32
+b(ma)m(y)f(b)s(e)e(used)h(in)m(terc)m(hangeably)i(to)f(represen)m(t)g
+(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f(35.)275
+4364 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h
+(precedence.)85 b(Sub-expressions)44 b(in)g(paren)m(theses)i(are)150
+4473 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g
+(the)g(precedence)g(rules)f(ab)s(o)m(v)m(e.)150 4716
+y Fs(6.6)68 b(Aliases)150 4875 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f
+(string)f(to)h(b)s(e)f(substituted)g(for)g(a)g(w)m(ord)g(when)g(it)h
+(is)f(used)f(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)150
+4985 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h
+(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s(e)e(set)h(and)g(unset)f
+(with)h(the)150 5095 y Ft(alias)d Fu(and)h Ft(unalias)e
+Fu(builtin)i(commands.)275 5230 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m
+(h)i(simple)f(command,)g(if)f(unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g
+(see)f(if)g(it)g(has)f(an)g(alias.)150 5340 y(If)24 b(so,)i(that)g(w)m
+(ord)e(is)h(replaced)g(b)m(y)f(the)h(text)h(of)e(the)h(alias.)40
+b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p
+Fu(',)f(`)p Ft(`)p Fu(',)g(`)p Ft(=)p Fu(')f(and)f(an)m(y)h(of)p
+eop end
+%%Page: 95 101
+TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(95)150 299 y(the)23
+b(shell)g(metac)m(haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g
+(ab)s(o)m(v)m(e)g(ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)
+150 408 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e
+(v)-5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m
+(haracters.)40 b(The)150 518 y(\014rst)35 b(w)m(ord)g(of)h(the)g
+(replacemen)m(t)i(text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m
+(ord)g(that)g(is)g(iden)m(tical)i(to)e(an)150 628 y(alias)c(b)s(eing)f
+(expanded)f(is)h(not)g(expanded)f(a)h(second)g(time.)43
b(This)30 b(means)h(that)g(one)g(ma)m(y)h(alias)g Ft(ls)e
-Fu(to)150 408 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i
+Fu(to)150 737 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i
(do)s(es)f(not)h(try)f(to)h(recursiv)m(ely)g(expand)e(the)i(replacemen)
-m(t)h(text.)40 b(If)150 518 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h
+m(t)h(text.)40 b(If)150 847 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h
(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)
-h(command)e(w)m(ord)h(follo)m(wing)i(the)150 628 y(alias)f(is)e(also)h
-(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 770
+h(command)e(w)m(ord)h(follo)m(wing)i(the)150 956 y(alias)f(is)e(also)h
+(c)m(hec)m(k)m(ed)i(for)d(alias)h(expansion.)275 1096
y(Aliases)e(are)f(created)i(and)d(listed)i(with)f(the)g
Ft(alias)f Fu(command,)h(and)g(remo)m(v)m(ed)h(with)f(the)g
-Ft(unalias)150 880 y Fu(command.)275 1023 y(There)44
+Ft(unalias)150 1206 y Fu(command.)275 1345 y(There)44
b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g(in)f(the)h
(replacemen)m(t)i(text,)i(as)d(in)e Ft(csh)p Fu(.)83
-b(If)150 1132 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function)
+b(If)150 1455 y(argumen)m(ts)37 b(are)h(needed,)g(a)g(shell)f(function)
f(should)g(b)s(e)h(used)f(\(see)i(Section)g(3.3)g([Shell)f(F)-8
-b(unctions],)150 1242 y(page)31 b(17\).)275 1385 y(Aliases)i(are)h(not)
+b(unctions],)150 1564 y(page)31 b(18\).)275 1704 y(Aliases)i(are)h(not)
e(expanded)g(when)g(the)h(shell)g(is)g(not)g(in)m(teractiv)m(e,)j
-(unless)c(the)h Ft(expand_aliases)150 1494 y Fu(shell)e(option)f(is)h
+(unless)c(the)h Ft(expand_aliases)150 1813 y Fu(shell)e(option)f(is)h
(set)g(using)f Ft(shopt)f Fu(\(see)i(Section)g(4.3.2)h([The)e(Shopt)g
-(Builtin],)h(page)g(65\).)275 1637 y(The)38 b(rules)h(concerning)h(the)
+(Builtin],)h(page)g(66\).)275 1953 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 1747 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g
+(confusing.)67 b(Bash)150 2063 y(alw)m(a)m(ys)37 b(reads)f(at)h(least)g
(one)f(complete)i(line)e(of)g(input,)h(and)e(all)i(lines)f(that)g(mak)m
-(e)h(up)e(a)h(comp)s(ound)150 1856 y(command,)29 b(b)s(efore)g
+(e)h(up)e(a)h(comp)s(ound)150 2172 y(command,)29 b(b)s(efore)g
(executing)i(an)m(y)e(of)h(the)f(commands)g(on)g(that)h(line)f(or)h
-(the)f(comp)s(ound)f(command.)150 1966 y(Aliases)g(are)g(expanded)e
+(the)f(comp)s(ound)f(command.)150 2282 y(Aliases)g(are)g(expanded)e
(when)g(a)i(command)f(is)g(read,)h(not)f(when)f(it)i(is)f(executed.)41
-b(Therefore,)28 b(an)f(alias)150 2075 y(de\014nition)36
+b(Therefore,)28 b(an)f(alias)150 2391 y(de\014nition)36
b(app)s(earing)h(on)f(the)h(same)g(line)g(as)g(another)g(command)f(do)s
-(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2185
+(es)g(not)h(tak)m(e)i(e\013ect)f(un)m(til)f(the)150 2501
y(next)i(line)g(of)g(input)f(is)h(read.)66 b(The)38 b(commands)h(follo)
m(wing)h(the)f(alias)h(de\014nition)e(on)h(that)g(line)h(are)150
-2295 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49
+2610 y(not)33 b(a\013ected)h(b)m(y)f(the)g(new)f(alias.)49
b(This)32 b(b)s(eha)m(vior)h(is)g(also)g(an)g(issue)g(when)e(functions)
-i(are)g(executed.)150 2404 y(Aliases)c(are)g(expanded)e(when)g(a)i
+i(are)g(executed.)150 2720 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 2514 y(b)s(ecause)36 b(a)h(function)f(de\014nition)
+(is)g(executed,)150 2830 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 2623 y(function)28 b(are)h(not)g(a)m(v)-5
+(de\014ned)d(in)h(a)150 2939 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
-2733 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h
+3049 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
-2876 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i
+3188 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
-3129 y Fs(6.7)68 b(Arra)l(ys)150 3288 y Fu(Bash)33 b(pro)m(vides)g
+3437 y Fs(6.7)68 b(Arra)l(ys)150 3596 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
-3398 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e
+3706 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 3507 y(no)h(maxim)m(um)g(limit)h(on)f
+-8 b(.)46 b(There)32 b(is)150 3815 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 3617
+m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 3925
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 3727 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
-e(Arithmetic],)k(page)d(92\)\))h(and)d(are)i(zero-based;)k(asso)s
-(ciativ)m(e)150 3836 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
+(arithmetic)150 4034 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell)
+e(Arithmetic],)k(page)d(93\)\))h(and)d(are)i(zero-based;)k(asso)s
+(ciativ)m(e)150 4144 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59
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 3946 y(negativ)m(e)d(in)m(tegers.)275
-4088 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 4254 y(negativ)m(e)d(in)m(tegers.)275
+4393 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c
(an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m
-(tax)390 4231 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
-Fj(value)150 4374 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
+(tax)390 4533 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
+Fj(value)150 4672 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g
(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
-4484 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
-b(use)390 4626 y Ft(declare)46 b(-a)h Fj(name)150 4769
-y Fu(The)30 b(syn)m(tax)390 4912 y Ft(declare)46 b(-a)h
-Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5054 y Fu(is)30
-b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150
-5197 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390
-5340 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)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)275 299 y(A)m(ttributes)46
-b(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5
-b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150
-408 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 548 y(Arra)m(ys)30
+4782 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31
+b(use)390 4921 y Ft(declare)46 b(-a)h Fj(name)150 5061
+y Fu(The)30 b(syn)m(tax)390 5200 y Ft(declare)46 b(-a)h
+Fj(name)p Ft([)p Fj(subscript)p Ft(])150 5340 y Fu(is)30
+b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)p
+eop end
+%%Page: 96 102
+TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(96)150 299 y(Asso)s(ciativ)m(e)33
+b(arra)m(ys)d(are)h(created)h(using)390 427 y Ft(declare)46
+b(-A)h Fj(name)275 555 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s
+(eci\014ed)g(for)h(an)g(arra)m(y)g(v)-5 b(ariable)47
+b(using)e(the)h Ft(declare)e Fu(and)h Ft(readonly)150
+664 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g(applies)g(to)g(all)g
+(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 b(.)275 792 y(Arra)m(ys)30
b(are)h(assigned)f(to)h(using)f(comp)s(ound)f(assignmen)m(ts)i(of)g
-(the)f(form)390 687 y Fj(name)p Ft(=\()p Fj(value1)44
-b(value2)j Ft(...)f(\))150 827 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 936 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
-1046 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
-1156 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 1295
-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 1435 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
-1544 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 1684 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 1793 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 1903 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
-2012 y(elemen)m(t.)275 2152 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
-2262 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 2371 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 2481 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 2590 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
-2700 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
+(the)f(form)390 920 y Fj(name)p Ft(=\()p Fj(value1)44
+b(value2)j Ft(...)f(\))150 1048 y Fu(where)33 b(eac)m(h)i
+Fr(v)-5 b(alue)40 b Fu(ma)m(y)34 b(b)s(e)g(of)g(the)g(form)f
+Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)48 b(Indexed)33
+b(arra)m(y)h(assignmen)m(ts)h(do)150 1157 y(not)26 b(require)f(an)m
+(ything)g(but)g Fr(string)p Fu(.)39 b(When)25 b(assigning)h(to)g
+(indexed)f(arra)m(ys,)i(if)e(the)h(optional)g(subscript)150
+1267 y(is)h(supplied,)f(that)h(index)g(is)f(assigned)h(to;)i(otherwise)
+e(the)g(index)g(of)f(the)h(elemen)m(t)i(assigned)d(is)h(the)g(last)150
+1377 y(index)j(assigned)h(to)g(b)m(y)f(the)g(statemen)m(t)j(plus)c
+(one.)41 b(Indexing)30 b(starts)h(at)g(zero.)275 1504
+y(Eac)m(h)26 b Fr(v)-5 b(alue)32 b Fu(in)26 b(the)h(list)g(undergo)s
+(es)e(all)i(the)g(shell)f(expansions)g(describ)s(ed)f(ab)s(o)m(v)m(e)j
+(\(see)f(Section)g(3.5)150 1614 y([Shell)j(Expansions],)h(page)g(22\).)
+275 1742 y(When)k(assigning)i(to)g(an)f(asso)s(ciativ)m(e)i(arra)m(y)-8
+b(,)39 b(the)d(w)m(ords)f(in)h(a)h(comp)s(ound)d(assignmen)m(t)j(ma)m
+(y)g(b)s(e)150 1851 y(either)31 b(assignmen)m(t)h(statemen)m(ts,)h(for)
+e(whic)m(h)g(the)g(subscript)f(is)h(required,)g(or)g(a)g(list)h(of)f(w)
+m(ords)f(that)i(is)150 1961 y(in)m(terpreted)g(as)g(a)g(sequence)f(of)h
+(alternating)h(k)m(eys)f(and)f(v)-5 b(alues:)44 b Fr(name)5
+b Fu(=\()p Fr(k)m(ey1)40 b(v)-5 b(alue1)40 b(k)m(ey2)g(v)-5
+b(alue2)156 2071 y Fu(.)22 b(.)g(.)47 b(\).)57 b(These)35
+b(are)i(treated)f(iden)m(tically)i(to)e Fr(name)5 b Fu(=\()36
+b([)p Fr(k)m(ey1)7 b Fu(]=)p Fr(v)-5 b(alue1)46 b Fu([)p
+Fr(k)m(ey2)7 b Fu(]=)p Fr(v)-5 b(alue2)51 b Fu(.)22 b(.)h(.)46
+b(\).)57 b(The)150 2180 y(\014rst)25 b(w)m(ord)f(in)h(the)h(list)g
+(determines)f(ho)m(w)g(the)h(remaining)f(w)m(ords)g(are)h(in)m
+(terpreted;)h(all)f(assignmen)m(ts)g(in)150 2290 y(a)31
+b(list)f(m)m(ust)h(b)s(e)e(of)h(the)h(same)f(t)m(yp)s(e.)41
+b(When)30 b(using)g(k)m(ey/v)-5 b(alue)32 b(pairs,)e(the)g(k)m(eys)h
+(ma)m(y)g(not)f(b)s(e)g(missing)150 2399 y(or)g(empt)m(y;)h(a)g
+(\014nal)f(missing)g(v)-5 b(alue)31 b(is)g(treated)g(lik)m(e)h(the)e
+(empt)m(y)h(string.)275 2527 y(This)f(syn)m(tax)j(is)e(also)i(accepted)
+g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31
+b(arra)m(y)h(elemen)m(ts)h(ma)m(y)g(b)s(e)150 2637 y(assigned)e(to)g
+(using)f(the)g Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p
+Fj(value)25 b Fu(syn)m(tax)31 b(in)m(tro)s(duced)e(ab)s(o)m(v)m(e.)275
+2765 y(When)h(assigning)h(to)h(an)e(indexed)g(arra)m(y)-8
+b(,)32 b(if)f Fr(name)36 b Fu(is)31 b(subscripted)e(b)m(y)i(a)g
+(negativ)m(e)i(n)m(um)m(b)s(er,)c(that)150 2874 y(n)m(um)m(b)s(er)43
+b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e
+(the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150
+2984 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g
+(end)g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h
+(references)g(the)f(last)150 3093 y(elemen)m(t.)275 3221
+y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f
+(referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p
+Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 3331 y(required)f(to)j(a)m
+(v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion)
+f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150
+3440 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f
+(expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h
+Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150
+3550 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g
+(quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j
+Ft(${)p Fj(name)p Ft([*]})150 3660 y Fu(expands)25 b(to)h(a)g(single)h
+(w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem)
+m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150
+3769 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29
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
-2809 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f
+3879 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 2919 y(expansion)39
+b(If)31 b(the)i(double-quoted)150 3988 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 3029
+(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 4098
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
-3138 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40
+4208 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 3248 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p
+(ecial)h(param-)150 4317 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
-3357 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p
+4427 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 3467 y Fu(used)34 b(to)h(reference)g(an)f
+b(the)g Fr(subscript)150 4536 y Fu(used)34 b(to)h(reference)g(an)f
(elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36
b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150
-3577 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h
+4646 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 3686 y(indices)d(coun)m(t)h(bac)m(k)h
+b(,)33 b(so)g(negativ)m(e)150 4756 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
-3826 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42
+4883 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 3935 y(subscript)35
+b(to)f(referencing)g(with)g(a)150 4993 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 4045 y(create)d(an)e(arra)m(y)h(if)f
-(necessary)-8 b(.)275 4184 y(An)35 b(arra)m(y)i(v)-5
+(and)c Ft(bash)g Fu(will)150 5103 y(create)d(an)e(arra)m(y)h(if)f
+(necessary)-8 b(.)275 5230 y(An)35 b(arra)m(y)i(v)-5
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
-4294 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275
-4433 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 4543 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 4653 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 4762 y(within)30
-b(double)g(quotes.)275 4902 y(The)25 b Ft(unset)g Fu(builtin)g(is)h
+5340 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)p
+eop end
+%%Page: 97 103
+TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(97)275 299 y(It)29
+b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i(\(indices\))f(of)f
+(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41
+b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})150 408
+y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p
+Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g(arra)m(y)g
+(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 b(treatmen)m(t)150
+518 y(when)i(in)g(double)g(quotes)h(is)f(similar)h(to)h(the)e
+(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p
+Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 628 y(within)30
+b(double)g(quotes.)275 759 y(The)25 b Ft(unset)g Fu(builtin)g(is)h
(used)f(to)i(destro)m(y)f(arra)m(ys.)40 b Ft(unset)29
b Fj(name)p Ft([)p Fj(subscript)p Ft(])22 b Fu(destro)m(ys)k(the)g
-(arra)m(y)150 5011 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p
+(arra)m(y)150 868 y(elemen)m(t)40 b(at)e(index)g Fr(subscript)p
Fu(.)62 b(Negativ)m(e)41 b(subscripts)c(to)i(indexed)e(arra)m(ys)i(are)
-f(in)m(terpreted)h(as)f(de-)150 5121 y(scrib)s(ed)30
-b(ab)s(o)m(v)m(e.)42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f
-(an)g(arra)m(y)g(v)-5 b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5
-b(ariable.)150 5230 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h
-Fr(name)33 b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f
-(en)m(tire)h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p
-Ft(*)p Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 5340 y(remo)m(v)m(es)k
-(the)e(en)m(tire)i(arra)m(y)-8 b(.)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)275 299 y(When)35
-b(using)g(a)i(v)-5 b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i
-(an)g(argumen)m(t)g(to)h(a)f(command,)h(suc)m(h)f(as)150
-408 y(with)k Ft(unset)p Fu(,)h(without)e(using)h(the)g(w)m(ord)f
-(expansion)h(syn)m(tax)g(describ)s(ed)f(ab)s(o)m(v)m(e,)44
-b(the)c(argumen)m(t)g(is)150 518 y(sub)5 b(ject)25 b(to)h(the)g
-(shell's)g(\014lename)f(expansion.)39 b(If)25 b(\014lename)h(expansion)
-f(is)g(not)h(desired,)g(the)f(argumen)m(t)150 628 y(should)k(b)s(e)h
-(quoted.)275 773 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
-883 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 992 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 1102 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 1212 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
-1321 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150
-1579 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150
-1738 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m
+f(in)m(terpreted)h(as)f(de-)150 978 y(scrib)s(ed)30 b(ab)s(o)m(v)m(e.)
+42 b(Unsetting)31 b(the)g(last)g(elemen)m(t)h(of)f(an)g(arra)m(y)g(v)-5
+b(ariable)31 b(do)s(es)f(not)h(unset)f(the)h(v)-5 b(ariable.)150
+1087 y Ft(unset)29 b Fj(name)p Fu(,)e(where)h Fr(name)33
+b Fu(is)28 b(an)g(arra)m(y)-8 b(,)30 b(remo)m(v)m(es)f(the)f(en)m(tire)
+h(arra)m(y)-8 b(.)41 b(A)28 b(subscript)f(of)h(`)p Ft(*)p
+Fu(')g(or)g(`)p Ft(@)p Fu(')g(also)150 1197 y(remo)m(v)m(es)k(the)e(en)
+m(tire)i(arra)m(y)-8 b(.)275 1328 y(When)35 b(using)g(a)i(v)-5
+b(ariable)36 b(name)g(with)g(a)g(subscript)e(as)i(an)g(argumen)m(t)g
+(to)h(a)f(command,)h(suc)m(h)f(as)150 1438 y(with)k Ft(unset)p
+Fu(,)h(without)e(using)h(the)g(w)m(ord)f(expansion)h(syn)m(tax)g
+(describ)s(ed)f(ab)s(o)m(v)m(e,)44 b(the)c(argumen)m(t)g(is)150
+1547 y(sub)5 b(ject)25 b(to)h(the)g(shell's)g(\014lename)f(expansion.)
+39 b(If)25 b(\014lename)h(expansion)f(is)g(not)h(desired,)g(the)f
+(argumen)m(t)150 1657 y(should)k(b)s(e)h(quoted.)275
+1788 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e
+Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e
+Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 1897 y(arra)m(y)28
+b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f(an)h(asso)s(ciativ)m
+(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f
+Ft(-A)f Fu(tak)m(es)150 2007 y(precedence.)55 b(The)35
+b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign)
+f(a)g(list)h(of)f(w)m(ords)g(read)g(from)g(the)150 2116
+y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g
+(v)-5 b(alues)38 b(from)e(the)h(standard)g(input)f(in)m(to)i
+(individual)150 2226 y(arra)m(y)f(elemen)m(ts.)62 b(The)36
+b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g(arra)m(y)g
+(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150
+2336 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150
+2569 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150
+2729 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m
(tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g
-Fu(builtin)h(adds)g(directories)150 1848 y(to)42 b(the)f(stac)m(k)i(as)
+Fu(builtin)h(adds)g(directories)150 2838 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 1957 y(directories)29 b(from)f(the)h(stac)m(k)h(and)d(c)m(hanges)j
+150 2948 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 2067 y Ft(dirs)34 b Fu(builtin)g(displa)m(ys)h(the)g(con)m
+41 b(The)150 3058 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 2176
+b(curren)m(t)h(directory)g(is)g(alw)m(a)m(ys)150 3167
y(the)c Ft(")p Fu(top)p Ft(")f Fu(of)g(the)h(directory)g(stac)m(k.)275
-2322 y(The)k(con)m(ten)m(ts)i(of)f(the)h(directory)f(stac)m(k)h(are)f
+3298 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 2432 y(v)-5 b(ariable.)150
-2642 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
-2819 y Ft(dirs)870 2959 y(dirs)47 b([-clpv])e([+)p Fj(N)i
-Ft(|)h(-)p Fj(N)p Ft(])630 3099 y Fu(Displa)m(y)35 b(the)f(list)g(of)g
+Ft(DIRSTACK)e Fu(shell)150 3408 y(v)-5 b(ariable.)150
+3600 y Fk(6.8.1)63 b(Directory)40 b(Stac)m(k)g(Builtins)150
+3768 y Ft(dirs)870 3899 y(dirs)47 b([-clpv])e([+)p Fj(N)i
+Ft(|)h(-)p Fj(N)p Ft(])630 4030 y Fu(Displa)m(y)35 b(the)f(list)g(of)g
(curren)m(tly)g(remem)m(b)s(ered)f(directories.)51 b(Directories)36
-b(are)e(added)f(to)630 3209 y(the)28 b(list)h(with)f(the)g
+b(are)e(added)f(to)630 4140 y(the)28 b(list)h(with)f(the)g
Ft(pushd)f Fu(command;)i(the)f Ft(popd)f Fu(command)h(remo)m(v)m(es)h
-(directories)g(from)630 3319 y(the)i(list.)41 b(The)30
+(directories)g(from)630 4249 y(the)i(list.)41 b(The)30
b(curren)m(t)g(directory)h(is)f(alw)m(a)m(ys)i(the)f(\014rst)e
-(directory)i(in)f(the)h(stac)m(k.)630 3489 y Ft(-c)384
+(directory)i(in)f(the)h(stac)m(k.)630 4402 y Ft(-c)384
b Fu(Clears)31 b(the)f(directory)h(stac)m(k)h(b)m(y)e(deleting)h(all)h
-(of)e(the)h(elemen)m(ts.)630 3659 y Ft(-l)384 b Fu(Pro)s(duces)31
+(of)e(the)h(elemen)m(ts.)630 4554 y Ft(-l)384 b Fu(Pro)s(duces)31
b(a)h(listing)h(using)e(full)h(pathnames;)h(the)f(default)g(listing)h
-(format)1110 3769 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h
-(directory)-8 b(.)630 3940 y Ft(-p)384 b Fu(Causes)30
+(format)1110 4664 y(uses)d(a)h(tilde)g(to)g(denote)g(the)f(home)h
+(directory)-8 b(.)630 4816 y Ft(-p)384 b Fu(Causes)30
b Ft(dirs)f Fu(to)i(prin)m(t)f(the)h(directory)g(stac)m(k)h(with)e(one)
-g(en)m(try)h(p)s(er)e(line.)630 4110 y Ft(-v)384 b Fu(Causes)36
+g(en)m(try)h(p)s(er)e(line.)630 4968 y Ft(-v)384 b Fu(Causes)36
b Ft(dirs)f Fu(to)i(prin)m(t)f(the)g(directory)h(stac)m(k)h(with)e(one)
-h(en)m(try)f(p)s(er)f(line,)1110 4220 y(pre\014xing)30
+h(en)m(try)f(p)s(er)f(line,)1110 5078 y(pre\014xing)30
b(eac)m(h)h(en)m(try)g(with)f(its)h(index)e(in)i(the)f(stac)m(k.)630
-4390 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10
+5230 y Ft(+)p Fj(N)384 b Fu(Displa)m(ys)23 b(the)f Fr(N)10
b Fu(th)21 b(directory)h(\(coun)m(ting)h(from)e(the)h(left)g(of)g(the)g
-(list)g(prin)m(ted)1110 4500 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
-4670 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 4780 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 4950 y Ft(popd)870 5090 y(popd)47 b([-n])f([+)p
-Fj(N)h Ft(|)h(-)p Fj(N)p Ft(])630 5230 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 5340 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)p
+(list)g(prin)m(ted)1110 5340 y(b)m(y)30 b Ft(dirs)f Fu(when)h(in)m(v)m
+(ok)m(ed)i(without)e(options\),)h(starting)g(with)g(zero.)p
eop end
-%%Page: 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)630 299 y(0)33 b(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 408 y Ft(popd)c(+0)p Fu(.)630 570 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 679 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
-841 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 950 y(b)m(y)30 b Ft(dirs)p Fu(\),)g(starting)h
-(with)f(zero.)630 1111 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 1221 y(prin)m(ted)30
-b(b)m(y)g Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)150
-1382 y Ft(pushd)870 1518 y(pushd)46 b([-n])h([+)p Fj(N)g
-Ft(|)g Fj(-N)h Ft(|)f Fj(dir)p Ft(])630 1653 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
-1763 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
-1872 y(new)30 b(top)g(the)h(curren)m(t)f(directory)-8
-b(.)630 2033 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
-2143 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 2304 y Ft(+)p Fj(N)384
+%%Page: 98 104
+TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2484 b(98)630 299 y Ft(-)p
+Fj(N)384 b Fu(Displa)m(ys)47 b(the)g Fr(N)10 b Fu(th)46
+b(directory)h(\(coun)m(ting)g(from)f(the)g(righ)m(t)h(of)g(the)f(list)
+1110 408 y(prin)m(ted)25 b(b)m(y)g Ft(dirs)g Fu(when)f(in)m(v)m(ok)m
+(ed)j(without)f(options\),)h(starting)g(with)e(zero.)150
+583 y Ft(popd)870 725 y(popd)47 b([-n])f([+)p Fj(N)h
+Ft(|)h(-)p Fj(N)p Ft(])630 867 y Fu(When)32 b(no)g(argumen)m(ts)h(are)g
+(giv)m(en,)h Ft(popd)d Fu(remo)m(v)m(es)j(the)f(top)f(directory)h(from)
+f(the)g(stac)m(k)630 977 y(and)f(p)s(erforms)e(a)j Ft(cd)f
+Fu(to)h(the)f(new)g(top)h(directory)-8 b(.)44 b(The)31
+b(elemen)m(ts)i(are)e(n)m(um)m(b)s(ered)f(from)630 1086
+y(0)j(starting)g(at)g(the)f(\014rst)g(directory)g(listed)h(with)f
+Ft(dirs)p Fu(;)g(that)h(is,)g Ft(popd)e Fu(is)i(equiv)-5
+b(alen)m(t)33 b(to)630 1196 y Ft(popd)c(+0)p Fu(.)630
+1370 y Ft(-n)384 b Fu(Suppresses)27 b(the)j(normal)g(c)m(hange)g(of)g
+(directory)g(when)e(remo)m(ving)j(directo-)1110 1480
+y(ries)f(from)g(the)h(stac)m(k,)h(so)f(that)g(only)f(the)h(stac)m(k)g
+(is)g(manipulated.)630 1655 y Ft(+)p Fj(N)384 b Fu(Remo)m(v)m(es)22
+b(the)f Fr(N)10 b Fu(th)20 b(directory)g(\(coun)m(ting)i(from)e(the)g
+(left)h(of)g(the)f(list)h(prin)m(ted)1110 1764 y(b)m(y)30
+b Ft(dirs)p Fu(\),)g(starting)h(with)f(zero.)630 1939
+y Ft(-)p Fj(N)384 b Fu(Remo)m(v)m(es)46 b(the)g Fr(N)10
+b Fu(th)44 b(directory)h(\(coun)m(ting)h(from)f(the)g(righ)m(t)g(of)g
+(the)g(list)1110 2048 y(prin)m(ted)30 b(b)m(y)g Ft(dirs)p
+Fu(\),)g(starting)h(with)f(zero.)150 2223 y Ft(pushd)870
+2365 y(pushd)46 b([-n])h([+)p Fj(N)g Ft(|)g Fj(-N)h Ft(|)f
+Fj(dir)p Ft(])630 2507 y Fu(Sa)m(v)m(e)30 b(the)e(curren)m(t)g
+(directory)h(on)f(the)h(top)f(of)h(the)f(directory)h(stac)m(k)h(and)e
+(then)g Ft(cd)f Fu(to)i Fr(dir)p Fu(.)630 2617 y(With)39
+b(no)f(argumen)m(ts,)j Ft(pushd)c Fu(exc)m(hanges)j(the)f(top)f(t)m(w)m
+(o)i(directories)g(and)d(mak)m(es)j(the)630 2726 y(new)30
+b(top)g(the)h(curren)m(t)f(directory)-8 b(.)630 2901
+y Ft(-n)384 b Fu(Suppresses)24 b(the)j(normal)f(c)m(hange)h(of)g
+(directory)f(when)g(rotating)h(or)f(adding)1110 3010
+y(directories)31 b(to)h(the)e(stac)m(k,)i(so)f(that)g(only)f(the)h
+(stac)m(k)h(is)e(manipulated.)630 3185 y Ft(+)p Fj(N)384
b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g(\(coun)m(ting)h
(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110
-2414 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)
+3295 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)
f(top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110
-2523 y(stac)m(k.)630 2685 y Ft(-)p Fj(N)384 b Fu(Brings)23
+3404 y(stac)m(k.)630 3579 y Ft(-)p Fj(N)384 b Fu(Brings)23
b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i
-(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 2794 y(b)m(y)34
+(righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 3688 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 2904 y(stac)m(k.)630
-3065 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27
+(the)f(list)h(b)m(y)f(rotating)i(the)1110 3798 y(stac)m(k.)630
+3972 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27
b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m
-(t)g(direc-)1110 3175 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied)
+(t)g(direc-)1110 4082 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied)
f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150
-3418 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150
-3578 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 3687 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 3797 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 3933 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
-4043 y(prompt)g(v)-5 b(ariables)32 b Ft(PS0)p Fu(,)d
-Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f Ft(PS4)p Fu(:)150
-4205 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m(haracter.)150
-4366 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
-4527 y Ft(\\D{)p Fj(format)p Ft(})630 4637 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
-4747 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 4856 y(braces)31 b(are)f(required.)150 5017
-y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150
-5179 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
-(`.'.)150 5340 y Ft(\\H)384 b Fu(The)30 b(hostname.)p
-eop end
-%%Page: 98 104
-TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(98)150 299 y Ft(\\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 489 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f
-(the)h(shell's)f(terminal)h(device)g(name.)150 678 y
-Ft(\\n)384 b Fu(A)30 b(newline.)150 868 y Ft(\\r)384
-b Fu(A)30 b(carriage)i(return.)150 1058 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 1248 y Ft(\\t)384 b Fu(The)30 b(time,)h(in)f(24-hour)h
-(HH:MM:SS)g(format.)150 1437 y Ft(\\T)384 b Fu(The)30
-b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)150 1627
-y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f(format.)150
-1817 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h(HH:MM)g(format.)
-150 2006 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g(the)h(curren)m(t)f
-(user.)150 2196 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h
-(\(e.g.,)h(2.00\))150 2386 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 2576 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 2685 y Ft($PROMPT_DIRTRIM)26
-b Fu(v)-5 b(ariable\).)150 2875 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 3065 y Ft(\\!)384
-b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f(command.)150
-3254 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er)f(of)i(this)f
-(command.)150 3444 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
-3634 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 3824 y Ft(\\\\)384 b Fu(A)30 b(bac)m(kslash.)150
-4013 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 4123 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e
-(prompt.)150 4313 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f
-(non-prin)m(ting)g(c)m(haracters.)275 4518 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
-4627 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
-4737 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(141\),)j(while)d(the)f
-(command)150 4846 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 4956 y(session.)275 5121 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 5230 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 5340 y Fu(shell)31
-b(option)f(\(see)i(Section)f(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(65\).)p eop end
+4345 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150
+4505 y Fu(Bash)33 b(examines)h(the)f(v)-5 b(alue)33 b(of)h(the)f(arra)m
+(y)g(v)-5 b(ariable)34 b Ft(PROMPT_COMMANDS)29 b Fu(just)j(b)s(efore)h
+(prin)m(ting)g(eac)m(h)150 4614 y(primary)c(prompt.)40
+b(If)30 b(an)m(y)g(elemen)m(ts)i(in)e Ft(PROMPT_COMMANDS)c
+Fu(are)31 b(set)f(and)g(non-n)m(ull,)g(Bash)h(executes)150
+4724 y(eac)m(h)h(v)-5 b(alue,)31 b(in)f(n)m(umeric)g(order,)g(just)g
+(as)g(if)h(it)g(had)e(b)s(een)h(t)m(yp)s(ed)g(on)g(the)h(command)f
+(line.)275 4874 y(In)d(addition,)j(the)f(follo)m(wing)h(table)f
+(describ)s(es)f(the)h(sp)s(ecial)g(c)m(haracters)h(whic)m(h)f(can)f
+(app)s(ear)g(in)h(the)150 4983 y(prompt)g(v)-5 b(ariables)32
+b Ft(PS0)p Fu(,)d Ft(PS1)p Fu(,)h Ft(PS2)p Fu(,)g(and)f
+Ft(PS4)p Fu(:)150 5165 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m
+(haracter.)150 5340 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f
+Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h
+Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p
+Ft(")p Fu(\).)p eop end
%%Page: 99 105
TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Fs(6.10)68
-b(The)45 b(Restricted)h(Shell)150 458 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
-568 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 677 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 787 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 931 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g
-(the)f Ft(cd)g Fu(builtin.)225 1070 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 1210 y Fq(\017)60
-b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225
-1349 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 1488 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 1598 y Fu(builtin)e(command.)225 1737 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 1876 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
-2016 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 2155 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 2294 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 2433 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 2573 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
-2712 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 2886 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m
-(y)g(startup)f(\014les)g(are)h(read.)275 3030 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 3139 y(Scripts],)25
-b(page)e(41\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h
-(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)150
-3394 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 3554
-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 3663 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 3773 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
-3917 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
-4061 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 4205
-y(1.)61 b(Bash)31 b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d
-Fu(v)-5 b(ariable)31 b(is)f(set.)199 4345 y(2.)61 b(When)28
-b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)
-f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330
-4454 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 4593 y(3.)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 4703 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199
-4842 y(4.)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 4952 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 5091 y(5.)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
-5230 y(6.)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 5340 y(undergo)30 b(alias)h(expansion.)p eop end
+b(Bash)30 b(F)-8 b(eatures)2484 b(99)150 299 y Ft(\\D{)p
+Fj(format)p Ft(})630 408 y Fu(The)27 b Fr(format)i Fu(is)f(passed)e(to)
+i Ft(strftime)p Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m
+(to)h(the)g(prompt)630 518 y(string;)42 b(an)d(empt)m(y)f
+Fr(format)j Fu(results)d(in)g(a)h(lo)s(cale-sp)s(eci\014c)h(time)f
+(represen)m(tation.)65 b(The)630 628 y(braces)31 b(are)f(required.)150
+790 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150
+952 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e
+(`.'.)150 1114 y Ft(\\H)384 b Fu(The)30 b(hostname.)150
+1276 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m
+(tly)h(managed)g(b)m(y)f(the)g(shell.)150 1438 y Ft(\\l)384
+b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g
+(name.)150 1600 y Ft(\\n)384 b Fu(A)30 b(newline.)150
+1763 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150
+1925 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f
+(basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f
+(\014nal)e(slash\).)150 2087 y Ft(\\t)384 b Fu(The)30
+b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 2249
+y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.)
+150 2411 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f
+(format.)150 2573 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h
+(HH:MM)g(format.)150 2735 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g
+(the)h(curren)m(t)f(user.)150 2898 y Ft(\\v)384 b Fu(The)30
+b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 3060
+y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g
+Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))150 3222
+y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8
+b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f
+(the)630 3331 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150
+3494 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p
+Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150
+3656 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f
+(command.)150 3818 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s
+(er)f(of)i(this)f(command.)150 3980 y Ft(\\$)384 b Fu(If)30
+b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g
+Ft($)p Fu(.)150 4142 y Ft(\\)p Fj(nnn)288 b Fu(The)30
+b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v)
+-5 b(alue)31 b Fr(nnn)p Fu(.)150 4304 y Ft(\\\\)384 b
+Fu(A)30 b(bac)m(kslash.)150 4466 y Ft(\\[)384 b Fu(Begin)38
+b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61
+b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630
+4576 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.)
+150 4738 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m
+(ting)g(c)m(haracters.)275 4902 y(The)25 b(command)h(n)m(um)m(b)s(er)f
+(and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m
+(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 5011
+y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f
+(list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150
+5121 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e
+(History)h(F)-8 b(acilities],)45 b(page)40 b(146\),)j(while)d(the)f
+(command)150 5230 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g
+(the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t)
+f(shell)150 5340 y(session.)p eop end
%%Page: 100 106
TeXDict begin 100 105 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(100)199 299 y(7.)61
+b(Bash)30 b(F)-8 b(eatures)2439 b(100)275 299 y(After)28
+b(the)g(string)g(is)g(deco)s(ded,)g(it)g(is)g(expanded)f(via)i
+(parameter)f(expansion,)h(command)f(substitu-)150 408
+y(tion,)g(arithmetic)f(expansion,)g(and)e(quote)i(remo)m(v)-5
+b(al,)29 b(sub)5 b(ject)25 b(to)i(the)f(v)-5 b(alue)27
+b(of)f(the)g Ft(promptvars)e Fu(shell)150 518 y(option)i(\(see)h
+(Section)g(4.3.2)g([The)f(Shopt)f(Builtin],)j(page)e(66\).)41
+b(This)25 b(can)h(ha)m(v)m(e)h(un)m(w)m(an)m(ted)f(side)g(e\013ects)150
+628 y(if)i(escap)s(ed)f(p)s(ortions)g(of)h(the)g(string)f(app)s(ear)g
+(within)g(command)h(substitution)f(or)h(con)m(tain)g(c)m(haracters)150
+737 y(sp)s(ecial)j(to)g(w)m(ord)f(expansion.)150 1015
+y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 1174 y
+Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h
+Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k
+Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 1284 y(in)m(v)m(o)s(cation,)
+d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h
+(shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150
+1393 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40
+b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f
+Ft(bash)e Fu(with)150 1503 y(the)31 b(exception)g(that)g(the)g(follo)m
+(wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225
+1662 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f
+Ft(cd)g Fu(builtin.)225 1809 y Fq(\017)60 b Fu(Setting)33
+b(or)g(unsetting)f(the)h(v)-5 b(alues)33 b(of)f(the)h
+Ft(SHELL)p Fu(,)f Ft(PATH)p Fu(,)g Ft(HISTFILE)p Fu(,)f
+Ft(ENV)p Fu(,)h(or)g Ft(BASH_ENV)e Fu(v)-5 b(ari-)330
+1919 y(ables.)225 2065 y Fq(\017)60 b Fu(Sp)s(ecifying)30
+b(command)g(names)g(con)m(taining)i(slashes.)225 2212
+y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m(taining)i
+(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f Ft(.)h
+Fu(builtin)e(command.)225 2359 y Fq(\017)60 b Fu(Sp)s(ecifying)33
+b(a)i(\014lename)f(con)m(taining)h(a)g(slash)e(as)i(an)e(argumen)m(t)i
+(to)g(the)f Ft(history)e Fu(builtin)h(com-)330 2469 y(mand.)225
+2615 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m
+(taining)h(a)e(slash)g(as)h(an)f(argumen)m(t)h(to)g(the)f
+Ft(-p)g Fu(option)h(to)g(the)f Ft(hash)330 2725 y Fu(builtin)e
+(command.)225 2872 y Fq(\017)60 b Fu(Imp)s(orting)30
+b(function)g(de\014nitions)g(from)f(the)i(shell)g(en)m(vironmen)m(t)g
+(at)g(startup.)225 3018 y Fq(\017)60 b Fu(P)m(arsing)31
+b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g
+(en)m(vironmen)m(t)g(at)g(startup.)225 3165 y Fq(\017)60
+b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p
+Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p
+Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p Fu(')i(redirection)g(op)s
+(erators.)225 3312 y Fq(\017)60 b Fu(Using)31 b(the)f
+Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e(shell)h(with)f(another)h
+(command.)225 3459 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i
+(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g
+Fu(options)h(to)h(the)e Ft(enable)f Fu(builtin.)225 3606
+y Fq(\017)60 b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g
+(to)h(enable)g(disabled)f(shell)g(builtins.)225 3752
+y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g
+(the)g Ft(command)d Fu(builtin.)225 3899 y Fq(\017)60
+b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de)f(with)g(`)p
+Ft(set)g(+r)p Fu(')g(or)g(`)p Ft(set)g(+o)g(restricted)p
+Fu('.)275 4096 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m
+(y)g(startup)f(\014les)g(are)h(read.)275 4255 y(When)j(a)i(command)e
+(that)i(is)f(found)f(to)h(b)s(e)g(a)g(shell)g(script)g(is)g(executed)h
+(\(see)g(Section)g(3.8)g([Shell)150 4364 y(Scripts],)25
+b(page)e(42\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h
+(in)f(the)g(shell)h(spa)m(wned)e(to)i(execute)g(the)g(script.)275
+4523 y(The)42 b(restricted)h(shell)g(mo)s(de)f(is)g(only)h(one)g(comp)s
+(onen)m(t)f(of)h(a)g(useful)f(restricted)h(en)m(vironmen)m(t.)150
+4633 y(It)36 b(should)g(b)s(e)f(accompanied)j(b)m(y)e(setting)h
+Ft(PATH)e Fu(to)i(a)g(v)-5 b(alue)37 b(that)g(allo)m(ws)g(execution)h
+(of)e(only)h(a)f(few)150 4743 y(v)m(eri\014ed)26 b(commands)g
+(\(commands)g(that)h(allo)m(w)h(shell)f(escap)s(es)f(are)h
+(particularly)g(vulnerable\),)g(lea)m(ving)150 4852 y(the)i(user)f(in)h
+(a)g(non-writable)h(directory)f(other)g(than)g(his)g(home)g(directory)g
+(after)h(login,)g(not)f(allo)m(wing)150 4962 y(the)j(restricted)g
+(shell)g(to)g(execute)h(shell)e(scripts,)h(and)f(cleaning)i(the)e(en)m
+(vironmen)m(t)i(of)e(v)-5 b(ariables)32 b(that)150 5071
+y(cause)f(some)g(commands)f(to)h(mo)s(dify)e(their)i(b)s(eha)m(vior)f
+(\(e.g.,)j Ft(VISUAL)28 b Fu(or)j Ft(PAGER)p Fu(\).)275
+5230 y(Mo)s(dern)e(systems)g(pro)m(vide)h(more)g(secure)g(w)m(a)m(ys)g
+(to)h(implemen)m(t)f(a)g(restricted)h(en)m(vironmen)m(t,)f(suc)m(h)150
+5340 y(as)h Ft(jails)p Fu(,)e Ft(zones)p Fu(,)g(or)h
+Ft(containers)p Fu(.)p eop end
+%%Page: 101 107
+TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(101)150 299 y Fs(6.11)68
+b(Bash)45 b(POSIX)f(Mo)t(de)150 458 y Fu(Starting)39
+b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f
+(executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150
+568 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f
+(more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m
+(hanging)150 677 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g(sp)
+s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h(Bash)f
+(default)h(di\013ers.)275 810 y(When)f(in)m(v)m(ok)m(ed)h(as)g
+Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h
+(reading)g(the)f(startup)g(\014les.)275 942 y(The)f(follo)m(wing)j
+(list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h
+Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1074 y(1.)61 b(Bash)31
+b(ensures)e(that)i(the)f Ft(POSIXLY_CORRECT)d Fu(v)-5
+b(ariable)31 b(is)f(set.)199 1206 y(2.)61 b(When)28 b(a)i(command)e(in)
+g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash)f(will)g(re-searc)m
+(h)h Ft($PATH)d Fu(to)i(\014nd)330 1316 y(the)i(new)e(lo)s(cation.)43
+b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p
+Ft(shopt)f(-s)h(checkhash)p Fu('.)199 1448 y(3.)61 b(Bash)36
+b(will)g(not)g(insert)g(a)g(command)f(without)h(the)g(execute)h(bit)f
+(set)g(in)m(to)h(the)f(command)g(hash)330 1558 y(table,)c(ev)m(en)f(if)
+f(it)h(returns)e(it)i(as)g(a)f(\(last-ditc)m(h\))j(result)d(from)g(a)h
+Ft($PATH)e Fu(searc)m(h.)199 1690 y(4.)61 b(The)42 b(message)h(prin)m
+(ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h
+(when)f(a)h(job)g(exits)h(with)f(a)330 1800 y(non-zero)31
+b(status)g(is)f(`Done\(status\)'.)199 1932 y(5.)61 b(The)40
+b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con)m(trol)h(co)s(de)g
+(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e(is)330
+2041 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f
+Fr(signame)36 b Fu(is,)31 b(for)f(example,)h Ft(SIGTSTP)p
+Fu(.)199 2174 y(6.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i
+(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199
+2306 y(7.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con)
+m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not)
+330 2415 y(undergo)30 b(alias)h(expansion.)199 2548 y(8.)61
b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i
(`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p
-Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 408 y(enabled,)26
+Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2657 y(enabled,)26
b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5
b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330
-518 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c
-Fu(option.)199 651 y(8.)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 783 y(9.)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 893 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h(on)
-e(the)h(line.)154 1026 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 1158 y(11.)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
-1268 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
-1401 y(12.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e
+2767 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c
+Fu(option.)199 2899 y(9.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les)
+i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal)
+f(Bash)g(\014les.)154 3031 y(10.)61 b(Tilde)30 b(expansion)g(is)f(only)
+h(p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)
+g(rather)330 3141 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h
+(on)e(the)h(line.)154 3273 y(11.)61 b(The)30 b(default)g(history)h
+(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default)
+g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3405
+y(12.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f
+(\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection)
+330 3515 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154
+3647 y(13.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e
(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154
-1533 y(13.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5
+3779 y(14.)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 1643 y(other)e(than)g(letters,)h
+g(not)g(con)m(tain)g(c)m(haracters)330 3889 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 1752 y(a)31 b(function)f(with)g(an)g(in)m(v)
+(digit.)49 b(Declaring)330 3999 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 1885 y(14.)61 b(F)-8
+(non-in)m(teractiv)m(e)j(shells.)154 4131 y(15.)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
-2018 y(15.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e
+4263 y(16.)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
-2150 y(16.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f
+4395 y(17.)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 2260 y Ft(function)28
-b Fu(k)m(eyw)m(ord.)154 2393 y(17.)61 b(Literal)28 b(tildes)g(that)f
+(es)f(not)h(prin)m(t)f(the)330 4505 y Ft(function)28
+b Fu(k)m(eyw)m(ord.)154 4637 y(18.)61 b(Literal)28 b(tildes)g(that)f
(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
-2502 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
-i(3.5.2)h([Tilde)f(Expansion],)f(page)h(23.)154 2635
-y(18.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s
+4747 y(expanded)i(as)g(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)
+i(3.5.2)h([Tilde)f(Expansion],)f(page)h(24.)154 4879
+y(19.)61 b(The)29 b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s
(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 2744 y(it)33
+b(used)f(in)g(this)h(w)m(a)m(y)-8 b(,)330 4989 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
-2854 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f
-(timing)h(information.)154 2987 y(19.)61 b(When)33 b(parsing)g(and)f
+5098 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f
+(timing)h(information.)154 5230 y(20.)61 b(When)33 b(parsing)g(and)f
(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
-3096 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
-3206 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 3315 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
-3448 y(20.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
+5340 y(single)42 b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f
+(cannot)i(b)s(e)e(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)p
+eop end
+%%Page: 102 108
+TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(102)330 299 y(other)31
+b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f(is)g(one)h
+(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330
+408 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h
+(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154
+547 y(21.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h
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 3558 y(`)p Ft(-)p Fu('.)154
-3690 y(21.)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 3800 y(ev)m(en)g(if)f(the)h
-Ft(histexpand)d Fu(option)i(is)h(enabled.)154 3933 y(22.)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 4042 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 4152 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 4261 y(command)30 b(name,)h(and)f(so)g(on.)154
-4394 y(23.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e
+(en)h(b)s(egins)d(with)i(a)330 656 y(`)p Ft(-)p Fu('.)154
+795 y(22.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e(not)
+h(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h(double-quoted)g
+(string,)330 905 y(ev)m(en)g(if)f(the)h Ft(histexpand)d
+Fu(option)i(is)h(enabled.)154 1043 y(23.)61 b(If)24 b(a)g
+Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h(error)g(status,)i
+(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 b(The)24
+b(fatal)330 1153 y(errors)30 b(are)h(those)f(listed)h(in)f(the)h
+Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i(passing)e
+(incorrect)330 1262 y(options,)43 b(redirection)d(errors,)i(v)-5
+b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i
+(preceding)f(the)330 1372 y(command)30 b(name,)h(and)f(so)g(on.)154
+1510 y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e
(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 4504 y(when)38 b(no)h(command)g(name)g(follo)m
+(error)e(o)s(ccurs)330 1620 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 4613 y(error)30
+b(v)-5 b(ariable)40 b(assignmen)m(t)330 1729 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 4746
-y(24.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h
+b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 1868
+y(25.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h
(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e
-(o)s(ccurs)330 4855 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g
+(o)s(ccurs)330 1977 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g
(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f
-(other)h(simple)330 4965 y(command.)154 5098 y(25.)61
+(other)h(simple)330 2087 y(command.)154 2225 y(26.)61
b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h
(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g
-Ft(for)330 5207 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5
+Ft(for)330 2335 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5
b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f
-(readonly)h(v)-5 b(ariable.)154 5340 y(26.)61 b(Non-in)m(teractiv)m(e)
+(readonly)h(v)-5 b(ariable.)154 2473 y(27.)61 b(Non-in)m(teractiv)m(e)
34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b
-Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)p eop
-end
-%%Page: 101 107
-TeXDict begin 101 106 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(101)154 299 y(27.)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
-408 y(in)m(v)-5 b(alid)31 b(expression.)154 541 y(28.)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 674 y(29.)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
-783 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 916 y(30.)61 b(Pro)s(cess)30
-b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 1049
-y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5
-b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p
-Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
-1158 y(parameters.)154 1291 y(32.)61 b(When)28 b(expanding)g(the)g(`)p
+Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154
+2612 y(28.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g
+(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h
+(an)330 2721 y(in)m(v)-5 b(alid)31 b(expression.)154
+2860 y(29.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g(a)f
+(parameter)h(expansion)g(error)f(o)s(ccurs.)154 2998
+y(30.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f
+(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f
+Ft(.)g Fu(or)h Ft(source)330 3108 y Fu(builtins,)30 b(or)g(in)g(a)h
+(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154
+3246 y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m
+(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h
+(`)p Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330
+3356 y(parameters.)154 3494 y(32.)61 b(When)28 b(expanding)g(the)g(`)p
Ft(*)p Fu(')g(sp)s(ecial)h(parameter)f(in)g(a)h(pattern)f(con)m(text)i
-(where)e(the)g(expansion)g(is)330 1401 y(double-quoted)i(do)s(es)g(not)
+(where)e(the)g(expansion)g(is)330 3604 y(double-quoted)i(do)s(es)g(not)
h(treat)h(the)e Ft($*)g Fu(as)h(if)f(it)h(w)m(ere)g(double-quoted.)154
-1533 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e
+3742 y(33.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e
Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s(ersist)g(in)f(the)i(shell)f
-(en)m(vironmen)m(t)330 1643 y(after)31 b(the)f(builtin)g(completes.)154
-1775 y(34.)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 1885 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 2018 y(35.)61 b(The)31 b Ft(command)e
-Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)
-h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 2127 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 2237
-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 2346
-y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 2479 y(36.)61
-b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g
-(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330
-2589 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f
-(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)154
-2721 y(37.)61 b(The)23 b(output)f(of)i(`)p Ft(kill)29
-b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h
-(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 2831
-y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
-2964 y(38.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)
+(en)m(vironmen)m(t)330 3852 y(after)31 b(the)f(builtin)g(completes.)154
+3990 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s(es)g(not)h
+(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e)h(assignmen)m(t)f(statemen)m
+(ts)h(as)f(ar-)330 4100 y(gumen)m(ts)40 b(from)e(expanding)h(them)g(as)
+h(assignmen)m(t)g(statemen)m(ts;)46 b(when)38 b(not)i(in)f
+Fm(posix)f Fu(mo)s(de,)330 4209 y(assignmen)m(t)k(builtins)e(lose)h
+(their)g(assignmen)m(t)h(statemen)m(t)h(expansion)d(prop)s(erties)g
+(when)g(pre-)330 4319 y(ceded)31 b(b)m(y)f Ft(command)p
+Fu(.)154 4457 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h
+(required)f(format)h(to)g(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f
+(the)h(bac)m(kground,)330 4567 y(whic)m(h)h(do)s(es)g(not)g(include)g
+(an)g(indication)h(of)f(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e
+(or)h(previous)g(job.)154 4706 y(36.)61 b(The)23 b(output)f(of)i(`)p
+Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g
+(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g(spaces,)330
+4815 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
+4954 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept)
h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154
-3096 y(39.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f
+5092 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 3206 y(quired)30 b(b)m(y)g Fm(posix)p
-Fu(.)154 3339 y(40.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g
+(format)g(re-)330 5202 y(quired)30 b(b)m(y)g Fm(posix)p
+Fu(.)154 5340 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g
(signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p
-Fu(.)154 3471 y(41.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g
-(c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e
-(signal)i(sp)s(eci\014cation)330 3581 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 3690 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
-3800 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
+Fu(.)p eop end
+%%Page: 103 109
+TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(103)154 299 y(40.)61
+b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g(c)m(hec)m(k)h(the)g
+(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e(signal)i(sp)s
+(eci\014cation)330 408 y(and)30 b(rev)m(ert)i(the)e(signal)i(handling)e
+(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g(is,)g(unless)f(that)h
+(argumen)m(t)330 518 y(consists)e(solely)g(of)g(digits)g(and)f(is)g(a)h
+(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 b(If)28
+b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330
+628 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s
(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst)
-f(argumen)m(t.)154 3933 y(42.)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
-4042 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 4175 y(43.)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
-4284 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 4394 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 4504 y Fu(option)31
-b(in)f(suc)m(h)g(subshells.)154 4636 y(44.)61 b(Enabling)32
-b Fm(posix)f Fu(mo)s(de)h(has)g(the)h(e\013ect)g(of)g(setting)g(the)g
-Ft(shift_verbose)28 b Fu(option,)34 b(so)e(n)m(umeric)330
-4746 y(argumen)m(ts)f(to)g Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m
-(b)s(er)g(of)h(p)s(ositional)g(parameters)g(will)g(result)g(in)f(an)330
-4855 y(error)g(message.)154 4988 y(45.)61 b(When)43 b(the)g
+f(argumen)m(t.)154 765 y(41.)61 b Ft(trap)29 b(-p)35
+b Fu(displa)m(ys)h(signals)h(whose)f(disp)s(ositions)f(are)h(set)h(to)f
+(SIG)p 2687 765 28 4 v 40 w(DFL)g(and)g(those)g(that)g(w)m(ere)330
+874 y(ignored)30 b(when)g(the)g(shell)h(started.)154
+1011 y(42.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f
+Fu(builtins)h(do)g(not)h(searc)m(h)h(the)f(curren)m(t)f(directory)h
+(for)g(the)g(\014lename)f(argumen)m(t)330 1121 y(if)30
+b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g Ft(PATH)p
+Fu(.)154 1258 y(43.)61 b(Enabling)21 b Fm(posix)g Fu(mo)s(de)g(has)g
+(the)g(e\013ect)i(of)e(setting)i(the)e Ft(inherit_errexit)d
+Fu(option,)23 b(so)f(subshells)330 1367 y(spa)m(wned)27
+b(to)i(execute)g(command)e(substitutions)h(inherit)f(the)h(v)-5
+b(alue)28 b(of)g(the)g Ft(-e)f Fu(option)h(from)g(the)330
+1477 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c
+Fu(option)38 b(is)f(not)h(enabled,)h(Bash)e(clears)h(the)g
+Ft(-e)330 1587 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)154
+1724 y(44.)61 b(Enabling)32 b Fm(posix)f Fu(mo)s(de)h(has)g(the)h
+(e\013ect)g(of)g(setting)g(the)g Ft(shift_verbose)28
+b Fu(option,)34 b(so)e(n)m(umeric)330 1833 y(argumen)m(ts)f(to)g
+Ft(shift)f Fu(that)h(exceed)h(the)e(n)m(um)m(b)s(er)g(of)h(p)s
+(ositional)g(parameters)g(will)g(result)g(in)f(an)330
+1943 y(error)g(message.)154 2080 y(45.)61 b(When)43 b(the)g
Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g(de\014nitions,)i(it)d(do)
-s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 5098 y(leading)31
+s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 2189 y(leading)31
b(`)p Ft(alias)e Fu(')i(unless)f(the)g Ft(-p)g Fu(option)h(is)f
-(supplied.)154 5230 y(46.)61 b(When)40 b(the)g Ft(set)f
+(supplied.)154 2326 y(46.)61 b(When)40 b(the)g Ft(set)f
Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h(without)f(options,)j(it)e(do)s(es)
-f(not)g(displa)m(y)g(shell)g(function)330 5340 y(names)30
-b(and)g(de\014nitions.)p eop end
-%%Page: 102 108
-TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(6:)41
-b(Bash)30 b(F)-8 b(eatures)2439 b(102)154 299 y(47.)61
-b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i
-(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37
-b(v)-5 b(alues)37 b(without)330 408 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 518 y(c)m(haracters.)154
-653 y(48.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m
-(ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g
-(constructed)g(from)330 762 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 872 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 1006 y(49.)61 b(When)37
-b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m(hange)h(a)f(directory)g(b)s
-(ecause)g(the)g(length)g(of)f(the)h(pathname)330 1116
-y(constructed)52 b(from)f Ft($PWD)f Fu(and)g(the)i(directory)g(name)f
-(supplied)f(as)i(an)f(argumen)m(t)h(exceeds)330 1225
-y Fr(P)-8 b(A)g(TH)p 584 1225 28 4 v 41 w(MAX)42 b Fu(when)31
-b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,)h Ft(cd)f
-Fu(will)g(fail)h(instead)g(of)g(attempting)330 1335 y(to)e(use)f(only)h
-(the)f(supplied)f(directory)i(name.)154 1469 y(50.)61
-b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5
-b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f
-(directory)-8 b(,)330 1579 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 1714 y(51.)61 b(When)35 b(listing)g(the)g
-(history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h
-(include)g(an)f(indication)i(of)f(whether)f(or)330 1823
-y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154
-1958 y(52.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g
-Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 2092 y(53.)61 b(The)37
-b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort)
-f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
-2202 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
+f(not)g(displa)m(y)g(shell)g(function)330 2436 y(names)30
+b(and)g(de\014nitions.)154 2573 y(47.)61 b(When)36 b(the)g
+Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok)m(ed)i(without)e(options,)i(it)f
+(displa)m(ys)f(v)-5 b(ariable)37 b(v)-5 b(alues)37 b(without)330
+2682 y(quotes,)26 b(unless)d(they)i(con)m(tain)g(shell)f(metac)m
+(haracters,)k(ev)m(en)d(if)f(the)g(result)g(con)m(tains)i(nonprin)m
+(ting)330 2792 y(c)m(haracters.)154 2929 y(48.)61 b(When)35
+b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)i(in)d
+Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g(constructed)g
+(from)330 3039 y Ft($PWD)i Fu(and)h(the)h(directory)f(name)h(supplied)e
+(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g(an)f(existing)330
+3148 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f
+(falling)h(bac)m(k)h(to)f Fr(ph)m(ysical)j Fu(mo)s(de.)154
+3285 y(49.)61 b(When)37 b(the)h Ft(cd)f Fu(builtin)g(cannot)h(c)m
+(hange)h(a)f(directory)g(b)s(ecause)g(the)g(length)g(of)f(the)h
+(pathname)330 3395 y(constructed)52 b(from)f Ft($PWD)f
+Fu(and)g(the)i(directory)g(name)f(supplied)f(as)i(an)f(argumen)m(t)h
+(exceeds)330 3504 y Fr(P)-8 b(A)g(TH)p 584 3504 V 41
+w(MAX)42 b Fu(when)31 b(all)j(sym)m(b)s(olic)e(links)h(are)f(expanded,)
+h Ft(cd)f Fu(will)g(fail)h(instead)g(of)g(attempting)330
+3614 y(to)e(use)f(only)h(the)f(supplied)f(directory)i(name.)154
+3751 y(50.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g
+(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h
+(curren)m(t)f(directory)-8 b(,)330 3861 y(ev)m(en)31
+b(if)f(it)h(is)g(not)f(ask)m(ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f
+(system)h(with)f(the)h Ft(-P)e Fu(option.)154 3998 y(51.)61
+b(When)35 b(listing)g(the)g(history)-8 b(,)36 b(the)f
+Ft(fc)g Fu(builtin)f(do)s(es)g(not)h(include)g(an)f(indication)i(of)f
+(whether)f(or)330 4107 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g
+(mo)s(di\014ed.)154 4244 y(52.)61 b(The)30 b(default)g(editor)h(used)f
+(b)m(y)g Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 4381 y(53.)61
+b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g
+(rep)s(ort)f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
+4491 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g
(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 2311 y(found)i(in)h Ft($PATH)p Fu(.)154
-2446 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
+g(\014le)330 4600 y(found)i(in)h Ft($PATH)p Fu(.)154
+4737 y(54.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m
(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 2555 y(instead)e(of)f(c)m(hec)m
-(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 2690
+Ft(v)p Fu(')f(command)g(is)g(run,)330 4847 y(instead)e(of)f(c)m(hec)m
+(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 4984
y(55.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j
(Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330
-2800 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54
+5093 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 2909 y(con)m(v)m(erted.)154
-3044 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
+g(c)m(haracters)h(are)330 5203 y(con)m(v)m(erted.)154
+5340 y(56.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m
(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 3178 y(57.)61 b(The)39
-b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h
-(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
-Ft(wait)330 3288 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
+Fu(and)g Ft(-f)f Fu(options.)p eop end
+%%Page: 104 110
+TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(104)154 299 y(57.)61
+b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g
+(is)g(set)h(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
+Ft(wait)330 408 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
(immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j
-(for)f(eac)m(h)330 3397 y(c)m(hild)31 b(that)g(exits.)154
-3532 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m
+(for)f(eac)m(h)330 518 y(c)m(hild)31 b(that)g(exits.)154
+654 y(58.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m
(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 3641 y(receiv)m(es)41
+(een)f(set.)40 b(If)27 b(Bash)330 764 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
-3751 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154
-3885 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
+874 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154
+1010 y(59.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h
-(after)330 3995 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)
-g(it.)275 4154 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h
+(after)330 1119 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain)
+g(it.)275 1284 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h
(that)g(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m
-(en)i(when)d(in)150 4264 y Fm(posix)d Fu(mo)s(de.)40
-b(Sp)s(eci\014cally:)199 4399 y(1.)61 b(The)30 b Ft(fc)f
+(en)i(when)d(in)150 1394 y Fm(posix)d Fu(mo)s(de.)40
+b(Sp)s(eci\014cally:)199 1532 y(1.)61 b(The)30 b Ft(fc)f
Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h
(edit)g(history)f(en)m(tries)h(if)f Ft(FCEDIT)f Fu(is)h(unset,)330
-4508 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p
+1641 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p
Fu(.)40 b Ft(fc)30 b Fu(uses)g Ft(ed)g Fu(if)g Ft(EDITOR)f
-Fu(is)h(unset.)199 4643 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i
+Fu(is)h(unset.)199 1778 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i
(Bash)e(requires)g(the)g Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e
-(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 4752
-y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 4912 y(Bash)c(can)g(b)s(e)f
+(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 1887
+y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2052 y(Bash)c(can)g(b)s(e)f
(con\014gured)h(to)g(b)s(e)g Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g
(default,)h(b)m(y)f(sp)s(ecifying)g(the)g Ft(--enable-)150
-5021 y(strict-posix-default)c Fu(to)27 b Ft(configure)e
+2162 y(strict-posix-default)c Fu(to)27 b Ft(configure)e
Fu(when)h(building)h(\(see)h(Section)g(10.8)g([Optional)g(F)-8
-b(eatures],)150 5131 y(page)31 b(150\).)p eop end
-%%Page: 103 109
-TeXDict begin 103 108 bop 3614 -116 a Fu(103)150 299
+b(eatures],)150 2271 y(page)31 b(155\).)150 2518 y Fs(6.12)68
+b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150 2677 y Fu(Bash-4.0)30
+b(in)m(tro)s(duced)d(the)i(concept)g(of)f(a)h(`shell)f(compatibilit)m
+(y)i(lev)m(el',)h(sp)s(eci\014ed)d(as)g(a)h(set)f(of)h(options)150
+2786 y(to)i(the)f(shopt)g(builtin)g(\()p Ft(compat31)p
+Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p Fu(,)f Ft(compat41)p
+Fu(,)g(and)i(so)g(on\).)41 b(There)30 b(is)g(only)150
+2896 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f({)f(eac)m(h)h
+(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41 b(The)28
+b(compatibilit)m(y)j(lev)m(el)150 3006 y(is)39 b(in)m(tended)g(to)h
+(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e(from)f(previous)h(v)
+m(ersions)g(that)h(is)f(incompatible)150 3115 y(with)d(new)m(er)g(v)m
+(ersions)g(while)g(they)g(migrate)h(scripts)f(to)h(use)f(curren)m(t)f
+(features)i(and)e(b)s(eha)m(vior.)58 b(It's)150 3225
+y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f(solution.)275
+3363 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s(eha)m(vior)g
+(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)g(\(e.g.,)150
+3473 y(setting)24 b Ft(compat32)e Fu(means)h(that)h(quoting)g(the)f
+(rhs)g(of)g(the)h(regexp)f(matc)m(hing)i(op)s(erator)e(quotes)h(sp)s
+(ecial)150 3582 y(regexp)31 b(c)m(haracters)g(in)g(the)f(w)m(ord,)g
+(whic)m(h)g(is)h(default)f(b)s(eha)m(vior)h(in)f(bash-3.2)h(and)f(ab)s
+(o)m(v)m(e\).)275 3720 y(If)f(a)h(user)f(enables,)h(sa)m(y)-8
+b(,)31 b Ft(compat32)p Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m
+(vior)g(of)g(other)g(compatibilit)m(y)h(lev)m(els)150
+3830 y(up)23 b(to)h(and)f(including)h(the)g(curren)m(t)f(compatibilit)m
+(y)j(lev)m(el.)41 b(The)23 b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)
+m(y)h(lev)m(el)150 3939 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m
+(hanged)g(in)f(that)h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m
+(vior)g(ma)m(y)g(ha)m(v)m(e)h(b)s(een)150 4049 y(presen)m(t)f(in)g
+(earlier)g(v)m(ersions.)52 b(F)-8 b(or)35 b(instance,)g(the)f(c)m
+(hange)h(to)g(use)f(lo)s(cale-based)h(comparisons)f(with)150
+4159 y(the)e Ft([[)f Fu(command)g(came)h(in)g(bash-4.1,)h(and)d
+(earlier)j(v)m(ersions)f(used)f(ASCI)s(I-based)f(comparisons,)i(so)150
+4268 y(enabling)27 b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e
+(comparisons)i(as)g(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y)
+g(not)150 4378 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)
+g(a)g(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m
+(els)g(carefully)-8 b(.)150 4487 y(Read)31 b(the)f(do)s(cumen)m(tation)
+h(for)g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m
+(t)f(b)s(eha)m(vior.)275 4625 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h
+(new)f(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p
+Fu(.)75 b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150
+4735 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s
+(er)f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h
+(the)f Ft(compat)p Fr(NN)150 4845 y Fu(option,)g(lik)m(e)h(42\))f
+(determines)g(the)f(compatibilit)m(y)j(lev)m(el.)275
+4983 y(Starting)e(with)g(bash-4.4,)h(Bash)f(has)g(b)s(egun)f
+(deprecating)h(older)h(compatibilit)m(y)h(lev)m(els.)44
+b(Ev)m(en)m(tu-)150 5092 y(ally)-8 b(,)32 b(the)e(options)h(will)g(b)s
+(e)f(remo)m(v)m(ed)h(in)f(fa)m(v)m(or)i(of)e Ft(BASH_COMPAT)p
+Fu(.)275 5230 y(Bash-5.0)36 b(is)f(the)g(\014nal)f(v)m(ersion)i(for)e
+(whic)m(h)h(there)g(will)g(b)s(e)f(an)h(individual)f(shopt)h(option)g
+(for)g(the)150 5340 y(previous)30 b(v)m(ersion.)41 b(Users)30
+b(should)g(use)g Ft(BASH_COMPAT)d Fu(on)j(bash-5.0)h(and)f(later)i(v)m
+(ersions.)p eop end
+%%Page: 105 111
+TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(105)275 299 y(The)24
+b(follo)m(wing)i(table)g(describ)s(es)e(the)i(b)s(eha)m(vior)f(c)m
+(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h(compatibilit)m(y)h(lev)m
+(el)150 408 y(setting.)43 b(The)30 b Ft(compat)p Fr(NN)39
+b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h(setting)i(the)f
+(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 518 y Fu(using)37
+b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63 b(F)-8
+b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d(compatibilit)m
+(y)150 628 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e(the)i(corresp)s
+(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33 b(option.)50
+b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150 737 y(v)m(ersions,)40
+b(the)e Ft(BASH_COMPAT)d Fu(v)-5 b(ariable)39 b(is)e(preferred,)i(and)e
+(it)i(is)f(required)f(for)g(bash-5.1)i(and)e(later)150
+847 y(v)m(ersions.)150 1025 y Ft(compat31)705 1165 y
+Fq(\017)60 b Fu(quoting)34 b(the)g(rhs)e(of)i(the)f Ft([[)g
+Fu(command's)h(regexp)f(matc)m(hing)i(op)s(erator)f(\(=)p
+Ft(~)p Fu(\))f(has)810 1275 y(no)d(sp)s(ecial)h(e\013ect)150
+1446 y Ft(compat32)705 1587 y Fq(\017)60 b Fu(in)m(terrupting)28
+b(a)g(command)g(list)h(suc)m(h)f(as)g Ft(")p Fu(a)g(;)h(b)f(;)h(c)p
+Ft(")f Fu(causes)h(the)f(execution)h(of)g(the)810 1697
+y(next)j(command)f(in)g(the)h(list)g(\(in)f(bash-4.0)h(and)f(later)i(v)
+m(ersions,)f(the)g(shell)f(acts)i(as)810 1806 y(if)i(it)i(receiv)m(ed)f
+(the)g(in)m(terrupt,)h(so)f(in)m(terrupting)f(one)h(command)f(in)g(a)h
+(list)g(ab)s(orts)810 1916 y(the)31 b(execution)g(of)g(the)f(en)m(tire)
+i(list\))150 2087 y Ft(compat40)705 2228 y Fq(\017)60
+b Fu(the)35 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h
+(to)g(the)g Ft([[)f Fu(command)h(do)f(not)h(consider)f(the)h(curren)m
+(t)810 2338 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f
+(ASCI)s(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810
+2447 y(prior)f(to)i(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d
+(strcmp\(3\);)45 b(bash-4.1)c(and)e(later)810 2557 y(use)30
+b(the)h(curren)m(t)f(lo)s(cale's)i(collation)h(sequence)d(and)g
+(strcoll\(3\).)150 2728 y Ft(compat41)705 2869 y Fq(\017)60
+b Fu(in)29 b(p)s(osix)f(mo)s(de,)i Ft(time)e Fu(ma)m(y)h(b)s(e)g(follo)
+m(w)m(ed)i(b)m(y)e(options)g(and)g(still)h(b)s(e)e(recognized)j(as)810
+2979 y(a)g(reserv)m(ed)f(w)m(ord)g(\(this)h(is)f Fm(posix)g
+Fu(in)m(terpretation)i(267\))705 3119 y Fq(\017)60 b
+Fu(in)37 b(p)s(osix)f(mo)s(de,)i(the)g(parser)e(requires)g(that)i(an)f
+(ev)m(en)g(n)m(um)m(b)s(er)f(of)h(single)g(quotes)810
+3229 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g
+(double-quoted)f($)p Fi({)6 b Fu(.)23 b(.)f(.)11 b Fi(})29
+b Fu(parameter)g(expansion)810 3338 y(and)34 b(treats)h(them)f(sp)s
+(ecially)-8 b(,)37 b(so)e(that)g(c)m(haracters)g(within)f(the)h(single)
+g(quotes)g(are)810 3448 y(considered)30 b(quoted)h(\(this)f(is)h
+Fm(posix)e Fu(in)m(terpretation)j(221\))150 3620 y Ft(compat42)705
+3760 y Fq(\017)60 b Fu(the)29 b(replacemen)m(t)i(string)e(in)g
+(double-quoted)h(pattern)f(substitution)g(do)s(es)g(not)h(un-)810
+3870 y(dergo)h(quote)g(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f(in)g
+(v)m(ersions)h(after)g(bash-4.2)705 4010 y Fq(\017)60
+b Fu(in)39 b(p)s(osix)g(mo)s(de,)j(single)e(quotes)g(are)g(considered)f
+(sp)s(ecial)h(when)f(expanding)g(the)810 4120 y Fr(w)m(ord)d
+Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p Fi({)6 b
+Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(parameter)g(expansion)f(and)g(can)h
+(b)s(e)810 4230 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f(or)g
+(other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)810
+4339 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42
+b(in)36 b(later)h(v)m(ersions,)h(single)f(quotes)g(are)g(not)f(sp)s
+(ecial)810 4449 y(within)30 b(double-quoted)g(w)m(ord)g(expansions)150
+4620 y Ft(compat43)705 4761 y Fq(\017)60 b Fu(the)31
+b(shell)g(do)s(es)g(not)g(prin)m(t)f(a)h(w)m(arning)g(message)h(if)f
+(an)g(attempt)h(is)f(made)f(to)i(use)f(a)810 4871 y(quoted)22
+b(comp)s(ound)f(assignmen)m(t)i(as)f(an)g(argumen)m(t)h(to)g(declare)g
+(\(declare)g(-a)g(fo)s(o='\(1)810 4980 y(2\)'\).)42 b(Later)31
+b(v)m(ersions)g(w)m(arn)f(that)h(this)f(usage)h(is)f(deprecated)705
+5121 y Fq(\017)60 b Fu(w)m(ord)21 b(expansion)g(errors)g(are)h
+(considered)f(non-fatal)h(errors)f(that)h(cause)g(the)f(curren)m(t)810
+5230 y(command)k(to)g(fail,)i(ev)m(en)e(in)g(p)s(osix)f(mo)s(de)h
+(\(the)g(default)g(b)s(eha)m(vior)g(is)g(to)g(mak)m(e)h(them)810
+5340 y(fatal)32 b(errors)d(that)i(cause)g(the)g(shell)f(to)i(exit\))p
+eop end
+%%Page: 106 112
+TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(6:)41
+b(Bash)30 b(F)-8 b(eatures)2439 b(106)705 299 y Fq(\017)60
+b Fu(when)37 b(executing)i(a)g(shell)f(function,)i(the)f(lo)s(op)f
+(state)h(\(while/un)m(til/etc.\))68 b(is)38 b(not)810
+408 y(reset,)c(so)g Ft(break)d Fu(or)i Ft(continue)e
+Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m(ue)h(lo)s
+(ops)810 518 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37
+b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e(prev)m(en)m(t)810
+628 y(this)150 787 y Ft(compat44)705 922 y Fq(\017)60
+b Fu(the)41 b(shell)g(sets)g(up)e(the)i(v)-5 b(alues)41
+b(used)f(b)m(y)h Ft(BASH_ARGV)d Fu(and)i Ft(BASH_ARGC)e
+Fu(so)j(they)810 1031 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s
+(ositional)g(parameters)g(ev)m(en)h(if)e(extended)h(debugging)810
+1141 y(mo)s(de)k(is)g(not)h(enabled)705 1275 y Fq(\017)60
+b Fu(a)40 b(subshell)f(inherits)g(lo)s(ops)h(from)g(its)g(paren)m(t)g
+(con)m(text,)k(so)c Ft(break)e Fu(or)i Ft(continue)810
+1385 y Fu(will)35 b(cause)g(the)f(subshell)f(to)i(exit.)54
+b(Bash-5.0)36 b(and)d(later)j(reset)f(the)f(lo)s(op)h(state)g(to)810
+1494 y(prev)m(en)m(t)c(the)g(exit)705 1629 y Fq(\017)60
+b Fu(v)-5 b(ariable)28 b(assignmen)m(ts)h(preceding)f(builtins)f(lik)m
+(e)i Ft(export)d Fu(and)h Ft(readonly)e Fu(that)j(set)810
+1738 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5
+b(ariables)37 b(with)g(the)f(same)h(name)g(in)g(the)f(calling)810
+1848 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h
+(in)f(p)s(osix)f(mo)s(de)150 2007 y Ft(compat50)f(\(set)h(using)g
+(BASH_COMPAT\))705 2117 y Fq(\017)60 b Fu(Bash-5.1)29
+b(c)m(hanged)g(the)f(w)m(a)m(y)g Ft($RANDOM)e Fu(is)i(generated)h(to)f
+(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 2227 y(randomness.)39
+b(If)30 b(the)f(shell)h(compatibilit)m(y)i(lev)m(el)f(is)f(set)g(to)h
+(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 2336 y(to)e(the)g(metho)s
+(d)f(from)g(bash-5.0)h(and)f(previous)g(v)m(ersions,)i(so)e(seeding)h
+(the)g(random)810 2446 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e
+(assigning)h(a)g(v)-5 b(alue)38 b(to)g Ft(RANDOM)e Fu(will)i(pro)s
+(duce)e(the)i(same)810 2555 y(sequence)31 b(as)f(in)g(bash-5.0)705
+2690 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f
+(empt)m(y)-8 b(,)25 b(Bash)d(v)m(ersions)g(prior)g(to)h(bash-5.1)f
+(prin)m(ted)810 2800 y(an)29 b(informational)i(message)g(to)f(that)g
+(e\013ect,)h(ev)m(en)g(when)d(pro)s(ducing)g(output)h(that)810
+2909 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42
+b(suppresses)c(that)j(message)g(when)e(the)i Ft(-l)810
+3019 y Fu(option)31 b(is)f(supplied.)p eop end
+%%Page: 107 113
+TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299
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)
@@ -15690,213 +15991,231 @@ 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: 104 110
-TeXDict begin 104 109 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(104)275 299 y(A)38 b(job)g(ma)m(y)h(also)g
+%%Page: 108 114
+TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(108)275 299 y(A)38 b(job)g(ma)m(y)h(also)g
(b)s(e)f(referred)f(to)j(using)d(a)i(pre\014x)e(of)i(the)f(name)h(used)
-e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)29
-b(that)i(app)s(ears)f(in)g(its)h(command)f(line.)41 b(F)-8
-b(or)31 b(example,)g(`)p Ft(\045ce)p Fu(')f(refers)g(to)h(a)g(stopp)s
-(ed)e Ft(ce)h Fu(job.)150 518 y(Using)d(`)p Ft(\045?ce)p
-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
-767 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it)
+e(to)i(start)g(it,)i(or)e(using)f(a)150 408 y(substring)g(that)j(app)s
+(ears)e(in)g(its)h(command)f(line.)69 b(F)-8 b(or)41
+b(example,)i(`)p Ft(\045ce)p Fu(')c(refers)g(to)i(a)f(stopp)s(ed)e(job)
+150 518 y(whose)30 b(command)g(name)g(b)s(egins)g(with)g(`)p
+Ft(ce)p Fu('.)40 b(Using)31 b(`)p Ft(\045?ce)p Fu(',)f(on)g(the)g
+(other)h(hand,)e(refers)h(to)h(an)m(y)f(job)150 628 y(con)m(taining)e
+(the)e(string)h(`)p Ft(ce)p Fu(')f(in)g(its)h(command)f(line.)40
+b(If)26 b(the)g(pre\014x)g(or)g(substring)f(matc)m(hes)j(more)e(than)
+150 737 y(one)31 b(job,)f(Bash)g(rep)s(orts)g(an)g(error.)275
+869 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 876 y(`)p Ft(fg)g(\0451)p
+b(is)g(a)h(synon)m(ym)e(for)150 978 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 986 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5
-b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1125
-y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m
+Fu(')i(resumes)150 1088 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
+1219 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 1234 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s
+150 1329 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 1344 y(an)m(y)k(other)f(output.)40
+g(to)g(not)g(in)m(terrupt)150 1439 y(an)m(y)k(other)f(output.)40
b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e
Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges)
-150 1453 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g
-(Builtin],)i(page)f(61\).)40 b(An)m(y)24 b(trap)f(on)h
-Ft(SIGCHLD)e Fu(is)i(executed)150 1563 y(for)30 b(eac)m(h)i(c)m(hild)e
-(pro)s(cess)g(that)h(exits.)275 1702 y(If)25 b(an)h(attempt)h(to)g
+150 1548 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g
+(Builtin],)i(page)f(62\).)40 b(An)m(y)24 b(trap)f(on)h
+Ft(SIGCHLD)e Fu(is)i(executed)150 1658 y(for)30 b(eac)m(h)i(c)m(hild)e
+(pro)s(cess)g(that)h(exits.)275 1789 y(If)25 b(an)h(attempt)h(to)g
(exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h
-(running,)e(if)h(the)g Ft(checkjobs)150 1812 y Fu(option)e(is)f
+(running,)e(if)h(the)g Ft(checkjobs)150 1899 y Fu(option)e(is)f
(enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page)
-e(65\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
-1921 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f
+e(66\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150
+2009 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f
(enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39
-b(The)25 b Ft(jobs)150 2031 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f
+b(The)25 b Ft(jobs)150 2118 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 2140
+b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2228
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
-2250 y(jobs)c(are)h(terminated.)275 2389 y(When)f(the)h(shell)g(is)f(w)
+2337 y(jobs)c(are)h(terminated.)275 2469 y(When)f(the)h(shell)g(is)f(w)
m(aiting)i(for)f(a)g(job)f(or)h(pro)s(cess)f(using)g(the)h
Ft(wait)f Fu(builtin,)g(and)g(job)h(con)m(trol)h(is)150
-2498 y(enabled,)27 b Ft(wait)f Fu(will)g(return)g(when)f(the)h(job)g(c)
-m(hanges)i(state.)41 b(The)25 b Ft(-f)h Fu(option)h(will)g(force)g
-Ft(wait)e Fu(to)i(w)m(ait)150 2608 y(un)m(til)k(the)f(job)g(or)h(pro)s
-(cess)f(terminates)h(b)s(efore)f(returning.)150 2855
-y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3042
-y Ft(bg)870 3179 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630
-3315 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i
+2578 y(enabled,)i Ft(wait)f Fu(will)g(return)g(when)f(the)i(job)f(c)m
+(hanges)h(state.)51 b(The)33 b Ft(-f)g Fu(option)h(causes)f
+Ft(wait)g Fu(to)h(w)m(ait)150 2688 y(un)m(til)d(the)f(job)g(or)h(pro)s
+(cess)f(terminates)h(b)s(efore)f(returning.)150 2923
+y Fs(7.2)68 b(Job)45 b(Con)l(trol)h(Builtins)150 3104
+y Ft(bg)870 3236 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630
+3367 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i
Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h
-(had)e(b)s(een)g(started)630 3425 y(with)32 b(`)p Ft(&)p
+(had)e(b)s(een)g(started)630 3477 y(with)32 b(`)p Ft(&)p
Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the)
h(curren)m(t)g(job)f(is)h(used.)45 b(The)31 b(return)g(status)630
-3535 y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i
+3586 y(is)i(zero)g(unless)f(it)h(is)g(run)e(when)h(job)g(con)m(trol)i
(is)f(not)g(enabled,)h(or,)f(when)f(run)f(with)h(job)630
-3644 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37
+3696 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37
b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h(a)g(job)g(that)g
-(w)m(as)g(started)630 3754 y(without)e(job)g(con)m(trol.)150
-3918 y Ft(fg)870 4054 y(fg)47 b([)p Fj(jobspec)p Ft(])630
-4191 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43
+(w)m(as)g(started)630 3806 y(without)e(job)g(con)m(trol.)150
+3959 y Ft(fg)870 4091 y(fg)47 b([)p Fj(jobspec)p Ft(])630
+4222 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43
b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f(job.)78
-b(If)630 4301 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f
+b(If)630 4332 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h(the)f
(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h(is)h
-(that)g(of)630 4410 y(the)d(command)g(placed)h(in)m(to)g(the)f
+(that)g(of)630 4441 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
-4520 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h
+4551 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
-4629 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b
+4660 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 4793 y Ft(jobs)870 4930 y(jobs)47
-b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5039 y(jobs)i(-x)g
-Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5176 y Fu(The)30
+(job)g(con)m(trol.)150 4814 y Ft(jobs)870 4945 y(jobs)47
+b([-lnprs])e([)p Fj(jobspec)p Ft(])870 5055 y(jobs)i(-x)g
+Fj(command)f Ft([)p Fj(arguments)p Ft(])630 5187 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
5340 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p
Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)p
eop end
-%%Page: 105 111
-TeXDict begin 105 110 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(105)630 299 y Ft(-n)384
+%%Page: 109 115
+TeXDict begin 109 114 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(109)630 299 y Ft(-n)384
b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e(jobs)h(that)g(ha)m
(v)m(e)i(c)m(hanged)e(status)h(since)1110 408 y(the)31
b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f(status.)630
-570 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
+583 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f
Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)630
-732 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630
-894 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
-1056 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
+757 y Ft(-r)384 b Fu(Displa)m(y)32 b(only)e(running)f(jobs.)630
+931 y Ft(-s)384 b Fu(Displa)m(y)32 b(only)e(stopp)s(ed)f(jobs.)630
+1105 y(If)23 b Fr(jobsp)s(ec)28 b Fu(is)23 b(giv)m(en,)i(output)e(is)g
(restricted)h(to)g(information)f(ab)s(out)g(that)h(job.)37
-b(If)23 b Fr(jobsp)s(ec)630 1165 y Fu(is)30 b(not)h(supplied,)e(the)i
-(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1301 y(If)k(the)g
+b(If)23 b Fr(jobsp)s(ec)630 1214 y Fu(is)30 b(not)h(supplied,)e(the)i
+(status)g(of)f(all)h(jobs)f(is)h(listed.)630 1356 y(If)k(the)g
Ft(-x)f Fu(option)i(is)f(supplied,)g Ft(jobs)f Fu(replaces)i(an)m(y)f
Fr(jobsp)s(ec)40 b Fu(found)34 b(in)h Fr(command)j Fu(or)630
-1410 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)
+1466 y Fr(argumen)m(ts)j Fu(with)c(the)h(corresp)s(onding)e(pro)s(cess)
h(group)f Fm(id)p Fu(,)k(and)c(executes)j Fr(command)p
-Fu(,)630 1520 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
-(its)g(exit)i(status.)150 1682 y Ft(kill)870 1817 y(kill)47
+Fu(,)630 1575 y(passing)30 b(it)h Fr(argumen)m(t)r Fu(s,)g(returning)f
+(its)g(exit)i(status.)150 1749 y Ft(kill)870 1891 y(kill)47
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 1927
-y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2063
+Fj(sigspec)p Ft(])f Fj(jobspec)h Ft(or)h Fj(pid)870 2001
+y Ft(kill)g(-l|-L)f([)p Fj(exit_status)p Ft(])630 2143
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 2172 y(cation)k
+(named)g(b)m(y)g(job)g(sp)s(eci\014-)630 2252 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 2282 y(suc)m(h)37 b(as)g Ft(SIGINT)f
+(e)i(signal)e(name)630 2362 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 2392 y
+(signal)g(n)m(um)m(b)s(er;)h Fr(sign)m(um)630 2471 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 2501 y(The)27 b Ft(-l)h
+Ft(SIGTERM)d Fu(is)h(used.)630 2581 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 2611 y(giv)m(en,)32 b(the)g(names)e(of)i(the)f(signals)g
+Fu(is)630 2690 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
-2720 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
-1796 2720 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s
-(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2830
+2800 y(the)c(return)f(status)h(is)g(zero.)41 b Fr(exit)p
+1796 2800 28 4 v 41 w(status)32 b Fu(is)c(a)g(n)m(um)m(b)s(er)f(sp)s
+(ecifying)g(a)i(signal)f(n)m(um)m(b)s(er)f(or)630 2910
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 2939 y(to)34 b Ft(-l)p Fu(.)47 b(The)32
+b(alen)m(t)630 3019 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 3049 y(non-zero)d(if)f(an)h
+(as)f(successfully)g(sen)m(t,)h(or)630 3129 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 3211 y Ft(wait)870 3346 y(wait)47
-b([-fn])f([)p Fj(jobspec)g Ft(or)h Fj(pid)g Ft(...)o(])630
-3482 y Fu(W)-8 b(ait)28 b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s
-(eci\014ed)g(b)m(y)g(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i
-Fu(or)d(job)g(sp)s(eci\014cation)630 3592 y Fr(jobsp)s(ec)j
-Fu(exits)c(and)f(return)g(the)g(exit)h(status)g(of)g(the)f(last)h
-(command)g(w)m(aited)g(for.)39 b(If)23 b(a)i(job)630
-3701 y(sp)s(ec)j(is)g(giv)m(en,)i(all)f(pro)s(cesses)f(in)g(the)g(job)g
-(are)h(w)m(aited)g(for.)40 b(If)27 b(no)i(argumen)m(ts)f(are)h(giv)m
-(en,)630 3811 y(all)f(curren)m(tly)g(activ)m(e)i(c)m(hild)e(pro)s
-(cesses)f(are)h(w)m(aited)g(for,)g(and)f(the)h(return)e(status)i(is)g
-(zero.)630 3921 y(If)36 b(the)g Ft(-n)f Fu(option)i(is)f(supplied,)g
-Ft(wait)f Fu(w)m(aits)i(for)f(an)m(y)g(job)g(to)h(terminate)g(and)e
-(returns)630 4030 y(its)i(exit)g(status.)60 b(If)36 b(the)g
-Ft(-f)g Fu(option)h(is)g(supplied,)f(and)g(job)g(con)m(trol)i(is)f
-(enabled,)h Ft(wait)630 4140 y Fu(forces)g(eac)m(h)h
-Fr(pid)i Fu(or)d Fr(jobsp)s(ec)43 b Fu(to)38 b(terminate)h(b)s(efore)e
-(returning)g(its)i(status,)h(in)m(tead)f(of)630 4249
-y(returning)29 b(when)f(it)i(c)m(hanges)h(status.)41
-b(If)29 b(neither)g Fr(jobsp)s(ec)35 b Fu(nor)29 b Fr(pid)j
-Fu(sp)s(eci\014es)d(an)h(activ)m(e)630 4359 y(c)m(hild)h(pro)s(cess)f
-(of)g(the)h(shell,)g(the)f(return)f(status)i(is)f(127.)150
-4521 y Ft(disown)870 4656 y(disown)46 b([-ar])g([-h])h([)p
-Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4792
-y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f
-Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47
-b(If)32 b(the)h Ft(-h)630 4902 y Fu(option)j(is)f(giv)m(en,)i(the)f
-(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i
-(mark)m(ed)f(so)g(that)630 5011 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h
-(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e
-Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630
-5121 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f
-Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g
-(job)f(is)630 5230 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k
-Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m
-(e)h(or)e(mark)h(all)g(jobs;)630 5340 y(the)31 b Ft(-r)e
-Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30
-b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)p eop
-end
-%%Page: 106 112
-TeXDict begin 106 111 bop 150 -116 a Fu(Chapter)30 b(7:)41
-b(Job)30 b(Con)m(trol)2526 b(106)150 299 y Ft(suspend)870
-433 y(suspend)46 b([-f])630 568 y Fu(Susp)s(end)31 b(the)i(execution)h
-(of)g(this)f(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e
-Ft(SIGCONT)f Fu(signal.)50 b(A)33 b(login)630 677 y(shell)28
-b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s
-(e)f(used)g(to)h(o)m(v)m(erride)h(this)e(and)g(force)630
-787 y(the)k(susp)s(ension.)275 946 y(When)f(job)f(con)m(trol)j(is)e
-(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f
-Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150
-1056 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s
-(cess)h Fm(id)p Fu(s.)150 1297 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)
--11 b(ariables)150 1481 y Ft(auto_resume)630 1591 y Fu(This)31
-b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m
-(teracts)h(with)e(the)h(user)e(and)h(job)g(con)m(trol.)45
-b(If)630 1700 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h
-(w)m(ord)f(simple)h(commands)f(without)g(redirections)i(are)630
-1810 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g
-(existing)h(job.)41 b(There)29 b(is)h(no)h(am)m(biguit)m(y)630
-1919 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s
-(eginning)f(with)g(the)h(string)g(t)m(yp)s(ed,)g(then)g(the)630
-2029 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.)
-42 b(The)29 b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630
-2139 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g
-(it.)41 b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5
-b(alue)630 2248 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
+(encoun)m(tered.)150 3303 y Ft(wait)870 3445 y(wait)47
+b([-fn])f([-p)h Fj(varname)p Ft(])e([)p Fj(jobspec)h
+Ft(or)h Fj(pid)g Ft(...)o(])630 3587 y Fu(W)-8 b(ait)28
+b(un)m(til)f(the)f(c)m(hild)h(pro)s(cess)f(sp)s(eci\014ed)g(b)m(y)g
+(eac)m(h)h(pro)s(cess)f Fm(id)h Fr(pid)i Fu(or)d(job)g(sp)s
+(eci\014cation)630 3696 y Fr(jobsp)s(ec)40 b Fu(exits)35
+b(and)f(return)g(the)g(exit)i(status)f(of)g(the)g(last)g(command)f(w)m
+(aited)i(for.)53 b(If)35 b(a)630 3806 y(job)g(sp)s(ec)f(is)h(giv)m(en,)
+i(all)f(pro)s(cesses)f(in)f(the)h(job)g(are)g(w)m(aited)h(for.)54
+b(If)35 b(no)f(argumen)m(ts)i(are)630 3915 y(giv)m(en,)28
+b Ft(wait)c Fu(w)m(aits)j(for)e(all)i(running)c(bac)m(kground)j(jobs)f
+(and)g(the)h(last-executed)h(pro)s(cess)630 4025 y(substitution,)37
+b(if)f(its)g(pro)s(cess)f(id)h(is)f(the)h(same)g(as)g
+Fr($!)p Fu(,)i(and)d(the)h(return)f(status)h(is)g(zero.)630
+4134 y(If)h(the)h Ft(-n)f Fu(option)h(is)f(supplied,)i
+Ft(wait)d Fu(w)m(aits)j(for)e(a)h(single)g(job)f(from)g(the)h(list)g
+(of)g Fr(pids)630 4244 y Fu(or)31 b Fr(jobsp)s(ecs)k
+Fu(or,)d(if)f(no)g(argumen)m(ts)h(are)g(supplied,)e(an)m(y)i(job,)f(to)
+i(complete)f(and)f(returns)630 4354 y(its)36 b(exit)h(status.)56
+b(If)35 b(none)h(of)g(the)g(supplied)e(argumen)m(ts)i(is)f(a)h(c)m
+(hild)g(of)g(the)g(shell,)h(or)f(if)630 4463 y(no)31
+b(argumen)m(ts)g(are)g(supplied)f(and)g(the)h(shell)g(has)g(no)f(un)m
+(w)m(aited-for)i(c)m(hildren,)f(the)g(exit)630 4573 y(status)k(is)g
+(127.)55 b(If)34 b(the)h Ft(-p)g Fu(option)g(is)g(supplied,)f(the)h
+(pro)s(cess)g(or)f(job)h(iden)m(ti\014er)g(of)g(the)630
+4682 y(job)j(for)g(whic)m(h)f(the)i(exit)g(status)f(is)g(returned)f(is)
+h(assigned)h(to)g(the)f(v)-5 b(ariable)39 b Fr(v)-5 b(arname)630
+4792 y Fu(named)29 b(b)m(y)f(the)i(option)f(argumen)m(t.)41
+b(The)28 b(v)-5 b(ariable)30 b(will)g(b)s(e)e(unset)h(initially)-8
+b(,)31 b(b)s(efore)e(an)m(y)630 4902 y(assignmen)m(t.)76
+b(This)41 b(is)h(useful)f(only)h(when)f(the)h Ft(-n)f
+Fu(option)i(is)f(supplied.)74 b(Supplying)630 5011 y(the)39
+b Ft(-f)f Fu(option,)k(when)37 b(job)i(con)m(trol)h(is)f(enabled,)i
+(forces)e Ft(wait)e Fu(to)j(w)m(ait)g(for)e(eac)m(h)i
+Fr(pid)630 5121 y Fu(or)29 b Fr(jobsp)s(ec)34 b Fu(to)c(terminate)g(b)s
+(efore)f(returning)f(its)h(status,)h(in)m(tead)g(of)f(returning)f(when)
+g(it)630 5230 y(c)m(hanges)37 b(status.)58 b(If)35 b(neither)h
+Fr(jobsp)s(ec)41 b Fu(nor)36 b Fr(pid)i Fu(sp)s(eci\014es)e(an)g(activ)
+m(e)i(c)m(hild)e(pro)s(cess)g(of)630 5340 y(the)31 b(shell,)f(the)h
+(return)e(status)i(is)f(127.)p eop end
+%%Page: 110 116
+TeXDict begin 110 115 bop 150 -116 a Fu(Chapter)30 b(7:)41
+b(Job)30 b(Con)m(trol)2526 b(110)150 299 y Ft(disown)870
+433 y(disown)46 b([-ar])g([-h])h([)p Fj(jobspec)f Ft(...)h(|)g
+Fj(pid)g Ft(...)g(])630 568 y Fu(Without)33 b(options,)h(remo)m(v)m(e)g
+(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m
+(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 677 y Fu(option)j(is)f(giv)m
+(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j
+(but)c(is)i(mark)m(ed)f(so)g(that)630 787 y Ft(SIGHUP)e
+Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m
+(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40
+b Fu(is)c(not)630 897 y(presen)m(t,)41 b(and)d(neither)h(the)g
+Ft(-a)f Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g
+(curren)m(t)g(job)f(is)630 1006 y(used.)g(If)25 b(no)h
+Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g
+(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g(jobs;)630 1116
+y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36
+b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)
+150 1275 y Ft(suspend)870 1410 y(suspend)46 b([-f])630
+1544 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m
+(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50
+b(A)33 b(login)630 1654 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g
+(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h
+(this)e(and)g(force)630 1763 y(the)k(susp)s(ension.)275
+1923 y(When)f(job)f(con)m(trol)j(is)e(not)h(activ)m(e,)i(the)d
+Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h
+Fr(jobsp)s(ec)j Fu(argu-)150 2032 y(men)m(ts.)41 b(They)30
+b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess)h Fm(id)p Fu(s.)150
+2273 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 b(ariables)150
+2457 y Ft(auto_resume)630 2567 y Fu(This)31 b(v)-5 b(ariable)32
+b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m(teracts)h(with)e(the)h
+(user)e(and)h(job)g(con)m(trol.)45 b(If)630 2677 y(this)28
+b(v)-5 b(ariable)30 b(exists)f(then)f(single)h(w)m(ord)f(simple)h
+(commands)f(without)g(redirections)i(are)630 2786 y(treated)h(as)g
+(candidates)f(for)g(resumption)g(of)g(an)g(existing)h(job.)41
+b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 2896 y(allo)m(w)m(ed;)f(if)d
+(there)g(is)g(more)g(than)f(one)h(job)g(b)s(eginning)f(with)g(the)h
+(string)g(t)m(yp)s(ed,)g(then)g(the)630 3005 y(most)j(recen)m(tly)h
+(accessed)f(job)f(will)h(b)s(e)f(selected.)42 b(The)29
+b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 3115
+y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g(it.)41
+b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5
+b(alue)630 3225 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f
(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 2358 y(set)29 b(to)h(`)p Ft(substring)p
+(exactly;)j(if)630 3334 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 2467 y(of)38 b(a)f(stopp)s(ed)g(job.)
+(substring)f(of)h(the)g(name)630 3444 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
-2577 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
-(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(103\).)56
-b(If)34 b(set)i(to)g(an)m(y)630 2687 y(other)c(v)-5 b(alue,)32
+3553 y(the)c(`)p Ft(\045?)p Fu(')g(job)g Fm(id)g Fu(\(see)h(Section)g
+(7.1)g([Job)e(Con)m(trol)i(Basics],)i(page)e(107\).)56
+b(If)34 b(set)i(to)g(an)m(y)630 3663 y(other)c(v)-5 b(alue,)32
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 2796 y(pro)m(vides)e
+(stopp)s(ed)e(job's)i(name;)g(this)630 3773 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: 107 113
-TeXDict begin 107 112 bop 3614 -116 a Fu(107)150 299
+%%Page: 111 117
+TeXDict begin 111 116 bop 3614 -116 a Fu(111)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
@@ -15909,7 +16228,7 @@ b(Com-)150 745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g
(shell)f(in)m(v)m(o)s(cation.)45 b(Line)31 b(editing)150
1074 y(is)g(also)h(used)f(when)f(using)h(the)g Ft(-e)g
Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h
-(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(50\).)52
+(Section)g(4.2)h([Bash)150 1183 y(Builtins],)j(page)f(51\).)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
@@ -15917,7 +16236,7 @@ b(editing)h(can)g(b)s(e)f(enabled)g(at)h(an)m(y)g(time)150
1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30
b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g
(\(see)h(Section)g(4.3.1)h([The)150 1512 y(Set)31 b(Builtin],)g(page)g
-(61\),)h(or)e(disabled)g(using)g(the)h Ft(+o)e(emacs)g
+(62\),)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
@@ -15956,7 +16275,7 @@ b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p
Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g
(themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init)
h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i
-(page)e(110\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
+(page)e(114\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g
Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s
(duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30
b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h
@@ -15980,9 +16299,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: 108 114
-TeXDict begin 108 113 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(108)150 299 y Fk(8.2.1)63
+%%Page: 112 118
+TeXDict begin 112 117 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(112)150 299 y Fk(8.2.1)63
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
@@ -16049,9 +16368,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: 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)150 299 y Fk(8.2.3)63
+%%Page: 113 119
+TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(113)150 299 y Fk(8.2.3)63
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
@@ -16125,13 +16444,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(141\))i(for)d(lines)h(con)m(taining)
+(F)-8 b(acilities],)42 b(page)37 b(146\))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: 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)275 299 y(Incremen)m(tal)26
+%%Page: 114 120
+TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(114)275 299 y(Incremen)m(tal)26
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
@@ -16154,686 +16473,697 @@ 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 1414
+1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1416
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 1524 y(will)26 b(searc)m(h)h(bac)m
+Fu(as)h(appropriate.)43 b(This)150 1525 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
-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
+1635 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 1743 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39
+(the)150 1744 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 1852 y(the)30 b(line,)g(thereb)m(y)f
+(searc)m(h)g(and)e(accept)150 1854 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 1962
+b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1964
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
-2091 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g
+2094 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 2200 y(an)m(y)i(in)m(terv)m
+Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2204 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
-2310 y(used.)275 2439 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e
+2313 y(used.)275 2444 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 2548 y(matc)m(hing)d(history)e(lines.)78
+(searc)m(h)f(for)150 2553 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 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
+(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2663 y(con)m(ten)m(ts)32
+b(of)f(the)f(curren)m(t)g(line.)150 2896 y Fs(8.3)68
+b(Readline)47 b(Init)e(File)150 3055 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 3156 y(default,)26
+(eybindings)f(installed)g(b)m(y)150 3165 y(default,)26
b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k)
m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150
-3266 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an)
+3274 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an)
g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g
-(home)150 3375 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g
+(home)150 3384 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g
(\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37
b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p
-Fu(.)56 b(If)150 3485 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h
+Fu(.)56 b(If)150 3493 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
-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
+3603 y(read,)f(the)f(ultimate)h(default)f(is)g Ft(/etc/inputrc)p
+Fu(.)47 b(The)33 b Ft(bind)g Fu(builtin)g(command)h(can)g(also)h(b)s(e)
+e(used)150 3713 y(to)e(set)g(Readline)g(k)m(eybindings)f(and)g(v)-5
+b(ariables.)41 b(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)g
+(51.)275 3843 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g
(library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f(the)
-150 3833 y(k)m(ey)i(bindings)e(are)i(set.)275 3961 y(In)26
+150 3953 y(k)m(ey)i(bindings)e(are)i(set.)275 4083 y(In)26
b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(command)h(re-reads)g(this)f(init)
h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m(hanges)150
-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)
+4193 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g(it.)150
+4384 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150
+4531 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 4515 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
+b(lines)h(are)150 4641 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h
(a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41
b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150
-4625 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g
-([Conditional)g(Init)e(Constructs],)j(page)e(118\).)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
+4750 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g
+([Conditional)g(Init)e(Constructs],)j(page)e(122\).)64
+b(Other)150 4860 y(lines)31 b(denote)g(v)-5 b(ariable)31
+b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8
+b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e
(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 5102 y(v)-5 b(ariables)34
+(the)g(v)-5 b(alues)41 b(of)630 5230 y(v)-5 b(ariables)34
b(in)f(Readline)i(using)e(the)g Ft(set)g Fu(command)g(within)g(the)h
-(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5211 y(is)d(simple:)870
-5340 y Ft(set)47 b Fj(variable)e(value)p eop end
-%%Page: 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(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
+(init)g(\014le.)50 b(The)33 b(syn)m(tax)630 5340 y(is)d(simple:)p
+eop end
+%%Page: 115 121
+TeXDict begin 115 120 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(115)870 299 y Ft(set)47
+b Fj(variable)e(value)630 436 y Fu(Here,)29 b(for)e(example,)h(is)g(ho)
+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 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)
+-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 1377 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)
-g(50.)630 1510 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g
+b(alues.)630 1532 y(See)31 b(Section)g(4.2)g([Bash)g(Builtins],)g(page)
+g(51.)630 1669 y(A)f(great)i(deal)f(of)g(run-time)f(b)s(eha)m(vior)g
(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(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 1885 y(nal)37 b(b)s(ell.)61 b(If)37 b(set)h(to)g(`)p
+(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 1995 y(`)p Ft(visible)p Fu(',)32
+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 2104 y(`)p Ft(audible)p
+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 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
+(terminal's)1110 2381 y(b)s(ell.)630 2545 y Ft(bind-tty-special-chars)
+1110 2655 y Fu(If)e(set)g(to)h(`)p Ft(on)p Fu(')f(\(the)g(default\),)i
(Readline)f(attempts)g(to)g(bind)d(the)i(con)m(trol)1110
-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
+2765 y(c)m(haracters)30 b(treated)g(sp)s(ecially)g(b)m(y)f(the)g(k)m
+(ernel's)h(terminal)f(driv)m(er)g(to)h(their)1110 2874
+y(Readline)h(equiv)-5 b(alen)m(ts.)630 3039 y Ft(blink-matching-paren)
+1110 3148 y Fu(If)36 b(set)g(to)h(`)p Ft(on)p Fu(',)h(Readline)f
(attempts)g(to)g(brie\015y)e(mo)m(v)m(e)j(the)f(cursor)e(to)i(an)1110
-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
+3258 y(op)s(ening)k(paren)m(thesis)h(when)f(a)h(closing)h(paren)m
+(thesis)e(is)h(inserted.)74 b(The)1110 3367 y(default)31
+b(is)f(`)p Ft(off)p Fu('.)630 3532 y Ft(colored-completion-prefi)o(x)
+1110 3641 y Fu(If)f(set)h(to)g(`)p Ft(on)p Fu(',)g(when)e(listing)i
(completions,)h(Readline)f(displa)m(ys)g(the)f(com-)1110
-3558 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f
+3751 y(mon)c(pre\014x)f(of)i(the)f(set)h(of)g(p)s(ossible)f
(completions)h(using)f(a)h(di\013eren)m(t)g(color.)1110
-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
+3861 y(The)39 b(color)i(de\014nitions)f(are)g(tak)m(en)h(from)f(the)g
+(v)-5 b(alue)40 b(of)g(the)g Ft(LS_COLORS)1110 3970 y
Fu(en)m(vironmen)m(t)31 b(v)-5 b(ariable.)41 b(The)30
-b(default)h(is)f(`)p Ft(off)p Fu('.)630 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
+b(default)h(is)f(`)p Ft(off)p Fu('.)630 4134 y Ft(colored-stats)1110
+4244 y Fu(If)c(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(displa)m(ys)g
(p)s(ossible)f(completions)h(using)f(di\013eren)m(t)1110
-4152 y(colors)40 b(to)g(indicate)g(their)f(\014le)h(t)m(yp)s(e.)67
+4354 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
+4463 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
+4573 y(is)30 b(`)p Ft(off)p Fu('.)630 4737 y Ft(comment-begin)1110
+4847 y Fu(The)62 b(string)g(to)h(insert)f(at)h(the)g(b)s(eginning)e(of)
+h(the)h(line)f(when)g(the)1110 4956 y Ft(insert-comment)26
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
+b(alue)31 b(is)f Ft("#")p Fu(.)630 5121 y Ft(completion-display-width)
+1110 5230 y Fu(The)41 b(n)m(um)m(b)s(er)f(of)i(screen)g(columns)f(used)
+g(to)h(displa)m(y)g(p)s(ossible)f(matc)m(hes)1110 5340
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
+b(alue)29 b(is)g(ignored)g(if)g(it)h(is)f(less)g(than)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)630 299 y Ft
-(completion-ignore-case)1110 408 y Fu(If)27 b(set)h(to)g(`)p
+%%Page: 116 122
+TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(0)27
+b(or)f(greater)h(than)f(the)g(terminal)h(screen)f(width.)39
+b(A)26 b(v)-5 b(alue)27 b(of)f(0)h(will)f(cause)1110
+408 y(matc)m(hes)32 b(to)f(b)s(e)e(displa)m(y)m(ed)i(one)g(p)s(er)e
+(line.)41 b(The)30 b(default)h(v)-5 b(alue)31 b(is)f(-1.)630
+587 y Ft(completion-ignore-case)1110 696 y Fu(If)d(set)h(to)g(`)p
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
+(and)e(completion)1110 806 y(in)j(a)h(case-insensitiv)m(e)i(fashion.)40
b(The)30 b(default)h(v)-5 b(alue)30 b(is)h(`)p Ft(off)p
-Fu('.)630 682 y Ft(completion-map-case)1110 792 y Fu(If)22
+Fu('.)630 984 y Ft(completion-map-case)1110 1093 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 902 y(h)m(yphens)29
+b Fu(is)22 b(enabled,)i(Readline)f(treats)1110 1203 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
-1011 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
-(completion.)85 b(The)44 b(default)1110 1121 y(v)-5 b(alue)31
-b(is)f(`)p Ft(off)p Fu('.)630 1285 y Ft(completion-prefix-displa)o
-(y-le)o(ngth)1110 1395 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f
+1313 y(case-insensitiv)m(e)47 b(\014lename)e(matc)m(hing)g(and)f
+(completion.)85 b(The)44 b(default)1110 1422 y(v)-5 b(alue)31
+b(is)f(`)p Ft(off)p Fu('.)630 1600 y Ft(completion-prefix-displa)o
+(y-le)o(ngth)1110 1710 y Fu(The)h(length)g(in)g(c)m(haracters)i(of)f
(the)f(common)h(pre\014x)e(of)h(a)h(list)g(of)f(p)s(ossible)1110
-1504 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 1614
+1819 y(completions)g(that)f(is)g(displa)m(y)m(ed)g(without)g(mo)s
+(di\014cation.)41 b(When)29 b(set)h(to)h(a)1110 1929
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 1724
+(longer)j(than)e(this)g(v)-5 b(alue)27 b(are)1110 2039
y(replaced)k(with)f(an)g(ellipsis)h(when)e(displa)m(ying)i(p)s(ossible)
-f(completions.)630 1888 y Ft(completion-query-items)1110
-1998 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 2107 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 2217 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 2326 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
-2436 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 2545 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
-2655 y(nev)m(er)31 b(ask.)41 b(The)29 b(default)i(limit)g(is)g
-Ft(100)p Fu(.)630 2819 y Ft(convert-meta)1110 2929 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
-3039 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
-3148 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 3258
-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 3367 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
-3532 y Ft(disable-completion)1110 3641 y Fu(If)k(set)h(to)h(`)p
+f(completions.)630 2217 y Ft(completion-query-items)1110
+2326 y Fu(The)c(n)m(um)m(b)s(er)f(of)h(p)s(ossible)g(completions)h
+(that)g(determines)f(when)f(the)i(user)1110 2436 y(is)43
+b(ask)m(ed)g(whether)f(the)g(list)h(of)g(p)s(ossibilities)g(should)f(b)
+s(e)g(displa)m(y)m(ed.)77 b(If)1110 2545 y(the)29 b(n)m(um)m(b)s(er)f
+(of)h(p)s(ossible)g(completions)h(is)f(greater)h(than)f(or)g(equal)g
+(to)h(this)1110 2655 y(v)-5 b(alue,)45 b(Readline)e(will)f(ask)g
+(whether)f(or)h(not)g(the)g(user)f(wishes)g(to)i(view)1110
+2765 y(them;)33 b(otherwise,)f(they)g(are)g(simply)g(listed.)45
+b(This)31 b(v)-5 b(ariable)33 b(m)m(ust)e(b)s(e)g(set)1110
+2874 y(to)39 b(an)f(in)m(teger)i(v)-5 b(alue)39 b(greater)g(than)f(or)h
+(equal)g(to)g(0.)65 b(A)38 b(negativ)m(e)i(v)-5 b(alue)1110
+2984 y(means)30 b(Readline)h(should)f(nev)m(er)g(ask.)41
+b(The)30 b(default)h(limit)g(is)f Ft(100)p Fu(.)630 3162
+y Ft(convert-meta)1110 3271 y Fu(If)22 b(set)g(to)h(`)p
+Ft(on)p Fu(',)h(Readline)f(will)f(con)m(v)m(ert)i(c)m(haracters)f(with)
+f(the)g(eigh)m(th)h(bit)f(set)1110 3381 y(to)33 b(an)e
+Fm(asci)r(i)h Fu(k)m(ey)h(sequence)f(b)m(y)g(stripping)f(the)h(eigh)m
+(th)h(bit)f(and)f(pre\014xing)1110 3491 y(an)24 b Ft(ESC)g
+Fu(c)m(haracter,)j(con)m(v)m(erting)f(them)f(to)g(a)g(meta-pre\014xed)f
+(k)m(ey)h(sequence.)1110 3600 y(The)i(default)h(v)-5
+b(alue)28 b(is)f(`)p Ft(on)p Fu(',)i(but)d(will)i(b)s(e)f(set)h(to)g(`)
+p Ft(off)p Fu(')g(if)f(the)h(lo)s(cale)h(is)f(one)1110
+3710 y(that)j(con)m(tains)h(eigh)m(t-bit)g(c)m(haracters.)630
+3888 y Ft(disable-completion)1110 3998 y Fu(If)k(set)h(to)h(`)p
Ft(On)p Fu(',)g(Readline)f(will)g(inhibit)f(w)m(ord)h(completion.)60
-b(Completion)1110 3751 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
+b(Completion)1110 4107 y(c)m(haracters)28 b(will)e(b)s(e)f(inserted)h
(in)m(to)h(the)g(line)f(as)g(if)g(they)h(had)e(b)s(een)g(mapp)s(ed)1110
-3861 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p
-Ft(off)p Fu('.)630 4025 y Ft(echo-control-characters)1110
-4134 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 4244
+4217 y(to)31 b Ft(self-insert)p Fu(.)38 b(The)30 b(default)g(is)h(`)p
+Ft(off)p Fu('.)630 4395 y Ft(echo-control-characters)1110
+4504 y Fu(When)f(set)h(to)g(`)p Ft(on)p Fu(',)f(on)g(op)s(erating)h
+(systems)f(that)h(indicate)g(they)g(supp)s(ort)1110 4614
y(it,)i(readline)e(ec)m(ho)s(es)i(a)f(c)m(haracter)h(corresp)s(onding)d
-(to)j(a)f(signal)g(generated)1110 4354 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 4518
-y Ft(editing-mode)1110 4628 y Fu(The)d Ft(editing-mode)e
+(to)j(a)f(signal)g(generated)1110 4724 y(from)e(the)g(k)m(eyb)s(oard.)
+41 b(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630 4902
+y Ft(editing-mode)1110 5011 y Fu(The)d Ft(editing-mode)e
Fu(v)-5 b(ariable)29 b(con)m(trols)h(whic)m(h)e(default)h(set)h(of)e(k)
-m(ey)i(bind-)1110 4737 y(ings)25 b(is)g(used.)38 b(By)26
+m(ey)i(bind-)1110 5121 y(ings)25 b(is)g(used.)38 b(By)26
b(default,)g(Readline)g(starts)f(up)f(in)h(Emacs)g(editing)h(mo)s(de,)
-1110 4847 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
+1110 5230 y(where)j(the)g(k)m(eystrok)m(es)i(are)e(most)h(similar)f(to)
h(Emacs.)40 b(This)29 b(v)-5 b(ariable)30 b(can)1110
-4956 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 5121 y Ft(emacs-mode-string)1110 5230
-y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
-b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
-5340 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
-(of)h(the)f(primary)f(prompt)g(when)p eop end
-%%Page: 113 119
-TeXDict begin 113 118 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(113)1110 299 y(emacs)22
-b(editing)h(mo)s(de)e(is)h(activ)m(e.)40 b(The)21 b(v)-5
-b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f(bind-)1110
-408 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i(and)e(con)m
-(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110 518 y(escap)s(e)f
-(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p
-Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p Fu(')g(escap)s(es)g(to)g(b)s(egin)
-1110 628 y(and)37 b(end)g(sequences)h(of)f(non-prin)m(ting)h(c)m
-(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)1110 737
-y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f(in)m(to)g
-(the)f(mo)s(de)g(string.)61 b(The)1110 847 y(default)31
-b(is)f(`)p Ft(@)p Fu('.)630 1019 y Ft(enable-bracketed-paste)1110
-1129 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
-1238 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 1348
-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 1457 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 1567 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 1739 y Ft(enable-keypad)1110 1849
-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 1958
-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 2068 y(The)j(default)g(is)h(`)
-p Ft(off)p Fu('.)630 2240 y Ft(enable-meta-key)1110 2350
-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 2459
-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 2569 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 2679 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630
-2851 y Ft(expand-tilde)1110 2960 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 3070 y(w)m(ord)i(completion.)42
-b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 3242
-y Ft(history-preserve-point)1110 3352 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 3461 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 3571 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
-3680 y(is)30 b(`)p Ft(off)p Fu('.)630 3853 y Ft(history-size)1110
-3962 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 4072
-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 4181 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
-4291 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
-4401 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 4510
-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 4620
-y(b)s(e)c(set)h(to)g(500.)630 4792 y Ft(horizontal-scroll-mode)1110
-4902 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 5011 y(means)26 b(that)h(the)f(text)h
+5340 y(b)s(e)g(set)h(to)g(either)g(`)p Ft(emacs)p Fu(')e(or)h(`)p
+Ft(vi)p Fu('.)p eop end
+%%Page: 117 123
+TeXDict begin 117 122 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(117)630 299 y Ft
+(emacs-mode-string)1110 408 y Fu(If)33 b(the)h Fr(sho)m(w-mo)s
+(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
+(is)h(dis-)1110 518 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g
+(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
+628 y(emacs)g(editing)h(mo)s(de)e(is)h(activ)m(e.)40
+b(The)21 b(v)-5 b(alue)22 b(is)g(expanded)f(lik)m(e)h(a)h(k)m(ey)f
+(bind-)1110 737 y(ing,)27 b(so)f(the)f(standard)g(set)h(of)f(meta-)i
+(and)e(con)m(trol)i(pre\014xes)d(and)h(bac)m(kslash)1110
+847 y(escap)s(e)f(sequences)h(is)e(a)m(v)-5 b(ailable.)41
+b(Use)25 b(the)f(`)p Ft(\\1)p Fu(')f(and)h(`)p Ft(\\2)p
+Fu(')g(escap)s(es)g(to)g(b)s(egin)1110 956 y(and)37 b(end)g(sequences)h
+(of)f(non-prin)m(ting)h(c)m(haracters,)j(whic)m(h)c(can)h(b)s(e)f(used)
+1110 1066 y(to)h(em)m(b)s(ed)f(a)g(terminal)h(con)m(trol)h(sequence)f
+(in)m(to)g(the)f(mo)s(de)g(string.)61 b(The)1110 1176
+y(default)31 b(is)f(`)p Ft(@)p Fu('.)630 1332 y Ft
+(enable-bracketed-paste)1110 1442 y Fu(When)24 b(set)h(to)h(`)p
+Ft(On)p Fu(',)g(Readline)f(will)g(con\014gure)f(the)h(terminal)g(in)f
+(a)h(w)m(a)m(y)g(that)1110 1551 y(will)k(enable)f(it)h(to)g(insert)g
+(eac)m(h)g(paste)g(in)m(to)g(the)g(editing)g(bu\013er)e(as)i(a)f
+(single)1110 1661 y(string)33 b(of)f(c)m(haracters,)j(instead)e(of)g
+(treating)h(eac)m(h)g(c)m(haracter)g(as)f(if)f(it)i(had)1110
+1771 y(b)s(een)e(read)i(from)e(the)i(k)m(eyb)s(oard.)49
+b(This)32 b(can)h(prev)m(en)m(t)h(pasted)f(c)m(haracters)1110
+1880 y(from)d(b)s(eing)g(in)m(terpreted)h(as)f(editing)h(commands.)41
+b(The)29 b(default)i(is)f(`)p Ft(On)p Fu('.)630 2037
+y Ft(enable-keypad)1110 2146 y Fu(When)23 b(set)h(to)g(`)p
+Ft(on)p Fu(',)h(Readline)f(will)g(try)f(to)h(enable)g(the)f
+(application)i(k)m(eypad)1110 2256 y(when)h(it)h(is)f(called.)41
+b(Some)27 b(systems)f(need)h(this)f(to)h(enable)g(the)g(arro)m(w)g(k)m
+(eys.)1110 2365 y(The)j(default)g(is)h(`)p Ft(off)p Fu('.)630
+2522 y Ft(enable-meta-key)1110 2632 y Fu(When)40 b(set)g(to)g(`)p
+Ft(on)p Fu(',)j(Readline)d(will)g(try)g(to)g(enable)g(an)m(y)g(meta)h
+(mo)s(di\014er)1110 2741 y(k)m(ey)i(the)e(terminal)i(claims)f(to)h
+(supp)s(ort)d(when)h(it)h(is)g(called.)76 b(On)41 b(man)m(y)1110
+2851 y(terminals,)c(the)e(meta)h(k)m(ey)g(is)f(used)g(to)h(send)e(eigh)
+m(t-bit)j(c)m(haracters.)56 b(The)1110 2960 y(default)31
+b(is)f(`)p Ft(on)p Fu('.)630 3117 y Ft(expand-tilde)1110
+3226 y Fu(If)d(set)h(to)h(`)p Ft(on)p Fu(',)f(tilde)g(expansion)g(is)f
+(p)s(erformed)f(when)h(Readline)h(attempts)1110 3336
+y(w)m(ord)i(completion.)42 b(The)30 b(default)g(is)h(`)p
+Ft(off)p Fu('.)630 3493 y Ft(history-preserve-point)1110
+3602 y Fu(If)41 b(set)h(to)h(`)p Ft(on)p Fu(',)i(the)c(history)h(co)s
+(de)g(attempts)h(to)f(place)h(the)f(p)s(oin)m(t)f(\(the)1110
+3712 y(curren)m(t)35 b(cursor)g(p)s(osition\))g(at)h(the)g(same)f(lo)s
+(cation)i(on)e(eac)m(h)h(history)g(line)1110 3821 y(retriev)m(ed)h
+(with)f Ft(previous-history)c Fu(or)37 b Ft(next-history)p
+Fu(.)55 b(The)36 b(default)1110 3931 y(is)30 b(`)p Ft(off)p
+Fu('.)630 4088 y Ft(history-size)1110 4197 y Fu(Set)39
+b(the)g(maxim)m(um)g(n)m(um)m(b)s(er)f(of)h(history)g(en)m(tries)h(sa)m
+(v)m(ed)g(in)f(the)g(history)1110 4307 y(list.)51 b(If)34
+b(set)g(to)h(zero,)g(an)m(y)f(existing)h(history)f(en)m(tries)g(are)g
+(deleted)h(and)e(no)1110 4416 y(new)e(en)m(tries)i(are)f(sa)m(v)m(ed.)
+46 b(If)31 b(set)h(to)h(a)f(v)-5 b(alue)32 b(less)g(than)f(zero,)i(the)
+f(n)m(um)m(b)s(er)1110 4526 y(of)f(history)f(en)m(tries)h(is)g(not)g
+(limited.)42 b(By)30 b(default,)h(the)g(n)m(um)m(b)s(er)e(of)i(history)
+1110 4635 y(en)m(tries)j(is)f(not)g(limited.)49 b(If)32
+b(an)h(attempt)h(is)f(made)g(to)h(set)f Fr(history-size)39
+b Fu(to)1110 4745 y(a)34 b(non-n)m(umeric)f(v)-5 b(alue,)34
+b(the)g(maxim)m(um)f(n)m(um)m(b)s(er)f(of)h(history)h(en)m(tries)g
+(will)1110 4855 y(b)s(e)c(set)h(to)g(500.)630 5011 y
+Ft(horizontal-scroll-mode)1110 5121 y Fu(This)k(v)-5
+b(ariable)37 b(can)f(b)s(e)f(set)h(to)h(either)f(`)p
+Ft(on)p Fu(')g(or)g(`)p Ft(off)p Fu('.)57 b(Setting)36
+b(it)g(to)h(`)p Ft(on)p Fu(')1110 5230 y(means)26 b(that)h(the)f(text)h
(of)g(the)f(lines)g(b)s(eing)g(edited)h(will)f(scroll)h(horizon)m
-(tally)1110 5121 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 5230
-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 5340 y(v)-5
-b(ariable)31 b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)p eop
-end
-%%Page: 114 120
-TeXDict begin 114 119 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(114)630 299 y Ft(input-meta)1110
-408 y Fu(If)31 b(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
-518 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 628 y(terminal)k(claims)h
-(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5
-b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 737 y(Readline)24
+(tally)1110 5340 y(on)32 b(a)g(single)g(screen)g(line)g(when)e(they)i
+(are)g(longer)h(than)e(the)h(width)f(of)h(the)p eop end
+%%Page: 118 124
+TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(118)1110 299 y(screen,)28
+b(instead)g(of)f(wrapping)f(on)m(to)i(a)g(new)e(screen)i(line.)40
+b(This)26 b(v)-5 b(ariable)28 b(is)1110 408 y(automatically)k(set)e(to)
+g(`)p Ft(on)p Fu(')f(for)g(terminals)g(of)h(heigh)m(t)g(1.)41
+b(By)29 b(default,)h(this)1110 518 y(v)-5 b(ariable)31
+b(is)g(set)f(to)i(`)p Ft(off)p Fu('.)630 719 y Ft(input-meta)1110
+829 y Fu(If)f(set)g(to)h(`)p Ft(on)p Fu(',)g(Readline)g(will)f(enable)h
+(eigh)m(t-bit)h(input)d(\(it)i(will)f(not)h(clear)1110
+938 y(the)40 b(eigh)m(th)g(bit)g(in)f(the)h(c)m(haracters)h(it)f
+(reads\),)j(regardless)c(of)h(what)g(the)1110 1048 y(terminal)k(claims)
+h(it)f(can)g(supp)s(ort.)79 b(The)44 b(default)g(v)-5
+b(alue)44 b(is)g(`)p Ft(off)p Fu(',)j(but)1110 1157 y(Readline)24
b(will)h(set)f(it)g(to)h(`)p Ft(on)p Fu(')e(if)h(the)g(lo)s(cale)i(con)
-m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 847 y(The)30
+m(tains)f(eigh)m(t-bit)g(c)m(haracters.)1110 1267 y(The)30
b(name)g Ft(meta-flag)e Fu(is)j(a)f(synon)m(ym)g(for)g(this)h(v)-5
-b(ariable.)630 1029 y Ft(isearch-terminators)1110 1139
+b(ariable.)630 1468 y Ft(isearch-terminators)1110 1577
y Fu(The)51 b(string)h(of)g(c)m(haracters)h(that)f(should)e(terminate)j
-(an)f(incremen)m(tal)1110 1249 y(searc)m(h)25 b(without)g(subsequen)m
+(an)f(incremen)m(tal)1110 1687 y(searc)m(h)25 b(without)g(subsequen)m
(tly)g(executing)h(the)f(c)m(haracter)h(as)f(a)g(command)1110
-1358 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(109\).)62
-b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1468
+1797 y(\(see)38 b(Section)g(8.2.5)h([Searc)m(hing],)h(page)e(113\).)62
+b(If)37 b(this)g(v)-5 b(ariable)38 b(has)f(not)1110 1906
y(b)s(een)e(giv)m(en)h(a)g(v)-5 b(alue,)37 b(the)f(c)m(haracters)h
Ft(ESC)d Fu(and)h Fj(C-J)g Fu(will)h(terminate)g(an)1110
-1577 y(incremen)m(tal)c(searc)m(h.)630 1760 y Ft(keymap)192
+2016 y(incremen)m(tal)c(searc)m(h.)630 2217 y Ft(keymap)192
b Fu(Sets)64 b(Readline's)i(idea)f(of)f(the)h(curren)m(t)f(k)m(eymap)h
-(for)f(k)m(ey)h(binding)1110 1870 y(commands.)71 b(Built-in)41
+(for)f(k)m(ey)h(binding)1110 2326 y(commands.)71 b(Built-in)41
b Ft(keymap)e Fu(names)h(are)h Ft(emacs)p Fu(,)h Ft(emacs-standard)p
-Fu(,)1110 1979 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
+Fu(,)1110 2436 y Ft(emacs-meta)p Fu(,)99 b Ft(emacs-ctlx)p
Fu(,)f Ft(vi)p Fu(,)j Ft(vi-move)p Fu(,)f Ft(vi-command)p
-Fu(,)f(and)1110 2089 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
+Fu(,)f(and)1110 2545 y Ft(vi-insert)p Fu(.)81 b Ft(vi)44
b Fu(is)h(equiv)-5 b(alen)m(t)46 b(to)g Ft(vi-command)c
-Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2198 y(synon)m(ym\);)41
+Fu(\()p Ft(vi-move)h Fu(is)i(also)h(a)1110 2655 y(synon)m(ym\);)41
b Ft(emacs)c Fu(is)h(equiv)-5 b(alen)m(t)39 b(to)f Ft(emacs-standard)p
-Fu(.)59 b(Applications)1110 2308 y(ma)m(y)32 b(add)e(additional)i
+Fu(.)59 b(Applications)1110 2765 y(ma)m(y)32 b(add)e(additional)i
(names.)43 b(The)30 b(default)h(v)-5 b(alue)32 b(is)f
-Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2418 y(of)31
+Ft(emacs)p Fu(.)41 b(The)30 b(v)-5 b(alue)1110 2874 y(of)31
b(the)f Ft(editing-mode)d Fu(v)-5 b(ariable)31 b(also)h(a\013ects)f
-(the)g(default)g(k)m(eymap.)630 2600 y Ft(keyseq-timeout)1110
-2710 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 2819
+(the)g(default)g(k)m(eymap.)630 3075 y Ft(keyseq-timeout)1110
+3185 y Fu(Sp)s(eci\014es)25 b(the)g(duration)g(Readline)h(will)g(w)m
+(ait)g(for)g(a)f(c)m(haracter)i(when)e(read-)1110 3294
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 2929 y(sequence)j(using)e(the)i
+(form)g(a)g(complete)h(k)m(ey)1110 3404 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 3039 y(to)g(complete)g(a)f(longer)h(k)m(ey)f(sequence\).)49
+1110 3513 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
-3148 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 3258 y(quence.)c(Readline)26
+3623 y(the)43 b(timeout,)48 b(Readline)43 b(will)g(use)g(the)g(shorter)
+g(but)f(complete)j(k)m(ey)e(se-)1110 3733 y(quence.)c(Readline)26
b(uses)f(this)h(v)-5 b(alue)26 b(to)g(determine)g(whether)f(or)g(not)h
-(input)1110 3367 y(is)31 b(a)m(v)-5 b(ailable)33 b(on)d(the)h(curren)m
+(input)1110 3842 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
-3477 y(The)25 b(v)-5 b(alue)26 b(is)f(sp)s(eci\014ed)f(in)h
+3952 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 3587 y(Readline)e(will)g(w)m(ait)g(one)g(second)f(for)g
+1110 4061 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 3696 y(set)28 b(to)h(a)f(v)-5 b(alue)29 b(less)f(than)g(or)f
+b(is)1110 4171 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 3806 y(Readline)30 b(will)f(w)m(ait)i(un)m(til)e(another)h
+b(alue,)1110 4281 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
-3915 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 4098 y Ft(mark-directories)1110
-4208 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
+4390 y(sequence)i(to)g(complete.)42 b(The)30 b(default)g(v)-5
+b(alue)31 b(is)g Ft(500)p Fu(.)630 4591 y Ft(mark-directories)1110
+4701 y Fu(If)38 b(set)g(to)h(`)p Ft(on)p Fu(',)i(completed)e(directory)
f(names)g(ha)m(v)m(e)i(a)e(slash)g(app)s(ended.)1110
-4317 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
-4500 y Ft(mark-modified-lines)1110 4609 y Fu(This)k(v)-5
+4810 y(The)30 b(default)g(is)h(`)p Ft(on)p Fu('.)630
+5011 y Ft(mark-modified-lines)1110 5121 y Fu(This)k(v)-5
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 4719 y(terisk)f(\(`)p
+(Readline)f(to)h(displa)m(y)f(an)f(as-)1110 5230 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 4829 y(This)d(v)-5
-b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)630
-5011 y Ft(mark-symlinked-directori)o(es)1110 5121 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 5230 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 5340 y Ft(mark-directories)p
-Fu(\).)37 b(The)30 b(default)g(is)g(`)p Ft(off)p Fu('.)p
+(ha)m(v)m(e)i(b)s(een)e(mo)s(di\014ed.)1110 5340 y(This)d(v)-5
+b(ariable)31 b(is)f(`)p Ft(off)p Fu(')g(b)m(y)g(default.)p
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
-(match-hidden-files)1110 408 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 518 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 628 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p
+%%Page: 119 125
+TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(119)630 299 y Ft
+(mark-symlinked-directori)o(es)1110 408 y Fu(If)59 b(set)h(to)g(`)p
+Ft(on)p Fu(',)67 b(completed)60 b(names)f(whic)m(h)g(are)h(sym)m(b)s
+(olic)g(links)f(to)1110 518 y(directories)71 b(ha)m(v)m(e)f(a)g(slash)f
+(app)s(ended)f(\(sub)5 b(ject)70 b(to)g(the)g(v)-5 b(alue)70
+b(of)1110 628 y Ft(mark-directories)p Fu(\).)37 b(The)30
+b(default)g(is)g(`)p Ft(off)p Fu('.)630 778 y Ft(match-hidden-files)
+1110 888 y Fu(This)21 b(v)-5 b(ariable,)25 b(when)d(set)g(to)h(`)p
+Ft(on)p Fu(',)h(causes)f(Readline)g(to)g(matc)m(h)g(\014les)f(whose)
+1110 998 y(names)44 b(b)s(egin)g(with)g(a)g(`)p Ft(.)p
+Fu(')g(\(hidden)f(\014les\))i(when)e(p)s(erforming)g(\014lename)1110
+1107 y(completion.)75 b(If)41 b(set)g(to)h(`)p Ft(off)p
Fu(',)i(the)e(leading)g(`)p Ft(.)p Fu(')f(m)m(ust)g(b)s(e)g(supplied)f
-(b)m(y)1110 737 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f
+(b)m(y)1110 1217 y(the)34 b(user)g(in)g(the)g(\014lename)g(to)h(b)s(e)f
(completed.)53 b(This)33 b(v)-5 b(ariable)35 b(is)f(`)p
-Ft(on)p Fu(')g(b)m(y)1110 847 y(default.)630 1011 y Ft
-(menu-complete-display-pr)o(efix)1110 1121 y Fu(If)f(set)h(to)g(`)p
+Ft(on)p Fu(')g(b)m(y)1110 1326 y(default.)630 1477 y
+Ft(menu-complete-display-pr)o(efix)1110 1587 y Fu(If)f(set)h(to)g(`)p
Ft(on)p Fu(',)h(men)m(u)e(completion)i(displa)m(ys)e(the)h(common)g
-(pre\014x)e(of)i(the)1110 1230 y(list)k(of)g(p)s(ossible)f(completions)
+(pre\014x)e(of)i(the)1110 1696 y(list)k(of)g(p)s(ossible)f(completions)
i(\(whic)m(h)e(ma)m(y)h(b)s(e)f(empt)m(y\))i(b)s(efore)e(cycling)1110
-1340 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p
-Ft(off)p Fu('.)630 1504 y Ft(output-meta)1110 1614 y
+1806 y(through)30 b(the)g(list.)42 b(The)29 b(default)i(is)f(`)p
+Ft(off)p Fu('.)630 1956 y Ft(output-meta)1110 2066 y
Fu(If)35 b(set)h(to)g(`)p Ft(on)p Fu(',)h(Readline)f(will)g(displa)m(y)
-f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 1724
+f(c)m(haracters)i(with)e(the)h(eigh)m(th)g(bit)1110 2176
y(set)h(directly)g(rather)f(than)g(as)h(a)g(meta-pre\014xed)f(escap)s
-(e)h(sequence.)59 b(The)1110 1833 y(default)26 b(is)f(`)p
+(e)h(sequence.)59 b(The)1110 2285 y(default)26 b(is)f(`)p
Ft(off)p Fu(',)i(but)e(Readline)h(will)g(set)g(it)g(to)h(`)p
Ft(on)p Fu(')e(if)h(the)f(lo)s(cale)j(con)m(tains)1110
-1943 y(eigh)m(t-bit)k(c)m(haracters.)630 2107 y Ft(page-completions)
-1110 2217 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e
+2395 y(eigh)m(t-bit)k(c)m(haracters.)630 2545 y Ft(page-completions)
+1110 2655 y Fu(If)h(set)i(to)f(`)p Ft(on)p Fu(',)h(Readline)g(uses)e
(an)h(in)m(ternal)h Ft(more)p Fu(-lik)m(e)f(pager)g(to)h(displa)m(y)
-1110 2326 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g
+1110 2765 y(a)e(screenful)f(of)g(p)s(ossible)g(completions)i(at)f(a)g
(time.)47 b(This)31 b(v)-5 b(ariable)34 b(is)e(`)p Ft(on)p
-Fu(')1110 2436 y(b)m(y)e(default.)630 2600 y Ft
-(print-completions-horizo)o(ntal)o(ly)1110 2710 y Fu(If)23
+Fu(')1110 2874 y(b)m(y)e(default.)630 3025 y Ft
+(print-completions-horizo)o(ntal)o(ly)1110 3134 y Fu(If)23
b(set)i(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)f(displa)m(y)g
-(completions)h(with)f(matc)m(hes)h(sorted)1110 2819 y(horizon)m(tally)
+(completions)h(with)f(matc)m(hes)h(sorted)1110 3244 y(horizon)m(tally)
45 b(in)e(alphab)s(etical)i(order,)i(rather)c(than)g(do)m(wn)g(the)h
-(screen.)1110 2929 y(The)30 b(default)g(is)h(`)p Ft(off)p
-Fu('.)630 3093 y Ft(revert-all-at-newline)1110 3203 y
+(screen.)1110 3354 y(The)30 b(default)g(is)h(`)p Ft(off)p
+Fu('.)630 3504 y Ft(revert-all-at-newline)1110 3614 y
Fu(If)e(set)h(to)g(`)p Ft(on)p Fu(',)g(Readline)g(will)g(undo)f(all)h
-(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3313
+(c)m(hanges)h(to)f(history)g(lines)f(b)s(efore)1110 3724
y(returning)f(when)f Ft(accept-line)f Fu(is)j(executed.)41
-b(By)29 b(default,)g(history)g(lines)1110 3422 y(ma)m(y)42
+b(By)29 b(default,)g(history)g(lines)1110 3833 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 3532 y Ft(readline)p Fu(.)38
-b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 3696
-y Ft(show-all-if-ambiguous)1110 3806 y Fu(This)f(alters)i(the)f
+(across)g(calls)h(to)1110 3943 y Ft(readline)p Fu(.)38
+b(The)30 b(default)h(is)f(`)p Ft(off)p Fu('.)630 4093
+y Ft(show-all-if-ambiguous)1110 4203 y Fu(This)f(alters)i(the)f
(default)g(b)s(eha)m(vior)g(of)g(the)h(completion)g(functions.)40
-b(If)29 b(set)1110 3915 y(to)f(`)p Ft(on)p Fu(',)g(w)m(ords)f(whic)m(h)
+b(If)29 b(set)1110 4313 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 4025 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 4134 y(The)30
+1110 4422 y(the)39 b(matc)m(hes)h(to)g(b)s(e)e(listed)h(immediately)i
+(instead)e(of)g(ringing)g(the)g(b)s(ell.)1110 4532 y(The)30
b(default)g(v)-5 b(alue)31 b(is)g(`)p Ft(off)p Fu('.)630
-4299 y Ft(show-all-if-unmodified)1110 4408 y Fu(This)38
+4682 y Ft(show-all-if-unmodified)1110 4792 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 4518 y(fashion)25 b(similar)h(to)g
+(functions)e(in)h(a)1110 4902 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 4628 y(ha)m(v)m(e)32
+Ft(on)p Fu(',)f(w)m(ords)f(whic)m(h)1110 5011 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 4737 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
-f(completions)h(don't)f(share)g(a)h(common)1110 4847
+(ossible)f(par-)1110 5121 y(tial)43 b(completion)h(\(the)f(p)s(ossible)
+f(completions)h(don't)f(share)g(a)h(common)1110 5230
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 4956 y(ing)g(the)f(b)s(ell.)41
+(immediately)i(instead)e(of)h(ring-)1110 5340 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 5121 y Ft(show-mode-in-prompt)1110 5230 y Fu(If)24
-b(set)h(to)g(`)p Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s
-(eginning)g(of)g(the)h(prompt)e(indicating)1110 5340
-y(the)33 b(editing)h(mo)s(de:)46 b(emacs,)35 b(vi)e(command,)h(or)f(vi)
-h(insertion.)49 b(The)32 b(mo)s(de)p eop end
-%%Page: 116 122
-TeXDict begin 116 121 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(116)1110 299 y(strings)45
-b(are)h(user-settable)g(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8
-b Fu(\).)87 b(The)45 b(default)1110 408 y(v)-5 b(alue)31
-b(is)f(`)p Ft(off)p Fu('.)630 558 y Ft(skip-completed-text)1110
-667 y Fu(If)i(set)i(to)f(`)p Ft(on)p Fu(',)h(this)f(alters)g(the)g
-(default)g(completion)h(b)s(eha)m(vior)f(when)f(in-)1110
-777 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
-887 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 996 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 1106 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
-1215 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
-1325 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 1435 y(`)p Ft(Makefile)p
+Fu('.)p eop end
+%%Page: 120 126
+TeXDict begin 120 125 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(120)630 299 y Ft
+(show-mode-in-prompt)1110 408 y Fu(If)24 b(set)h(to)g(`)p
+Ft(on)p Fu(',)g(add)f(a)h(string)f(to)h(the)f(b)s(eginning)g(of)g(the)h
+(prompt)e(indicating)1110 518 y(the)33 b(editing)h(mo)s(de:)46
+b(emacs,)35 b(vi)e(command,)h(or)f(vi)h(insertion.)49
+b(The)32 b(mo)s(de)1110 628 y(strings)45 b(are)h(user-settable)g
+(\(e.g.,)51 b Fr(emacs-mo)s(de-string)8 b Fu(\).)87 b(The)45
+b(default)1110 737 y(v)-5 b(alue)31 b(is)f(`)p Ft(off)p
+Fu('.)630 887 y Ft(skip-completed-text)1110 996 y Fu(If)i(set)i(to)f(`)
+p Ft(on)p Fu(',)h(this)f(alters)g(the)g(default)g(completion)h(b)s(eha)
+m(vior)f(when)f(in-)1110 1106 y(serting)d(a)h(single)g(matc)m(h)f(in)m
+(to)h(the)g(line.)40 b(It's)30 b(only)f(activ)m(e)i(when)d(p)s(erform-)
+1110 1215 y(ing)35 b(completion)h(in)e(the)h(middle)f(of)h(a)f(w)m
+(ord.)53 b(If)35 b(enabled,)g(readline)g(do)s(es)1110
+1325 y(not)41 b(insert)f(c)m(haracters)i(from)e(the)h(completion)h
+(that)f(matc)m(h)g(c)m(haracters)1110 1435 y(after)c(p)s(oin)m(t)g(in)g
+(the)g(w)m(ord)f(b)s(eing)g(completed,)k(so)d(p)s(ortions)f(of)h(the)g
+(w)m(ord)1110 1544 y(follo)m(wing)c(the)f(cursor)f(are)h(not)g
+(duplicated.)45 b(F)-8 b(or)32 b(instance,)h(if)f(this)f(is)h(en-)1110
+1654 y(abled,)43 b(attempting)f(completion)g(when)d(the)i(cursor)f(is)g
+(after)h(the)g(`)p Ft(e)p Fu(')f(in)1110 1763 y(`)p Ft(Makefile)p
Fu(')c(will)i(result)f(in)g(`)p Ft(Makefile)p Fu(')f(rather)h(than)h(`)
-p Ft(Makefilefile)p Fu(',)1110 1544 y(assuming)d(there)g(is)h(a)f
+p Ft(Makefilefile)p Fu(',)1110 1873 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 1654 y(is)30 b(`)p Ft(off)p Fu('.)630 1803
-y Ft(vi-cmd-mode-string)1110 1913 y Fu(If)j(the)h Fr(sho)m(w-mo)s
+b(alue)1110 1983 y(is)30 b(`)p Ft(off)p Fu('.)630 2132
+y Ft(vi-cmd-mode-string)1110 2242 y Fu(If)j(the)h Fr(sho)m(w-mo)s
(de-in-prompt)h Fu(v)-5 b(ariable)35 b(is)e(enabled,)i(this)f(string)f
-(is)h(dis-)1110 2022 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
+(is)h(dis-)1110 2351 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)
g(last)h(line)f(of)h(the)f(primary)f(prompt)g(when)1110
-2132 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)
+2461 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command)
g(mo)s(de.)46 b(The)31 b(v)-5 b(alue)33 b(is)f(ex-)1110
-2242 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
+2570 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f
(standard)f(set)h(of)g(meta-)h(and)e(con)m(trol)1110
-2351 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)
+2680 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is)
g(a)m(v)-5 b(ailable.)57 b(Use)35 b(the)g(`)p Ft(\\1)p
-Fu(')1110 2461 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s
+Fu(')1110 2790 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s
(egin)g(and)f(end)g(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110
-2570 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
-h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 2680
+2899 y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)
+h(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3009
y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
-Ft(\(cmd\))p Fu('.)630 2829 y Ft(vi-ins-mode-string)1110
-2939 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
+Ft(\(cmd\))p Fu('.)630 3158 y Ft(vi-ins-mode-string)1110
+3268 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5
b(ariable)35 b(is)e(enabled,)i(this)f(string)f(is)h(dis-)1110
-3049 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
-(of)h(the)f(primary)f(prompt)g(when)1110 3158 y(vi)35
+3377 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the)g(last)h(line)f
+(of)h(the)f(primary)f(prompt)g(when)1110 3487 y(vi)35
b(editing)h(mo)s(de)e(is)i(activ)m(e)h(and)d(in)h(insertion)g(mo)s(de.)
-54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3268 y(panded)26
+54 b(The)35 b(v)-5 b(alue)35 b(is)g(ex-)1110 3597 y(panded)26
b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f(standard)f(set)h(of)g
-(meta-)h(and)e(con)m(trol)1110 3377 y(pre\014xes)34 b(and)g(bac)m
+(meta-)h(and)e(con)m(trol)1110 3706 y(pre\014xes)34 b(and)g(bac)m
(kslash)i(escap)s(e)g(sequences)f(is)g(a)m(v)-5 b(ailable.)57
-b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3487 y(and)23
+b(Use)35 b(the)g(`)p Ft(\\1)p Fu(')1110 3816 y(and)23
b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s(egin)g(and)f(end)g
-(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3597
+(sequences)i(of)f(non-prin)m(ting)f(c)m(harac-)1110 3925
y(ters,)31 b(whic)m(h)g(can)g(b)s(e)f(used)g(to)h(em)m(b)s(ed)f(a)h
-(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 3706
+(terminal)h(con)m(trol)g(sequence)f(in)m(to)1110 4035
y(the)g(mo)s(de)f(string.)40 b(The)30 b(default)h(is)f(`)p
-Ft(\(ins\))p Fu('.)630 3856 y Ft(visible-stats)1110 3965
+Ft(\(ins\))p Fu('.)630 4184 y Ft(visible-stats)1110 4294
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
-4075 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 4224
-y(Key)f(Bindings)630 4334 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
+4403 y(\014lename)e(when)e(listing)i(p)s(ossible)f(completions.)42
+b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)150 4553
+y(Key)f(Bindings)630 4663 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h
(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 4443 y(need)27 b(to)i(\014nd)d(the)i(name)f(of)
+b(First)43 b(y)m(ou)630 4772 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 4553 y(sections)37 b(con)m(tain)g(tables)g
+b(The)27 b(follo)m(wing)630 4882 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 4663 y(and)30 b(a)h(short)f(description)g(of)h(what)f
-(the)g(command)h(do)s(es.)630 4792 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
+m(y)-8 b(,)630 4991 y(and)30 b(a)h(short)f(description)g(of)h(what)f
+(the)g(command)h(do)s(es.)630 5121 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g
(name)g(of)g(the)g(command,)h(simply)f(place)h(on)e(a)i(line)f(in)g
-(the)g(init)630 4902 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m
+(the)g(init)630 5230 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 5011 y(the)f(name)h(of)f(the)g(command.)46 b(There)32
+630 5340 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 5121 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 5230 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 5340 y(comfortable.)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)35
-b(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 408 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 538 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 647 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 757 y(Builtins],)31 b(page)g(50.)630
-906 y Fr(k)m(eyname)5 b Fu(:)42 b Fr(function-name)35
-b Fu(or)c Fr(macro)1110 1015 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 1144 y Ft(Control-u:)45
-b(universal-argument)1350 1254 y(Meta-Rubout:)f(backward-kill-word)1350
-1363 y(Control-o:)h(">)i(output")1110 1493 y Fu(In)94
-b(the)g(example)h(ab)s(o)m(v)m(e,)112 b Fj(C-u)94 b Fu(is)g(b)s(ound)f
-(to)i(the)f(function)1110 1602 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
-1712 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 1821 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 1931 y(output)p Fu(')29 b(in)m(to)i(the)g
-(line\).)1110 2060 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 2170
-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 2279 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 2428 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 2538
-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
-2647 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 2757
-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 2866
-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 2976 y(recognized.)1350
-3105 y Ft("\\C-u":)46 b(universal-argument)1350 3215
-y("\\C-x\\C-r":)f(re-read-init-file)1350 3324 y("\\e[11~":)g("Function)
-h(Key)g(1")1110 3453 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
+(and)p eop end
+%%Page: 121 127
+TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(121)630 299 y(the)41
+b(colon)h({)f(that)g(will)g(b)s(e)g(in)m(terpreted)g(as)g(part)f(of)h
+(the)g(k)m(ey)h(name.)72 b(The)40 b(name)h(of)630 408
+y(the)35 b(k)m(ey)g(can)g(b)s(e)f(expressed)f(in)i(di\013eren)m(t)g(w)m
+(a)m(ys,)h(dep)s(ending)d(on)h(what)h(y)m(ou)g(\014nd)e(most)630
+518 y(comfortable.)630 650 y(In)i(addition)h(to)h(command)f(names,)i
+(readline)e(allo)m(ws)h(k)m(eys)g(to)g(b)s(e)e(b)s(ound)f(to)j(a)f
+(string)630 759 y(that)31 b(is)f(inserted)h(when)e(the)i(k)m(ey)g(is)f
+(pressed)g(\(a)h Fr(macro)5 b Fu(\).)630 891 y(The)42
+b Ft(bind)30 b(-p)42 b Fu(command)h(displa)m(ys)g(Readline)g(function)g
+(names)g(and)f(bindings)g(in)h(a)630 1000 y(format)37
+b(that)h(can)f(put)f(directly)i(in)m(to)g(an)f(initialization)j
+(\014le.)60 b(See)38 b(Section)f(4.2)i([Bash)630 1110
+y(Builtins],)31 b(page)g(51.)630 1263 y Fr(k)m(eyname)5
+b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110
+1373 y(k)m(eyname)k Fu(is)29 b(the)f(name)h(of)g(a)g(k)m(ey)h(sp)s
+(elled)e(out)h(in)g(English.)39 b(F)-8 b(or)30 b(example:)1350
+1504 y Ft(Control-u:)45 b(universal-argument)1350 1614
+y(Meta-Rubout:)f(backward-kill-word)1350 1724 y(Control-o:)h(">)i
+(output")1110 1855 y Fu(In)94 b(the)g(example)h(ab)s(o)m(v)m(e,)112
+b Fj(C-u)94 b Fu(is)g(b)s(ound)f(to)i(the)f(function)1110
+1965 y Ft(universal-argument)p Fu(,)124 b Fj(M-DEL)107
+b Fu(is)i(b)s(ound)e(to)j(the)f(function)1110 2074 y
+Ft(backward-kill-word)p Fu(,)75 b(and)69 b Fj(C-o)g Fu(is)h(b)s(ound)e
+(to)j(run)d(the)i(macro)1110 2184 y(expressed)45 b(on)h(the)g(righ)m(t)
+g(hand)e(side)i(\(that)h(is,)i(to)e(insert)e(the)h(text)h(`)p
+Ft(>)1110 2293 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110
+2425 y(A)62 b(n)m(um)m(b)s(er)e(of)i(sym)m(b)s(olic)h(c)m(haracter)g
+(names)f(are)g(recognized)h(while)1110 2534 y(pro)s(cessing)40
+b(this)f(k)m(ey)i(binding)e(syn)m(tax:)60 b Fr(DEL)p
+Fu(,)42 b Fr(ESC)p Fu(,)g Fr(ESCAPE)p Fu(,)f Fr(LFD)p
+Fu(,)1110 2644 y Fr(NEWLINE)p Fu(,)31 b Fr(RET)p Fu(,)f
+Fr(RETURN)p Fu(,)g Fr(R)m(UBOUT)p Fu(,)h Fr(SP)-8 b(A)m(CE)p
+Fu(,)31 b Fr(SPC)p Fu(,)e(and)h Fr(T)-8 b(AB)p Fu(.)630
+2798 y Ft(")p Fr(k)m(eyseq)r Ft(")p Fu(:)41 b Fr(function-name)36
+b Fu(or)30 b Fr(macro)1110 2907 y(k)m(eyseq)k Fu(di\013ers)d(from)f
+Fr(k)m(eyname)37 b Fu(ab)s(o)m(v)m(e)32 b(in)f(that)h(strings)f
+(denoting)g(an)g(en-)1110 3017 y(tire)j(k)m(ey)h(sequence)f(can)g(b)s
+(e)f(sp)s(eci\014ed,)h(b)m(y)f(placing)i(the)f(k)m(ey)g(sequence)g(in)
+1110 3126 y(double)29 b(quotes.)41 b(Some)29 b Fm(gnu)h
+Fu(Emacs)f(st)m(yle)i(k)m(ey)f(escap)s(es)g(can)g(b)s(e)f(used,)g(as)
+1110 3236 y(in)k(the)h(follo)m(wing)i(example,)f(but)e(the)h(sp)s
+(ecial)h(c)m(haracter)g(names)f(are)g(not)1110 3345 y(recognized.)1350
+3477 y Ft("\\C-u":)46 b(universal-argument)1350 3587
+y("\\C-x\\C-r":)f(re-read-init-file)1350 3696 y("\\e[11~":)g("Function)
+h(Key)g(1")1110 3828 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74
b Fj(C-u)64 b Fu(is)g(again)i(b)s(ound)c(to)k(the)e(function)1110
-3563 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 3673
+3937 y Ft(universal-argument)39 b Fu(\(just)k(as)h(it)g(w)m(as)g(in)g
+(the)f(\014rst)g(example\),)49 b(`)p Fj(C-x)1110 4047
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
-3782 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 3931 y(The)g(follo)m(wing)i
+4156 y(~)p Fu(')g(is)h(b)s(ound)d(to)j(insert)f(the)h(text)g(`)p
+Ft(Function)e(Key)g(1)p Fu('.)630 4310 y(The)g(follo)m(wing)i
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 4041 y(k)m(ey)i(sequences:)630
-4189 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
-4338 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4487 y
+b(ailable)32 b(when)d(sp)s(ecifying)630 4419 y(k)m(ey)i(sequences:)630
+4573 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630
+4726 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 4880 y
Fj(\\e)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)630
-4635 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4784 y Fj(\\)p
+5033 y Fj(\\\\)384 b Fu(bac)m(kslash)630 5187 y Fj(\\)p
Ft(")g(")p Fu(,)30 b(a)h(double)f(quotation)i(mark)630
-4933 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
-(ostrophe)630 5082 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 5191 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630
-5340 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))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)630 299 y Ft(\\b)384
-b Fu(bac)m(kspace)630 456 y Ft(\\d)g Fu(delete)630 613
-y Ft(\\f)g Fu(form)30 b(feed)630 770 y Ft(\\n)384 b Fu(newline)630
-928 y Ft(\\r)g Fu(carriage)32 b(return)630 1085 y Ft(\\t)384
-b Fu(horizon)m(tal)32 b(tab)630 1242 y Ft(\\v)384 b Fu(v)m(ertical)32
-b(tab)630 1399 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 1509 y(three)c(digits\))630
-1666 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 1775 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e
-(digits\))630 1933 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 2042 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 2152 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 2261 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
+5340 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s
+(ostrophe)p eop end
+%%Page: 122 128
+TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(122)630 299 y(In)27
+b(addition)h(to)g(the)g Fm(gnu)f Fu(Emacs)h(st)m(yle)h(escap)s(e)f
+(sequences,)h(a)f(second)f(set)h(of)g(bac)m(kslash)630
+408 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 570 y
+Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 731 y Ft(\\b)384
+b Fu(bac)m(kspace)630 892 y Ft(\\d)g Fu(delete)630 1053
+y Ft(\\f)g Fu(form)30 b(feed)630 1214 y Ft(\\n)384 b
+Fu(newline)630 1375 y Ft(\\r)g Fu(carriage)32 b(return)630
+1536 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 1697
+y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 1858 y Ft(\\)p
+Fj(nnn)288 b Fu(the)35 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5
+b(alue)35 b(is)g(the)f(o)s(ctal)i(v)-5 b(alue)35 b Fr(nnn)e
+Fu(\(one)i(to)1110 1968 y(three)c(digits\))630 2129 y
+Ft(\\x)p Fj(HH)288 b Fu(the)38 b(eigh)m(t-bit)i(c)m(haracter)g(whose)e
+(v)-5 b(alue)39 b(is)f(the)h(hexadecimal)g(v)-5 b(alue)39
+b Fr(HH)1110 2239 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630
+2400 y(When)37 b(en)m(tering)h(the)g(text)g(of)g(a)g(macro,)i(single)e
+(or)f(double)g(quotes)h(m)m(ust)f(b)s(e)g(used)f(to)630
+2509 y(indicate)23 b(a)e(macro)h(de\014nition.)38 b(Unquoted)21
+b(text)i(is)e(assumed)g(to)h(b)s(e)f(a)h(function)f(name.)38
+b(In)630 2619 y(the)22 b(macro)f(b)s(o)s(dy)-8 b(,)23
+b(the)e(bac)m(kslash)h(escap)s(es)g(describ)s(ed)e(ab)s(o)m(v)m(e)j
+(are)e(expanded.)37 b(Bac)m(kslash)630 2729 y(will)j(quote)h(an)m(y)f
+(other)g(c)m(haracter)i(in)d(the)i(macro)f(text,)k(including)39
b(`)p Ft(")p Fu(')h(and)g(`)p Ft(')p Fu('.)69 b(F)-8
-b(or)630 2371 y(example,)28 b(the)e(follo)m(wing)h(binding)d(will)i
+b(or)630 2838 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 2504 y Ft("\\C-x\\\\":)45
-b("\\\\")150 2701 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
-150 2848 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
+Ft(\\)p Fu(')f(in)m(to)g(the)g(line:)870 2974 y Ft("\\C-x\\\\":)45
+b("\\\\")150 3175 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs)
+150 3322 y Fu(Readline)c(implemen)m(ts)g(a)h(facilit)m(y)g(similar)f
(in)g(spirit)f(to)i(the)f(conditional)h(compilation)g(features)f(of)150
-2958 y(the)31 b(C)f(prepro)s(cessor)g(whic)m(h)g(allo)m(ws)i(k)m(ey)g
+3431 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 3067 y(result)f(of)h(tests.)41
+(erformed)f(as)i(the)150 3541 y(result)f(of)h(tests.)41
b(There)30 b(are)h(four)f(parser)f(directiv)m(es)j(used.)150
-3225 y Ft($if)336 b Fu(The)31 b Ft($if)f Fu(construct)i(allo)m(ws)h
+3703 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 3334 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h
+(the)630 3812 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h
(application)g(using)f(Readline.)59 b(The)36 b(text)h(of)f(the)h(test,)
-630 3444 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f
+630 3922 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f
(to)h(the)g(end)f(of)h(the)f(line;)i(unless)e(otherwise)630
-3553 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
-(it.)630 3711 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e
+4031 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i
+(it.)630 4193 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e
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 3820 y(line)44 b(is)f(in)g Ft(emacs)f
+(whether)e(Read-)1110 4302 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 3930 y(with)c(the)h(`)p Ft(set)29 b(keymap)p
+(conjunction)1110 4412 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
-4039 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 4149 y(starting)f(out)g
-(in)f Ft(emacs)f Fu(mo)s(de.)630 4306 y Ft(term)288 b
+4521 y(the)32 b Ft(emacs-standard)c Fu(and)j Ft(emacs-ctlx)d
+Fu(k)m(eymaps)k(only)g(if)g(Readline)g(is)1110 4631 y(starting)f(out)g
+(in)f Ft(emacs)f Fu(mo)s(de.)630 4792 y Ft(term)288 b
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 4416 y(ings,)38
+(terminal-sp)s(eci\014c)g(k)m(ey)h(bind-)1110 4902 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 4525 y(function)24 b(k)m(eys.)39
+(the)g(terminal's)1110 5011 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 4635 y(b)s(oth)k(the)h(full)g
+Ft(=)p Fu(')g(is)g(tested)h(against)1110 5121 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 4744 y(name)k(b)s(efore)f(the)g(\014rst)g(`)p
+(terminal)1110 5230 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 4854 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
-630 5011 y Ft(version)144 b Fu(The)44 b Ft(version)f
-Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s(erform)d(comparisons)i
-(against)1110 5121 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74
-b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g(curren)m(t)1110
-5230 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h
-(op)s(erators)f(includes)f(`)p Ft(=)p Fu(')h(\(and)1110
-5340 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p
-Ft(<=)p Fu(',)h(`)p Ft(>=)p Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p
-Ft(>)p Fu('.)46 b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h
-(on)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)1110 299 y(the)34
-b(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f(a)g(ma)5
-b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110 408 y(an)45
-b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44 b(an)i(optional)g(minor)f
-(v)m(ersion)h(\(e.g.,)1110 518 y(`)p Ft(7.1)p Fu('\).)40
-b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g(omitted,)h(it)f(is)g(assumed)
-f(to)h(b)s(e)f(`)p Ft(0)p Fu('.)40 b(The)1110 628 y(op)s(erator)34
-b(ma)m(y)g(b)s(e)f(separated)g(from)g(the)h(string)f
-Ft(version)f Fu(and)h(from)g(the)1110 737 y(v)m(ersion)39
-b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f(whitespace.)67
-b(The)38 b(follo)m(wing)i(example)1110 847 y(sets)31
-b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m(ersion)f(b)s(eing)g
-(used)g(is)g(7.0)i(or)e(new)m(er:)1350 981 y Ft($if)47
-b(version)f(>=)h(7.0)1350 1091 y(set)g(show-mode-in-prompt)42
-b(on)1350 1200 y($endif)630 1360 y(application)1110 1469
-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 1579 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 1689 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 1798 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 1908 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 2017 y(the)e(curren)m(t)f
-(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 2152 y Ft($if)47
-b(Bash)1350 2262 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)
-1350 2371 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2481 y($endif)630
-2640 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39
+(oth)f Ft(sun)g Fu(and)1110 5340 y Ft(sun-cmd)p Fu(,)c(for)h(instance.)
+p eop end
+%%Page: 123 129
+TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(123)630 299 y Ft(version)144
+b Fu(The)44 b Ft(version)f Fu(test)i(ma)m(y)h(b)s(e)e(used)f(to)j(p)s
+(erform)d(comparisons)i(against)1110 408 y(sp)s(eci\014c)c(Readline)i
+(v)m(ersions.)74 b(The)42 b Ft(version)d Fu(expands)i(to)h(the)g
+(curren)m(t)1110 518 y(Readline)25 b(v)m(ersion.)39 b(The)23
+b(set)h(of)g(comparison)h(op)s(erators)f(includes)f(`)p
+Ft(=)p Fu(')h(\(and)1110 628 y(`)p Ft(==)p Fu('\),)33
+b(`)p Ft(!=)p Fu(',)f(`)p Ft(<=)p Fu(',)h(`)p Ft(>=)p
+Fu(',)f(`)p Ft(<)p Fu(',)h(and)e(`)p Ft(>)p Fu('.)46
+b(The)31 b(v)m(ersion)i(n)m(um)m(b)s(er)d(supplied)h(on)1110
+737 y(the)j(righ)m(t)h(side)f(of)g(the)g(op)s(erator)g(consists)h(of)f
+(a)g(ma)5 b(jor)35 b(v)m(ersion)f(n)m(um)m(b)s(er,)1110
+847 y(an)45 b(optional)i(decimal)f(p)s(oin)m(t,)k(and)44
+b(an)i(optional)g(minor)f(v)m(ersion)h(\(e.g.,)1110 956
+y(`)p Ft(7.1)p Fu('\).)40 b(If)27 b(the)h(minor)f(v)m(ersion)h(is)g
+(omitted,)h(it)f(is)g(assumed)f(to)h(b)s(e)f(`)p Ft(0)p
+Fu('.)40 b(The)1110 1066 y(op)s(erator)34 b(ma)m(y)g(b)s(e)f(separated)
+g(from)g(the)h(string)f Ft(version)f Fu(and)h(from)g(the)1110
+1176 y(v)m(ersion)39 b(n)m(um)m(b)s(er)f(argumen)m(t)h(b)m(y)f
+(whitespace.)67 b(The)38 b(follo)m(wing)i(example)1110
+1285 y(sets)31 b(a)g(v)-5 b(ariable)31 b(if)f(the)h(Readline)g(v)m
+(ersion)f(b)s(eing)g(used)g(is)g(7.0)i(or)e(new)m(er:)1350
+1440 y Ft($if)47 b(version)f(>=)h(7.0)1350 1550 y(set)g
+(show-mode-in-prompt)42 b(on)1350 1659 y($endif)630 1860
+y(application)1110 1970 y Fu(The)21 b Fr(application)j
+Fu(construct)e(is)g(used)f(to)i(include)f(application-sp)s(eci\014c)h
+(set-)1110 2079 y(tings.)39 b(Eac)m(h)26 b(program)e(using)g(the)h
+(Readline)g(library)g(sets)g(the)g Fr(application)1110
+2189 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g(for)f(a)g(particular)h
+(v)-5 b(alue.)39 b(This)22 b(could)h(b)s(e)g(used)f(to)1110
+2298 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e(useful)g(for)h
+(a)g(sp)s(eci\014c)f(program.)48 b(F)-8 b(or)1110 2408
+y(instance,)35 b(the)e(follo)m(wing)h(command)f(adds)f(a)i(k)m(ey)f
+(sequence)h(that)f(quotes)1110 2518 y(the)e(curren)m(t)f(or)g(previous)
+g(w)m(ord)g(in)g(Bash:)1350 2673 y Ft($if)47 b(Bash)1350
+2782 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word)1350
+2892 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 3002 y($endif)630
+3202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39
b Fu(construct)33 b(pro)m(vides)g(simple)g(equalit)m(y)i(tests)e(for)g
-(Readline)1110 2750 y(v)-5 b(ariables)32 b(and)f(v)-5
+(Readline)1110 3312 y(v)-5 b(ariables)32 b(and)f(v)-5
b(alues.)45 b(The)32 b(p)s(ermitted)f(comparison)h(op)s(erators)f(are)i
-(`)p Ft(=)p Fu(',)1110 2859 y(`)p Ft(==)p Fu(',)49 b(and)44
+(`)p Ft(=)p Fu(',)1110 3421 y(`)p Ft(==)p Fu(',)49 b(and)44
b(`)p Ft(!=)p Fu('.)85 b(The)44 b(v)-5 b(ariable)46 b(name)f(m)m(ust)g
-(b)s(e)g(separated)g(from)g(the)1110 2969 y(comparison)25
+(b)s(e)g(separated)g(from)g(the)1110 3531 y(comparison)25
b(op)s(erator)g(b)m(y)g(whitespace;)j(the)d(op)s(erator)g(ma)m(y)g(b)s
-(e)f(separated)1110 3078 y(from)33 b(the)h(v)-5 b(alue)35
+(e)f(separated)1110 3641 y(from)33 b(the)h(v)-5 b(alue)35
b(on)f(the)g(righ)m(t)g(hand)f(side)h(b)m(y)f(whitespace.)52
-b(Both)35 b(string)1110 3188 y(and)i(b)s(o)s(olean)g(v)-5
+b(Both)35 b(string)1110 3750 y(and)i(b)s(o)s(olean)g(v)-5
b(ariables)38 b(ma)m(y)h(b)s(e)d(tested.)63 b(Bo)s(olean)39
-b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3298 y(tested)46
+b(v)-5 b(ariables)38 b(m)m(ust)g(b)s(e)1110 3860 y(tested)46
b(against)g(the)f(v)-5 b(alues)46 b Fr(on)f Fu(and)f
Fr(o\013)p Fu(.)85 b(The)45 b(follo)m(wing)h(example)g(is)1110
-3407 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e
-Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 3542 y
-Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3651 y(set)f
-(show-mode-in-prompt)42 b(on)1350 3761 y($endif)150 3920
+3969 y(equiv)-5 b(alen)m(t)32 b(to)f(the)f Ft(mode=emacs)e
+Fu(test)j(describ)s(ed)f(ab)s(o)m(v)m(e:)1350 4124 y
+Ft($if)47 b(editing-mode)d(==)k(emacs)1350 4234 y(set)f
+(show-mode-in-prompt)42 b(on)1350 4344 y($endif)150 4544
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
-4080 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i
+4745 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 4239 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m
+(fails.)150 4945 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 4349 y(and)38 b(bindings)f(from)h(that)i(\014le.)65
+(commands)630 5055 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 4458 y Ft(/etc/inputrc)p Fu(:)870 4593 y Ft($include)46
-b(/etc/inputrc)150 4792 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150
-4939 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 5049 y(conditional)j(syn)m
-(tax.)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)390 408 y Ft(#)47
+(from)630 5165 y Ft(/etc/inputrc)p Fu(:)870 5320 y Ft($include)46
+b(/etc/inputrc)p eop end
+%%Page: 124 130
+TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(124)150 299 y Fk(8.3.3)63
+b(Sample)41 b(Init)g(File)150 446 y Fu(Here)27 b(is)f(an)h(example)g
+(of)f(an)h Fr(inputrc)k Fu(\014le.)39 b(This)26 b(illustrates)h(k)m(ey)
+h(binding,)e(v)-5 b(ariable)27 b(assignmen)m(t,)i(and)150
+555 y(conditional)j(syn)m(tax.)p eop end
+%%Page: 125 131
+TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(125)390 408 y Ft(#)47
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)
@@ -16862,9 +17192,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: 121 127
-TeXDict begin 121 126 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(121)390 299 y Ft(#"\\M-\\C-[A":)
+%%Page: 126 132
+TeXDict begin 126 131 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(126)390 299 y Ft(#"\\M-\\C-[A":)
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)
@@ -16893,13 +17223,13 @@ y($endif)390 3477 y(#)i(use)g(a)h(visible)e(bell)g(if)h(one)g(is)h
(convert-meta)d(off)390 4573 y(#)j(display)f(characters)f(with)i(the)g
(eighth)f(bit)h(set)g(directly)390 4682 y(#)g(rather)g(than)f(as)h
(meta-prefixed)e(characters)390 4792 y(set)i(output-meta)e(on)390
-5011 y(#)i(if)h(there)e(are)h(more)g(than)f(150)h(possible)f
-(completions)e(for)390 5121 y(#)j(a)h(word,)e(ask)h(the)g(user)g(if)g
-(he)g(wants)f(to)i(see)f(all)f(of)i(them)390 5230 y(set)f
+5011 y(#)i(if)h(there)e(are)h(150)g(or)g(more)g(possible)e(completions)
+g(for)i(a)g(word,)390 5121 y(#)g(ask)g(whether)f(or)h(not)g(the)g(user)
+g(wants)f(to)h(see)g(all)g(of)g(them)390 5230 y(set)g
(completion-query-items)42 b(150)p eop end
-%%Page: 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)390 299 y Ft(#)47
+%%Page: 127 133
+TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(127)390 299 y Ft(#)47
b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390
628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390
847 y($endif)150 1089 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands)
@@ -16909,7 +17239,7 @@ b(Y)-8 b(ou)33 b(can)150 1358 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d
(b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g
(terse)g(format,)i(suitable)e(for)f(an)150 1468 y Fr(inputrc)34
b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h
-([Bash)g(Builtins],)g(page)g(50.\))41 b(Command)28 b(names)h(without)
+([Bash)g(Builtins],)g(page)g(51.\))41 b(Command)28 b(names)h(without)
150 1577 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s
(ound)d(b)m(y)i(default.)275 1713 y(In)25 b(the)h(follo)m(wing)i
(descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g
@@ -16932,25 +17262,26 @@ b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630
3873 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g
(curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34
b(are)g(comp)s(osed)630 3982 y(of)d(letters)g(and)f(digits.)150
-4143 y Ft(shell-forward-word)25 b(\(\))630 4252 y Fu(Mo)m(v)m(e)30
-b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)m(ord.)40
-b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630
+4143 y Ft(shell-forward-word)25 b(\(M-C-f\))630 4252
+y Fu(Mo)m(v)m(e)30 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)
+m(ord.)40 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630
4362 y(shell)j(metac)m(haracters.)150 4522 y Ft(shell-backward-word)25
-b(\(\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g
-(the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 b(W)-8
-b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30 b(non-quoted)h(shell)f
-(metac)m(haracters.)150 4902 y Ft(previous-screen-line)25
-b(\(\))630 5011 y Fu(A)m(ttempt)41 b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e
-(to)h(the)f(same)h(ph)m(ysical)g(screen)f(column)g(on)g(the)g(previous)
-630 5121 y(ph)m(ysical)26 b(screen)f(line.)39 b(This)24
-b(will)i(not)f(ha)m(v)m(e)h(the)f(desired)g(e\013ect)h(if)f(the)h
-(curren)m(t)e(Readline)630 5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d
-(more)i(than)f(one)g(ph)m(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f
-(not)h(greater)g(than)630 5340 y(the)j(length)f(of)h(the)f(prompt)g
-(plus)f(the)i(screen)f(width.)p eop end
-%%Page: 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(next-screen-line)
+b(\(M-C-b\))630 4632 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g
+(of)g(the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53
+b(W)-8 b(ords)35 b(are)g(delimited)630 4741 y(b)m(y)30
+b(non-quoted)h(shell)f(metac)m(haracters.)150 4902 y
+Ft(previous-screen-line)25 b(\(\))630 5011 y Fu(A)m(ttempt)41
+b(to)g(mo)m(v)m(e)h(p)s(oin)m(t)e(to)h(the)f(same)h(ph)m(ysical)g
+(screen)f(column)g(on)g(the)g(previous)630 5121 y(ph)m(ysical)26
+b(screen)f(line.)39 b(This)24 b(will)i(not)f(ha)m(v)m(e)h(the)f
+(desired)g(e\013ect)h(if)f(the)h(curren)m(t)e(Readline)630
+5230 y(line)k(do)s(es)f(not)g(tak)m(e)i(up)d(more)i(than)f(one)g(ph)m
+(ysical)h(line)g(or)f(if)g(p)s(oin)m(t)h(is)f(not)h(greater)g(than)630
+5340 y(the)j(length)f(of)h(the)f(prompt)g(plus)f(the)i(screen)f(width.)
+p eop end
+%%Page: 128 134
+TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(128)150 299 y Ft(next-screen-line)
26 b(\(\))630 408 y Fu(A)m(ttempt)g(to)f(mo)m(v)m(e)i(p)s(oin)m(t)d(to)
i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m
(ysical)630 518 y(screen)e(line.)39 b(This)23 b(will)g(not)h(ha)m(v)m
@@ -16959,1190 +17290,1219 @@ i(the)e(same)i(ph)m(ysical)f(screen)g(column)f(on)h(the)f(next)h(ph)m
(ysical)h(line)g(or)f(if)g(the)h(length)f(of)h(the)f(curren)m(t)g
(Readline)630 737 y(line)k(is)f(not)h(greater)g(than)f(the)h(length)g
(of)f(the)h(prompt)e(plus)h(the)g(screen)h(width.)150
-893 y Ft(clear-screen)c(\(C-l\))630 1003 y Fu(Clear)g(the)g(screen)f
-(and)h(redra)m(w)f(the)h(curren)m(t)f(line,)i(lea)m(ving)g(the)f
-(curren)m(t)g(line)g(at)g(the)g(top)630 1112 y(of)k(the)f(screen.)150
-1268 y Ft(redraw-current-line)25 b(\(\))630 1378 y Fu(Refresh)30
-b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s
-(ound.)150 1574 y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41
-b(Manipulating)h(The)f(History)150 1744 y Ft(accept-line)27
-b(\(Newline)h(or)i(Return\))630 1854 y Fu(Accept)25 b(the)e(line)h
-(regardless)g(of)f(where)g(the)h(cursor)e(is.)39 b(If)23
-b(this)g(line)h(is)f(non-empt)m(y)-8 b(,)26 b(add)c(it)630
-1963 y(to)27 b(the)f(history)g(list)h(according)g(to)g(the)f(setting)i
-(of)e(the)g Ft(HISTCONTROL)d Fu(and)j Ft(HISTIGNORE)630
-2073 y Fu(v)-5 b(ariables.)42 b(If)30 b(this)h(line)g(is)g(a)g(mo)s
-(di\014ed)e(history)i(line,)g(then)f(restore)i(the)f(history)f(line)h
-(to)630 2182 y(its)g(original)g(state.)150 2338 y Ft(previous-history)
-26 b(\(C-p\))630 2448 y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g
-(history)h(list,)g(fetc)m(hing)g(the)g(previous)f(command.)150
-2604 y Ft(next-history)d(\(C-n\))630 2714 y Fu(Mo)m(v)m(e)32
-b(`forw)m(ard')f(through)e(the)i(history)f(list,)i(fetc)m(hing)f(the)g
-(next)f(command.)150 2870 y Ft(beginning-of-history)25
-b(\(M-<\))630 2979 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)
-h(the)f(history)-8 b(.)150 3135 y Ft(end-of-history)26
-b(\(M->\))630 3245 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h
-(input)e(history)-8 b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s
-(eing)f(en)m(tered.)150 3401 y Ft(reverse-search-history)24
-b(\(C-r\))630 3510 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h(starting)g(at)g
-(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e(through)h(the)g
-(his-)630 3620 y(tory)g(as)f(necessary)-8 b(.)42 b(This)29
-b(is)i(an)f(incremen)m(tal)i(searc)m(h.)150 3776 y Ft
-(forward-search-history)24 b(\(C-s\))630 3886 y Fu(Searc)m(h)44
-b(forw)m(ard)f(starting)h(at)h(the)e(curren)m(t)h(line)g(and)f(mo)m
-(ving)h(`do)m(wn')g(through)f(the)630 3995 y(history)30
-b(as)h(necessary)-8 b(.)41 b(This)30 b(is)g(an)h(incremen)m(tal)g
-(searc)m(h.)150 4151 y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist)
-o(ory)24 b(\(M-p\))630 4261 y Fu(Searc)m(h)31 b(bac)m(kw)m(ard)h
-(starting)g(at)g(the)f(curren)m(t)g(line)g(and)g(mo)m(ving)h(`up')e
-(through)h(the)g(his-)630 4370 y(tory)36 b(as)g(necessary)h(using)e(a)i
-(non-incremen)m(tal)g(searc)m(h)f(for)g(a)g(string)g(supplied)f(b)m(y)h
-(the)630 4480 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m
-(h)g(an)m(ywhere)g(in)f(a)h(history)f(line.)150 4636
-y Ft(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
-b(\(M-n\))630 4746 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h
+916 y Ft(clear-display)c(\(M-C-l\))630 1026 y Fu(Clear)33
+b(the)g(screen)g(and,)h(if)e(p)s(ossible,)i(the)f(terminal's)g
+(scrollbac)m(k)i(bu\013er,)e(then)f(redra)m(w)630 1136
+y(the)f(curren)m(t)f(line,)h(lea)m(ving)h(the)e(curren)m(t)h(line)f(at)
+h(the)g(top)g(of)f(the)h(screen.)150 1315 y Ft(clear-screen)c(\(C-l\))
+630 1424 y Fu(Clear)35 b(the)f(screen,)i(then)e(redra)m(w)g(the)h
+(curren)m(t)f(line,)i(lea)m(ving)g(the)f(curren)m(t)f(line)h(at)g(the)
+630 1534 y(top)c(of)f(the)h(screen.)150 1713 y Ft(redraw-current-line)
+25 b(\(\))630 1823 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41
+b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)150 2041
+y Fk(8.4.2)63 b(Commands)42 b(F)-10 b(or)41 b(Manipulating)h(The)f
+(History)150 2223 y Ft(accept-line)27 b(\(Newline)h(or)i(Return\))630
+2333 y Fu(Accept)25 b(the)e(line)h(regardless)g(of)f(where)g(the)h
+(cursor)e(is.)39 b(If)23 b(this)g(line)h(is)f(non-empt)m(y)-8
+b(,)26 b(add)c(it)630 2442 y(to)27 b(the)f(history)g(list)h(according)g
+(to)g(the)f(setting)i(of)e(the)g Ft(HISTCONTROL)d Fu(and)j
+Ft(HISTIGNORE)630 2552 y Fu(v)-5 b(ariables.)42 b(If)30
+b(this)h(line)g(is)g(a)g(mo)s(di\014ed)e(history)i(line,)g(then)f
+(restore)i(the)f(history)f(line)h(to)630 2662 y(its)g(original)g
+(state.)150 2841 y Ft(previous-history)26 b(\(C-p\))630
+2950 y Fu(Mo)m(v)m(e)32 b(`bac)m(k')g(through)e(the)g(history)h(list,)g
+(fetc)m(hing)g(the)g(previous)f(command.)150 3129 y Ft(next-history)d
+(\(C-n\))630 3239 y Fu(Mo)m(v)m(e)32 b(`forw)m(ard')f(through)e(the)i
+(history)f(list,)i(fetc)m(hing)f(the)g(next)f(command.)150
+3418 y Ft(beginning-of-history)25 b(\(M-<\))630 3528
+y Fu(Mo)m(v)m(e)32 b(to)g(the)e(\014rst)g(line)g(in)h(the)f(history)-8
+b(.)150 3707 y Ft(end-of-history)26 b(\(M->\))630 3816
+y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(input)e(history)-8
+b(,)31 b(i.e.,)h(the)f(line)f(curren)m(tly)h(b)s(eing)f(en)m(tered.)150
+3995 y Ft(reverse-search-history)24 b(\(C-r\))630 4105
+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
+4215 y(tory)26 b(as)h(necessary)-8 b(.)40 b(This)25 b(is)i(an)f
+(incremen)m(tal)h(searc)m(h.)40 b(This)25 b(command)h(sets)h(the)f
+(region)630 4324 y(to)31 b(the)g(matc)m(hed)g(text)g(and)f(activ)-5
+b(ates)33 b(the)d(mark.)150 4503 y Ft(forward-search-history)24
+b(\(C-s\))630 4613 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 4855 y(history)27 b(as)f(necessary)i(using)e(a)h(non-incremen)m
-(tal)g(searc)m(h)h(for)e(a)h(string)g(supplied)e(b)m(y)i(the)630
-4965 y(user.)40 b(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)
-m(ywhere)g(in)f(a)h(history)f(line.)150 5121 y Ft
-(history-search-forward)24 b(\(\))630 5230 y Fu(Searc)m(h)42
-b(forw)m(ard)f(through)f(the)i(history)f(for)g(the)h(string)f(of)h(c)m
-(haracters)h(b)s(et)m(w)m(een)f(the)630 5340 y(start)36
-b(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)58
-b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)p
-eop end
-%%Page: 124 130
-TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(124)630 299 y(b)s(eginning)32
-b(of)g(a)h(history)g(line.)47 b(This)32 b(is)h(a)f(non-incremen)m(tal)i
-(searc)m(h.)48 b(By)33 b(default,)g(this)630 408 y(command)d(is)h(un)m
-(b)s(ound.)150 581 y Ft(history-search-backward)24 b(\(\))630
-690 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)
-g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-800 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
+630 4723 y(history)38 b(as)g(necessary)-8 b(.)65 b(This)38
+b(is)g(an)g(incremen)m(tal)h(searc)m(h.)65 b(This)37
+b(command)h(sets)h(the)630 4832 y(region)31 b(to)g(the)g(matc)m(hed)g
+(text)g(and)f(activ)-5 b(ates)33 b(the)d(mark.)150 5011
+y Ft(non-incremental-reverse-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-p\))630 5121 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 5230 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
+5340 y(user.)k(The)30 b(searc)m(h)h(string)f(ma)m(y)h(matc)m(h)g(an)m
+(ywhere)g(in)f(a)h(history)f(line.)p eop end
+%%Page: 129 135
+TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft
+(non-incremental-forward-)o(sear)o(ch-h)o(ist)o(ory)24
+b(\(M-n\))630 408 y Fu(Searc)m(h)44 b(forw)m(ard)f(starting)h(at)h(the)
+e(curren)m(t)h(line)g(and)f(mo)m(ving)h(`do)m(wn')g(through)f(the)630
+518 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
+628 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 784 y Ft(history-search-forward)
+24 b(\(\))630 894 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 1003 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 1113 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 1223 y(command)d(is)h(un)m(b)s(ound.)150
+1379 y Ft(history-search-backward)24 b(\(\))630 1489
+y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g(for)g
+(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
+1598 y(start)g(of)h(the)f(curren)m(t)f(line)i(and)e(the)h(p)s(oin)m(t.)
58 b(The)35 b(searc)m(h)i(string)e(m)m(ust)h(matc)m(h)h(at)g(the)630
-910 y(b)s(eginning)32 b(of)g(a)h(history)g(line.)47 b(This)32
-b(is)h(a)f(non-incremen)m(tal)i(searc)m(h.)48 b(By)33
-b(default,)g(this)630 1019 y(command)d(is)h(un)m(b)s(ound.)150
-1192 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630
-1301 y Fu(Searc)m(h)42 b(forw)m(ard)f(through)f(the)i(history)f(for)g
+1708 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 1817 y(command)d(is)h(un)m(b)s(ound.)150
+1974 y Ft(history-substring-search)o(-for)o(ward)24 b(\(\))630
+2084 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
-1411 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+2193 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 1520 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
+630 2303 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 1630 y(is)e(un)m(b)s(ound.)150 1802 y Ft
+(command)630 2412 y(is)e(un)m(b)s(ound.)150 2569 y Ft
(history-substring-search)o(-bac)o(kwar)o(d)24 b(\(\))630
-1912 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g
+2679 y Fu(Searc)m(h)35 b(bac)m(kw)m(ard)g(through)f(the)h(history)g
(for)g(the)f(string)h(of)g(c)m(haracters)h(b)s(et)m(w)m(een)g(the)630
-2021 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
+2788 y(start)29 b(of)g(the)g(curren)m(t)g(line)g(and)f(the)h(p)s(oin)m
(t.)40 b(The)29 b(searc)m(h)g(string)g(ma)m(y)g(matc)m(h)h(an)m(ywhere)
-630 2131 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
+630 2898 y(in)i(a)h(history)g(line.)47 b(This)32 b(is)g(a)h
(non-incremen)m(tal)h(searc)m(h.)47 b(By)33 b(default,)h(this)e
-(command)630 2241 y(is)e(un)m(b)s(ound.)150 2413 y Ft(yank-nth-arg)d
-(\(M-C-y\))630 2523 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f
+(command)630 3007 y(is)e(un)m(b)s(ound.)150 3164 y Ft(yank-nth-arg)d
+(\(M-C-y\))630 3273 y Fu(Insert)37 b(the)g(\014rst)f(argumen)m(t)i(to)f
(the)h(previous)e(command)h(\(usually)g(the)g(second)g(w)m(ord)630
-2632 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46
+3383 y(on)32 b(the)g(previous)f(line\))i(at)f(p)s(oin)m(t.)46
b(With)32 b(an)g(argumen)m(t)g Fr(n)p Fu(,)g(insert)g(the)g
-Fr(n)p Fu(th)f(w)m(ord)g(from)630 2742 y(the)k(previous)f(command)h
+Fr(n)p Fu(th)f(w)m(ord)g(from)630 3493 y(the)k(previous)f(command)h
(\(the)g(w)m(ords)g(in)f(the)h(previous)g(command)f(b)s(egin)h(with)f
-(w)m(ord)630 2851 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f
+(w)m(ord)630 3602 y(0\).)69 b(A)40 b(negativ)m(e)h(argumen)m(t)f
(inserts)g(the)f Fr(n)p Fu(th)g(w)m(ord)g(from)g(the)h(end)f(of)h(the)f
-(previous)630 2961 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h
+(previous)630 3712 y(command.)48 b(Once)33 b(the)g(argumen)m(t)h
Fr(n)e Fu(is)h(computed,)h(the)f(argumen)m(t)g(is)g(extracted)i(as)e
-(if)630 3070 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g
-(had)g(b)s(een)g(sp)s(eci\014ed.)150 3243 y Ft(yank-last-arg)d(\(M-.)i
-(or)h(M-_\))630 3352 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f
+(if)630 3821 y(the)e(`)p Ft(!)p Fj(n)p Fu(')f(history)g(expansion)g
+(had)g(b)s(een)g(sp)s(eci\014ed.)150 3978 y Ft(yank-last-arg)d(\(M-.)i
+(or)h(M-_\))630 4088 y Fu(Insert)k(last)i(argumen)m(t)g(to)g(the)f
(previous)f(command)h(\(the)h(last)f(w)m(ord)g(of)g(the)g(previous)630
-3462 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
+4197 y(history)e(en)m(try\).)51 b(With)34 b(a)g(n)m(umeric)g(argumen)m
(t,)h(b)s(eha)m(v)m(e)f(exactly)h(lik)m(e)g Ft(yank-nth-arg)p
-Fu(.)630 3572 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c
+Fu(.)630 4307 y(Successiv)m(e)26 b(calls)g(to)f Ft(yank-last-arg)c
Fu(mo)m(v)m(e)27 b(bac)m(k)e(through)f(the)h(history)g(list,)i
-(inserting)630 3681 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
+(inserting)630 4416 y(the)c(last)g(w)m(ord)f(\(or)h(the)g(w)m(ord)f(sp)
s(eci\014ed)g(b)m(y)g(the)h(argumen)m(t)g(to)g(the)g(\014rst)f(call\))i
-(of)f(eac)m(h)h(line)630 3791 y(in)36 b(turn.)58 b(An)m(y)36
+(of)f(eac)m(h)h(line)630 4526 y(in)36 b(turn.)58 b(An)m(y)36
b(n)m(umeric)h(argumen)m(t)f(supplied)g(to)h(these)g(successiv)m(e)g
-(calls)h(determines)630 3900 y(the)d(direction)g(to)h(mo)m(v)m(e)g
+(calls)h(determines)630 4635 y(the)d(direction)g(to)h(mo)m(v)m(e)g
(through)e(the)h(history)-8 b(.)54 b(A)35 b(negativ)m(e)i(argumen)m(t)e
-(switc)m(hes)h(the)630 4010 y(direction)23 b(through)g(the)g(history)f
+(switc)m(hes)h(the)630 4745 y(direction)23 b(through)g(the)g(history)f
(\(bac)m(k)i(or)f(forw)m(ard\).)38 b(The)22 b(history)h(expansion)g
-(facilities)630 4120 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
+(facilities)630 4855 y(are)28 b(used)f(to)h(extract)h(the)f(last)g
(argumen)m(t,)h(as)e(if)h(the)g(`)p Ft(!$)p Fu(')f(history)g(expansion)
-h(had)f(b)s(een)630 4229 y(sp)s(eci\014ed.)150 4441 y
-Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
-b(ext)150 4620 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
-4729 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
+h(had)f(b)s(een)630 4964 y(sp)s(eci\014ed.)150 5121 y
+Ft(operate-and-get-next)e(\(C-o\))630 5230 y Fu(Accept)30
+b(the)g(curren)m(t)e(line)i(for)f(return)f(to)h(the)h(calling)g
+(application)h(as)e(if)g(a)h(newline)f(had)630 5340 y(b)s(een)22
+b(en)m(tered,)k(and)d(fetc)m(h)h(the)f(next)g(line)h(relativ)m(e)h(to)f
+(the)f(curren)m(t)g(line)h(from)f(the)g(history)p eop
+end
+%%Page: 130 136
+TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(130)630 299 y(for)31
+b(editing.)43 b(A)31 b(n)m(umeric)f(argumen)m(t,)i(if)f(supplied,)f(sp)
+s(eci\014es)h(the)g(history)f(en)m(try)i(to)f(use)630
+408 y(instead)g(of)f(the)h(curren)m(t)f(line.)150 605
+y Fk(8.4.3)63 b(Commands)42 b(F)-10 b(or)41 b(Changing)g(T)-10
+b(ext)150 775 y Fj(end-of-file)27 b Ft(\(usually)h(C-d\))630
+885 y Fu(The)e(c)m(haracter)h(indicating)h(end-of-\014le)e(as)h(set,)g
(for)f(example,)i(b)m(y)e Ft(stty)p Fu(.)39 b(If)25 b(this)h(c)m
-(harac-)630 4839 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
+(harac-)630 995 y(ter)c(is)g(read)g(when)e(there)i(are)h(no)e(c)m
(haracters)j(on)d(the)h(line,)i(and)d(p)s(oin)m(t)h(is)g(at)h(the)f(b)s
-(eginning)630 4948 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
+(eginning)630 1104 y(of)31 b(the)f(line,)h(Readline)g(in)m(terprets)g
(it)g(as)f(the)h(end)f(of)g(input)f(and)h(returns)f Fm(eof)p
-Fu(.)150 5121 y Ft(delete-char)e(\(C-d\))630 5230 y Fu(Delete)35
+Fu(.)150 1261 y Ft(delete-char)e(\(C-d\))630 1370 y Fu(Delete)35
b(the)f(c)m(haracter)h(at)f(p)s(oin)m(t.)49 b(If)33 b(this)g(function)g
-(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 5340
+(is)g(b)s(ound)e(to)j(the)g(same)f(c)m(haracter)630 1480
y(as)e(the)f(tt)m(y)i Fm(eof)d Fu(c)m(haracter,)j(as)f
Fj(C-d)e Fu(commonly)i(is,)g(see)g(ab)s(o)m(v)m(e)h(for)e(the)g
-(e\013ects.)p eop end
-%%Page: 125 131
-TeXDict begin 125 130 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(125)150 299 y Ft
-(backward-delete-char)25 b(\(Rubout\))630 408 y Fu(Delete)32
-b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40 b(A)30
-b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
-518 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
-682 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
-792 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
+(e\013ects.)150 1637 y Ft(backward-delete-char)25 b(\(Rubout\))630
+1746 y Fu(Delete)32 b(the)f(c)m(haracter)g(b)s(ehind)e(the)h(cursor.)40
+b(A)30 b(n)m(umeric)g(argumen)m(t)h(means)f(to)h(kill)g(the)630
+1856 y(c)m(haracters)h(instead)e(of)h(deleting)g(them.)150
+2013 y Ft(forward-backward-delete-)o(char)24 b(\(\))630
+2122 y Fu(Delete)40 b(the)f(c)m(haracter)h(under)c(the)j(cursor,)h
(unless)d(the)i(cursor)e(is)h(at)h(the)g(end)e(of)i(the)630
-902 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s(ehind)
-d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
-1011 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
-1176 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 1285
+2232 y(line,)33 b(in)e(whic)m(h)g(case)i(the)f(c)m(haracter)h(b)s
+(ehind)d(the)i(cursor)f(is)g(deleted.)46 b(By)32 b(default,)g(this)630
+2341 y(is)e(not)h(b)s(ound)d(to)j(a)g(k)m(ey)-8 b(.)150
+2498 y Ft(quoted-insert)27 b(\(C-q)i(or)h(C-v\))630 2608
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
-1395 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150
-1559 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
-1669 y Fu(Insert)g(y)m(ourself.)150 1833 y Ft(bracketed-paste-begin)25
-b(\(\))630 1943 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
+2717 y(sequences)d(lik)m(e)g Fj(C-q)p Fu(,)f(for)g(example.)150
+2874 y Ft(self-insert)d(\(a,)j(b,)g(A,)f(1,)h(!,)g(...)o(\))630
+2983 y Fu(Insert)g(y)m(ourself.)150 3140 y Ft(bracketed-paste-begin)25
+b(\(\))630 3250 y Fu(This)f(function)h(is)f(in)m(tended)h(to)h(b)s(e)e
(b)s(ound)f(to)i(the)g Ft(")p Fu(brac)m(k)m(eted)h(paste)p
-Ft(")f Fu(escap)s(e)h(sequence)630 2052 y(sen)m(t)38
+Ft(")f Fu(escap)s(e)h(sequence)630 3359 y(sen)m(t)38
b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i
(assigned)f(b)m(y)h(default.)62 b(It)38 b(allo)m(ws)630
-2162 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
+3469 y(Readline)33 b(to)g(insert)g(the)f(pasted)h(text)g(as)g(a)g
(single)g(unit)f(without)h(treating)h(eac)m(h)f(c)m(har-)630
-2271 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
+3578 y(acter)40 b(as)f(if)g(it)g(had)f(b)s(een)g(read)h(from)f(the)h(k)
m(eyb)s(oard.)66 b(The)39 b(c)m(haracters)h(are)f(inserted)630
-2381 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
+3688 y(as)44 b(if)g(eac)m(h)i(one)e(w)m(as)g(b)s(ound)e(to)j
Ft(self-insert)c Fu(instead)j(of)h(executing)g(an)m(y)f(editing)630
-2491 y(commands.)150 2655 y Ft(transpose-chars)26 b(\(C-t\))630
-2765 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)g(cursor)f
-(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g(cursor,)630
-2874 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m(ell.)57
-b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)g(of)h
-(the)630 2984 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h(last)h
-(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38 b(Negativ)m(e)25
-b(argumen)m(ts)630 3093 y(ha)m(v)m(e)32 b(no)e(e\013ect.)150
-3258 y Ft(transpose-words)c(\(M-t\))630 3367 y Fu(Drag)33
-b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f
-(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630
-3477 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
-(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g
-(the)630 3587 y(last)j(t)m(w)m(o)h(w)m(ords)e(on)g(the)h(line.)150
-3751 y Ft(upcase-word)c(\(M-u\))630 3861 y Fu(Upp)s(ercase)32
-b(the)g(curren)m(t)g(\(or)g(follo)m(wing\))i(w)m(ord.)45
-b(With)32 b(a)g(negativ)m(e)j(argumen)m(t,)e(upp)s(er-)630
-3970 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g(not)h(mo)m(v)m(e)h
-(the)e(cursor.)150 4134 y Ft(downcase-word)d(\(M-l\))630
-4244 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m(wing\))i
-(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m(w)m
-(ercase)630 4354 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f(mo)m
-(v)m(e)i(the)f(cursor.)150 4518 y Ft(capitalize-word)26
-b(\(M-c\))630 4628 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
+3798 y(commands.)630 3931 y(Brac)m(k)m(eted)38 b(paste)f(sets)f(the)h
+(region)f(\(the)h(c)m(haracters)g(b)s(et)m(w)m(een)g(p)s(oin)m(t)f(and)
+g(the)g(mark\))630 4040 y(to)j(the)g(inserted)f(text.)65
+b(It)39 b(uses)f(the)g(concept)h(of)g(an)f Fl(active)i(mark)10
+b Fu(:)57 b(when)38 b(the)g(mark)630 4150 y(is)d(activ)m(e,)k(Readline)
+c(redispla)m(y)h(uses)e(the)h(terminal's)h(standout)f(mo)s(de)f(to)i
+(denote)g(the)630 4260 y(region.)150 4416 y Ft(transpose-chars)26
+b(\(C-t\))630 4526 y Fu(Drag)33 b(the)f(c)m(haracter)h(b)s(efore)f(the)
+g(cursor)f(forw)m(ard)h(o)m(v)m(er)h(the)f(c)m(haracter)i(at)e(the)g
+(cursor,)630 4635 y(mo)m(ving)k(the)g(cursor)f(forw)m(ard)g(as)g(w)m
+(ell.)57 b(If)35 b(the)h(insertion)g(p)s(oin)m(t)f(is)g(at)i(the)e(end)
+g(of)h(the)630 4745 y(line,)24 b(then)e(this)g(transp)s(oses)f(the)h
+(last)h(t)m(w)m(o)g(c)m(haracters)g(of)f(the)h(line.)38
+b(Negativ)m(e)25 b(argumen)m(ts)630 4855 y(ha)m(v)m(e)32
+b(no)e(e\013ect.)150 5011 y Ft(transpose-words)c(\(M-t\))630
+5121 y Fu(Drag)33 b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g
+(the)h(w)m(ord)f(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)
+g(that)630 5230 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27
+b(the)i(insertion)f(p)s(oin)m(t)h(is)f(at)h(the)g(end)e(of)i(the)f
+(line,)i(this)e(transp)s(oses)g(the)630 5340 y(last)j(t)m(w)m(o)h(w)m
+(ords)e(on)g(the)h(line.)p eop end
+%%Page: 131 137
+TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft(upcase-word)27
+b(\(M-u\))630 408 y Fu(Upp)s(ercase)32 b(the)g(curren)m(t)g(\(or)g
+(follo)m(wing\))i(w)m(ord.)45 b(With)32 b(a)g(negativ)m(e)j(argumen)m
+(t,)e(upp)s(er-)630 518 y(case)e(the)g(previous)f(w)m(ord,)g(but)g(do)g
+(not)h(mo)m(v)m(e)h(the)e(cursor.)150 665 y Ft(downcase-word)d(\(M-l\))
+630 775 y Fu(Lo)m(w)m(ercase)c(the)f(curren)m(t)f(\(or)h(follo)m
+(wing\))i(w)m(ord.)37 b(With)22 b(a)g(negativ)m(e)i(argumen)m(t,)g(lo)m
+(w)m(ercase)630 884 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 1032 y Ft(capitalize-word)26
+b(\(M-c\))630 1141 y Fu(Capitalize)d(the)f(curren)m(t)f(\(or)g(follo)m
(wing\))i(w)m(ord.)38 b(With)21 b(a)h(negativ)m(e)h(argumen)m(t,)h
-(capitalize)630 4737 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
-(mo)m(v)m(e)i(the)f(cursor.)150 4902 y Ft(overwrite-mode)26
-b(\(\))630 5011 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
+(capitalize)630 1251 y(the)31 b(previous)e(w)m(ord,)i(but)e(do)i(not)f
+(mo)m(v)m(e)i(the)f(cursor.)150 1398 y Ft(overwrite-mode)26
+b(\(\))630 1508 y Fu(T)-8 b(oggle)35 b(o)m(v)m(erwrite)g(mo)s(de.)48
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 5121 y(to)22 b(o)m(v)m(erwrite)i(mo)s(de.)37
+h(switc)m(hes)630 1617 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 5230 y(insert)30 b(mo)s(de.)41
+(t,)i(switc)m(hes)e(to)630 1727 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 5340
+Ft(vi)f Fu(mo)s(de)g(do)s(es)g(o)m(v)m(erwrite)630 1837
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.)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)630 299 y(In)52
-b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s(ound)c(to)j
-Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630 408
-y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h(the)f
-(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630 518
-y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)h(b)s
-(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 647 y(By)g(default,)f
-(this)h(command)f(is)g(un)m(b)s(ound.)150 835 y Fk(8.4.4)63
-b(Killing)42 b(And)e(Y)-10 b(anking)150 1001 y Ft(kill-line)28
-b(\(C-k\))630 1111 y Fu(Kill)j(the)f(text)i(from)e(p)s(oin)m(t)g(to)h
-(the)g(end)e(of)i(the)f(line.)150 1259 y Ft(backward-kill-line)25
-b(\(C-x)30 b(Rubout\))630 1369 y Fu(Kill)h(bac)m(kw)m(ard)g(from)e(the)
-i(cursor)f(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150
-1517 y Ft(unix-line-discard)c(\(C-u\))630 1627 y Fu(Kill)31
-b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f(to)h(the)f(b)s(eginning)g(of)h
-(the)f(curren)m(t)g(line.)150 1775 y Ft(kill-whole-line)c(\(\))630
-1885 y Fu(Kill)37 b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h
-(line,)h(no)f(matter)g(where)f(p)s(oin)m(t)h(is.)59 b(By)36
-b(default,)630 1994 y(this)30 b(is)h(un)m(b)s(ound.)150
-2142 y Ft(kill-word)d(\(M-d\))630 2252 y Fu(Kill)i(from)f(p)s(oin)m(t)g
-(to)h(the)g(end)e(of)i(the)f(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m
-(w)m(een)g(w)m(ords,)f(to)h(the)g(end)630 2362 y(of)h(the)f(next)h(w)m
-(ord.)40 b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f
-Ft(forward-word)p Fu(.)150 2510 y Ft(backward-kill-word)25
-b(\(M-DEL\))630 2620 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m
-(t.)40 b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
-Ft(backward-word)p Fu(.)150 2768 y Ft(shell-kill-word)d(\(\))630
-2877 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+Ft(readline\(\))c Fu(starts)k(in)f(insert)g(mo)s(de.)630
+1965 y(In)52 b(o)m(v)m(erwrite)h(mo)s(de,)58 b(c)m(haracters)c(b)s
+(ound)c(to)j Ft(self-insert)c Fu(replace)k(the)g(text)g(at)630
+2075 y(p)s(oin)m(t)59 b(rather)f(than)h(pushing)e(the)i(text)g(to)h
+(the)f(righ)m(t.)126 b(Characters)59 b(b)s(ound)d(to)630
+2184 y Ft(backward-delete-char)25 b Fu(replace)31 b(the)g(c)m(haracter)
+h(b)s(efore)e(p)s(oin)m(t)g(with)g(a)h(space.)630 2313
+y(By)g(default,)f(this)h(command)f(is)g(un)m(b)s(ound.)150
+2500 y Fk(8.4.4)63 b(Killing)42 b(And)e(Y)-10 b(anking)150
+2665 y Ft(kill-line)28 b(\(C-k\))630 2775 y Fu(Kill)k(the)f(text)i
+(from)d(p)s(oin)m(t)i(to)g(the)f(end)g(of)g(the)h(line.)44
+b(With)31 b(a)h(negativ)m(e)i(n)m(umeric)d(argu-)630
+2885 y(men)m(t,)g(kill)g(bac)m(kw)m(ard)g(from)f(the)g(cursor)g(to)h
+(the)g(b)s(eginning)e(of)i(the)g(curren)m(t)f(line.)150
+3032 y Ft(backward-kill-line)25 b(\(C-x)30 b(Rubout\))630
+3141 y Fu(Kill)40 b(bac)m(kw)m(ard)h(from)e(the)h(cursor)g(to)g(the)g
+(b)s(eginning)g(of)g(the)g(curren)m(t)f(line.)70 b(With)41
+b(a)630 3251 y(negativ)m(e)47 b(n)m(umeric)e(argumen)m(t,)50
+b(kill)c(forw)m(ard)e(from)h(the)g(cursor)g(to)h(the)f(end)f(of)i(the)
+630 3361 y(curren)m(t)30 b(line.)150 3508 y Ft(unix-line-discard)c
+(\(C-u\))630 3617 y Fu(Kill)31 b(bac)m(kw)m(ard)g(from)e(the)i(cursor)f
+(to)h(the)f(b)s(eginning)g(of)h(the)f(curren)m(t)g(line.)150
+3765 y Ft(kill-whole-line)c(\(\))630 3874 y Fu(Kill)37
+b(all)g(c)m(haracters)h(on)f(the)f(curren)m(t)h(line,)h(no)f(matter)g
+(where)f(p)s(oin)m(t)h(is.)59 b(By)36 b(default,)630
+3984 y(this)30 b(is)h(un)m(b)s(ound.)150 4131 y Ft(kill-word)d(\(M-d\))
+630 4241 y Fu(Kill)i(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
+(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
+(the)g(end)630 4350 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft(forward-word)p
+Fu(.)150 4498 y Ft(backward-kill-word)25 b(\(M-DEL\))630
+4607 y Fu(Kill)k(the)g(w)m(ord)g(b)s(ehind)e(p)s(oin)m(t.)40
+b(W)-8 b(ord)29 b(b)s(oundaries)f(are)h(the)g(same)g(as)g
+Ft(backward-word)p Fu(.)150 4754 y Ft(shell-kill-word)d(\(M-C-d\))630
+4864 y Fu(Kill)k(from)f(p)s(oin)m(t)g(to)h(the)g(end)e(of)i(the)f
(curren)m(t)h(w)m(ord,)f(or)g(if)h(b)s(et)m(w)m(een)g(w)m(ords,)f(to)h
-(the)g(end)630 2987 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
+(the)g(end)630 4974 y(of)h(the)f(next)h(w)m(ord.)40 b(W)-8
b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)g(as)f Ft
-(shell-forward-word)p Fu(.)150 3135 y Ft(shell-backward-kill-word)24
-b(\(\))630 3245 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
+(shell-forward-word)p Fu(.)150 5121 y Ft(shell-backward-kill-word)24
+b(\(\))630 5230 y Fu(Kill)e(the)h(w)m(ord)e(b)s(ehind)g(p)s(oin)m(t.)38
b(W)-8 b(ord)22 b(b)s(oundaries)f(are)h(the)g(same)h(as)f
-Ft(shell-backward-)630 3354 y(word)p Fu(.)150 3503 y
-Ft(unix-word-rubout)k(\(C-w\))630 3612 y Fu(Kill)32 b(the)g(w)m(ord)f
-(b)s(ehind)f(p)s(oin)m(t,)i(using)f(white)h(space)g(as)g(a)g(w)m(ord)f
-(b)s(oundary)-8 b(.)43 b(The)31 b(killed)630 3722 y(text)g(is)g(sa)m(v)
-m(ed)g(on)g(the)f(kill-ring.)150 3870 y Ft(unix-filename-rubout)25
-b(\(\))630 3980 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m
-(t,)j(using)e(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f
-(the)630 4089 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30
-b(killed)h(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150
-4238 y Ft(delete-horizontal-space)24 b(\(\))630 4347
-y Fu(Delete)33 b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
-b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 4495
-y Ft(kill-region)d(\(\))630 4605 y Fu(Kill)k(the)f(text)i(in)e(the)g
+Ft(shell-backward-)630 5340 y(word)p Fu(.)p eop end
+%%Page: 132 138
+TeXDict begin 132 137 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(132)150 299 y Ft
+(shell-transpose-words)25 b(\(M-C-t\))630 408 y Fu(Drag)33
+b(the)g(w)m(ord)f(b)s(efore)g(p)s(oin)m(t)g(past)g(the)h(w)m(ord)f
+(after)g(p)s(oin)m(t,)i(mo)m(ving)f(p)s(oin)m(t)f(past)g(that)630
+518 y(w)m(ord)c(as)h(w)m(ell.)41 b(If)27 b(the)i(insertion)f(p)s(oin)m
+(t)h(is)f(at)h(the)g(end)e(of)i(the)f(line,)i(this)e(transp)s(oses)g
+(the)630 628 y(last)j(t)m(w)m(o)h(w)m(ords)d(on)i(the)f(line.)41
+b(W)-8 b(ord)31 b(b)s(oundaries)e(are)h(the)h(same)f(as)h
+Ft(shell-forward-)630 737 y(word)e Fu(and)h Ft(shell-backward-word)p
+Fu(.)150 897 y Ft(unix-word-rubout)c(\(C-w\))630 1007
+y Fu(Kill)32 b(the)g(w)m(ord)f(b)s(ehind)f(p)s(oin)m(t,)i(using)f
+(white)h(space)g(as)g(a)g(w)m(ord)f(b)s(oundary)-8 b(.)43
+b(The)31 b(killed)630 1116 y(text)g(is)g(sa)m(v)m(ed)g(on)g(the)f
+(kill-ring.)150 1277 y Ft(unix-filename-rubout)25 b(\(\))630
+1386 y Fu(Kill)37 b(the)f(w)m(ord)g(b)s(ehind)f(p)s(oin)m(t,)j(using)e
+(white)g(space)h(and)f(the)g(slash)g(c)m(haracter)i(as)f(the)630
+1496 y(w)m(ord)30 b(b)s(oundaries.)39 b(The)30 b(killed)h(text)g(is)g
+(sa)m(v)m(ed)g(on)g(the)f(kill-ring.)150 1656 y Ft
+(delete-horizontal-space)24 b(\(\))630 1765 y Fu(Delete)33
+b(all)e(spaces)g(and)e(tabs)i(around)e(p)s(oin)m(t.)41
+b(By)31 b(default,)f(this)h(is)f(un)m(b)s(ound.)150 1925
+y Ft(kill-region)d(\(\))630 2035 y Fu(Kill)k(the)f(text)i(in)e(the)g
(curren)m(t)h(region.)41 b(By)31 b(default,)f(this)h(command)f(is)g(un)
-m(b)s(ound.)150 4753 y Ft(copy-region-as-kill)25 b(\(\))630
-4863 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
+m(b)s(ound.)150 2195 y Ft(copy-region-as-kill)25 b(\(\))630
+2305 y Fu(Cop)m(y)34 b(the)g(text)h(in)f(the)g(region)g(to)h(the)f
(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 4973 y(By)31 b(default,)f(this)h(command)f
-(is)g(un)m(b)s(ound.)150 5121 y Ft(copy-backward-word)25
-b(\(\))630 5230 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
+(a)m(w)m(a)m(y)-8 b(.)630 2414 y(By)31 b(default,)f(this)h(command)f
+(is)g(un)m(b)s(ound.)150 2574 y Ft(copy-backward-word)25
+b(\(\))630 2684 y Fu(Cop)m(y)38 b(the)h(w)m(ord)f(b)s(efore)g(p)s(oin)m
(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 5340 y(same)31 b(as)f Ft(backward-word)p
-Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)p
-eop end
-%%Page: 127 133
-TeXDict begin 127 132 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft
-(copy-forward-word)26 b(\(\))630 408 y Fu(Cop)m(y)31
+f(are)i(the)630 2793 y(same)31 b(as)f Ft(backward-word)p
+Fu(.)38 b(By)30 b(default,)h(this)f(command)g(is)h(un)m(b)s(ound.)150
+2953 y Ft(copy-forward-word)26 b(\(\))630 3063 y Fu(Cop)m(y)31
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
-518 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30 b(default,)h(this)g
-(command)f(is)g(un)m(b)s(ound.)150 671 y Ft(yank)f(\(C-y\))630
-781 y Fu(Y)-8 b(ank)31 b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i
-(the)e(bu\013er)g(at)h(p)s(oin)m(t.)150 934 y Ft(yank-pop)d(\(M-y\))630
-1044 y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g
-(top.)54 b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
-1153 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
-Fu(.)150 1347 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
-(ts)150 1515 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j
-Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 1625 y Fu(Add)d(this)h(digit)g
+3173 y(same)f(as)f Ft(forward-word)p Fu(.)38 b(By)30
+b(default,)h(this)g(command)f(is)g(un)m(b)s(ound.)150
+3333 y Ft(yank)f(\(C-y\))630 3442 y Fu(Y)-8 b(ank)31
+b(the)f(top)h(of)g(the)f(kill)h(ring)f(in)m(to)i(the)e(bu\013er)g(at)h
+(p)s(oin)m(t.)150 3602 y Ft(yank-pop)d(\(M-y\))630 3712
+y Fu(Rotate)36 b(the)f(kill-ring,)i(and)d(y)m(ank)h(the)f(new)g(top.)54
+b(Y)-8 b(ou)35 b(can)g(only)f(do)h(this)f(if)h(the)g(prior)630
+3822 y(command)30 b(is)h Ft(yank)e Fu(or)h Ft(yank-pop)p
+Fu(.)150 4021 y Fk(8.4.5)63 b(Sp)s(ecifying)42 b(Numeric)f(Argumen)m
+(ts)150 4194 y Ft(digit-argument)26 b(\()p Fj(M-0)p Ft(,)j
+Fj(M-1)p Ft(,)h(...)f Fj(M--)p Ft(\))630 4303 y Fu(Add)d(this)h(digit)g
(to)h(the)f(argumen)m(t)g(already)h(accum)m(ulating,)h(or)e(start)h(a)f
-(new)f(argumen)m(t.)630 1735 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i
-(argumen)m(t.)150 1888 y Ft(universal-argument)25 b(\(\))630
-1998 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
+(new)f(argumen)m(t.)630 4413 y Fj(M--)j Fu(starts)i(a)g(negativ)m(e)i
+(argumen)m(t.)150 4573 y Ft(universal-argument)25 b(\(\))630
+4682 y Fu(This)g(is)g(another)h(w)m(a)m(y)g(to)h(sp)s(ecify)e(an)g
(argumen)m(t.)40 b(If)25 b(this)g(command)h(is)f(follo)m(w)m(ed)i(b)m
-(y)f(one)630 2107 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
+(y)f(one)630 4792 y(or)k(more)f(digits,)i(optionally)g(with)e(a)h
(leading)h(min)m(us)e(sign,)h(those)g(digits)g(de\014ne)f(the)h(ar-)630
-2217 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
+4902 y(gumen)m(t.)41 b(If)28 b(the)i(command)f(is)g(follo)m(w)m(ed)h(b)
m(y)f(digits,)i(executing)f Ft(universal-argument)630
-2326 y Fu(again)j(ends)e(the)h(n)m(umeric)f(argumen)m(t,)i(but)e(is)h
+5011 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
-2436 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
+5121 y(if)g(this)g(command)f(is)h(immediately)h(follo)m(w)m(ed)h(b)m(y)
d(a)h(c)m(haracter)i(that)e(is)g(neither)g(a)g(digit)630
-2545 y(nor)41 b(min)m(us)f(sign,)k(the)e(argumen)m(t)f(coun)m(t)h(for)f
+5230 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
-2655 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
-(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)630
-2765 y(time)29 b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h
-(second)g(time)g(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630
-2874 y(sixteen,)i(and)f(so)h(on.)40 b(By)31 b(default,)g(this)f(is)g
-(not)h(b)s(ound)d(to)k(a)e(k)m(ey)-8 b(.)150 3067 y Fk(8.4.6)63
-b(Letting)40 b(Readline)h(T)m(yp)s(e)g(F)-10 b(or)42
-b(Y)-10 b(ou)150 3236 y Ft(complete)28 b(\(TAB\))630
-3346 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f(the)g(text)g
-(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i(completion)630
-3455 y(p)s(erformed)33 b(is)h(application-sp)s(eci\014c.)53
-b(Bash)35 b(attempts)g(completion)g(treating)h(the)e(text)630
-3565 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)s(egins)e
-(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)s(egins)e
-(with)630 3675 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g(the)g(text)h
-(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f(\(including)h
-(aliases)i(and)630 3784 y(functions\))j(in)f(turn.)53
+5340 y(four.)54 b(The)35 b(argumen)m(t)g(coun)m(t)h(is)f(initially)h
+(one,)h(so)e(executing)i(this)e(function)f(the)i(\014rst)p
+eop end
+%%Page: 133 139
+TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(133)630 299 y(time)29
+b(mak)m(es)h(the)e(argumen)m(t)i(coun)m(t)f(four,)f(a)h(second)g(time)g
+(mak)m(es)h(the)e(argumen)m(t)h(coun)m(t)630 408 y(sixteen,)i(and)f(so)
+h(on.)40 b(By)31 b(default,)g(this)f(is)g(not)h(b)s(ound)d(to)k(a)e(k)m
+(ey)-8 b(.)150 603 y Fk(8.4.6)63 b(Letting)40 b(Readline)h(T)m(yp)s(e)g
+(F)-10 b(or)42 b(Y)-10 b(ou)150 772 y Ft(complete)28
+b(\(TAB\))630 882 y Fu(A)m(ttempt)c(to)f(p)s(erform)e(completion)j(on)f
+(the)g(text)g(b)s(efore)f(p)s(oin)m(t.)39 b(The)22 b(actual)i
+(completion)630 991 y(p)s(erformed)33 b(is)h(application-sp)s
+(eci\014c.)53 b(Bash)35 b(attempts)g(completion)g(treating)h(the)e
+(text)630 1101 y(as)39 b(a)h(v)-5 b(ariable)39 b(\(if)h(the)f(text)h(b)
+s(egins)e(with)h(`)p Ft($)p Fu('\),)j(username)c(\(if)i(the)f(text)h(b)
+s(egins)e(with)630 1210 y(`)p Ft(~)p Fu('\),)31 b(hostname)f(\(if)g
+(the)g(text)h(b)s(egins)e(with)h(`)p Ft(@)p Fu('\),)h(or)f(command)f
+(\(including)h(aliases)i(and)630 1320 y(functions\))j(in)f(turn.)53
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 3894 y(attempted.)150 4047 y Ft
-(possible-completions)25 b(\(M-?\))630 4157 y Fu(List)35
+e(completion)h(is)630 1430 y(attempted.)150 1584 y Ft
+(possible-completions)25 b(\(M-?\))630 1694 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 4266
+(oin)m(t.)54 b(When)34 b(displa)m(ying)h(com-)630 1803
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 4376 y Ft(completion-display-width)o Fu(,)g(the)j(v)-5
+b(of)630 1913 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 4485 y(or)30 b(the)h(screen)f(width,)g(in)g
-(that)h(order.)150 4639 y Ft(insert-completions)25 b(\(M-*\))630
-4748 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f
+b Ft(COLUMNS)p Fu(,)630 2022 y(or)30 b(the)h(screen)f(width,)g(in)g
+(that)h(order.)150 2177 y Ft(insert-completions)25 b(\(M-*\))630
+2286 y Fu(Insert)30 b(all)h(completions)h(of)f(the)g(text)g(b)s(efore)f
(p)s(oin)m(t)h(that)g(w)m(ould)f(ha)m(v)m(e)i(b)s(een)e(generated)630
-4858 y(b)m(y)g Ft(possible-completions)p Fu(.)150 5011
-y Ft(menu-complete)d(\(\))630 5121 y Fu(Similar)d(to)g
+2396 y(b)m(y)g Ft(possible-completions)p Fu(.)150 2550
+y Ft(menu-complete)d(\(\))630 2660 y Fu(Similar)d(to)g
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 5230 y(from)37
+(completed)i(with)e(a)i(single)f(matc)m(h)630 2770 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 5340 y Fu(steps)i(through)g
+b(execution)g(of)f Ft(menu-complete)630 2879 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.)p eop end
-%%Page: 128 134
-TeXDict begin 128 133 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(128)630 299 y(A)m(t)38
-b(the)f(end)f(of)h(the)g(list)g(of)g(completions,)i(the)e(b)s(ell)g(is)
-g(rung)f(\(sub)5 b(ject)36 b(to)i(the)f(setting)630 408
-y(of)f Ft(bell-style)p Fu(\))e(and)h(the)h(original)i(text)f(is)f
-(restored.)57 b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i
-Fr(n)630 518 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
+(matc)m(h)f(in)f(turn.)630 2989 y(A)m(t)e(the)f(end)f(of)h(the)g(list)g
+(of)g(completions,)i(the)e(b)s(ell)g(is)g(rung)f(\(sub)5
+b(ject)36 b(to)i(the)f(setting)630 3098 y(of)f Ft(bell-style)p
+Fu(\))e(and)h(the)h(original)i(text)f(is)f(restored.)57
+b(An)36 b(argumen)m(t)h(of)f Fr(n)f Fu(mo)m(v)m(es)i
+Fr(n)630 3208 y Fu(p)s(ositions)e(forw)m(ard)f(in)g(the)h(list)h(of)e
(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 628 y(mo)m(v)m(e)40 b(bac)m(kw)m(ard)e(through)g(the)g
+(used)g(to)630 3318 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 737 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
-(y)i(default.)150 906 y Ft(menu-complete-backward)24
-b(\(\))630 1015 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
+(ound)e(to)630 3427 y Ft(TAB)p Fu(,)30 b(but)f(is)i(un)m(b)s(ound)d(b)m
+(y)i(default.)150 3582 y Ft(menu-complete-backward)24
+b(\(\))630 3691 y Fu(Iden)m(tical)36 b(to)g Ft(menu-complete)p
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 1125 y(completions,)d(as)e(if)h Ft(menu-complete)26
+(p)s(ossible)630 3801 y(completions,)d(as)e(if)h Ft(menu-complete)26
b Fu(had)k(b)s(een)g(giv)m(en)h(a)g(negativ)m(e)i(argumen)m(t.)150
-1294 y Ft(delete-char-or-list)25 b(\(\))630 1403 y Fu(Deletes)41
+3955 y Ft(delete-char-or-list)25 b(\(\))630 4065 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 1513 y(line)50 b(\(lik)m(e)h
+(eginning)e(or)h(end)f(of)h(the)630 4174 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 1622
+55 b(b)s(eha)m(v)m(es)c(iden)m(tically)g(to)630 4284
y Ft(possible-completions)p Fu(.)35 b(This)30 b(command)g(is)g(un)m(b)s
-(ound)e(b)m(y)i(default.)150 1791 y Ft(complete-filename)c(\(M-/\))630
-1901 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g
-(b)s(efore)f(p)s(oin)m(t.)150 2069 y Ft(possible-filename-comple)o
-(tion)o(s)24 b(\(C-x)30 b(/\))630 2179 y Fu(List)f(the)g(p)s(ossible)f
+(ound)e(b)m(y)i(default.)150 4438 y Ft(complete-filename)c(\(M-/\))630
+4548 y Fu(A)m(ttempt)32 b(\014lename)e(completion)i(on)e(the)h(text)g
+(b)s(efore)f(p)s(oin)m(t.)150 4702 y Ft(possible-filename-comple)o
+(tion)o(s)24 b(\(C-x)30 b(/\))630 4812 y Fu(List)f(the)g(p)s(ossible)f
(completions)h(of)g(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)g(treating)h
-(it)f(as)g(a)f(\014lename.)150 2347 y Ft(complete-username)e(\(M-~\))
-630 2457 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)
+(it)f(as)g(a)f(\014lename.)150 4966 y Ft(complete-username)e(\(M-~\))
+630 5076 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)
e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(username.)150
-2626 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
-b(~\))630 2735 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f
+5230 y Ft(possible-username-comple)o(tion)o(s)24 b(\(C-x)30
+b(~\))630 5340 y Fu(List)25 b(the)g(p)s(ossible)g(completions)h(of)f
(the)g(text)h(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)f(a)g
-(username.)150 2904 y Ft(complete-variable)h(\(M-$\))630
-3013 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)
-s(oin)m(t,)g(treating)i(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150
-3182 y Ft(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30
-b($\))630 3292 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f
-(the)g(text)h(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h
-(shell)630 3401 y(v)-5 b(ariable.)150 3570 y Ft(complete-hostname)26
-b(\(M-@\))630 3679 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
+(username.)p eop end
+%%Page: 134 140
+TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y Ft
+(complete-variable)26 b(\(M-$\))630 408 y Fu(A)m(ttempt)32
+b(completion)f(on)g(the)f(text)i(b)s(efore)e(p)s(oin)m(t,)g(treating)i
+(it)f(as)f(a)h(shell)g(v)-5 b(ariable.)150 589 y Ft
+(possible-variable-comple)o(tion)o(s)24 b(\(C-x)30 b($\))630
+699 y Fu(List)42 b(the)g(p)s(ossible)g(completions)h(of)f(the)g(text)h
+(b)s(efore)e(p)s(oin)m(t,)46 b(treating)d(it)f(as)g(a)h(shell)630
+809 y(v)-5 b(ariable.)150 989 y Ft(complete-hostname)26
+b(\(M-@\))630 1099 y Fu(A)m(ttempt)32 b(completion)f(on)g(the)f(text)i
(b)s(efore)e(p)s(oin)m(t,)g(treating)i(it)f(as)f(a)h(hostname.)150
-3848 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
-b(@\))630 3957 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
+1280 y Ft(possible-hostname-comple)o(tion)o(s)24 b(\(C-x)30
+b(@\))630 1390 y Fu(List)25 b(the)g(p)s(ossible)f(completions)h(of)g
(the)g(text)g(b)s(efore)g(p)s(oin)m(t,)h(treating)g(it)f(as)f(a)h
-(hostname.)150 4126 y Ft(complete-command)h(\(M-!\))630
-4236 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
+(hostname.)150 1570 y Ft(complete-command)h(\(M-!\))630
+1680 y Fu(A)m(ttempt)32 b(completion)g(on)f(the)g(text)h(b)s(efore)e(p)
s(oin)m(t,)h(treating)h(it)g(as)f(a)g(command)g(name.)630
-4345 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text)
-h(against)g(aliases,)53 b(reserv)m(ed)630 4455 y(w)m(ords,)36
+1790 y(Command)46 b(completion)i(attempts)g(to)f(matc)m(h)h(the)f(text)
+h(against)g(aliases,)53 b(reserv)m(ed)630 1899 y(w)m(ords,)36
b(shell)g(functions,)h(shell)e(builtins,)i(and)e(\014nally)g
-(executable)i(\014lenames,)g(in)e(that)630 4564 y(order.)150
-4733 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
-b(!\))630 4843 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
+(executable)i(\014lenames,)g(in)e(that)630 2009 y(order.)150
+2190 y Ft(possible-command-complet)o(ions)24 b(\(C-x)29
+b(!\))630 2299 y Fu(List)d(the)h(p)s(ossible)f(completions)h(of)f(the)h
(text)g(b)s(efore)f(p)s(oin)m(t,)h(treating)g(it)g(as)g(a)f(command)630
-4952 y(name.)150 5121 y Ft(dynamic-complete-history)e(\(M-TAB\))630
-5230 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)
+2409 y(name.)150 2590 y Ft(dynamic-complete-history)e(\(M-TAB\))630
+2699 y Fu(A)m(ttempt)31 b(completion)h(on)e(the)g(text)h(b)s(efore)f(p)
s(oin)m(t,)g(comparing)h(the)f(text)h(against)h(lines)630
-5340 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
-(matc)m(hes.)p eop end
-%%Page: 129 135
-TeXDict begin 129 134 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(129)150 299 y Ft(dabbrev-expand)26
-b(\(\))630 408 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g
-(text)g(b)s(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630
-518 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
-(completion)j(matc)m(hes.)150 683 y Ft(complete-into-braces)25
-b(\(M-{\))630 793 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f
+2809 y(from)e(the)g(history)h(list)g(for)f(p)s(ossible)g(completion)i
+(matc)m(hes.)150 2990 y Ft(dabbrev-expand)26 b(\(\))630
+3099 y Fu(A)m(ttempt)i(men)m(u)e(completion)i(on)f(the)g(text)g(b)s
+(efore)f(p)s(oin)m(t,)i(comparing)f(the)g(text)h(against)630
+3209 y(lines)j(from)e(the)i(history)f(list)h(for)g(p)s(ossible)e
+(completion)j(matc)m(hes.)150 3390 y Ft(complete-into-braces)25
+b(\(M-{\))630 3500 y Fu(P)m(erform)f(\014lename)f(completion)i(and)f
(insert)f(the)h(list)g(of)g(p)s(ossible)f(completions)i(enclosed)630
-902 y(within)34 b(braces)h(so)f(the)h(list)g(is)g(a)m(v)-5
+3609 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 1012 y(pansion],)30 b(page)h(23\).)150 1217
-y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 1392 y Ft(start-kbd-macro)
-26 b(\(C-x)j(\(\))630 1501 y Fu(Begin)i(sa)m(ving)h(the)e(c)m
+(Ex-)630 3719 y(pansion],)30 b(page)h(23\).)150 3939
+y Fk(8.4.7)63 b(Keyb)s(oard)41 b(Macros)150 4122 y Ft(start-kbd-macro)
+26 b(\(C-x)j(\(\))630 4232 y Fu(Begin)i(sa)m(ving)h(the)e(c)m
(haracters)i(t)m(yp)s(ed)e(in)m(to)h(the)g(curren)m(t)f(k)m(eyb)s(oard)
-g(macro.)150 1666 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630
-1776 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m
+g(macro.)150 4413 y Ft(end-kbd-macro)d(\(C-x)i(\)\))630
+4522 y Fu(Stop)e(sa)m(ving)h(the)g(c)m(haracters)g(t)m(yp)s(ed)f(in)m
(to)i(the)e(curren)m(t)g(k)m(eyb)s(oard)g(macro)h(and)f(sa)m(v)m(e)i
-(the)630 1886 y(de\014nition.)150 2051 y Ft(call-last-kbd-macro)c
-(\(C-x)k(e\))630 2160 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)
+(the)630 4632 y(de\014nition.)150 4813 y Ft(call-last-kbd-macro)c
+(\(C-x)k(e\))630 4922 y Fu(Re-execute)37 b(the)e(last)h(k)m(eyb)s(oard)
f(macro)h(de\014ned,)f(b)m(y)h(making)f(the)g(c)m(haracters)i(in)e(the)
-630 2270 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m
-(eyb)s(oard.)150 2435 y Ft(print-last-kbd-macro)25 b(\(\))630
-2545 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
+630 5032 y(macro)c(app)s(ear)f(as)g(if)h(t)m(yp)s(ed)f(at)h(the)f(k)m
+(eyb)s(oard.)150 5213 y Ft(print-last-kbd-macro)25 b(\(\))630
+5322 y Fu(Prin)m(t)30 b(the)h(last)g(k)m(eb)s(oard)f(macro)h(de\014ned)
e(in)i(a)f(format)h(suitable)g(for)f(the)h Fr(inputrc)k
-Fu(\014le.)150 2750 y Fk(8.4.8)63 b(Some)41 b(Miscellaneous)i(Commands)
-150 2924 y Ft(re-read-init-file)26 b(\(C-x)j(C-r\))630
-3034 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f(the)g
-Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h(bindings)d
-(or)i(v)-5 b(ariable)630 3144 y(assignmen)m(ts)31 b(found)e(there.)150
-3309 y Ft(abort)g(\(C-g\))630 3418 y Fu(Ab)s(ort)d(the)h(curren)m(t)f
-(editing)h(command)f(and)g(ring)h(the)f(terminal's)h(b)s(ell)g(\(sub)5
-b(ject)26 b(to)i(the)630 3528 y(setting)j(of)g Ft(bell-style)p
-Fu(\).)150 3693 y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p
-Fj(x)p Ft(,)g(...)o(\))630 3803 y Fu(If)35 b(the)g(meta\014ed)g(c)m
-(haracter)i Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g
-(that)g(is)g(b)s(ound)e(to)630 3912 y(the)g(corresp)s(onding)f
-(meta\014ed)h(lo)m(w)m(er)i(case)f(c)m(haracter.)50 b(The)32
-b(b)s(eha)m(vior)h(is)g(unde\014ned)e(if)630 4022 y Fr(x)37
-b Fu(is)30 b(already)h(lo)m(w)m(er)h(case.)150 4187 y
-Ft(prefix-meta)27 b(\(ESC\))630 4297 y Fu(Metafy)39 b(the)e(next)h(c)m
-(haracter)h(t)m(yp)s(ed.)62 b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f
-(without)g(a)h(meta)g(k)m(ey)-8 b(.)630 4406 y(T)m(yping)30
-b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5 b(alen)m(t)31
-b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 4571 y Ft(undo)e(\(C-_)g(or)h(C-x)
-g(C-u\))630 4681 y Fu(Incremen)m(tal)h(undo,)f(separately)h(remem)m(b)s
-(ered)f(for)g(eac)m(h)i(line.)150 4846 y Ft(revert-line)27
-b(\(M-r\))630 4956 y Fu(Undo)33 b(all)h(c)m(hanges)g(made)f(to)h(this)f
-(line.)49 b(This)32 b(is)h(lik)m(e)i(executing)f(the)f
-Ft(undo)f Fu(command)630 5065 y(enough)e(times)h(to)g(get)h(bac)m(k)f
-(to)g(the)f(b)s(eginning.)150 5230 y Ft(tilde-expand)d(\(M-&\))630
-5340 y Fu(P)m(erform)j(tilde)h(expansion)g(on)f(the)g(curren)m(t)h(w)m
-(ord.)p eop end
-%%Page: 130 136
-TeXDict begin 130 135 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(130)150 299 y Ft(set-mark)28
-b(\(C-@\))630 408 y Fu(Set)33 b(the)g(mark)f(to)i(the)f(p)s(oin)m(t.)48
-b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h(mark)g
-(is)f(set)630 518 y(to)f(that)g(p)s(osition.)150 696
-y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
-806 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
+Fu(\014le.)p eop end
+%%Page: 135 141
+TeXDict begin 135 140 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(135)150 299 y Fk(8.4.8)63
+b(Some)41 b(Miscellaneous)i(Commands)150 478 y Ft(re-read-init-file)26
+b(\(C-x)j(C-r\))630 587 y Fu(Read)22 b(in)g(the)g(con)m(ten)m(ts)h(of)f
+(the)g Fr(inputrc)27 b Fu(\014le,)d(and)d(incorp)s(orate)h(an)m(y)h
+(bindings)d(or)i(v)-5 b(ariable)630 697 y(assignmen)m(ts)31
+b(found)e(there.)150 870 y Ft(abort)g(\(C-g\))630 979
+y Fu(Ab)s(ort)d(the)h(curren)m(t)f(editing)h(command)f(and)g(ring)h
+(the)f(terminal's)h(b)s(ell)g(\(sub)5 b(ject)26 b(to)i(the)630
+1089 y(setting)j(of)g Ft(bell-style)p Fu(\).)150 1262
+y Ft(do-lowercase-version)25 b(\(M-A,)k(M-B,)g(M-)p Fj(x)p
+Ft(,)g(...)o(\))630 1372 y Fu(If)35 b(the)g(meta\014ed)g(c)m(haracter)i
+Fr(x)k Fu(is)35 b(upp)s(er)e(case,)k(run)d(the)h(command)g(that)g(is)g
+(b)s(ound)e(to)630 1481 y(the)g(corresp)s(onding)f(meta\014ed)h(lo)m(w)
+m(er)i(case)f(c)m(haracter.)50 b(The)32 b(b)s(eha)m(vior)h(is)g
+(unde\014ned)e(if)630 1591 y Fr(x)37 b Fu(is)30 b(already)h(lo)m(w)m
+(er)h(case.)150 1764 y Ft(prefix-meta)27 b(\(ESC\))630
+1873 y Fu(Metafy)39 b(the)e(next)h(c)m(haracter)h(t)m(yp)s(ed.)62
+b(This)37 b(is)g(for)h(k)m(eyb)s(oards)f(without)g(a)h(meta)g(k)m(ey)-8
+b(.)630 1983 y(T)m(yping)30 b(`)p Ft(ESC)g(f)p Fu(')g(is)h(equiv)-5
+b(alen)m(t)31 b(to)g(t)m(yping)g Fj(M-f)p Fu(.)150 2156
+y Ft(undo)e(\(C-_)g(or)h(C-x)g(C-u\))630 2266 y Fu(Incremen)m(tal)h
+(undo,)f(separately)h(remem)m(b)s(ered)f(for)g(eac)m(h)i(line.)150
+2439 y Ft(revert-line)27 b(\(M-r\))630 2548 y Fu(Undo)33
+b(all)h(c)m(hanges)g(made)f(to)h(this)f(line.)49 b(This)32
+b(is)h(lik)m(e)i(executing)f(the)f Ft(undo)f Fu(command)630
+2658 y(enough)e(times)h(to)g(get)h(bac)m(k)f(to)g(the)f(b)s(eginning.)
+150 2831 y Ft(tilde-expand)d(\(M-&\))630 2940 y Fu(P)m(erform)j(tilde)h
+(expansion)g(on)f(the)g(curren)m(t)h(w)m(ord.)150 3114
+y Ft(set-mark)d(\(C-@\))630 3223 y Fu(Set)33 b(the)g(mark)f(to)i(the)f
+(p)s(oin)m(t.)48 b(If)32 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g
+(supplied,)f(the)h(mark)g(is)f(set)630 3333 y(to)f(that)g(p)s(osition.)
+150 3506 y Ft(exchange-point-and-mark)24 b(\(C-x)29 b(C-x\))630
+3615 y Fu(Sw)m(ap)i(the)g(p)s(oin)m(t)g(with)g(the)g(mark.)43
b(The)31 b(curren)m(t)g(cursor)f(p)s(osition)i(is)f(set)h(to)f(the)h
-(sa)m(v)m(ed)630 915 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
-(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 1093
-y Ft(character-search)26 b(\(C-]\))630 1203 y Fu(A)f(c)m(haracter)h(is)
+(sa)m(v)m(ed)630 3725 y(p)s(osition,)f(and)e(the)i(old)g(cursor)e(p)s
+(osition)i(is)f(sa)m(v)m(ed)i(as)e(the)h(mark.)150 3898
+y Ft(character-search)26 b(\(C-]\))630 4008 y Fu(A)f(c)m(haracter)h(is)
f(read)g(and)f(p)s(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)g(the)f(next)g(o)s
-(ccurrence)g(of)g(that)g(c)m(haracter.)630 1313 y(A)30
+(ccurrence)g(of)g(that)g(c)m(haracter.)630 4117 y(A)30
b(negativ)m(e)j(coun)m(t)e(searc)m(hes)g(for)f(previous)g(o)s
-(ccurrences.)150 1491 y Ft(character-search-backwar)o(d)24
-b(\(M-C-]\))630 1600 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
+(ccurrences.)150 4290 y Ft(character-search-backwar)o(d)24
+b(\(M-C-]\))630 4400 y Fu(A)45 b(c)m(haracter)h(is)f(read)g(and)f(p)s
(oin)m(t)h(is)g(mo)m(v)m(ed)h(to)f(the)g(previous)f(o)s(ccurrence)h(of)
-g(that)630 1710 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
+g(that)630 4509 y(c)m(haracter.)d(A)31 b(negativ)m(e)h(coun)m(t)f
(searc)m(hes)h(for)e(subsequen)m(t)f(o)s(ccurrences.)150
-1888 y Ft(skip-csi-sequence)d(\(\))630 1998 y Fu(Read)i(enough)f(c)m
+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 2107 y(for)37 b(k)m(eys)h(lik)m(e)g(Home)g
+(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 2217 y(Indicator)f(\(CSI\),)f(usually)h(ESC-[.)59
+(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 2326 y(ducing)31
+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 2436 y(command,)f
+(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 2545 y(un)m(b)s(ound)d(b)m
-(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)150
-2724 y Ft(insert-comment)26 b(\(M-#\))630 2833 y Fu(Without)36
-b(a)g(n)m(umeric)g(argumen)m(t,)h(the)f(v)-5 b(alue)36
-b(of)g(the)g Ft(comment-begin)c Fu(v)-5 b(ariable)36
-b(is)g(in-)630 2943 y(serted)c(at)g(the)g(b)s(eginning)f(of)h(the)f
-(curren)m(t)h(line.)45 b(If)31 b(a)h(n)m(umeric)f(argumen)m(t)h(is)g
-(supplied,)630 3052 y(this)k(command)h(acts)g(as)g(a)g(toggle:)55
-b(if)37 b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g
-(line)630 3162 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5
-b(alue)31 b(of)f Ft(comment-begin)p Fu(,)e(the)i(v)-5
-b(alue)31 b(is)g(inserted,)g(otherwise)g(the)630 3271
-y(c)m(haracters)42 b(in)d Ft(comment-begin)e Fu(are)j(deleted)h(from)f
-(the)g(b)s(eginning)g(of)g(the)g(line.)71 b(In)630 3381
-y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e(if)g(a)g
-(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37 b(default)630
-3491 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c Fu(causes)k(this)f
-(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g(a)g(shell)630
-3600 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f(argumen)m(t)h(causes)g
-(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f(remo)m(v)m(ed,)630
-3710 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)m(y)f(the)h(shell.)
-150 3888 y Ft(dump-functions)26 b(\(\))630 3998 y Fu(Prin)m(t)g(all)i
-(of)e(the)h(functions)f(and)g(their)g(k)m(ey)h(bindings)e(to)j(the)e
-(Readline)h(output)f(stream.)630 4107 y(If)31 b(a)h(n)m(umeric)g
-(argumen)m(t)g(is)g(supplied,)f(the)h(output)f(is)h(formatted)g(in)f
-(suc)m(h)h(a)g(w)m(a)m(y)g(that)630 4217 y(it)f(can)g(b)s(e)e(made)i
-(part)f(of)g(an)h Fr(inputrc)k Fu(\014le.)41 b(This)29
-b(command)h(is)h(un)m(b)s(ound)c(b)m(y)k(default.)150
-4395 y Ft(dump-variables)26 b(\(\))630 4504 y Fu(Prin)m(t)21
-b(all)h(of)g(the)f(settable)i(v)-5 b(ariables)22 b(and)f(their)g(v)-5
-b(alues)22 b(to)g(the)f(Readline)h(output)f(stream.)630
-4614 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
+(editing)h(bu\013er.)44 b(This)31 b(is)630 5340 y(un)m(b)s(ound)d(b)m
+(y)i(default,)h(but)f(usually)g(b)s(ound)e(to)j(ESC-[.)p
+eop end
+%%Page: 136 142
+TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(136)150 299 y Ft(insert-comment)26
+b(\(M-#\))630 408 y Fu(Without)36 b(a)g(n)m(umeric)g(argumen)m(t,)h
+(the)f(v)-5 b(alue)36 b(of)g(the)g Ft(comment-begin)c
+Fu(v)-5 b(ariable)36 b(is)g(in-)630 518 y(serted)c(at)g(the)g(b)s
+(eginning)f(of)h(the)f(curren)m(t)h(line.)45 b(If)31
+b(a)h(n)m(umeric)f(argumen)m(t)h(is)g(supplied,)630 628
+y(this)k(command)h(acts)g(as)g(a)g(toggle:)55 b(if)37
+b(the)f(c)m(haracters)i(at)g(the)e(b)s(eginning)g(of)h(the)g(line)630
+737 y(do)30 b(not)h(matc)m(h)h(the)f(v)-5 b(alue)31 b(of)f
+Ft(comment-begin)p Fu(,)e(the)i(v)-5 b(alue)31 b(is)g(inserted,)g
+(otherwise)g(the)630 847 y(c)m(haracters)42 b(in)d Ft(comment-begin)e
+Fu(are)j(deleted)h(from)f(the)g(b)s(eginning)g(of)g(the)g(line.)71
+b(In)630 956 y(either)37 b(case,)j(the)e(line)f(is)g(accepted)i(as)e
+(if)g(a)g(newline)g(had)g(b)s(een)f(t)m(yp)s(ed.)60 b(The)37
+b(default)630 1066 y(v)-5 b(alue)32 b(of)g Ft(comment-begin)c
+Fu(causes)k(this)f(command)h(to)g(mak)m(e)h(the)e(curren)m(t)h(line)g
+(a)g(shell)630 1176 y(commen)m(t.)40 b(If)26 b(a)h(n)m(umeric)f
+(argumen)m(t)h(causes)g(the)f(commen)m(t)i(c)m(haracter)g(to)f(b)s(e)f
+(remo)m(v)m(ed,)630 1285 y(the)31 b(line)f(will)h(b)s(e)f(executed)h(b)
+m(y)f(the)h(shell.)150 1443 y Ft(dump-functions)26 b(\(\))630
+1553 y Fu(Prin)m(t)g(all)i(of)e(the)h(functions)f(and)g(their)g(k)m(ey)
+h(bindings)e(to)j(the)e(Readline)h(output)f(stream.)630
+1663 y(If)31 b(a)h(n)m(umeric)g(argumen)m(t)g(is)g(supplied,)f(the)h
(output)f(is)h(formatted)g(in)f(suc)m(h)h(a)g(w)m(a)m(y)g(that)630
-4724 y(it)f(can)g(b)s(e)e(made)i(part)f(of)g(an)h Fr(inputrc)k
+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 4902 y Ft(dump-macros)c(\(\))630 5011 y
-Fu(Prin)m(t)34 b(all)g(of)g(the)g(Readline)g(k)m(ey)h(sequences)f(b)s
-(ound)e(to)i(macros)g(and)f(the)h(strings)g(they)630
-5121 y(output.)53 b(If)35 b(a)g(n)m(umeric)f(argumen)m(t)i(is)e
+(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
-5230 y(w)m(a)m(y)c(that)g(it)f(can)g(b)s(e)g(made)g(part)f(of)i(an)e
+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 5340 y(default.)p eop end
-%%Page: 131 137
-TeXDict begin 131 136 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(131)150 299 y Ft
-(glob-complete-word)25 b(\(M-g\))630 408 y Fu(The)i(w)m(ord)h(b)s
-(efore)f(p)s(oin)m(t)h(is)g(treated)h(as)f(a)h(pattern)f(for)f
-(pathname)h(expansion,)g(with)g(an)630 518 y(asterisk)d(implicitly)h
-(app)s(ended.)37 b(This)23 b(pattern)i(is)f(used)g(to)h(generate)h(a)e
-(list)h(of)g(matc)m(hing)630 628 y(\014le)30 b(names)h(for)f(p)s
-(ossible)g(completions.)150 781 y Ft(glob-expand-word)c(\(C-x)j(*\))630
-891 y Fu(The)40 b(w)m(ord)g(b)s(efore)g(p)s(oin)m(t)h(is)g(treated)g
-(as)g(a)g(pattern)g(for)f(pathname)g(expansion,)k(and)630
-1000 y(the)c(list)g(of)f(matc)m(hing)i(\014le)e(names)g(is)h(inserted,)
-h(replacing)g(the)e(w)m(ord.)67 b(If)39 b(a)h(n)m(umeric)630
-1110 y(argumen)m(t)31 b(is)f(supplied,)g(a)g(`)p Ft(*)p
-Fu(')h(is)f(app)s(ended)f(b)s(efore)h(pathname)g(expansion.)150
-1263 y Ft(glob-list-expansions)25 b(\(C-x)k(g\))630 1373
-y Fu(The)k(list)h(of)f(expansions)g(that)h(w)m(ould)f(ha)m(v)m(e)h(b)s
-(een)f(generated)h(b)m(y)f Ft(glob-expand-word)630 1482
-y Fu(is)h(displa)m(y)m(ed,)h(and)e(the)h(line)g(is)f(redra)m(wn.)50
-b(If)33 b(a)h(n)m(umeric)g(argumen)m(t)g(is)f(supplied,)h(a)g(`)p
-Ft(*)p Fu(')630 1592 y(is)c(app)s(ended)f(b)s(efore)h(pathname)g
-(expansion.)150 1746 y Ft(display-shell-version)25 b(\(C-x)k(C-v\))630
-1855 y Fu(Displa)m(y)j(v)m(ersion)e(information)h(ab)s(out)f(the)h
-(curren)m(t)f(instance)h(of)f(Bash.)150 2009 y Ft(shell-expand-line)c
-(\(M-C-e\))630 2118 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h
+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 2228 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m
+(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
-2337 y(page)e(22\).)150 2491 y Ft(history-expand-line)25
-b(\(M-^\))630 2600 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
-h(curren)m(t)f(line.)150 2754 y Ft(magic-space)d(\(\))630
-2863 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g
-(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630
-2973 y([History)31 b(In)m(teraction],)i(page)e(143\).)150
-3126 y Ft(alias-expand-line)26 b(\(\))630 3236 y Fu(P)m(erform)i(alias)
-i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h
-([Aliases],)g(page)f(93\).)150 3390 y Ft(history-and-alias-expand)o
-(-lin)o(e)24 b(\(\))630 3499 y Fu(P)m(erform)30 b(history)h(and)e
+5072 y(page)e(22\).)150 5230 y Ft(history-expand-line)25
+b(\(M-^\))630 5340 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the)
+h(curren)m(t)f(line.)p eop end
+%%Page: 137 143
+TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(137)150 299 y Ft(magic-space)27
+b(\(\))630 408 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g
+(curren)m(t)g(line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)
+630 518 y([History)31 b(In)m(teraction],)i(page)e(148\).)150
+663 y Ft(alias-expand-line)26 b(\(\))630 773 y Fu(P)m(erform)i(alias)i
+(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h
+([Aliases],)g(page)f(94\).)150 918 y Ft(history-and-alias-expand)o
+(-lin)o(e)24 b(\(\))630 1028 y Fu(P)m(erform)30 b(history)h(and)e
(alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150
-3653 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
-3762 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
-3916 y Ft(operate-and-get-next)25 b(\(C-o\))630 4025
-y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f
-(fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630
-4135 y(curren)m(t)h(line)h(from)g(the)f(history)h(for)f(editing.)79
-b(A)42 b(n)m(umeric)h(argumen)m(t,)j(if)d(supplied,)630
-4244 y(sp)s(eci\014es)30 b(the)h(history)f(en)m(try)h(to)g(use)f
-(instead)g(of)h(the)f(curren)m(t)h(line.)150 4398 y Ft
-(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630 4507
-y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f
+1173 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630
+1283 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150
+1428 y Ft(edit-and-execute-command)24 b(\(C-x)29 b(C-e\))630
+1538 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f
(command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630
-4617 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h
+1647 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 4727 y(editor,)31 b(in)f(that)h(order.)150
-4961 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 5121
+Fu(as)h(the)630 1757 y(editor,)31 b(in)f(that)h(order.)150
+1983 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 2143
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 5230 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f
+(con)m(tain)150 2252 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 5340 y(the)e Fm(posix)e
-Fu(standard.)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)275 299 y(In)35
-b(order)g(to)i(switc)m(h)f(in)m(teractiv)m(ely)j(b)s(et)m(w)m(een)d
-Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p
-Ft(set)30 b(-o)150 408 y(emacs)p Fu(')43 b(and)h(`)p
-Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h
-([The)e(Set)h(Builtin],)j(page)e(61\).)83 b(The)150 518
-y(Readline)31 b(default)g(is)f Ft(emacs)f Fu(mo)s(de.)275
-650 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f(in)g Ft(vi)f
-Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g(`insertion')g(mo)s
-(de,)g(as)h(if)f(y)m(ou)150 759 y(had)f(t)m(yp)s(ed)g(an)g(`)p
-Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f Fu(switc)m(hes)i(y)m(ou)g(in)m
-(to)h(`command')e(mo)s(de,)h(where)e(y)m(ou)i(can)g(edit)g(the)150
-869 y(text)35 b(of)f(the)g(line)g(with)f(the)h(standard)f
-Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)f(to)f(previous)g
-(history)f(lines)h(with)150 978 y(`)p Ft(k)p Fu(')d(and)e(subsequen)m
-(t)h(lines)h(with)f(`)p Ft(j)p Fu(',)g(and)g(so)h(forth.)150
-1213 y Fs(8.6)68 b(Programmable)47 b(Completion)150 1373
-y Fu(When)25 b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f
-(argumen)m(t)h(to)g(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150
-1482 y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6
-b Fu(\))39 b(has)h(b)s(een)f(de\014ned)f(using)h(the)h
-Ft(complete)d Fu(builtin)j(\(see)g(Section)h(8.7)150
-1592 y([Programmable)h(Completion)f(Builtins],)k(page)d(134\),)j(the)c
-(programmable)g(completion)i(facilities)150 1701 y(are)31
-b(in)m(v)m(ok)m(ed.)275 1833 y(First,)23 b(the)e(command)g(name)g(is)h
-(iden)m(ti\014ed.)37 b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f
-(de\014ned)g(for)h(that)h(command,)150 1943 y(the)44
-b(compsp)s(ec)g(is)g(used)f(to)h(generate)i(the)e(list)g(of)g(p)s
-(ossible)g(completions)h(for)e(the)h(w)m(ord.)81 b(If)44
-b(the)150 2052 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h(string)f
-(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)h(empt)m
-(y)150 2162 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f(with)h
-(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d Fu(is)i(used.)40
-b(If)29 b(the)g(command)g(w)m(ord)150 2271 y(is)e(a)h(full)e(pathname,)
-i(a)g(compsp)s(ec)e(for)h(the)g(full)g(pathname)g(is)g(searc)m(hed)h
-(for)f(\014rst.)39 b(If)26 b(no)h(compsp)s(ec)g(is)150
-2381 y(found)22 b(for)g(the)h(full)g(pathname,)h(an)f(attempt)h(is)f
-(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f(for)h(the)g(p)s(ortion)f(follo)
-m(wing)150 2490 y(the)34 b(\014nal)g(slash.)53 b(If)34
-b(those)g(searc)m(hes)i(do)e(not)g(result)h(in)f(a)g(compsp)s(ec,)h(an)
-m(y)g(compsp)s(ec)f(de\014ned)f(with)150 2600 y(the)k
-Ft(-D)g Fu(option)g(to)h Ft(complete)d Fu(is)i(used)g(as)g(the)g
-(default.)61 b(If)37 b(there)g(is)h(no)f(default)g(compsp)s(ec,)i(Bash)
-150 2710 y(attempts)e(alias)h(expansion)e(on)g(the)h(command)f(w)m(ord)
-g(as)h(a)f(\014nal)g(resort,)j(and)c(attempts)j(to)f(\014nd)e(a)150
-2819 y(compsp)s(ec)30 b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h
-(successful)f(expansion)275 2951 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s
-(een)f(found,)h(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f
-(matc)m(hing)h(w)m(ords.)51 b(If)150 3060 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 3170 y([Commands)30
-b(F)-8 b(or)31 b(Completion],)g(page)g(127\))h(is)f(p)s(erformed.)275
-3302 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 3411 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
-3521 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 3630 y(Section)31 b(5.2)h([Bash)e(V)-8
+m(es)i(as)f(sp)s(eci\014ed)f(in)150 2362 y(the)e Fm(posix)e
+Fu(standard.)275 2489 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv)
+m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g
+Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150
+2599 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p
+Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j
+(page)e(62\).)83 b(The)150 2709 y(Readline)31 b(default)g(is)f
+Ft(emacs)f Fu(mo)s(de.)275 2836 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f
+(in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g
+(`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 2946 y(had)f(t)m(yp)s
+(ed)g(an)g(`)p Ft(i)p Fu('.)41 b(Pressing)29 b Ft(ESC)f
+Fu(switc)m(hes)i(y)m(ou)g(in)m(to)h(`command')e(mo)s(de,)h(where)e(y)m
+(ou)i(can)g(edit)g(the)150 3055 y(text)35 b(of)f(the)g(line)g(with)f
+(the)h(standard)f Ft(vi)g Fu(mo)m(v)m(emen)m(t)j(k)m(eys,)g(mo)m(v)m(e)
+f(to)f(previous)g(history)f(lines)h(with)150 3165 y(`)p
+Ft(k)p Fu(')d(and)e(subsequen)m(t)h(lines)h(with)f(`)p
+Ft(j)p Fu(',)g(and)g(so)h(forth.)150 3391 y Fs(8.6)68
+b(Programmable)47 b(Completion)150 3551 y Fu(When)25
+b(w)m(ord)g(completion)i(is)f(attempted)g(for)g(an)f(argumen)m(t)h(to)g
+(a)g(command)f(for)h(whic)m(h)f(a)h(completion)150 3660
+y(sp)s(eci\014cation)40 b(\(a)h Fr(compsp)s(ec)6 b Fu(\))39
+b(has)h(b)s(een)f(de\014ned)f(using)h(the)h Ft(complete)d
+Fu(builtin)j(\(see)g(Section)h(8.7)150 3770 y([Programmable)h
+(Completion)f(Builtins],)k(page)d(139\),)j(the)c(programmable)g
+(completion)i(facilities)150 3880 y(are)31 b(in)m(v)m(ok)m(ed.)275
+4007 y(First,)23 b(the)e(command)g(name)g(is)h(iden)m(ti\014ed.)37
+b(If)21 b(a)g(compsp)s(ec)g(has)g(b)s(een)f(de\014ned)g(for)h(that)h
+(command,)150 4117 y(the)44 b(compsp)s(ec)g(is)g(used)f(to)h(generate)i
+(the)e(list)g(of)g(p)s(ossible)g(completions)h(for)e(the)h(w)m(ord.)81
+b(If)44 b(the)150 4226 y(command)36 b(w)m(ord)g(is)g(the)g(empt)m(y)h
+(string)f(\(completion)i(attempted)f(at)g(the)g(b)s(eginning)e(of)h(an)
+h(empt)m(y)150 4336 y(line\),)30 b(an)m(y)g(compsp)s(ec)f(de\014ned)f
+(with)h(the)h Ft(-E)e Fu(option)i(to)g Ft(complete)d
+Fu(is)i(used.)40 b(If)29 b(the)g(command)g(w)m(ord)150
+4445 y(is)e(a)h(full)e(pathname,)i(a)g(compsp)s(ec)e(for)h(the)g(full)g
+(pathname)g(is)g(searc)m(hed)h(for)f(\014rst.)39 b(If)26
+b(no)h(compsp)s(ec)g(is)150 4555 y(found)22 b(for)g(the)h(full)g
+(pathname,)h(an)f(attempt)h(is)f(made)g(to)g(\014nd)f(a)h(compsp)s(ec)f
+(for)h(the)g(p)s(ortion)f(follo)m(wing)150 4665 y(the)34
+b(\014nal)g(slash.)53 b(If)34 b(those)g(searc)m(hes)i(do)e(not)g
+(result)h(in)f(a)g(compsp)s(ec,)h(an)m(y)g(compsp)s(ec)f(de\014ned)f
+(with)150 4774 y(the)k Ft(-D)g Fu(option)g(to)h Ft(complete)d
+Fu(is)i(used)g(as)g(the)g(default.)61 b(If)37 b(there)g(is)h(no)f
+(default)g(compsp)s(ec,)i(Bash)150 4884 y(attempts)e(alias)h(expansion)
+e(on)g(the)h(command)f(w)m(ord)g(as)h(a)f(\014nal)g(resort,)j(and)c
+(attempts)j(to)f(\014nd)e(a)150 4993 y(compsp)s(ec)30
+b(for)g(the)h(command)f(w)m(ord)g(from)g(an)m(y)h(successful)f
+(expansion)275 5121 y(Once)k(a)g(compsp)s(ec)g(has)g(b)s(een)f(found,)h
+(it)h(is)f(used)f(to)i(generate)h(the)e(list)h(of)f(matc)m(hing)h(w)m
+(ords.)51 b(If)150 5230 y(a)37 b(compsp)s(ec)f(is)g(not)h(found,)f(the)
+h(default)f(Bash)h(completion)g(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)f
+(Section)g(8.4.6)150 5340 y([Commands)30 b(F)-8 b(or)31
+b(Completion],)g(page)g(133\))h(is)f(p)s(erformed.)p
+eop end
+%%Page: 138 144
+TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(138)275 299 y(First,)31
+b(the)g(actions)g(sp)s(eci\014ed)f(b)m(y)h(the)f(compsp)s(ec)h(are)g
+(used.)40 b(Only)30 b(matc)m(hes)i(whic)m(h)e(are)h(pre\014xed)150
+408 y(b)m(y)h(the)f(w)m(ord)h(b)s(eing)f(completed)h(are)g(returned.)44
+b(When)31 b(the)h Ft(-f)f Fu(or)h Ft(-d)f Fu(option)h(is)f(used)g(for)h
+(\014lename)150 518 y(or)e(directory)h(name)f(completion,)i(the)e
+(shell)h(v)-5 b(ariable)31 b Ft(FIGNORE)d Fu(is)i(used)f(to)i(\014lter)
+g(the)f(matc)m(hes.)42 b(See)150 628 y(Section)31 b(5.2)h([Bash)e(V)-8
b(ariables],)33 b(page)e(73,)g(for)f(a)h(description)g(of)f
-Ft(FIGNORE)p Fu(.)275 3762 y(An)m(y)22 b(completions)h(sp)s(eci\014ed)f
+Ft(FIGNORE)p Fu(.)275 769 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 3871 y(next.)41
+Ft(-G)e Fu(option)i(are)g(generated)150 878 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 3981 y Ft(GLOBIGNORE)29 b Fu(shell)i(v)-5 b(ariable)32
+b(The)150 988 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 4091 y(is)30
-b(used.)275 4222 y(Next,)39 b(the)f(string)f(sp)s(eci\014ed)f(as)h(the)
+Ft(FIGNORE)e Fu(shell)h(v)-5 b(ariable)150 1097 y(is)30
+b(used.)275 1238 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 4332 y(is)c(\014rst)e(split)i(using)f(the)h(c)m
+b(The)37 b(string)150 1348 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
-4441 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide)
+1457 y(honored)f(within)h(the)g(string,)h(in)f(order)f(to)i(pro)m(vide)
f(a)h(mec)m(hanism)f(for)g(the)g(w)m(ords)g(to)g(con)m(tain)i(shell)150
-4551 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5
+1567 y(metac)m(haracters)e(or)e(c)m(haracters)i(in)e(the)g(v)-5
b(alue)31 b(of)g Ft(IFS)p Fu(.)42 b(Eac)m(h)32 b(w)m(ord)e(is)h(then)g
-(expanded)f(using)h(brace)150 4660 y(expansion,)g(tilde)h(expansion,)f
+(expanded)f(using)h(brace)150 1677 y(expansion,)g(tilde)h(expansion,)f
(parameter)g(and)g(v)-5 b(ariable)32 b(expansion,)f(command)f
-(substitution,)i(and)150 4770 y(arithmetic)c(expansion,)f(as)g(describ)
+(substitution,)i(and)150 1786 y(arithmetic)c(expansion,)f(as)g(describ)
s(ed)e(ab)s(o)m(v)m(e)i(\(see)h(Section)f(3.5)g([Shell)g(Expansions],)g
-(page)g(22\).)40 b(The)150 4880 y(results)23 b(are)h(split)g(using)f
+(page)g(22\).)40 b(The)150 1896 y(results)23 b(are)h(split)g(using)f
(the)h(rules)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)g(Section)f(3.5.7)
-h([W)-8 b(ord)24 b(Splitting],)i(page)e(31\).)150 4989
+h([W)-8 b(ord)24 b(Splitting],)i(page)e(32\).)150 2005
y(The)j(results)h(of)f(the)h(expansion)g(are)g(pre\014x-matc)m(hed)g
(against)h(the)f(w)m(ord)f(b)s(eing)g(completed,)j(and)d(the)150
-5099 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f
-(completions.)275 5230 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s
+2115 y(matc)m(hing)k(w)m(ords)f(b)s(ecome)h(the)g(p)s(ossible)f
+(completions.)275 2256 y(After)f(these)g(matc)m(hes)i(ha)m(v)m(e)f(b)s
(een)f(generated,)h(an)m(y)g(shell)f(function)g(or)g(command)g(sp)s
-(eci\014ed)f(with)150 5340 y(the)36 b Ft(-F)f Fu(and)g
+(eci\014ed)f(with)150 2365 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_)p eop end
-%%Page: 133 139
-TeXDict begin 133 138 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(133)150 299 y Ft(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 408 y(ab)s(o)m(v)m(e)34
-b(\(see)g(Section)g(5.2)g([Bash)f(V)-8 b(ariables],)36
-b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g(b)s(eing)f(in)m
-(v)m(ok)m(ed,)k(the)150 518 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 628
+Ft(COMP_)150 2475 y(LINE)p Fu(,)42 b Ft(COMP_POINT)p
+Fu(,)d Ft(COMP_KEY)p Fu(,)i(and)e Ft(COMP_TYPE)f Fu(v)-5
+b(ariables)41 b(are)f(assigned)g(v)-5 b(alues)41 b(as)f(describ)s(ed)
+150 2585 y(ab)s(o)m(v)m(e)34 b(\(see)g(Section)g(5.2)g([Bash)f(V)-8
+b(ariables],)36 b(page)d(73\).)50 b(If)33 b(a)g(shell)g(function)g(is)g
+(b)s(eing)f(in)m(v)m(ok)m(ed,)k(the)150 2694 y Ft(COMP_WORDS)j
+Fu(and)i Ft(COMP_CWORD)d Fu(v)-5 b(ariables)42 b(are)g(also)h(set.)74
+b(When)41 b(the)h(function)f(or)h(command)f(is)150 2804
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
-737 y(completed,)30 b(the)f(second)f(argumen)m(t)h(\($2\))h(is)f(the)g
+2913 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
-847 y(\($3\))40 b(is)f(the)f(w)m(ord)h(preceding)f(the)h(w)m(ord)f(b)s
+3023 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 956 y(\014ltering)33 b(of)h(the)f(generated)h(completions)g
+b(No)150 3133 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 1066 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
-(in)g(generating)h(the)g(matc)m(hes.)275 1200 y(An)m(y)j(function)h(sp)
+(the)150 3242 y(function)d(or)g(command)h(has)f(complete)i(freedom)e
+(in)g(generating)h(the)g(matc)m(hes.)275 3383 y(An)m(y)j(function)h(sp)
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
-1310 y(facilities,)50 b(including)44 b(the)h Ft(compgen)d
+3493 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 1419 y([Programmable)31 b(Completion)h(Builtins],)f
-(page)h(134\),)g(to)g(generate)g(the)f(matc)m(hes.)42
-b(It)31 b(m)m(ust)g(put)f(the)150 1529 y(p)s(ossible)g(completions)h
+i(Section)f(8.7)150 3602 y([Programmable)31 b(Completion)h(Builtins],)f
+(page)h(139\),)g(to)g(generate)g(the)f(matc)m(hes.)42
+b(It)31 b(m)m(ust)g(put)f(the)150 3712 y(p)s(ossible)g(completions)h
(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 1663 y(Next,)26
+b(one)g(p)s(er)e(arra)m(y)i(elemen)m(t.)275 3853 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 1772 y(to)26 b(command)e(substitution.)39
+(equiv)-5 b(alen)m(t)150 3962 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 1882 y(output.)40
+(er)f(line,)j(to)f(the)f(standard)150 4072 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 2016 y(After)24
+(newline,)h(if)f(necessary)-8 b(.)275 4213 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 2125 y(is)34 b(applied)g(to)g(the)h(list.)52
+Fu(option)150 4322 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 2235
+(expansion;)i(a)e(`)p Ft(&)p Fu(')g(in)g(the)150 4432
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 2345 y(with)38
+Fu(')f(ma)m(y)g(b)s(e)f(escap)s(ed)150 4542 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
-2454 y(that)32 b(matc)m(hes)g(the)g(pattern)g(will)f(b)s(e)g(remo)m(v)m
+4651 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 2564 y(in)d(this)g(case)h(an)m(y)g
+Fu(')f(negates)i(the)f(pattern;)150 4761 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 2673 y
+(v)m(ed.)42 b(If)29 b(the)g Ft(nocasematch)150 4870 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
-(65\))h(is)150 2783 y(enabled,)d(the)f(matc)m(h)h(is)g(p)s(erformed)e
+(66\))h(is)150 4980 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 2917 y(Finally)-8 b(,)42 b(an)m(y)c(pre\014x)g(and)f
+(haracters.)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 3026
+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
-3136 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)275
-3270 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 3380 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 3489 y(is)h(attempted.)275 3623 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
-3733 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
+5340 y(as)e(the)f(list)h(of)g(p)s(ossible)f(completions.)p
+eop end
+%%Page: 139 145
+TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(139)275 299 y(If)27
+b(the)h(previously-applied)f(actions)i(do)f(not)g(generate)h(an)m(y)f
+(matc)m(hes,)i(and)d(the)h Ft(-o)h(dirnames)d Fu(op-)150
+408 y(tion)j(w)m(as)f(supplied)f(to)i Ft(complete)d Fu(when)h(the)h
+(compsp)s(ec)g(w)m(as)g(de\014ned,)g(directory)g(name)h(completion)150
+518 y(is)h(attempted.)275 653 y(If)35 b(the)g Ft(-o)30
+b(plusdirs)j Fu(option)j(w)m(as)g(supplied)e(to)i Ft(complete)e
+Fu(when)g(the)i(compsp)s(ec)f(w)m(as)h(de\014ned,)150
+763 y(directory)g(name)f(completion)i(is)e(attempted)h(and)f(an)m(y)h
(matc)m(hes)g(are)g(added)f(to)h(the)f(results)g(of)h(the)150
-3842 y(other)31 b(actions.)275 3976 y(By)g(default,)i(if)e(a)h(compsp)s
+873 y(other)31 b(actions.)275 1008 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 4086 y(co)s(de)21 b(as)g(the)g(full)g(set)g(of)g
+(the)g(completion)150 1117 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 4195 y(and)30 b(the)g(Readline)h(default)f
+h(are)g(not)f(attempted,)150 1227 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 4305 y(w)m(as)d(supplied)e
+b(the)i Ft(-o)e(bashdefault)e Fu(option)150 1337 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 4415 y(attempted)j(if)f
+(the)f(default)h(Bash)g(completions)h(are)150 1446 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 4524 y Ft(complete)f Fu(when)h(the)h(compsp)s(ec)f(w)m(as)i
+(to)150 1556 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 4634 y(if)k(the)h(compsp)s(ec)f(\(and,)g(if)h(attempted,)
+(erformed)150 1665 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 4768 y(When)20 b(a)i(compsp)s(ec)e(indicates)i(that)g(directory)g
+275 1801 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
-4877 y(completion)31 b(functions)e(force)i(Readline)f(to)h(app)s(end)d
+1910 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
-4987 y(b)s(olic)40 b(links)g(to)h(directories,)j(sub)5
+2020 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 5096 y(regardless)31
+45 b Fu(Readline)c(v)-5 b(ariable,)150 2130 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 5230 y(There)25
+b Fu(Readline)31 b(v)-5 b(ariable.)275 2265 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
-5340 y(used)40 b(in)h(com)m(bination)i(with)e(a)g(default)h(completion)
+2374 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)p eop end
-%%Page: 134 140
-TeXDict begin 134 139 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(134)150 299 y(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 408
-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 518 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 628 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
-737 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 847 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 956 y(all)g(at)g(once.)275 1088 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 1198 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 1307 y(load)31
-b(completions)g(dynamically:)390 1439 y Ft(_completion_loader\(\))390
-1548 y({)581 1658 y(.)47 b("/etc/bash_completion.d/$1)o(.sh)o(")42
-b(>/dev/null)j(2>&1)i(&&)g(return)f(124)390 1767 y(})390
-1877 y(complete)g(-D)h(-F)g(_completion_loader)c(-o)k(bashdefault)e(-o)
-i(default)150 2112 y Fs(8.7)68 b(Programmable)47 b(Completion)f
-(Builtins)150 2271 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5
+(for)g(shell)150 2484 y(functions)28 b(executed)h(as)f(completion)i
+(handlers)d(to)i(indicate)g(that)g(completion)g(should)e(b)s(e)h
+(retried)g(b)m(y)150 2594 y(returning)j(an)i(exit)g(status)f(of)h(124.)
+48 b(If)31 b(a)i(shell)f(function)g(returns)f(124,)k(and)c(c)m(hanges)j
+(the)e(compsp)s(ec)150 2703 y(asso)s(ciated)43 b(with)e(the)g(command)g
+(on)g(whic)m(h)g(completion)i(is)e(b)s(eing)g(attempted)h(\(supplied)e
+(as)i(the)150 2813 y(\014rst)29 b(argumen)m(t)h(when)e(the)i(function)f
+(is)g(executed\),)j(programmable)d(completion)i(restarts)f(from)f(the)
+150 2922 y(b)s(eginning,)e(with)g(an)h(attempt)g(to)g(\014nd)e(a)i(new)
+e(compsp)s(ec)i(for)f(that)h(command.)39 b(This)27 b(allo)m(ws)h(a)g
+(set)g(of)150 3032 y(completions)33 b(to)f(b)s(e)g(built)f(dynamically)
+i(as)f(completion)h(is)f(attempted,)h(rather)f(than)f(b)s(eing)g
+(loaded)150 3142 y(all)g(at)g(once.)275 3277 y(F)-8 b(or)38
+b(instance,)h(assuming)e(that)h(there)f(is)h(a)f(library)g(of)g(compsp)
+s(ecs,)i(eac)m(h)g(k)m(ept)e(in)g(a)h(\014le)f(corre-)150
+3386 y(sp)s(onding)g(to)j(the)f(name)f(of)h(the)g(command,)i(the)e
+(follo)m(wing)h(default)f(completion)h(function)e(w)m(ould)150
+3496 y(load)31 b(completions)g(dynamically:)390 3631
+y Ft(_completion_loader\(\))390 3741 y({)581 3851 y(.)47
+b("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g
+(return)f(124)390 3960 y(})390 4070 y(complete)g(-D)h(-F)g
+(_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150
+4312 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150
+4471 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5
b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h
-(facilities:)150 2381 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f
+(facilities:)150 4581 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f
(argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f
-(completed,)j(and)d(t)m(w)m(o)150 2490 y(to)e(mo)s(dify)f(the)g
-(completion)i(as)e(it)h(is)g(happ)s(ening.)150 2644 y
-Ft(compgen)870 2775 y(compgen)46 b([)p Fj(option)p Ft(])f([)p
-Fj(word)p Ft(])630 2907 y Fu(Generate)27 b(p)s(ossible)e(completion)i
+(completed,)j(and)d(t)m(w)m(o)150 4690 y(to)e(mo)s(dify)f(the)g
+(completion)i(as)e(it)h(is)g(happ)s(ening.)150 4851 y
+Ft(compgen)870 4986 y(compgen)46 b([)p Fj(option)p Ft(])f([)p
+Fj(word)p Ft(])630 5121 y Fu(Generate)27 b(p)s(ossible)e(completion)i
(matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g
-Fr(option)p Fu(s,)h(whic)m(h)630 3017 y(ma)m(y)32 b(b)s(e)f(an)m(y)h
+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 3126 y Fu(and)39 b
+(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)630 3236
-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 3345 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 3477 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
-3586 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 3696
-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 3806 y(b)s(e)d(displa)m(y)m(ed.)630
-3937 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in)
+(output.)68 b(When)39 b(using)g(the)h Ft(-F)p eop end
+%%Page: 140 146
+TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(140)630 299 y(or)33
+b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5
+b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g(completion)630
+408 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m
+(v)m(e)g(useful)f(v)-5 b(alues.)630 555 y(The)34 b(matc)m(hes)h(will)g
+(b)s(e)f(generated)h(in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h
+(programmable)f(com-)630 664 y(pletion)d(co)s(de)g(had)f(generated)i
+(them)e(directly)i(from)e(a)h(completion)h(sp)s(eci\014cation)f(with)
+630 774 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j
+Fu(is)d(sp)s(eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g
+Fr(w)m(ord)j Fu(will)630 883 y(b)s(e)d(displa)m(y)m(ed.)630
+1029 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in)
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 4047 y(generated.)150 4200 y Ft(complete)870
-4332 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
-Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 4441
-y(G)i Fj(globpat)p Ft(])870 4551 y([-W)g Fj(wordlist)p
+(ere)630 1139 y(generated.)150 1322 y Ft(complete)870
+1468 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p
+Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 1577
+y(G)i Fj(globpat)p Ft(])870 1687 y([-W)g Fj(wordlist)p
Ft(])e([-F)i Fj(function)p Ft(])e([-C)i Fj(command)p
-Ft(])f([-X)h Fj(filterpat)p Ft(])870 4660 y([-P)g Fj(prefix)p
+Ft(])f([-X)h Fj(filterpat)p Ft(])870 1797 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 4770 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f
-Ft(...)o(])630 4902 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i
+Ft(...])870 1906 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f
+Ft(...)o(])630 2052 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i
(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 5011 y(is)30 b(supplied,)e(or)i
+b(If)38 b(the)f Ft(-p)g Fu(option)630 2162 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 5121 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g
+(eci\014cations)g(are)630 2271 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 5230
+b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 2381
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 5340 y(pletion)i(sp)s
+b(are)h(supplied,)g(all)g(com-)630 2491 y(pletion)i(sp)s
(eci\014cations.)42 b(The)29 b Ft(-D)g Fu(option)h(indicates)h(that)f
-(other)g(supplied)e(options)j(and)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)630 299 y(actions)27
-b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k
-(that)e(is,)g(completion)630 408 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 518 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g
-(supplied)e(options)h(and)g(actions)i(should)d(apply)h(to)630
-628 y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)
-h(attempted)f(on)g(a)f(blank)g(line.)630 737 y(The)24
+(other)g(supplied)e(options)j(and)630 2600 y(actions)c(should)e(apply)g
+(to)i(the)f(\\default")h(command)e(completion;)k(that)e(is,)g
+(completion)630 2710 y(attempted)g(on)f(a)h(command)f(for)g(whic)m(h)g
+(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.)630
+2819 y(The)e Ft(-E)g Fu(option)h(indicates)g(that)g(other)g(supplied)e
+(options)h(and)g(actions)i(should)d(apply)h(to)630 2929
+y(\\empt)m(y")33 b(command)e(completion;)i(that)f(is,)g(completion)h
+(attempted)f(on)g(a)f(blank)g(line.)630 3039 y(The)24
b Ft(-I)g Fu(option)h(indicates)g(that)g(other)g(supplied)e(options)h
-(and)g(actions)i(should)d(apply)h(to)630 847 y(completion)32
-b(on)e(the)g(inital)i(non-assignmen)m(t)f(w)m(ord)f(on)g(the)g(line,)h
-(or)g(after)f(a)h(command)630 956 y(delimiter)41 b(suc)m(h)g(as)f(`)p
+(and)g(actions)i(should)d(apply)h(to)630 3148 y(completion)29
+b(on)g(the)f(initial)h(non-assignmen)m(t)g(w)m(ord)f(on)g(the)g(line,)i
+(or)e(after)h(a)f(command)630 3258 y(delimiter)41 b(suc)m(h)g(as)f(`)p
Ft(;)p Fu(')h(or)g(`)p Ft(|)p Fu(',)i(whic)m(h)e(is)f(usually)h
-(command)f(name)h(completion.)72 b(If)630 1066 y(m)m(ultiple)26
+(command)f(name)h(completion.)72 b(If)630 3367 y(m)m(ultiple)26
b(options)g(are)g(supplied,)g(the)f Ft(-D)g Fu(option)h(tak)m(es)i
(precedence)e(o)m(v)m(er)g Ft(-E)p Fu(,)h(and)e(b)s(oth)630
-1176 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p
+3477 y(tak)m(e)34 b(precedence)f(o)m(v)m(er)h Ft(-I)p
Fu(.)47 b(If)32 b(an)m(y)h(of)g Ft(-D)p Fu(,)g Ft(-E)p
Fu(,)f(or)h Ft(-I)f Fu(are)h(supplied,)f(an)m(y)h(other)g
-Fr(name)630 1285 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d
+Fr(name)630 3587 y Fu(argumen)m(ts)k(are)g(ignored;)j(these)d
(completions)h(only)e(apply)g(to)i(the)f(case)g(sp)s(eci\014ed)f(b)m(y)
-630 1395 y(the)31 b(option.)630 1541 y(The)e(pro)s(cess)g(of)h
+630 3696 y(the)31 b(option.)630 3842 y(The)e(pro)s(cess)g(of)h
(applying)g(these)g(completion)g(sp)s(eci\014cations)h(when)d(w)m(ord)i
-(completion)630 1650 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m
+(completion)630 3952 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
-1760 y(page)31 b(132\).)630 1906 y(Other)d(options,)i(if)f(sp)s
+4061 y(page)31 b(137\).)630 4208 y(Other)d(options,)i(if)f(sp)s
(eci\014ed,)g(ha)m(v)m(e)h(the)f(follo)m(wing)i(meanings.)40
-b(The)29 b(argumen)m(ts)g(to)h(the)630 2016 y Ft(-G)p
+b(The)29 b(argumen)m(ts)g(to)h(the)630 4317 y Ft(-G)p
Fu(,)41 b Ft(-W)p Fu(,)h(and)c Ft(-X)h Fu(options)h(\(and,)h(if)f
(necessary)-8 b(,)42 b(the)e Ft(-P)f Fu(and)f Ft(-S)h
-Fu(options\))h(should)f(b)s(e)630 2125 y(quoted)28 b(to)h(protect)g
+Fu(options\))h(should)f(b)s(e)630 4427 y(quoted)28 b(to)h(protect)g
(them)f(from)f(expansion)h(b)s(efore)g(the)g Ft(complete)e
-Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 2308 y Ft(-o)i
-Fj(comp-option)1110 2418 y Fu(The)c Fr(comp-option)i
+Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 4609 y Ft(-o)i
+Fj(comp-option)1110 4719 y Fu(The)c Fr(comp-option)i
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 2527 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h
+(b)s(eha)m(v-)1110 4829 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 2637 y(b)s(e)j(one)g(of:)1110 2819 y
-Ft(bashdefault)1590 2929 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g
-(default)f(Bash)h(completions)g(if)g(the)1590 3039 y(compsp)s(ec)i
-(generates)i(no)e(matc)m(hes.)1110 3221 y Ft(default)144
+b Fu(ma)m(y)1110 4938 y(b)s(e)j(one)g(of:)1110 5121 y
+Ft(bashdefault)1590 5230 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g
+(default)f(Bash)h(completions)g(if)g(the)1590 5340 y(compsp)s(ec)i
+(generates)i(no)e(matc)m(hes.)p eop end
+%%Page: 141 147
+TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(141)1110 299 y Ft(default)144
b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g
-(the)g(comp-)1590 3331 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
-3513 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 3623 y(generates)32
-b(no)e(matc)m(hes.)1110 3806 y Ft(filenames)1590 3915
-y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
-(\014lenames,)1590 4025 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
+(the)g(comp-)1590 408 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110
+570 y Ft(dirnames)96 b Fu(P)m(erform)46 b(directory)g(name)h
+(completion)g(if)f(the)g(compsp)s(ec)1590 680 y(generates)32
+b(no)e(matc)m(hes.)1110 841 y Ft(filenames)1590 951 y
+Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j
+(\014lenames,)1590 1060 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h
(\014lename-sp)s(eci\014c)h(pro)s(cessing)e(\(lik)m(e)1590
-4134 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s
-(ecial)f(c)m(har-)1590 4244 y(acters,)39 b(or)d(suppressing)f(trailing)
-i(spaces\).)59 b(This)35 b(option)i(is)1590 4354 y(in)m(tended)30
+1170 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s
+(ecial)f(c)m(har-)1590 1279 y(acters,)39 b(or)d(suppressing)f(trailing)
+i(spaces\).)59 b(This)35 b(option)i(is)1590 1389 y(in)m(tended)30
b(to)g(b)s(e)g(used)f(with)g(shell)i(functions)e(sp)s(eci\014ed)g(with)
-1590 4463 y Ft(-F)p Fu(.)1110 4646 y Ft(noquote)144 b
+1590 1499 y Ft(-F)p Fu(.)1110 1660 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 4756 y(are)j(\014lenames)f(\(quoting)h
-(\014lenames)g(is)f(the)h(default\).)1110 4938 y Ft(nosort)192
+(ords)f(if)h(they)1590 1770 y(are)j(\014lenames)f(\(quoting)h
+(\014lenames)g(is)f(the)h(default\).)1110 1931 y Ft(nosort)192
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 5048 y(alphab)s(etically)-8
-b(.)1110 5230 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g
+(ossible)g(completions)1590 2041 y(alphab)s(etically)-8
+b(.)1110 2202 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g
(to)g(app)s(end)d(a)j(space)g(\(the)f(default\))h(to)1590
-5340 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)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)1110 299 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 408 y(ated,)g(directory)f(name)g(completion)i
-(is)d(attempted)i(and)f(an)m(y)1590 518 y(matc)m(hes)j(are)e(added)g
-(to)h(the)g(results)f(of)g(the)h(other)g(actions.)630
-677 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 787 y(completions:)1110
-946 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
+2312 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110
+2473 y Ft(plusdirs)96 b Fu(After)30 b(an)m(y)h(matc)m(hes)g(de\014ned)d
+(b)m(y)i(the)g(compsp)s(ec)g(are)g(gener-)1590 2583 y(ated,)g
+(directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590
+2693 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h
+(other)g(actions.)630 2854 y Ft(-A)f Fj(action)66 b Fu(The)25
+b Fr(action)h Fu(ma)m(y)g(b)s(e)e(one)h(of)h(the)f(follo)m(wing)i(to)e
+(generate)i(a)e(list)h(of)f(p)s(ossible)1110 2964 y(completions:)1110
+3125 y Ft(alias)240 b Fu(Alias)31 b(names.)41 b(Ma)m(y)31
b(also)h(b)s(e)e(sp)s(eci\014ed)f(as)i Ft(-a)p Fu(.)1110
-1106 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
-b(names.)1110 1265 y Ft(binding)144 b Fu(Readline)30
+3287 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31
+b(names.)1110 3448 y Ft(binding)144 b Fu(Readline)30
b(k)m(ey)f(binding)f(names)h(\(see)h(Section)f(8.4)h([Bindable)1590
-1375 y(Readline)h(Commands],)f(page)h(122\).)1110 1534
+3558 y(Readline)h(Commands],)f(page)h(127\).)1110 3719
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 1644
-y(as)31 b Ft(-b)p Fu(.)1110 1803 y Ft(command)144 b Fu(Command)29
+b(Ma)m(y)21 b(also)h(b)s(e)e(sp)s(eci\014ed)1590 3829
+y(as)31 b Ft(-b)p Fu(.)1110 3990 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 1963 y Ft(directory)1590 2072 y Fu(Directory)h
+Ft(-c)p Fu(.)1110 4152 y Ft(directory)1590 4261 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 2232 y Ft(disabled)96 b Fu(Names)31
-b(of)g(disabled)f(shell)g(builtins.)1110 2391 y Ft(enabled)144
+Ft(-d)p Fu(.)1110 4423 y Ft(disabled)96 b Fu(Names)31
+b(of)g(disabled)f(shell)g(builtins.)1110 4584 y Ft(enabled)144
b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110
-2550 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5
+4746 y Ft(export)192 b Fu(Names)34 b(of)f(exp)s(orted)f(shell)h(v)-5
b(ariables.)49 b(Ma)m(y)35 b(also)e(b)s(e)g(sp)s(eci-)1590
-2660 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 2819 y Ft(file)288
+4855 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 5017 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 2979 y Ft(function)96 b Fu(Names)31
-b(of)g(shell)f(functions.)1110 3138 y Ft(group)240 b
+(as)i Ft(-f)p Fu(.)1110 5178 y Ft(function)96 b Fu(Names)31
+b(of)g(shell)f(functions.)1110 5340 y Ft(group)240 b
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 3298 y Ft(helptopic)1590 3407
-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 3517 y(tion)31
-b(4.2)g([Bash)g(Builtins],)g(page)g(50\).)1110 3676 y
+(as)g Ft(-g)p Fu(.)p eop end
+%%Page: 142 148
+TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(142)1110 299 y Ft(helptopic)1590
+408 y Fu(Help)37 b(topics)g(as)g(accepted)h(b)m(y)e(the)h
+Ft(help)f Fu(builtin)g(\(see)h(Sec-)1590 518 y(tion)31
+b(4.2)g([Bash)g(Builtins],)g(page)g(51\).)1110 689 y
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 3786 y(the)55 b
+(\014le)h(sp)s(eci\014ed)e(b)m(y)1590 799 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 3895 y(V)-8 b(ariables],)32 b(page)f(73\).)1110
-4055 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
+([Bash)1590 908 y(V)-8 b(ariables],)32 b(page)f(73\).)1110
+1080 y Ft(job)336 b Fu(Job)31 b(names,)h(if)g(job)f(con)m(trol)i(is)f
(activ)m(e.)46 b(Ma)m(y)33 b(also)g(b)s(e)e(sp)s(eci-)1590
-4164 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 4324 y Ft(keyword)144
+1189 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 1361 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
-4483 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 4643 y Ft(service)144
+1532 y Ft(running)144 b Fu(Names)31 b(of)g(running)d(jobs,)i(if)h(job)f
+(con)m(trol)h(is)g(activ)m(e.)1110 1703 y Ft(service)144
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 4802 y Ft(setopt)192
+(eci\014ed)g(as)g Ft(-s)p Fu(.)1110 1874 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 4912
-y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(61\).)
-1110 5071 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
+Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)1590 1984
+y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(62\).)
+1110 2155 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g
(accepted)i(b)m(y)e(the)g Ft(shopt)e Fu(builtin)1590
-5181 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).)
-1110 5340 y Ft(signal)192 b Fu(Signal)31 b(names.)p eop
-end
-%%Page: 137 143
-TeXDict begin 137 142 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(137)1110 299 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 454 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 609 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
-719 y Ft(-v)p Fu(.)630 874 y Ft(-C)30 b Fj(command)1110
-984 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 1093 y(used)e(as)g(the)h
-(p)s(ossible)f(completions.)630 1249 y Ft(-F)g Fj(function)1110
-1358 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 1468 y(ronmen)m(t.)72
+2265 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(51\).)
+1110 2436 y Ft(signal)192 b Fu(Signal)31 b(names.)1110
+2607 y Ft(stopped)144 b Fu(Names)31 b(of)g(stopp)s(ed)e(jobs,)h(if)g
+(job)g(con)m(trol)i(is)f(activ)m(e.)1110 2778 y Ft(user)288
+b Fu(User)30 b(names.)41 b(Ma)m(y)32 b(also)f(b)s(e)f(sp)s(eci\014ed)f
+(as)i Ft(-u)p Fu(.)1110 2950 y Ft(variable)96 b Fu(Names)36
+b(of)g(all)g(shell)g(v)-5 b(ariables.)56 b(Ma)m(y)37
+b(also)f(b)s(e)f(sp)s(eci\014ed)g(as)1590 3059 y Ft(-v)p
+Fu(.)630 3230 y Ft(-C)30 b Fj(command)1110 3340 y Fr(command)35
+b Fu(is)e(executed)g(in)e(a)i(subshell)e(en)m(vironmen)m(t,)i(and)f
+(its)g(output)g(is)1110 3450 y(used)e(as)g(the)h(p)s(ossible)f
+(completions.)630 3621 y Ft(-F)g Fj(function)1110 3730
+y Fu(The)39 b(shell)g(function)g Fr(function)g Fu(is)g(executed)h(in)f
+(the)g(curren)m(t)g(shell)g(en)m(vi-)1110 3840 y(ronmen)m(t.)72
b(When)41 b(it)g(is)g(executed,)k($1)c(is)g(the)g(name)g(of)g(the)g
-(command)1110 1577 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f
+(command)1110 3950 y(whose)34 b(argumen)m(ts)h(are)g(b)s(eing)f
(completed,)j($2)e(is)f(the)h(w)m(ord)f(b)s(eing)g(com-)1110
-1687 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 1797 y(as)g(describ)s(ed)f(ab)s
+4059 y(pleted,)44 b(and)c($3)i(is)e(the)h(w)m(ord)g(preceding)f(the)h
+(w)m(ord)f(b)s(eing)h(completed,)1110 4169 y(as)g(describ)s(ed)f(ab)s
(o)m(v)m(e)i(\(see)g(Section)f(8.6)h([Programmable)g(Completion],)1110
-1906 y(page)30 b(132\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s
-(ossible)g(completions)h(are)g(retriev)m(ed)1110 2016
+4278 y(page)30 b(137\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s
+(ossible)g(completions)h(are)g(retriev)m(ed)1110 4388
y(from)g(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(COMPREPLY)e
-Fu(arra)m(y)j(v)-5 b(ariable.)630 2171 y Ft(-G)30 b Fj(globpat)1110
-2281 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
-Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 2390
-y(the)31 b(p)s(ossible)e(completions.)630 2545 y Ft(-P)h
+Fu(arra)m(y)j(v)-5 b(ariable.)630 4559 y Ft(-G)30 b Fj(globpat)1110
+4669 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g
+Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 4778
+y(the)31 b(p)s(ossible)e(completions.)630 4950 y Ft(-P)h
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
-2655 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
-2810 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
+5059 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630
+5230 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20
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 2920 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630
-3075 y Ft(-W)h Fj(wordlist)1110 3185 y Fu(The)24 b Fr(w)m(ordlist)k
+(other)g(options)1110 5340 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)p
+eop end
+%%Page: 143 149
+TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(143)630 299 y Ft(-W)30
+b Fj(wordlist)1110 408 y Fu(The)24 b Fr(w)m(ordlist)k
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 3294 y(as)36
+Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 518 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 3404 y(completions)c(are)e
+(expanded.)57 b(The)35 b(p)s(ossible)1110 628 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 3513 y(w)m(ord)f(b)s(eing)g(completed.)630
-3669 y Ft(-X)g Fj(filterpat)1110 3778 y Fr(\014lterpat)d
+(matc)m(h)i(the)1110 737 y(w)m(ord)f(b)s(eing)g(completed.)630
+909 y Ft(-X)g Fj(filterpat)1110 1019 y Fr(\014lterpat)d
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 3888 y(the)30 b(list)f(of)h(p)s
+b(It)25 b(is)g(applied)f(to)1110 1128 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 3998 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 4107
+1110 1238 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m
+(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1347
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 4217 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 4372 y(The)35
+1110 1457 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g
+Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 1629 y(The)35
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
-4482 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f
+1738 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
-4591 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a)
+1848 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 4701 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
-(eci\014cation.)150 4856 y Ft(compopt)870 4988 y(compopt)46
+630 1958 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s
+(eci\014cation.)150 2129 y Ft(compopt)870 2270 y(compopt)46
b([-o)h Fj(option)p Ft(])f([-DEI])g([+o)h Fj(option)p
-Ft(])e([)p Fj(name)p Ft(])630 5121 y Fu(Mo)s(dify)33
+Ft(])e([)p Fj(name)p Ft(])630 2411 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
-5230 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f
+2520 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 5340 y(giv)m(en,)30 b(displa)m(y)e(the)g
+Fr(option)p Fu(s)h(are)630 2630 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.)p eop end
-%%Page: 138 144
-TeXDict begin 138 143 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(138)630 299 y(The)26
-b(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
-408 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g
+Fu(or)27 b(the)i(curren)m(t)e(completion.)630 2740 y(The)f(p)s(ossible)
+g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5
+b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630
+2849 y(ab)s(o)m(v)m(e.)41 b(The)27 b Ft(-D)f Fu(option)i(indicates)g
(that)g(other)f(supplied)f(options)i(should)e(apply)h(to)h(the)630
-518 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)g
-(attempted)g(on)f(a)g(command)630 628 y(for)g(whic)m(h)g(no)g
+2959 y(\\default")33 b(command)f(completion;)i(that)f(is,)g(completion)
+g(attempted)g(on)f(a)g(command)630 3068 y(for)g(whic)m(h)g(no)g
(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 737 y(that)23
+b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3178 y(that)23
b(other)f(supplied)e(options)j(should)e(apply)g(to)i(\\empt)m(y")g
-(command)f(completion;)k(that)630 847 y(is,)36 b(completion)g
+(command)f(completion;)k(that)630 3287 y(is,)36 b(completion)g
(attempted)g(on)e(a)h(blank)g(line.)54 b(The)34 b Ft(-I)g
-Fu(option)h(indicates)g(that)h(other)630 956 y(supplied)26
-b(options)h(should)g(apply)f(to)i(completion)h(on)e(the)g(inital)i
-(non-assignmen)m(t)e(w)m(ord)630 1066 y(on)37 b(the)f(line,)j(or)e
+Fu(option)h(indicates)g(that)h(other)630 3397 y(supplied)23
+b(options)i(should)f(apply)g(to)i(completion)g(on)e(the)h(initial)h
+(non-assignmen)m(t)f(w)m(ord)630 3507 y(on)37 b(the)f(line,)j(or)e
(after)g(a)g(command)f(delimiter)i(suc)m(h)e(as)h(`)p
Ft(;)p Fu(')g(or)f(`)p Ft(|)p Fu(',)j(whic)m(h)e(is)f(usually)630
-1176 y(command)30 b(name)h(completion.)630 1310 y(If)k(m)m(ultiple)i
+3616 y(command)30 b(name)h(completion.)630 3757 y(If)k(m)m(ultiple)i
(options)f(are)g(supplied,)g(the)g Ft(-D)g Fu(option)g(tak)m(es)h
-(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 1419
+(precedence)g(o)m(v)m(er)g Ft(-E)p Fu(,)g(and)630 3867
y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630
-1554 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h
+4007 y Fu(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h
(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f
-(made)630 1663 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h
+(made)630 4117 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 1773 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150
-2013 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150
-2173 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h
+(exists,)630 4226 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150
+4486 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150
+4645 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h
(additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i
-(default)150 2282 y(actions)29 b Ft(complete)d Fu(and)i
+(default)150 4755 y(actions)29 b Ft(complete)d Fu(and)i
Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g
-(and)g(bind)e(it)j(to)g(a)g(particular)150 2392 y(command)h(using)g
-Ft(complete)e(-F)p Fu(.)275 2526 y(The)j(follo)m(wing)j(function)e(pro)
+(and)g(bind)e(it)j(to)g(a)g(particular)150 4864 y(command)h(using)g
+Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro)
m(vides)g(completions)i(for)e(the)g Ft(cd)g Fu(builtin.)46
-b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 2636 y(example)41
+b(It)32 b(is)h(a)f(reasonably)h(go)s(o)s(d)150 5121 y(example)41
b(of)g(what)f(shell)h(functions)f(m)m(ust)g(do)h(when)e(used)h(for)g
-(completion.)73 b(This)39 b(function)h(uses)150 2745
+(completion.)73 b(This)39 b(function)h(uses)150 5230
y(the)32 b(w)m(ord)f(passed)g(as)h Ft($2)f Fu(to)h(determine)g(the)f
(directory)h(name)g(to)g(complete.)46 b(Y)-8 b(ou)32
-b(can)g(also)g(use)g(the)150 2855 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5
+b(can)g(also)g(use)g(the)150 5340 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5
b(ariable;)32 b(the)e(curren)m(t)h(w)m(ord)f(is)g(indexed)g(b)m(y)g
-(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 2989 y(The)42
+(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)p eop end
+%%Page: 144 150
+TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(144)275 299 y(The)42
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 3099 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g
+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 3208 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
-([Tilde)g(Expansion],)g(page)g(23\),)i(searc)m(hing)e(directories)g(in)
-e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 3318 y(whic)m(h)21 b(is)h(describ)s
-(ed)e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
-(Builtins],)j(page)e(43\),)j(and)c(basic)h(supp)s(ort)150
-3428 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
-(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(65\).)46
-b Ft(_comp_)150 3537 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
+(names:)38 b(tilde)150 518 y(expansion)22 b(\(see)h(Section)g(3.5.2)g
+([Tilde)g(Expansion],)g(page)g(24\),)i(searc)m(hing)e(directories)g(in)
+e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 628 y(whic)m(h)21 b(is)h(describ)s(ed)
+e(ab)s(o)m(v)m(e)j(\(see)f(Section)h(4.1)f([Bourne)g(Shell)f
+(Builtins],)j(page)e(44\),)j(and)c(basic)h(supp)s(ort)150
+737 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h
+(Section)f(4.3.2)i([The)d(Shopt)g(Builtin],)i(page)f(66\).)46
+b Ft(_comp_)150 847 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5
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
-3647 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e
+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 3756 y(line.)275 3891 y(P)m(ossible)24 b(completions)h(go)g
+(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
-4000 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e
+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
-4110 y(the)h(function)f(returns.)390 4244 y Ft(#)47 b(A)h(completion)d
-(function)g(for)i(the)g(cd)g(builtin)390 4354 y(#)g(based)g(on)g(the)g
+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 4463 y(_comp_cd\(\))390 4573 y({)581 4682 y(local)i(IFS=$')g
-(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 4792 y(local)g(cur)h
-(_skipdot)f(_cdpath)581 4902 y(local)g(i)i(j)f(k)581
-5121 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h
-(full)g(pathname)581 5230 y(case)g("$2")f(in)581 5340
-y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)p eop end
-%%Page: 139 145
-TeXDict begin 139 144 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(139)581 299 y Ft(*\))286
-b(cur=$2)46 b(;;)581 408 y(esac)581 628 y(#)h(no)h(cdpath)e(or)h
+390 1833 y(_comp_cd\(\))390 1943 y({)581 2052 y(local)i(IFS=$')g
+(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 2162 y(local)g(cur)h
+(_skipdot)f(_cdpath)581 2271 y(local)g(i)i(j)f(k)581
+2491 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h
+(full)g(pathname)581 2600 y(case)g("$2")f(in)581 2710
+y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 2819 y(*\))286
+b(cur=$2)46 b(;;)581 2929 y(esac)581 3148 y(#)h(no)h(cdpath)e(or)h
(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581
-737 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h
-(@\(./*|../*|/*\))d(]];)j(then)772 847 y(#)g(compgen)f(prints)g(paths)h
-(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772
-956 y(IFS=$'\\n')772 1066 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g
-("$cur"\))f(\))772 1176 y(IFS=$')g(\\t\\n')581 1285 y(#)h
+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 1395 y(else)772 1504 y(IFS=$'\\n')772 1614
-y(_skipdot=false)772 1724 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
-(null)i(directory)e(names)i(to)g(.)772 1833 y(_cdpath=${CDPATH/#:/.:})
-772 1943 y(_cdpath=${_cdpath//::/:.)o(:})772 2052 y
-(_cdpath=${_cdpath/\045:/:.})772 2162 y(for)g(i)g(in)g
-(${_cdpath//:/$'\\n'};)c(do)963 2271 y(if)k([[)g($i)g(-ef)g(.)h(]];)f
-(then)f(_skipdot=true;)e(fi)963 2381 y(k="${#COMPREPLY[@]}")963
-2491 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do)
-1154 2600 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory)
-963 2710 y(done)772 2819 y(done)772 2929 y($_skipdot)f(||)i
-(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772
-3039 y(IFS=$')g(\\t\\n')581 3148 y(fi)581 3367 y(#)h(variable)f(names)g
+(CDPATH)581 3915 y(else)772 4025 y(IFS=$'\\n')772 4134
+y(_skipdot=false)772 4244 y(#)f(preprocess)e(CDPATH)h(to)i(convert)d
+(null)i(directory)e(names)i(to)g(.)772 4354 y(_cdpath=${CDPATH/#:/.:})
+772 4463 y(_cdpath=${_cdpath//::/:.)o(:})772 4573 y
+(_cdpath=${_cdpath/\045:/:.})772 4682 y(for)g(i)g(in)g
+(${_cdpath//:/$'\\n'};)c(do)963 4792 y(if)k([[)g($i)g(-ef)g(.)h(]];)f
+(then)f(_skipdot=true;)e(fi)963 4902 y(k="${#COMPREPLY[@]}")963
+5011 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do)
+1154 5121 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory)
+963 5230 y(done)772 5340 y(done)p eop end
+%%Page: 145 151
+TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(8:)41
+b(Command)29 b(Line)i(Editing)2062 b(145)772 299 y Ft($_skipdot)45
+b(||)i(COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772
+408 y(IFS=$')g(\\t\\n')581 518 y(fi)581 737 y(#)h(variable)f(names)g
(if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581
-3477 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c
-(-eq)k(0)g(]];)g(then)772 3587 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g
-("$cur"\))f(\))581 3696 y(fi)581 3915 y(return)g(0)390
-4025 y(})275 4171 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h
+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 4317 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f
-(and)i(append)f(slashes)g(to)h(directories;)390 4427
+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 4536 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h
-(bashdefault)e(-F)i(_comp_cd)f(cd)150 4682 y Fu(Since)33
+(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
-4792 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 4902 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 5011 y(appropriately)-8 b(.)53 b(That)34
+(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 5121 y(determine)i(are)g(directories)
+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 5230
+(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 5340 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)p eop end
-%%Page: 140 146
-TeXDict begin 140 145 bop 150 -116 a Fu(Chapter)30 b(8:)41
-b(Command)29 b(Line)i(Editing)2062 b(140)150 299 y(directory)28
-b(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
+(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
-408 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 518 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 628 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 737 y(Section)31
-b(3.5.8)h([Filename)g(Expansion],)e(page)i(32\),)f(and)f(so)h(on.)275
-872 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 981 y(completion)32 b(for)e(a)h
-Ft(cd)e Fu(command.)275 1116 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
+(to)h(the)g(default)150 3004 y(Readline)f(set.)40 b(These)28
+b(include)f(things)g(lik)m(e)i(command)e(name)h(completion,)h(v)-5
+b(ariable)28 b(completion)h(for)150 3113 y(w)m(ords)e(b)s(eginning)h
+(with)f(`)p Ft($)p Fu(')h(or)g(`)p Ft(${)p Fu(',)h(completions)g(con)m
+(taining)g(pathname)f(expansion)g(patterns)g(\(see)150
+3223 y(Section)j(3.5.8)h([Filename)g(Expansion],)e(page)i(33\),)f(and)f
+(so)h(on.)275 3357 y(Once)39 b(installed)i(using)e Ft(complete)p
+Fu(,)h Ft(_comp_cd)d Fu(will)j(b)s(e)g(called)g(ev)m(ery)h(time)f(w)m
+(e)g(attempt)h(w)m(ord)150 3467 y(completion)32 b(for)e(a)h
+Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g
(extensiv)m(e)h(collection)i(of)c(completions)i(for)f(most)g(of)g(the)g
-(common)150 1225 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 1225 28 4 v 39 w(completion)i(pro)5 b(ject.)150
-1335 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 1445 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 1554
-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 1689 y(An)54 b(older)h(v)m(ersion)h
-(of)f(the)g(bash)p 1532 1689 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
-1798 y Ft(examples/complete)26 b Fu(sub)s(directory)-8
+(Ian)150 3930 y(Macdonald,)48 b(the)c(pro)5 b(ject)44
+b(no)m(w)g(liv)m(es)h(at)f Ft(https:)11 b(/)g(/)g(github)g(.)g(com)g(/)
+g(sc)o(op)g(/)f(bash)o(-co)o(mple)o(tion)g(/)h Fu(.)150
+4040 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g
+(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54
+b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 4174 V
+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: 141 147
-TeXDict begin 141 146 bop 3614 -116 a Fu(141)150 299
+%%Page: 146 152
+TeXDict begin 146 151 bop 3614 -116 a Fu(146)150 299
y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150
554 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the)
f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8
@@ -18154,7 +18514,7 @@ Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1025
y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150
1184 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the)
f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e
-(Set)150 1294 y(Builtin],)32 b(page)g(61\),)h(the)e(shell)h(pro)m
+(Set)150 1294 y(Builtin],)32 b(page)g(62\),)h(the)e(shell)h(pro)m
(vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h
(of)f(commands)150 1404 y(previously)h(t)m(yp)s(ed.)47
b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e
@@ -18181,7 +18541,7 @@ h Ft($HISTSIZE)c Fu(lines)150 2422 y(are)35 b(copied)g(from)g(the)g
(history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h
Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d
Fu(shell)150 2532 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h
-([Bash)f(Builtins],)h(page)g(50\),)h(the)e(lines)g(are)g(app)s(ended)e
+([Bash)f(Builtins],)h(page)g(51\),)h(the)e(lines)g(are)g(app)s(ended)e
(to)i(the)g(history)150 2641 y(\014le,)36 b(otherwise)f(the)g(history)f
(\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e
Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150
@@ -18210,7 +18570,7 @@ Fu(builtin)i(ma)m(y)h(b)s(e)e(used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f
(commands)g(are)g(a)m(v)-5 b(ailable)33 b(in)e(eac)m(h)150
3911 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g
(history)f(list)i(\(see)f(Section)h(8.4.2)g([Commands)e(F)-8
-b(or)150 4020 y(History],)31 b(page)h(123\).)275 4162
+b(or)150 4020 y(History],)31 b(page)h(128\).)275 4162
y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e
(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95
b(The)150 4272 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e
@@ -18227,334 +18587,359 @@ b Ft(lithist)e Fu(shell)i(option)h(causes)g(the)f(shell)g(to)150
(newlines)h(instead)g(of)g(semicolons.)68 b(The)39 b
Ft(shopt)e Fu(builtin)i(is)150 4820 y(used)30 b(to)i(set)g(these)g
(options.)43 b(See)32 b(Section)g(4.3.2)h([The)e(Shopt)f(Builtin],)j
-(page)f(65,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p
+(page)f(66,)g(for)f(a)h(description)150 4929 y(of)f Ft(shopt)p
Fu(.)150 5181 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150
5340 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g
(whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g
(\014le.)p eop end
-%%Page: 142 148
-TeXDict begin 142 147 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)150
-299 y Ft(fc)870 425 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p
-Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 535 y(fc)h(-s)g([)p
+%%Page: 147 153
+TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(147)150
+299 y Ft(fc)870 430 y(fc)47 b([-e)g Fj(ename)p Ft(])f([-lnr])g([)p
+Fj(first)p Ft(])g([)p Fj(last)p Ft(])870 540 y(fc)h(-s)g([)p
Fj(pat)p Ft(=)p Fj(rep)p Ft(])f([)p Fj(command)p Ft(])630
-661 y Fu(The)22 b(\014rst)g(form)f(selects)j(a)f(range)g(of)f(commands)
-g(from)g Fr(\014rst)i Fu(to)f Fr(last)i Fu(from)d(the)h(history)f(list)
-630 771 y(and)i(displa)m(ys)h(or)g(edits)h(and)e(re-executes)j(them.)39
-b(Both)25 b Fr(\014rst)h Fu(and)f Fr(last)j Fu(ma)m(y)d(b)s(e)g(sp)s
-(eci\014ed)630 881 y(as)31 b(a)g(string)f(\(to)i(lo)s(cate)h(the)d
-(most)h(recen)m(t)h(command)f(b)s(eginning)e(with)i(that)g(string\))g
-(or)630 990 y(as)d(a)g(n)m(um)m(b)s(er)f(\(an)h(index)f(in)m(to)i(the)f
-(history)g(list,)h(where)e(a)h(negativ)m(e)i(n)m(um)m(b)s(er)d(is)h
-(used)f(as)630 1100 y(an)f(o\013set)g(from)g(the)g(curren)m(t)f
-(command)h(n)m(um)m(b)s(er\).)38 b(If)25 b Fr(last)k
-Fu(is)d(not)g(sp)s(eci\014ed,)g(it)g(is)g(set)g(to)630
-1209 y Fr(\014rst)p Fu(.)43 b(If)30 b Fr(\014rst)j Fu(is)e(not)h(sp)s
-(eci\014ed,)f(it)g(is)h(set)f(to)h(the)g(previous)f(command)g(for)g
-(editing)h(and)630 1319 y Fq(\000)p Fu(16)37 b(for)g(listing.)61
-b(If)36 b(the)h Ft(-l)f Fu(\015ag)i(is)e(giv)m(en,)k(the)d(commands)f
-(are)i(listed)f(on)g(standard)630 1428 y(output.)59 b(The)36
-b Ft(-n)h Fu(\015ag)g(suppresses)e(the)h(command)h(n)m(um)m(b)s(ers)e
-(when)h(listing.)60 b(The)37 b Ft(-r)630 1538 y Fu(\015ag)e(rev)m
-(erses)f(the)h(order)e(of)i(the)f(listing.)53 b(Otherwise,)35
-b(the)f(editor)h(giv)m(en)g(b)m(y)f Fr(ename)40 b Fu(is)630
-1648 y(in)m(v)m(ok)m(ed)33 b(on)f(a)g(\014le)g(con)m(taining)h(those)f
-(commands.)44 b(If)31 b Fr(ename)38 b Fu(is)31 b(not)h(giv)m(en,)i(the)
-d(v)-5 b(alue)630 1757 y(of)29 b(the)g(follo)m(wing)i(v)-5
-b(ariable)29 b(expansion)g(is)g(used:)39 b Ft(${FCEDIT:-${EDITOR:-vi}})
-p Fu(.)34 b(This)630 1867 y(sa)m(ys)g(to)g(use)f(the)h(v)-5
-b(alue)34 b(of)f(the)h Ft(FCEDIT)e Fu(v)-5 b(ariable)34
-b(if)f(set,)i(or)f(the)f(v)-5 b(alue)34 b(of)g(the)g
-Ft(EDITOR)630 1976 y Fu(v)-5 b(ariable)40 b(if)e(that)i(is)f(set,)i(or)
-e Ft(vi)f Fu(if)h(neither)g(is)g(set.)66 b(When)39 b(editing)g(is)g
-(complete,)k(the)630 2086 y(edited)31 b(commands)f(are)g(ec)m(ho)s(ed)h
-(and)f(executed.)630 2212 y(In)k(the)g(second)g(form,)h
-Fr(command)j Fu(is)c(re-executed)i(after)f(eac)m(h)g(instance)g(of)f
-Fr(pat)j Fu(in)d(the)630 2322 y(selected)e(command)e(is)h(replaced)g(b)
-m(y)f Fr(rep)p Fu(.)41 b Fr(command)34 b Fu(is)c(in)m(tepreted)h(the)g
-(same)g(as)g Fr(\014rst)630 2432 y Fu(ab)s(o)m(v)m(e.)630
-2558 y(A)g(useful)f(alias)i(to)g(use)e(with)h(the)g Ft(fc)f
-Fu(command)h(is)g Ft(r='fc)e(-s')p Fu(,)h(so)h(that)h(t)m(yping)f(`)p
-Ft(r)f(cc)p Fu(')630 2668 y(runs)35 b(the)h(last)h(command)f(b)s
-(eginning)g(with)g Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p
-Fu(')h(re-executes)h(the)e(last)630 2777 y(command)30
-b(\(see)h(Section)h(6.6)f([Aliases],)h(page)g(93\).)150
-2921 y Ft(history)870 3047 y(history)46 b([)p Fj(n)p
-Ft(])870 3157 y(history)g(-c)870 3266 y(history)g(-d)h
-Fj(offset)870 3376 y Ft(history)f(-d)h Fj(start)p Ft(-)p
-Fj(end)870 3485 y Ft(history)f([-anrw])g([)p Fj(filename)p
-Ft(])870 3595 y(history)g(-ps)h Fj(arg)630 3721 y Fu(With)26
+671 y Fu(The)32 b(\014rst)g(form)g(selects)j(a)e(range)g(of)f(commands)
+h(from)f Fr(\014rst)i Fu(to)f Fr(last)j Fu(from)c(the)h(history)630
+781 y(list)41 b(and)f(displa)m(ys)g(or)g(edits)h(and)e(re-executes)j
+(them.)71 b(Both)40 b Fr(\014rst)i Fu(and)e Fr(last)j
+Fu(ma)m(y)e(b)s(e)630 891 y(sp)s(eci\014ed)33 b(as)h(a)g(string)g(\(to)
+h(lo)s(cate)h(the)e(most)g(recen)m(t)h(command)f(b)s(eginning)f(with)g
+(that)630 1000 y(string\))28 b(or)g(as)h(a)f(n)m(um)m(b)s(er)f(\(an)h
+(index)g(in)m(to)h(the)f(history)g(list,)h(where)f(a)g(negativ)m(e)i(n)
+m(um)m(b)s(er)630 1110 y(is)g(used)g(as)h(an)f(o\013set)h(from)f(the)h
+(curren)m(t)f(command)g(n)m(um)m(b)s(er\).)630 1241 y(When)j(listing,)h
+(a)f Fr(\014rst)h Fu(or)f Fr(last)j Fu(of)d(0)g(is)g(equiv)-5
+b(alen)m(t)34 b(to)g(-1)f(and)g(-0)g(is)g(equiv)-5 b(alen)m(t)34
+b(to)g(the)630 1351 y(curren)m(t)k(command)h(\(usually)g(the)g
+Ft(fc)f Fu(command\);)43 b(otherwise)c(0)g(is)g(equiv)-5
+b(alen)m(t)40 b(to)f(-1)630 1461 y(and)30 b(-0)h(is)f(in)m(v)-5
+b(alid.)630 1592 y(If)33 b Fr(last)j Fu(is)e(not)f(sp)s(eci\014ed,)h
+(it)g(is)f(set)h(to)g Fr(\014rst)p Fu(.)49 b(If)33 b
+Fr(\014rst)i Fu(is)e(not)h(sp)s(eci\014ed,)f(it)h(is)g(set)g(to)g(the)
+630 1702 y(previous)g(command)f(for)h(editing)h(and)e
+Fq(\000)p Fu(16)i(for)f(listing.)53 b(If)33 b(the)h Ft(-l)g
+Fu(\015ag)g(is)g(giv)m(en,)j(the)630 1811 y(commands)27
+b(are)h(listed)g(on)f(standard)g(output.)39 b(The)27
+b Ft(-n)g Fu(\015ag)h(suppresses)e(the)h(command)630
+1921 y(n)m(um)m(b)s(ers)h(when)h(listing.)42 b(The)29
+b Ft(-r)g Fu(\015ag)i(rev)m(erses)f(the)g(order)f(of)i(the)f(listing.)
+41 b(Otherwise,)630 2030 y(the)i(editor)h(giv)m(en)g(b)m(y)f
+Fr(ename)49 b Fu(is)43 b(in)m(v)m(ok)m(ed)i(on)e(a)g(\014le)h(con)m
+(taining)g(those)g(commands.)630 2140 y(If)c Fr(ename)46
+b Fu(is)40 b(not)h(giv)m(en,)j(the)d(v)-5 b(alue)41 b(of)f(the)h(follo)
+m(wing)h(v)-5 b(ariable)41 b(expansion)f(is)g(used:)630
+2250 y Ft(${FCEDIT:-${EDITOR:-vi}})o Fu(.)34 b(This)25
+b(sa)m(ys)i(to)g(use)f(the)g(v)-5 b(alue)27 b(of)f(the)h
+Ft(FCEDIT)d Fu(v)-5 b(ariable)630 2359 y(if)33 b(set,)i(or)e(the)h(v)-5
+b(alue)33 b(of)h(the)f Ft(EDITOR)f Fu(v)-5 b(ariable)34
+b(if)f(that)h(is)f(set,)i(or)e Ft(vi)f Fu(if)i(neither)f(is)g(set.)630
+2469 y(When)d(editing)h(is)g(complete,)h(the)e(edited)h(commands)f(are)
+h(ec)m(ho)s(ed)g(and)e(executed.)630 2600 y(In)34 b(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 2710 y(selected)29 b(command)e(is)h
+(replaced)f(b)m(y)h Fr(rep)p Fu(.)39 b Fr(command)31
+b Fu(is)c(in)m(terpreted)h(the)f(same)h(as)g Fr(\014rst)630
+2819 y Fu(ab)s(o)m(v)m(e.)630 2951 y(A)j(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
+3061 y(runs)35 b(the)h(last)h(command)f(b)s(eginning)g(with)g
+Ft(cc)f Fu(and)h(t)m(yping)g(`)p Ft(r)p Fu(')h(re-executes)h(the)e
+(last)630 3170 y(command)30 b(\(see)h(Section)h(6.6)f([Aliases],)h
+(page)g(94\).)150 3324 y Ft(history)870 3455 y(history)46
+b([)p Fj(n)p Ft(])870 3565 y(history)g(-c)870 3674 y(history)g(-d)h
+Fj(offset)870 3784 y Ft(history)f(-d)h Fj(start)p Ft(-)p
+Fj(end)870 3893 y Ft(history)f([-anrw])g([)p Fj(filename)p
+Ft(])870 4003 y(history)g(-ps)h Fj(arg)630 4134 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
-3831 y(a)35 b(`)p Ft(*)p Fu(')g(ha)m(v)m(e)h(b)s(een)e(mo)s(di\014ed.)
+4244 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 3941 y(shell)30
+Fr(n)f Fu(lines.)54 b(If)35 b(the)630 4354 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
-4050 y(for)36 b Fr(strftime)41 b Fu(to)36 b(displa)m(y)g(the)g(time)h
+4463 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
-4160 y(en)m(try)-8 b(.)47 b(No)33 b(in)m(terv)m(ening)g(blank)f(is)g
+4573 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 4269 y(the)e(history)f(line.)630 4396 y(Options,)g(if)h(supplied,)e
-(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4539
+630 4682 y(the)e(history)f(line.)630 4814 y(Options,)g(if)h(supplied,)e
+(ha)m(v)m(e)i(the)g(follo)m(wing)h(meanings:)630 4967
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 4649 y(to)31 b(replace)g(the)g(history)f(list)h
-(completely)-8 b(.)630 4792 y Ft(-d)30 b Fj(offset)66
+(options)1110 5077 y(to)31 b(replace)g(the)g(history)f(list)h
+(completely)-8 b(.)630 5230 y Ft(-d)30 b Fj(offset)66
b Fu(Delete)38 b(the)f(history)f(en)m(try)h(at)f(p)s(osition)h
Fr(o\013set)p Fu(.)59 b(If)36 b Fr(o\013set)j Fu(is)d(p)s(ositiv)m(e,)j
-(it)1110 4902 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s
+(it)1110 5340 y(should)32 b(b)s(e)h(sp)s(eci\014ed)f(as)i(it)g(app)s
(ears)e(when)g(the)i(history)f(is)g(displa)m(y)m(ed.)50
-b(If)1110 5011 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m
-(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110
-5121 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e
-(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 5230 y(of)h(the)g(history)
--8 b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i
-(the)f(curren)m(t)f Ft(history)1110 5340 y(-d)30 b Fu(command.)p
-eop end
-%%Page: 143 149
-TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)630
-299 y Ft(-d)30 b Fj(start)p Ft(-)p Fj(end)1110 408 y
-Fu(Delete)23 b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s
-(ositions)g Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110
-518 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38
+b(If)p eop end
+%%Page: 148 154
+TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(148)1110
+299 y Fr(o\013set)26 b Fu(is)d(negativ)m(e,)k(it)c(is)g(in)m(terpreted)
+h(as)f(relativ)m(e)i(to)f(one)f(greater)h(than)f(the)1110
+408 y(last)36 b(history)f(p)s(osition,)h(so)f(negativ)m(e)i(indices)e
+(coun)m(t)h(bac)m(k)f(from)g(the)g(end)1110 518 y(of)h(the)g(history)-8
+b(,)37 b(and)e(an)h(index)f(of)h(`)p Ft(-1)p Fu(')f(refers)g(to)i(the)f
+(curren)m(t)f Ft(history)1110 628 y(-d)30 b Fu(command.)630
+785 y Ft(-d)g Fj(start)p Ft(-)p Fj(end)1110 895 y Fu(Delete)23
+b(the)d(history)h(en)m(tries)g(b)s(et)m(w)m(een)g(p)s(ositions)g
+Fr(start)i Fu(and)d Fr(end)p Fu(,)i(inclusiv)m(e.)1110
+1004 y(P)m(ositiv)m(e)41 b(and)c(negativ)m(e)k(v)-5 b(alues)38
b(for)h Fr(start)h Fu(and)e Fr(end)j Fu(are)e(in)m(terpreted)g(as)1110
-628 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 789 y Ft(-a)384
+1114 y(describ)s(ed)29 b(ab)s(o)m(v)m(e.)630 1271 y Ft(-a)384
b Fu(App)s(end)28 b(the)i(new)f(history)g(lines)h(to)h(the)e(history)h
-(\014le.)41 b(These)29 b(are)h(history)1110 899 y(lines)36
+(\014le.)41 b(These)29 b(are)h(history)1110 1381 y(lines)36
b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h(curren)m(t)f
-(Bash)h(session,)h(but)1110 1008 y(not)31 b(already)g(app)s(ended)d(to)
-j(the)g(history)f(\014le.)630 1170 y Ft(-n)384 b Fu(App)s(end)32
+(Bash)h(session,)h(but)1110 1490 y(not)31 b(already)g(app)s(ended)d(to)
+j(the)g(history)f(\014le.)630 1648 y Ft(-n)384 b Fu(App)s(end)32
b(the)i(history)f(lines)h(not)g(already)g(read)g(from)f(the)h(history)f
-(\014le)h(to)1110 1280 y(the)26 b(curren)m(t)f(history)g(list.)40
+(\014le)h(to)1110 1758 y(the)26 b(curren)m(t)f(history)g(list.)40
b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)
-1110 1389 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f
-(Bash)h(session.)630 1551 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g
+1110 1867 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f
+(Bash)h(session.)630 2025 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g
(\014le)h(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f
-(list.)630 1713 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m
+(list.)630 2182 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m
(t)f(history)g(list)h(to)h(the)e(history)g(\014le.)630
-1874 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f
+2339 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f
(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
-1984 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
-(in)g(the)g(history)g(list.)630 2146 y Ft(-s)384 b Fu(The)30
+2449 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
+(in)g(the)g(history)g(list.)630 2606 y Ft(-s)384 b Fu(The)30
b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
-2307 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
+2764 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f
Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630
-2417 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
+2873 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d
-Fu(v)-5 b(ariable)29 b(is)f(used.)150 2661 y Fs(9.3)68
-b(History)46 b(Expansion)150 2820 y Fu(The)f(History)h(library)e(pro)m
+Fu(v)-5 b(ariable)29 b(is)f(used.)150 3112 y Fs(9.3)68
+b(History)46 b(Expansion)150 3272 y Fu(The)f(History)h(library)e(pro)m
(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g
-(the)f(history)150 2930 y(expansion)g(pro)m(vided)f(b)m(y)h
+(the)f(history)150 3381 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 3040 y(history)30 b(information.)275
-3176 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
+(used)e(to)i(manipulate)f(the)150 3491 y(history)30 b(information.)275
+3624 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
-3286 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
+3734 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
-3395 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
-(quic)m(kly)-8 b(.)275 3532 y(History)24 b(expansion)f(is)h(p)s
+3844 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
+(quic)m(kly)-8 b(.)275 3977 y(History)24 b(expansion)f(is)h(p)s
(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b)
-s(efore)e(the)h(shell)150 3642 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g
+s(efore)e(the)h(shell)150 4087 y(breaks)32 b(it)i(in)m(to)f(w)m(ords,)g
(and)f(is)h(p)s(erformed)e(on)h(eac)m(h)i(line)f(individually)-8
-b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 3751 y(the)d(history)f
+b(.)48 b(Bash)33 b(attempts)g(to)h(inform)150 4196 y(the)d(history)f
(expansion)g(functions)g(ab)s(out)g(quoting)h(still)g(in)f(e\013ect)i
-(from)e(previous)g(lines.)275 3888 y(History)37 b(expansion)f(tak)m(es)
+(from)e(previous)g(lines.)275 4330 y(History)37 b(expansion)f(tak)m(es)
i(place)g(in)e(t)m(w)m(o)i(parts.)59 b(The)36 b(\014rst)g(is)h(to)g
-(determine)g(whic)m(h)f(line)h(from)150 3998 y(the)42
+(determine)g(whic)m(h)f(line)h(from)150 4439 y(the)42
b(history)f(list)h(should)e(b)s(e)h(used)f(during)g(substitution.)74
b(The)40 b(second)i(is)f(to)h(select)h(p)s(ortions)e(of)150
-4107 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
+4549 y(that)31 b(line)g(for)f(inclusion)h(in)m(to)g(the)g(curren)m(t)f
(one.)42 b(The)30 b(line)h(selected)h(from)e(the)h(history)f(is)h
-(called)h(the)150 4217 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s
+(called)h(the)150 4659 y Fr(ev)m(en)m(t)p Fu(,)e(and)c(the)i(p)s
(ortions)e(of)i(that)f(line)h(that)g(are)f(acted)i(up)s(on)c(are)j
(called)g Fr(w)m(ords)p Fu(.)39 b(V)-8 b(arious)28 b
-Fr(mo)s(di\014ers)150 4327 y Fu(are)33 b(a)m(v)-5 b(ailable)36
+Fr(mo)s(di\014ers)150 4768 y Fu(are)33 b(a)m(v)-5 b(ailable)36
b(to)d(manipulate)h(the)f(selected)h(w)m(ords.)48 b(The)32
b(line)i(is)f(brok)m(en)f(in)m(to)i(w)m(ords)f(in)f(the)i(same)150
-4436 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
+4878 y(fashion)23 b(that)g(Bash)g(do)s(es,)h(so)f(that)h(sev)m(eral)g
(w)m(ords)e(surrounded)e(b)m(y)j(quotes)g(are)g(considered)g(one)g(w)m
-(ord.)150 4546 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
+(ord.)150 4987 y(History)37 b(expansions)g(are)g(in)m(tro)s(duced)f(b)m
(y)h(the)g(app)s(earance)g(of)g(the)g(history)f(expansion)h(c)m
-(haracter,)150 4655 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g
-(default.)275 4792 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
+(haracter,)150 5097 y(whic)m(h)30 b(is)h(`)p Ft(!)p Fu(')f(b)m(y)g
+(default.)275 5230 y(History)c(expansion)g(implemen)m(ts)h(shell-lik)m
(e)h(quoting)f(con)m(v)m(en)m(tions:)40 b(a)27 b(bac)m(kslash)g(can)f
-(b)s(e)g(used)f(to)150 4902 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
+(b)s(e)g(used)f(to)150 5340 y(remo)m(v)m(e)h(the)e(sp)s(ecial)g
(handling)g(for)g(the)g(next)g(c)m(haracter;)k(single)d(quotes)g
-(enclose)g(v)m(erbatim)g(sequences)150 5011 y(of)k(c)m(haracters,)i
-(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)f(history)g(expansion;)g(and)g
-(c)m(haracters)i(enclosed)e(within)150 5121 y(double)h(quotes)i(ma)m(y)
-f(b)s(e)f(sub)5 b(ject)31 b(to)h(history)f(expansion,)g(since)g(bac)m
-(kslash)g(can)h(escap)s(e)f(the)g(history)150 5230 y(expansion)e(c)m
-(haracter,)j(but)d(single)h(quotes)g(ma)m(y)h(not,)f(since)g(they)g
-(are)g(not)f(treated)i(sp)s(ecially)f(within)150 5340
-y(double)g(quotes.)p eop end
-%%Page: 144 150
-TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)275
-299 y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p
+(enclose)g(v)m(erbatim)g(sequences)p eop end
+%%Page: 149 155
+TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(149)150
+299 y(of)29 b(c)m(haracters,)i(and)e(can)g(b)s(e)g(used)f(to)i(inhibit)
+f(history)g(expansion;)g(and)g(c)m(haracters)i(enclosed)e(within)150
+408 y(double)h(quotes)i(ma)m(y)f(b)s(e)f(sub)5 b(ject)31
+b(to)h(history)f(expansion,)g(since)g(bac)m(kslash)g(can)h(escap)s(e)f
+(the)g(history)150 518 y(expansion)e(c)m(haracter,)j(but)d(single)h
+(quotes)g(ma)m(y)h(not,)f(since)g(they)g(are)g(not)f(treated)i(sp)s
+(ecially)f(within)150 628 y(double)g(quotes.)275 765
+y(When)41 b(using)g(the)h(shell,)i(only)e(`)p Ft(\\)p
Fu(')g(and)e(`)p Ft(')p Fu(')i(ma)m(y)g(b)s(e)f(used)g(to)h(escap)s(e)g
-(the)g(history)f(expansion)150 408 y(c)m(haracter,)e(but)34
+(the)g(history)f(expansion)150 875 y(c)m(haracter,)e(but)34
b(the)i(history)g(expansion)f(c)m(haracter)i(is)f(also)g(treated)h(as)e
-(quoted)h(if)g(it)g(immediately)150 518 y(precedes)30
+(quoted)h(if)g(it)g(immediately)150 984 y(precedes)30
b(the)h(closing)g(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
-658 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h
+1122 y(Sev)m(eral)48 b(shell)g(options)h(settable)g(with)e(the)h
Ft(shopt)f Fu(builtin)g(\(see)i(Section)f(4.3.2)i([The)e(Shopt)150
-767 y(Builtin],)24 b(page)e(65\))h(ma)m(y)e(b)s(e)g(used)g(to)h(tailor)
-g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37
-b(If)21 b(the)h Ft(histverify)150 877 y Fu(shell)35 b(option)f(is)h
-(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h(history)g
-(substitutions)e(are)i(not)g(immedi-)150 987 y(ately)i(passed)d(to)i
-(the)g(shell)f(parser.)55 b(Instead,)37 b(the)e(expanded)g(line)g(is)h
-(reloaded)g(in)m(to)g(the)f(Readline)150 1096 y(editing)29
-b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41 b(If)28
-b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h Ft(histreedit)d
-Fu(shell)150 1206 y(option)e(is)g(enabled,)h(a)g(failed)f(history)g
-(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h(the)f(Readline)g
-(editing)h(bu\013er)150 1315 y(for)31 b(correction.)43
-b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f Ft(history)e
-Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f(what)g(a)150
-1425 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g(using)f(it.)40
-b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f Ft(history)e
-Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1534 y(to)36 b(add)f(commands)g
-(to)h(the)g(end)f(of)g(the)h(history)f(list)i(without)e(actually)i
-(executing)g(them,)g(so)e(that)150 1644 y(they)c(are)f(a)m(v)-5
-b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29
-b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275
-1784 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 1893 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 2003 y(page)32
-b(73\).)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
-2112 y(writing)e(the)h(history)f(\014le.)150 2317 y Fk(9.3.1)63
-b(Ev)m(en)m(t)39 b(Designators)150 2464 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
-2573 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
-2741 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
-2850 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 2960 y Fu(builtin\).)150
-3124 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g
-Fr(n)p Fu(.)150 3289 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
-3454 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 3618 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 3728 y(list)31 b(starting)g(with)f
-Fr(string)p Fu(.)150 3892 y Ft(!?)p Fj(string)p Ft([?])630
-4002 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
-4111 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 4221
-y(immediately)g(b)m(y)e(a)h(newline.)150 4386 y Ft(^)p
-Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 4495 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 4605
-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 4769 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
-4974 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
-5121 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
+1232 y(Builtin],)24 b(page)e(66\))h(ma)m(y)e(b)s(e)g(used)g(to)h
+(tailor)g(the)g(b)s(eha)m(vior)f(of)h(history)f(expansion.)37
+b(If)21 b(the)h Ft(histverify)150 1341 y Fu(shell)35
+b(option)f(is)h(enabled,)g(and)f(Readline)h(is)f(b)s(eing)g(used,)h
+(history)g(substitutions)e(are)i(not)g(immedi-)150 1451
+y(ately)i(passed)d(to)i(the)g(shell)f(parser.)55 b(Instead,)37
+b(the)e(expanded)g(line)g(is)h(reloaded)g(in)m(to)g(the)f(Readline)150
+1561 y(editing)29 b(bu\013er)f(for)h(further)e(mo)s(di\014cation.)41
+b(If)28 b(Readline)h(is)g(b)s(eing)f(used,)h(and)f(the)h
+Ft(histreedit)d Fu(shell)150 1670 y(option)e(is)g(enabled,)h(a)g
+(failed)f(history)g(expansion)g(will)g(b)s(e)f(reloaded)h(in)m(to)h
+(the)f(Readline)g(editing)h(bu\013er)150 1780 y(for)31
+b(correction.)43 b(The)30 b Ft(-p)g Fu(option)h(to)h(the)f
+Ft(history)e Fu(builtin)h(command)h(ma)m(y)g(b)s(e)f(used)g(to)i(see)f
+(what)g(a)150 1889 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g
+(using)f(it.)40 b(The)24 b Ft(-s)h Fu(option)g(to)h(the)f
+Ft(history)e Fu(builtin)i(ma)m(y)g(b)s(e)g(used)150 1999
+y(to)36 b(add)f(commands)g(to)h(the)g(end)f(of)g(the)h(history)f(list)i
+(without)e(actually)i(executing)g(them,)g(so)e(that)150
+2108 y(they)c(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g
+(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f
+(Readline.)275 2246 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g
+(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g
+(expansion)g(mec)m(h-)150 2356 y(anism)h(with)g(the)g
+Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)
+i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150
+2465 y(page)32 b(73\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g
+(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when)
+150 2575 y(writing)e(the)h(history)f(\014le.)150 2777
+y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 2924
+y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f
+(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
+b(Unless)33 b(the)150 3034 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
+f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
+(history)f(list.)150 3198 y Ft(!)432 b Fu(Start)34 b(a)f(history)h
+(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
+(tab,)f(the)g(end)f(of)630 3308 y(the)i(line,)g(`)p Ft(=)p
+Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d
+Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630
+3417 y Fu(builtin\).)150 3580 y Ft(!)p Fj(n)384 b Fu(Refer)30
+b(to)i(command)e(line)g Fr(n)p Fu(.)150 3742 y Ft(!-)p
+Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g
+Fu(lines)h(bac)m(k.)150 3905 y Ft(!!)384 b Fu(Refer)30
+b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
+(for)g(`)p Ft(!-1)p Fu('.)150 4067 y Ft(!)p Fj(string)144
+b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
+(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
+4177 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
+4340 y Ft(!?)p Fj(string)p Ft([?])630 4449 y Fu(Refer)25
+b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
+g(p)s(osition)g(in)g(the)g(history)630 4559 y(list)32
+b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p
+Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39
+b Fu(is)32 b(follo)m(w)m(ed)630 4668 y(immediately)f(b)m(y)e(a)h
+(newline.)40 b(If)29 b Fr(string)38 b Fu(is)29 b(missing,)h(the)g
+(string)f(from)g(the)h(most)g(recen)m(t)630 4778 y(searc)m(h)h(is)f
+(used;)g(it)h(is)g(an)f(error)g(if)g(there)h(is)f(no)g(previous)g
+(searc)m(h)h(string.)150 4941 y Ft(^)p Fj(string1)p Ft(^)p
+Fj(string2)p Ft(^)630 5050 y Fu(Quic)m(k)h(Substitution.)44
+b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
+Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 5160
+y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s^)p Fj(string1)p
+Ft(^)p Fj(string2)p Ft(^)p Fu(.)150 5322 y Ft(!#)384
+b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)p
+eop end
+%%Page: 150 156
+TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(150)150
+299 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
+446 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
-5230 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
+555 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 5340 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
+(b)s(egins)150 665 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)p
-eop end
-%%Page: 145 151
-TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(145)150
-299 y(\014rst)29 b(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 408 y(single)h(spaces.)275
-552 y(F)-8 b(or)31 b(example,)150 725 y Ft(!!)384 b Fu(designates)37
+(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
+775 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)41
+b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f(line)g
+(separated)h(b)m(y)150 884 y(single)h(spaces.)275 1019
+y(F)-8 b(or)31 b(example,)150 1179 y Ft(!!)384 b Fu(designates)37
b(the)f(preceding)g(command.)57 b(When)35 b(y)m(ou)i(t)m(yp)s(e)f
-(this,)h(the)f(preceding)g(com-)630 834 y(mand)30 b(is)g(rep)s(eated)g
-(in)g(toto.)150 1002 y Ft(!!:$)288 b Fu(designates)23
+(this,)h(the)f(preceding)g(com-)630 1289 y(mand)30 b(is)g(rep)s(eated)g
+(in)g(toto.)150 1449 y Ft(!!:$)288 b Fu(designates)23
b(the)g(last)g(argumen)m(t)g(of)f(the)h(preceding)f(command.)38
-b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1112 y(to)31
-b Ft(!$)p Fu(.)150 1280 y Ft(!fi:2)240 b Fu(designates)30
+b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630 1558 y(to)31
+b Ft(!$)p Fu(.)150 1718 y Ft(!fi:2)240 b Fu(designates)30
b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f(recen)m(t)i(command)e
-(starting)h(with)f(the)630 1390 y(letters)j Ft(fi)p Fu(.)275
-1563 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
-1735 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40
+(starting)h(with)f(the)630 1828 y(letters)j Ft(fi)p Fu(.)275
+1988 y(Here)e(are)h(the)g(w)m(ord)f(designators:)150
+2148 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40
b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f
-(w)m(ord.)150 1904 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
-2072 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
-(ord)g(1.)150 2240 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
-2409 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
-2577 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 2745 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
+(w)m(ord.)150 2308 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
+2467 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
+(ord)g(1.)150 2627 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
+2787 y Ft(\045)432 b Fu(The)40 b(\014rst)h(w)m(ord)f(matc)m(hed)i(b)m
+(y)f(the)g(most)g(recen)m(t)h(`)p Ft(?)p Fj(string)p
+Ft(?)p Fu(')d(searc)m(h,)44 b(if)d(the)g(searc)m(h)630
+2897 y(string)30 b(b)s(egins)g(with)g(a)h(c)m(haracter)h(that)f(is)f
+(part)h(of)f(a)h(w)m(ord.)150 3057 y Fj(x)p Ft(-)p Fj(y)336
+b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p Ft(-)p Fj(y)p
+Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p Fu('.)150 3216
+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
-2855 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
+3326 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 2964 y(that)j(case.)150 3133 y Fj(x)p
+(returned)e(in)630 3436 y(that)j(case.)150 3595 y Fj(x)p
Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150
-3301 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 3474 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 3583 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
-3791 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 3938 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
-4048 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
-Ft(:)p Fu('.)150 4221 y Ft(h)432 b Fu(Remo)m(v)m(e)32
+3755 y Fj(x)p Ft(-)384 b Fu(Abbreviates)27 b(`)p Fj(x)p
+Ft(-$)p Fu(')g(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)e(omits)i(the)f
+(last)h(w)m(ord.)39 b(If)27 b(`)p Ft(x)p Fu(')g(is)g(missing,)g(it)h
+(defaults)630 3865 y(to)j(0.)275 4025 y(If)i(a)h(w)m(ord)g(designator)g
+(is)g(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h
+(the)e(previous)f(command)150 4135 y(is)d(used)g(as)h(the)f(ev)m(en)m
+(t.)150 4334 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 4481
+y Fu(After)29 b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g
+(add)f(a)h(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)
+150 4591 y(mo)s(di\014ers,)33 b(eac)m(h)h(preceded)f(b)m(y)g(a)h(`)p
+Ft(:)p Fu('.)50 b(These)33 b(mo)s(dify)-8 b(,)33 b(or)h(edit,)g(the)g
+(w)m(ord)f(or)g(w)m(ords)g(selected)h(from)150 4700 y(the)d(history)f
+(ev)m(en)m(t.)150 4860 y Ft(h)432 b Fu(Remo)m(v)m(e)32
b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
-h(head.)150 4389 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
+h(head.)150 5020 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150
-4557 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
+5180 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f
-(basename.)150 4726 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
-(trailing)g(su\016x.)150 4894 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
-5062 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
-(escaping)h(further)e(substitutions.)150 5230 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 5340 y(and)d(newlines.)p eop end
-%%Page: 146 152
-TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(9:)41
-b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(146)150
-299 y Ft(s/)p Fj(old)p Ft(/)p Fj(new)p Ft(/)630 408 y
-Fu(Substitute)32 b 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 518 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 628 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 737 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 847 y(the)31
-b(input)e(line.)150 1006 y Ft(&)432 b Fu(Rep)s(eat)31
-b(the)f(previous)g(substitution.)150 1166 y Ft(g)150
-1275 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 1385 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 1544 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: 147 153
-TeXDict begin 147 152 bop 3614 -116 a Fu(147)150 299
+(basename.)150 5340 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
+(trailing)g(su\016x.)p eop end
+%%Page: 151 157
+TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(9:)41
+b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(151)150
+299 y Ft(p)432 b Fu(Prin)m(t)30 b(the)h(new)f(command)g(but)g(do)g(not)
+g(execute)i(it.)150 458 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g
+(w)m(ords,)g(escaping)h(further)e(substitutions.)150
+618 y Ft(x)432 b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i
+(with)f(`)p Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i
+(spaces,)h(tabs,)630 727 y(and)38 b(newlines.)66 b(The)39
+b(`)p Ft(q)p Fu(')g(and)f(`)p Ft(x)p Fu(')h(mo)s(di\014ers)f(are)h(m)m
+(utually)g(exclusiv)m(e;)45 b(the)39 b(last)h(one)630
+837 y(supplied)29 b(is)i(used.)150 996 y Ft(s/)p Fj(old)p
+Ft(/)p Fj(new)p Ft(/)630 1106 y Fu(Substitute)g Fr(new)39
+b Fu(for)32 b(the)g(\014rst)f(o)s(ccurrence)h(of)f Fr(old)36
+b Fu(in)31 b(the)h(ev)m(en)m(t)h(line.)46 b(An)m(y)31
+b(c)m(haracter)630 1215 y(ma)m(y)k(b)s(e)e(used)h(as)g(the)h(delimiter)
+g(in)f(place)h(of)f(`)p Ft(/)p Fu('.)53 b(The)33 b(delimiter)i(ma)m(y)g
+(b)s(e)f(quoted)g(in)630 1325 y Fr(old)40 b Fu(and)c
+Fr(new)44 b Fu(with)36 b(a)h(single)g(bac)m(kslash.)60
+b(If)36 b(`)p Ft(&)p Fu(')h(app)s(ears)e(in)i Fr(new)p
+Fu(,)g(it)h(is)e(replaced)h(b)m(y)630 1435 y Fr(old)p
+Fu(.)k(A)31 b(single)g(bac)m(kslash)g(will)g(quote)g(the)g(`)p
+Ft(&)p Fu('.)41 b(If)31 b Fr(old)j Fu(is)c(n)m(ull,)h(it)g(is)g(set)g
+(to)g(the)g(last)g Fr(old)630 1544 y Fu(substituted,)j(or,)g(if)f(no)g
+(previous)g(history)g(substitutions)g(to)s(ok)h(place,)h(the)e(last)h
+Fr(string)630 1654 y Fu(in)j(a)g(!?)p Fr(string)8 b Ft([?])37
+b Fu(searc)m(h.)61 b(If)37 b Fr(new)45 b Fu(is)37 b(is)g(n)m(ull,)i
+(eac)m(h)f(matc)m(hing)h Fr(old)h Fu(is)e(deleted.)61
+b(The)630 1763 y(\014nal)30 b(delimiter)h(is)g(optional)g(if)f(it)h(is)
+g(the)f(last)i(c)m(haracter)f(on)g(the)f(input)g(line.)150
+1923 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
+2082 y Ft(g)150 2192 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
+(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
+b(Used)39 b(in)f(conjunction)630 2301 y(with)30 b(`)p
+Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p
+Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 2461 y
+Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p
+Fu(')f(or)f(`)p Ft(&)p Fu(')h(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m
+(ord)e(in)g(the)g(ev)m(en)m(t.)p eop end
+%%Page: 152 158
+TeXDict begin 152 157 bop 3614 -116 a Fu(152)150 299
y Fp(10)80 b(Installing)52 b(Bash)150 534 y Fu(This)31
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
@@ -18624,12 +19009,12 @@ o Fu(:)390 4767 y Ft(mkdir)46 b(/usr/local/build/bash-4.4)390
4877 y(cd)h(/usr/local/build/bash-4.4)390 4986 y(bash)g
(/usr/local/src/bash-4.4)o(/con)o(fig)o(ure)390 5096
y(make)275 5230 y Fu(See)27 b(Section)h(10.3)g([Compiling)g(F)-8
-b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(148,)j(for)c(more)i
+b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(153,)j(for)c(more)i
(information)150 5340 y(ab)s(out)i(building)g(in)g(a)g(directory)h
(separate)h(from)e(the)g(source.)p eop end
-%%Page: 148 154
-TeXDict begin 148 153 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(148)275 299 y(If)53 b(y)m(ou)h(need)f(to)
+%%Page: 153 159
+TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(153)275 299 y(If)53 b(y)m(ou)h(need)f(to)
i(do)e(un)m(usual)g(things)g(to)i(compile)g(Bash,)k(please)c(try)e(to)i
(\014gure)e(out)h(ho)m(w)150 408 y Ft(configure)47 b
Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h(to)h(do)e(them,)55
@@ -18678,7 +19063,7 @@ Ft(make)p Fu(.)55 b Ft(cd)35 b Fu(to)i(the)e(directory)h(where)150
3274 y(y)m(ou)k(w)m(an)m(t)h(the)g(ob)5 b(ject)41 b(\014les)f(and)f
(executables)j(to)e(go)h(and)f(run)e(the)j Ft(configure)c
Fu(script)j(from)g(the)150 3383 y(source)32 b(directory)h(\(see)g
-(Section)f(10.1)i([Basic)f(Installation],)i(page)e(147\).)47
+(Section)f(10.1)i([Basic)f(Installation],)i(page)e(152\).)47
b(Y)-8 b(ou)32 b(ma)m(y)h(need)f(to)g(supply)150 3493
y(the)43 b Ft(--srcdir=PATH)c Fu(argumen)m(t)k(to)h(tell)g
Ft(configure)c Fu(where)i(the)h(source)g(\014les)g(are.)78
@@ -18713,9 +19098,9 @@ Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 5340
y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e
Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)p
eop end
-%%Page: 149 155
-TeXDict begin 149 154 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(149)150 299 y Ft(--prefix=)p
+%%Page: 154 160
+TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(154)150 299 y Ft(--prefix=)p
Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h(a)f(v)-5
b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p
Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 408 y(`)p
@@ -18782,9 +19167,9 @@ Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s
(oilerplate)g(options.)61 b(`)p Ft(configure)150 5340
y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)p
eop end
-%%Page: 150 156
-TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(150)150 299 y Fs(10.8)68
+%%Page: 155 161
+TeXDict begin 155 160 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(155)150 299 y Fs(10.8)68
b(Optional)46 b(F)-11 b(eatures)150 458 y Fu(The)29 b(Bash)h
Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f(of)h Ft(--enable-)p
Fj(feature)25 b Fu(options,)30 b(where)g Fr(feature)35
@@ -18857,9 +19242,9 @@ b(/)g(/)g(www)g(.)g(unix)g(.)g(org)t(/)g(v)o(ersi)o(on2)t(/)g(w)o(hats)
o(new)t(/)630 5340 y(lfs20mar)h(.)g(html)p Fu(\))35 b(if)j(the)g(op)s
(erating)g(system)g(requires)f(sp)s(ecial)i(compiler)f(options)g(to)p
eop end
-%%Page: 151 157
-TeXDict begin 151 156 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(151)630 299 y(build)33
+%%Page: 156 162
+TeXDict begin 156 161 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(156)630 299 y(build)33
b(programs)g(whic)m(h)h(can)g(access)h(large)g(\014les.)51
b(This)33 b(is)h(enabled)g(b)m(y)g(default,)h(if)f(the)630
408 y(op)s(erating)d(system)f(pro)m(vides)h(large)g(\014le)g(supp)s
@@ -18883,19 +19268,19 @@ b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f
s(ort.)150 1963 y Ft(--enable-alias)630 2072 y Fu(Allo)m(w)41
b(alias)g(expansion)f(and)f(include)g(the)h Ft(alias)f
Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630
-2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(93\).)150
+2182 y(tion)31 b(6.6)g([Aliases],)i(page)e(94\).)150
2344 y Ft(--enable-arith-for-comma)o(nd)630 2453 y Fu(Include)21
b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g
Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630
2563 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f
-(3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150
+(3.2.5.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150
2725 y Ft(--enable-array-variables)630 2834 y Fu(Include)h(supp)s(ort)g
(for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33
-b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(94\).)150
+b(\(see)h(Section)g(6.7)h([Ar-)630 2944 y(ra)m(ys],)c(page)g(95\).)150
3106 y Ft(--enable-bang-history)630 3215 y Fu(Include)36
b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f
(\(see)h(Section)g(9.3)h([History)f(In-)630 3325 y(teraction],)c(page)e
-(143\).)150 3487 y Ft(--enable-brace-expansion)630 3597
+(148\).)150 3487 y Ft(--enable-brace-expansion)630 3597
y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h
Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40
b(Section)h(3.5.1)630 3706 y([Brace)32 b(Expansion],)e(page)h(23,)h
@@ -18913,24 +19298,24 @@ Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630
b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g
(w)m(ord)f(and)g(for)h(displa)m(ying)630 4849 y(timing)37
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
+Ft(time)d Fu(\(see)i(Section)g(3.2.3)h([Pip)s(elines],)630
4959 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w)
m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.)
150 5121 y Ft(--enable-cond-command)630 5230 y Fu(Include)33
b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51
-b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 5340 y(tional)c
+b(\(see)34 b(Section)h(3.2.5.2)h([Condi-)630 5340 y(tional)c
(Constructs],)e(page)h(11\).)p eop end
-%%Page: 152 158
-TeXDict begin 152 157 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(152)150 299 y Ft(--enable-cond-regexp)630
+%%Page: 157 163
+TeXDict begin 157 162 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(157)150 299 y Ft(--enable-cond-regexp)630
408 y Fu(Include)35 b(supp)s(ort)f(for)i(matc)m(hing)h
Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p
Ft(=~)p Fu(')g(binary)630 518 y(op)s(erator)25 b(in)f(the)h
-Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h
+Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.5.2)h
([Conditional)e(Con-)630 628 y(structs],)31 b(page)g(11\).)150
774 y Ft(--enable-coprocesses)630 883 y Fu(Include)23
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
+Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.3)630
993 y([Pip)s(elines],)31 b(page)g(8\).)150 1139 y Ft(--enable-debugger)
630 1249 y Fu(Include)f(supp)s(ort)e(for)i(the)h(bash)f(debugger)g
(\(distributed)g(separately\).)150 1395 y Ft(--enable-dev-fd-stat-bro)o
@@ -18942,23 +19327,23 @@ b(around.)39 b(This)27 b(has)g(implications)630 1724
y(for)j(conditional)i(commands)e(that)h(test)g(\014le)g(attributes.)150
1870 y Ft(--enable-direxpand-defau)o(lt)630 1979 y Fu(Cause)53
b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i
-([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(65\))g(to)f(b)s(e)f
+([The)e(Shopt)f(Builtin],)630 2089 y(page)29 b(66\))g(to)f(b)s(e)f
(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41
b(It)27 b(is)h(normally)g(disabled)630 2198 y(b)m(y)i(default.)150
2345 y Ft(--enable-directory-stack)630 2454 y Fu(Include)j(supp)s(ort)g
(for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i
Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630
2564 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m
-(k],)g(page)f(96\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630
+(k],)g(page)f(97\).)150 2710 y Ft(--enable-disabled-builti)o(ns)630
2819 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m
(ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f
Ft(xxx)e Fu(has)630 2929 y(b)s(een)31 b(disabled)g(using)g(`)p
Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e
-(Builtins],)i(page)f(50,)630 3039 y(for)e(details)i(of)e(the)h
+(Builtins],)i(page)f(51,)630 3039 y(for)e(details)i(of)e(the)h
Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150
3185 y Ft(--enable-dparen-arithmet)o(ic)630 3294 y Fu(Include)42
b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i
-(Section)f(3.2.4.2)i([Conditional)630 3404 y(Constructs],)30
+(Section)f(3.2.5.2)i([Conditional)630 3404 y(Constructs],)30
b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630
3660 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h
(matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630
@@ -18967,7 +19352,7 @@ b(page)h(11\).)150 3550 y Ft(--enable-extended-glob)630
4025 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g
Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)
d(Sec-)630 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g
-(65,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630
+(66,)h(to)f(b)s(e)f(enabled.)150 4281 y Ft(--enable-function-import)630
4390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g
(de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630
4500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41
@@ -18976,23 +19361,23 @@ b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150
4756 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g
Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m
(v)m(e)h(under)630 4865 y(Section)39 b(4.3.2)h([The)e(Shopt)g
-(Builtin],)j(page)e(65,)i(to)f(b)s(e)d(enabled.)65 b(This)37
+(Builtin],)j(page)e(66,)i(to)f(b)s(e)d(enabled.)65 b(This)37
b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h
(ranges)f(when)f(used)g(in)g(pattern)h(matc)m(hing)h(brac)m(k)m(et)g
(expressions.)150 5121 y Ft(--enable-help-builtin)630
5230 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m
(ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25
b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f
-(50\).)p eop end
-%%Page: 153 159
-TeXDict begin 153 158 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(153)150 299 y Ft(--enable-history)630
+(51\).)p eop end
+%%Page: 158 164
+TeXDict begin 158 163 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(158)150 299 y Ft(--enable-history)630
408 y Fu(Include)29 b(command)g(history)h(and)f(the)h
Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f(\(see)h(Sec-)630
518 y(tion)h(9.1)g([Bash)g(History)g(F)-8 b(acilities],)34
-b(page)d(141\).)150 664 y Ft(--enable-job-control)630
+b(page)d(146\).)150 664 y Ft(--enable-job-control)630
774 y Fu(This)h(enables)i(the)f(job)g(con)m(trol)i(features)e(\(see)i
-(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(103\),)630
+(Chapter)d(7)i([Job)f(Con)m(trol],)i(page)f(107\),)630
883 y(if)c(the)h(op)s(erating)g(system)f(supp)s(orts)f(them.)150
1029 y Ft(--enable-multibyte)630 1139 y Fu(This)g(enables)i(supp)s(ort)
d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h
@@ -19002,14 +19387,14 @@ b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g
(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 1614
y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26
b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h
-([Redirec-)630 1724 y(tions],)e(page)g(34\).)150 1870
+([Redirec-)630 1724 y(tions],)e(page)g(35\).)150 1870
y Ft(--enable-process-substit)o(utio)o(n)630 1979 y Fu(This)49
b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)
-s(cess)e(Substitution],)630 2089 y(page)31 b(31\))h(if)e(the)h(op)s
+s(cess)e(Substitution],)630 2089 y(page)31 b(32\))h(if)e(the)h(op)s
(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150
2235 y Ft(--enable-progcomp)630 2345 y Fu(Enable)d(the)g(programmable)g
(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630
-2454 y(Completion],)i(page)h(132\).)42 b(If)30 b(Readline)h(is)f(not)h
+2454 y(Completion],)i(page)h(137\).)42 b(If)30 b(Readline)h(is)f(not)h
(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150
2600 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 2710
y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m
@@ -19017,21 +19402,21 @@ y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m
2819 y Ft($PS0)p Fu(,)36 b Ft($PS1)p Fu(,)g Ft($PS2)p
Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36
b(Section)h(6.9)g([Con)m(trolling)g(the)630 2929 y(Prompt],)30
-b(page)h(97,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
+b(page)h(98,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g
(escap)s(e)h(sequences.)150 3075 y Ft(--enable-readline)630
3185 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f
(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 3294
y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g
-(Editing],)h(page)g(107\).)150 3440 y Ft(--enable-restricted)630
+(Editing],)h(page)g(111\).)150 3440 y Ft(--enable-restricted)630
3550 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p
Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630
3660 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68
b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630
-3769 y(page)31 b(99,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s
+3769 y(page)31 b(100,)h(for)e(a)h(description)f(of)h(restricted)g(mo)s
(de.)150 3915 y Ft(--enable-select)630 4025 y Fu(Include)25
b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j
(the)e(generation)h(of)f(simple)630 4134 y(men)m(us)k(\(see)h(Section)g
-(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(11\).)150
+(3.2.5.2)i([Conditional)e(Constructs],)g(page)g(11\).)150
4281 y Ft(--enable-separate-helpfi)o(les)630 4390 y Fu(Use)h(external)h
(\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g
(the)g Ft(help)f Fu(builtin)h(instead)630 4500 y(of)f(storing)f(the)h
@@ -19045,10 +19430,10 @@ b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h
5121 y Ft(--enable-strict-posix-de)o(faul)o(t)630 5230
y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h
(\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630
-5340 y(page)31 b(99\).)p eop end
-%%Page: 154 160
-TeXDict begin 154 159 bop 150 -116 a Fu(Chapter)30 b(10:)41
-b(Installing)31 b(Bash)2356 b(154)150 299 y Ft
+5340 y(page)31 b(101\).)p eop end
+%%Page: 159 165
+TeXDict begin 159 164 bop 150 -116 a Fu(Chapter)30 b(10:)41
+b(Installing)31 b(Bash)2356 b(159)150 299 y Ft
(--enable-usg-echo-defaul)o(t)630 408 y Fu(A)30 b(synon)m(ym)g(for)g
Ft(--enable-xpg-echo-default)p Fu(.)150 568 y Ft
(--enable-xpg-echo-defaul)o(t)630 677 y Fu(Mak)m(e)c(the)f
@@ -19060,7 +19445,7 @@ b(alue)24 b(of)g(the)g Ft(xpg_echo)e Fu(shell)h(option)630
Ft(echo)f Fu(b)s(eha)m(v)m(e)i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s
(eci\014ed)f(in)g(the)630 1006 y(Single)35 b(Unix)f(Sp)s
(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g
-(Builtins],)h(page)f(50,)630 1116 y(for)30 b(a)h(description)f(of)h
+(Builtins],)h(page)f(51,)630 1116 y(for)30 b(a)h(description)f(of)h
(the)f(escap)s(e)h(sequences)g(that)g Ft(echo)e Fu(recognizes.)275
1275 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31
b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f
@@ -19071,8 +19456,8 @@ y(the)h(consequences)g(if)f(y)m(ou)h(do.)55 b(Read)36
b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e(eac)m(h)i(de\014nition)e
(for)g(more)150 1604 y(information)c(ab)s(out)f(its)h(e\013ect.)p
eop end
-%%Page: 155 161
-TeXDict begin 155 160 bop 3614 -116 a Fu(155)150 299
+%%Page: 160 166
+TeXDict begin 160 165 bop 3614 -116 a Fu(160)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
@@ -19102,8 +19487,8 @@ s(duce)e(it.)150 2182 y Ft(bashbug)d Fu(inserts)i(the)h(\014rst)f
(vides)f(for)g(\014ling)h(a)150 2291 y(bug)h(rep)s(ort.)275
2426 y(Please)h(send)f(all)h(rep)s(orts)f(concerning)g(this)h(man)m
(ual)f(to)h Ft(bug-bash@gnu.org)p Fu(.)p eop end
-%%Page: 156 162
-TeXDict begin 156 161 bop 3614 -116 a Fu(156)150 141
+%%Page: 161 167
+TeXDict begin 161 166 bop 3614 -116 a Fu(161)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
@@ -19124,20 +19509,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(99\).)225 1565 y Fq(\017)60
+(POSIX)g(Mo)s(de],)h(page)g(101\).)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
-(85\).)225 1699 y Fq(\017)60 b Fu(Bash)40 b(has)f(command-line)h
+(86\).)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
-(107\))330 1809 y(and)30 b(the)g Ft(bind)g Fu(builtin.)225
+(111\))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(132\),)i(and)d(builtin)g
+2052 y(grammable)39 b(Completion],)i(page)e(137\),)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(141\))i(and)d(the)330 2405 y Ft(history)k Fu(and)h
+b(page)c(146\))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
@@ -19145,9 +19530,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(143\).)225 2892 y Fq(\017)60 b Fu(Bash)33
+y(page)31 b(148\).)225 2892 y Fq(\017)60 b Fu(Bash)33
b(has)g(one-dimensional)h(arra)m(y)f(v)-5 b(ariables)34
-b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(94\),)h(and)e(the)330
+b(\(see)g(Section)g(6.7)g([Arra)m(ys],)g(page)g(95\),)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
@@ -19169,7 +19554,7 @@ i(strings)f(found)e(in)h(a)h(script)g(\(see)g(Section)g(3.1.2.5)330
4171 y Fq(\017)60 b Fu(Bash)44 b(implemen)m(ts)g(the)f
Ft(!)h Fu(k)m(eyw)m(ord)g(to)g(negate)h(the)f(return)e(v)-5
b(alue)44 b(of)g(a)g(pip)s(eline)f(\(see)h(Sec-)330 4281
-y(tion)33 b(3.2.2)i([Pip)s(elines],)f(page)g(8\).)49
+y(tion)33 b(3.2.3)i([Pip)s(elines],)f(page)g(8\).)49
b(V)-8 b(ery)33 b(useful)f(when)g(an)h Ft(if)f Fu(statemen)m(t)j(needs)
d(to)i(act)g(only)f(if)330 4390 y(a)k(test)h(fails.)60
b(The)36 b(Bash)g(`)p Ft(-o)30 b(pipefail)p Fu(')35 b(option)i(to)h
@@ -19177,25 +19562,25 @@ Ft(set)d Fu(will)i(cause)g(a)g(pip)s(eline)g(to)g(return)f(a)330
4500 y(failure)31 b(status)f(if)h(an)m(y)f(command)g(fails.)225
4634 y Fq(\017)60 b Fu(Bash)34 b(has)g(the)g Ft(time)f
Fu(reserv)m(ed)h(w)m(ord)g(and)f(command)h(timing)h(\(see)g(Section)g
-(3.2.2)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33
+(3.2.3)g([Pip)s(elines],)330 4743 y(page)g(8\).)52 b(The)33
b(displa)m(y)i(of)f(the)g(timing)g(statistics)i(ma)m(y)f(b)s(e)e(con)m
(trolled)j(with)e(the)g Ft(TIMEFORMAT)330 4853 y Fu(v)-5
b(ariable.)225 4987 y Fq(\017)60 b Fu(Bash)28 b(implemen)m(ts)g(the)f
Ft(for)j(\(\()g Fj(expr1)f Ft(;)h Fj(expr2)f Ft(;)h Fj(expr3)f
Ft(\)\))e Fu(arithmetic)h(for)g(command,)g(sim-)330 5096
-y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.4.1)i([Lo)s
+y(ilar)j(to)g(the)g(C)f(language)h(\(see)h(Section)f(3.2.5.1)i([Lo)s
(oping)d(Constructs],)h(page)g(10\).)225 5230 y Fq(\017)60
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
+5340 y(men)m(us)f(\(see)h(Section)g(3.2.5.2)i([Conditional)e
(Constructs],)g(page)g(11\).)p eop end
-%%Page: 157 163
-TeXDict begin 157 162 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(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(157)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(162)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)
+408 y(the)f(shell)g(grammar)g(\(see)h(Section)f(3.2.5.2)j([Conditional)
d(Constructs],)i(page)f(11\),)i(including)330 518 y(optional)32
b(regular)e(expression)g(matc)m(hing.)225 653 y Fq(\017)60
b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m
@@ -19203,15 +19588,15 @@ b Fu(Bash)31 b(pro)m(vides)f(optional)h(case-insensitiv)m(e)i(matc)m
789 y Fq(\017)60 b Fu(Bash)27 b(includes)g(brace)h(expansion)f(\(see)h
(Section)g(3.5.1)i([Brace)e(Expansion],)g(page)g(23\))h(and)d(tilde)330
898 y(expansion)k(\(see)i(Section)f(3.5.2)h([Tilde)f(Expansion],)f
-(page)h(23\).)225 1034 y Fq(\017)60 b Fu(Bash)24 b(implemen)m(ts)h
+(page)h(24\).)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(93\).)225 1279 y Fq(\017)60
+1143 y([Aliases],)32 b(page)f(94\).)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-)
+Ft(\(\()g Fu(comp)s(ound)e(command)i(\(see)h(Section)f(3.2.5.2)j([Con-)
330 1388 y(ditional)d(Constructs],)e(page)i(11\),)g(and)e(arithmetic)i
(expansion)e(\(see)i(Section)f(6.5)h([Shell)f(Arith-)330
-1498 y(metic],)h(page)f(92\).)225 1633 y Fq(\017)60 b
+1498 y(metic],)h(page)f(93\).)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
@@ -19227,44 +19612,44 @@ Ft(#)p Fu(',)g(`)p Ft(\045\045)p Fu(')e(and)f(`)p Ft(##)p
Fu(')h(expansions)g(to)g(remo)m(v)m(e)330 2342 y(leading)f(or)f
(trailing)h(substrings)e(from)g(v)-5 b(ariable)35 b(v)-5
b(alues)35 b(\(see)g(Section)g(3.5.3)g([Shell)g(P)m(arameter)330
-2452 y(Expansion],)30 b(page)h(24\).)225 2587 y Fq(\017)60
+2452 y(Expansion],)30 b(page)h(25\).)225 2587 y Fq(\017)60
b Fu(The)46 b(expansion)g Ft(${#xx})p Fu(,)j(whic)m(h)d(returns)f(the)i
(length)f(of)h Ft(${xx})p Fu(,)i(is)e(supp)s(orted)d(\(see)j(Sec-)330
2697 y(tion)31 b(3.5.3)h([Shell)f(P)m(arameter)g(Expansion],)f(page)i
-(24\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
+(25\).)225 2832 y Fq(\017)60 b Fu(The)30 b(expansion)g
Ft(${var:)p Fr(o\013set)r Ft([:)p Fr(length)p Ft(]})p
Fu(,)g(whic)m(h)g(expands)g(to)h(the)g(substring)e(of)i
Ft(var)p Fu('s)e(v)-5 b(alue)330 2942 y(of)43 b(length)g
Fr(length)p Fu(,)k(b)s(eginning)42 b(at)i Fr(o\013set)p
Fu(,)j(is)c(presen)m(t)g(\(see)g(Section)h(3.5.3)h([Shell)e(P)m
-(arameter)330 3051 y(Expansion],)30 b(page)h(24\).)225
+(arameter)330 3051 y(Expansion],)30 b(page)h(25\).)225
3187 y Fq(\017)60 b Fu(The)21 b(expansion)f Ft(${var/[/])p
Fr(pattern)p Ft([/)p Fr(replacemen)m(t)r Ft(]})p Fu(,)i(whic)m(h)e
(matc)m(hes)j Fr(pattern)e Fu(and)f(replaces)330 3296
y(it)29 b(with)e Fr(replacemen)m(t)32 b Fu(in)c(the)g(v)-5
b(alue)29 b(of)f Ft(var)p Fu(,)g(is)g(a)m(v)-5 b(ailable)31
b(\(see)e(Section)f(3.5.3)i([Shell)f(P)m(arameter)330
-3406 y(Expansion],)h(page)h(24\).)225 3541 y Fq(\017)60
+3406 y(Expansion],)h(page)h(25\).)225 3541 y Fq(\017)60
b Fu(The)33 b(expansion)g Ft(${!)p Fj(prefix)p Ft(*})d
Fu(expansion,)k(whic)m(h)e(expands)h(to)h(the)f(names)g(of)g(all)h
(shell)f(v)-5 b(ari-)330 3651 y(ables)36 b(whose)g(names)g(b)s(egin)g
(with)g Fr(pre\014x)p Fu(,)g(is)g(a)m(v)-5 b(ailable)39
b(\(see)e(Section)g(3.5.3)g([Shell)g(P)m(arameter)330
-3761 y(Expansion],)30 b(page)h(24\).)225 3896 y Fq(\017)60
+3761 y(Expansion],)30 b(page)h(25\).)225 3896 y Fq(\017)60
b Fu(Bash)22 b(has)f Fr(indirect)j Fu(v)-5 b(ariable)22
b(expansion)g(using)f Ft(${!word})e Fu(\(see)k(Section)f(3.5.3)i
-([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(24\).)225
+([Shell)e(P)m(arameter)330 4006 y(Expansion],)30 b(page)h(25\).)225
4141 y Fq(\017)60 b Fu(Bash)31 b(can)f(expand)g(p)s(ositional)h
(parameters)g(b)s(ey)m(ond)e Ft($9)h Fu(using)g Ft(${)p
Fj(num)p Ft(})p Fu(.)225 4276 y Fq(\017)60 b Fu(The)27
b Fm(posix)g Ft($\(\))g Fu(form)g(of)h(command)g(substitution)f(is)h
(implemen)m(ted)g(\(see)h(Section)f(3.5.4)i([Com-)330
-4386 y(mand)38 b(Substitution],)k(page)e(30\),)j(and)38
+4386 y(mand)38 b(Substitution],)k(page)e(31\),)j(and)38
b(preferred)g(to)i(the)g(Bourne)f(shell's)h Ft(``)e Fu(\(whic)m(h)i(is)
f(also)330 4495 y(implemen)m(ted)31 b(for)f(bac)m(kw)m(ards)h
(compatibilit)m(y\).)225 4631 y Fq(\017)60 b Fu(Bash)31
b(has)f(pro)s(cess)g(substitution)g(\(see)h(Section)g(3.5.6)h([Pro)s
-(cess)f(Substitution],)f(page)h(31\).)225 4766 y Fq(\017)60
+(cess)f(Substitution],)f(page)h(32\).)225 4766 y Fq(\017)60
b Fu(Bash)55 b(automatically)j(assigns)e(v)-5 b(ariables)55
b(that)h(pro)m(vide)f(information)h(ab)s(out)f(the)g(curren)m(t)330
4876 y(user)40 b(\()p Ft(UID)p Fu(,)i Ft(EUID)p Fu(,)g(and)e
@@ -19277,13 +19662,13 @@ b(Section)g(5.2)h([Bash)e(V)-8 b(ariables],)33 b(page)e(73,)g(for)f
(details.)225 5230 y Fq(\017)60 b Fu(The)44 b Ft(IFS)f
Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g
(of)h(expansion,)i(not)d(all)h(w)m(ords)f(\(see)330 5340
-y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(31\).)41
+y(Section)29 b(3.5.7)h([W)-8 b(ord)29 b(Splitting],)h(page)f(32\).)41
b(This)28 b(closes)h(a)g(longstanding)g(shell)f(securit)m(y)h(hole.)p
eop end
-%%Page: 158 164
-TeXDict begin 158 163 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(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(158)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(163)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
@@ -19293,7 +19678,7 @@ Ft(!)p Fu('.)225 536 y Fq(\017)60 b Fu(Bash)38 b(implemen)m(ts)g(the)g
(erators,)i(including)d Fr(c)m(har-)330 646 y(acter)i(classes)p
Fu(,)j Fr(equiv)-5 b(alence)39 b(classes)p Fu(,)j(and)37
b Fr(collating)k(sym)m(b)s(ols)g Fu(\(see)e(Section)g(3.5.8)h
-([Filename)330 756 y(Expansion],)30 b(page)h(32\).)225
+([Filename)330 756 y(Expansion],)30 b(page)h(33\).)225
883 y Fq(\017)60 b Fu(Bash)35 b(implemen)m(ts)g(extended)g(pattern)g
(matc)m(hing)h(features)f(when)f(the)h Ft(extglob)d Fu(shell)j(option)
330 993 y(is)30 b(enabled)h(\(see)g(Section)g(3.5.8.1)i([P)m(attern)f
@@ -19306,24 +19691,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(50\).)225 1596 y Fq(\017)60 b Fu(V)-8
+(Builtins],)g(page)h(51\).)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(40\).)60 b(In)35 b Ft(sh)p Fu(,)j(all)f(v)-5 b(ariable)37
+e(41\).)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(34\).)225
+(\(see)g(Section)g(3.6)h([Redirections],)g(page)f(35\).)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(34\).)225 2527
+(Section)f(3.6)g([Redirections],)h(page)g(35\).)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
@@ -19334,20 +19719,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(34\).)225 3240 y Fq(\017)60
+([Redirections],)h(page)f(35\).)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(34\).)225 3477 y Fq(\017)60
+([Redirections],)g(page)f(35\).)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(61\).)66
+b(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)i(page)e(62\).)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(43\))h(eac)m(h)330
+g([Bourne)g(Shell)f(Builtins],)h(page)g(44\))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)
@@ -19355,28 +19740,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(50\).)225 4408 y Fq(\017)60 b Fu(The)35
+(Builtins],)g(page)g(51\).)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
-(50\).)225 4646 y Fq(\017)60 b Fu(Individual)23 b(builtins)g(ma)m(y)i
+(51\).)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(50\).)225 4883 y Fq(\017)60 b Fu(The)26
+b(Builtins],)g(page)g(51\).)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(43\).)225 5230
+([Bourne)f(Shell)h(Builtins],)g(page)g(44\).)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: 159 165
-TeXDict begin 159 164 bop 150 -116 a Fu(App)s(endix)29
+b(unctions],)32 b(page)f(18\).)p eop end
+%%Page: 164 170
+TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(159)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(164)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
@@ -19392,15 +19777,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(43\).)225
+984 y(Section)i(4.1)h([Bourne)e(Shell)g(Builtins],)h(page)h(44\).)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(50\).)225
+(\(see)f(Section)g(4.2)g([Bash)330 1230 y(Builtins],)j(page)g(51\).)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(50\).)225
+(4.2)g([Bash)330 1477 y(Builtins],)31 b(page)g(51\).)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(50\))g(will)f(read)g(a)g
+(Section)g(4.2)g([Bash)f(Builtins],)h(page)g(51\))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
@@ -19423,23 +19808,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(43\).)225
+(4.1)g([Bourne)g(Shell)f(Builtins],)h(page)g(44\).)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(65\),)k(and)39 b(allo)m(ws)i(these)f(options)h(to)f
+(Builtin],)k(page)d(66\),)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
-(85\).)225 3230 y Fq(\017)60 b Fu(Bash)45 b(has)f(m)m(uc)m(h)g(more)h
+(86\).)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(61\).)225 3477
+b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)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(61\).)225
+f(\(see)h(Section)f(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(62\).)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(43\))g(is)f(sligh)m(tly)h
+f(4.1)h([Bourne)f(Shell)g(Builtins],)h(page)g(44\))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
@@ -19450,7 +19835,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(43\))h(allo)m(ws)g(a)e
+f(4.1)h([Bourne)e(Shell)g(Builtins],)47 b(page)c(44\))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
@@ -19466,20 +19851,20 @@ Ft(functrace)d Fu(option)j(has)f(b)s(een)g(enabled)g(using)330
Ft(extdebug)f Fu(shell)i(option)g(has)f(additional)h(e\013ects)h(on)f
(the)g Ft(DEBUG)e Fu(trap.)330 5230 y(The)21 b Ft(trap)e
Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j
-(page)e(43\))g(allo)m(ws)g(an)f Ft(ERR)f Fu(pseudo-)330
+(page)e(44\))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: 160 166
-TeXDict begin 160 165 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 165 171
+TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(160)330 299 y(are)40 b(executed)g(after)g
+b(The)f(Bourne)g(Shell)1258 b(165)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(43\))g(allo)m(ws)g(a)g
+(4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(44\))g(allo)m(ws)g(a)g
Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j
(similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54
b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y
@@ -19494,30 +19879,30 @@ g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60
b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i
(and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330
1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i
-(page)f(50\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
+(page)f(51\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h
Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h
(cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330
1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f
(reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330
-1789 y(Builtins],)g(page)g(43\).)225 1921 y Fq(\017)60
+1789 y(Builtins],)g(page)g(44\).)225 1921 y Fq(\017)60
b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f
(stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g
Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i
(manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m
-(k],)i(page)d(96\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g
+(k],)i(page)d(97\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g
(directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31
b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225
2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m
(kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h
(when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h
-([Con)m(trolling)f(the)g(Prompt],)f(page)h(97\).)225
+([Con)m(trolling)f(the)g(Prompt],)f(page)h(98\).)225
2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h
(more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],)
-330 2622 y(page)31 b(99\);)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
+330 2622 y(page)31 b(100\);)h(the)f(SVR4.2)g(shell)g(restricted)g(mo)s
+(de)f(is)g(to)s(o)h(limited.)225 2754 y Fq(\017)60 b
Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f
(from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h
-(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(104\))g(or)g
+(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(108\))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)
@@ -19534,7 +19919,7 @@ Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g
Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g
Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m
(y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8
-b(eatures],)32 b(page)f(85.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
+b(eatures],)32 b(page)f(86.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48
b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150
4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m
(tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f
@@ -19555,10 +19940,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: 161 167
-TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 166 172
+TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29
b(B:)i(Ma)5 b(jor)31 b(Di\013erences)g(F)-8 b(rom)31
-b(The)f(Bourne)g(Shell)1258 b(161)225 299 y Fq(\017)60
+b(The)f(Bourne)g(Shell)1258 b(166)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)
@@ -19589,8 +19974,8 @@ Fm(posix)330 1738 y Fu(standard.)225 1873 y Fq(\017)60
b Fu(The)30 b(SVR4.2)h(shell)g(b)s(eha)m(v)m(es)f(di\013eren)m(tly)h
(when)f(in)m(v)m(ok)m(ed)i(as)e Ft(jsh)g Fu(\(it)h(turns)e(on)h(job)g
(con)m(trol\).)p eop end
-%%Page: 162 168
-TeXDict begin 162 167 bop 3614 -116 a Fu(162)150 299
+%%Page: 167 173
+TeXDict begin 167 172 bop 3614 -116 a Fu(167)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
@@ -19671,10 +20056,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: 163 169
-TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 168 174
+TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(163)330 299 y(under)26 b(this)i(License.)40 b(If)27
+b(168)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
@@ -19765,10 +20150,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: 164 170
-TeXDict begin 164 169 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 169 175
+TeXDict begin 169 174 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(164)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h
+b(169)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
@@ -19858,10 +20243,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: 165 171
-TeXDict begin 165 170 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 170 176
+TeXDict begin 170 175 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(165)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g
+b(170)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
@@ -19940,10 +20325,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: 166 172
-TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 171 177
+TeXDict begin 171 176 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(166)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5
+b(171)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
@@ -20028,10 +20413,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: 167 173
-TeXDict begin 167 172 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 172 178
+TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(167)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h
+b(172)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
@@ -20116,10 +20501,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: 168 174
-TeXDict begin 168 173 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 173 179
+TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(168)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE)
+b(173)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
@@ -20183,10 +20568,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: 169 175
-TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29
+%%Page: 174 180
+TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29
b(C:)h(GNU)h(F)-8 b(ree)31 b(Do)s(cumen)m(tation)i(License)1560
-b(169)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f
+b(174)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
@@ -20221,199 +20606,199 @@ y(If)23 b(y)m(our)h(do)s(cumen)m(t)f(con)m(tains)i(non)m(trivial)g
b(as)g(the)g(GNU)150 2331 y(General)31 b(Public)f(License,)i(to)f(p)s
(ermit)e(their)i(use)f(in)g(free)g(soft)m(w)m(are.)p
eop end
-%%Page: 170 176
-TeXDict begin 170 175 bop 3614 -116 a Fu(170)150 299
+%%Page: 175 181
+TeXDict begin 175 180 bop 3614 -116 a Fu(175)150 299
y Fp(App)t(endix)52 b(D)81 b(Indexes)150 639 y Fs(D.1)68
b(Index)45 b(of)g(Shell)g(Builtin)g(Commands)146 806
y(.)150 923 y Fe(.)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)33 b Fb(43)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
+(:)33 b Fb(44)146 1163 y Fs(:)150 1280 y Fe(:)19 b Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(43)146
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(44)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(47)146 1881 y Fs(A)150 1998 y Fe(alias)9
+(:)g(:)g(:)33 b Fb(48)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(50)146 2239 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)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(104)150 2443 y Fe(bind)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(108)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(50)150 2531 y Fe(break)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(51)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(44)150 2618 y Fe(builtin)f Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(45)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(52)146 2859 y Fs(C)150 2976 y Fe(caller)6 b Fc(:)15
+b Fb(53)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(52)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)20 b Fb(53)150 3063 y Fe(cd)c Fc(:)e(:)f(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)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(44)150 3151 y Fe(command)22
+g(:)g(:)g(:)g(:)g(:)31 b Fb(45)150 3151 y Fe(command)22
b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)35 b Fb(52)150 3238 y Fe(compgen)18
+h(:)f(:)g(:)g(:)g(:)35 b Fb(53)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(134)150 3326 y Fe(complete)16
+(:)h(:)f(:)g(:)33 b Fb(139)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(134)150 3413 y Fe(compopt)18 b Fc(:)d(:)e(:)g(:)h(:)
+(:)g(:)g(:)31 b Fb(140)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(137)150 3501 y Fe(continue)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(143)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(44)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
+Fb(45)146 3741 y Fs(D)150 3858 y Fe(declare)22 b Fc(:)13
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)35 b Fb(52)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f
+g(:)g(:)g(:)35 b Fb(53)150 3946 y Fe(dirs)11 b Fc(:)j(:)f(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)25 b Fb(96)150 4033 y Fe(disown)d Fc(:)13
+(:)g(:)h(:)25 b Fb(97)150 4033 y Fe(disown)d Fc(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)36 b Fb(105)146 4274 y Fs(E)150 4391 y Fe(echo)11
+g(:)g(:)g(:)36 b Fb(110)146 4274 y Fs(E)150 4391 y Fe(echo)11
b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(54)150 4478
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(55)150 4478
y Fe(enable)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(55)150
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(56)150
4566 y Fe(eval)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(44)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(45)150 4653 y Fe(exec)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(45)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(46)150 4741 y Fe(exit)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(45)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
+b Fb(46)150 4828 y Fe(export)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20
-b Fb(45)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+b Fb(46)146 5080 y Fs(F)150 5197 y Fe(fc)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)29 b Fb(142)150 5284 y Fe(fg)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)29 b Fb(147)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(104)2021 871 y Fs(G)2025 988 y Fe(getopts)22
+g(:)g(:)g(:)29 b Fb(108)2021 871 y Fs(G)2025 988 y Fe(getopts)22
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(45)2021 1250 y Fs(H)2025
+g(:)g(:)h(:)f(:)g(:)35 b Fb(46)2021 1250 y Fs(H)2025
1369 y Fe(hash)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(46)2025 1457 y Fe(help)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(47)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(55)2025 1544 y Fe(history)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(56)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(142)2021 1806 y Fs(J)2025 1924 y Fe(jobs)9 b Fc(:)14
+Fb(147)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(104)2021 2186 y Fs(K)2025
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(108)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(105)2021 2554 y Fs(L)2025 2672 y Fe(let)14 b Fc(:)f(:)g(:)h(:)f(:)
+b Fb(109)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(55)2025 2760 y Fe(local)9 b Fc(:)14
+g(:)g(:)h(:)f(:)28 b Fb(56)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(55)2025 2848 y Fe(logout)6
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(57)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(56)2021 3110 y Fs(M)2025
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(57)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(56)2021
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(57)2021
3489 y Fs(P)2025 3608 y Fe(popd)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(96)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(98)2025 3696 y Fe(printf)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
-b Fb(56)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(58)2025 3784 y Fe(pushd)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(97)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(98)2025 3871 y Fe(pwd)14 b Fc(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28
-b Fb(46)2021 4133 y Fs(R)2025 4251 y Fe(read)11 b Fc(:)j(:)f(:)g(:)g(:)
+b Fb(47)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(57)2025 4339 y Fe(readarray)15 b
+g(:)g(:)g(:)26 b Fb(58)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(59)2025 4427 y Fe(readonly)18 b Fc(:)d(:)e(:)g(:)g(:)g
+g(:)g(:)30 b Fb(60)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(46)2025 4515 y Fe(return)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(47)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(47)2021 4765 y Fs(S)2025 4884 y Fe(set)14 b Fc(:)f(:)g(:)h(:)f(:)g
+b Fb(48)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(61)2025 4972 y Fe(shift)9 b Fc(:)14
+(:)g(:)h(:)f(:)28 b Fb(62)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(47)2025 5060 y Fe(shopt)9
+g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(48)2025 5060 y Fe(shopt)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(65)2025 5148
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(66)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(59)2025
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(60)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(106)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(T)150 410 y Fe(test)11
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(110)p eop end
+%%Page: 176 182
+TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(176)146 294 y Fs(T)150 410 y Fe(test)11
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(47)150 497
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(48)150 497
y Fe(times)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(49)150
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150
584 y Fe(trap)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25
-b Fb(49)150 671 y Fe(type)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(50)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(59)150 758 y Fe(typeset)d Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+b Fb(60)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(59)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
+b Fb(61)146 1003 y Fs(U)150 1119 y Fe(ulimit)6 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)20 b Fb(59)150 1206 y Fe(umask)9
+g(:)g(:)g(:)h(:)f(:)20 b Fb(61)150 1206 y Fe(umask)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(50)150 1293 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)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(61)150 1380 y
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(62)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(50)2021
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(51)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(105)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
+b Fb(109)150 2133 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h
(W)-11 b(ords)146 2704 y(!)150 2820 y Fe(!)21 b Fc(:)13
b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
@@ -20421,10 +20806,10 @@ 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
+g(:)31 b Fb(13)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
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(13)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
@@ -20461,7 +20846,7 @@ 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(:)
+Fb(18)2021 3359 y Fs(I)2025 3491 y Fe(if)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)31 b Fb(11)2025 3578 y Fe(in)16 b Fc(:)e(:)f(:)g(:)g(:)
@@ -20485,9 +20870,9 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(10)2021
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
b Fb(10)p eop end
-%%Page: 172 178
-TeXDict begin 172 177 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(172)150 299 y Fs(D.3)68 b(P)l(arameter)47
+%%Page: 177 183
+TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(177)150 299 y Fs(D.3)68 b(P)l(arameter)47
b(and)d(V)-11 b(ariable)46 b(Index)146 955 y(!)150 1073
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(:)
@@ -20495,7 +20880,7 @@ g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33
b Fb(22)146 1327 y Fs(#)150 1445 y Fe(#)19 b Fc(:)13
b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)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(21)146
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)146
1701 y Fs($)150 1820 y Fe($)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)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
@@ -20505,57 +20890,57 @@ g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)31 b Fb(22)150 1997 y Fe($#)16 b Fc(:)e(:)f(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)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(21)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2085 y Fe($$)16 b Fc(:)e(:)f(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150 2173 y Fe($*)16
b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(21)150
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31 b Fb(22)150
2261 y Fe($-)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)31
b Fb(22)150 2350 y Fe($?)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)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(21)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+31 b Fb(22)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(21)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)31 b Fb(22)150 2526 y Fe($_)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)31 b Fb(22)150 2613 y Fe($0)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h
+(:)g(:)31 b Fb(73)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(22)146 2876 y Fs(*)150 2994 y Fe(*)19
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b
-Fb(21)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
+Fb(22)146 3248 y Fs({)150 3366 y Fe(-)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)33 b Fb(22)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(21)146 3992 y Fs(@)150 4110 y Fe(@)19 b Fc(:)13
+b Fb(22)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(21)p
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)33 b Fb(22)p
156 4364 41 6 v 150 4482 a Fe(_)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)33 b Fb(22)146 4736 y Fs(0)150 4854 y
+(:)f(:)g(:)g(:)33 b Fb(73)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(22)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(106)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b
+23 b Fb(110)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b
Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(73)2025 1163
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(74)2025 1163
y Fe(BASH_ALIASES)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)22 b Fb(74)2025 1251 y Fe(BASH_ARGC)15
@@ -20566,7 +20951,7 @@ g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
b Fb(74)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)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
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(75)2025
1517 y Fe(BASH_CMDS)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(75)2025 1606
@@ -20585,10 +20970,10 @@ b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)25 b Fb(75)2025 2049 y Fe(BASH_LOADABLES_PATH)7 b
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(75)2025
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(76)2025
2138 y Fe(BASH_REMATCH)8 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(75)2025 2226 y Fe(BASH_SOURCE)10
+(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(76)2025 2226 y Fe(BASH_SOURCE)10
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)25 b Fb(76)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13
@@ -20610,29 +20995,29 @@ Fb(74)2025 2758 y Fe(BASHPID)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
b Fb(74)2025 2847 y Fe(bell-style)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(111)2025
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(115)2025
2935 y Fe(bind-tty-special-chars)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(111)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13
+b Fb(115)2025 3022 y Fe(blink-matching-paren)24 b Fc(:)13
b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)34 b Fb(111)2021 3297 y Fs(C)2025
+(:)g(:)g(:)g(:)h(:)34 b Fb(115)2021 3297 y Fs(C)2025
3417 y Fe(CDPATH)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b
Fb(73)2025 3506 y Fe(CHILD_MAX)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)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(76)2025
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(77)2025
3595 y Fe(colored-completion-prefix)7 b Fc(:)18 b(:)13
b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(111)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(115)2025 3683 y Fe(colored-stats)h Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(111)2025 3772 y Fe(COLUMNS)22
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(115)2025 3772 y Fe(COLUMNS)22
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)35 b Fb(76)2025 3860 y Fe(comment-begin)23
+g(:)g(:)h(:)f(:)g(:)35 b Fb(77)2025 3860 y Fe(comment-begin)23
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
-b Fb(111)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
+b Fb(115)2025 3949 y Fe(COMP_CWORD)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(77)2025
4038 y Fe(COMP_KEY)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
@@ -20653,49 +21038,49 @@ b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)27 b Fb(77)2025 4569 y Fe(completion-display-width)9
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(111)2025 4658 y Fe(completion-ignore-case)14
+(:)h(:)f(:)g(:)24 b Fb(115)2025 4658 y Fe(completion-ignore-case)14
b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)29 b Fb(112)2025 4747 y Fe(completion-map-case)d
+(:)g(:)g(:)h(:)f(:)29 b Fb(116)2025 4747 y Fe(completion-map-case)d
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(112)2025 4835
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(116)2025 4835
y Fe(completion-prefix-display-leng)q(th)29 b Fc(:)13
-b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(112)2025 4924
+b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38 b Fb(116)2025 4924
y Fe(completion-query-items)14 b Fc(:)k(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)29
-b Fb(112)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
+b Fb(116)2025 5012 y Fe(COMPREPLY)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b
-Fb(77)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
+Fb(78)2025 5101 y Fe(convert-meta)25 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(112)2025 5188
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(116)2025 5188
y Fe(COPROC)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(77)p
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(78)p
eop end
-%%Page: 173 179
-TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(173)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18
+%%Page: 178 184
+TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(178)146 294 y Fs(D)150 416 y Fe(DIRSTACK)18
b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)32 b Fb(78)150 503 y Fe(disable-completion)7
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(112)146
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(116)146
791 y Fs(E)150 913 y Fe(echo-control-characters)12 b
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(112)150 1002 y Fe(editing-mode)f
+g(:)g(:)g(:)h(:)26 b Fb(116)150 1002 y Fe(editing-mode)f
Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(112)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17
+b Fb(116)150 1092 y Fe(emacs-mode-string)10 b Fc(:)17
b(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(112)150 1181
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25 b Fb(117)150 1181
y Fe(EMACS)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(78)150
1270 y Fe(enable-bracketed-paste)14 b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fb(113)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
+b Fb(117)150 1359 y Fe(enable-keypad)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(113)150 1449 y Fe(ENV)14
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(117)150 1449 y Fe(ENV)14
b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(78)150
@@ -20712,16 +21097,16 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)27 b Fb(78)150
1893 y Fe(expand-tilde)e Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)37 b Fb(113)146 2180 y Fs(F)150 2303
+g(:)g(:)g(:)h(:)37 b Fb(117)146 2180 y Fs(F)150 2303
y Fe(FCEDIT)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(78)150
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)20 b Fb(79)150
2392 y Fe(FIGNORE)i Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)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(78)150
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(79)150
2481 y Fe(FUNCNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)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 2568
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)150 2568
y Fe(FUNCNEST)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)146 2844 y
@@ -20739,7 +21124,7 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35
b Fb(79)150 3631 y Fe(HISTCONTROL)10 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)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(79)150
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(80)150
3720 y Fe(HISTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 3809
@@ -20750,10 +21135,10 @@ b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)27 b Fb(80)150 3988 y Fe(history-preserve-point)14
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(113)150 4077 y Fe(history-size)c
+h(:)f(:)g(:)g(:)29 b Fb(117)150 4077 y Fe(history-size)c
Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37
-b Fb(113)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+b Fb(117)150 4166 y Fe(HISTSIZE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b
Fb(80)150 4256 y Fe(HISTTIMEFORMAT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
@@ -20763,13 +21148,13 @@ b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)25 b Fb(73)150 4434
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(113)150
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(117)150
4523 y Fe(HOSTFILE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4613
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4613
y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(80)150 4700 y
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)150 4700 y
Fe(HOSTTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(81)2021 294 y Fs(I)2025
@@ -20781,7 +21166,7 @@ b Fb(73)2025 510 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025
600 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(114)2025 691 y Fe(INPUTRC)c
+h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(118)2025 691 y Fe(INPUTRC)c
Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)35 b Fb(81)2025 781 y Fe(INSIDE_EMACS)8
@@ -20789,10 +21174,10 @@ b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
22 b Fb(81)2025 868 y Fe(isearch-terminators)k Fc(:)13
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(114)2021 1167 y Fs(K)2025
+(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(118)2021 1167 y Fs(K)2025
1290 y Fe(keymap)22 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(114)2021
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(118)2021
1601 y Fs(L)2025 1727 y Fe(LANG)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
@@ -20810,25 +21195,25 @@ y Fe(LC_MESSAGES)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
g(:)g(:)g(:)34 b Fb(7,)26 b(81)2025 2178 y Fe(LC_NUMERIC)13
b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)h(:)27 b Fb(81)2025 2269 y Fe(LC_TIME)22 b Fc(:)13
+(:)h(:)27 b Fb(82)2025 2269 y Fe(LC_TIME)22 b Fc(:)13
b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)35 b Fb(81)2025 2359 y Fe(LINENO)6 b Fc(:)14
+h(:)f(:)g(:)35 b Fb(82)2025 2359 y Fe(LINENO)6 b Fc(:)14
b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)21 b Fb(81)2025 2446 y Fe(LINES)9
+g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 2446 y Fe(LINES)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(81)2021 2746
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23 b Fb(82)2021 2746
y Fs(M)2025 2872 y Fe(MACHTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b
-Fb(81)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+Fb(82)2025 2962 y Fe(MAIL)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
b Fb(73)2025 3052 y Fe(MAILCHECK)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(81)2025
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(82)2025
3143 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33 b Fb(73)2025 3233
@@ -20837,16 +21222,16 @@ y Fe(MAPFILE)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(82)2025 3323
y Fe(mark-modified-lines)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(114)2025 3414 y Fe(mark-symlinked-directories)27
+b Fb(118)2025 3414 y Fe(mark-symlinked-directories)27
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-36 b Fb(114)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17
+36 b Fb(119)2025 3504 y Fe(match-hidden-files)7 b Fc(:)17
b(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(115)2025 3594
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(119)2025 3594
y Fe(menu-complete-display-prefix)17 b Fc(:)h(:)13 b(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(115)2025 3681 y Fe(meta-flag)13
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)31 b Fb(119)2025 3681 y Fe(meta-flag)13
b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)28 b Fb(114)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6
+(:)f(:)28 b Fb(118)2021 3992 y Fs(O)2025 4118 y Fe(OLDPWD)6
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4208 y Fe(OPTARG)6
@@ -20864,12 +21249,12 @@ b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
h(:)f(:)g(:)g(:)g(:)g(:)g(:)21 b Fb(82)2025 4567 y Fe(output-meta)8
b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-23 b Fb(115)p eop end
-%%Page: 174 180
-TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(174)146 294 y Fs(P)150 410 y Fe(page-completions)
+23 b Fb(119)p eop end
+%%Page: 179 185
+TeXDict begin 179 184 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(179)146 294 y Fs(P)150 410 y Fe(page-completions)
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(115)150
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(119)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
@@ -20886,10 +21271,10 @@ b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)34
b Fb(82)150 933 y Fe(PROMPT_DIRTRIM)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(82)150 1020 y Fe(PS0)14
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)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(82)150
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(83)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
@@ -20899,465 +21284,479 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28
b Fb(73)150 1281 y Fe(PS3)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)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(82)150 1369 y Fe(PS4)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(83)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(82)150 1456 y Fe(PWD)14 b Fc(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+b Fb(83)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(82)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
+b Fb(83)146 1689 y Fs(R)150 1804 y Fe(RANDOM)6 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)20 b Fb(83)150 1892 y Fe(READLINE_LINE)25
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37
-b Fb(83)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)34 b Fb(83)150 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(83)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(115)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(83)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
+b Fb(83)150 1979 y Fe(READLINE_MARK)25 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)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(83)150 2763 y Fe(SHLVL)9 b Fc(:)14
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(83)150 2066 y
+Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)34 b Fb(83)150 2153 y Fe(REPLY)9 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2851 y Fe(show-all-if-ambiguous)
+g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(83)150 2240 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(115)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(115)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(115)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(116)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(:)32 b Fb(119)146 2473 y Fs(S)150
+2589 y Fe(SECONDS)22 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)35 b Fb(83)150
+2676 y Fe(SHELL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
+b Fb(83)150 2763 y Fe(SHELLOPTS)15 b Fc(:)h(:)d(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)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(83)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(84)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(84)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(:)30 b Fb(83)150
+2851 y Fe(SHLVL)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)23
+b Fb(84)150 2938 y Fe(show-all-if-ambiguous)17 b Fc(:)h(:)13
+b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)32 b Fb(119)150 3025 y Fe(show-all-if-unmodified)14
+b Fc(:)k(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)29 b Fb(119)150 3112 y Fe(show-mode-in-prompt)d
+Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(120)2025 260 y
+Fe(skip-completed-text)26 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
+b Fb(120)2025 347 y Fe(SRANDOM)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35
+b Fb(84)2021 669 y Fs(T)2025 798 y Fe(TEXTDOMAIN)15 b
+Fc(:)g(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)30 b Fb(7)2025 889 y Fe(TEXTDOMAINDIR)7 b Fc(:)16
+b(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)23
+b Fb(7)2025 981 y Fe(TIMEFORMAT)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(84)2025
+1072 y Fe(TMOUT)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
+b Fb(84)2025 1159 y Fe(TMPDIR)6 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)21
+b Fb(85)2021 1481 y Fs(U)2025 1606 y Fe(UID)14 b Fc(:)f(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)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(84)2021 1920 y Fs(V)2025 2049
+(:)g(:)h(:)f(:)28 b Fb(85)2021 1928 y Fs(V)2025 2057
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(116)2025 2140 y Fe(vi-ins-mode-string)7 b Fc(:)17
+b Fb(120)2025 2148 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(116)2025 2227
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(120)2025 2235
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(116)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
+f(:)g(:)35 b Fb(120)150 3751 y Fs(D.4)68 b(F)-11 b(unction)44
+b(Index)146 4237 y(A)150 4354 y Fe(abort)27 b(\(C-g\))15
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(129)150 4363 y Fe(accept-line)e(\(Newline)g(or)e(Return\))12
+b Fb(135)150 4442 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(123)150 4450 y Fe(alias-expand-line)i(\(\))9 b Fc(:)14
+b Fb(128)150 4529 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(131)146 4762 y Fs(B)150
-4888 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)
+(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(137)146 4784 y Fs(B)150
+4902 y Fe(backward-char)29 b(\(C-b\))12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)26 b Fb(122)150 4978 y Fe(backward-delete-char)k(\(Rubout\))22
+(:)26 b Fb(127)150 4989 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(125)150 5069 y Fe(backward-kill-line)30 b(\(C-x)c(Rubout\))e
+b Fb(130)150 5077 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(126)150 5159 y Fe(backward-kill-word)30 b(\(M-DEL\))11
+Fb(131)150 5165 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(126)150 5250 y Fe(backward-word)j(\(M-b\))12
+26 b Fb(131)150 5252 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(122)150 5340
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(127)150 5340
y Fe(beginning-of-history)k(\(M-<\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(123)2025
-4117 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(128)2025
+4206 y Fe(beginning-of-line)j(\(C-a\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(122)2025 4204 y Fe(bracketed-paste-begin)c(\(\))16
+b Fb(127)2025 4294 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(125)2021 4499 y Fs(C)2025 4623 y Fe
+g(:)g(:)31 b Fb(130)2021 4589 y Fs(C)2025 4713 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(129)2025 4713
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(134)2025 4802
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(125)2025 4802 y Fe(character-search)29 b(\(C-]\))22
+b Fb(131)2025 4892 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(130)2025 4892 y Fe
+(:)h(:)f(:)g(:)g(:)36 b Fb(135)2025 4982 y Fe
(character-search-backward)31 b(\(M-C-]\))10 b Fc(:)15
-b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(130)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(123)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(127)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(128)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(128)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(128)p eop end
-%%Page: 175 181
-TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(175)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(129)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(128)150 444 y Fe(complete-variable)c(\(M-$\))20
+b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)25 b Fb(135)2025 5071
+y Fe(clear-display)j(\(M-C-l\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
+b Fb(128)2025 5161 y Fe(clear-screen)28 b(\(C-l\))14
+b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025
+5250 y Fe(complete)e(\(TAB\))7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)22 b Fb(133)2025 5340 y Fe(complete-command)29
+b(\(M-!\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(134)p eop end
+%%Page: 180 186
+TeXDict begin 180 185 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(180)150 264 y Fe(complete-filename)29
+b(\(M-/\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(133)150 353 y Fe(complete-hostname)
+c(\(M-@\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)150 442 y Fe
+(complete-into-braces)d(\(M-{\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(134)150 531
+y Fe(complete-username)j(\(M-~\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33
+b Fb(133)150 621 y Fe(complete-variable)c(\(M-$\))20
b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)33 b Fb(128)150 534 y Fe(copy-backward-word)d(\(\))7
+(:)g(:)h(:)f(:)33 b Fb(134)150 710 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(126)150 624 y Fe(copy-forward-word)
+(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(132)150 799 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(127)150
-711 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(132)150
+887 y Fe(copy-region-as-kill)30 b(\(\))22 b Fc(:)13 b(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)36
-b Fb(126)146 1017 y Fs(D)150 1142 y Fe(dabbrev-expand)29
+b Fb(132)146 1175 y Fs(D)150 1298 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(129)150 1232 y Fe(delete-char)c(\(C-d\))17 b Fc(:)d(:)f(:)g(:)h(:)
+b Fb(134)150 1387 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(124)150 1322 y Fe(delete-char-or-list)e
+(:)g(:)g(:)g(:)g(:)32 b Fb(130)150 1476 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(128)150 1412 y Fe
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(133)150 1566 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(126)150
-1502 y Fe(digit-argument)j(\()p Fd(M-0)p Fe(,)e Fd(M-1)p
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(132)150
+1655 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(127)150 1592 y Fe(display-shell-version)k(\(C-x)d(C-v\))c
+26 b Fb(132)150 1744 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(131)150 1673 y Fe(do-lowercase-version)30 b(\(M-A,)227
-1761 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
+Fb(136)150 1825 y Fe(do-lowercase-version)30 b(\(M-A,)227
+1912 y(M-B,)c(M-)p Fd(x)p Fe(,)h(...\))10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g
(:)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(129)150 1851 y Fe(downcase-word)k(\(M-l\))
+g(:)g(:)g(:)g(:)g(:)25 b Fb(135)150 2001 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(125)150 1941
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)26 b Fb(131)150 2090
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(130)150 2031 y Fe(dump-macros)c(\(\))7 b Fc(:)14
+32 b Fb(136)150 2180 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(130)150 2121 y Fe(dump-variables)29 b(\(\))17 b
+b Fb(136)150 2269 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(130)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(128)146 2514 y Fs(E)150
-2639 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14
-b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)150 2729
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(136)150
+2356 y Fe(dynamic-complete-history)f(\(M-TAB\))13 b Fc(:)i(:)e(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(134)146 2645 y Fs(E)150
+2767 y Fe(edit-and-execute-command)k(\(C-x)c(C-e\))14
+b Fc(:)g(:)f(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(137)150 2857
y Fe(end-kbd-macro)g(\(C-x)d(\)\))13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)28
-b Fb(129)150 2819 y Fd(end-of-file)g Fe(\(usually)g(C-d\))21
+b Fb(134)150 2946 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(124)150 2909 y Fe(end-of-history)29 b(\(M->\))9
+(:)g(:)35 b Fb(130)150 3035 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(123)150 2999 y
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(128)150 3124 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(122)150 3086 y Fe(exchange-point-and-mark)f(\(C-x)26
+b Fb(127)150 3212 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(130)146 3392 y Fs(F)150 3517 y Fe(forward-backward-delete-char)g
+b Fb(135)146 3500 y Fs(F)150 3623 y Fe(forward-backward-delete-char)g
(\(\))15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(125)150 3607 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g
+b Fb(130)150 3712 y Fe(forward-char)e(\(C-f\))14 b Fc(:)h(:)e(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)29 b Fb(122)150 3697 y Fe(forward-search-history)i
+h(:)f(:)g(:)g(:)29 b Fb(127)150 3801 y Fe(forward-search-history)i
(\(C-s\))24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)38 b Fb(123)150 3784 y Fe(forward-word)28 b(\(M-f\))14
+(:)38 b Fb(128)150 3889 y Fe(forward-word)28 b(\(M-f\))14
b Fc(:)h(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(122)146 4079
-y Fs(G)150 4204 y Fe(glob-complete-word)h(\(M-g\))16
+g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29 b Fb(127)146 4167
+y Fs(G)150 4289 y Fe(glob-complete-word)h(\(M-g\))16
b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)31 b Fb(131)150 4294 y Fe(glob-expand-word)e(\(C-x)e(*\))c
+g(:)g(:)31 b Fb(136)150 4379 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(131)150 4382 y Fe(glob-list-expansions)30
+(:)g(:)g(:)38 b Fb(136)150 4466 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(131)2021 294 y Fs(H)2025 422 y Fe
+(:)g(:)h(:)27 b Fb(136)2021 294 y Fs(H)2025 422 y Fe
(history-and-alias-expand-line)32 b(\(\))13 b Fc(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)28 b Fb(131)2025 513 y Fe(history-expand-line)i
+g(:)g(:)g(:)g(:)28 b Fb(137)2025 513 y Fe(history-expand-line)i
(\(M-^\))13 b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)28 b Fb(131)2025 604 y Fe(history-search-backward)j
+g(:)g(:)g(:)h(:)28 b Fb(136)2025 604 y Fe(history-search-backward)j
(\(\))11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)26 b Fb(124)2025 695 y Fe(history-search-forward)k(\(\))13
+(:)g(:)g(:)26 b Fb(129)2025 695 y Fe(history-search-forward)k(\(\))13
b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(123)2025 786 y Fe(history-substring-search-backw)q(ard)k
-(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(124)2025 874
+h(:)28 b Fb(129)2025 786 y Fe(history-substring-search-backw)q(ard)k
+(\(\))20 b Fc(:)13 b(:)g(:)g(:)g(:)35 b Fb(129)2025 874
y Fe(history-substring-search-forwa)q(rd)d(\(\))22 b
-Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(124)2021 1200 y Fs(I)2025
+Fc(:)13 b(:)h(:)f(:)g(:)g(:)37 b Fb(129)2021 1200 y Fs(I)2025
1329 y Fe(insert-comment)29 b(\(M-#\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-24 b Fb(130)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16
+24 b Fb(136)2025 1420 y Fe(insert-completions)29 b(\(M-*\))16
b Fc(:)f(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)31 b Fb(127)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g
+g(:)g(:)31 b Fb(133)2025 1507 y Fe(insert-last-argument)f(\(M-.)c(or)g
(M-_\))7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(131)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27
+b Fb(137)2021 1834 y Fs(K)2025 1962 y Fe(kill-line)27
b(\(C-k\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(126)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14
+b Fb(131)2025 2053 y Fe(kill-region)28 b(\(\))7 b Fc(:)14
b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
-b Fb(126)2025 2144 y Fe(kill-whole-line)29 b(\(\))14
+b Fb(132)2025 2144 y Fe(kill-whole-line)29 b(\(\))14
b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(126)2025
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(131)2025
2231 y Fe(kill-word)e(\(M-d\))c Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)37 b Fb(126)2021 2548 y Fs(M)2025 2676 y
+g(:)g(:)g(:)37 b Fb(131)2021 2548 y Fs(M)2025 2676 y
Fe(magic-space)28 b(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)22 b Fb(131)2025 2767 y Fe(menu-complete)28
+g(:)g(:)h(:)f(:)22 b Fb(137)2025 2767 y Fe(menu-complete)28
b(\(\))20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)34
-b Fb(127)2025 2854 y Fe(menu-complete-backward)c(\(\))13
+b Fb(133)2025 2854 y Fe(menu-complete-backward)c(\(\))13
b Fc(:)h(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)28 b Fb(128)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\))
+h(:)28 b Fb(133)2021 3181 y Fs(N)2025 3309 y Fe(next-history)g(\(C-n\))
14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(123)2025
+(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(128)2025
3401 y Fe(next-screen-line)g(\(\))12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-27 b Fb(123)2025 3472 y Fe(non-incremental-forward-)2102
+27 b Fb(128)2025 3472 y Fe(non-incremental-forward-)2102
3560 y(search-history)h(\(M-n\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(123)2025 3647 y Fe(non-incremental-reverse-)2102
+b Fb(129)2025 3647 y Fe(non-incremental-reverse-)2102
3734 y(search-history)28 b(\(M-p\))23 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37
-b Fb(123)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30
+b Fb(128)2021 4070 y Fs(O)2025 4198 y Fe(operate-and-get-next)30
b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)26 b Fb(131)2025 4285 y Fe(overwrite-mode)j(\(\))17
+(:)g(:)g(:)g(:)26 b Fb(129)2025 4285 y Fe(overwrite-mode)j(\(\))17
b Fc(:)c(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(125)p
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)p
eop end
-%%Page: 176 182
-TeXDict begin 176 181 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(176)146 294 y Fs(P)150 414 y Fe
+%%Page: 181 187
+TeXDict begin 181 186 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(181)146 294 y Fs(P)150 411 y Fe
(possible-command-completions)32 b(\(C-x)26 b(!\))9 b
-Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(128)150 503 y Fe
+Fc(:)14 b(:)g(:)f(:)g(:)g(:)24 b Fb(134)150 499 y Fe
(possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(127)150
-592 y Fe(possible-filename-completions)32 b(\(C-x)27
-b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 680
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26 b Fb(133)150
+586 y Fe(possible-filename-completions)32 b(\(C-x)27
+b(/\))7 b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 674
y Fe(possible-hostname-completions)32 b(\(C-x)27 b(@\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 769 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 762 y Fe
(possible-username-completions)32 b(\(C-x)27 b(~\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 858 y Fe
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(133)150 849 y Fe
(possible-variable-completions)32 b(\(C-x)27 b($\))7
-b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(128)150 946 y Fe(prefix-meta)28
+b Fc(:)13 b(:)g(:)g(:)g(:)22 b Fb(134)150 937 y Fe(prefix-meta)28
b(\(ESC\))17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32
-b Fb(129)150 1035 y Fe(previous-history)d(\(C-p\))23
+b Fb(135)150 1025 y Fe(previous-history)d(\(C-p\))23
b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(123)150 1124 y Fe(previous-screen-line)30
+(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 1112 y Fe(previous-screen-line)30
b(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(122)150 1211 y Fe
+(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(127)150 1199 y Fe
(print-last-kbd-macro)d(\(\))19 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(129)146
-1487 y Fs(Q)150 1606 y Fe(quoted-insert)c(\(C-q)d(or)g(C-v\))8
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(134)146
+1453 y Fs(Q)150 1570 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(125)146 1881 y Fs(R)150 2002 y Fe(re-read-init-file)29
+(:)g(:)22 b Fb(130)146 1824 y Fs(R)150 1941 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(129)150 2091 y Fe(redraw-current-line)g(\(\))22
+(:)g(:)g(:)g(:)30 b Fb(135)150 2029 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(123)150 2179 y Fe(reverse-search-history)31
+(:)f(:)g(:)g(:)g(:)36 b Fb(128)150 2117 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(123)150 2266 y Fe(revert-line)28 b(\(M-r\))17
+g(:)38 b Fb(128)150 2204 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(129)146
-2532 y Fs(S)150 2652 y Fe(self-insert)c(\(a,)e(b,)g(A,)g(1,)h(!,)f
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(135)146
+2447 y Fs(S)150 2565 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(125)150 2741 y Fe(set-mark)g(\(C-@\))7 b Fc(:)15
+b Fb(130)150 2652 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(130)150 2830 y Fe(shell-backward-kill-word)31 b(\(\))8
+b Fb(135)150 2740 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(126)150 2918 y Fe(shell-backward-word)30 b(\(\))22
-b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)36 b Fb(122)150 3007 y Fe(shell-expand-line)29
-b(\(M-C-e\))13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)28 b Fb(131)150 3096 y Fe(shell-forward-word)i(\(\))
-7 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(122)150 3184 y
-Fe(shell-kill-word)29 b(\(\))14 b Fc(:)g(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)29
-b Fb(126)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(130)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(129)2021
-821 y Fs(T)2025 972 y Fe(tilde-expand)28 b(\(M-&\))14
-b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(129)2025
-1070 y Fe(transpose-chars)g(\(C-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
-b Fb(125)2025 1157 y Fe(transpose-words)29 b(\(M-t\))7
-b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(125)2021 1638 y Fs(U)2025
-1788 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10 b Fc(:)k(:)f(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)25 b Fb(129)2025 1887 y Fe(universal-argument)k(\(\))7
-b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(127)2025 1985 y Fe
-(unix-filename-rubout)30 b(\(\))19 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)34
-b Fb(126)2025 2084 y Fe(unix-line-discard)29 b(\(C-u\))20
+23 b Fb(131)150 2828 y Fe(shell-backward-word)30 b(\(M-C-b\))8
+b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
+23 b Fb(127)150 2915 y Fe(shell-expand-line)29 b(\(M-C-e\))13
+b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)28 b Fb(136)150 3003 y Fe(shell-forward-word)i(\(M-C-f\))11
+b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+26 b Fb(127)150 3091 y Fe(shell-kill-word)j(\(M-C-d\))20
+b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)33 b Fb(131)150 3178 y Fe(shell-transpose-words)d
+(\(M-C-t\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)35 b Fb(132)2025 264 y Fe(skip-csi-sequence)29 b(\(\))9
+b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(135)2025 351 y
+Fe(start-kbd-macro)29 b(\(C-x)d(\(\))8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)23
+b Fb(134)2021 819 y Fs(T)2025 970 y Fe(tilde-expand)28
+b(\(M-&\))14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29
+b Fb(135)2025 1068 y Fe(transpose-chars)g(\(C-t\))7 b
+Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2025 1155 y Fe(transpose-words)
+29 b(\(M-t\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(130)2021
+1634 y Fs(U)2025 1784 y Fe(undo)k(\(C-_)h(or)f(C-x)g(C-u\))10
+b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)25 b Fb(135)2025 1883 y Fe
+(universal-argument)k(\(\))7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)22
+b Fb(132)2025 1981 y Fe(unix-filename-rubout)30 b(\(\))19
b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)34 b Fb(126)2025 2182 y Fe(unix-word-rubout)29
-b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(126)2025 2269
-y Fe(upcase-word)28 b(\(M-u\))17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)34 b Fb(132)2025 2080 y Fe(unix-line-discard)29
+b(\(C-u\))20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(131)2025 2178 y Fe
+(unix-word-rubout)29 b(\(C-w\))22 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36
+b Fb(132)2025 2265 y Fe(upcase-word)28 b(\(M-u\))17 b
+Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)32 b Fb(131)2021
+2744 y Fs(Y)2025 2894 y Fe(yank)26 b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)33
+b Fb(132)2025 2993 y Fe(yank-last-arg)28 b(\(M-.)f(or)f(M-_\))8
+b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)22 b Fb(129)2025 3091 y Fe(yank-nth-arg)28 b(\(M-C-y\))9
+b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24 b Fb(129)2025 3178
+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(:)32 b Fb(125)2021 2750 y Fs(Y)2025 2900 y Fe(yank)26
-b(\(C-y\))18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)g(:)33 b Fb(127)2025 2999 y Fe(yank-last-arg)28
-b(\(M-.)f(or)f(M-_\))8 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)22 b Fb(124)2025 3097
-y Fe(yank-nth-arg)28 b(\(M-C-y\))9 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)24
-b Fb(124)2025 3184 y Fe(yank-pop)j(\(M-y\))7 b Fc(:)15
-b(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22
-b Fb(127)150 3933 y Fs(D.5)68 b(Concept)45 b(Index)146
-4527 y(A)150 4652 y Fb(alias)27 b(expansion)7 b Fc(:)14
-b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
-b Fb(93)150 4742 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
+g(:)g(:)h(:)f(:)22 b Fb(132)150 3927 y Fs(D.5)68 b(Concept)45
+b(Index)146 4520 y(A)150 4646 y Fb(alias)27 b(expansion)7
+b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21
+b Fb(94)150 4736 y(arithmetic)26 b(ev)l(aluation)d Fc(:)13
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(92)150 4832 y(arithmetic)26
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(93)150 4826 y(arithmetic)26
b(expansion)11 b Fc(:)j(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)26
-b Fb(31)150 4923 y(arithmetic,)h(shell)6 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)
+b Fb(31)150 4917 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(92)150 5010
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)20 b Fb(93)150 5004
y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(94)2021
-4527 y Fs(B)2025 4650 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b Fb(95)2021
+4520 y Fs(B)2025 4644 y Fb(bac)n(kground)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(103)2025
-4739 y(Bash)e(con\014guration)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)28 b Fb(107)2025
+4733 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(147)2025 4829 y(Bash)g(installation)9
+g(:)g(:)26 b Fb(152)2025 4823 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(147)2025 4918 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
+b Fb(152)2025 4913 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 5008 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
+Fb(5)2025 5002 y(brace)26 b(expansion)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5095 y(builtin)15
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)24 b Fb(23)2025 5089 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: 177 183
-TeXDict begin 177 182 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(177)146 294 y Fs(C)150 418 y Fb(command)26
+%%Page: 182 188
+TeXDict begin 182 187 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(182)146 294 y Fs(C)150 415 y Fb(command)26
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(108)150 507 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
+b Fb(112)150 503 y(command)26 b(execution)12 b Fc(:)h(:)g(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)f(:)g(:)g(:)26 b Fb(38)150 597 y(command)g(expansion)c
+g(:)h(:)f(:)g(:)g(:)26 b Fb(39)150 592 y(command)g(expansion)c
Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(38)150
-687 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36 b Fb(39)150
+681 y(command)26 b(history)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)33 b Fb(141)150 777 y(command)26 b(searc)n(h)16
+g(:)g(:)g(:)33 b Fb(146)150 770 y(command)26 b(searc)n(h)16
b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30
-b Fb(38)150 866 y(command)c(substitution)21 b Fc(:)13
+b Fb(39)150 859 y(command)c(substitution)21 b Fc(:)13
b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(30)150 956 y(command)26
+(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(31)150 947 y(command)26
b(timing)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
-(:)28 b Fb(8)150 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(11)150 1225 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
+(:)28 b Fb(8)150 1036 y(commands,)e(comp)r(ound)c Fc(:)13
+b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1125 y(commands,)26
+b(conditional)10 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)25
+b Fb(11)150 1214 y(commands,)h(grouping)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g
(:)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
+g(:)g(:)g(:)29 b Fb(15)150 1302 y(commands,)d(lists)12
b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)27
-b Fb(9)150 1405 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)
+b Fb(9)150 1391 y(commands,)f(lo)r(oping)e Fc(:)13 b(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
-(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1494 y(commands,)26
+(:)g(:)g(:)g(:)g(:)37 b Fb(10)150 1480 y(commands,)26
b(pip)r(elines)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)33
-b Fb(8)150 1584 y(commands,)26 b(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
+b Fb(8)150 1569 y(commands,)26 b(shell)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1674 y(commands,)26
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(8)150 1657 y(commands,)26
b(simple)e Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
-b Fb(8)150 1764 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g
+b Fb(8)150 1746 y(commen)n(ts,)26 b(shell)13 b Fc(:)i(:)e(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150
-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(134)150 1943 y(con\014guration)22 b Fc(:)13
+1835 y(Compatibilit)n(y)f(Lev)n(el)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)25 b Fb(104)150 1924 y(Compatibilit)n(y)i(Mo)r(de)22
+b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(104)150
+2013 y(completion)27 b(builtins)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)36 b Fb(139)150 2101 y(con\014guration)22 b Fc(:)13
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(147)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
+b Fb(152)150 2190 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15
b(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)23
-b Fb(3)150 2120 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(3)150 2277 y(copro)r(cess)18 b Fc(:)c(:)f(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)32 b
-Fb(15)146 2416 y Fs(D)150 2537 y Fb(directory)26 b(stac)n(k)11
+Fb(15)146 2553 y Fs(D)150 2672 y Fb(directory)26 b(stac)n(k)11
b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
-b Fb(96)146 2833 y Fs(E)150 2957 y Fb(editing)g(command)g(lines)17
+b Fb(97)146 2948 y Fs(E)150 3069 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(108)150 3046 y(en)n(vironmen)n(t)18
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(112)150 3158 y(en)n(vironmen)n(t)18
b Fc(:)12 b(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)32 b Fb(40)150 3136 y(ev)l(aluation,)26 b(arithmetic)12
+f(:)32 b Fb(41)150 3247 y(ev)l(aluation,)26 b(arithmetic)12
b Fc(:)i(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(92)150 3226
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)26 b Fb(93)150 3335
y(ev)n(en)n(t)f(designators)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-g(:)h(:)34 b Fb(144)150 3316 y(execution)26 b(en)n(vironmen)n(t)17
+g(:)h(:)34 b Fb(149)150 3424 y(execution)26 b(en)n(vironmen)n(t)17
b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
-(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(39)150 3405
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)31 b Fb(40)150 3513
y(exit)25 b(status)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
-(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(40)150 3495 y(expansion)9
+(:)f(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(3,)k(41)150 3602 y(expansion)9
b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h
(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)24 b Fb(22)150 3585 y(expansion,)i(arithmetic)18
+g(:)g(:)g(:)g(:)24 b Fb(22)150 3691 y(expansion,)i(arithmetic)18
b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3674
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(31)150 3779
y(expansion,)26 b(brace)16 b Fc(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)30 b Fb(23)150 3764 y(expansion,)c(\014lename)18
+f(:)g(:)g(:)30 b Fb(23)150 3868 y(expansion,)c(\014lename)18
b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
-(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(32)150
-3854 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32 b Fb(33)150
+3957 y(expansion,)26 b(parameter)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
-g(:)34 b Fb(24)150 3944 y(expansion,)26 b(pathname)7
+g(:)34 b Fb(25)150 4046 y(expansion,)26 b(pathname)7
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
-(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)22 b Fb(32)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(:)22 b Fb(33)150
+4134 y(expansion,)k(tilde)14 b Fc(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)g(:)g(:)28 b Fb(23)150 4123 y(expressions,)f(arithmetic)13
+h(:)f(:)g(:)g(:)g(:)28 b Fb(24)150 4223 y(expressions,)f(arithmetic)13
b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(92)150 4210 y(expressions,)g
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)27 b Fb(93)150 4310 y(expressions,)g
(conditional)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
-g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(90)2021
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)32 b Fb(91)2021
294 y Fs(F)2025 415 y Fb(\014eld)21 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
@@ -21366,40 +21765,40 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)36
b Fb(3)2025 593 y(\014lename)26 b(expansion)11 b Fc(:)i(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(32)2025 682 y(foreground)9
+g(:)g(:)h(:)f(:)g(:)g(:)26 b Fb(33)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(103)2025 769 y(functions,)i(shell)9 b
+h(:)f(:)24 b Fb(107)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 Fb(18)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(141)2025 1259 y(history)25 b(ev)n(en)n(ts)8 b Fc(:)13
+b Fb(146)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(144)2025 1347 y(history)i(expansion)14 b Fc(:)g(:)f(:)g(:)g(:)h(:)
+b Fb(149)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(143)2025 1436 y(history)c(list)9
+(:)g(:)g(:)g(:)h(:)f(:)29 b Fb(148)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(141)2025 1524 y(History)-6 b(,)25 b(ho)n(w)h(to)g(use)
+g(:)g(:)24 b Fb(146)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(140)2021
+(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(145)2021
1803 y Fs(I)2025 1924 y Fb(iden)n(ti\014er)12 b Fc(:)g(:)h(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)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(110)2025 2102 y(installation)21
+f(:)g(:)g(:)g(:)32 b Fb(114)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(147)2025 2191 y(in)n(teraction,)26 b(readline)7
+g(:)34 b Fb(152)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(107)2025
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)22 b Fb(111)2025
2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
-h(:)f(:)g(:)34 b Fb(87,)27 b(88)2025 2367 y(in)n(ternationalization)22
+h(:)f(:)g(:)34 b Fb(88,)27 b(89)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
@@ -21408,29 +21807,29 @@ b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(3)2025 2845
y(job)26 b(con)n(trol)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(103)2021 3124 y Fs(K)2025
+g(:)g(:)g(:)h(:)f(:)31 b Fb(3,)c(107)2021 3124 y Fs(K)2025
3246 y Fb(kill)f(ring)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
-g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(109)2025
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)22 b Fb(113)2025
3333 y(killing)k(text)6 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(109)2021 3612
+f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)21 b Fb(113)2021 3612
y Fs(L)2025 3733 y Fb(lo)r(calization)i Fc(:)13 b(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)35
b Fb(7)2025 3821 y(login)26 b(shell)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21
-b Fb(87)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26
+b Fb(88)2021 4100 y Fs(M)2025 4221 y Fb(matc)n(hing,)26
b(pattern)9 b Fc(:)k(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)
g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)24
b Fb(33)2025 4308 y(metac)n(haracter)7 b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g
(:)g(:)g(:)g(:)g(:)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: 178 184
-TeXDict begin 178 183 bop 150 -116 a Fu(App)s(endix)29
-b(D:)i(Indexes)2623 b(178)146 294 y Fs(N)150 410 y Fb(name)19
+%%Page: 183 189
+TeXDict begin 183 188 bop 150 -116 a Fu(App)s(endix)29
+b(D:)i(Indexes)2623 b(183)146 294 y Fs(N)150 410 y Fb(name)19
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
@@ -21439,119 +21838,121 @@ y(nativ)n(e)25 b(languages)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
h(:)f(:)g(:)g(:)g(:)34 b Fb(7)150 584 y(notation,)27
b(readline)13 b Fc(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f
(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)27
-b Fb(108)146 826 y Fs(O)150 942 y Fb(op)r(erator,)g(shell)c
+b Fb(112)146 828 y Fs(O)150 944 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
+37 b Fb(3)146 1187 y Fs(P)150 1303 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(24)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(25)150 1390 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(19)150
-1475 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 b Fb(20)150
+1478 y(parameters,)27 b(p)r(ositional)7 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
-f(:)g(:)21 b Fb(21)150 1562 y(parameters,)27 b(sp)r(ecial)7
+f(:)g(:)21 b Fb(21)150 1565 y(parameters,)27 b(sp)r(ecial)7
b Fc(:)14 b(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)21
-b Fb(21)150 1649 y(pathname)k(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g
+b Fb(21)150 1652 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(32)150 1736 y(pattern)25 b(matc)n(hing)c
+h(:)f(:)g(:)32 b Fb(33)150 1739 y(pattern)25 b(matc)n(hing)c
Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34
-b Fb(33)150 1824 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+b Fb(33)150 1827 y(pip)r(eline)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)27
-b Fb(8)150 1911 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(8)150 1914 y(POSIX)22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)38
-b Fb(3)150 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(99)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(31)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(132)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+b Fb(3)150 2001 y(POSIX)25 b(Mo)r(de)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
+(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)29 b Fb(101)150 2088
+y(pro)r(cess)e(group)15 b Fc(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+(:)g(:)g(:)g(:)g(:)h(:)f(:)30 b Fb(3)150 2176 y(pro)r(cess)d(group)e
+(ID)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)26
+b Fb(3)150 2263 y(pro)r(cess)h(substitution)11 b Fc(:)h(:)i(:)f(:)g(:)g
(:)g(:)g(:)g(:)h(:)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(97)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(106)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(34)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(99)150 3586 y(return)c(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)25 b Fb(32)150 2350 y(programmable)i(completion)8
+b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)23 b Fb(137)150 2437 y(prompting)17
+b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)31 b Fb(98)146 2681 y Fs(Q)150 2797 y Fb(quoting)16
+b Fc(:)d(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
+g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)31 b Fb(6)150 2884 y(quoting,)26
+b(ANSI)18 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g
+(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)
+h(:)f(:)g(:)34 b Fb(6)146 3127 y Fs(R)150 3243 y Fb(Readline,)26
+b(ho)n(w)g(to)g(use)11 b Fc(:)i(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h
+(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)26
+b Fb(110)150 3331 y(redirection)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g
+(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27 b Fb(35)150
+3418 y(reserv)n(ed)f(w)n(ord)13 b Fc(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f
+(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(3)150 3505
+y(reserv)n(ed)e(w)n(ords)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)
+g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+(:)g(:)g(:)g(:)h(:)f(:)g(:)30 b Fb(8)150 3592 y(restricted)c(shell)12
+b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)27
+b Fb(100)150 3679 y(return)e(status)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g
(:)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
+294 y Fs(S)2025 430 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(92)2025 520
+f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)31 b Fb(93)2025 524
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
+(:)g(:)g(:)g(:)g(:)g(:)h(:)32 b Fb(18)2025 617 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(41)2025 706 y(shell)h(v)l(ariable)7
+(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(42)2025 711 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(19)2025 799 y(shell,)k(in)n(teractiv)n(e)21
+g(:)22 b Fb(20)2025 805 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(88)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g
+b Fb(89)2025 899 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
+b Fb(4)2025 992 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(41)2025 1077
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(42)2025 1086
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(71)2025 1170 y(startup)f(\014les)10
+g(:)g(:)g(:)g(:)31 b Fb(4,)26 b(72)2025 1180 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(87)2025 1257 y(susp)r(ending)g(jobs)10
+(:)g(:)25 b Fb(88)2025 1267 y(susp)r(ending)g(jobs)10
b Fc(:)k(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)
g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)25
-b Fb(103)2021 1619 y Fs(T)2025 1752 y Fb(tilde)h(expansion)7
+b Fb(107)2021 1647 y Fs(T)2025 1783 y Fb(tilde)h(expansion)7
b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)22
-b Fb(23)2025 1845 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
+b Fb(24)2025 1877 y(tok)n(en)17 b Fc(:)12 b(:)i(:)f(:)g(:)g(:)g(:)g(:)g
(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)
f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)32
-b Fb(4)2025 1932 y(translation,)27 b(nativ)n(e)e(languages)c
+b Fb(4)2025 1964 y(translation,)27 b(nativ)n(e)e(languages)c
Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g
-(:)g(:)g(:)g(:)34 b Fb(7)2021 2294 y Fs(V)2025 2427 y
+(:)g(:)g(:)g(:)34 b Fb(7)2021 2344 y Fs(V)2025 2480 y
Fb(v)l(ariable,)26 b(shell)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g
(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)
-g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(19)2025 2515 y(v)l(ariables,)f
+g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(20)2025 2567 y(v)l(ariables,)f
(readline)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)22
-b Fb(111)2021 2876 y Fs(W)2025 3010 y Fb(w)n(ord)10 b
+b Fb(115)2021 2947 y Fs(W)2025 3083 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
+g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)25 b Fb(4)2025 3170
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(31)2021 3458 y Fs(Y)2025
-3586 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
+g(:)h(:)f(:)g(:)g(:)g(:)24 b Fb(32)2021 3550 y Fs(Y)2025
+3679 y Fb(y)n(anking)h(text)13 b Fc(:)f(:)h(:)g(:)g(:)h(:)f(:)g(:)g(:)g
(:)g(:)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(109)p eop end
+g(:)h(:)f(:)g(:)g(:)g(:)g(:)28 b Fb(113)p eop end
%%Trailer
userdict /end-hook known{end-hook}if
diff --git a/doc/bashref.texi b/doc/bashref.texi
index d33cd571..9e23f586 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--2018 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2020 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -533,10 +533,15 @@ been present.
@cindex native languages
@cindex translation, native languages
-A double-quoted string preceded by a dollar sign (@samp{$}) will cause
-the string to be translated according to the current locale.
-If the current locale is @code{C} or @code{POSIX}, the dollar sign
-is ignored.
+A double-quoted string preceded by a dollar sign (@samp{$})
+will cause the string to be translated according to the current locale.
+The @var{gettext} infrastructure performs the message catalog lookup and
+translation, using the @code{LC_MESSAGES} and @code{TEXTDOMAIN} shell
+variables, as explained below. See the gettext documentation for additional
+details.
+If the current locale is @code{C} or @code{POSIX},
+or if there are no translations available,
+the dollar sign is ignored.
If the string is translated and replaced, the replacement is
double-quoted.
@@ -580,6 +585,7 @@ becomes the input of a second, in a loop or conditional construct, or in
some other grouping.
@menu
+* Reserved Words:: Words that have special meaning to the shell.
* Simple Commands:: The most common type of command.
* Pipelines:: Connecting the input and output of several
commands.
@@ -589,6 +595,32 @@ some other grouping.
* GNU Parallel:: Running commands in parallel.
@end menu
+@node Reserved Words
+@subsection Reserved Words
+@cindex reserved words
+
+Reserved words are words that have special meaning to the shell.
+They are used to begin and end the shell's compound commands.
+
+The following words are recognized as reserved when unquoted and
+the first word of a command (see below for exceptions):
+
+@multitable @columnfractions .1 .1 .1 .1 .12 .1
+@item @code{if} @tab @code{then} @tab @code{elif}
+@tab @code{else} @tab @code{fi} @tab @code{time}
+@item @code{for} @tab @code{in} @tab @code{until}
+@tab @code{while} @tab @code{do} @tab @code{done}
+@item @code{case} @tab @code{esac} @tab @code{coproc}
+@tab @code{select} @tab @code{function}
+@item @code{@{} @tab @code{@}} @tab @code{[[} @tab @code{]]} @tab @code{!}
+@end multitable
+
+@noindent
+@code{in} is recognized as a reserved word if it is the third word of a
+@code{case} or @code{select} command.
+@code{in} and @code{do} are recognized as reserved
+words if they are the third word in a @code{for} command.
+
@node Simple Commands
@subsection Simple Commands
@cindex commands, simple
@@ -933,7 +965,8 @@ Using @samp{;&} in place of @samp{;;} causes execution to continue with
the @var{command-list} associated with the next clause, if any.
Using @samp{;;&} in place of @samp{;;} causes the shell to test the patterns
in the next clause, if any, and execute any associated @var{command-list}
-on a successful match.
+on a successful match,
+continuing the case statement execution as if the pattern list had not matched.
The return status is zero if no @var{pattern} is matched. Otherwise, the
return status is the exit status of the @var{command-list} executed.
@@ -1031,8 +1064,9 @@ 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
-a @sc{POSIX} extended regular expression and matched accordingly
-(as in @i{regex}3)).
+a @sc{posix} extended regular expression and matched accordingly
+(using the @sc{posix} @code{regcomp} and @code{regexec} interfaces
+usually described in @i{regex}(3)).
The return value is 0 if the string matches
the pattern, and 1 otherwise.
If the regular expression is syntactically incorrect, the conditional
@@ -1047,20 +1081,27 @@ Bracket expressions in regular expressions must be treated carefully,
since normal quoting characters lose their meanings between brackets.
If the pattern is stored in a shell variable, quoting the variable
expansion forces the entire pattern to be matched as a string.
+
+The pattern will match if it matches any part of the string.
+Anchor the pattern using the @samp{^} and @samp{$} regular expression
+operators to force it to match the entire string.
+The array variable @code{BASH_REMATCH} records which parts of the string
+matched the pattern.
+The element of @code{BASH_REMATCH} with index 0 contains the portion of
+the string matching the entire regular expression.
Substrings matched by parenthesized subexpressions within the regular
-expression are saved in the array variable @code{BASH_REMATCH}.
-The element of @code{BASH_REMATCH} with index 0 is the portion of the string
-matching the entire regular expression.
+expression are saved in the remaining @code{BASH_REMATCH} indices.
The element of @code{BASH_REMATCH} with index @var{n} is the portion of the
string matching the @var{n}th parenthesized subexpression.
For example, the following will match a line
(stored in the shell variable @var{line})
-if there is a sequence of characters in the value consisting of
+if there is a sequence of characters anywhere in the value consisting of
any number, including zero, of
-space characters, zero or one instances of @samp{a}, then a @samp{b}:
+characters in the @code{space} character class,
+zero or one instances of @samp{a}, then a @samp{b}:
@example
-[[ $line =~ [[:space:]]*?(a)b ]]
+[[ $line =~ [[:space:]]*(a)?b ]]
@end example
@noindent
@@ -1076,7 +1117,7 @@ expressions while paying attention to the shell's quote removal.
Using a shell variable to store the pattern decreases these problems.
For example, the following is equivalent to the above:
@example
-pattern='[[:space:]]*?(a)b'
+pattern='[[:space:]]*(a)?b'
[[ $line =~ $pattern ]]
@end example
@@ -1253,16 +1294,18 @@ use find's @option{-print0} option and parallel's @option{-0} option.
You can use Parallel to move files from the current directory when the
number of files is too large to process with one @code{mv} invocation:
@example
-ls | parallel mv @{@} destdir
+printf '%s\n' * | parallel mv @{@} destdir
@end example
As you can see, the @{@} is replaced with each line read from standard input.
While using @code{ls} will work in most instances, it is not sufficient to
-deal with all filenames.
+deal with all filenames. @code{printf} is a shell builtin, and therefore is
+not subject to the kernel's limit on the number of arguments to a program,
+so you can use @samp{*} (but see below about the @code{dotglob} shell option).
If you need to accommodate special characters in filenames, you can use
@example
-find . -depth 1 \! -name '.*' -print0 | parallel -0 mv @{@} destdir
+printf '%s\0' * | parallel -0 mv @{@} destdir
@end example
@noindent
@@ -1272,9 +1315,12 @@ This will run as many @code{mv} commands as there are files in the current
directory.
You can emulate a parallel @code{xargs} by adding the @option{-X} option:
@example
-find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv @{@} destdir
+printf '%s\0' * | parallel -0 -X mv @{@} destdir
@end example
+(You may have to modify the pattern if you have the @code{dotglob} option
+enabled.)
+
GNU Parallel can replace certain common idioms that operate on lines read
from a file (in this case, filenames listed one per line):
@example
@@ -1361,16 +1407,16 @@ shell context; no new process is created to interpret them.
Functions are declared using this syntax:
@rwindex function
@example
-@var{name} () @var{compound-command} [ @var{redirections} ]
+@var{fname} () @var{compound-command} [ @var{redirections} ]
@end example
or
@example
-function @var{name} [()] @var{compound-command} [ @var{redirections} ]
+function @var{fname} [()] @var{compound-command} [ @var{redirections} ]
@end example
-This defines a shell function named @var{name}. The reserved
+This defines a shell function named @var{fname}. The reserved
word @code{function} is optional.
If the @code{function} reserved
word is supplied, the parentheses are optional.
@@ -1380,14 +1426,16 @@ That command is usually a @var{list} enclosed between @{ and @}, but
may be any compound command listed above,
with one exception: If the @code{function} reserved word is used, but the
parentheses are not supplied, the braces are required.
-@var{compound-command} is executed whenever @var{name} is specified as the
+@var{compound-command} is executed whenever @var{fname} is specified as the
name of a command.
When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}),
-@var{name} may not be the same as one of the special builtins
+@var{fname} must be a valid shell @var{name} and
+may not be the same as one of the special builtins
(@pxref{Special Builtins}).
+In default mode, a function name can be any unquoted shell word that does
+not contain @samp{$}.
Any redirections (@pxref{Redirections}) associated with the shell function
are performed when the function is executed.
-
A function definition may be deleted using the @option{-f} option to the
@code{unset} builtin (@pxref{Bourne Shell Builtins}).
@@ -1663,7 +1711,7 @@ only be referenced; assignment to them is not allowed.
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.
+are subject to further word splitting and filename 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
@@ -1732,18 +1780,6 @@ If Bash is started with the @option{-c} option (@pxref{Invoking Bash}),
then @code{$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.
-
-@item _
-@vindex $_
-($_, 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 simple
-command executed in the foreground, 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.
@end vtable
@node Shell Expansions
@@ -1864,7 +1900,7 @@ A @{ or @samp{,} may be quoted with a backslash to prevent its
being considered part of a brace expression.
To avoid conflicts with parameter expansion, the string @samp{$@{}
is not considered eligible for brace expansion,
-and inhibits brace expansion until the closing @samp{@}}..
+and inhibits brace expansion until the closing @samp{@}}.
This construct is typically used as shorthand when the common
prefix of the strings to be generated is longer than in the
@@ -2181,7 +2217,7 @@ results.
Substring indexing is zero-based unless the positional parameters
are used, in which case the indexing starts at 1 by default.
-If @var{offset} is 0, and the positional parameters are used, @code{$@@} is
+If @var{offset} is 0, and the positional parameters are used, @code{$0} is
prefixed to the list.
@item $@{!@var{prefix}*@}
@@ -2234,7 +2270,7 @@ array in turn, and the expansion is the resultant list.
@itemx $@{@var{parameter}%%@var{word}@}
The @var{word}
is expanded to produce a pattern and matched according to the rules
-described below (@pxref{Pattern Matching}). If the pattern matches
+described below (@pxref{Pattern Matching}).
If the pattern matches a trailing portion of the expanded value of
@var{parameter}, then the result of the expansion is the value of
@var{parameter} with the shortest matching pattern (the @samp{%} case)
@@ -2307,6 +2343,15 @@ or information about @var{parameter} itself, depending on the value of
@var{operator}. Each @var{operator} is a single letter:
@table @code
+@item U
+The expansion is a string that is the value of @var{parameter} with lowercase
+alphabetic characters converted to uppercase.
+@item u
+The expansion is a string that is the value of @var{parameter} with the first
+character converted to uppercase, if it is alphabetic.
+@item L
+The expansion is a string that is the value of @var{parameter} with uppercase
+alphabetic characters converted to lowercase.
@item Q
The expansion is a string that is the value of @var{parameter} quoted in a
format that can be reused as input.
@@ -2320,6 +2365,11 @@ The expansion is a string that is the result of expanding the value of
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 K
+Produces a possibly-quoted version of the value of @var{parameter},
+except that it prints the values of
+indexed and associative arrays as a sequence of quoted key-value pairs
+(@pxref{Arrays}).
@item a
The expansion is a string consisting of flag values representing
@var{parameter}'s attributes.
@@ -2333,7 +2383,7 @@ 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
+The result of the expansion is subject to word splitting and filename
expansion as described below.
@end table
@@ -2492,7 +2542,7 @@ is performed.
After word splitting, unless the @option{-f} option has been set
(@pxref{The Set Builtin}), Bash scans each word for the characters
@samp{*}, @samp{?}, and @samp{[}.
-If one of these characters appears, then the word is
+If one of these characters appears, and is not quoted, then the word is
regarded as a @var{pattern},
and replaced with an alphabetically sorted list of
filenames matching the pattern (@pxref{Pattern Matching}).
@@ -2677,7 +2727,7 @@ by @{@var{varname}@}, the value of @var{varname} defines the file
descriptor to close.
If @{@var{varname}@} is supplied, the redirection persists beyond
the scope of the command, allowing the shell programmer to manage
-the file descriptor himself.
+the file descriptor's lifetime manually.
In the following descriptions, if the file descriptor number is
omitted, and the first character of the redirection operator is
@@ -2876,7 +2926,7 @@ A variant of here documents, the format is:
The @var{word} undergoes
tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
-Pathname expansion and word splitting are not performed.
+Filename expansion and word splitting are not performed.
The result is supplied as a single string,
with a newline appended,
to the command on its
@@ -2964,7 +3014,8 @@ is not specified. If the file does not exist, it is created.
@cindex command expansion
When a simple command is executed, the shell performs the following
-expansions, assignments, and redirections, from left to right.
+expansions, assignments, and redirections, from left to right, in
+the following order.
@enumerate
@item
@@ -3323,22 +3374,31 @@ 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 @samp{#!}, the remainder of the line specifies
-an interpreter for the program.
+an interpreter for the program and, depending on the operating system, one
+or more optional arguments for that interpreter.
Thus, you can specify Bash, @code{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
+consist of one or more optional arguments 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.
+the script file, followed by the rest of the arguments supplied to the
+script.
+The details of how the interpreter line is split into an interpreter name
+and a set of arguments vary across systems.
+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 a single argument to a maximum of 32 characters, so it's not
+portable to assume that using more than one argument will work.
Bash scripts often begin with @code{#! /bin/bash} (assuming that
Bash has been installed in @file{/bin}), since this ensures that
Bash will be used to interpret the script, even if it is executed
-under another shell.
+under another shell. It's a common idiom to use @code{env} to find
+@code{bash} even if it's been installed in another directory:
+@code{#!/usr/bin/env bash} will find the first occurrence of @code{bash}
+in @env{$PATH}.
@node Shell Builtin Commands
@chapter Shell Builtin Commands
@@ -3569,7 +3629,7 @@ with a name that is not a shell function.
@item getopts
@btindex getopts
@example
-getopts @var{optstring} @var{name} [@var{args}]
+getopts @var{optstring} @var{name} [@var{arg} @dots{}]
@end example
@code{getopts} is used by shell scripts to parse positional parameters.
@@ -3598,7 +3658,7 @@ and @var{name} is set to @samp{?}.
@code{getopts}
normally parses the positional parameters, but if more arguments are
-given in @var{args}, @code{getopts} parses those instead.
+supplied as @var{arg} values, @code{getopts} parses those instead.
@code{getopts} can report errors in two ways. If the first character of
@var{optstring} is a colon, @var{silent}
@@ -3727,7 +3787,7 @@ shift [@var{n}]
Shift the positional parameters to the left by @var{n}.
The positional parameters from @var{n}+1 @dots{} @code{$#} are
renamed to @code{$1} @dots{} @code{$#}-@var{n}.
-Parameters represented by the numbers @code{$#} to @code{$#}-@var{n}+1
+Parameters represented by the numbers @code{$#} down to @code{$#}-@var{n}+1
are unset.
@var{n} must be a non-negative number less than or equal to @code{$#}.
If @var{n} is zero or greater than @code{$#}, the positional parameters
@@ -3938,9 +3998,11 @@ the @var{nameref} attribute, @var{name} will be unset rather than the
variable it references.
@option{-n} has no effect if the @option{-f} option is supplied.
If no options are supplied, each @var{name} refers to a variable; if
-there is no variable by that name, any function with that name is
+there is no variable by that name, a function with that name, if any, is
unset.
Readonly variables and functions may not be unset.
+Some shell variables lose their special behavior if they are unset; such
+behavior is noted in the description of the individual variables.
The return status is zero unless a @var{name} is readonly.
@end table
@@ -4047,11 +4109,12 @@ Cause @var{shell-command} to be executed whenever @var{keyseq} is
entered.
When @var{shell-command} is executed, the shell sets the
@code{READLINE_LINE} variable to the contents of the Readline line
-buffer and the @code{READLINE_POINT} variable to the current location
-of the insertion point.
-If the executed command changes the value of @code{READLINE_LINE} or
-@code{READLINE_POINT}, those new values will be reflected in the
-editing state.
+buffer and the @code{READLINE_POINT} and @code{READLINE_MARK} variables
+to the current location of the insertion point and the saved insertion
+point (the @var{mark}), respectively.
+If the executed command changes the value of any of @code{READLINE_LINE},
+@code{READLINE_POINT}, or @code{READLINE_MARK}, those new values will be
+reflected in the editing state.
@item -X
List all key sequences bound to shell commands and the associated commands
@@ -4125,7 +4188,7 @@ zero if @var{command} is found, and non-zero if not.
@item declare
@btindex declare
@example
-declare [-aAfFgilnrtux] [-p] [@var{name}[=@var{value}] @dots{}]
+declare [-aAfFgiIlnrtux] [-p] [@var{name}[=@var{value}] @dots{}]
@end example
Declare variables and give them attributes. If no @var{name}s
@@ -4154,6 +4217,12 @@ The @option{-g} option forces variables to be created or modified at
the global scope, even when @code{declare} is executed in a shell function.
It is ignored in all other cases.
+The @option{-I} option causes local variables to inherit the attributes
+(except the @var{nameref} attribute)
+and value of any existing variable with the same
+@var{name} at a surrounding scope.
+If there is no existing variable, the local variable is initially unset.
+
The following options can be used to restrict output to variables with
the specified attributes or to give variables attributes:
@@ -4371,6 +4440,8 @@ 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 restore is effected as if a series of @code{set} commands were executed
+to restore the values that were in place before the function.
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.
@@ -4476,6 +4547,11 @@ This is an exception to the usual @code{printf} behavior.
@end table
@noindent
+The %b, %q, and %T directives all use the field width and precision
+arguments from the format specification and write that many bytes from
+(or use that wide a field for) the expanded argument, which usually
+contains more characters than the original.
+
Arguments to non-string format specifiers are treated as C 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
@@ -4510,12 +4586,6 @@ are used to split the line into words using the same rules the shell
uses for expansion (described above in @ref{Word Splitting}).
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 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}.
Options, if supplied, have the following meanings:
@@ -4584,7 +4654,7 @@ from regular files.
If @code{read} times out, @code{read} saves any partial input read into
the specified variable @var{name}.
If @var{timeout} is 0, @code{read} returns immediately, without trying to
-read and data. The exit status is 0 if input is available on
+read any data. The exit status is 0 if input is available on
the specified file descriptor, non-zero otherwise.
The exit status is greater than 128 if the timeout is exceeded.
@@ -4592,6 +4662,15 @@ The exit status is greater than 128 if the timeout is exceeded.
Read input from file descriptor @var{fd}.
@end table
+If no @var{name}s are supplied, the line read,
+without the ending delimiter but otherwise unmodified,
+is assigned to the
+variable @env{REPLY}.
+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}.
+
@item readarray
@btindex readarray
@example
@@ -4664,7 +4743,8 @@ It is a synonym for the @code{declare} builtin command.
@item ulimit
@btindex ulimit
@example
-ulimit [-HSabcdefiklmnpqrstuvxPT] [@var{limit}]
+ulimit [-HS] -a
+ulimit [-HS] [-bcdefiklmnpqrstuvxPRT] [@var{limit}]
@end example
@code{ulimit} provides control over the resources available to processes
@@ -4679,7 +4759,7 @@ Change and report the soft limit associated with a resource.
Change and report the hard limit associated with a resource.
@item -a
-All current limits are reported.
+All current limits are reported; no limits are set.
@item -b
The maximum socket buffer size.
@@ -4716,7 +4796,7 @@ allow this value to be set).
The pipe buffer size.
@item -q
-The maximum number of bytes in POSIX message queues.
+The maximum number of bytes in @sc{posix} message queues.
@item -r
The maximum real-time scheduling priority.
@@ -4740,6 +4820,9 @@ The maximum number of file locks.
@item -P
The maximum number of pseudoterminals.
+@item -R
+The maximum time a real-time process can run before blocking, in microseconds.
+
@item -T
The maximum number of threads.
@end table
@@ -4753,11 +4836,16 @@ 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 @option{-H} option is supplied.
+When more than one
+resource is specified, the limit name and unit, if appropriate,
+are printed before the value.
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;
+increments, except for
+@option{-t}, which is in seconds;
+@option{-R}, which is in microseconds;
+@option{-p}, which is in units of 512-byte blocks;
@option{-P},
@option{-T},
@option{-b},
@@ -5191,61 +5279,14 @@ This option is enabled by default, but only has an effect if command
history is enabled (@pxref{Bash History Facilities}).
@item compat31
-If set, Bash
-changes its behavior to that of version 3.1 with respect to quoted
-arguments to the conditional command's @samp{=~} operator
-and with respect to locale-specific
-string comparison when using the @code{[[}
-conditional command's @samp{<} and @samp{>} 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).
-
-@item compat32
-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)
-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
-changes its behavior to that of version 4.0 with respect to locale-specific
-string comparison when using the @code{[[}
-conditional command's @samp{<} and @samp{>} operators (see description
-of @code{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.
-
-@item compat41
-If set, Bash, when in @sc{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 @sc{posix} mode through version 4.1.
-The default Bash behavior remains as in previous versions.
-
-@item compat42
-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 compat44
-If set, Bash
-saves the positional parameters to BASH_ARGV and BASH_ARGC before they are
-used, regardless of whether or not extended debugging mode is enabled.
+@itemx compat32
+@itemx compat40
+@itemx compat41
+@itemx compat42
+@itemx compat43
+@itemx compat44
+These control aspects of the shell's compatibility mode
+(@pxref{Shell Compatibility Mode}).
@item complete_fullquote
If set, Bash
@@ -5294,7 +5335,9 @@ If set, aliases are expanded as described below under Aliases,
This option is enabled by default for interactive shells.
@item extdebug
-If set at shell invocation, arrange to execute the debugger profile
+If set at shell invocation,
+or in a shell startup file,
+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:
@@ -5495,12 +5538,6 @@ If set, the @code{echo} builtin expands backslash-escape sequences
by default.
@end table
-
-@noindent
-The return status when listing options is zero if all @var{optnames}
-are enabled, non-zero otherwise.
-When setting or unsetting options, the return status is zero unless an
-@var{optname} is not a valid shell option.
@end table
@node Special Builtins
@@ -5621,6 +5658,18 @@ variables for controlling the job control facilities
@vtable @code
+@item _
+@vindex $_
+($_, an underscore.)
+At shell startup, set to the 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 simple
+command executed in the foreground, 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.
+
@item BASH
The full pathname used to execute the current instance of Bash.
@@ -5639,7 +5688,7 @@ Expands to the process ID of the current Bash process.
This differs from @code{$$} under certain circumstances, such as subshells
that do not require Bash to be re-initialized.
Assignments to @env{BASHPID} have no effect.
-If @code{BASHPID}
+If @env{BASHPID}
is unset, it loses its special properties, even if it is
subsequently reset.
@@ -5650,7 +5699,7 @@ list of aliases as maintained by the @code{alias} 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 @code{BASH_ALIASES}
+If @env{BASH_ALIASES}
is unset, it loses its special properties, even if it is
subsequently reset.
@@ -5689,7 +5738,7 @@ script (identical to @code{$0}; @xref{Special Parameters},
for the description of special parameter 0).
Assignment to @code{BASH_ARGV0}
causes the value assigned to also be assigned to @code{$0}.
-If @code{BASH_ARGV0}
+If @env{BASH_ARGV0}
is unset, it loses its special properties, even if it is
subsequently reset.
@@ -5700,7 +5749,7 @@ hash table of commands as maintained by the @code{hash} builtin
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}
+If @env{BASH_CMDS}
is unset, it loses its special properties, even if it is
subsequently reset.
@@ -5708,21 +5757,26 @@ subsequently reset.
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.
+If @env{BASH_COMMAND}
+is unset, it loses its special properties, even if it is
+subsequently reset.
@item BASH_COMPAT
The value is used to set the shell's compatibility level.
-@xref{The Shopt Builtin}, for a description of the various compatibility
-levels and their effects.
+@xref{Shell Compatibility Mode}, 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 @code{BASH_COMPAT} is unset or set to the empty string, the compatibility
+If @env{BASH_COMPAT} is unset or set to the empty string, the compatibility
level is set to the default for the current version.
-If @code{BASH_COMPAT} is set to a value that is not one of the valid
+If @env{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 @code{shopt} builtin described above (for example,
-@var{compat42} means that 4.2 and 42 are valid values).
+The valid values correspond to the compatibility levels
+described below (@pxref{Shell Compatibility Mode}).
+For example, 4.2 and 42 are valid values that correspond
+to the @code{compat42} @code{shopt} option
+and set the compatibility level to 42.
The current version is also a valid value.
@item BASH_ENV
@@ -5755,7 +5809,6 @@ The element with index 0 is the portion of the string
matching the entire regular expression.
The element with index @var{n} is the portion of the
string matching the @var{n}th parenthesized subexpression.
-This variable is read-only.
@item BASH_SOURCE
An array variable whose members are the source filenames where the
@@ -5768,6 +5821,9 @@ The shell function @code{$@{FUNCNAME[$i]@}} is defined in the file
Incremented by one within each subshell or subshell environment when
the shell begins executing in that environment.
The initial value is 0.
+If @env{BASH_SUBSHELL}
+is unset, it loses its special properties, even if it is
+subsequently reset.
@item BASH_VERSINFO
A readonly array variable (@pxref{Arrays})
@@ -5867,7 +5923,8 @@ completion function.
@item COMP_WORDBREAKS
The set of characters that the Readline library treats as word
separators when performing word completion.
-If @code{COMP_WORDBREAKS} is unset, it loses its special properties,
+If @env{COMP_WORDBREAKS}
+is unset, it loses its special properties,
even if it is subsequently reset.
@item COMP_WORDS
@@ -5896,7 +5953,8 @@ Assigning to members of this array variable may be used to modify
directories already in the stack, but the @code{pushd} and @code{popd}
builtins must be used to add and remove directories.
Assignment to this variable will not change the current directory.
-If @env{DIRSTACK} is unset, it loses its special properties, even if
+If @env{DIRSTACK}
+is unset, it loses its special properties, even if
it is subsequently reset.
@item EMACS
@@ -5905,7 +5963,9 @@ starts with value @samp{t}, it assumes that the shell is running in an
Emacs shell buffer and disables line editing.
@item ENV
-Similar to @code{BASH_ENV}; used when the shell is invoked in
+Expanded and executed similarlty to @code{BASH_ENV}
+(@pxref{Bash Startup Files})
+when an interactive shell is invoked in
@sc{posix} Mode (@pxref{Bash POSIX Mode}).
@item EPOCHREALTIME
@@ -5914,7 +5974,8 @@ since the Unix Epoch as a floating point value with micro-second granularity
(see the documentation for the C library function @var{time} for the
definition of Epoch).
Assignments to @env{EPOCHREALTIME} are ignored.
-If @env{EPOCHREALTIME} is unset, it loses its special properties, even if
+If @env{EPOCHREALTIME}
+is unset, it loses its special properties, even if
it is subsequently reset.
@item EPOCHSECONDS
@@ -5922,7 +5983,8 @@ Each time this parameter is referenced, it expands to the number of seconds
since the Unix Epoch (see the documentation for the C library function
@var{time} for the definition of Epoch).
Assignments to @env{EPOCHSECONDS} are ignored.
-If @env{EPOCHSECONDS} is unset, it loses its special properties, even if
+If @env{EPOCHSECONDS}
+is unset, it loses its special properties, even if
it is subsequently reset.
@item EUID
@@ -5965,7 +6027,8 @@ 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.
-If @env{FUNCNAME} is unset, it loses its special properties, even if
+If @env{FUNCNAME}
+is unset, it loses its special properties, even if
it is subsequently reset.
This variable can be used with @code{BASH_LINENO} and @code{BASH_SOURCE}.
@@ -5994,7 +6057,8 @@ option.
An array variable containing the list of groups of which the current
user is a member.
Assignments to @env{GROUPS} have no effect.
-If @env{GROUPS} is unset, it loses its special properties, even if it is
+If @env{GROUPS}
+is unset, it loses its special properties, even if it is
subsequently reset.
@item histchars
@@ -6013,7 +6077,10 @@ parser to treat the rest of the line as a comment.
@item HISTCMD
The history number, or index in the history list, of the current
-command. If @env{HISTCMD} is unset, it loses its special properties,
+command.
+Assignments to @env{HISTCMD} are ignored.
+If @env{HISTCMD}
+is unset, it loses its special properties,
even if it is subsequently reset.
@item HISTCONTROL
@@ -6161,6 +6228,9 @@ formatting.
@item LINENO
The line number in the script or shell function currently executing.
+If @env{LINENO}
+is unset, it loses its special properties, even if it is
+subsequently reset.
@item LINES
Used by the @code{select} command to determine the column length
@@ -6220,8 +6290,11 @@ The process @sc{id} of the shell's parent process. This variable
is readonly.
@item PROMPT_COMMAND
-If set, the value is interpreted as a command to execute
-before the printing of each primary prompt (@env{$PS1}).
+If this variable is set, and is an array,
+the value of each set element is interpreted as a command to execute
+before printing the primary prompt (@env{$PS1}).
+If this is set but not an array variable,
+its value is used as a command to execute instead.
@item PROMPT_DIRTRIM
If set to a number greater than zero, the value is used as the number of
@@ -6230,7 +6303,7 @@ trailing directory components to retain when expanding the @code{\w} and
Characters removed are replaced with an ellipsis.
@item PS0
-The value of this parameter is expanded like @var{PS1}
+The value of this parameter is expanded like @env{PS1}
and displayed by interactive shells after reading a command
and before the command is executed.
@@ -6251,14 +6324,24 @@ The default is @samp{+ }.
The current working directory as set by the @code{cd} builtin.
@item RANDOM
-Each time this parameter is referenced, a random integer
-between 0 and 32767 is generated. Assigning a value to this
+Each time this parameter is referenced, it expands to a random integer
+between 0 and 32767. Assigning a value to this
variable seeds the random number generator.
+If @env{RANDOM}
+is unset, it loses its special properties, even if it is
+subsequently reset.
@item READLINE_LINE
The contents of the Readline line buffer, for use
with @samp{bind -x} (@pxref{Bash Builtins}).
+@item READLINE_MARK
+The position of the @var{mark} (saved insertion point) in the
+Readline line buffer, for use
+with @samp{bind -x} (@pxref{Bash Builtins}).
+The characters between the insertion point and the mark are often
+called the @var{region}.
+
@item READLINE_POINT
The position of the insertion point in the Readline line buffer, for use
with @samp{bind -x} (@pxref{Bash Builtins}).
@@ -6272,9 +6355,14 @@ shell was started. Assignment to this variable resets
the count to the value assigned, and the expanded value
becomes the value assigned plus the number of seconds
since the assignment.
+The number of seconds at shell invocation and the current time is always
+determined by querying the system clock.
+If @env{SECONDS}
+is unset, it loses its special properties,
+even if it is subsequently reset.
@item SHELL
-The full pathname to the shell is kept in this environment variable.
+This environment variable expands to the full pathname to the shell.
If it is not set when the shell starts,
Bash assigns to it the full pathname of the current user's login shell.
@@ -6292,6 +6380,17 @@ reading any startup files. This variable is readonly.
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.
+@item SRANDOM
+This variable expands to a 32-bit pseudo-random number each time it is
+referenced. The random number generator is not linear on systems that
+support @file{/dev/urandom} or @code{arc4random}, so each returned number
+has no relationship to the numbers preceding it.
+The random number generator cannot be seeded, so assignments to this
+variable have no effect.
+If @env{SRANDOM}
+is unset, it loses its special properties,
+even if it is subsequently reset.
+
@item TIMEFORMAT
The value of this parameter is used as a format string specifying
how the timing information for pipelines prefixed with the @code{time}
@@ -6381,6 +6480,8 @@ This chapter describes features unique to Bash.
* The Restricted Shell:: A more controlled mode of shell execution.
* Bash POSIX Mode:: Making Bash behave more closely to what
the POSIX standard specifies.
+* Shell Compatibility Mode:: How Bash supports behavior that was present
+ in earlier versions and has changed.
@end menu
@node Invoking Bash
@@ -6743,8 +6844,8 @@ See @ref{Controlling the Prompt}, for a complete list of prompt
string escape sequences.
@item
-Bash executes the value of the @env{PROMPT_COMMAND} variable as a command
-before printing the primary prompt, @env{$PS1}
+Bash executes the values of the set elements of the @env{PROMPT_COMMANDS}
+array variable as commands before printing the primary prompt, @env{$PS1}
(@pxref{Bash Variables}).
@item
@@ -7070,6 +7171,8 @@ A null value evaluates to 0.
A shell variable need not have its @var{integer} attribute turned on
to be used in an expression.
+Integer constants follow the C language definition, without suffixes or
+character constants.
Constants with a leading 0 are interpreted as octal numbers.
A leading @samp{0x} or @samp{0X} denotes hexadecimal. Otherwise,
numbers take the form [@var{base}@code{#}]@var{n}, where the optional @var{base}
@@ -7077,6 +7180,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},
+if a non-digit is required,
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
@@ -7187,7 +7291,7 @@ is also accepted; the @var{subscript} is ignored.
@noindent
Associative arrays are created using
@example
-declare -A @var{name}.
+declare -A @var{name}
@end example
Attributes may be
@@ -7201,14 +7305,27 @@ Arrays are assigned to using compound assignments of the form
@end example
@noindent
where each
-@var{value} is of the form @code{[@var{subscript}]=}@var{string}.
+@var{value} may be of the form @code{[@var{subscript}]=}@var{string}.
Indexed array assignments do not require anything but @var{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.
+Each @var{value} in the list undergoes all the shell expansions
+described above (@pxref{Shell Expansions}).
+
+When assigning to an associative array, the words in a compound assignment
+may be either assignment statements, for which the subscript is required,
+or a list of words that is interpreted as a sequence of alternating keys
+and values:
+@var{name}=(@var{key1} @var{value1} @var{key2} @var{value2} @dots{} ).
+These are treated identically to
+@var{name}=( [@var{key1}]=@var{value1} [@var{key2}]=@var{value2} @dots{} ).
+The first word in the list determines how the remaining words
+are interpreted; all assignments in a list must be of the same type.
+When using key/value pairs, the keys may not be missing or empty;
+a final missing value is treated like the empty string.
This syntax is also accepted by the @code{declare}
builtin. Individual array elements may be assigned to using the
@@ -7405,10 +7522,11 @@ to the @code{cd} builtin.
@section Controlling the Prompt
@cindex prompting
-The value of the variable @env{PROMPT_COMMAND} is examined just before
-Bash prints each primary prompt. If @env{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.
+Bash examines the value of the array variable @env{PROMPT_COMMANDS} just before
+printing each primary prompt.
+If any elements in @env{PROMPT_COMMANDS} are set and non-null, Bash
+executes each value, in numeric order,
+just as if it had been typed on the command line.
In addition, the following table describes the special characters which
can appear in the prompt variables @env{PS0}, @env{PS1}, @env{PS2}, and
@@ -7487,6 +7605,9 @@ After the string is decoded, it is expanded via
parameter expansion, command substitution, arithmetic
expansion, and quote removal, subject to the value of the
@code{promptvars} shell option (@pxref{The Shopt Builtin}).
+This can have unwanted side effects if escaped portions of the string
+appear within command substitution or contain characters special to
+word expansion.
@node The Restricted Shell
@section The Restricted Shell
@@ -7507,6 +7628,7 @@ with the exception that the following are disallowed or not performed:
Changing directories with the @code{cd} builtin.
@item
Setting or unsetting the values of the @env{SHELL}, @env{PATH},
+@env{HISTFILE},
@env{ENV}, or @env{BASH_ENV} variables.
@item
Specifying command names containing slashes.
@@ -7514,6 +7636,9 @@ Specifying command names containing slashes.
Specifying a filename containing a slash as an argument to the @code{.}
builtin command.
@item
+Specifying a filename containing a slash as an argument to the @code{history}
+builtin command.
+@item
Specifying a filename containing a slash as an argument to the @option{-p}
option to the @code{hash} builtin command.
@item
@@ -7542,6 +7667,19 @@ When a command that is found to be a shell script is executed
(@pxref{Shell Scripts}), @code{rbash} turns off any restrictions in
the shell spawned to execute the script.
+The restricted shell mode is only one component of a useful restricted
+environment. It should be accompanied by setting @env{PATH} to a value
+that allows execution of only a few verified commands (commands that
+allow shell escapes are particularly vulnerable), leaving the user
+in a non-writable directory other than his home directory after login,
+not allowing the restricted shell to execute shell scripts, and cleaning
+the environment of variables that cause some commands to modify their
+behavior (e.g., @env{VISUAL} or @env{PAGER}).
+
+Modern systems provide more secure ways to implement a restricted environment,
+such as @code{jails}, @code{zones}, or @code{containers}.
+
+
@node Bash POSIX Mode
@section Bash POSIX Mode
@cindex POSIX Mode
@@ -7566,6 +7704,11 @@ When a command in the hash table no longer exists, Bash will re-search
@samp{shopt -s checkhash}.
@item
+Bash will not insert a command without the execute bit set into the
+command hash table, even if it returns it as a (last-ditch) result
+from a @env{$PATH} search.
+
+@item
The message printed by the job control code and builtins when a job
exits with a non-zero status is `Done(status)'.
@@ -7647,6 +7790,13 @@ 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{-}.
+@ignore
+@item
+When parsing @code{$()} command substitutions containing here-documents,
+the parser does not allow a here-document to be delimited by the closing
+right parenthesis. The newline after the here-document delimiter is required.
+@end ignore
+
@item
The @samp{!} character does not introduce history expansion within a
double-quoted string, even if the @code{histexpand} option is enabled.
@@ -7692,9 +7842,6 @@ with the @code{.} or @code{source} builtins, or in a string processed by
the @code{eval} builtin.
@item
-Process substitution is not available.
-
-@item
While variable indirection is available, it may not be applied to the
@samp{#} and @samp{?} special parameters.
@@ -7708,11 +7855,6 @@ Assignment statements preceding @sc{posix} special builtins
persist in the shell environment after the builtin completes.
@item
-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
@@ -7748,6 +7890,10 @@ signal to the original disposition, they should use @samp{-} as the
first argument.
@item
+@code{trap -p} displays signals whose dispositions are set to SIG_DFL and
+those that were ignored when the shell started.
+
+@item
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}.
@@ -7861,6 +8007,175 @@ Bash can be configured to be @sc{posix}-conformant by default, by specifying
the @option{--enable-strict-posix-default} to @code{configure} when building
(@pxref{Optional Features}).
+@node Shell Compatibility Mode
+@section Shell Compatibility Mode
+@cindex Compatibility Level
+@cindex Compatibility Mode
+
+Bash-4.0 introduced the concept of a `shell compatibility level', specified
+as a set of options to the shopt builtin
+(@code{compat31},
+@code{compat32},
+@code{compat40},
+@code{compat41},
+and so on).
+There is only one current
+compatibility level -- each option is mutually exclusive.
+The compatibility level is intended to allow users to select behavior
+from previous versions that is incompatible with newer versions
+while they migrate scripts to use current features and
+behavior. It's intended to be a temporary solution.
+
+This section does not mention behavior that is standard for a particular
+version (e.g., setting @code{compat32} means that quoting the rhs of the regexp
+matching operator quotes special regexp characters in the word, which is
+default behavior in bash-3.2 and above).
+
+If a user enables, say, @code{compat32}, it may affect the behavior of other
+compatibility levels up to and including the current compatibility level.
+The idea is that each compatibility level controls behavior that changed
+in that version of Bash,
+but that behavior may have been present in earlier versions.
+For instance, the change to use locale-based comparisons with the @code{[[}
+command came in bash-4.1, and earlier versions used ASCII-based comparisons,
+so enabling @code{compat32} will enable ASCII-based comparisons as well.
+That granularity may not be sufficient for
+all uses, and as a result users should employ compatibility levels carefully.
+Read the documentation for a particular feature to find out the
+current behavior.
+
+Bash-4.3 introduced a new shell variable: @env{BASH_COMPAT}.
+The value assigned
+to this variable (a decimal version number like 4.2, or an integer
+corresponding to the @code{compat}@var{NN} option, like 42) determines the
+compatibility level.
+
+Starting with bash-4.4, Bash has begun deprecating older compatibility
+levels.
+Eventually, the options will be removed in favor of @env{BASH_COMPAT}.
+
+Bash-5.0 is the final version for which there will be an individual shopt
+option for the previous version. Users should use @env{BASH_COMPAT}
+on bash-5.0 and later versions.
+
+The following table describes the behavior changes controlled by each
+compatibility level setting.
+The @code{compat}@var{NN} tag is used as shorthand for setting the
+compatibility level
+to @var{NN} using one of the following mechanisms.
+For versions prior to bash-5.0, the compatibility level may be set using
+the corresponding @code{compat}@var{NN} shopt option.
+For bash-4.3 and later versions, the @env{BASH_COMPAT} variable is preferred,
+and it is required for bash-5.1 and later versions.
+
+@table @code
+@item compat31
+@itemize @bullet
+@item
+quoting the rhs of the @code{[[} command's regexp matching operator (=~)
+has no special effect
+@end itemize
+
+@item compat32
+@itemize @bullet
+@item
+interrupting a command list such as "a ; b ; c" causes the execution
+of the next command in the list (in bash-4.0 and later versions,
+the shell acts as if it received the interrupt, so
+interrupting one command in a list aborts the execution of the
+entire list)
+@end itemize
+
+@item compat40
+@itemize @bullet
+@item
+the @samp{<} and @samp{>} operators to the @code{[[} command do not
+consider the current locale when comparing strings; they use ASCII
+ordering.
+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).
+@end itemize
+
+@item compat41
+@itemize @bullet
+@item
+in posix mode, @code{time} may be followed by options and still be
+recognized as a reserved word (this is @sc{posix} interpretation 267)
+@item
+in posix mode, the parser requires that an even number of single
+quotes occur in the @var{word} portion of a double-quoted $@{@dots{}@}
+parameter expansion and treats them specially, so that characters within
+the single quotes are considered quoted
+(this is @sc{posix} interpretation 221)
+@end itemize
+
+@item compat42
+@itemize @bullet
+@item
+the replacement string in double-quoted pattern substitution does not
+undergo quote removal, as it does in versions after bash-4.2
+@item
+in posix mode, single quotes are considered special when expanding
+the @var{word} portion of a double-quoted $@{@dots{}@} parameter expansion
+and can be used to quote a closing brace or other special character
+(this is part of @sc{posix} interpretation 221);
+in later versions, single quotes
+are not special within double-quoted word expansions
+@end itemize
+
+@item compat43
+@itemize @bullet
+@item
+the shell does not print a warning message if an attempt is made to
+use a quoted compound assignment as an argument to declare
+(declare -a foo='(1 2)'). Later versions warn that this usage is
+deprecated
+@item
+word expansion errors are considered non-fatal errors that cause the
+current command to fail, even in posix mode
+(the default behavior is to make them fatal errors that cause the shell
+to exit)
+@item
+when executing a shell function, the loop state (while/until/etc.)
+is not reset, so @code{break} or @code{continue} in that function will break
+or continue loops in the calling context. Bash-4.4 and later reset
+the loop state to prevent this
+@end itemize
+
+@item compat44
+@itemize @bullet
+@item
+the shell sets up the values used by @env{BASH_ARGV} and @env{BASH_ARGC}
+so they can expand to the shell's positional parameters even if extended
+debugging mode is not enabled
+@item
+a subshell inherits loops from its parent context, so @code{break}
+or @code{continue} will cause the subshell to exit.
+Bash-5.0 and later reset the loop state to prevent the exit
+@item
+variable assignments preceding builtins like @code{export} and @code{readonly}
+that set attributes continue to affect variables with the same
+name in the calling environment even if the shell is not in posix
+mode
+@end itemize
+
+@item compat50 (set using BASH_COMPAT)
+@itemize @bullet
+@item
+Bash-5.1 changed the way @code{$RANDOM} is generated to introduce slightly
+more randomness. If the shell compatibility level is set to 50 or
+lower, it reverts to the method from bash-5.0 and previous versions,
+so seeding the random number generator by assigning a value to
+@env{RANDOM} will produce the same sequence as in bash-5.0
+@item
+If the command hash table is empty, Bash versions prior to bash-5.1
+printed an informational message to that effect, even when producing
+output that can be reused as input. Bash-5.1 suppresses that message
+when the @option{-l} option is supplied.
+@end itemize
+@end table
+
@node Job Control
@chapter Job Control
@@ -7953,7 +8268,8 @@ previous job with a @samp{-}.
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, @samp{%ce} refers
-to a stopped @code{ce} job. Using @samp{%?ce}, on the
+to a stopped job whose command name begins with @samp{ce}.
+Using @samp{%?ce}, on the
other hand, refers to any job containing the string @samp{ce} in
its command line. If the prefix or substring matches more than one job,
Bash reports an error.
@@ -7982,7 +8298,7 @@ Bash does not print another warning, and any stopped jobs are terminated.
When the shell is waiting for a job or process using the @code{wait}
builtin, and job control is enabled, @code{wait} will return when the
-job changes state. The @option{-f} option will force @code{wait} to wait
+job changes state. The @option{-f} option causes @code{wait} to wait
until the job or process terminates before returning.
@node Job Control Builtins
@@ -8081,20 +8397,34 @@ or non-zero if an error occurs or an invalid option is encountered.
@item wait
@btindex wait
@example
-wait [-fn] [@var{jobspec} or @var{pid} @dots{}]
+wait [-fn] [-p @var{varname}] [@var{jobspec} or @var{pid} @dots{}]
@end example
Wait until the child process specified by each process @sc{id} @var{pid}
or job specification @var{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 @option{-n} option is supplied, @code{wait} waits for any job to
-terminate and returns its exit status.
-If the @option{-f} option is supplied, and job control is enabled,
-@code{wait} forces each @var{pid} or @var{jobspec} to terminate before
-returning its status, intead of returning when it changes status.
+If no arguments are given,
+@code{wait} waits for all running background jobs and
+the last-executed process substitution, if its process id is the same as
+@var{$!},
+and the return status is zero.
+If the @option{-n} option is supplied, @code{wait} waits for a single job
+from the list of @var{pids} or @var{jobspecs} or, if no arguments are
+supplied, any job,
+to complete and returns its exit status.
+If none of the supplied arguments is a child of the shell, or if no arguments
+are supplied and the shell has no unwaited-for children, the exit status
+is 127.
+If the @option{-p} option is supplied, the process or job identifier of the job
+for which the exit status is returned is assigned to the variable
+@var{varname} named by the option argument.
+The variable will be unset initially, before any assignment.
+This is useful only when the @option{-n} option is supplied.
+Supplying the @option{-f} option, when job control is enabled,
+forces @code{wait} to wait for each @var{pid} or @var{jobspec} to
+terminate before returning its status, intead of returning when it changes
+status.
If neither @var{jobspec} nor @var{pid} specifies an active child process
of the shell, the return status is 127.
diff --git a/doc/builtins.0 b/doc/builtins.0
index 76f08b77..614524eb 100644
--- a/doc/builtins.0
+++ b/doc/builtins.0
@@ -4,8 +4,8 @@ BASH_BUILTINS(1) General Commands Manual BASH_BUILTINS(1)
NNAAMMEE
bash, :, ., [, alias, bg, bind, break, builtin, caller, cd, command,
- compgen, complete, compopt, continue, declare, dirs, disown, echo,
- enable, eval, exec, exit, export, false, fc, fg, getopts, hash, help,
+ compgen, complete, compopt, continue, declare, dirs, disown, echo, en-
+ able, eval, exec, exit, export, false, fc, fg, getopts, hash, help,
history, jobs, kill, let, local, logout, mapfile, popd, printf, pushd,
pwd, read, readonly, return, set, shift, shopt, source, suspend, test,
times, trap, true, type, typeset, ulimit, umask, unalias, unset, wait -
@@ -28,8 +28,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
.. _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
ssoouurrccee _f_i_l_e_n_a_m_e [_a_r_g_u_m_e_n_t_s]
- Read and execute commands from _f_i_l_e_n_a_m_e in the current shell
- environment and return the exit status of the last command exe-
+ Read and execute commands from _f_i_l_e_n_a_m_e in the current shell en-
+ vironment and return the exit status of the last command exe-
cuted from _f_i_l_e_n_a_m_e. If _f_i_l_e_n_a_m_e does not contain a slash,
filenames in PPAATTHH are used to find the directory containing
_f_i_l_e_n_a_m_e. The file searched for in PPAATTHH need not be executable.
@@ -37,15 +37,15 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
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
+ tional parameters when _f_i_l_e_n_a_m_e is executed. Otherwise the po-
+ sitional parameters are unchanged. If the --TT option is enabled,
+ ssoouurrccee inherits any trap on DDEEBBUUGG; if it is not, any DDEEBBUUGG trap
+ string is saved and restored around the call to ssoouurrccee, and
+ ssoouurrccee unsets the DDEEBBUUGG trap while it executes. If --TT is not
+ set, and the sourced file changes the DDEEBBUUGG trap, the new value
+ is retained when ssoouurrccee completes. The return status is the
+ status of the last command exited within the script (0 if no
+ commands are executed), and false if _f_i_l_e_n_a_m_e is not found or
cannot be read.
aalliiaass [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
@@ -55,8 +55,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
_v_a_l_u_e is given. A trailing space in _v_a_l_u_e causes the next word
to be checked for alias substitution when the alias is expanded.
For each _n_a_m_e in the argument list for which no _v_a_l_u_e is sup-
- plied, the name and value of the alias is printed. AAlliiaass
- returns true unless a _n_a_m_e is given for which no alias has been
+ plied, the name and value of the alias is printed. AAlliiaass re-
+ turns true unless a _n_a_m_e is given for which no alias has been
defined.
bbgg [_j_o_b_s_p_e_c ...]
@@ -75,10 +75,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
bbiinndd [--mm _k_e_y_m_a_p] _k_e_y_s_e_q:_r_e_a_d_l_i_n_e_-_c_o_m_m_a_n_d
Display current rreeaaddlliinnee key and function bindings, bind a key
sequence to a rreeaaddlliinnee function or macro, or set a rreeaaddlliinnee
- variable. Each non-option argument is a command as it would
- appear in _._i_n_p_u_t_r_c, but each binding or command must be passed
- as a separate argument; e.g., '"\C-x\C-r": re-read-init-file'.
- Options, if supplied, have the following meanings:
+ variable. Each non-option argument is a command as it would ap-
+ pear in _._i_n_p_u_t_r_c, but each binding or command must be passed as
+ a separate argument; e.g., '"\C-x\C-r": re-read-init-file'. Op-
+ tions, if supplied, have the following meanings:
--mm _k_e_y_m_a_p
Use _k_e_y_m_a_p as the keymap to be affected by the subsequent
bindings. Acceptable _k_e_y_m_a_p names are _e_m_a_c_s_, _e_m_a_c_s_-_s_t_a_n_-
@@ -107,112 +107,114 @@ 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
+ Cause _s_h_e_l_l_-_c_o_m_m_a_n_d to be executed whenever _k_e_y_s_e_q is en-
+ tered. When _s_h_e_l_l_-_c_o_m_m_a_n_d is executed, the shell sets
the RREEAADDLLIINNEE__LLIINNEE variable to the contents of the rreeaadd--
- lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT variable to the
- current location of the insertion point. If the executed
- command changes the value of RREEAADDLLIINNEE__LLIINNEE or RREEAADD--
- LLIINNEE__PPOOIINNTT, those new values will be reflected in the
- editing state.
- --XX List all key sequences bound to shell commands and the
- associated commands in a format that can be reused as
- input.
-
- The return value is 0 unless an unrecognized option is given or
+ lliinnee line buffer and the RREEAADDLLIINNEE__PPOOIINNTT and RREEAADDLLIINNEE__MMAARRKK
+ variables to the current location of the insertion point
+ and the saved insertion point (the mark), respectively.
+ If the executed command changes the value of any of RREEAADD--
+ LLIINNEE__LLIINNEE, RREEAADDLLIINNEE__PPOOIINNTT, or RREEAADDLLIINNEE__MMAARRKK, those new
+ values will be reflected in the editing state.
+ --XX List all key sequences bound to shell commands and the
+ associated commands in a format that can be reused as in-
+ put.
+
+ 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 ex-
+ ited. 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 di-
+ rectory names in CCDDPPAATTHH are separated by a colon (:). A null
+ directory name in CCDDPPAATTHH is the same as the current directory,
i.e., ``..''. If _d_i_r begins with a slash (/), then CCDDPPAATTHH is not
- used. The --PP option causes ccdd to use the physical directory
- structure by resolving symbolic links while traversing _d_i_r and
+ used. The --PP option causes ccdd to use the physical directory
+ structure by resolving symbolic links while traversing _d_i_r and
before processing instances of _._. in _d_i_r (see also the --PP option
to the sseett builtin command); the --LL option forces symbolic links
- to be followed by resolving the link after processing instances
+ to be followed by resolving the link after processing instances
of _._. in _d_i_r. If _._. appears in _d_i_r, it is processed by removing
- the immediately previous pathname component from _d_i_r, back to a
- slash or the beginning of _d_i_r. If the --ee option is supplied
- with --PP, and the current working directory cannot be success-
- fully determined after a successful directory change, ccdd will
- return an unsuccessful status. On systems that support it, the
- --@@ option presents the extended attributes associated with a
- file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
+ the immediately previous pathname component from _d_i_r, back to a
+ slash or the beginning of _d_i_r. If the --ee option is supplied
+ with --PP, and the current working directory cannot be success-
+ fully determined after a successful directory change, ccdd will
+ return an unsuccessful status. On systems that support it, the
+ --@@ option presents the extended attributes associated with a
+ file as a directory. An argument of -- is converted to $$OOLLDDPPWWDD
before the directory change is attempted. If a non-empty direc-
- tory name from CCDDPPAATTHH is used, or if -- is the first argument,
+ tory name from CCDDPPAATTHH is used, or if -- is the first argument,
and the directory change is successful, the absolute pathname of
- the new working directory is written to the standard output.
- The return value is true if the directory was successfully
+ the new working directory is written to the standard output.
+ The return value is true if the directory was successfully
changed; false otherwise.
ccoommmmaanndd [--ppVVvv] _c_o_m_m_a_n_d [_a_r_g ...]
- Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
+ Run _c_o_m_m_a_n_d with _a_r_g_s suppressing the normal shell function
lookup. Only builtin commands or commands found in the PPAATTHH are
- executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
- performed using a default value for PPAATTHH that is guaranteed to
- find all of the standard utilities. If either the --VV or --vv
- 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
+ executed. If the --pp option is given, the search for _c_o_m_m_a_n_d is
+ performed using a default value for PPAATTHH that is guaranteed to
+ find all of the standard utilities. If either the --VV or --vv op-
+ tion is supplied, a description of _c_o_m_m_a_n_d is printed. The --vv
+ option causes a single word indicating the command or filename
used to invoke _c_o_m_m_a_n_d to be displayed; the --VV option produces a
- more verbose description. If the --VV or --vv option is supplied,
- the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
+ more verbose description. If the --VV or --vv option is supplied,
+ the exit status is 0 if _c_o_m_m_a_n_d was found, and 1 if not. If
neither option is supplied and an error occurred or _c_o_m_m_a_n_d can-
- not be found, the exit status is 127. Otherwise, the exit sta-
+ not be found, the exit status is 127. Otherwise, the exit sta-
tus of the ccoommmmaanndd builtin is the exit status of _c_o_m_m_a_n_d.
ccoommppggeenn [_o_p_t_i_o_n] [_w_o_r_d]
- Generate possible completion matches for _w_o_r_d according to the
- _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
- builtin with the exception of --pp and --rr, and write the matches
- to the standard output. When using the --FF or --CC options, the
- various shell variables set by the programmable completion
- facilities, while available, will not have useful values.
+ Generate possible completion matches for _w_o_r_d according to the
+ _o_p_t_i_o_ns, which may be any option accepted by the ccoommpplleettee
+ builtin with the exception of --pp and --rr, and write the matches
+ to the standard output. When using the --FF or --CC options, the
+ various shell variables set by the programmable completion fa-
+ cilities, while available, will not have useful values.
The matches will be generated in the same way as if the program-
mable completion code had generated them directly from a comple-
- tion specification with the same flags. If _w_o_r_d is specified,
+ tion specification with the same flags. If _w_o_r_d is specified,
only those completions matching _w_o_r_d will be displayed.
- The return value is true unless an invalid option is supplied,
+ The return value is true unless an invalid option is supplied,
or no matches were generated.
- ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
- _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 [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_-
+ _p_a_t] [--WW _w_o_r_d_l_i_s_t]
+ [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_-
+ _f_i_x] _n_a_m_e [_n_a_m_e _._._.]
ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...]
Specify how arguments to each _n_a_m_e should be completed. If the
--pp option is supplied, or if no options are supplied, existing
@@ -226,7 +228,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
indicates that other supplied options and actions should apply
to ``empty'' command completion; that is, completion attempted
on a blank line. The --II option indicates that other supplied
- options and actions should apply to completion on the inital
+ options and actions should apply to completion on the initial
non-assignment word on the line, or after a command delimiter
such as ;; or ||, which is usually command name completion. If
multiple options are supplied, the --DD option takes precedence
@@ -266,14 +268,14 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
default).
nnoossoorrtt Tell readline not to sort the list of possible
completions alphabetically.
- nnoossppaaccee Tell readline not to append a space (the
- default) to words completed at the end of the
+ nnoossppaaccee Tell readline not to append a space (the de-
+ fault) to words completed at the end of the
line.
pplluussddiirrss
After any matches defined by the compspec are
- generated, directory name completion is
- attempted and any matches are added to the
- results of the other actions.
+ generated, directory name completion is at-
+ tempted and any matches are added to the results
+ of the other actions.
--AA _a_c_t_i_o_n
The _a_c_t_i_o_n may be one of the following to generate a
list of possible completions:
@@ -322,13 +324,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
--FF _f_u_n_c_t_i_o_n
The shell function _f_u_n_c_t_i_o_n is executed in the current
shell environment. When the function is executed, the
- first argument ($$11) is the name of the command whose
- arguments are being completed, the second argument ($$22)
- is the word being completed, and the third argument ($$33)
- is the word preceding the word being completed on the
- current command line. When it finishes, the possible
- completions are retrieved from the value of the CCOOMMPPRREE--
- PPLLYY array variable.
+ first argument ($$11) is the name of the command whose ar-
+ guments are being completed, the second argument ($$22) is
+ the word being completed, and the third argument ($$33) is
+ the word preceding the word being completed on the cur-
+ rent command line. When it finishes, the possible com-
+ pletions are retrieved from the value of the CCOOMMPPRREEPPLLYY
+ array variable.
--GG _g_l_o_b_p_a_t
The pathname expansion pattern _g_l_o_b_p_a_t is expanded to
generate the possible completions.
@@ -361,19 +363,19 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
adding a completion specification.
ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e]
- Modify completion options for each _n_a_m_e according to the
- _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es
- are supplied. If no _o_p_t_i_o_ns are given, display the completion
- options for each _n_a_m_e or the current completion. The possible
- values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin
- described above. The --DD option indicates that other supplied
- options should apply to the ``default'' command completion; that
+ Modify completion options for each _n_a_m_e according to the _o_p_-
+ _t_i_o_ns, or for the currently-executing completion if no _n_a_m_es are
+ supplied. If no _o_p_t_i_o_ns are given, display the completion op-
+ tions for each _n_a_m_e or the current completion. The possible
+ values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin de-
+ scribed above. The --DD option indicates that other supplied op-
+ tions should apply to the ``default'' command completion; that
is, completion attempted on a command for which no completion
has previously been defined. The --EE option indicates that other
supplied options should apply to ``empty'' command completion;
that is, completion attempted on a blank line. The --II option
indicates that other supplied options should apply to completion
- on the inital non-assignment word on the line, or after a com-
+ on the initial non-assignment word on the line, or after a com-
mand delimiter such as ;; or ||, which is usually command name
completion.
@@ -384,13 +386,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ccoonnttiinnuuee [_n]
Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or
sseelleecctt loop. If _n is specified, resume at the _nth enclosing
- loop. _n must be >= 1. If _n is greater than the number of
- enclosing loops, the last enclosing loop (the ``top-level''
- loop) is resumed. The return value is 0 unless _n is not greater
- than or equal to 1.
+ loop. _n must be >= 1. If _n is greater than the number of en-
+ closing loops, the last enclosing loop (the ``top-level'' loop)
+ is resumed. The return value is 0 unless _n is not greater than
+ or equal to 1.
- ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
- ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
+ ddeeccllaarree [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
+ ttyyppeesseett [--aaAAffFFggiiIIllnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...]
Declare variables and/or give them attributes. If no _n_a_m_es are
given then display the values of variables. The --pp option will
display the attributes and values of each _n_a_m_e. When --pp is used
@@ -398,18 +400,22 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
are ignored. When --pp is supplied without _n_a_m_e arguments, it
will display the attributes and values of all variables having
the attributes specified by the additional options. If no other
- options are supplied with --pp, ddeeccllaarree will display the
- attributes and values of all shell variables. The --ff option
- will restrict the display to shell functions. The --FF option
- inhibits the display of function definitions; only the function
- name and attributes are printed. If the eexxttddeebbuugg shell option
- is enabled using sshhoopptt, the source file name and line number
- 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:
+ options are supplied with --pp, ddeeccllaarree will display the at-
+ tributes and values of all shell variables. The --ff option will
+ restrict the display to shell functions. The --FF option inhibits
+ the display of function definitions; only the function name and
+ attributes are printed. If the eexxttddeebbuugg shell option is enabled
+ using sshhoopptt, the source file name and line number where each
+ _n_a_m_e is defined are displayed as well. The --FF option implies
+ --ff. The --gg option forces variables to be created or modified at
+ the global scope, even when ddeeccllaarree is executed in a shell func-
+ tion. It is ignored in all other cases. The --II option causes
+ local variables to inherit the attributes (except the _n_a_m_e_r_e_f
+ attribute) and value of any existing variable with the same _n_a_m_e
+ at a surrounding scope. If there is no existing variable, the
+ local variable is initially unset. The following options can be
+ used to restrict output to variables with the specified attri-
+ bute or to give variables attributes:
--aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss
above).
--AA Each _n_a_m_e is an associative array variable (see AArrrraayyss
@@ -430,82 +436,81 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
attribute cannot be applied to array variables.
--rr Make _n_a_m_es readonly. These names cannot then be assigned
values by subsequent assignment statements or unset.
- --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions
- inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling
- shell. The trace attribute has no special meaning for
- variables.
- --uu When the variable is assigned a value, all lower-case
- characters are converted to upper-case. The lower-case
+ --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions in-
+ herit the DDEEBBUUGG and RREETTUURRNN traps from the calling shell.
+ The trace attribute has no special meaning for variables.
+ --uu When the variable is assigned a value, all lower-case
+ characters are converted to upper-case. The lower-case
attribute is disabled.
- --xx Mark _n_a_m_es for export to subsequent commands via the
- environment.
+ --xx Mark _n_a_m_es for export to subsequent commands via the en-
+ vironment.
- Using `+' instead of `-' turns off the attribute instead, with
- the exceptions that ++aa and ++AA may not be used to destroy array
- variables and ++rr will not remove the readonly attribute. When
+ Using `+' instead of `-' turns off the attribute instead, with
+ the exceptions that ++aa and ++AA may not be used to destroy array
+ variables and ++rr will not remove the readonly attribute. When
used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as
- with the llooccaall command, unless the --gg option is supplied. If a
- variable name is followed by =_v_a_l_u_e, the value of the variable
- is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
- ment syntax to create array variables, additional attributes do
- not take effect until subsequent assignments. The return value
+ with the llooccaall command, unless the --gg option is supplied. If a
+ variable name is followed by =_v_a_l_u_e, the value of the variable
+ is set to _v_a_l_u_e. When using --aa or --AA and the compound assign-
+ ment syntax to create array variables, additional attributes do
+ not take effect until subsequent assignments. The return value
is 0 unless an invalid option is encountered, an attempt is made
to define a function using ``-f foo=bar'', an attempt is made to
- assign a value to a readonly variable, an attempt is made to
- assign a value to an array variable without using the compound
- assignment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
- valid shell variable name, an attempt is made to turn off read-
- only status for a readonly variable, an attempt is made to turn
+ assign a value to a readonly variable, an attempt is made to as-
+ sign a value to an array variable without using the compound as-
+ signment syntax (see AArrrraayyss above), one of the _n_a_m_e_s is not a
+ valid shell variable name, an attempt is made to turn off read-
+ only status for a readonly variable, an attempt is made to turn
off array status for an array variable, or an attempt is made to
display a non-existent function with --ff.
ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]]
- Without options, displays the list of currently remembered
- directories. The default display is on a single line with
- directory names separated by spaces. Directories are added to
- the list with the ppuusshhdd command; the ppooppdd command removes
- entries from the list. The current directory is always the
- 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
+ Without options, displays the list of currently remembered di-
+ rectories. The default display is on a single line with direc-
+ tory names separated by spaces. Directories are added to the
+ list with the ppuusshhdd command; the ppooppdd command removes entries
+ from the list. The current directory is always the first direc-
+ tory in the stack.
+ --cc Clears the directory stack by deleting all of the en-
+ tries.
+ --ll Produces a listing using full pathnames; the default
listing format uses a tilde to denote the home directory.
--pp Print the directory stack with one entry per line.
- --vv Print the directory stack with one entry per line, pre-
+ --vv Print the directory stack with one entry per line, pre-
fixing each entry with its index in the stack.
++_n Displays the _nth entry counting from the left of the list
shown by ddiirrss when invoked without options, starting with
zero.
- --_n Displays the _nth entry counting from the right of the
+ --_n Displays the _nth entry counting from the right of the
list shown by ddiirrss when invoked without options, starting
with zero.
- The return value is 0 unless an invalid option is supplied or _n
+ The return value is 0 unless an invalid option is supplied or _n
indexes beyond the end of the directory stack.
ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ]
- Without options, remove each _j_o_b_s_p_e_c from the table of active
- jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
- option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
- is given, each _j_o_b_s_p_e_c is not removed from the table, but is
- marked so that SSIIGGHHUUPP is not sent to the job if the shell
- receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option
- means to remove or mark all jobs; the --rr option without a _j_o_b_-
- _s_p_e_c argument restricts operation to running jobs. The return
- value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job.
+ Without options, remove each _j_o_b_s_p_e_c from the table of active
+ jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr
+ option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option
+ is given, each _j_o_b_s_p_e_c is not removed from the table, but is
+ marked so that SSIIGGHHUUPP is not sent to the job if the shell re-
+ ceives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option means
+ to remove or mark all jobs; the --rr option without a _j_o_b_s_p_e_c ar-
+ gument restricts operation to running jobs. The return value is
+ 0 unless a _j_o_b_s_p_e_c does not specify a valid job.
eecchhoo [--nneeEE] [_a_r_g ...]
- Output the _a_r_gs, separated by spaces, followed by a newline.
- The return status is 0 unless a write error occurs. If --nn is
+ Output the _a_r_gs, separated by spaces, followed by a newline.
+ The return status is 0 unless a write error occurs. If --nn is
specified, the trailing newline is suppressed. If the --ee option
- is given, interpretation of the following backslash-escaped
- characters is enabled. The --EE option disables the interpreta-
- tion of these escape characters, even on systems where they are
- interpreted by default. The xxppgg__eecchhoo shell option may be used
- to dynamically determine whether or not eecchhoo expands these
- escape characters by default. eecchhoo does not interpret ---- to
- mean the end of options. eecchhoo interprets the following escape
- sequences:
+ is given, interpretation of the following backslash-escaped
+ characters is enabled. The --EE option disables the interpreta-
+ tion of these escape characters, even on systems where they are
+ interpreted by default. The xxppgg__eecchhoo shell option may be used
+ to dynamically determine whether or not eecchhoo expands these es-
+ cape characters by default. eecchhoo does not interpret ---- to mean
+ the end of options. eecchhoo interprets the following escape se-
+ quences:
\\aa alert (bell)
\\bb backspace
\\cc suppress further output
@@ -517,89 +522,92 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
\\tt horizontal tab
\\vv vertical tab
\\\\ backslash
- \\00_n_n_n the eight-bit character whose value is the octal value
+ \\00_n_n_n the eight-bit character whose value is the octal value
_n_n_n (zero to three octal digits)
- \\xx_H_H the eight-bit character whose value is the hexadecimal
+ \\xx_H_H the eight-bit character whose value is the hexadecimal
value _H_H (one or two hex digits)
- \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
+ \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H (one to four hex digits)
\\UU_H_H_H_H_H_H_H_H
- the Unicode (ISO/IEC 10646) character whose value is the
+ the Unicode (ISO/IEC 10646) character whose value is the
hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits)
eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...]
- Enable and disable builtin shell commands. Disabling a builtin
+ Enable and disable builtin shell commands. Disabling a builtin
allows a disk command which has the same name as a shell builtin
- to be executed without specifying a full pathname, even though
- the shell normally searches for builtins before disk commands.
- If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are
- enabled. For example, to use the tteesstt binary found via the PPAATTHH
- instead of the shell builtin version, run ``enable -n test''.
- The --ff option means to load the new builtin command _n_a_m_e from
+ to be executed without specifying a full pathname, even though
+ the shell normally searches for builtins before disk commands.
+ If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are en-
+ abled. For example, to use the tteesstt binary found via the PPAATTHH
+ instead of the shell builtin version, run ``enable -n test''.
+ The --ff option means to load the new builtin command _n_a_m_e from
shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading.
- The --dd option will delete a builtin previously loaded with --ff.
+ The --dd option will delete a builtin previously loaded with --ff.
If no _n_a_m_e arguments are given, or if the --pp option is supplied,
a list of shell builtins is printed. With no other option argu-
- ments, the list consists of all enabled shell builtins. If --nn
- is supplied, only disabled builtins are printed. If --aa is sup-
- plied, the list printed includes all builtins, with an indica-
- tion of whether or not each is enabled. If --ss is supplied, the
- output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
- value is 0 unless a _n_a_m_e is not a shell builtin or there is an
+ ments, the list consists of all enabled shell builtins. If --nn
+ is supplied, only disabled builtins are printed. If --aa is sup-
+ plied, the list printed includes all builtins, with an indica-
+ tion of whether or not each is enabled. If --ss is supplied, the
+ output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return
+ value is 0 unless a _n_a_m_e is not a shell builtin or there is an
error loading a new builtin from a shared object.
eevvaall [_a_r_g ...]
- The _a_r_gs are read and concatenated together into a single com-
- mand. This command is then read and executed by the shell, and
- its exit status is returned as the value of eevvaall. If there are
+ The _a_r_gs are read and concatenated together into a single com-
+ mand. This command is then read and executed by the shell, and
+ its exit status is returned as the value of eevvaall. If there are
no _a_r_g_s, or only null arguments, eevvaall returns 0.
eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]]
- If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
- is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
+ If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process
+ is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If
the --ll option is supplied, the shell places a dash at the begin-
- ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what
- _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
- an empty environment. If --aa is supplied, the shell passes _n_a_m_e
+ ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_-
+ _g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with
+ an empty environment. If --aa is supplied, the shell passes _n_a_m_e
as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can-
- not be executed for some reason, a non-interactive shell exits,
- unless the eexxeeccffaaiill shell option is enabled. In that case, it
- returns failure. An interactive shell returns failure if the
- file cannot be executed. A subshell exits unconditionally if
- eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
- effect in the current shell, and the return status is 0. If
+ not be executed for some reason, a non-interactive shell exits,
+ unless the eexxeeccffaaiill shell option is enabled. In that case, it
+ returns failure. An interactive shell returns failure if the
+ file cannot be executed. A subshell exits unconditionally if
+ eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take
+ effect in the current shell, and the return status is 0. If
there is a redirection error, the return status is 1.
eexxiitt [_n]
- Cause the shell to exit with a status of _n. If _n is omitted,
+ Cause the shell to exit with a status of _n. If _n is omitted,
the exit status is that of the last command executed. A trap on
EEXXIITT is executed before the shell terminates.
eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ...
eexxppoorrtt --pp
- The supplied _n_a_m_e_s are marked for automatic export to the envi-
- ronment of subsequently executed commands. If the --ff option is
- given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
- if the --pp option is supplied, a list of names of all exported
- variables is printed. The --nn option causes the export property
+ The supplied _n_a_m_e_s are marked for automatic export to the envi-
+ ronment of subsequently executed commands. If the --ff option is
+ given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or
+ if the --pp option is supplied, a list of names of all exported
+ variables is printed. The --nn option causes the export property
to be removed from each _n_a_m_e. If a variable name is followed by
=_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns
an exit status of 0 unless an invalid option is encountered, one
- of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
+ of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup-
plied with a _n_a_m_e that is not a function.
ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t]
ffcc --ss [_p_a_t=_r_e_p] [_c_m_d]
- The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
- from the history list and displays or edits and re-executes
- them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
- the last command beginning with that string) or as a number (an
- index into the history list, where a negative number is used as
- an offset from the current command number). 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 first form selects a range of commands from _f_i_r_s_t to _l_a_s_t
+ from the history list and displays or edits and re-executes
+ them. _F_i_r_s_t and _l_a_s_t may be specified as a string (to locate
+ the last command beginning with that string) or as a number (an
+ index into the history list, where a negative number is used as
+ an offset from the current command number). When listing, a
+ _f_i_r_s_t or _l_a_s_t of 0 is equivalent to -1 and -0 is equivalent to
+ the current command (usually the ffcc command); otherwise 0 is
+ equivalent to -1 and -0 is invalid. If _l_a_s_t is not specified,
+ it is set to the current command for listing (so that ``fc -l
+ -10'' prints the last 10 commands) and to _f_i_r_s_t otherwise. If
+ _f_i_r_s_t is not specified, it is set to the previous command for
+ editing and -16 for listing.
The --nn option suppresses the command numbers when listing. The
--rr option reverses the order of the commands. If the --ll option
@@ -616,8 +624,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
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
+ If the first form is used, the return value is 0 unless an in-
+ valid option is encountered or _f_i_r_s_t or _l_a_s_t specify history
lines out of range. If the --ee option is supplied, the return
value is the value of the last command executed or failure if an
error occurs with the temporary file of commands. If the second
@@ -634,73 +642,74 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
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 _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g _._._.]
ggeettooppttss is used by shell procedures to parse positional parame-
ters. _o_p_t_s_t_r_i_n_g contains the option characters to be recog-
- nized; if a character is followed by a colon, the option is
- 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
+ nized; if a character is followed by a colon, the option is ex-
+ pected to have an argument, which should be separated from it by
+ white space. The colon and question mark characters may not be
+ used as option characters. Each time it is invoked, ggeettooppttss
places the next option in the shell variable _n_a_m_e, initializing
_n_a_m_e if it does not exist, and the index of the next argument to
be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to
- 1 each time the shell or a shell script is invoked. When an
- option requires an argument, ggeettooppttss places that argument into
- the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati-
- cally; it must be manually reset between multiple calls to
- ggeettooppttss within the same shell invocation if a new set of parame-
- ters is to be used.
+ 1 each time the shell or a shell script is invoked. When an op-
+ tion requires an argument, ggeettooppttss places that argument into the
+ variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automatically;
+ it must be manually reset between multiple calls to ggeettooppttss
+ within the same shell invocation if a new set of parameters is
+ to be used.
- When the end of options is encountered, ggeettooppttss exits with a
- return value greater than zero. OOPPTTIINNDD is set to the index of
- the first non-option argument, and _n_a_m_e is set to ?.
+ When the end of options is encountered, ggeettooppttss exits with a re-
+ turn value greater than zero. OOPPTTIINNDD is set to the index of the
+ first non-option argument, and _n_a_m_e is set to ?.
ggeettooppttss normally parses the positional parameters, but if more
- arguments are 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-
+ arguments are supplied as _a_r_g values, ggeettooppttss parses those in-
+ stead.
+
+ ggeettooppttss can report errors in two ways. If the first character
+ of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In
+ normal operation, diagnostic messages are printed when invalid
+ options or missing option arguments are encountered. If the
+ variable OOPPTTEERRRR is set to 0, no error messages will be dis-
played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon.
If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if
- not silent, prints an error message and unsets OOPPTTAARRGG. If
- ggeettooppttss is silent, the option character found is placed in
- OOPPTTAARRGG and no diagnostic message is printed.
-
- If a required argument is not found, and ggeettooppttss is not silent,
- a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
- diagnostic message is printed. If ggeettooppttss is silent, then a
- colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
+ not silent, prints an error message and unsets OOPPTTAARRGG. If
+ ggeettooppttss is silent, the option character found is placed in OOPP--
+ TTAARRGG and no diagnostic message is printed.
+
+ If a required argument is not found, and ggeettooppttss is not silent,
+ a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a
+ diagnostic message is printed. If ggeettooppttss is silent, then a
+ colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option
character found.
- ggeettooppttss returns true if an option, specified or unspecified, is
+ ggeettooppttss returns true if an option, specified or unspecified, is
found. It returns false if the end of options is encountered or
an error occurs.
hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e]
Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e
- is determined by searching the directories in $$PPAATTHH and remem-
+ is determined by searching the directories in $$PPAATTHH and remem-
bered. Any previously-remembered pathname is discarded. If the
--pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e
- is used as the full filename of the command. The --rr option
- causes the shell to forget all remembered locations. The --dd
- option causes the shell to forget the remembered location of
- each _n_a_m_e. If the --tt option is supplied, the full pathname to
- which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu-
- ments are supplied with --tt, the _n_a_m_e is printed before the
- hashed full pathname. The --ll option causes output to be dis-
- played in a format that may be reused as input. If no arguments
- are given, or if only --ll is supplied, information about remem-
- bered commands is printed. The return status is true unless a
- _n_a_m_e is not found or an invalid option is supplied.
+ is used as the full filename of the command. The --rr option
+ causes the shell to forget all remembered locations. The --dd op-
+ tion causes the shell to forget the remembered location of each
+ _n_a_m_e. If the --tt option is supplied, the full pathname to which
+ each _n_a_m_e corresponds is printed. If multiple _n_a_m_e arguments
+ are supplied with --tt, the _n_a_m_e is printed before the hashed full
+ pathname. The --ll option causes output to be displayed in a for-
+ mat that may be reused as input. If no arguments are given, or
+ if only --ll is supplied, information about remembered commands is
+ printed. The return status is true unless a _n_a_m_e is not found
+ or an invalid option is supplied.
hheellpp [--ddmmss] [_p_a_t_t_e_r_n]
- Display helpful information about builtin commands. If _p_a_t_t_e_r_n
- is specified, hheellpp gives detailed help on all commands matching
- _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
+ Display helpful information about builtin commands. If _p_a_t_t_e_r_n
+ is specified, hheellpp gives detailed help on all commands matching
+ _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control
structures is printed.
--dd Display a short description of each _p_a_t_t_e_r_n
--mm Display the description of each _p_a_t_t_e_r_n in a manpage-like
@@ -718,53 +727,53 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
hhiissttoorryy --ss _a_r_g [_a_r_g _._._.]
With no options, display the command history list with line num-
bers. Lines listed with a ** have been modified. An argument of
- _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
- FFOORRMMAATT is set and not null, it is used as a format string for
- _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
- played history entry. No intervening blank is printed between
- the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
- supplied, it is used as the name of the history file; if not,
- the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
+ _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE--
+ FFOORRMMAATT is set and not null, it is used as a format string for
+ _s_t_r_f_t_i_m_e(3) to display the time stamp associated with each dis-
+ played history entry. No intervening blank is printed between
+ the formatted time stamp and the history line. If _f_i_l_e_n_a_m_e is
+ supplied, it is used as the name of the history file; if not,
+ the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the
following meanings:
--cc Clear the history list by deleting all the entries.
--dd _o_f_f_s_e_t
- Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
+ Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t
is negative, it is interpreted as relative to one greater
than the last history position, so negative indices count
- back from the end of the history, and an index of -1
+ back from the end of the history, and an index of -1
refers to the current hhiissttoorryy --dd command.
--dd _s_t_a_r_t-_e_n_d
- Delete the history entries between positions _s_t_a_r_t and
- _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
+ Delete the history entries between positions _s_t_a_r_t and
+ _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t
and _e_n_d are interpreted as described above.
- --aa Append the ``new'' history lines to the history file.
- These are history lines entered since the beginning of
+ --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 ap-
+ pended to the history file since the beginning of the
current bbaasshh session.
- --rr Read the contents of the history file and append them to
+ --rr Read the contents of the history file and append them to
the current history list.
--ww Write the current history list to the history file, over-
writing the history file's contents.
- --pp Perform history substitution on the following _a_r_g_s and
- display the result on the standard output. Does not
- store the results in the history list. Each _a_r_g must be
+ --pp Perform history substitution on the following _a_r_g_s and
+ display the result on the standard output. Does not
+ store the results in the history list. Each _a_r_g must be
quoted to disable normal history expansion.
- --ss Store the _a_r_g_s in the history list as a single entry.
- The last command in the history list is removed before
+ --ss Store the _a_r_g_s in the history list as a single entry.
+ The last command in the history list is removed before
the _a_r_g_s are added.
- If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
- tion associated with each history entry is written to the his-
- tory file, marked with the history comment character. When the
- history file is read, lines beginning with the history comment
- character followed immediately by a digit are interpreted as
+ If the HHIISSTTTTIIMMEEFFOORRMMAATT variable is set, the time stamp informa-
+ tion associated with each history entry is written to the his-
+ tory file, marked with the history comment character. When the
+ history file is read, lines beginning with the history comment
+ character followed immediately by a digit are interpreted as
timestamps for the following history entry. The return value is
0 unless an invalid option is encountered, an error occurs while
- reading or writing the history file, an invalid _o_f_f_s_e_t is sup-
+ 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.
@@ -773,147 +782,154 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
The first form lists the active jobs. The options have the fol-
lowing meanings:
--ll List process IDs in addition to the normal information.
- --nn Display information only about jobs that have changed
+ --nn Display information only about jobs that have changed
status since the user was last notified of their status.
- --pp List only the process ID of the job's process group
+ --pp List only the process ID of the job's process group
leader.
--rr Display only running jobs.
--ss Display only stopped jobs.
- If _j_o_b_s_p_e_c is given, output is restricted to information about
- that job. The return status is 0 unless an invalid option is
+ If _j_o_b_s_p_e_c is given, output is restricted to information about
+ that job. The return status is 0 unless an invalid option is
encountered or an invalid _j_o_b_s_p_e_c is supplied.
If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in
- _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and
- executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status.
+ _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and ex-
+ ecutes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status.
kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ...
kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s]
- Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
- named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
- signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
- a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
- present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
- signal names. If any arguments are supplied when --ll is given,
- the names of the signals corresponding to the arguments are
+ Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes
+ named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive
+ signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or
+ a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not
+ present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the
+ signal names. If any arguments are supplied when --ll is given,
+ the names of the signals corresponding to the arguments are
listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to
- --ll is a number specifying either a signal number or the exit
- status of a process terminated by a signal. The --LL option is
- equivalent to --ll. kkiillll returns true if at least one signal was
- successfully sent, or false if an error occurs or an invalid
- option is encountered.
+ --ll is a number specifying either a signal number or the exit
+ status of a process terminated by a signal. The --LL option is
+ equivalent to --ll. kkiillll returns true if at least one signal was
+ successfully sent, or false if an error occurs or an invalid op-
+ tion is encountered.
lleett _a_r_g [_a_r_g ...]
Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH--
- MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett
+ MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett
returns 1; 0 is returned otherwise.
llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ]
- For each argument, a local variable named _n_a_m_e is created, and
- assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
+ For each argument, a local variable named _n_a_m_e is created, and
+ assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted
by ddeeccllaarree. When llooccaall is used within a function, it causes the
- variable _n_a_m_e to have a visible scope restricted to that func-
- tion and its children. If _n_a_m_e is -, the set of shell options
- is made local to the function in which llooccaall is invoked: shell
- options changed using the sseett builtin inside the function are
- restored to their original values when the function returns.
- With no operands, llooccaall writes a list of local variables to the
- standard output. It is an error to use llooccaall when not within a
- 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.
+ The restore is effected as if a series of sseett commands were exe-
+ cuted to restore the values that were in place before the func-
+ tion. With no operands, llooccaall writes a list of local variables
+ to the standard output. It is an error to use llooccaall when not
+ within a function. The return status is 0 unless llooccaall is used
+ outside a function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a
+ readonly variable.
llooggoouutt Exit a login shell.
- mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
+ mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC
_c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y]
- Read lines from the standard input into the indexed array vari-
- able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
- plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
+ Read lines from the standard input into the indexed array vari-
+ able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup-
+ plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if
supplied, have the following meanings:
- --dd The first character of _d_e_l_i_m is used to terminate each
- input line, rather than newline. If _d_e_l_i_m is the empty
+ --dd The first character of _d_e_l_i_m is used to terminate each
+ input line, rather than newline. If _d_e_l_i_m is the empty
string, mmaappffiillee will terminate a line when it reads a NUL
character.
- --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
+ --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are
copied.
- --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
+ --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default
index is 0.
--ss Discard the first _c_o_u_n_t lines read.
- --tt Remove a trailing _d_e_l_i_m (default newline) from each line
+ --tt Remove a trailing _d_e_l_i_m (default newline) from each line
read.
- --uu Read lines from file descriptor _f_d instead of the stan-
+ --uu Read lines from file descriptor _f_d instead of the stan-
dard input.
- --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
+ --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The
--cc option specifies _q_u_a_n_t_u_m.
- --cc Specify the number of lines read between each call to
+ --cc Specify the number of lines read between each call to
_c_a_l_l_b_a_c_k.
- If --CC is specified without --cc, the default quantum is 5000.
+ If --CC is specified without --cc, the default quantum is 5000.
When _c_a_l_l_b_a_c_k is evaluated, it is supplied the index of the next
array element to be assigned and the line to be assigned to that
- element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
+ element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after
the line is read but before the array element is assigned.
- If not supplied with an explicit origin, mmaappffiillee will clear
- _a_r_r_a_y before assigning to it.
+ 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
- manipulated.
- ++_n Removes the _nth entry counting from the left of the list
- shown by ddiirrss, starting with zero. For example: ``popd
+ --nn Suppresses the normal change of directory when removing
+ directories from the stack, so that only the stack is ma-
+ nipulated.
+ ++_n Removes the _nth entry counting from the left of the list
+ shown by ddiirrss, starting with zero. For example: ``popd
+0'' removes the first directory, ``popd +1'' the second.
--_n Removes the _nth entry counting from the right of the list
- shown by ddiirrss, starting with zero. For example: ``popd
- -0'' removes the last directory, ``popd -1'' the next to
+ shown by ddiirrss, starting with zero. For example: ``popd
+ -0'' removes the last directory, ``popd -1'' the next to
last.
- If the ppooppdd command is successful, a ddiirrss is performed as well,
- and the return status is 0. ppooppdd returns false if an invalid
+ If the ppooppdd command is successful, a ddiirrss is performed as well,
+ and the return status is 0. ppooppdd returns false if an invalid
option is encountered, the directory stack is empty, a non-exis-
tent directory stack entry is specified, or the directory change
fails.
pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s]
- Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
- control of the _f_o_r_m_a_t. The --vv option causes the output to be
- assigned to the variable _v_a_r rather than being printed to the
+ Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the
+ control of the _f_o_r_m_a_t. The --vv option causes the output to be
+ assigned to the variable _v_a_r rather than being printed to the
standard output.
- The _f_o_r_m_a_t is a character string which contains three types of
- objects: plain characters, which are simply copied to standard
- output, character escape sequences, which are converted and
- copied to the standard output, and format specifications, each
- of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
+ The _f_o_r_m_a_t is a character string which contains three types of
+ objects: plain characters, which are simply copied to standard
+ output, character escape sequences, which are converted and
+ copied to the standard output, and format specifications, each
+ of which causes printing of the next successive _a_r_g_u_m_e_n_t. In
addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff
interprets the following extensions:
%%bb causes pprriinnttff to expand backslash escape sequences in the
corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee.
- %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
+ %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a
format that can be reused as shell input.
%%((_d_a_t_e_f_m_t))TT
- causes pprriinnttff to output the date-time string resulting
- from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
+ causes pprriinnttff to output the date-time string resulting
+ from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3).
The corresponding _a_r_g_u_m_e_n_t is an integer representing the
- number of seconds since the epoch. Two special argument
- values may be used: -1 represents the current time, and
- -2 represents the time the shell was invoked. If no
- argument is specified, conversion behaves as if -1 had
- been given. This is an exception to the usual pprriinnttff
- behavior.
+ number of seconds since the epoch. Two special argument
+ values may be used: -1 represents the current time, and
+ -2 represents the time the shell was invoked. If no ar-
+ gument is specified, conversion behaves as if -1 had been
+ given. This is an exception to the usual pprriinnttff behav-
+ ior.
+
+ The %b, %q, and %T directives all use the field width and preci-
+ sion arguments from the format specification and write that many
+ bytes from (or use that wide a field for) the expanded argument,
+ which usually contains more characters than the original.
Arguments to non-string format specifiers are treated as C con-
stants, except that a leading plus or minus sign is allowed, and
@@ -930,8 +946,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
ppuusshhdd [--nn] [_d_i_r]
Adds a directory to the top of the directory stack, or rotates
the stack, making the new top of the stack the current working
- directory. With no arguments, ppuusshhdd exchanges the top two
- directories and returns 0, unless the directory stack is empty.
+ directory. With no arguments, ppuusshhdd exchanges the top two di-
+ rectories and returns 0, unless the directory stack is empty.
Arguments, if supplied, have the following meanings:
--nn Suppresses the normal change of directory when rotating
or adding directories to the stack, so that only the
@@ -959,33 +975,33 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command
is enabled. If the --LL option is used, the pathname printed may
contain symbolic links. The return status is 0 unless an error
- occurs while reading the name of the current directory or an
- invalid option is supplied.
+ occurs while reading the name of the current directory or an in-
+ valid option is supplied.
rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp
_p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...]
- One line is read from the standard input, or from the file
- descriptor _f_d supplied as an argument to the --uu option, split
- into words as described above under WWoorrdd SSpplliittttiinngg, and the
- first word is assigned to the first _n_a_m_e, the second word to the
- second _n_a_m_e, and so on. If there are more words than names, the
+ One line is read from the standard input, or from the file de-
+ scriptor _f_d supplied as an argument to the --uu option, split into
+ words as described above under WWoorrdd SSpplliittttiinngg, and the first
+ word is assigned to the first _n_a_m_e, the second word to the sec-
+ ond _n_a_m_e, and so on. If there are more words than names, the
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
+ words using the same rules the shell uses for expansion (de-
+ scribed above under WWoorrdd SSpplliittttiinngg). The backslash character
(\\) may be used to remove any special meaning for the next char-
acter read and for line continuation. Options, if supplied,
have the following meanings:
--aa _a_n_a_m_e
The words are assigned to sequential indices of the array
variable _a_n_a_m_e, starting at 0. _a_n_a_m_e is unset before any
- new values are assigned. Other _n_a_m_e arguments are
- ignored.
+ new values are assigned. Other _n_a_m_e arguments are ig-
+ nored.
--dd _d_e_l_i_m
- The first character of _d_e_l_i_m is used to terminate the
- input line, rather than newline. If _d_e_l_i_m is the empty
+ The first character of _d_e_l_i_m is used to terminate the in-
+ put line, rather than newline. If _d_e_l_i_m is the empty
string, rreeaadd will terminate a line when it reads a NUL
character.
--ee If the standard input is coming from a terminal, rreeaaddlliinnee
@@ -1030,128 +1046,129 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
reading input from a terminal, pipe, or other special
file; it has no effect when reading from regular files.
If rreeaadd times out, rreeaadd saves any partial input read into
- the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd
- returns immediately, without trying to read any data.
- The exit status is 0 if input is available on the speci-
- fied file descriptor, non-zero otherwise. The exit sta-
- tus is greater than 128 if the timeout is exceeded.
+ the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd re-
+ turns immediately, without trying to read any data. The
+ exit status is 0 if input is available on the specified
+ file descriptor, non-zero otherwise. The exit status is
+ greater than 128 if the timeout is exceeded.
--uu _f_d Read input from file descriptor _f_d.
- If no _n_a_m_e_s are supplied, the line read is assigned to the vari-
- able RREEPPLLYY. The exit status is zero, unless end-of-file is
- 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.
+ If no _n_a_m_e_s are supplied, the line read, without the ending de-
+ limiter but otherwise unmodified, is assigned to the variable
+ RREEPPLLYY. The exit status is zero, unless end-of-file is encoun-
+ tered, rreeaadd times out (in which case the status is greater than
+ 128), a variable assignment error (such as assigning to a read-
+ only variable) occurs, or an invalid file descriptor is supplied
+ as the argument to --uu.
rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...]
- The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s
- may not be changed by subsequent assignment. If the --ff option
- is supplied, the functions corresponding to the _n_a_m_e_s are so
- marked. The --aa option restricts the variables to indexed
- 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 ar-
+ rays; the --AA option restricts the variables to associative ar-
+ rays. If both options are supplied, --AA takes precedence. If no
+ _n_a_m_e arguments are given, or if the --pp option is supplied, a
list of all readonly names is printed. The other options may be
- used to restrict the output to a subset of the set of readonly
- names. The --pp option causes output to be displayed in a format
- that may be reused as input. If a variable name is followed by
- =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
- status is 0 unless an invalid option is encountered, one of the
+ used to restrict the output to a subset of the set of readonly
+ names. The --pp option causes output to be displayed in a format
+ that may be reused as input. If a variable name is followed by
+ =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return
+ status is 0 unless an invalid option is encountered, one of the
_n_a_m_e_s is not a valid shell variable name, or --ff is supplied with
a _n_a_m_e that is not a function.
rreettuurrnn [_n]
- Causes a function to stop executing and return the value speci-
- fied by _n to its caller. If _n is omitted, the return status is
- that of the last command executed in the function body. If
- rreettuurrnn is executed by a trap handler, the last command used to
- determine the status is the last command executed before the
- trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the
- last command used to determine the status is the last command
- executed by the trap handler before rreettuurrnn was invoked. If
- rreettuurrnn is used outside a function, but during execution of a
- script by the .. (ssoouurrccee) command, it causes the shell to stop
- executing that script and return either _n or the exit status of
- the last command executed within the script as the exit status
- of the script. If _n is supplied, the return value is its least
- significant 8 bits. The return status is non-zero if rreettuurrnn is
- supplied a non-numeric argument, or is used outside a function
- and not during execution of a script by .. or ssoouurrccee. Any com-
- mand associated with the RREETTUURRNN trap is executed before execu-
- tion resumes after the function or script.
+ Causes a function to stop executing and return the value speci-
+ fied by _n to its caller. If _n is omitted, the return status is
+ that of the last command executed in the function body. If rree--
+ ttuurrnn is executed by a trap handler, the last command used to de-
+ termine the status is the last command executed before the trap
+ handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the last
+ command used to determine the status is the last command exe-
+ cuted by the trap handler before rreettuurrnn was invoked. If rreettuurrnn
+ is used outside a function, but during execution of a script by
+ the .. (ssoouurrccee) command, it causes the shell to stop executing
+ that script and return either _n or the exit status of the last
+ command executed within the script as the exit status of the
+ script. If _n is supplied, the return value is its least signif-
+ icant 8 bits. The return status is non-zero if rreettuurrnn is sup-
+ plied a non-numeric argument, or is used outside a function and
+ not during execution of a script by .. or ssoouurrccee. Any command
+ associated with the RREETTUURRNN trap is executed before execution re-
+ sumes after the function or script.
sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...]
- Without options, the name and value of each shell variable are
+ Without options, the name and value of each shell variable are
displayed in a format that can be reused as input for setting or
resetting the currently-set variables. Read-only variables can-
- not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
- The output is sorted according to the current locale. When
- options are specified, they set or unset shell attributes. Any
- arguments remaining after option processing are treated as val-
+ not be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed.
+ The output is sorted according to the current locale. When op-
+ tions are specified, they set or unset shell attributes. Any
+ arguments remaining after option processing are treated as val-
ues for the positional parameters and are assigned, in order, to
- $$11, $$22, ...... $$_n. Options, if specified, have the following
+ $$11, $$22, ...... $$_n. Options, if specified, have the following
meanings:
--aa Each variable or function that is created or modified is
- given the export attribute and marked for export to the
+ given the export attribute and marked for export to the
environment of subsequent commands.
- --bb Report the status of terminated background jobs immedi-
+ --bb Report the status of terminated background jobs immedi-
ately, rather than before the next primary prompt. This
is effective only when job control is enabled.
- --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
- single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
+ --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a
+ single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d
(see SSHHEELLLL GGRRAAMMMMAARR above), exits with a non-zero status.
- The shell does not exit if the command that fails is
- part of the command list immediately following a wwhhiillee
- or uunnttiill keyword, part of the test following the iiff or
- eelliiff reserved words, part of any command executed in a
- &&&& or |||| list except the command following the final &&&&
+ The shell does not exit if the command that fails is
+ part of the command list immediately following a wwhhiillee
+ or uunnttiill keyword, part of the test following the iiff or
+ eelliiff reserved words, part of any command executed in a
+ &&&& or |||| list except the command following the final &&&&
or ||||, any command in a pipeline but the last, or if the
- command's return value is being inverted with !!. If a
- compound command other than a subshell returns a non-
- zero status because a command failed while --ee was being
- ignored, the shell does not exit. A trap on EERRRR, if
- set, is executed before the shell exits. This option
+ command's return value is being inverted with !!. If a
+ compound command other than a subshell returns a non-
+ zero status because a command failed while --ee was being
+ ignored, the shell does not exit. A trap on EERRRR, if
+ set, is executed before the shell exits. This option
applies to the shell environment and each subshell envi-
- ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
+ ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT
above), and may cause subshells to exit before executing
all the commands in the subshell.
- If a compound command or shell function executes in a
- context where --ee is being ignored, none of the commands
- executed within the compound command or function body
- will be affected by the --ee setting, even if --ee is set
- and a command returns a failure status. If a compound
- command or shell function sets --ee while executing in a
- context where --ee is ignored, that setting will not have
- any effect until the compound command or the command
+ If a compound command or shell function executes in a
+ context where --ee is being ignored, none of the commands
+ executed within the compound command or function body
+ will be affected by the --ee setting, even if --ee is set
+ and a command returns a failure status. If a compound
+ command or shell function sets --ee while executing in a
+ context where --ee is ignored, that setting will not have
+ any effect until the compound command or the command
containing the function call completes.
--ff Disable pathname expansion.
- --hh Remember the location of commands as they are looked up
+ --hh Remember the location of commands as they are looked up
for execution. This is enabled by default.
- --kk All arguments in the form of assignment statements are
- placed in the environment for a command, not just those
+ --kk All arguments in the form of assignment statements are
+ placed in the environment for a command, not just those
that precede the command name.
- --mm Monitor mode. Job control is enabled. This option is
- on by default for interactive shells on systems that
- support it (see JJOOBB CCOONNTTRROOLL above). All processes run
+ --mm Monitor mode. Job control is enabled. This option is
+ on by default for interactive shells on systems that
+ support it (see JJOOBB CCOONNTTRROOLL above). All processes run
in a separate process group. When a background job com-
pletes, the shell prints a line containing its exit sta-
tus.
--nn Read commands but do not execute them. This may be used
- to check a shell script for syntax errors. This is
- ignored by interactive shells.
+ to check a shell script for syntax errors. This is ig-
+ nored by interactive shells.
--oo _o_p_t_i_o_n_-_n_a_m_e
The _o_p_t_i_o_n_-_n_a_m_e can be one of the following:
aalllleexxppoorrtt
Same as --aa.
bbrraacceeeexxppaanndd
Same as --BB.
- eemmaaccss Use an emacs-style command line editing inter-
+ eemmaaccss Use an emacs-style command line editing inter-
face. This is enabled by default when the shell
is interactive, unless the shell is started with
- the ----nnooeeddiittiinngg option. This also affects the
+ the ----nnooeeddiittiinngg option. This also affects the
editing interface used for rreeaadd --ee.
eerrrreexxiitt Same as --ee.
eerrrrttrraaccee
@@ -1165,9 +1182,9 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
HHIISSTTOORRYY. This option is on by default in inter-
active shells.
iiggnnoorreeeeooff
- The effect is as if the shell command
- ``IGNOREEOF=10'' had been executed (see SShheellll
- VVaarriiaabblleess above).
+ The effect is as if the shell command ``IG-
+ NOREEOF=10'' had been executed (see SShheellll VVaarrii--
+ aabblleess above).
kkeeyywwoorrdd Same as --kk.
mmoonniittoorr Same as --mm.
nnoocclloobbbbeerr
@@ -1181,446 +1198,449 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
pphhyyssiiccaall
Same as --PP.
ppiippeeffaaiill
- If set, the return value of a pipeline is the
- value of the last (rightmost) command to exit
- with a non-zero status, or zero if all commands
- in the pipeline exit successfully. This option
+ If set, the return value of a pipeline is the
+ value of the last (rightmost) command to exit
+ with a non-zero status, or zero if all commands
+ in the pipeline exit successfully. This option
is disabled by default.
- ppoossiixx Change the behavior of bbaasshh where the default
- operation differs from the POSIX standard to
- match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
+ ppoossiixx Change the behavior of bbaasshh where the default
+ operation differs from the POSIX standard to
+ match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO
below for a reference to a document that details
how posix mode affects bash's behavior.
pprriivviilleeggeedd
Same as --pp.
vveerrbboossee Same as --vv.
- vvii Use a vi-style command line editing interface.
+ vvii Use a vi-style command line editing interface.
This also affects the editing interface used for
rreeaadd --ee.
xxttrraaccee Same as --xx.
If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the
- current options are printed. If ++oo is supplied with no
- _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
- current option settings is displayed on the standard
+ current options are printed. If ++oo is supplied with no
+ _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
+ current option settings is displayed on the standard
output.
- --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
- $$BBAASSHH__EENNVV files are not processed, shell functions are
- not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
- BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they
- appear in the environment, are ignored. If the shell is
- started with the effective user (group) id not equal to
- the real user (group) id, and the --pp option is not sup-
+ --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
+ $$BBAASSHH__EENNVV files are not processed, shell functions are
+ not inherited from the environment, and the SSHHEELLLLOOPPTTSS,
+ BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
+ pear in the environment, are ignored. If the shell is
+ started with the effective user (group) id not equal to
+ the real user (group) id, and the --pp option is not sup-
plied, these actions are taken and the effective user id
- is set to the real user id. If the --pp option is sup-
- plied at startup, the effective user id is not reset.
- Turning this option off causes the effective user and
+ is set to the real user id. If the --pp option is sup-
+ plied at startup, the effective user id is not reset.
+ Turning this option off causes the effective user and
group ids to be set to the real user and group ids.
--tt Exit after reading and executing one command.
--uu Treat unset variables and parameters other than the spe-
- cial parameters "@" and "*" as an error when performing
- parameter expansion. If expansion is attempted on an
- unset variable or parameter, the shell prints an error
- message, and, if not interactive, exits with a non-zero
+ cial parameters "@" and "*" as an error when performing
+ parameter expansion. If expansion is attempted on an
+ unset variable or parameter, the shell prints an error
+ message, and, if not interactive, exits with a non-zero
status.
--vv Print shell input lines as they are read.
- --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
+ --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee
command, sseelleecctt command, or arithmetic ffoorr command, dis-
- play the expanded value of PPSS44, followed by the command
+ play the expanded value of PPSS44, followed by the command
and its expanded arguments or associated word list.
- --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
+ --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn
above). This is on by default.
- --CC If set, bbaasshh does not overwrite an existing file with
- the >>, >>&&, and <<>> redirection operators. This may be
+ --CC If set, bbaasshh does not overwrite an existing file with
+ the >>, >>&&, and <<>> redirection operators. This may be
overridden when creating output files by using the redi-
rection operator >>|| instead of >>.
--EE If set, any trap on EERRRR is inherited by shell functions,
- command substitutions, and commands executed in a sub-
- shell environment. The EERRRR trap is normally not inher-
+ command substitutions, and commands executed in a sub-
+ shell environment. The EERRRR trap is normally not inher-
ited in such cases.
--HH Enable !! style history substitution. This option is on
by default when the shell is interactive.
- --PP If set, the shell does not resolve symbolic links when
- executing commands such as ccdd that change the current
+ --PP If set, the shell does not resolve symbolic links when
+ executing commands such as ccdd that change the current
working directory. It uses the physical directory
structure instead. By default, bbaasshh follows the logical
- chain of directories when performing commands which
+ chain of directories when performing commands which
change the current directory.
- --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
- shell functions, command substitutions, and commands
- executed in a subshell environment. The DDEEBBUUGG and
- RREETTUURRNN traps are normally not inherited in such cases.
- ---- If no arguments follow this option, then the positional
+ --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by
+ shell functions, command substitutions, and commands ex-
+ ecuted in a subshell environment. The DDEEBBUUGG and RREETTUURRNN
+ traps are normally not inherited in such cases.
+ ---- If no arguments follow this option, then the positional
parameters are unset. Otherwise, the positional parame-
- ters are set to the _a_r_gs, even if some of them begin
+ ters are set to the _a_r_gs, even if some of them begin
with a --.
- -- Signal the end of options, cause all remaining _a_r_gs to
+ -- Signal the end of options, cause all remaining _a_r_gs to
be assigned to the positional parameters. The --xx and --vv
options are turned off. If there are no _a_r_gs, the posi-
tional parameters remain unchanged.
- The options are off by default unless otherwise noted. Using +
- rather than - causes these options to be turned off. The
- options can also be specified as arguments to an invocation of
- the shell. The current set of options may be found in $$--. The
- return status is always true unless an invalid option is encoun-
+ The options are off by default unless otherwise noted. Using +
+ rather than - causes these options to be turned off. The op-
+ tions can also be specified as arguments to an invocation of the
+ shell. The current set of options may be found in $$--. The re-
+ turn status is always true unless an invalid option is encoun-
tered.
sshhiifftt [_n]
- The positional parameters from _n+1 ... are renamed to $$11 ........
- Parameters represented by the numbers $$## down to $$##-_n+1 are
- unset. _n must be a non-negative number less than or equal to
- $$##. If _n is 0, no parameters are changed. If _n is not given,
- it is assumed to be 1. If _n is greater than $$##, the positional
- parameters are not changed. The return status is greater than
- zero if _n is greater than $$## or less than zero; otherwise 0.
+ The positional parameters from _n+1 ... are renamed to $$11 ........
+ Parameters represented by the numbers $$## down to $$##-_n+1 are un-
+ set. _n must be a non-negative number less than or equal to $$##.
+ If _n is 0, no parameters are changed. If _n is not given, it is
+ assumed to be 1. If _n is greater than $$##, the positional param-
+ eters are not changed. The return status is greater than zero
+ if _n is greater than $$## or less than zero; otherwise 0.
sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...]
- Toggle the values of settings controlling optional shell behav-
- ior. The settings can be either those listed below, or, if the
+ Toggle the values of settings controlling optional shell behav-
+ ior. The settings can be either those listed below, or, if the
--oo option is used, those available with the --oo option to the sseett
builtin command. With no options, or with the --pp option, a list
- of all settable options is displayed, with an indication of
+ of all settable options is displayed, with an indication of
whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output
- is restricted to those options. The --pp option causes output to
- be displayed in a form that may be reused as input. Other
- options have the following meanings:
+ is restricted to those options. The --pp option causes output to
+ be displayed in a form that may be reused as input. Other op-
+ tions have the following meanings:
--ss Enable (set) each _o_p_t_n_a_m_e.
--uu Disable (unset) each _o_p_t_n_a_m_e.
- --qq Suppresses normal output (quiet mode); the return status
+ --qq Suppresses normal output (quiet mode); the return status
indicates whether the _o_p_t_n_a_m_e is set or unset. If multi-
- ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
- tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
+ ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta-
+ tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other-
wise.
- --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
+ --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for
the --oo option to the sseett builtin.
- If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
- shows only those options which are set or unset, respectively.
- Unless otherwise noted, the sshhoopptt options are disabled (unset)
+ If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt
+ shows only those options which are set or unset, respectively.
+ Unless otherwise noted, the sshhoopptt options are disabled (unset)
by default.
- The return status when listing options is zero if all _o_p_t_n_a_m_e_s
- are enabled, non-zero otherwise. When setting or unsetting
- options, the return status is zero unless an _o_p_t_n_a_m_e is not a
+ The return status when listing options is zero if all _o_p_t_n_a_m_e_s
+ are enabled, non-zero otherwise. When setting or unsetting op-
+ tions, the return status is zero unless an _o_p_t_n_a_m_e is not a
valid shell option.
The list of sshhoopptt options is:
aassssoocc__eexxppaanndd__oonnccee
- If set, the shell suppresses multiple evaluation of
- associative array subscripts during arithmetic expres-
- sion evaluation, while executing builtins that can per-
- form variable assignments, and while executing builtins
- that perform array dereferencing.
- aauuttooccdd If set, a command name that is the name of a directory
- is executed as if it were the argument to the ccdd com-
+ If set, the shell suppresses multiple evaluation of as-
+ sociative array subscripts during arithmetic expression
+ evaluation, while executing builtins that can perform
+ variable assignments, and while executing builtins that
+ perform array dereferencing.
+ aauuttooccdd If set, a command name that is the name of a directory
+ is executed as if it were the argument to the ccdd com-
mand. This option is only used by interactive shells.
ccddaabbllee__vvaarrss
- If set, an argument to the ccdd builtin command that is
- not a directory is assumed to be the name of a variable
+ If set, an argument to the ccdd builtin command that is
+ not a directory is assumed to be the name of a variable
whose value is the directory to change to.
ccddssppeellll If set, minor errors in the spelling of a directory com-
- ponent in a ccdd command will be corrected. The errors
+ ponent in a ccdd command will be corrected. The errors
checked for are transposed characters, a missing charac-
- ter, and one character too many. If a correction is
- found, the corrected filename is printed, and the com-
- mand proceeds. This option is only used by interactive
+ ter, and one character too many. If a correction is
+ found, the corrected filename is printed, and the com-
+ mand proceeds. This option is only used by interactive
shells.
cchheecckkhhaasshh
If set, bbaasshh checks that a command found in the hash ta-
- ble exists before trying to execute it. If a hashed
- command no longer exists, a normal path search is per-
+ ble exists before trying to execute it. If a hashed
+ command no longer exists, a normal path search is per-
formed.
cchheecckkjjoobbss
If set, bbaasshh lists the status of any stopped and running
- jobs before exiting an interactive shell. If any jobs
+ jobs before exiting an interactive shell. If any jobs
are running, this causes the exit to be deferred until a
- second exit is attempted without an intervening command
- (see JJOOBB CCOONNTTRROOLL above). The shell always postpones
- exiting if any jobs are stopped.
+ second exit is attempted without an intervening command
+ (see JJOOBB CCOONNTTRROOLL above). The shell always postpones ex-
+ iting if any jobs are stopped.
cchheecckkwwiinnssiizzee
- If set, bbaasshh checks the window size after each external
- (non-builtin) command and, if necessary, updates the
- values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
+ If set, bbaasshh checks the window size after each external
+ (non-builtin) command and, if necessary, updates the
+ values of LLIINNEESS and CCOOLLUUMMNNSS. This option is enabled by
default.
- ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
- line command in the same history entry. This allows
- easy re-editing of multi-line commands. This option is
- enabled by default, but only has an effect if command
+ ccmmddhhiisstt If set, bbaasshh attempts to save all lines of a multiple-
+ line command in the same history entry. This allows
+ easy re-editing of multi-line commands. This option is
+ enabled by default, but only has an effect if command
history is enabled, as described above under HHIISSTTOORRYY.
ccoommppaatt3311
- If set, bbaasshh changes its behavior to that of version 3.1
- with respect to quoted arguments to the [[[[ conditional
- command's ==~~ operator and locale-specific string compar-
- ison when using the [[[[ conditional command's << and >>
- operators. Bash versions prior to bash-4.1 use ASCII
- collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur-
- rent locale's collation sequence and _s_t_r_c_o_l_l(3).
ccoommppaatt3322
- If set, bbaasshh changes its behavior to that of version 3.2
- with respect to locale-specific string comparison when
- using the [[[[ conditional command's << and >> operators
- (see previous item) 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
- in the list.
ccoommppaatt4411
- If set, bbaasshh, when in _p_o_s_i_x _m_o_d_e, treats a single quote
- in a double-quoted parameter expansion as a special
- character. The single quotes must match (an even num-
- ber) and the characters between the single quotes are
- considered quoted. This is the behavior of posix mode
- through version 4.1. The default bash behavior remains
- as in previous versions.
ccoommppaatt4422
- If set, bbaasshh does not process the replacement string in
- the pattern substitution word expansion using quote
- removal.
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).
ccoommppaatt4444
- If set, bbaasshh saves the positional parameters to
- BASH_ARGV and BASH_ARGC before they are used, regardless
- of whether or not extended debugging mode is enabled.
+ These control aspects of the shell's compatibility mode
+ (see SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE below).
+
ccoommpplleettee__ffuullllqquuoottee
- If set, bbaasshh quotes all shell metacharacters in file-
- names and directory names when performing completion.
+ If set, bbaasshh quotes all shell metacharacters in file-
+ names and directory names when performing completion.
If not set, bbaasshh removes metacharacters such as the dol-
- lar sign from the set of characters that will be quoted
- in completed filenames when these metacharacters appear
- in shell variable references in words to be completed.
- This means that dollar signs in variable names that
- 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 ex-
+ pand to directories will not be quoted; however, any
+ dollar signs appearing in filenames will not be quoted,
+ either. This is active only when bash is using back-
+ slashes to quote completed filenames. This variable is
+ set by default, which is the default bash behavior in
versions through 4.2.
+
ddiirreexxppaanndd
- If set, bbaasshh replaces directory names with the results
- of word expansion when performing filename completion.
- This changes the contents of the readline editing buf-
- fer. If not set, bbaasshh attempts to preserve what the
+ If set, bbaasshh replaces directory names with the results
+ of word expansion when performing filename completion.
+ This changes the contents of the readline editing buf-
+ fer. If not set, bbaasshh attempts to preserve what the
user typed.
+
ddiirrssppeellll
- If set, bbaasshh attempts spelling correction on directory
- names during word completion if the directory name ini-
+ If set, bbaasshh attempts spelling correction on directory
+ names during word completion if the directory name ini-
tially supplied does not exist.
- ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
- the results of pathname expansion. The filenames ````..''''
- and ````....'''' must always be matched explicitly, even if
+
+ ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in
+ the results of pathname expansion. The filenames ````..''''
+ and ````....'''' must always be matched explicitly, even if
ddoottgglloobb is set.
+
eexxeeccffaaiill
If set, a non-interactive shell will not exit if it can-
- not execute the file specified as an argument to the
- eexxeecc builtin command. An interactive shell does not
+ not execute the file specified as an argument to the
+ eexxeecc builtin command. An interactive shell does not
exit if eexxeecc fails.
+
eexxppaanndd__aalliiaasseess
- If set, aliases are expanded as described above under
+ If set, aliases are expanded as described above under
AALLIIAASSEESS. This option is enabled by default for interac-
tive shells.
+
eexxttddeebbuugg
- If set at shell invocation, 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:
+ If set at shell invocation, or in a shell startup file,
+ arrange to execute the debugger profile before the shell
+ starts, identical to the ----ddeebbuuggggeerr option. If set af-
+ ter invocation, behavior intended for use by debuggers
+ is enabled:
+
11.. The --FF option to the ddeeccllaarree builtin displays the
source file name and line number corresponding to
each function name supplied as an argument.
+
22.. If the command run by the DDEEBBUUGG trap returns a
non-zero value, the next command is skipped and
not executed.
+
33.. If the command run by the DDEEBBUUGG trap returns a
value of 2, and the shell is executing in a sub-
routine (a shell function or a shell script exe-
cuted by the .. or ssoouurrccee builtins), 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-
tion, shell functions, and subshells invoked with
(( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps.
+
66.. Error tracing is enabled: command substitution,
shell functions, and subshells invoked with ((
_c_o_m_m_a_n_d )) inherit the EERRRR trap.
+
eexxttgglloobb If set, the extended pattern matching features described
above under PPaatthhnnaammee EExxppaannssiioonn are enabled.
+
eexxttqquuoottee
If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed
within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double
quotes. This option is enabled by default.
+
ffaaiillgglloobb
If set, patterns which fail to match filenames during
pathname expansion result in an expansion error.
+
ffoorrccee__ffiiggnnoorree
If set, the suffixes specified by the FFIIGGNNOORREE shell
variable cause words to be ignored when performing word
completion even if the ignored words are the only possi-
- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a
- description of FFIIGGNNOORREE. This option is enabled by
- default.
+ ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a de-
+ scription of FFIIGGNNOORREE. This option is enabled by de-
+ fault.
+
gglloobbaasscciiiirraannggeess
If set, range expressions used in pattern matching
bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave
as if in the traditional C locale when performing com-
- parisons. That is, the current locale's collating
- 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.
+ parisons. That is, the current locale's collating se-
+ quence is not taken into account, so bb will not collate
+ between AA and BB, and upper-case and lower-case ASCII
+ characters will collate together.
+
gglloobbssttaarr
If set, the pattern **** used in a pathname expansion con-
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a //,
only directories and subdirectories match.
+
ggnnuu__eerrrrffmmtt
If set, shell error messages are written in the standard
GNU error message format.
+
hhiissttaappppeenndd
If set, the history list is appended to the file named
- by the value of the HHIISSTTFFIILLEE variable when the shell
- exits, rather than overwriting the file.
+ by the value of the HHIISSTTFFIILLEE variable when the shell ex-
+ its, rather than overwriting the file.
+
hhiissttrreeeeddiitt
If set, and rreeaaddlliinnee is being used, a user is given the
opportunity to re-edit a failed history substitution.
+
hhiissttvveerriiffyy
If set, and rreeaaddlliinnee is being used, the results of his-
tory substitution are not immediately passed to the
shell parser. Instead, the resulting line is loaded
into the rreeaaddlliinnee editing buffer, allowing further modi-
fication.
+
hhoossttccoommpplleettee
If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to
perform hostname completion when a word containing a @@
is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE
above). This is enabled by default.
+
hhuuppoonneexxiitt
If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter-
active login shell exits.
+
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
- in an interactive shell (see CCOOMMMMEENNTTSS above). This
- option is enabled by default.
+ in an interactive shell (see CCOOMMMMEENNTTSS above). This op-
+ tion is enabled by default.
+
llaassttppiippee
If set, and job control is not active, the shell runs
the last command of a pipeline not executed in the back-
ground in the current shell environment.
+
lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line
commands are saved to the history with embedded newlines
rather than using semicolon separators where possible.
+
llooccaallvvaarr__iinnhheerriitt
If set, local variables inherit the value and attributes
of a variable of the same name that exists at a previous
- scope before any new value is assigned. The nameref
- attribute is not inherited.
+ scope before any new value is assigned. The nameref at-
+ tribute is not inherited.
+
llooccaallvvaarr__uunnsseett
If set, calling uunnsseett on local variables in previous
function scopes marks them so subsequent lookups find
them unset until that function returns. This is identi-
cal to the behavior of unsetting local variables at the
current function scope.
+
llooggiinn__sshheellll
The shell sets this option if it is started as a login
shell (see IINNVVOOCCAATTIIOONN above). The value may not be
changed.
+
mmaaiillwwaarrnn
If set, and a file that bbaasshh is checking for mail has
been accessed since the last time it was checked, the
message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis-
played.
+
nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn
- If set, and rreeaaddlliinnee is being used, bbaasshh will not
- attempt to search the PPAATTHH for possible completions when
+ If set, and rreeaaddlliinnee is being used, bbaasshh will not at-
+ tempt to search the PPAATTHH for possible completions when
completion is attempted on an empty line.
+
nnooccaasseegglloobb
If set, bbaasshh matches filenames in a case-insensitive
fashion when performing pathname expansion (see PPaatthhnnaammee
EExxppaannssiioonn above).
+
nnooccaasseemmaattcchh
If set, bbaasshh matches patterns in a case-insensitive
fashion when performing matching while executing ccaassee or
[[[[ conditional commands, 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,
rather than themselves.
+
pprrooggccoommpp
If set, the programmable completion facilities (see PPrroo--
ggrraammmmaabbllee CCoommpplleettiioonn above) are enabled. This option is
enabled by default.
+
pprrooggccoommpp__aalliiaass
If set, and programmable completion is enabled, bbaasshh
treats a command name that doesn't have any completions
as a possible alias and attempts alias expansion. If it
- has an alias, bbaasshh attempts programmable completion
- using the command word resulting from the expanded
- alias.
+ has an alias, bbaasshh attempts programmable completion us-
+ ing the command word resulting from the expanded alias.
+
pprroommppttvvaarrss
If set, prompt strings undergo parameter expansion, com-
- mand substitution, arithmetic expansion, and quote
- removal after being expanded as described in PPRROOMMPPTTIINNGG
+ mand substitution, arithmetic expansion, and quote re-
+ moval after being expanded as described in PPRROOMMPPTTIINNGG
above. This option is enabled by default.
+
rreessttrriicctteedd__sshheellll
- The shell sets this option if it is started in
- restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value
- may not be changed. This is not reset when the startup
- files are executed, allowing the startup files to dis-
+ The shell sets this option if it is started in re-
+ stricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL below). The value
+ may not be changed. This is not reset when the startup
+ files are executed, allowing the startup files to dis-
cover whether or not a shell is restricted.
+
sshhiifftt__vveerrbboossee
- If set, the sshhiifftt builtin prints an error message when
+ If set, the sshhiifftt builtin prints an error message when
the shift count exceeds the number of positional parame-
ters.
+
ssoouurrcceeppaatthh
If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH to
- find the directory containing the file supplied as an
+ find the directory containing the file supplied as an
argument. This option is enabled by default.
+
xxppgg__eecchhoo
- If set, the eecchhoo builtin expands backslash-escape
- sequences by default.
+ If set, the eecchhoo builtin expands backslash-escape se-
+ quences by default.
ssuussppeenndd [--ff]
- Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
+ Suspend the execution of this shell until it receives a SSIIGGCCOONNTT
signal. A login shell cannot be suspended; the --ff option can be
used to override this and force the suspension. The return sta-
- tus is 0 unless the shell is a login shell and --ff is not sup-
+ tus is 0 unless the shell is a login shell and --ff is not sup-
plied, or if job control is not enabled.
tteesstt _e_x_p_r
[[ _e_x_p_r ]]
Return a status of 0 (true) or 1 (false) depending on the evalu-
ation of the conditional expression _e_x_p_r. Each operator and op-
- erand must be a separate argument. Expressions are composed of
- the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS.
- tteesstt does not accept any options, nor does it accept and ignore
- an argument of ---- as signifying the end of options.
+ erand must be a separate argument. Expressions are composed of
+ the primaries described in the bbaasshh manual page under CCOONNDDII--
+ TTIIOONNAALL EEXXPPRREESSSSIIOONNSS. tteesstt does not accept any options, nor does
+ it accept and ignore an argument of ---- as signifying the end of
+ options.
Expressions may be combined using the following operators,
- listed in decreasing order of precedence. The evaluation
- depends on the number of arguments; see below. Operator prece-
+ listed in decreasing order of precedence. The evaluation de-
+ pends on the number of arguments; see below. Operator prece-
dence is used when there are five or more arguments.
!! _e_x_p_r True if _e_x_p_r is false.
(( _e_x_p_r ))
@@ -1677,20 +1697,20 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
for processes run from the shell. The return status is 0.
ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...]
- The command _a_r_g is to be read and executed when the shell
- receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a
- single _s_i_g_s_p_e_c) or --, each specified signal is reset to its
- original disposition (the value it had upon entrance to the
- shell). If _a_r_g is the null string the signal specified by each
- _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes.
- If _a_r_g is not present and --pp has been supplied, then the trap
- commands associated with each _s_i_g_s_p_e_c are displayed. If no
- arguments are supplied or if only --pp is given, ttrraapp prints the
- list of commands associated with each signal. The --ll option
- causes the shell to print a list of signal names and their cor-
- responding numbers. Each _s_i_g_s_p_e_c is either a signal name
- defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are
- case insensitive and the SSIIGG prefix is optional.
+ The command _a_r_g is to be read and executed when the shell re-
+ ceives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a sin-
+ gle _s_i_g_s_p_e_c) or --, each specified signal is reset to its origi-
+ nal disposition (the value it had upon entrance to the shell).
+ If _a_r_g is the null string the signal specified by each _s_i_g_s_p_e_c
+ is ignored by the shell and by the commands it invokes. If _a_r_g
+ is not present and --pp has been supplied, then the trap commands
+ associated with each _s_i_g_s_p_e_c are displayed. If no arguments are
+ supplied or if only --pp is given, ttrraapp prints the list of com-
+ mands associated with each signal. The --ll option causes the
+ shell to print a list of signal names and their corresponding
+ numbers. Each _s_i_g_s_p_e_c is either a signal name defined in <_s_i_g_-
+ _n_a_l_._h>, or a signal number. Signal names are case insensitive
+ and the SSIIGG prefix is optional.
If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit
from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe-
@@ -1712,11 +1732,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
part of a command executed in a &&&& or |||| list except the command
following the final &&&& or ||||, any command in a pipeline but the
last, or if the command's return value is being inverted using
- !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee)
- option.
+ !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) op-
+ tion.
- Signals ignored upon entry to the shell cannot be trapped or
- reset. Trapped signals that are not being ignored are reset to
+ Signals ignored upon entry to the shell cannot be trapped or re-
+ set. Trapped signals that are not being ignored are reset to
their original values in a subshell or subshell environment when
one is created. The return status is false if any _s_i_g_s_p_e_c is
invalid; otherwise ttrraapp returns true.
@@ -1727,11 +1747,11 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or
_f_i_l_e if _n_a_m_e is an alias, shell reserved word, function,
builtin, or disk file, respectively. If the _n_a_m_e is not found,
- then nothing is printed, and an exit status of false is
- returned. If the --pp option is used, ttyyppee either returns the
- name of the disk file that would be executed if _n_a_m_e were speci-
- fied as a command name, or nothing if ``type -t name'' would not
- return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
+ then nothing is printed, and an exit status of false is re-
+ turned. If the --pp option is used, ttyyppee either returns the name
+ of the disk file that would be executed if _n_a_m_e were specified
+ as a command name, or nothing if ``type -t name'' would not re-
+ turn _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e,
even if ``type -t name'' would not return _f_i_l_e. If a command is
hashed, --pp and --PP print the hashed value, which is not necessar-
ily the file that appears first in PPAATTHH. If the --aa option is
@@ -1742,7 +1762,8 @@ 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 [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]]
+ uulliimmiitt [--HHSS] --aa
+ uulliimmiitt [--HHSS] [--bbccddeeffiikkllmmnnppqqrrssttuuvvxxPPRRTT [_l_i_m_i_t]]
Provides control over the resources available to the shell and
to processes started by it, on systems that allow such control.
The --HH and --SS options specify that the hard or soft limit is set
@@ -1752,13 +1773,13 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
fied, both the soft and hard limits are set. The value of _l_i_m_i_t
can be a number in the unit specified for the resource or one of
the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the
- current hard limit, the current soft limit, and no limit,
- respectively. If _l_i_m_i_t is omitted, the current value of the
- soft limit of the resource is printed, unless the --HH option is
- given. When more than one resource is specified, the limit name
- and unit are printed before the value. Other options are inter-
- preted as follows:
- --aa All current limits are reported
+ current hard limit, the current soft limit, and no limit, re-
+ spectively. If _l_i_m_i_t is omitted, the current value of the soft
+ limit of the resource is printed, unless the --HH option is given.
+ When more than one resource is specified, the limit name and
+ unit, if appropriate, are printed before the value. Other op-
+ tions are interpreted as follows:
+ --aa All current limits are reported; no limits are set
--bb The maximum socket buffer size
--cc The maximum size of core files created
--dd The maximum size of a process's data segment
@@ -1783,16 +1804,19 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
shell and, on some systems, to its children
--xx The maximum number of file locks
--PP The maximum number of pseudoterminals
+ --RR The maximum time a real-time process can run before
+ blocking, in microseconds
--TT The maximum number of threads
- If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
- new value of the specified resource. If no option is given,
- then --ff is assumed. Values are in 1024-byte increments, except
- for --tt, which is in seconds; --pp, which is in units of 512-byte
- blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values;
- and, when in posix mode, --cc and --ff, which are in 512-byte incre-
- ments. The return status is 0 unless an invalid option or argu-
- ment is supplied, or an error occurs while setting a new limit.
+ If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the
+ new value of the specified resource. If no option is given,
+ then --ff is assumed. Values are in 1024-byte increments, except
+ for --tt, which is in seconds; --RR, which is in microseconds; --pp,
+ which is in units of 512-byte blocks; --PP, --TT, --bb, --kk, --nn, and
+ --uu, which are unscaled values; and, when in posix mode, --cc and
+ --ff, which are in 512-byte increments. The return status is 0
+ unless an invalid option or argument is supplied, or an error
+ occurs while setting a new limit.
uummaasskk [--pp] [--SS] [_m_o_d_e]
The user file-creation mask is set to _m_o_d_e. If _m_o_d_e begins with
@@ -1821,27 +1845,166 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
_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
+ able by that name, a function with that name, if any, is unset.
+ Each unset variable or function is removed from the environment
+ passed to subsequent commands. If any of BBAASSHH__AALLIIAASSEESS,
+ BBAASSHH__AARRGGVV00, BBAASSHH__CCMMDDSS, BBAASSHH__CCOOMMMMAANNDD, BBAASSHH__SSUUBBSSHHEELLLL, BBAASSHHPPIIDD,
+ CCOOMMPP__WWOORRDDBBRREEAAKKSS, DDIIRRSSTTAACCKK, EEPPOOCCHHRREEAALLTTIIMMEE, EEPPOOCCHHSSEECCOONNDDSS, FFUUNNCC--
+ NNAAMMEE, GGRROOUUPPSS, HHIISSTTCCMMDD, LLIINNEENNOO, RRAANNDDOOMM, SSEECCOONNDDSS, or SSRRAANNDDOOMM are
unset, they lose their special properties, even if they are sub-
sequently reset. The exit status is true unless a _n_a_m_e is read-
only.
- wwaaiitt [--ffnn] [_i_d _._._.]
+ wwaaiitt [--ffnn] [--pp _v_a_r_n_a_m_e] [_i_d _._._.]
Wait for each specified child process and return its termination
status. Each _i_d may be a process ID or a job specification; if
a job spec is given, all processes in that job's pipeline are
- waited for. If _i_d is not given, 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 the --ff option is supplied, and job
- control is enabled, wwaaiitt forces _i_d to terminate before returning
- its status, instead of returning when it changes status. If _i_d
- specifies a non-existent process or job, the return status is
- 127. Otherwise, the return status is the exit status of the
- last process or job waited for.
+ waited for. If _i_d is not given, wwaaiitt waits for all running
+ background jobs and the last-executed process substitution, if
+ its process id is the same as $$!!, and the return status is zero.
+ If the --nn option is supplied, wwaaiitt waits for a single job from
+ the list of _i_ds or, if no _i_ds are supplied, any job, to complete
+ and returns its exit status. If none of the supplied arguments
+ is a child of the shell, or if no arguments are supplied and the
+ shell has no unwaited-for children, the exit status is 127. If
+ the --pp option is supplied, the process or job identifier of the
+ job for which the exit status is returned is assigned to the
+ variable _v_a_r_n_a_m_e named by the option argument. The variable
+ will be unset initially, before any assignment. This is useful
+ only when the --nn option is supplied. Supplying the --ff option,
+ when job control is enabled, forces wwaaiitt to wait for _i_d to ter-
+ minate before returning its status, instead of returning when it
+ changes status. If _i_d specifies a non-existent process or job,
+ the return status is 127. Otherwise, the return status is the
+ exit status of the last process or job waited for.
+
+SSHHEELLLL CCOOMMPPAATTIIBBIILLIITTYY MMOODDEE
+ Bash-4.0 introduced the concept of a `shell compatibility level', spec-
+ ified as a set of options to the shopt builtin ccoommppaatt3311, ccoommppaatt3322, ccoomm--
+ ppaatt4400, ccoommppaatt4411, and so on). There is only one current compatibility
+ level -- each option is mutually exclusive. The compatibility level is
+ intended to allow users to select behavior from previous versions that
+ is incompatible with newer versions while they migrate scripts to use
+ current features and behavior. It's intended to be a temporary solu-
+ tion.
+
+ This section does not mention behavior that is standard for a particu-
+ lar version (e.g., setting ccoommppaatt3322 means that quoting the rhs of the
+ regexp matching operator quotes special regexp characters in the word,
+ which is default behavior in bash-3.2 and above).
+
+ If a user enables, say, ccoommppaatt3322, it may affect the behavior of other
+ compatibility levels up to and including the current compatibility
+ level. The idea is that each compatibility level controls behavior
+ that changed in that version of bbaasshh, but that behavior may have been
+ present in earlier versions. For instance, the change to use locale-
+ based comparisons with the [[[[ command came in bash-4.1, and earlier
+ versions used ASCII-based comparisons, so enabling ccoommppaatt3322 will enable
+ ASCII-based comparisons as well. That granularity may not be suffi-
+ cient for all uses, and as a result users should employ compatibility
+ levels carefully. Read the documentation for a particular feature to
+ find out the current behavior.
+
+ Bash-4.3 introduced a new shell variable: BBAASSHH__CCOOMMPPAATT. The value as-
+ signed to this variable (a decimal version number like 4.2, or an inte-
+ ger corresponding to the ccoommppaatt_N_N option, like 42) determines the com-
+ patibility level.
+
+ Starting with bash-4.4, Bash has begun deprecating older compatibility
+ levels. Eventually, the options will be removed in favor of BBAASSHH__CCOOMM--
+ PPAATT.
+
+ Bash-5.0 is the final version for which there will be an individual
+ shopt option for the previous version. Users should use BBAASSHH__CCOOMMPPAATT on
+ bash-5.0 and later versions.
+
+ The following table describes the behavior changes controlled by each
+ compatibility level setting. The ccoommppaatt_N_N tag is used as shorthand for
+ setting the compatibility level to _N_N using one of the following mecha-
+ nisms. For versions prior to bash-5.0, the compatibility level may be
+ set using the corresponding ccoommppaatt_N_N shopt option. For bash-4.3 and
+ later versions, the BBAASSHH__CCOOMMPPAATT variable is preferred, and it is re-
+ quired for bash-5.1 and later versions.
+
+ ccoommppaatt3311
+ +o quoting the rhs of the [[[[ command's regexp matching oper-
+ ator (=~) has no special effect
+
+ ccoommppaatt3322
+ +o interrupting a command list such as "a ; b ; c" causes
+ the execution of the next command in the list (in
+ bash-4.0 and later versions, the shell acts as if it re-
+ ceived the interrupt, so interrupting one command in a
+ list aborts the execution of the entire list)
+
+ ccoommppaatt4400
+ +o the << and >> operators to the [[[[ command do not consider
+ the current locale when comparing strings; they use ASCII
+ ordering. Bash versions prior to bash-4.1 use ASCII col-
+ lation and _s_t_r_c_m_p(3); bash-4.1 and later use the current
+ locale's collation sequence and _s_t_r_c_o_l_l(3).
+
+ ccoommppaatt4411
+ +o in _p_o_s_i_x mode, ttiimmee may be followed by options and still
+ be recognized as a reserved word (this is POSIX interpre-
+ tation 267)
+ +o in _p_o_s_i_x mode, the parser requires that an even number of
+ single quotes occur in the _w_o_r_d portion of a double-
+ quoted parameter expansion and treats them specially, so
+ that characters within the single quotes are considered
+ quoted (this is POSIX interpretation 221)
+
+ ccoommppaatt4422
+ +o the replacement string in double-quoted pattern substitu-
+ tion does not undergo quote removal, as it does in ver-
+ sions after bash-4.2
+ +o in posix mode, single quotes are considered special when
+ expanding the _w_o_r_d portion of a double-quoted parameter
+ expansion and can be used to quote a closing brace or
+ other special character (this is part of POSIX interpre-
+ tation 221); in later versions, single quotes are not
+ special within double-quoted word expansions
+
+ ccoommppaatt4433
+ +o the shell does not print a warning message if an attempt
+ is made to use a quoted compound assignment as an argu-
+ ment to declare (declare -a foo='(1 2)'). Later versions
+ warn that this usage is deprecated
+ +o word expansion errors are considered non-fatal errors
+ that cause the current command to fail, even in posix
+ mode (the default behavior is to make them fatal errors
+ that cause the shell to exit)
+ +o when executing a shell function, the loop state
+ (while/until/etc.) is not reset, so bbrreeaakk or ccoonnttiinnuuee in
+ that function will break or continue loops in the calling
+ context. Bash-4.4 and later reset the loop state to pre-
+ vent this
+
+ ccoommppaatt4444
+ +o the shell sets up the values used by BBAASSHH__AARRGGVV and
+ BBAASSHH__AARRGGCC so they can expand to the shell's positional
+ parameters even if extended debugging mode is not enabled
+ +o a subshell inherits loops from its parent context, so
+ bbrreeaakk or ccoonnttiinnuuee will cause the subshell to exit.
+ Bash-5.0 and later reset the loop state to prevent the
+ exit
+ +o variable assignments preceding builtins like eexxppoorrtt and
+ rreeaaddoonnllyy that set attributes continue to affect variables
+ with the same name in the calling environment even if the
+ shell is not in posix mode
+
+ ccoommppaatt5500
+ +o Bash-5.1 changed the way $$RRAANNDDOOMM is generated to intro-
+ duce slightly more randomness. If the shell compatibility
+ level is set to 50 or lower, it reverts to the method
+ from bash-5.0 and previous versions, so seeding the ran-
+ dom number generator by assigning a value to RRAANNDDOOMM will
+ produce the same sequence as in bash-5.0
+ +o If the command hash table is empty, bash versions prior
+ to bash-5.1 printed an informational message to that ef-
+ fect, even when producing output that can be reused as
+ input. Bash-5.1 suppresses that message when the --ll op-
+ tion is supplied.
SSEEEE AALLSSOO
bash(1), sh(1)
diff --git a/doc/builtins.ps b/doc/builtins.ps
index c2f8de15..ae11c544 100644
--- a/doc/builtins.ps
+++ b/doc/builtins.ps
@@ -1,13 +1,13 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.22.3
-%%CreationDate: Wed Jan 2 09:14:38 2019
+%%Creator: groff version 1.22.4
+%%CreationDate: Wed Nov 18 15:13:06 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
%%+ font Symbol
%%+ font Courier
-%%DocumentSuppliedResources: procset grops 1.22 3
-%%Pages: 25
+%%DocumentSuppliedResources: procset grops 1.22 4
+%%Pages: 26
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
%%Orientation: Portrait
@@ -16,7 +16,7 @@
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
-%%BeginResource: procset grops 1.22 3
+%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
@@ -242,19 +242,19 @@ BP
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF -.219(NA)72 84 S
-(ME).219 E F0 1.325(bash, :, ., [, alias, bg, bind, break, b)108 96 R
-1.325(uiltin, caller)-.2 F 3.825(,c)-.4 G 1.324
-(d, command, compgen, complete, compopt, continue,)-3.825 F .903
-(declare, dirs, diso)108 108 R .903(wn, echo, enable, e)-.25 F -.25(va)
--.25 G .904(l, e).25 F -.15(xe)-.15 G .904(c, e).15 F .904(xit, e)-.15 F
-.904(xport, f)-.15 F .904(alse, fc, fg, getopts, hash, help, history)-.1
-F 3.404(,j)-.65 G(obs,)-3.404 E .133(kill, let, local, logout, map\214l\
-e, popd, printf, pushd, pwd, read, readonly)108 120 R 2.633(,r)-.65 G
-.133(eturn, set, shift, shopt, source, sus-)-2.633 F .279(pend, test, t\
-imes, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108
-132 R .279(ait \255 bash b)-.1 F .279(uilt-in commands, see)-.2 F/F2 10
-/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S(SH B)
-.329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063
+(ME).219 E F0 .288(bash, :, ., [, alias, bg, bind, break, b)108 96 R
+.287(uiltin, caller)-.2 F 2.787(,c)-.4 G .287
+(d, command, compgen, complete, compopt, continue, de-)-2.787 F .327
+(clare, dirs, diso)108 108 R .327(wn, echo, enable, e)-.25 F -.25(va)
+-.25 G .327(l, e).25 F -.15(xe)-.15 G .327(c, e).15 F .327(xit, e)-.15 F
+.327(xport, f)-.15 F .327(alse, fc, fg, getopts, hash, help, history)-.1
+F 2.827(,j)-.65 G .328(obs, kill,)-2.827 F .124(let, local, logout, map\
+\214le, popd, printf, pushd, pwd, read, readonly)108 120 R 2.624(,r)-.65
+G .124(eturn, set, shift, shopt, source, suspend,)-2.624 F 1.926(test, \
+times, trap, true, type, typeset, ulimit, umask, unalias, unset, w)108
+132 R 1.927(ait \255 bash b)-.1 F 1.927(uilt-in commands, see)-.2 F/F2
+10/Times-Bold@0 SF(bash)108 144 Q F0(\(1\))A F1 -.329(BA)72 160.8 S
+(SH B).329 E(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 .063
(Unless otherwise noted, each b)108 172.8 R .062(uiltin command documen\
ted in this section as accepting options preceded by)-.2 F F2<ad>108
184.8 Q F0(accepts)3.077 E F2<adad>3.077 E F0 .577
@@ -285,16 +285,15 @@ 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
+(xit)-.15 E 1.33(status of the last command e)144 327.6 R -.15(xe)-.15 G
+1.331(cuted from).15 F F3(\214lename)5.741 E F0 6.331(.I).18 G(f)-6.331
+E F3(\214lename)5.741 E F0 1.331(does not contain a slash, \214le-)4.011
+F .489(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)2.989 G(TH)
+-.189 E F0 .489(are used to \214nd the directory containing)2.739 F F3
+(\214lename)4.899 E F0 5.488(.T).18 G .488(he \214le searched for in)
+-5.488 F F4 -.666(PA)2.988 G(TH)-.189 E F0 .832(need not be e)144 351.6
+R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832
+(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833
(he current directory is searched if no)-3.332 F .982
(\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9
/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18
@@ -303,18 +302,18 @@ 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 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 F2<ad54>4.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 F2<ad54>2.86 E F0(is)2.86 E 1.435
+(\214lename)144 387.6 Q F0 .485(is e)2.985 F -.15(xe)-.15 G 2.985
+(cuted. Otherwise).15 F .485(the positional parameters are unchanged.)
+2.985 F .485(If the)5.485 F F2<ad54>2.985 E F0 .485(option is en-)2.985
+F(abled,)144 399.6 Q F2(sour)3.324 E(ce)-.18 E F0 .824(inherits an)3.324
+F 3.324(yt)-.15 G .824(rap on)-3.324 F F2(DEB)3.324 E(UG)-.1 E F0 3.324
+(;i)C 3.324(fi)-3.324 G 3.324(ti)-3.324 G 3.324(sn)-3.324 G .825(ot, an)
+-3.324 F(y)-.15 E F2(DEB)3.325 E(UG)-.1 E F0 .825(trap string is sa)
+3.325 F -.15(ve)-.2 G 3.325(da).15 G .825(nd re-)-3.325 F .817
+(stored around the call to)144 411.6 R F2(sour)3.317 E(ce)-.18 E F0
+3.317(,a)C(nd)-3.317 E F2(sour)3.317 E(ce)-.18 E F0 .817(unsets the)
+3.317 F F2(DEB)3.317 E(UG)-.1 E F0 .817(trap while it e)3.317 F -.15(xe)
+-.15 G 3.317(cutes. If).15 F F2<ad54>3.317 E F0(is)3.317 E 1.435
(not set, and the sourced \214le changes the)144 423.6 R F2(DEB)3.935 E
(UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435
(alue is retained when)-4.185 F F2(sour)3.935 E(ce)-.18 E F0 3.763
@@ -372,9 +371,9 @@ G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C
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
+(.inputr)144.23 714 Q(c)-.37 E F0 2.967(,b).31 G .467
+(ut each binding or command must be passed as a separate ar)-3.167 F
+.468(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5
(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E
.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 5.0)72
768 Q(2004 Apr 20)149.565 E(1)203.725 E 0 Cg EP
@@ -391,10 +390,10 @@ E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6d>144 84 Q/F2 10
(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
+(vi\255command)180 120 Q F0 4.09(,a)C(nd)-4.09 E F2(vi\255insert)4.38 E
+F0(.).68 E F2(vi)6.589 E F0 1.589(is equi)4.089 F -.25(va)-.25 G 1.589
+(lent to).25 F F2(vi\255command)4.089 E F0(\()4.089 E F2(vi\255mo)A(ve)
+-.1 E F0 1.589(is also a syn-)4.089 F(on)180 132 Q(ym\);)-.15 E F2
(emacs)2.5 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F2
(emacs\255standar)2.5 E(d)-.37 E F0(.)A F1<ad6c>144 144 Q F0
(List the names of all)180 144 Q F1 -.18(re)2.5 G(adline).18 E F0
@@ -430,220 +429,223 @@ E F2(function)2.5 E F0(.)A F1<ad75>144 288 Q F2(function)2.5 E F0
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 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.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.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 F1<ad58>144 408
-Q F0 .83(List all k)180 408 R 1.13 -.15(ey s)-.1 H .829
+-.18(re)180 372 S(adline).18 E F0 .375(line b)2.875 F(uf)-.2 E .375
+(fer and the)-.25 F F3(READLINE_POINT)2.875 E F0(and)2.625 E F3
+(READLINE_MARK)2.875 E F0 -.25(va)2.625 G .375(riables to the).25 F
+1.185(current location of the insertion point and the sa)180 384 R -.15
+(ve)-.2 G 3.686(di).15 G 1.186(nsertion point \(the mark\), respec-)
+-3.686 F(ti)180 396 Q -.15(ve)-.25 G(ly).15 E 5.702(.I)-.65 G 3.202(ft)
+-5.702 G .702(he e)-3.202 F -.15(xe)-.15 G .702
+(cuted command changes the v).15 F .701(alue of an)-.25 F 3.201(yo)-.15
+G(f)-3.201 E F3(READLINE_LINE)3.201 E/F4 9/Times-Roman@0 SF(,)A F3
+(READ-)2.951 E(LINE_POINT)180 408 Q F4(,)A F0(or)3.58 E F3
+(READLINE_MARK)3.83 E F4(,)A F0 1.33(those ne)3.58 F 3.83(wv)-.25 G
+1.331(alues will be re\215ected in the editing)-4.08 F(state.)180 420 Q
+F1<ad58>144 432 Q F0 .83(List all k)180 432 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 420 Q(The return v)
-144 436.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 444 Q(The return v)
+144 460.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 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
+E F1(br)108 477.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054
+(Exit from within a)144 489.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1
(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 SF<b3>2.555
-E F0(1.)2.555 E(If)144 477.6 Q F2(n)3.075 E F0 .215(is greater than the\
+E F0(1.)2.555 E(If)144 501.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 .793(xit status.)-.15 F .793(This is useful)5.793 F .616
+513.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2
+(bu)108 530.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E
+F2(ar)A(guments)-.37 E F0(])A(Ex)144 542.4 Q .77
+(ecute the speci\214ed shell b)-.15 F .77(uiltin, passing it)-.2 F F2
+(ar)3.601 E(guments)-.37 E F0 3.271(,a).27 G .771(nd return its e)-3.271
+F .771(xit status.)-.15 F .771(This is useful)5.771 F .616
(when de\214ning a function whose name is the same as a shell b)144
-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
+554.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144
+566.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0
-.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 554.4 Q(alse if)-.1
+5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 578.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
+(uiltin command.)-.2 E F1(caller)108 595.2 Q F0([)2.5 E F2 -.2(ex)C(pr)
+.2 E F0(])A .254(Returns the conte)144 607.2 R .254(xt of an)-.15 F
2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254
(ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G
-.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 595.2 Q
+.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 619.2 Q
(ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2
(ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324
(displays the line number and source \214lename of the current)2.824 F
-.254(subroutine call.)144 607.2 R .254(If a non-ne)5.254 F -.05(ga)-.15
+.254(subroutine call.)144 631.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 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
+ent e)144 643.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001
+(This e)144 655.2 R .001(xtra information may be used, for e)-.15 F .001
(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
+3.019(0. The)144 667.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
+(does not corre-)3.02 F(spond to a v)144 679.2 Q
+(alid position in the call stack.)-.25 E F1(cd)108 696 Q F0([)2.5 E F1
<ad4c>A F0(|[)A F1<ad50>A F0([)2.5 E F1<ad65>A F0(]] [\255@]] [)A F2
-(dir)A F0(])A .322(Change the current directory to)144 684 R F2(dir)
+(dir)A F0(])A .322(Change the current directory to)144 708 R F2(dir)
2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321
(is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E
-F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 696 R
+F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 720 R
3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035
(guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.)
3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666
-G(H).855 E F0(de\214nes)3.286 E .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 .665
-(ull directory name)-3.165 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E
-(2)203.725 E 0 Cg EP
+G(H).855 E F0(de\214nes)3.286 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(2)203.725 E 0 Cg EP
%%Page: 3 3
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(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 F2<ad50>2.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 F2<ad50>3.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 F2<ad4c>2.895 E F0 .395
-(option forces symbolic links to be follo)2.895 F .395(wed by resolv-)
--.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
-<ad65>3.966 E F0 1.466(option is supplied with)3.966 F F2<ad50>3.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 F2<ad40>2.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 192 R .71(gument of)-.18 F F2<ad>3.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
-.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 F2<ad>2.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 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
+E(UIL)-.1 E(TINS\(1\))-.92 E .827
+(the search path for the directory containing)144 84 R/F1 10
+/Times-Italic@0 SF(dir)3.676 E F0 3.326(:e).73 G .826
+(ach directory name in)-3.326 F/F2 9/Times-Bold@0 SF(CDP)3.326 E -.855
+(AT)-.666 G(H).855 E F0 .826(is searched for)3.076 F F1(dir)144 96 Q F0
+5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665
+(irectory names in).15 F F2(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0
+.665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665
+(ull directory name)-3.165 F(in)144 108 Q F2(CDP)3.102 E -.855(AT)-.666
+G(H).855 E F0 .602(is the same as the current directory)2.852 F 3.102
+(,i)-.65 G .602(.e., `)-3.102 F(`)-.74 E/F3 10/Times-Bold@0 SF(.)A F0
+-.74('')C 5.602(.I).74 G(f)-5.602 E F1(dir)3.451 E F0(be)3.831 E .601
+(gins with a slash \(/\), then)-.15 F F2(CD-)3.101 E -.666(PA)144 120 S
+(TH)-.189 E F0 1.003(is not used.)3.253 F(The)6.003 E F3<ad50>3.503 E F0
+1.003(option causes)3.503 F F3(cd)3.503 E F0 1.003(to use the ph)3.503 F
+1.003(ysical directory structure by resolving)-.05 F .123
+(symbolic links while tra)144 132 R -.15(ve)-.2 G(rsing).15 E F1(dir)
+2.623 E F0 .123(and before processing instances of)2.623 F F1(..)2.623 E
+F0(in)2.623 E F1(dir)2.623 E F0 .123(\(see also the)2.623 F F3<ad50>
+2.623 E F0(op-)2.622 E .429(tion to the)144 144 R F3(set)2.929 E F0 -.2
+(bu)2.929 G .429(iltin command\); the).2 F F3<ad4c>2.929 E F0 .43
+(option forces symbolic links to be follo)2.929 F .43(wed by resolving)
+-.25 F .473(the link after processing instances of)144 156 R F1(..)2.973
+E F0(in)2.973 E F1(dir)2.973 E F0 5.473(.I)C(f)-5.473 E F1(..)2.973 E F0
+.473(appears in)2.973 F F1(dir)2.972 E F0 2.972(,i)C 2.972(ti)-2.972 G
+2.972(sp)-2.972 G .472(rocessed by remo)-2.972 F .472(ving the)-.15 F
+.948(immediately pre)144 168 R .948(vious pathname component from)-.25 F
+F1(dir)3.448 E F0 3.448(,b)C .948(ack to a slash or the be)-3.448 F .948
+(ginning of)-.15 F F1(dir)3.448 E F0 5.948(.I)C(f)-5.948 E(the)144 180 Q
+F3<ad65>2.868 E F0 .368(option is supplied with)2.868 F F3<ad50>2.868 E
+F0 2.868(,a)C .368(nd the current w)-2.868 F .368
+(orking directory cannot be successfully deter)-.1 F(-)-.2 E .612
+(mined after a successful directory change,)144 192 R F3(cd)3.112 E F0
+.612(will return an unsuccessful status.)3.112 F .613(On systems that)
+5.612 F .354(support it, the)144 204 R F3<ad40>2.854 E F0 .354
+(option presents the e)2.854 F .354(xtended attrib)-.15 F .354
+(utes associated with a \214le as a directory)-.2 F 5.353(.A)-.65 G(n)
+-5.353 E(ar)144 216 Q .072(gument of)-.18 F F3<ad>2.572 E F0 .072
+(is con)2.572 F -.15(ve)-.4 G .072(rted to).15 F F2($OLDPWD)2.572 E F0
+.072(before the directory change is attempted.)2.322 F .072
+(If a non-empty)5.072 F .055(directory name from)144 228 R F2(CDP)2.555
+E -.855(AT)-.666 G(H).855 E F0 .055(is used, or if)2.305 F F3<ad>2.555 E
+F0 .055(is the \214rst ar)2.555 F .054
+(gument, and the directory change is suc-)-.18 F .168
+(cessful, the absolute pathname of the ne)144 240 R 2.668(ww)-.25 G .168
+(orking directory is written to the standard output.)-2.768 F(The)5.168
+E(return v)144 252 Q(alue is true if the directory w)-.25 E
+(as successfully changed; f)-.1 E(alse otherwise.)-.1 E F3(command)108
+268.8 Q F0([)2.5 E F3(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1
+(ar)A(g)-.37 E F0(...])2.5 E(Run)144 280.8 Q F1(command)2.765 E F0(with)
+3.335 E F1(ar)2.895 E(gs)-.37 E F0 .065
(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 F2<ad70>3.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
+F .064(uiltin commands or)-.2 F .501(commands found in the)144 292.8 R
+F2 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G
+3.002(cuted. If).15 F(the)3.002 E F3<ad70>3.002 E F0 .502(option is gi)
+3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E
+F0(is)3.772 E .4(performed using a def)144 304.8 R .4(ault v)-.1 F .4
+(alue for)-.25 F F2 -.666(PA)2.9 G(TH)-.189 E F0 .399
(that is guaranteed to \214nd all of the standard utilities.)2.649 F(If)
-5.399 E .174(either the)144 292.8 R F2<ad56>2.674 E F0(or)2.674 E F2
-<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F3
-(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F2<ad76>2.675 E
-F0 .175(option causes)2.675 F 3.318(as)144 304.8 S .818(ingle w)-3.318 F
+5.399 E .174(either the)144 316.8 R F3<ad56>2.674 E F0(or)2.674 E F3
+<ad76>2.674 E F0 .175(option is supplied, a description of)2.674 F F1
+(command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F3<ad76>2.675 E
+F0 .175(option causes)2.675 F 3.318(as)144 328.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 F2<ad56>144 316.8 Q F0 .249(option produces a more v)2.749 F .249
-(erbose description.)-.15 F .249(If the)5.249 F F2<ad56>2.749 E F0(or)
-2.749 E F2<ad76>2.75 E F0 .25(option is supplied, the e)2.75 F .25
-(xit status)-.15 F 1.005(is 0 if)144 328.8 R F3(command)3.705 E F0 -.1
+-.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087
+F F3<ad56>144 340.8 Q F0 .249(option produces a more v)2.749 F .249
+(erbose description.)-.15 F .249(If the)5.249 F F3<ad56>2.749 E F0(or)
+2.749 E F3<ad76>2.75 E F0 .25(option is supplied, the e)2.75 F .25
+(xit status)-.15 F 1.005(is 0 if)144 352.8 R F1(command)3.705 E F0 -.1
(wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004
-(If neither option is supplied and an error occurred or)6.005 F F3
-(command)144.2 340.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599
+(If neither option is supplied and an error occurred or)6.005 F F1
+(command)144.2 364.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
+(xit status of the)-.15 F F3(command)4.099 E F0 -.2(bu)144 376.8 S
+(iltin is the e).2 E(xit status of)-.15 E F1(command)2.7 E F0(.).77 E F3
+(compgen)108 393.6 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d)
+-.37 E F0(])A .013(Generate possible completion matches for)144 405.6 R
+F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513
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 F2<ad70>3.481 E F0(and)
-3.481 E F2<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the)
--3.481 F .131(standard output.)144 405.6 R .131(When using the)5.131 F
-F2<ad46>2.631 E F0(or)2.631 E F2<ad43>2.631 E F0 .131(options, the v)
+(accepted by the)144 417.6 R F3(complete)3.481 E F0 -.2(bu)3.481 G .981
+(iltin with the e).2 F .981(xception of)-.15 F F3<ad70>3.481 E F0(and)
+3.481 E F3<ad72>3.481 E F0 3.481(,a)C .982(nd write the matches to the)
+-3.481 F .131(standard output.)144 429.6 R .131(When using the)5.131 F
+F3<ad46>2.631 E F0(or)2.631 E F3<ad43>2.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
+F(mable completion f)144 441.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
+E .352(The matches will be generated in the same w)144 465.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
-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
+477.6 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only)
+2.52 F(those completions matching)144 489.6 Q F1(wor)2.5 E(d)-.37 E F0
+(will be displayed.)2.5 E(The return v)144 513.6 Q
(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 506.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C
-F2<ad6f>-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404
-E F0 3.404(][)C F2<ad41>-3.404 E F3(action)3.404 E F0 3.404(][)C F2
-<ad47>-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2<ad57>-3.404 E F3(wor)
-3.404 E(dlist)-.37 E F0 3.405(][)C F2<ad46>-3.405 E F3(func-)3.405 E
-(tion)108 518.4 Q F0 2.5(][)C F2<ad43>-2.5 E F3(command)2.5 E F0(])A([)
-144 530.4 Q F2<ad58>A F3(\214lterpat)2.5 E F0 2.5(][)C F2<ad50>-2.5 E F3
-(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2<ad53>-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(\255DEI)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 F2<ad70>3.133 E F0
-.633(option is supplied, or if no)3.133 F .139(options are supplied, e)
-144 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 578.4 R(The)5.31 E F2<ad72>2.81 E F0 .31
-(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31
-(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C
-1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207
-(are supplied, all completion speci\214cations.)144 590.4 R(The)6.207 E
-F2<ad44>3.707 E F0 1.208(option indicates that other supplied options)
-3.708 F .5(and actions should apply to the `)144 602.4 R(`def)-.74 E
+(lid option is supplied, or no matches were generated.).25 E F3
+(complete)108 530.4 Q F0([)2.5 E F3(\255abcdefgjksuv)A F0 2.5(][)C F3
+<ad6f>-2.5 E F1(comp-option)2.5 E F0 2.5(][)C F3(\255DEI)-2.5 E F0 2.5
+(][)C F3<ad41>-2.5 E F1(action)2.5 E F0 2.5(][)C F3<ad47>-2.5 E F1
+(globpat)2.5 E F0 2.5(][)C F3<ad57>-2.5 E F1(wor)2.5 E(dlist)-.37 E F0
+(])A([)144 542.4 Q F3<ad46>A F1(function)2.5 E F0 2.5(][)C F3<ad43>-2.5
+E F1(command)2.5 E F0 2.5(][)C F3<ad58>-2.5 E F1(\214lterpat)2.5 E F0
+2.5(][)C F3<ad50>-2.5 E F1(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F3<ad53>
+-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(])A F1(name)2.5 E F0([)2.5 E F1
+(name ...)A F0(])A F3(complete \255pr)108 554.4 Q F0([)2.5 E F3(\255DEI)
+A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E .633(Specify ho)144 566.4 R
+3.133(wa)-.25 G -.18(rg)-3.133 G .633(uments to each).18 F F1(name)3.133
+E F0 .633(should be completed.)3.133 F .634(If the)5.634 F F3<ad70>3.134
+E F0 .634(option is supplied, or if no)3.134 F .14
+(options are supplied, e)144 578.4 R .139
+(xisting completion speci\214cations are printed in a w)-.15 F .139
+(ay that allo)-.1 F .139(ws them to be)-.25 F .31(reused as input.)144
+590.4 R(The)5.31 E F3<ad72>2.81 E F0 .31(option remo)2.81 F -.15(ve)-.15
+G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F1(name)
+2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F1
+(name)2.81 E F0(s)A 1.208
+(are supplied, all completion speci\214cations.)144 602.4 R(The)6.208 E
+F3<ad44>3.708 E F0 1.207(option indicates that other supplied options)
+3.707 F .5(and actions should apply to the `)144 614.4 R(`def)-.74 E
(ault')-.1 E 3('c)-.74 G .5
(ommand completion; that is, completion attempted on)-3 F 3.455(ac)144
-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 F2<ad45>3.455 E F0 .955
+626.4 S .955(ommand for which no completion has pre)-3.455 F .955
+(viously been de\214ned.)-.25 F(The)5.955 E F3<ad45>3.455 E F0 .955
(option indicates that)3.455 F .876
-(other supplied options and actions should apply to `)144 626.4 R
+(other supplied options and actions should apply to `)144 638.4 R
(`empty')-.74 E 3.376('c)-.74 G .876(ommand completion; that is, com-)
--3.376 F .447(pletion attempted on a blank line.)144 638.4 R(The)5.447 E
-F2<ad49>2.947 E F0 .448
-(option indicates that other supplied options and actions)2.947 F 1.335
-(should apply to completion on the inital non-assignment w)144 650.4 R
-1.334(ord on the line, or after a command)-.1 F .43(delimiter such as)
-144 662.4 R F2(;)2.93 E F0(or)2.93 E F2(|)2.93 E F0 2.93(,w)C .431
-(hich is usually command name completion.)-2.93 F .431
-(If multiple options are sup-)5.431 F .708(plied, the)144 674.4 R F2
-<ad44>3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15
-(ve)-.15 G(r).15 E F2<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
-F 3.208(ep)-.1 G .707(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F2
-<ad49>3.207 E F0 5.707(.I)C 3.207(fa)-5.707 G 1.007 -.15(ny o)-3.207 H
-(f).15 E F2<ad44>3.207 E F0(,)A F2<ad45>144 686.4 Q F0 2.603(,o)C(r)
--2.603 E F2<ad49>2.603 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
-G(ther)-2.603 E F3(name)2.603 E F0(ar)2.603 E .103
+-3.376 F .448(pletion attempted on a blank line.)144 650.4 R(The)5.447 E
+F3<ad49>2.947 E F0 .447
+(option indicates that other supplied options and actions)2.947 F .123
+(should apply to completion on the initial non-assignment w)144 662.4 R
+.123(ord on the line, or after a command de-)-.1 F 1.021
+(limiter such as)144 674.4 R F3(;)3.521 E F0(or)3.521 E F3(|)3.521 E F0
+3.521(,w)C 1.021(hich is usually command name completion.)-3.521 F 1.02
+(If multiple options are sup-)6.02 F .707(plied, the)144 686.4 R F3
+<ad44>3.207 E F0 .707(option tak)3.207 F .707(es precedence o)-.1 F -.15
+(ve)-.15 G(r).15 E F3<ad45>3.208 E F0 3.208(,a)C .708(nd both tak)-3.208
+F 3.208(ep)-.1 G .708(recedence o)-3.208 F -.15(ve)-.15 G(r).15 E F3
+<ad49>3.208 E F0 5.708(.I)C 3.208(fa)-5.708 G 1.008 -.15(ny o)-3.208 H
+(f).15 E F3<ad44>3.208 E F0(,)A F3<ad45>144 698.4 Q F0 2.604(,o)C(r)
+-2.604 E F3<ad49>2.604 E F0 .103(are supplied, an)2.603 F 2.603(yo)-.15
+G(ther)-2.603 E F1(name)2.603 E F0(ar)2.603 E .103
(guments are ignored; these completions only apply to the)-.18 F
-(case speci\214ed by the option.)144 698.4 Q 1.438
-(The process of applying these completion speci\214cations when w)144
-722.4 R 1.437(ord completion is attempted is)-.1 F(GNU Bash 5.0)72 768 Q
+(case speci\214ed by the option.)144 710.4 Q(GNU Bash 5.0)72 768 Q
(2004 Apr 20)149.565 E(3)203.725 E 0 Cg EP
%%Page: 4 4
%%BeginPageSetup
@@ -651,72 +653,74 @@ BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(described abo)144 84 Q .3 -.15(ve u)-.15 H
-(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E(ogrammable Completion)-.18 E
-F0(.)A .555(Other options, if speci\214ed, ha)144 108 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 F1<ad47>3.056 E F0(,)A F1<ad57>3.056 E F0
-3.056(,a)C(nd)-3.056 E F1<ad58>3.056 E F0 .723
-(options \(and, if necessary)144 120 R 3.223(,t)-.65 G(he)-3.223 E F1
-<ad50>3.223 E F0(and)3.223 E F1<ad53>3.223 E F0 .722
-(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E
-(sion before the)144 132 Q F1(complete)2.5 E F0 -.2(bu)2.5 G
-(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144 144 Q/F2
-10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 156 Q F2(comp-option)
-2.79 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291
+E(UIL)-.1 E(TINS\(1\))-.92 E .152
+(The process of applying these completion speci\214cations when w)144 84
+R .153(ord completion is attempted is de-)-.1 F(scribed abo)144 96 Q .3
+-.15(ve u)-.15 H(nder).15 E/F1 10/Times-Bold@0 SF(Pr)2.5 E
+(ogrammable Completion)-.18 E F0(.)A .556
+(Other options, if speci\214ed, ha)144 120 R .856 -.15(ve t)-.2 H .555
+(he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555
+(guments to the)-.18 F F1<ad47>3.055 E F0(,)A F1<ad57>3.055 E F0 3.055
+(,a)C(nd)-3.055 E F1<ad58>3.055 E F0 .722(options \(and, if necessary)
+144 132 R 3.222(,t)-.65 G(he)-3.222 E F1<ad50>3.222 E F0(and)3.222 E F1
+<ad53>3.222 E F0 .723(options\) should be quoted to protect them from e)
+3.222 F(xpan-)-.15 E(sion before the)144 144 Q F1(complete)2.5 E F0 -.2
+(bu)2.5 G(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F1<ad6f>144
+156 Q/F2 10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 168 Q F2
+(comp-option)2.791 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291
(ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291
(vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.)
-184 168 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184
-180 Q F0 .281(Perform the rest of the def)224 192 R(ault)-.1 E F1(bash)
+184 180 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184
+192 Q F0 .281(Perform the rest of the def)224 204 R(ault)-.1 E F1(bash)
2.781 E F0 .281(completions if the compspec generates no)2.781 F
-(matches.)224 204 Q F1(default)184 216 Q F0 2.875(Use readline')224 216
-R 5.375(sd)-.55 G(ef)-5.375 E 2.876
+(matches.)224 216 Q F1(default)184 228 Q F0 2.876(Use readline')224 228
+R 5.376(sd)-.55 G(ef)-5.376 E 2.875
(ault \214lename completion if the compspec generates no)-.1 F(matches.)
-224 228 Q F1(dir)184 240 Q(names)-.15 E F0(Perform directory name compl\
-etion if the compspec generates no matches.)224 252 Q F1(\214lenames)184
-264 Q F0 -.7(Te)224 276 S .137(ll readline that the compspec generates \
-\214lenames, so it can perform an).7 F 2.636<798c>-.15 G(le-)-2.636 E
-.134(name\255speci\214c processing \(lik)224 288 R 2.634(ea)-.1 G .134
+224 240 Q F1(dir)184 252 Q(names)-.15 E F0(Perform directory name compl\
+etion if the compspec generates no matches.)224 264 Q F1(\214lenames)184
+276 Q F0 -.7(Te)224 288 S .137(ll readline that the compspec generates \
+\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E
+.134(name\255speci\214c processing \(lik)224 300 R 2.634(ea)-.1 G .134
(dding a slash to directory names, quoting spe-)-2.634 F .45
-(cial characters, or suppressing trailing spaces\).)224 300 R .45
-(Intended to be used with shell)5.45 F(functions.)224 312 Q F1(noquote)
-184 324 Q F0 -.7(Te)224 324 S .814
+(cial characters, or suppressing trailing spaces\).)224 312 R .45
+(Intended to be used with shell)5.45 F(functions.)224 324 Q F1(noquote)
+184 336 Q F0 -.7(Te)224 336 S .814
(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 336 Q(ault\).)-.1 E F1(nosort)184 348 Q F0
--.7(Te)224 348 S(ll readline not to sort the list of possible completio\
-ns alphabetically).7 E(.)-.65 E F1(nospace)184 360 Q F0 -.7(Te)224 360 S
+3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F
+(\214lenames is the def)224 348 Q(ault\).)-.1 E F1(nosort)184 360 Q F0
+-.7(Te)224 360 S(ll readline not to sort the list of possible completio\
+ns alphabetically).7 E(.)-.65 E F1(nospace)184 372 Q F0 -.7(Te)224 372 S
.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 372 Q F1
-(plusdirs)184 384 Q F0 1.985(After an)224 384 R 4.485(ym)-.15 G 1.985
+F .22(ords completed at the end)-.1 F(of the line.)224 384 Q F1
+(plusdirs)184 396 Q F0 1.985(After an)224 396 R 4.485(ym)-.15 G 1.985
(atches de\214ned by the compspec are generated, directory name)-4.485 F
-.584(completion is attempted and an)224 396 R 3.084(ym)-.15 G .584
-(atches are added to the results of the other)-3.084 F(actions.)224 408
-Q F1<ad41>144 420 Q F2(action)2.5 E F0(The)184 432 Q F2(action)2.5 E F0
+.583(completion is attempted and an)224 408 R 3.084(ym)-.15 G .584
+(atches are added to the results of the other)-3.084 F(actions.)224 420
+Q F1<ad41>144 432 Q F2(action)2.5 E F0(The)184 444 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
-444 Q F0(Alias names.)224 444 Q(May also be speci\214ed as)5 E F1<ad61>
-2.5 E F0(.)A F1(arrayv)184 456 Q(ar)-.1 E F0(Array v)224 468 Q
-(ariable names.)-.25 E F1(binding)184 480 Q(Readline)224 480 Q F0 -.1
-(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 492 S(iltin)
-.2 E F0(Names of shell b)224 492 Q(uiltin commands.)-.2 E
-(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 504
-Q F0(Command names.)224 516 Q(May also be speci\214ed as)5 E F1<ad63>2.5
-E F0(.)A F1(dir)184 528 Q(ectory)-.18 E F0(Directory names.)224 540 Q
-(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 552
-Q F0(Names of disabled shell b)224 564 Q(uiltins.)-.2 E F1(enabled)184
-576 Q F0(Names of enabled shell b)224 576 Q(uiltins.)-.2 E F1(export)184
-588 Q F0(Names of e)224 588 Q(xported shell v)-.15 E 2.5(ariables. May)
+456 Q F0(Alias names.)224 456 Q(May also be speci\214ed as)5 E F1<ad61>
+2.5 E F0(.)A F1(arrayv)184 468 Q(ar)-.1 E F0(Array v)224 480 Q
+(ariable names.)-.25 E F1(binding)184 492 Q(Readline)224 492 Q F0 -.1
+(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 504 S(iltin)
+.2 E F0(Names of shell b)224 504 Q(uiltin commands.)-.2 E
+(May also be speci\214ed as)5 E F1<ad62>2.5 E F0(.)A F1(command)184 516
+Q F0(Command names.)224 528 Q(May also be speci\214ed as)5 E F1<ad63>2.5
+E F0(.)A F1(dir)184 540 Q(ectory)-.18 E F0(Directory names.)224 552 Q
+(May also be speci\214ed as)5 E F1<ad64>2.5 E F0(.)A F1(disabled)184 564
+Q F0(Names of disabled shell b)224 576 Q(uiltins.)-.2 E F1(enabled)184
+588 Q F0(Names of enabled shell b)224 588 Q(uiltins.)-.2 E F1(export)184
+600 Q F0(Names of e)224 600 Q(xported shell v)-.15 E 2.5(ariables. May)
-.25 F(also be speci\214ed as)2.5 E F1<ad65>2.5 E F0(.)A F1(\214le)184
-600 Q F0(File names.)224 600 Q(May also be speci\214ed as)5 E F1<ad66>
-2.5 E F0(.)A F1(function)184 612 Q F0(Names of shell functions.)224 624
-Q F1(gr)184 636 Q(oup)-.18 E F0(Group names.)224 636 Q
+612 Q F0(File names.)224 612 Q(May also be speci\214ed as)5 E F1<ad66>
+2.5 E F0(.)A F1(function)184 624 Q F0(Names of shell functions.)224 636
+Q F1(gr)184 648 Q(oup)-.18 E F0(Group names.)224 648 Q
(May also be speci\214ed as)5 E F1<ad67>2.5 E F0(.)A F1(helptopic)184
-648 Q F0(Help topics as accepted by the)224 660 Q F1(help)2.5 E F0 -.2
-(bu)2.5 G(iltin.).2 E F1(hostname)184 672 Q F0(Hostnames, as tak)224 684
+660 Q F0(Help topics as accepted by the)224 672 Q F1(help)2.5 E F0 -.2
+(bu)2.5 G(iltin.).2 E F1(hostname)184 684 Q F0(Hostnames, as tak)224 696
Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF
-(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 696 Q F0
-(Job names, if job control is acti)224 696 Q -.15(ve)-.25 G 5(.M).15 G
+(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 708 Q F0
+(Job names, if job control is acti)224 708 Q -.15(ve)-.25 G 5(.M).15 G
(ay also be speci\214ed as)-5 E F1<ad6a>2.5 E F0(.)A(GNU Bash 5.0)72 768
Q(2004 Apr 20)149.565 E(4)203.725 E 0 Cg EP
%%Page: 5 5
@@ -741,95 +745,95 @@ F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1
(May also be speci\214ed as)5 E F1<ad75>2.5 E F0(.)A F1 -.1(va)184 192 S
(riable).1 E F0(Names of all shell v)224 192 Q 2.5(ariables. May)-.25 F
(also be speci\214ed as)2.5 E F1<ad76>2.5 E F0(.)A F1<ad43>144 204 Q/F2
-10/Times-Italic@0 SF(command)2.5 E(command)184 216 Q F0 1.055(is e)3.555
-F -.15(xe)-.15 G 1.055(cuted in a subshell en).15 F 1.056
+10/Times-Italic@0 SF(command)2.5 E(command)184 216 Q F0 1.056(is e)3.556
+F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056
(vironment, and its output is used as the possible)-.4 F(completions.)
-184 228 Q F1<ad46>144 240 Q F2(function)2.5 E F0 .114
+184 228 Q F1<ad46>144 240 Q F2(function)2.5 E F0 .113
(The shell function)184 252 R F2(function)2.614 E F0 .114(is e)2.614 F
-.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 264 R
--.15(xe)-.15 G .816(cuted, the \214rst ar).15 F .816(gument \()-.18 F F1
-($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .817
+(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 264 R
+-.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1
+($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816
(he name of the command whose ar)-3.316 F(guments)-.18 E 1.407
(are being completed, the second ar)184 276 R 1.407(gument \()-.18 F F1
($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 288 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 300 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)
+(ord being completed, and the)-.1 F .104(third ar)184 288 R .104
+(gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w)
+-2.604 F .104(ord preceding the w)-.1 F .103
+(ord being completed on the current com-)-.1 F .101(mand line.)184 300 R
+.101(When it \214nishes, the possible completions are retrie)5.101 F
+-.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the)
-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 312 Q(Y)-.828 E F0(array v)2.25
-E(ariable.)-.25 E F1<ad47>144 324 Q F2(globpat)2.5 E F0 1.007
-(The pathname e)184 336 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-)
+E(ariable.)-.25 E F1<ad47>144 324 Q F2(globpat)2.5 E F0 1.008
+(The pathname e)184 336 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507
+E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-)
-.15 F(tions.)184 348 Q F1<ad50>144 360 Q F2(pr)2.5 E(e\214x)-.37 E(pr)
-184 372 Q(e\214x)-.37 E F0 .535(is added at the be)3.035 F .534
+184 372 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534
(ginning of each possible completion after all other options ha)-.15 F
-.15(ve)-.2 G(been applied.)184 384 Q F1<ad53>144 396 Q F2(suf)2.5 E
<8c78>-.18 E(suf)184 396 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 F1<ad57>144 408 Q F2(wor)2.5 E
-(dlist)-.37 E F0(The)184 420 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 .981
-(each resultant w)184 432 R .981(ord is e)-.1 F 3.481(xpanded. Shell)
--.15 F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37
-E F0 3.48(,i)C 3.48(no)-3.48 G .98(rder to)-3.48 F(pro)184 444 Q .765
-(vide a mechanism for the w)-.15 F .766
+(dlist)-.37 E F0(The)184 420 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14
+(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139
+(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98
+(each resultant w)184 432 R .98(ord is e)-.1 F 3.481(xpanded. Shell)-.15
+F .981(quoting is honored within)3.481 F F2(wor)3.481 E(dlist)-.37 E F0
+3.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 444 Q .766
+(vide a mechanism for the w)-.15 F .765
(ords to contain shell metacharacters or characters in the)-.1 F -.25
-(va)184 456 S 1.965(lue of).25 F F3(IFS)4.465 E/F4 9/Times-Roman@0 SF(.)
+(va)184 456 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.)
A F0 1.964
(The possible completions are the members of the resultant list which)
-6.465 F(match the w)184 468 Q(ord being completed.)-.1 E F1<ad58>144 480
-Q F2(\214lterpat)2.5 E(\214lterpat)184 492 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
+6.464 F(match the w)184 468 Q(ord being completed.)-.1 E F1<ad58>144 480
+Q F2(\214lterpat)2.5 E(\214lterpat)184 492 Q F0 .456
+(is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F
+.455(is applied to the list of possible)2.956 F 1.596
(completions generated by the preceding options and ar)184 504 R 1.596
(guments, and each completion)-.18 F(matching)184 516 Q F2(\214lterpat)
-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
+3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704
+(rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0
+(in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704
(tes the pattern;).05 F(in this case, an)184 528 Q 2.5(yc)-.15 G
(ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E
--.15(ve)-.15 G(d.).15 E .467(The return v)144 544.8 R .467
+-.15(ve)-.15 G(d.).15 E .466(The return v)144 544.8 R .466
(alue is true unless an in)-.25 F -.25(va)-.4 G .466
-(lid option is supplied, an option other than).25 F F1<ad70>2.966 E F0
-(or)2.966 E F1<ad72>2.966 E F0 .466(is sup-)2.966 F 1.361
-(plied without a)144 556.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 568.8 Q F0
+(lid option is supplied, an option other than).25 F F1<ad70>2.967 E F0
+(or)2.967 E F1<ad72>2.967 E F0 .467(is sup-)2.967 F 1.362
+(plied without a)144 556.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 568.8 Q F0
(for which no speci\214cation e)2.5 E
(xists, or an error occurs adding a completion speci\214cation.)-.15 E
F1(compopt)108 585.6 Q F0([)2.5 E F1<ad6f>A F2(option)2.5 E F0 2.5(][)C
F1(\255DEI)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C
F2(name)-2.5 E F0(])A .447(Modify completion options for each)144 597.6
R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0
-.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .725
-(completion if no)144 609.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
+.447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726
+(completion if no)144 609.6 R F2(name)3.226 E F0 3.226(sa)C .726
+(re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa)
+C .725(re gi)-3.225 F -.15(ve)-.25 G .725
(n, display the completion options for).15 F(each)144 621.6 Q F2(name)
-3.224 E F0 .724(or the current completion.)3.224 F .724(The possible v)
+3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v)
5.724 F .724(alues of)-.25 F 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 633.6 Q F0 -.2(bu)
-2.677 G .177(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
+F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 633.6 Q F0 -.2(bu)
+2.678 G .178(iltin described abo).2 F -.15(ve)-.15 G 5.178(.T).15 G(he)
-5.178 E F1<ad44>2.678 E F0 .178
(option indicates that other supplied options should apply to)2.678 F
-1.228(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.728('c)-.74 G 1.228(o\
+1.227(the `)144 645.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\
mmand completion; that is, completion attempted on a command for which \
-no)-3.728 F 2.038(completion has pre)144 657.6 R 2.038
-(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.039
-(option indicates that other supplied options)4.538 F 1.539
-(should apply to `)144 669.6 R(`empty')-.74 E 4.039('c)-.74 G 1.538
+no)-3.727 F 2.039(completion has pre)144 657.6 R 2.039
+(viously been de\214ned.)-.25 F(The)7.038 E F1<ad45>4.538 E F0 2.038
+(option indicates that other supplied options)4.538 F 1.538
+(should apply to `)144 669.6 R(`empty')-.74 E 4.038('c)-.74 G 1.539
(ommand completion; that is, completion attempted on a blank line.)
--4.039 F(The)144 681.6 Q F1<ad49>3.205 E F0 .705(option indicates that \
-other supplied options should apply to completion on the inital non-)
-3.205 F .868(assignment w)144 693.6 R .868
+-4.038 F(The)144 681.6 Q F1<ad49>3.02 E F0 .52(option indicates that ot\
+her supplied options should apply to completion on the initial non-)3.02
+F .867(assignment w)144 693.6 R .868
(ord on the line, or after a command delimiter such as)-.1 F F1(;)3.368
-E F0(or)3.368 E F1(|)3.368 E F0 3.367(,w)C .867(hich is usually com-)
--3.367 F(mand name completion.)144 705.6 Q 1.387(The return v)144 729.6
-R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388
+E F0(or)3.368 E F1(|)3.368 E F0 3.368(,w)C .868(hich is usually com-)
+-3.368 F(mand name completion.)144 705.6 Q 1.388(The return v)144 729.6
+R 1.388(alue is true unless an in)-.25 F -.25(va)-.4 G 1.387
(lid option is supplied, an attempt is made to modify the).25 F
(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(5)203.725 E 0 Cg EP
%%Page: 6 6
@@ -841,239 +845,247 @@ BP
E(UIL)-.1 E(TINS\(1\))-.92 E(options for a)144 84 Q/F1 10/Times-Italic@0
SF(name)2.5 E F0(for which no completion speci\214cation e)2.5 E
(xists, or an output error occurs.)-.15 E/F2 10/Times-Bold@0 SF
-(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A 1.754(Resume the ne)144
-112.8 R 1.754(xt iteration of the enclosing)-.15 F F2 -.25(fo)4.254 G(r)
-.25 E F0(,)A F2(while)4.254 E F0(,)A F2(until)4.254 E F0 4.254(,o)C(r)
--4.254 E F2(select)4.254 E F0 4.253(loop. If)4.254 F F1(n)4.613 E F0
-1.753(is speci\214ed,)4.493 F 1.208(resume at the)144 124.8 R F1(n)3.709
-E F0 1.209(th enclosing loop.)B F1(n)6.569 E F0 1.209(must be)3.949 F/F3
-10/Symbol SF<b3>3.709 E F0 3.709(1. If)3.709 F F1(n)4.069 E F0 1.209
-(is greater than the number of enclosing)3.949 F .514
-(loops, the last enclosing loop \(the `)144 136.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 F1(n)3.013 E F0(is)
-3.013 E(not greater than or equal to 1.)144 148.8 Q F2(declar)108 165.6
-Q(e)-.18 E F0([)2.5 E F2(\255aAfFgilnrtux)A F0 2.5(][)C F2<ad70>-2.5 E
-F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C(..])-2.5 E F2
-(typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgilnrtux)A F0 2.5(][)C F2
+(continue)108 100.8 Q F0([)2.5 E F1(n)A F0(])A .85(Resume the ne)144
+112.8 R .85(xt iteration of the enclosing)-.15 F F2 -.25(fo)3.35 G(r).25
+E F0(,)A F2(while)3.351 E F0(,)A F2(until)3.351 E F0 3.351(,o)C(r)-3.351
+E F2(select)3.351 E F0 3.351(loop. If)3.351 F F1(n)3.711 E F0 .851
+(is speci\214ed, re-)3.591 F .204(sume at the)144 124.8 R F1(n)2.704 E
+F0 .204(th enclosing loop.)B F1(n)5.564 E F0 .204(must be)2.944 F/F3 10
+/Symbol SF<b3>2.704 E F0 2.703(1. If)2.704 F F1(n)3.063 E F0 .203
+(is greater than the number of enclosing loops,)2.943 F 1.183
+(the last enclosing loop \(the `)144 136.8 R(`top-le)-.74 E -.15(ve)-.25
+G(l').15 E 3.683('l)-.74 G 1.183(oop\) is resumed.)-3.683 F 1.184
+(The return v)6.184 F 1.184(alue is 0 unless)-.25 F F1(n)3.684 E F0
+1.184(is not)3.684 F(greater than or equal to 1.)144 148.8 Q F2(declar)
+108 165.6 Q(e)-.18 E F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0 2.5(][)C F2
<ad70>-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C
-(..])-2.5 E 1.264(Declare v)144 189.6 R 1.264(ariables and/or gi)-.25 F
-1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no)
-3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25
-G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F
--.25(va)144 201.6 S 3.483(riables. The).25 F F2<ad70>3.483 E F0 .983
-(option will display the attrib)3.483 F .983(utes and v)-.2 F .982
-(alues of each)-.25 F F1(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F2
-<ad70>3.482 E F0 .982(is used)3.482 F(with)144 213.6 Q F1(name)2.774 E
-F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F2
-<ad66>2.775 E F0(and)2.775 E F2<ad46>2.775 E F0 2.775(,a)C .275
-(re ignored.)-2.775 F(When)5.275 E F2<ad70>2.775 E F0 .275(is supplied)
-2.775 F(without)144 225.6 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 237.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 F2<ad70>3.682
-E F0(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144
-249.6 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12
-(ariables. The)-.25 F F2<ad66>3.12 E F0 .62
-(option will restrict the display)3.12 F 1.29(to shell functions.)144
-261.6 R(The)6.29 E F2<ad46>3.79 E F0 1.291(option inhibits the display \
-of function de\214nitions; only the function)3.791 F .948
-(name and attrib)144 273.6 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
-285.6 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19
-F(The)6.69 E F2<ad46>4.19 E F0(option)4.19 E(implies)144 297.6 Q F2
-<ad66>3.892 E F0 6.392(.T)C(he)-6.392 E F2<ad67>3.892 E F0 1.391
-(option forces v)3.892 F 1.391
+(..])-2.5 E F2(typeset)108 177.6 Q F0([)2.5 E F2(\255aAfFgiIlnrtux)A F0
+2.5(][)C F2<ad70>-2.5 E F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0
+2.5(].)C(..])-2.5 E 1.265(Declare v)144 189.6 R 1.265
+(ariables and/or gi)-.25 F 1.565 -.15(ve t)-.25 H 1.265(hem attrib).15 F
+3.765(utes. If)-.2 F(no)3.765 E F1(name)3.765 E F0 3.765(sa)C 1.265
+(re gi)-3.765 F -.15(ve)-.25 G 3.764(nt).15 G 1.264(hen display the v)
+-3.764 F 1.264(alues of)-.25 F -.25(va)144 201.6 S 3.46(riables. The).25
+F F2<ad70>3.46 E F0 .96(option will display the attrib)3.46 F .96
+(utes and v)-.2 F .96(alues of each)-.25 F F1(name)3.82 E F0 5.96(.W).18
+G(hen)-5.96 E F2<ad70>3.46 E F0 .96(is used)3.46 F(with)144 213.6 Q F1
+(name)2.775 E F0(ar)2.775 E .275
+(guments, additional options, other than)-.18 F F2<ad66>2.775 E F0(and)
+2.775 E F2<ad46>2.775 E F0 2.775(,a)C .274(re ignored.)-2.775 F(When)
+5.274 E F2<ad70>2.774 E F0 .274(is supplied)2.774 F(without)144 225.6 Q
+F1(name)3.789 E F0(ar)3.789 E 1.289(guments, it will display the attrib)
+-.18 F 1.289(utes and v)-.2 F 1.29(alues of all v)-.25 F 1.29
+(ariables ha)-.25 F 1.29(ving the at-)-.2 F(trib)144 237.6 Q .38
+(utes speci\214ed by the additional options.)-.2 F .38
+(If no other options are supplied with)5.38 F F2<ad70>2.88 E F0(,)A F2
+(declar)2.88 E(e)-.18 E F0(will)2.88 E 1.106(display the attrib)144
+249.6 R 1.106(utes and v)-.2 F 1.106(alues of all shell v)-.25 F 3.606
+(ariables. The)-.25 F F2<ad66>3.606 E F0 1.107
+(option will restrict the display to)3.606 F .3(shell functions.)144
+261.6 R(The)5.3 E F2<ad46>2.8 E F0 .299(option inhibits the display of \
+function de\214nitions; only the function name)2.8 F 1.54(and attrib)144
+273.6 R 1.54(utes are printed.)-.2 F 1.54(If the)6.54 F F2(extdeb)4.04 E
+(ug)-.2 E F0 1.54(shell option is enabled using)4.04 F F2(shopt)4.04 E
+F0 4.04(,t)C 1.54(he source \214le)-4.04 F .648
+(name and line number where each)144 285.6 R F1(name)3.148 E F0 .648
+(is de\214ned are displayed as well.)3.148 F(The)5.648 E F2<ad46>3.148 E
+F0 .648(option implies)3.148 F F2<ad66>144 297.6 Q F0 5.836(.T)C(he)
+-5.836 E F2<ad67>3.336 E F0 .836(option forces v)3.336 F .837
(ariables to be created or modi\214ed at the global scope, e)-.25 F -.15
-(ve)-.25 G(n).15 E(when)144 309.6 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 321.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 333.6 Q(utes:)-.2 E
-F2<ad61>144 345.6 Q F0(Each)180 345.6 Q F1(name)2.5 E F0(is an inde)2.5
-E -.15(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2
-(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad41>144 357.6 Q
-F0(Each)180 357.6 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)
--.25 H(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F2<ad66>144 369.6 Q F0(Use function names only)
-180 369.6 Q(.)-.65 E F2<ad69>144 381.6 Q F0 .557(The v)180 381.6 R .558
+(ve)-.25 G 3.337(nw).15 G(hen)-3.337 E F2(de-)3.337 E(clar)144 309.6 Q
+(e)-.18 E F0 .819(is e)3.319 F -.15(xe)-.15 G .819
+(cuted in a shell function.).15 F .818
+(It is ignored in all other cases.)5.818 F(The)5.818 E F2<ad49>3.318 E
+F0 .818(option causes local)3.318 F -.25(va)144 321.6 S .693
+(riables to inherit the attrib).25 F .693(utes \(e)-.2 F .693(xcept the)
+-.15 F F1(namer)3.194 E(ef)-.37 E F0(attrib)3.194 E .694(ute\) and v)-.2
+F .694(alue of an)-.25 F 3.194(ye)-.15 G .694(xisting v)-3.344 F
+(ariable)-.25 E .82(with the same)144 333.6 R F1(name)3.32 E F0 .82
+(at a surrounding scope.)3.32 F .82(If there is no e)5.82 F .82
+(xisting v)-.15 F .82(ariable, the local v)-.25 F .82(ariable is)-.25 F
+.379(initially unset.)144 345.6 R .379(The follo)5.379 F .379
+(wing options can be used to restrict output to v)-.25 F .38
+(ariables with the speci\214ed)-.25 F(attrib)144 357.6 Q(ute or to gi)
+-.2 E .3 -.15(ve v)-.25 H(ariables attrib)-.1 E(utes:)-.2 E F2<ad61>144
+369.6 Q F0(Each)180 369.6 Q F1(name)2.5 E F0(is an inde)2.5 E -.15(xe)
+-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 E
+F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2<ad41>144 381.6 Q F0(Each)180
+381.6 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H
+(rray v).15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)
+-.15 G(\).).15 E F2<ad66>144 393.6 Q F0(Use function names only)180
+393.6 Q(.)-.65 E F2<ad69>144 405.6 Q F0 .558(The v)180 405.6 R .558
(ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25
-(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .558
-(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 393.6 Q F0(abo)
+(va)-.25 G .558(luation \(see).25 F/F4 9/Times-Bold@0 SF .557
+(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 417.6 Q F0(abo)
2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)
--2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2<ad6c>144 405.6 Q
-F0 .91(When the v)180 405.6 R .909(ariable is assigned a v)-.25 F .909
+-2.5 E(ariable is assigned a v)-.25 E(alue.)-.25 E F2<ad6c>144 429.6 Q
+F0 .909(When the v)180 429.6 R .909(ariable is assigned a v)-.25 F .909
(alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4
-G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 417.6 R
-(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad6e>144 429.6
-Q F0(Gi)180 429.6 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 441.6 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 453.6 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 F2<ad6e>2.726 E F0(attrib)
-2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 465.6 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 477.6 Q(ariables.)-.25 E F2<ad72>144 489.6 Q F0
-(Mak)180 489.6 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
-501.6 Q F2<ad74>144 513.6 Q F0(Gi)180 513.6 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)
+G .91(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 441.6 R
+(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad6e>144 453.6
+Q F0(Gi)180 453.6 Q 1.62 -.15(ve e)-.25 H(ach).15 E F1(name)3.82 E F0
+(the)3.82 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319
+(ute, making it a name reference to another v)-.2 F(ariable.)-.25 E .477
+(That other v)180 465.6 R .478(ariable is de\214ned by the v)-.25 F .478
+(alue of)-.25 F F1(name)2.978 E F0 5.478(.A)C .478
+(ll references, assignments, and at-)-5.478 F(trib)180 477.6 Q .782
+(ute modi\214cations to)-.2 F F1(name)3.282 E F0 3.282(,e)C .782
+(xcept those using or changing the)-3.432 F F2<ad6e>3.281 E F0(attrib)
+3.281 E .781(ute itself, are)-.2 F .808(performed on the v)180 489.6 R
+.808(ariable referenced by)-.25 F F1(name)3.308 E F0 1.908 -.55('s v)D
+3.308(alue. The).3 F .809(nameref attrib)3.309 F .809(ute cannot be)-.2
+F(applied to array v)180 501.6 Q(ariables.)-.25 E F2<ad72>144 513.6 Q F0
+(Mak)180 513.6 Q(e)-.1 E F1(name)3.655 E F0 3.655(sr)C(eadonly)-3.655 E
+6.154(.T)-.65 G 1.154(hese names cannot then be assigned v)-6.154 F
+1.154(alues by subsequent as-)-.25 F(signment statements or unset.)180
+525.6 Q F2<ad74>144 537.6 Q F0(Gi)180 537.6 Q .729 -.15(ve e)-.25 H(ach)
+.15 E F1(name)2.929 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)
2.929 E 2.929(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2
-(DEB)2.929 E(UG)-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0
-(traps from the calling shell.)180 525.6 Q(The trace attrib)5 E
+(DEB)2.929 E(UG)-.1 E F0(and)2.93 E F2(RETURN)2.93 E F0
+(traps from the calling shell.)180 549.6 Q(The trace attrib)5 E
(ute has no special meaning for v)-.2 E(ariables.)-.25 E F2<ad75>144
-537.6 Q F0 .909(When the v)180 537.6 R .909(ariable is assigned a v)-.25
+561.6 Q F0 .91(When the v)180 561.6 R .909(ariable is assigned a v)-.25
F .909(alue, all lo)-.25 F(wer)-.25 E .909(-case characters are con)-.2
-F -.15(ve)-.4 G .91(rted to upper).15 F(-)-.2 E 2.5(case. The)180 549.6
+F -.15(ve)-.4 G .909(rted to upper).15 F(-)-.2 E 2.5(case. The)180 573.6
R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2<ad78>
-144 561.6 Q F0(Mark)180 561.6 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
-(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .144
-(Using `+' instead of `\255' turns of)144 578.4 R 2.643(ft)-.25 G .143
-(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .143
-(xceptions that)-.15 F F2(+a)2.643 E F0(and)2.643 E F2(+A)2.643 E F0
-.143(may not)2.643 F .578(be used to destro)144 590.4 R 3.079(ya)-.1 G
+144 585.6 Q F0(Mark)180 585.6 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E
+(xport to subsequent commands via the en)-.15 E(vironment.)-.4 E .143
+(Using `+' instead of `\255' turns of)144 602.4 R 2.643(ft)-.25 G .143
+(he attrib)-2.643 F .143(ute instead, with the e)-.2 F .144
+(xceptions that)-.15 F F2(+a)2.644 E F0(and)2.644 E F2(+A)2.644 E F0
+.144(may not)2.644 F .579(be used to destro)144 614.4 R 3.079(ya)-.1 G
.579(rray v)-3.079 F .579(ariables and)-.25 F F2(+r)3.079 E F0 .579
(will not remo)3.079 F .879 -.15(ve t)-.15 H .579(he readonly attrib).15
-F 3.079(ute. When)-.2 F .579(used in a)3.079 F(function,)144 602.4 Q F2
-(declar)3.544 E(e)-.18 E F0(and)3.544 E F2(typeset)3.544 E F0(mak)3.544
-E 3.544(ee)-.1 G(ach)-3.544 E F1(name)3.543 E F0 1.043
-(local, as with the)3.543 F F2(local)3.543 E F0 1.043
-(command, unless the)3.543 F F2<ad67>3.543 E F0 1.205
-(option is supplied.)144 614.4 R 1.205(If a v)6.205 F 1.205
+F 3.079(ute. When)-.2 F .578(used in a)3.078 F(function,)144 626.4 Q F2
+(declar)3.543 E(e)-.18 E F0(and)3.543 E F2(typeset)3.543 E F0(mak)3.543
+E 3.543(ee)-.1 G(ach)-3.543 E F1(name)3.543 E F0 1.043
+(local, as with the)3.543 F F2(local)3.544 E F0 1.044
+(command, unless the)3.544 F F2<ad67>3.544 E F0 1.205
+(option is supplied.)144 638.4 R 1.205(If a v)6.205 F 1.205
(ariable name is follo)-.25 F 1.205(wed by =)-.25 F F1(value)A F0 3.705
(,t)C 1.205(he v)-3.705 F 1.205(alue of the v)-.25 F 1.205
-(ariable is set to)-.25 F F1(value)144 626.4 Q F0 5.218(.W)C .218
-(hen using)-5.218 F F2<ad61>2.718 E F0(or)2.718 E F2<ad41>2.718 E F0
-.217(and the compound assignment syntax to create array v)2.717 F .217
-(ariables, addi-)-.25 F .882(tional attrib)144 638.4 R .882
+(ariable is set to)-.25 F F1(value)144 650.4 Q F0 5.217(.W)C .217
+(hen using)-5.217 F F2<ad61>2.717 E F0(or)2.717 E F2<ad41>2.717 E F0
+.217(and the compound assignment syntax to create array v)2.717 F .218
+(ariables, addi-)-.25 F .882(tional attrib)144 662.4 R .882
(utes do not tak)-.2 F 3.382(ee)-.1 G -.25(ff)-3.382 G .882
(ect until subsequent assignments.).25 F .882(The return v)5.882 F .882
-(alue is 0 unless an)-.25 F(in)144 650.4 Q -.25(va)-.4 G 1.26(lid optio\
+(alue is 0 unless an)-.25 F(in)144 674.4 Q -.25(va)-.4 G .365(lid optio\
n is encountered, an attempt is made to de\214ne a function using).25 F
-/F5 10/Courier@0 SF 1.26(\255f foo=bar)3.76 F F0 3.76(,a)C(n)-3.76 E
-.187(attempt is made to assign a v)144 662.4 R .187
-(alue to a readonly v)-.25 F .188
-(ariable, an attempt is made to assign a v)-.25 F .188(alue to an)-.25 F
-1.749(array v)144 674.4 R 1.749
+/F5 10/Courier@0 SF .366(\255f foo=bar)2.866 F F0 2.866(,a)C 2.866(na)
+-2.866 G(t-)-2.866 E .549(tempt is made to assign a v)144 686.4 R .549
+(alue to a readonly v)-.25 F .548
+(ariable, an attempt is made to assign a v)-.25 F .548(alue to an)-.25 F
+1.748(array v)144 698.4 R 1.748
(ariable without using the compound assignment syntax \(see)-.25 F F2
-(Arrays)4.248 E F0(abo)4.248 E -.15(ve)-.15 G 1.748(\), one of the).15 F
-F1(names)144 686.4 Q F0 .359(is not a v)2.858 F .359(alid shell v)-.25 F
+(Arrays)4.249 E F0(abo)4.249 E -.15(ve)-.15 G 1.749(\), one of the).15 F
+F1(names)144 710.4 Q F0 .359(is not a v)2.859 F .359(alid shell v)-.25 F
.359(ariable name, an attempt is made to turn of)-.25 F 2.859(fr)-.25 G
-.359(eadonly status for a read-)-2.859 F 1.213(only v)144 698.4 R 1.213
+.359(eadonly status for a read-)-2.859 F 1.212(only v)144 722.4 R 1.213
(ariable, an attempt is made to turn of)-.25 F 3.713(fa)-.25 G 1.213
-(rray status for an array v)-3.713 F 1.212(ariable, or an attempt is)
--.25 F(made to display a non-e)144 710.4 Q(xistent function with)-.15 E
-F2<ad66>2.5 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)
-203.725 E 0 Cg EP
+(rray status for an array v)-3.713 F 1.213(ariable, or an attempt is)
+-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(6)203.725 E 0 Cg EP
%%Page: 7 7
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dirs [\255clpv] [+)
-108 84 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C<ad>-2.5 E F2(n)A F1(])A
-F0 -.4(Wi)144 96 S .328
+E(UIL)-.1 E(TINS\(1\))-.92 E(made to display a non-e)144 84 Q
+(xistent function with)-.15 E/F1 10/Times-Bold@0 SF<ad66>2.5 E F0(.)A F1
+(dirs [\255clpv] [+)108 100.8 Q/F2 10/Times-Italic@0 SF(n)A F1 2.5(][)C
+<ad>-2.5 E F2(n)A F1(])A F0 -.4(Wi)144 112.8 S .329
(thout options, displays the list of currently remembered directories.)
-.4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238
-(single line with directory names separated by spaces.)144 108 R 1.238
-(Directories are added to the list with the)6.238 F F1(pushd)144 120 Q
-F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo)
-4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503
-F 2.003(The current directory is)7.003 F(al)144 132 Q -.1(wa)-.1 G
-(ys the \214rst directory in the stack.).1 E F1<ad63>144 144 Q F0
-(Clears the directory stack by deleting all of the entries.)180 144 Q F1
-<ad6c>144 156 Q F0 .882
-(Produces a listing using full pathnames; the def)180 156 R .881
+.4 F .328(The def)5.328 F .328(ault display is on a)-.1 F 1.238
+(single line with directory names separated by spaces.)144 124.8 R 1.238
+(Directories are added to the list with the)6.238 F F1(pushd)144 136.8 Q
+F0 .928(command; the)3.428 F F1(popd)3.428 E F0 .928(command remo)3.428
+F -.15(ve)-.15 G 3.428(se).15 G .928(ntries from the list.)-3.428 F .928
+(The current directory is al-)5.928 F -.1(wa)144 148.8 S
+(ys the \214rst directory in the stack.).1 E F1<ad63>144 160.8 Q F0
+(Clears the directory stack by deleting all of the entries.)180 160.8 Q
+F1<ad6c>144 172.8 Q F0 .881
+(Produces a listing using full pathnames; the def)180 172.8 R .882
(ault listing format uses a tilde to denote)-.1 F(the home directory)180
-168 Q(.)-.65 E F1<ad70>144 180 Q F0
-(Print the directory stack with one entry per line.)180 180 Q F1<ad76>
-144 192 Q F0 .272(Print the directory stack with one entry per line, pr\
-e\214xing each entry with its inde)180 192 R 2.773(xi)-.15 G 2.773(nt)
--2.773 G(he)-2.773 E(stack.)180 204 Q F1(+)144 216 Q F2(n)A F0 1.565
-(Displays the)180 216 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 228 Q F1<ad>144 240 Q F2(n)A
-F0 1.194(Displays the)180 240 R F2(n)3.694 E F0 1.194
+184.8 Q(.)-.65 E F1<ad70>144 196.8 Q F0
+(Print the directory stack with one entry per line.)180 196.8 Q F1<ad76>
+144 208.8 Q F0 .273(Print the directory stack with one entry per line, \
+pre\214xing each entry with its inde)180 208.8 R 2.772(xi)-.15 G 2.772
+(nt)-2.772 G(he)-2.772 E(stack.)180 220.8 Q F1(+)144 232.8 Q F2(n)A F0
+1.564(Displays the)180 232.8 R F2(n)4.064 E F0 1.565
+(th entry counting from the left of the list sho)B 1.565(wn by)-.25 F F1
+(dirs)4.065 E F0 1.565(when in)4.065 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E
+(without options, starting with zero.)180 244.8 Q F1<ad>144 256.8 Q F2
+(n)A F0 1.194(Displays the)180 256.8 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 252 Q .258(The return v)144
-268.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
+(without options, starting with zero.)180 268.8 Q .257(The return v)144
+285.6 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258
(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe)
-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-)
-.15 F(tory stack.)144 280.8 Q F1(diso)108 297.6 Q(wn)-.1 E F0([)2.5 E F1
+.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<ad68>-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 309.6 S .121
+(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 326.4 S .122
(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec)
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 321.6 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
+2.622(obs. If).15 F F2(jobspec)4.362 E F0 .121(is not present, and)2.932
+F .096(neither the)144 338.4 R F1<ad61>2.596 E F0 .096(nor the)2.596 F
F1<ad72>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
<ad68>2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each)
-.15 F F2(jobspec)145.74 333.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 345.6 R -.15
+.15 F F2(jobspec)145.74 350.4 Q F0 .586(is not remo)3.396 F -.15(ve)-.15
+G 3.086(df).15 G .585(rom the table, b)-3.086 F .585(ut is mark)-.2 F
+.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .585
+(is not sent to the job if the)2.835 F .962(shell recei)144 362.4 R -.15
(ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962
(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1
<ad61>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 357.6 R F1
-<ad72>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 369.6 S(lue is 0 unless a).25 E F2
+H 3.462(rm).15 G .962(ark all)-3.462 F 1.359(jobs; the)144 374.4 R F1
+<ad72>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 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 386.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 398.4 R F2(ar)2.925 E(g)-.37 E
+F1(echo)108 403.2 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g)
+-.37 E F0(...])2.5 E .424(Output the)144 415.2 R F2(ar)2.924 E(g)-.37 E
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 410.4 R(If)5.307 E F1<ad6e>2.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 F1<ad65>2.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
-422.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The)
-6.348 E F1<ad45>3.848 E F0 1.348(option disables the)3.848 F 1.054
-(interpretation of these escape characters, e)144 434.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
-446.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 458.4 R(ault.)-.1 E F1(echo)5.715 E
-F0 .716(does not interpret)3.215 F F1<adad>3.216 E F0 .716
-(to mean the end of options.)3.216 F F1(echo)5.716 E F0
-(interprets the follo)144 470.4 Q(wing escape sequences:)-.25 E F1(\\a)
-144 482.4 Q F0(alert \(bell\))180 482.4 Q F1(\\b)144 494.4 Q F0
-(backspace)180 494.4 Q F1(\\c)144 506.4 Q F0(suppress further output)180
-506.4 Q F1(\\e)144 518.4 Q(\\E)144 530.4 Q F0(an escape character)180
-530.4 Q F1(\\f)144 542.4 Q F0(form feed)180 542.4 Q F1(\\n)144 554.4 Q
-F0(ne)180 554.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 566.4 Q F0
-(carriage return)180 566.4 Q F1(\\t)144 578.4 Q F0(horizontal tab)180
-578.4 Q F1(\\v)144 590.4 Q F0 -.15(ve)180 590.4 S(rtical tab).15 E F1
-(\\\\)144 602.4 Q F0(backslash)180 602.4 Q F1(\\0)144 614.4 Q F2(nnn)A
-F0(the eight-bit character whose v)180 614.4 Q(alue is the octal v)-.25
+(wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .308
+(error occurs.)144 427.2 R(If)5.308 E F1<ad6e>2.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 F1<ad65>2.807 E F0 .307(option is gi)2.807 F -.15
+(ve)-.25 G .307(n, inter).15 F(-)-.2 E .197(pretation of the follo)144
+439.2 R .198(wing backslash-escaped characters is enabled.)-.25 F(The)
+5.198 E F1<ad45>2.698 E F0 .198(option disables the in-)2.698 F .067
+(terpretation of these escape characters, e)144 451.2 R -.15(ve)-.25 G
+2.567(no).15 G 2.567(ns)-2.567 G .067(ystems where the)-2.567 F 2.567
+(ya)-.15 G .067(re interpreted by def)-2.567 F 2.567(ault. The)-.1 F F1
+(xpg_echo)144 463.2 Q F0 .601
+(shell option may be used to dynamically determine whether or not)3.101
+F F1(echo)3.102 E F0 -.15(ex)3.102 G .602(pands these).15 F .659
+(escape characters by def)144 475.2 R(ault.)-.1 E F1(echo)5.659 E F0
+.659(does not interpret)3.159 F F1<adad>3.159 E F0 .659
+(to mean the end of options.)3.159 F F1(echo)5.658 E F0(inter)3.158 E(-)
+-.2 E(prets the follo)144 487.2 Q(wing escape sequences:)-.25 E F1(\\a)
+144 499.2 Q F0(alert \(bell\))180 499.2 Q F1(\\b)144 511.2 Q F0
+(backspace)180 511.2 Q F1(\\c)144 523.2 Q F0(suppress further output)180
+523.2 Q F1(\\e)144 535.2 Q(\\E)144 547.2 Q F0(an escape character)180
+547.2 Q F1(\\f)144 559.2 Q F0(form feed)180 559.2 Q F1(\\n)144 571.2 Q
+F0(ne)180 571.2 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 583.2 Q F0
+(carriage return)180 583.2 Q F1(\\t)144 595.2 Q F0(horizontal tab)180
+595.2 Q F1(\\v)144 607.2 Q F0 -.15(ve)180 607.2 S(rtical tab).15 E F1
+(\\\\)144 619.2 Q F0(backslash)180 619.2 Q F1(\\0)144 631.2 Q F2(nnn)A
+F0(the eight-bit character whose v)180 631.2 Q(alue is the octal v)-.25
E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1
-(\\x)144 626.4 Q F2(HH)A F0(the eight-bit character whose v)180 626.4 Q
+(\\x)144 643.2 Q F2(HH)A F0(the eight-bit character whose v)180 643.2 Q
(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0
(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1
-(\\u)144 638.4 Q F2(HHHH)A F0 1.507
-(the Unicode \(ISO/IEC 10646\) character whose v)180 650.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 662.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
-(\\U)144 674.4 Q F2(HHHHHHHH)A F0 .547
-(the Unicode \(ISO/IEC 10646\) character whose v)180 686.4 R .547
-(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
-3.048 E(HHH)180 698.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
+(\\u)144 655.2 Q F2(HHHH)A F0 1.506
+(the Unicode \(ISO/IEC 10646\) character whose v)180 667.2 R 1.507
+(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F2(HHHH)
+4.007 E F0(\(one to four he)180 679.2 Q 2.5(xd)-.15 G(igits\))-2.5 E F1
+(\\U)144 691.2 Q F2(HHHHHHHH)A F0 .548
+(the Unicode \(ISO/IEC 10646\) character whose v)180 703.2 R .547
+(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-)
+3.047 E(HHH)180 715.2 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G
(igits\))-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(7)203.725 E
0 Cg EP
%%Page: 8 8
@@ -1085,265 +1097,271 @@ BP
E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(enable)108 84 Q F0([)
2.5 E F1<ad61>A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1<ad66>-2.5
E/F2 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
+(...])2.5 E .277(Enable and disable b)144 96 R .278
(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278
-(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833
+(uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .834
(the same name as a shell b)144 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
+-.25 G 3.333(nt).15 G(hough)-3.333 E .989
(the shell normally searches for b)144 120 R .989
-(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .989
-(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581
-(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 F1<ad66>2.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<ad64>
-2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F
-.367(viously loaded with)-.25 F F1<ad66>2.866 E F0 5.366(.I)C 2.866(fn)
--5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi)
--.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 180 R F1<ad70>
-2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399
+(uiltins before disk commands.)-.2 F(If)5.989 E F1<ad6e>3.489 E F0 .99
+(is used, each)3.49 F F2(name)3.49 E F0 .99(is dis-)3.49 F .649
+(abled; otherwise,)144 132 R F2(names)3.148 E F0 .648(are enabled.)3.148
+F -.15(Fo)5.648 G 3.148(re).15 G .648(xample, to use the)-3.298 F F1
+(test)3.148 E F0 .648(binary found via the)3.148 F/F3 9/Times-Bold@0 SF
+-.666(PA)3.148 G(TH)-.189 E F0(in-)2.898 E .538(stead of the shell b)144
+144 R .538(uiltin v)-.2 F .538(ersion, run)-.15 F/F4 10/Courier@0 SF
+.538(enable -n test)3.038 F F0 5.538(.T)C(he)-5.538 E F1<ad66>3.038 E F0
+.539(option means to load the ne)3.038 F(w)-.25 E -.2(bu)144 156 S 1.365
+(iltin command).2 F F2(name)4.225 E F0 1.365(from shared object)4.045 F
+F2(\214lename)5.775 E F0 3.865(,o).18 G 3.865(ns)-3.865 G 1.365
+(ystems that support dynamic loading.)-3.865 F(The)144 168 Q F1<ad64>
+2.866 E F0 .366(option will delete a b)2.866 F .366(uiltin pre)-.2 F
+.366(viously loaded with)-.25 F F1<ad66>2.867 E F0 5.367(.I)C 2.867(fn)
+-5.367 G(o)-2.867 E F2(name)2.867 E F0(ar)2.867 E .367(guments are gi)
+-.18 F -.15(ve)-.25 G .367(n, or).15 F .399(if the)144 180 R F1<ad70>
+2.899 E F0 .399(option is supplied, a list of shell b)2.899 F .399
(uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4
-F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144
+F .398(guments, the)-.18 F .098(list consists of all enabled shell b)144
192 R 2.598(uiltins. If)-.2 F F1<ad6e>2.598 E F0 .098
-(is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F
-(If)5.098 E F1<ad61>2.598 E F0 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 F1<ad73>2.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
+(is supplied, only disabled b)2.598 F .099(uiltins are printed.)-.2 F
+(If)5.099 E F1<ad61>2.599 E F0 .906
+(is supplied, the list printed includes all b)144 204 R .905
+(uiltins, with an indication of whether or not each is en-)-.2 F 2.872
+(abled. If)144 216 R F1<ad73>2.872 E F0 .372
+(is supplied, the output is restricted to the POSIX)2.872 F F2(special)
+2.873 E F0 -.2(bu)2.873 G 2.873(iltins. The).2 F .373(return v)2.873 F
+.373(alue is)-.25 F 2.5(0u)144 228 S(nless a)-2.5 E F2(name)2.86 E F0
+(is not a shell b)2.68 E(uiltin or there is an error loading a ne)-.2 E
+2.5(wb)-.25 G(uiltin from a shared object.)-2.7 E F1 -2.3 -.15(ev a)108
+244.8 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(The)144 256.8
+Q F2(ar)3.171 E(g)-.37 E F0 3.171(sa)C .671
(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
+(This command is then read)5.67 F .478(and e)144 268.8 R -.15(xe)-.15 G
+.478(cuted by the shell, and its e).15 F .478
+(xit status is returned as the v)-.15 F .479(alue of)-.25 F F1 -2.3 -.15
+(ev a)2.979 H(l).15 E F0 5.479(.I)C 2.979(ft)-5.479 G .479(here are no)
+-2.979 F F2(ar)3.309 E(gs)-.37 E F0(,).27 E(or only null ar)144 280.8 Q
(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<ad61>-2.5 E F2
+(exec)108 297.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1<ad61>-2.5 E F2
(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)
--.37 E F0(]])A(If)144 321.6 Q F2(command)3.006 E F0 .306
+-.37 E F0(]])A(If)144 309.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)-.37 E F0(become)3.075 E .176(the ar)144 321.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 F1<ad6c>2.676 E F0 .176
(option is supplied, the shell places a dash at the be)2.676 F .177
-(ginning of)-.15 F .5(the zeroth ar)144 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 F1<ad63>2.999 E F0
-.499(option causes)2.999 F F2(com-)3.199 E(mand)144 357.6 Q F0 .638
+(ginning of)-.15 F .48(the zeroth ar)144 333.6 R .48(gument passed to)
+-.18 F F2(command)3.18 E F0 5.48(.T).77 G .48(his is what)-5.48 F F2(lo)
+3.07 E(gin)-.1 E F0 .48(\(1\) does.).24 F(The)5.48 E F1<ad63>2.98 E F0
+.48(option causes)2.98 F F2(com-)3.18 E(mand)144 345.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 F1<ad61>3.138 E F0 .638
(is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the)
-3.319 F 1.078(zeroth ar)144 369.6 R 1.077(gument to the e)-.18 F -.15
+3.319 F 1.078(zeroth ar)144 357.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
+.15 F(non-interacti)144 369.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 3.32(ure. An)144 393.6 R(interacti)3.32 E 1.12 -.15(ve s)
+F(ail-)-.1 E 3.32(ure. An)144 381.6 R(interacti)3.32 E 1.12 -.15(ve s)
-.25 H .82(hell returns f).15 F .82(ailure if the \214le cannot be e)-.1
F -.15(xe)-.15 G 3.32(cuted. A).15 F .82(subshell e)3.32 F .82
-(xits uncondi-)-.15 F .287(tionally if)144 405.6 R F1(exec)2.787 E F0
+(xits uncondi-)-.15 F .287(tionally if)144 393.6 R F1(exec)2.787 E F0
-.1(fa)2.787 G 2.787(ils. If).1 F F2(command)2.987 E F0 .287
(is not speci\214ed, an)3.557 F 2.788(yr)-.15 G .288(edirections tak)
-2.788 F 2.788(ee)-.1 G -.25(ff)-2.788 G .288(ect in the current shell,)
-.25 F(and the return status is 0.)144 417.6 Q
+.25 F(and the return status is 0.)144 405.6 Q
(If there is a redirection error)5 E 2.5(,t)-.4 G
-(he return status is 1.)-2.5 E F1(exit)108 434.4 Q F0([)2.5 E F2(n)A F0
-(])A .096(Cause the shell to e)144 434.4 R .096(xit with a status of)
+(he return status is 1.)-2.5 E F1(exit)108 422.4 Q F0([)2.5 E F2(n)A F0
+(])A .096(Cause the shell to e)144 422.4 R .096(xit with a status of)
-.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
+-.15 F -.15(exe)144 434.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
+F1(export)108 451.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)
+-2.5 E F0([=)A F2(wor)A(d)-.37 E F0(]] ...)A F1(export \255p)108 463.2 Q
+F0 .256(The supplied)144 475.2 R F2(names)3.117 E F0 .257(are mark)3.027
F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257
(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 F1<ad66>2.627 E F0 .127
+(commands. If)144 487.2 R(the)2.627 E F1<ad66>2.627 E F0 .127
(option is gi)2.627 F -.15(ve)-.25 G .127(n, the).15 F F2(names)2.987 E
F0 .127(refer to functions.)2.897 F .127(If no)5.127 F F2(names)2.987 E
F0 .127(are gi)2.897 F -.15(ve)-.25 G .126(n, or if the).15 F F1<ad70>
-144 511.2 Q F0 .048(option is supplied, a list of names of all e)2.547 F
+144 499.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
-<ad6e>2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 523.2 S
+<ad6e>2.548 E F0 .048(option causes the)2.548 F -.15(ex)144 511.2 S
1.447(port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447
(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)
+-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 523.2 S .741(lue of the v)
.25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1
(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
+.25 F .032(encountered, one of the)144 535.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 F1<ad66>2.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
+(that)2.711 E(is not a function.)144 547.2 Q F1(fc)108 564 Q F0([)2.5 E
F1<ad65>A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2
<8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108
-588 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2
+576 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>
+(The \214rst form selects a range of commands from)144 588 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)
+600 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
+144 612 Q .31(ginning with that string\) or as a number \(an inde)-.15 F
2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga)
--.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .19(is used as an of)
-144 636 R .19(fset from the current command number\).)-.25 F(If)5.19 E
-F2(last)2.779 E F0 .189(is not speci\214ed, it is set to the cur)3.369 F
-(-)-.2 E .948(rent command for listing \(so that)144 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
+-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .071(is used as an of)
+144 624 R .071(fset from the current command number\).)-.25 F .071
+(When listing, a)5.071 F F2<8c72>2.571 E(st)-.1 E F0(or)2.571 E F2(last)
+2.571 E F0 .071(of 0 is equi)2.571 F -.25(va)-.25 G(-).25 E .653
+(lent to \2551 and \2550 is equi)144 636 R -.25(va)-.25 G .653
+(lent to the current command \(usually the).25 F F1(fc)3.153 E F0 .653
+(command\); otherwise 0 is)3.153 F(equi)144 648 Q -.25(va)-.25 G .242
+(lent to \2551 and \2550 is in).25 F -.25(va)-.4 G 2.742(lid. If).25 F
+F2(last)2.832 E F0 .242
+(is not speci\214ed, it is set to the current command for list-)3.422 F
+.092(ing \(so that)144 660 R F4 .092(fc \255l \25510)2.592 F F0 .093
+(prints the last 10 commands\) and to)2.592 F F2<8c72>4.503 E(st)-.1 E
+F0 2.593(otherwise. If)3.273 F F2<8c72>4.503 E(st)-.1 E F0 .093
+(is not speci-)3.273 F(\214ed, it is set to the pre)144 672 Q
+(vious command for editing and \25516 for listing.)-.25 E(The)144 696 Q
F1<ad6e>2.522 E F0 .022
(option suppresses the command numbers when listing.)2.522 F(The)5.022 E
F1<ad72>2.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022
-(rses the order of).15 F .438(the commands.)144 696 R .438(If the)5.438
+(rses the order of).15 F .438(the commands.)144 708 R .438(If the)5.438
F F1<ad6c>2.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438
(n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E
-.335(the editor gi)144 708 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
+.335(the editor gi)144 720 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2
(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do)
.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F
(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G
-(n,).15 E 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 5.0)72 768 Q
-(2004 Apr 20)149.565 E(8)203.725 E 0 Cg EP
+(n,).15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(8)203.725 E 0 Cg
+EP
%%Page: 9 9
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E .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
+E(UIL)-.1 E(TINS\(1\))-.92 E .63(the v)144 84 R .63(alue of the)-.25 F
+/F1 9/Times-Bold@0 SF(FCEDIT)3.13 E F0 -.25(va)2.88 G .631
+(riable is used, and the v).25 F .631(alue of)-.25 F F1(EDIT)3.131 E(OR)
+-.162 E F0(if)2.881 E F1(FCEDIT)3.131 E F0 .631(is not set.)2.881 F .631
+(If nei-)5.631 F .006(ther v)144 96 R .006(ariable is set,)-.25 F/F2 10
+/Times-Italic@0 SF(vi)4.171 E F0 .005(is used.)4.171 F .005
+(When editing is complete, the edited commands are echoed and e)5.005 F
+(x-)-.15 E(ecuted.)144 108 Q .788(In the second form,)144 132 R F2
(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788
-(cuted after each instance of).15 F 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 .172(is interpreted the same as)2.672 F F1<8c72>
+(cuted after each instance of).15 F F2(pat)3.288 E F0 .788
+(is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789
+E(mand)144 144 Q F0 .172(is interpreted the same as)2.672 F F2<8c72>
2.672 E(st)-.1 E F0(abo)2.672 E -.15(ve)-.15 G 5.172(.A).15 G .171
-(useful alias to use with this is)-2.5 F/F2 10/Courier@0 SF .171
+(useful alias to use with this is)-2.5 F/F3 10/Courier@0 SF .171
(r='fc \255s')2.671 F F0 2.671(,s)C 2.671(ot)-2.671 G(hat)-2.671 E
-(typing)144 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
+(typing)144 156 Q F3 7.165(rc)3.665 G(c)-7.165 E F0 1.165
+(runs the last command be)3.665 F 1.166(ginning with)-.15 F F3(cc)3.666
+E F0 1.166(and typing)3.666 F F3(r)3.666 E F0(re-e)3.666 E -.15(xe)-.15
+G 1.166(cutes the last com-).15 F(mand.)144 168 Q .142
+(If the \214rst form is used, the return v)144 192 R .142
(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142
-(lid option is encountered or).25 F 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 SF<ad65>2.954 E F0 .454
+(lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322
+E F2(last)2.732 E F0 .454(specify history lines out of range.)144 204 R
+.454(If the)5.454 F/F4 10/Times-Bold@0 SF<ad65>2.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
+(alue of the)-.25 F .788(last command e)144 216 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
+228 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136
+(does not)4.406 F(specify a v)144 240 Q
+(alid history line, in which case)-.25 E F4(fc)2.5 E F0(returns f)2.5 E
+(ailure.)-.1 E F4(fg)108 256.8 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)
+144 268.8 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413
(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
+(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0
+1.413(is not present, the)4.223 F(shell')144 280.8 Q 3.116(sn)-.55 G
+.616(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617
(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
+(alue is that of the command placed into the)-.25 F(fore)144 292.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(does not specify a v)2.81 E(alid job or)-.25 E F1(jobspec)4.24 E F0
+(hen run with job control enabled, if)-2.862 F F2(jobspec)145.74 304.8 Q
+F0(does not specify a v)2.81 E(alid job or)-.25 E F2(jobspec)4.24 E F0
(speci\214es a job that w)2.81 E(as started without job control.)-.1 E
-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.293 F F1
+F4(getopts)108 321.6 Q F2(optstring name)2.5 E F0([)2.5 E F2(ar)A 2.5
+(g.)-.37 G(..)-2.5 E F0(])A F4(getopts)144 333.6 Q F0 .793
+(is used by shell procedures to parse positional parameters.)3.293 F F2
(optstring)6.023 E F0 .793(contains the option)3.513 F .15
-(characters to be recognized; if a character is follo)144 333.6 R .149
+(characters to be recognized; if a character is follo)144 345.6 R .149
(wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449
--.15(ve a)-.2 H(n).15 E(ar)144 345.6 Q .578
+-.15(ve a)-.2 H(n).15 E(ar)144 357.6 Q .578
(gument, which should be separated from it by white space.)-.18 F .579
-(The colon and question mark char)5.579 F(-)-.2 E 1.665
-(acters may not be used as option characters.)144 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 .796
-(option in the shell v)144 369.6 R(ariable)-.25 E F1(name)3.296 E F0
-3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797
-(if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G
-3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 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 .845
-(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.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804
-(into the v)144 405.6 R(ariable)-.25 E F4(OPT)3.304 E(ARG)-.81 E F5(.)A
-F0 .803(The shell does not reset)5.304 F F4(OPTIND)3.303 E F0 .803
-(automatically; it must be manually)3.053 F .293
-(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 .294(et of parameters)-2.793 F(is to be used.)144 429.6
-Q 2.044(When the end of options is encountered,)144 453.6 R F3(getopts)
+(The colon and question mark char)5.579 F(-)-.2 E .636
+(acters may not be used as option characters.)144 369.6 R .636
+(Each time it is in)5.636 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F4(getopts)
+3.136 E F0 .636(places the ne)3.136 F .635(xt op-)-.15 F .029
+(tion in the shell v)144 381.6 R(ariable)-.25 E F2(name)2.889 E F0 2.529
+(,i).18 G(nitializing)-2.529 E F2(name)2.889 E F0 .029(if it does not e)
+2.709 F .03(xist, and the inde)-.15 F 2.53(xo)-.15 G 2.53(ft)-2.53 G .03
+(he ne)-2.53 F .03(xt ar)-.15 F(gu-)-.18 E .066
+(ment to be processed into the v)144 393.6 R(ariable)-.25 E F1(OPTIND)
+2.566 E/F5 9/Times-Roman@0 SF(.)A F1(OPTIND)4.566 E F0 .065
+(is initialized to 1 each time the shell or a)2.315 F .885
+(shell script is in)144 405.6 R -.2(vo)-.4 G -.1(ke).2 G 3.385(d. When)
+.1 F .885(an option requires an ar)3.385 F(gument,)-.18 E F4(getopts)
+3.385 E F0 .885(places that ar)3.385 F .885(gument into)-.18 F .567
+(the v)144 417.6 R(ariable)-.25 E F1(OPT)3.067 E(ARG)-.81 E F5(.)A F0
+.566(The shell does not reset)5.067 F F1(OPTIND)3.066 E F0 .566
+(automatically; it must be manually reset)2.816 F .389
+(between multiple calls to)144 429.6 R F4(getopts)2.889 E F0 .389
+(within the same shell in)2.889 F -.2(vo)-.4 G .39(cation if a ne).2 F
+2.89(ws)-.25 G .39(et of parameters is to)-2.89 F(be used.)144 441.6 Q
+2.044(When the end of options is encountered,)144 465.6 R F4(getopts)
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 F4(OPTIND)144 465.6 Q F0
+(alue greater than zero.)-.25 F F1(OPTIND)144 477.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.392
-(normally parses the positional parameters, b)4.892 F 2.392
-(ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893
-(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F3(getopts)144
-501.6 Q F0(parses those instead.)2.5 E F3(getopts)144 525.6 Q F0 1.166
-(can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F
-1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165
-(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07
-(reporting is used.)144 537.6 R 1.071
-(In normal operation, diagnostic messages are printed when in)6.07 F
--.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144
-549.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
-(ariable)-.25 E F4(OPTERR)2.894 E F0 .394
-(is set to 0, no error messages)2.644 F(will be displayed, e)144 561.6 Q
+(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0
+(is set to ?.)2.5 E F4(getopts)144 501.6 Q F0 .485
+(normally parses the positional parameters, b)2.985 F .485
+(ut if more ar)-.2 F .485(guments are supplied as)-.18 F F2(ar)3.315 E
+(g)-.37 E F0 -.25(va)3.205 G(l-).25 E(ues,)144 513.6 Q F4(getopts)2.5 E
+F0(parses those instead.)2.5 E F4(getopts)144 537.6 Q F0 .345
+(can report errors in tw)2.845 F 2.845(ow)-.1 G 2.845(ays. If)-2.945 F
+.345(the \214rst character of)2.845 F F2(optstring)3.075 E F0 .345
+(is a colon,)3.065 F F2(silent)3.185 E F0 .345(error re-)3.525 F 1.668
+(porting is used.)144 549.6 R 1.668
+(In normal operation, diagnostic messages are printed when in)6.668 F
+-.25(va)-.4 G 1.669(lid options or).25 F .394(missing option ar)144
+561.6 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F
+(ariable)-.25 E F1(OPTERR)2.894 E F0 .394
+(is set to 0, no error messages)2.644 F(will be displayed, e)144 573.6 Q
-.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E
-F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 585.6 R
--.25(va)-.4 G .666(lid option is seen,).25 F F3(getopts)3.166 E F0 .667
-(places ? into)3.167 F F1(name)3.527 E F0 .667
+F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 597.6 R
+-.25(va)-.4 G .666(lid option is seen,).25 F F4(getopts)3.166 E F0 .667
+(places ? into)3.167 F F2(name)3.527 E F0 .667
(and, if not silent, prints an error message)3.347 F .4(and unsets)144
-597.6 R F4(OPT)2.9 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
+609.6 R F1(OPT)2.9 E(ARG)-.81 E F5(.)A F0(If)4.899 E F4(getopts)2.899 E
+F0 .399(is silent, the option character found is placed in)2.899 F F1
(OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F
-(diagnostic message is printed.)144 609.6 Q 1.241(If a required ar)144
-633.6 R 1.241(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.742
-(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 645.6
-Q F0(,).18 E F4(OPT)2.735 E(ARG)-.81 E F0 .234
-(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F3
-(getopts)2.734 E F0 .234(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
+(diagnostic message is printed.)144 621.6 Q 1.241(If a required ar)144
+645.6 R 1.241(gument is not found, and)-.18 F F4(getopts)3.741 E F0
+1.241(is not silent, a question mark \()3.741 F F4(?).833 E F0 3.742
+(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144.36
+657.6 Q F0(,).18 E F1(OPT)2.714 E(ARG)-.81 E F0 .213
+(is unset, and a diagnostic message is printed.)2.463 F(If)5.213 E F4
+(getopts)2.713 E F0 .213(is silent, then a colon \()2.713 F F4(:).833 E
+F0(\)).833 E(is placed in)144 669.6 Q F2(name)2.86 E F0(and)2.68 E F1
+(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F4
+(getopts)144 693.6 Q F0 .902
(returns true if an option, speci\214ed or unspeci\214ed, is found.)
3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F
-(options is encountered or an error occurs.)144 693.6 Q(GNU Bash 5.0)72
+(options is encountered or an error occurs.)144 705.6 Q(GNU Bash 5.0)72
768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP
%%Page: 10 10
%%BeginPageSetup
@@ -1362,32 +1380,33 @@ F2(name)3.718 E F0 .858(is determined by searching)3.538 F .956
(viously-remembered pathname is discarded.)-.25 F .243(If the)144 120 R
F1<ad70>2.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 132 R(The)6.711 E F1<ad72>4.211 E F0 1.711
-(option causes the shell to for)4.211 F 1.712
-(get all remembered locations.)-.18 F(The)6.712 E F1<ad64>4.212 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 F1<ad74>3.333 E F0 .833(option is sup-)
-3.333 F .703(plied, the full pathname to which each)144 156 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
-168 R F1<ad74>3.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
-<ad6c>3.295 E F0 .795(option causes)3.295 F .934
-(output to be displayed in a format that may be reused as input.)144 180
-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 192 Q F1<ad6c>2.822 E F0 .322
-(is supplied, information about remembered commands is printed.)2.822 F
-.321(The return status is true)5.321 F(unless a)144 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 .866(Display helpful information about b)144
-232.8 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0
-.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25
-G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144
-244.8 R F2(pattern)2.807 E F0 2.807(;o).24 G .307
-(therwise help for all the b)-2.807 F .306
+(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F .615
+(of the command.)144 132 R(The)5.615 E F1<ad72>3.115 E F0 .615
+(option causes the shell to for)3.115 F .615
+(get all remembered locations.)-.18 F(The)5.615 E F1<ad64>3.115 E F0
+(op-)3.115 E .294(tion causes the shell to for)144 144 R .294
+(get the remembered location of each)-.18 F F2(name)2.793 E F0 5.293(.I)
+C 2.793(ft)-5.293 G(he)-2.793 E F1<ad74>2.793 E F0 .293
+(option is supplied,)2.793 F .028(the full pathname to which each)144
+156 R F2(name)2.528 E F0 .028(corresponds is printed.)2.528 F .028
+(If multiple)5.028 F F2(name)2.528 E F0(ar)2.528 E .028
+(guments are sup-)-.18 F .176(plied with)144 168 R F1<ad74>2.676 E F0
+2.676(,t)C(he)-2.676 E F2(name)2.676 E F0 .175
+(is printed before the hashed full pathname.)2.676 F(The)5.175 E F1
+<ad6c>2.675 E F0 .175(option causes output to)2.675 F .783
+(be displayed in a format that may be reused as input.)144 180 R .783
+(If no ar)5.783 F .783(guments are gi)-.18 F -.15(ve)-.25 G .783
+(n, or if only).15 F F1<ad6c>3.283 E F0(is)3.283 E .807
+(supplied, information about remembered commands is printed.)144 192 R
+.807(The return status is true unless a)5.807 F F2(name)144.36 204 Q F0
+(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.).25
+E F1(help)108 220.8 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2(pattern)
+-2.5 E F0(])A .866(Display helpful information about b)144 232.8 R .867
+(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 .867
+(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G
+3.367(sd).15 G(etailed)-3.367 E .224(help on all commands matching)144
+244.8 R F2(pattern)3.974 E F0 2.723(;o).24 G .223
+(therwise help for all the b)-2.723 F .223
(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1
<ad64>144 268.8 Q F0(Display a short description of each)180 268.8 Q F2
(pattern)2.5 E F1<ad6d>144 280.8 Q F0(Display the description of each)
@@ -1395,7 +1414,7 @@ G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144
(ormat)-2.5 E F1<ad73>144 292.8 Q F0
(Display only a short usage synopsis for each)180 292.8 Q F2(pattern)2.5
E F0(The return status is 0 unless no command matches)144 309.6 Q F2
-(pattern)2.5 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A
+(pattern)3.75 E F0(.).24 E F1(history [)108 326.4 Q F2(n)A F1(])A
(history \255c)108 338.4 Q(history \255d)108 350.4 Q F2(of)2.5 E(fset)
-.18 E F1(history \255d)108 362.4 Q F2(start)2.5 E F0<ad>A F2(end)A F1
(history \255anrw)108 374.4 Q F0([)2.5 E F2(\214lename)A F0(])A F1
@@ -1478,104 +1497,107 @@ E(UIL)-.1 E(TINS\(1\))-.92 E .669
(ed with the history comment character)-.1 F 5.668(.W)-.55 G .668
(hen the history)-5.668 F .955(\214le is read, lines be)144 96 R .956
(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 108 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 120 Q -.25(va)-.4 G .768(lid op\
-tion is encountered, an error occurs while reading or writing the histo\
-ry \214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF
-(of)144 132 Q(fset)-.18 E F0 1.032(is supplied as an ar)3.532 F 1.031
-(gument to)-.18 F/F2 10/Times-Bold@0 SF<ad64>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 F2<ad70>3.531
-E F0 -.1(fa)144 144 S(ils.).1 E F2(jobs)108 160.8 Q F0([)2.5 E F2
-(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108
-172.8 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E
-(The \214rst form lists the acti)144 184.8 Q .3 -.15(ve j)-.25 H 2.5
+(wed immediately by a digit)-.25 F .833
+(are interpreted as timestamps for the follo)144 108 R .833
+(wing history entry)-.25 F 5.832(.T)-.65 G .832(he return v)-5.832 F
+.832(alue is 0 unless an in-)-.25 F -.25(va)144 120 S .168(lid option i\
+s encountered, an error occurs while reading or writing the history \
+\214le, an in).25 F -.25(va)-.4 G(lid).25 E/F1 10/Times-Italic@0 SF(of)
+2.669 E(f-)-.18 E(set)144 132 Q F0(is supplied as an ar)2.5 E(gument to)
+-.18 E/F2 10/Times-Bold@0 SF<ad64>2.5 E F0 2.5(,o)C 2.5(rt)-2.5 G
+(he history e)-2.5 E(xpansion supplied as an ar)-.15 E(gument to)-.18 E
+F2<ad70>2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(jobs)108 148.8 Q F0([)2.5 E
+F2(\255lnprs)A F0 2.5(][)C F1(jobspec)A F0(... ])2.5 E F2(jobs \255x)108
+160.8 Q F1(command)2.5 E F0([)2.5 E F1(ar)2.5 E(gs)-.37 E F0(... ])2.5 E
+(The \214rst form lists the acti)144 172.8 Q .3 -.15(ve j)-.25 H 2.5
(obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F2<ad6c>144 196.8 Q F0
-(List process IDs in addition to the normal information.)180 196.8 Q F2
-<ad6e>144 208.8 Q F0 .193(Display information only about jobs that ha)
-180 208.8 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 220.8 Q F2<ad70>
-144 232.8 Q F0(List only the process ID of the job')180 232.8 Q 2.5(sp)
--.55 G(rocess group leader)-2.5 E(.)-.55 E F2<ad72>144 244.8 Q F0
-(Display only running jobs.)180 244.8 Q F2<ad73>144 256.8 Q F0
-(Display only stopped jobs.)180 256.8 Q(If)144 273.6 Q F1(jobspec)4.554
-E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314
-(n, output is restricted to information about that job).15 F 5.313(.T)
--.4 G .313(he return status is 0 unless)-5.313 F(an in)144 285.6 Q -.25
+(wing meanings:)-.25 E F2<ad6c>144 184.8 Q F0
+(List process IDs in addition to the normal information.)180 184.8 Q F2
+<ad6e>144 196.8 Q F0 .194(Display information only about jobs that ha)
+180 196.8 R .494 -.15(ve c)-.2 H .193(hanged status since the user w).15
+F .193(as last noti-)-.1 F(\214ed of their status.)180 208.8 Q F2<ad70>
+144 220.8 Q F0(List only the process ID of the job')180 220.8 Q 2.5(sp)
+-.55 G(rocess group leader)-2.5 E(.)-.55 E F2<ad72>144 232.8 Q F0
+(Display only running jobs.)180 232.8 Q F2<ad73>144 244.8 Q F0
+(Display only stopped jobs.)180 244.8 Q(If)144 261.6 Q F1(jobspec)4.553
+E F0 .313(is gi)3.123 F -.15(ve)-.25 G .313
+(n, output is restricted to information about that job).15 F 5.314(.T)
+-.4 G .314(he return status is 0 unless)-5.314 F(an in)144 273.6 Q -.25
(va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25
-E F1(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 302.4 R F2
-<ad78>2.894 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0
+E F1(jobspec)4.24 E F0(is supplied.)2.81 E .395(If the)144 290.4 R F2
+<ad78>2.895 E F0 .394(option is supplied,)2.894 F F2(jobs)2.894 E F0
.394(replaces an)2.894 F(y)-.15 E F1(jobspec)4.634 E F0 .394(found in)
-3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .395
-(with the corre-)3.164 F(sponding process group ID, and e)144 314.4 Q
+3.204 F F1(command)3.094 E F0(or)3.664 E F1(ar)3.224 E(gs)-.37 E F0 .394
+(with the corre-)3.164 F(sponding process group ID, and e)144 302.4 Q
-.15(xe)-.15 G(cutes).15 E F1(command)2.7 E F0(passing it)3.27 E F1(ar)
-2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E
-F2(kill)108 331.2 Q F0([)2.5 E F2<ad73>A F1(sigspec)2.5 E F0(|)2.5 E F2
-<ad6e>2.5 E F1(signum)2.5 E F0(|)2.5 E F2<ad>2.5 E F1(sigspec)A F0 2.5
+2.83 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15
+E F2(kill)108 319.2 Q F0([)2.5 E F2<ad73>A F1(sigspec)2.5 E F0(|)2.5 E
+F2<ad6e>2.5 E F1(signum)2.5 E F0(|)2.5 E F2<ad>2.5 E F1(sigspec)A F0 2.5
(][)C F1(pid)-2.5 E F0(|)2.5 E F1(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F2
-(kill \255l)108 343.2 Q F0(|)A F2<ad4c>A F0([)2.5 E F1(sigspec)A F0(|)
-2.5 E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .12
-(Send the signal named by)144 355.2 R F1(sigspec)2.96 E F0(or)2.93 E F1
-(signum)2.96 E F0 .119(to the processes named by)2.939 F F1(pid)3.869 E
-F0(or)3.389 E F1(jobspec)2.619 E F0(.).31 E F1(sigspec)5.459 E F0(is)
-2.929 E .318(either a case-insensiti)144 367.2 R .618 -.15(ve s)-.25 H
-.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0
-.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319
-(pre\214x\) or a signal)2.569 F(number;)144 379.2 Q F1(signum)4.189 E F0
-1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F1(sigspec)
-4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0
-1.348(is assumed.)3.599 F(An)6.348 E(ar)144 391.2 Q .522(gument of)-.18
-F F2<ad6c>3.023 E F0 .523(lists the signal names.)3.023 F .523(If an)
-5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when)
-.18 F F2<ad6c>3.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523
-(n, the names).15 F .28(of the signals corresponding to the ar)144 403.2
-R .28(guments are listed, and the return status is 0.)-.18 F(The)5.28 E
-F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 415.2 Q .377(gument to)-.18 F
-F2<ad6c>2.877 E F0 .378
-(is a number specifying either a signal number or the e)2.877 F .378
-(xit status of a process termi-)-.15 F .963(nated by a signal.)144 427.2
+(kill \255l)108 331.2 Q F0(|)A F2<ad4c>A F0([)2.5 E F1(sigspec)A F0(|)
+2.5 E F1 -.2(ex)2.5 G(it_status).2 E F0(])A .017
+(Send the signal named by)144 343.2 R F1(sigspec)2.857 E F0(or)2.827 E
+F1(signum)2.857 E F0 .017(to the processes named by)2.837 F F1(pid)3.767
+E F0(or)3.287 E F1(jobspec)4.257 E F0(.).31 E F1(sigspec)5.357 E F0(is)
+2.828 E .319(either a case-insensiti)144 355.2 R .619 -.15(ve s)-.25 H
+.319(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.819 E F0
+.318(\(with or without the)2.569 F F3(SIG)2.818 E F0 .318
+(pre\214x\) or a signal)2.568 F(number;)144 367.2 Q F1(signum)3.267 E F0
+.427(is a signal number)3.247 F 5.427(.I)-.55 G(f)-5.427 E F1(sigspec)
+3.267 E F0 .427(is not present, then)3.237 F F3(SIGTERM)2.927 E F0 .427
+(is assumed.)2.677 F .428(An ar)5.427 F(-)-.2 E .314(gument of)144 379.2
+R F2<ad6c>2.814 E F0 .314(lists the signal names.)2.814 F .314(If an)
+5.314 F 2.814(ya)-.15 G -.18(rg)-2.814 G .314(uments are supplied when)
+.18 F F2<ad6c>2.814 E F0 .314(is gi)2.814 F -.15(ve)-.25 G .313
+(n, the names of).15 F .119(the signals corresponding to the ar)144
+391.2 R .119(guments are listed, and the return status is 0.)-.18 F(The)
+5.12 E F1 -.2(ex)2.62 G(it_status).2 E F0(ar)2.62 E(-)-.2 E .8
+(gument to)144 403.2 R F2<ad6c>3.3 E F0 .8
+(is a number specifying either a signal number or the e)3.3 F .799
+(xit status of a process termi-)-.15 F .962(nated by a signal.)144 415.2
R(The)5.962 E F2<ad4c>3.462 E F0 .962(option is equi)3.462 F -.25(va)
-.25 G .962(lent to).25 F F2<ad6c>3.462 E F0(.)A F2(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 439.2 Q(alse if an error occurs or an in)
--.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 456 Q F1
+(successfully sent, or f)144 427.2 Q(alse if an error occurs or an in)
+-.1 E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 444 Q F1
(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144
-468 Q F1(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197
-(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197
-(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
-2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 480 Q F1(ar)2.83
+456 Q F1(ar)3.027 E(g)-.37 E F0 .197(is an arithmetic e)2.917 F .197
+(xpression to be e)-.15 F -.25(va)-.25 G .196(luated \(see).25 F F3 .196
+(ARITHMETIC EV)2.696 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo)
+2.446 E -.15(ve)-.15 G 2.696(\). If).15 F(the last)144 468 Q F1(ar)2.83
E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F2(let)2.5 E F0
-(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 496.8 Q F0([)2.5
+(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 484.8 Q F0([)2.5
E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1(value)A F0 2.5(].)C
-(.. | \255 ])-2.5 E -.15(Fo)144 508.8 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 520.8 Q 3.152(yo)
--.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F2(declar)
-3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local)3.152 E F0 .653
+(.. | \255 ])-2.5 E -.15(Fo)144 496.8 S 2.541(re).15 G .041(ach ar)
+-2.541 F .042(gument, a local v)-.18 F .042(ariable named)-.25 F F1
+(name)2.902 E F0 .042(is created, and assigned)2.722 F F1(value)2.832 E
+F0 5.042(.T).18 G(he)-5.042 E F1(option)2.542 E F0 .042(can be)2.542 F
+(an)144 508.8 Q 3.153(yo)-.15 G 3.153(ft)-3.153 G .653
+(he options accepted by)-3.153 F F2(declar)3.153 E(e)-.18 E F0 5.652(.W)
+C(hen)-5.652 E F2(local)3.152 E F0 .652
(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144
-532.8 Q F1(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H
+520.8 Q F1(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.421 E F1(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 544.8 R F2
-(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 556.8 R F2(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 568.8 R 1.243
-(ith no operands,)-.4 F F2(local)3.743 E F0 1.243
-(writes a list of local v)3.743 F 1.244
-(ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42
-(error to use)144 580.8 R F2(local)2.92 E F0 .42
-(when not within a function.)2.92 F .42(The return status is 0 unless)
-5.42 F F2(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in)
-144 592.8 Q -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)
-2.68 E F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)
-108 609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q
-F0([)2.5 E F2<ad64>A F1(delim)2.5 E F0 2.5(][)C F2<ad6e>-2.5 E F1(count)
+(If)5.422 E F1(name)2.922 E F0 .422(is \255, the set)2.922 F .51
+(of shell options is made local to the function in which)144 532.8 R F2
+(local)3.009 E F0 .509(is in)3.009 F -.2(vo)-.4 G -.1(ke).2 G .509
+(d: shell options changed us-).1 F 1.17(ing the)144 544.8 R F2(set)3.67
+E F0 -.2(bu)3.67 G 1.171
+(iltin inside the function are restored to their original v).2 F 1.171
+(alues when the function re-)-.25 F 3.381(turns. The)144 556.8 R .881
+(restore is ef)3.381 F .881(fected as if a series of)-.25 F F2(set)3.381
+E F0 .88(commands were e)3.38 F -.15(xe)-.15 G .88
+(cuted to restore the v).15 F(alues)-.25 E .787
+(that were in place before the function.)144 568.8 R -.4(Wi)5.788 G .788
+(th no operands,).4 F F2(local)3.288 E F0 .788(writes a list of local v)
+3.288 F .788(ariables to)-.25 F .655(the standard output.)144 580.8 R
+.654(It is an error to use)5.655 F F2(local)3.154 E F0 .654
+(when not within a function.)3.154 F .654(The return status is 0)5.654 F
+(unless)144 592.8 Q F2(local)2.5 E F0(is used outside a function, an in)
+2.5 E -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or)2.68 E
+F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout)108
+609.6 Q F0(Exit a login shell.)144 609.6 Q F2(map\214le)108 626.4 Q F0
+([)2.5 E F2<ad64>A F1(delim)2.5 E F0 2.5(][)C F2<ad6e>-2.5 E F1(count)
2.5 E F0 2.5(][)C F2<ad4f>-2.5 E F1(origin)2.5 E F0 2.5(][)C F2<ad73>
-2.5 E F1(count)2.5 E F0 2.5(][)C F2<ad74>-2.5 E F0 2.5(][)C F2<ad75>
-2.5 E F1(fd)2.5 E F0 2.5(][)C F2<ad43>-2.5 E F1(callbac)2.5 E(k)-.2 E
@@ -1586,12 +1608,12 @@ F0 2.5(][)C F2<ad63>-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E
(count)2.5 E F0 2.5(][)C F2<ad74>-2.5 E F0 2.5(][)C F2<ad75>-2.5 E F1
(fd)2.5 E F0 2.5(][)C F2<ad43>-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][)
C F2<ad63>-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0
-(])A .179(Read lines from the standard input into the inde)144 650.4 R
--.15(xe)-.15 G 2.679(da).15 G .179(rray v)-2.679 F(ariable)-.25 E F1
-(arr)2.68 E(ay)-.15 E F0 2.68(,o).32 G 2.68(rf)-2.68 G .18
-(rom \214le descriptor)-2.68 F F1(fd)4.65 E F0 1.249(if the)144 662.4 R
-F2<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F
-(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
+(])A .158(Read lines from the standard input into the inde)144 650.4 R
+-.15(xe)-.15 G 2.659(da).15 G .159(rray v)-2.659 F(ariable)-.25 E F1
+(arr)2.989 E(ay)-.15 E F0 2.659(,o).32 G 2.659(rf)-2.659 G .159
+(rom \214le descriptor)-2.659 F F1(fd)4.629 E F0 1.249(if the)144 662.4
+R F2<ad75>3.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249
+F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1
E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,)
-6.248 F(ha)144 674.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
(wing meanings:)-.25 E F2<ad64>144 686.4 Q F0 .91
@@ -1611,7 +1633,7 @@ BP
(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<ad4f>144 84 Q F0(Be)
180 84 Q(gin assigning to)-.15 E/F2 10/Times-Italic@0 SF(arr)2.83 E(ay)
--.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)
+-.15 E F0(at inde)2.82 E(x)-.15 E F2(origin)2.73 E F0 5(.T).24 G(he def)
-5 E(ault inde)-.1 E 2.5(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1<ad73>144 96
Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1
<ad74>144 108 Q F0(Remo)180 108 Q .3 -.15(ve a t)-.15 H(railing).15 E F2
@@ -1620,9 +1642,9 @@ Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1
F2(fd)2.5 E F0(instead of the standard input.)2.5 E F1<ad43>144 132 Q F0
(Ev)180 132 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E
F2(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F1<ad63>2.5 E F0
-(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1<ad63>144 144 Q
+(option speci\214es)2.5 E F2(quantum)2.75 E F0(.).32 E F1<ad63>144 144 Q
F0(Specify the number of lines read between each call to)180 144 Q F2
-(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 160.8 Q F1<ad43>2.968 E F0 .467
+(callbac)2.7 E(k)-.2 E F0(.).67 E(If)144 160.8 Q F1<ad43>2.968 E F0 .467
(is speci\214ed without)2.967 F F1<ad63>2.967 E F0 2.967(,t)C .467
(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2
(callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467
@@ -1635,10 +1657,10 @@ F0 .275(is e)2.775 F -.25(va)-.25 G .274
(ut before the array element is)-.2 F(assigned.)144 196.8 Q
(If not supplied with an e)144 213.6 Q(xplicit origin,)-.15 E F1
(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0
-(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 1.905
-(returns successfully unless an in)4.405 F -.25(va)-.4 G 1.905
-(lid option or option ar).25 F 1.906(gument is supplied,)-.18 F F2(arr)
-4.406 E(ay)-.15 E F0(is)4.406 E(in)144 242.4 Q -.25(va)-.4 G
+(before assigning to it.)2.5 E F1(map\214le)144 230.4 Q F0 .797
+(returns successfully unless an in)3.297 F -.25(va)-.4 G .797
+(lid option or option ar).25 F .797(gument is supplied,)-.18 F F2(arr)
+3.297 E(ay)-.15 E F0 .798(is in-)3.298 F -.25(va)144 242.4 S
(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0
(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E
F1(popd)108 259.2 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0
@@ -1673,16 +1695,16 @@ F F1(popd)5.644 E F0 .416(returns f)144 396 R .416(alse if an in)-.1 F
(,an)-.65 G(on-e)-2.915 E .415(xistent direc-)-.15 F
(tory stack entry is speci\214ed, or the directory change f)144 408 Q
(ails.)-.1 E F1(printf)108 424.8 Q F0([)2.5 E F1<ad76>A F2(var)2.5 E F0
-(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436
-(Write the formatted)144 436.8 R F2(ar)3.936 E(guments)-.37 E F0 1.437
-(to the standard output under the control of the)3.936 F F2(format)3.937
-E F0 6.437(.T)C(he)-6.437 E F1<ad76>3.937 E F0 .126
-(option causes the output to be assigned to the v)144 448.8 R(ariable)
--.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard)
-2.626 F(output.)144 460.8 Q(The)144 484.8 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 496.8 R -.15(ve)-.4 G .703
+(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A .357
+(Write the formatted)144 436.8 R F2(ar)2.857 E(guments)-.37 E F0 .357
+(to the standard output under the control of the)2.857 F F2(format)2.858
+E F0 5.358(.T)C(he)-5.358 E F1<ad76>2.858 E F0(op-)2.858 E .714
+(tion causes the output to be assigned to the v)144 448.8 R(ariable)-.25
+E F2(var)3.214 E F0 .714(rather than being printed to the standard)3.214
+F(output.)144 460.8 Q(The)144 484.8 Q F2(format)3.017 E F0 .517(is a ch\
+aracter string which contains three types of objects: plain characters,\
+ which are)3.017 F .704(simply copied to standard output, character esc\
+ape sequences, which are con)144 496.8 R -.15(ve)-.4 G .703
(rted and copied to).15 F .036(the standard output, and format speci\
\214cations, each of which causes printing of the ne)144 508.8 R .037
(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 520.8 Q(gument)-.37 E F0
@@ -1711,1289 +1733,1250 @@ F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E
(ve)-.4 G .21(rsion beha).15 F -.15(ve)-.2 G 2.71(sa).15 G 2.71(si)-2.71
G 2.71<66ad>-2.71 G 2.71(1h)-2.71 G .21(ad been gi)-2.71 F -.15(ve)-.25
G 2.71(n. This).15 F .21(is an e)2.71 F .21(xception to the usual)-.15 F
-F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E(Ar)144 681.6 Q
-.464(guments to non-string format speci\214ers are treated as C constan\
-ts, e)-.18 F .463(xcept that a leading plus or)-.15 F 1.258
-(minus sign is allo)144 693.6 R 1.259
-(wed, and if the leading character is a single or double quote, the v)
--.25 F 1.259(alue is the)-.25 F(ASCII v)144 705.6 Q(alue of the follo)
--.25 E(wing character)-.25 E(.)-.55 E(The)144 722.4 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(GNU Bash 5.0)72 768 Q(2004 Apr 20)
-149.565 E(12)198.725 E 0 Cg EP
+F1(printf)2.71 E F0(beha)180 664.8 Q(vior)-.2 E(.)-.55 E .902
+(The %b, %q, and %T directi)144 681.6 R -.15(ve)-.25 G 3.401(sa).15 G
+.901(ll use the \214eld width and precision ar)-3.401 F .901
+(guments from the format)-.18 F .357(speci\214cation and write that man)
+144 693.6 R 2.857(yb)-.15 G .358
+(ytes from \(or use that wide a \214eld for\) the e)-2.857 F .358
+(xpanded ar)-.15 F(gument,)-.18 E
+(which usually contains more characters than the original.)144 705.6 Q
+(Ar)144 722.4 Q .464(guments to non-string format speci\214ers are trea\
+ted as C constants, e)-.18 F .463(xcept that a leading plus or)-.15 F
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP
%%Page: 13 13
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Italic@0 SF(ar)144 84 Q
-(guments)-.37 E F0 .033(than are supplied, the e)2.533 F .033
-(xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si)
-.15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .034(alue or null string,)
--.25 F(as appropriate, had been supplied.)144 96 Q(The return v)5 E
-(alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E/F2 10
-/Times-Bold@0 SF(pushd)108 112.8 Q F0([)2.5 E F2<ad6e>A F0 2.5(][)C(+)
--2.5 E F1(n)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0(])A F2(pushd)108 124.8 Q
-F0([)2.5 E F2<ad6e>A F0 2.5(][)C F1(dir)-2.5 E F0(])A .64(Adds a direct\
-ory to the top of the directory stack, or rotates the stack, making the\
- ne)144 136.8 R 3.139(wt)-.25 G .639(op of the)-3.139 F .416
-(stack the current w)144 148.8 R .416(orking directory)-.1 F 5.416(.W)
--.65 G .416(ith no ar)-5.816 F(guments,)-.18 E F2(pushd)2.916 E F0 -.15
-(ex)2.916 G .416(changes the top tw).15 F 2.917(od)-.1 G(irectories)
--2.917 E 1.625(and returns 0, unless the directory stack is empty)144
-160.8 R 6.625(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha)
-.18 F 1.925 -.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)
-144 172.8 Q F2<ad6e>144 184.8 Q F0 1.811(Suppresses the normal change o\
-f directory when rotating or adding directories to the)180 184.8 R
-(stack, so that only the stack is manipulated.)180 196.8 Q F2(+)144
-208.8 Q F1(n)A F0 1.268(Rotates the stack so that the)180 208.8 R F1(n)
+E(UIL)-.1 E(TINS\(1\))-.92 E 1.258(minus sign is allo)144 84 R 1.259
+(wed, and if the leading character is a single or double quote, the v)
+-.25 F 1.259(alue is the)-.25 F(ASCII v)144 96 Q(alue of the follo)-.25
+E(wing character)-.25 E(.)-.55 E(The)144 112.8 Q/F1 10/Times-Italic@0 SF
+(format)2.515 E F0 .015(is reused as necessary to consume all of the)
+2.515 F F1(ar)2.515 E(guments)-.37 E F0 5.015(.I)C 2.514(ft)-5.015 G(he)
+-2.514 E F1(format)2.514 E F0 .014(requires more)2.514 F F1(ar)2.514 E
+(-)-.2 E(guments)144 124.8 Q F0 .565(than are supplied, the e)3.065 F
+.566(xtra format speci\214cations beha)-.15 F .866 -.15(ve a)-.2 H 3.066
+(si).15 G 3.066(faz)-3.066 G .566(ero v)-3.066 F .566
+(alue or null string,)-.25 F(as appropriate, had been supplied.)144
+136.8 Q(The return v)5 E(alue is zero on success, non-zero on f)-.25 E
+(ailure.)-.1 E/F2 10/Times-Bold@0 SF(pushd)108 153.6 Q F0([)2.5 E F2
+<ad6e>A F0 2.5(][)C(+)-2.5 E F1(n)A F0 2.5(][)C<ad>-2.5 E F1(n)A F0(])A
+F2(pushd)108 165.6 Q F0([)2.5 E F2<ad6e>A F0 2.5(][)C F1(dir)-2.5 E F0
+(])A .64(Adds a directory to the top of the directory stack, or rotates\
+ the stack, making the ne)144 177.6 R 3.139(wt)-.25 G .639(op of the)
+-3.139 F .416(stack the current w)144 189.6 R .416(orking directory)-.1
+F 5.416(.W)-.65 G .416(ith no ar)-5.816 F(guments,)-.18 E F2(pushd)2.916
+E F0 -.15(ex)2.916 G .416(changes the top tw).15 F 2.917(od)-.1 G
+(irectories)-2.917 E 1.625
+(and returns 0, unless the directory stack is empty)144 201.6 R 6.625
+(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925
+-.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 213.6 Q
+F2<ad6e>144 225.6 Q F0 1.811(Suppresses the normal change of directory \
+when rotating or adding directories to the)180 225.6 R
+(stack, so that only the stack is manipulated.)180 237.6 Q F2(+)144
+249.6 Q F1(n)A F0 1.268(Rotates the stack so that the)180 249.6 R F1(n)
3.768 E F0 1.267(th directory \(counting from the left of the list sho)B
-1.267(wn by)-.25 F F2(dirs)180 220.8 Q F0 2.5(,s)C
-(tarting with zero\) is at the top.)-2.5 E F2<ad>144 232.8 Q F1(n)A F0
-.92(Rotates the stack so that the)180 232.8 R F1(n)3.42 E F0 .92
+1.267(wn by)-.25 F F2(dirs)180 261.6 Q F0 2.5(,s)C
+(tarting with zero\) is at the top.)-2.5 E F2<ad>144 273.6 Q F1(n)A F0
+.92(Rotates the stack so that the)180 273.6 R F1(n)3.42 E F0 .92
(th directory \(counting from the right of the list sho)B .92(wn by)-.25
-F F2(dirs)180 244.8 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
--2.5 E F1(dir)144.35 256.8 Q F0(Adds)180 256.8 Q F1(dir)3.138 E F0 .288
+F F2(dirs)180 285.6 Q F0 2.5(,s)C(tarting with zero\) is at the top.)
+-2.5 E F1(dir)144.35 297.6 Q F0(Adds)180 297.6 Q F1(dir)3.138 E F0 .288
(to the directory stack at the top, making it the ne)3.518 F 2.787(wc)
-.25 G .287(urrent w)-2.787 F .287(orking directory as)-.1 F
-(if it had been supplied as the ar)180 268.8 Q(gument to the)-.18 E F2
-(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 285.6 R F2(pushd)
+(if it had been supplied as the ar)180 309.6 Q(gument to the)-.18 E F2
+(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 326.4 R F2(pushd)
2.988 E F0 .488(command is successful, a)2.988 F F2(dirs)2.988 E F0 .488
(is performed as well.)2.988 F .489(If the \214rst form is used,)5.488 F
-F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 297.6 R F1(dir)
+F2(pushd)2.989 E F0 1.04(returns 0 unless the cd to)144 338.4 R F1(dir)
3.89 E F0 -.1(fa)4.27 G 3.539(ils. W).1 F 1.039(ith the second form,)-.4
F F2(pushd)3.539 E F0 1.039(returns 0 unless the directory)3.539 F .846
-(stack is empty)144 309.6 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
+(stack is empty)144 350.4 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\
directory stack element is speci\214ed, or the directory change to the)
--.15 F(speci\214ed ne)144 321.6 Q 2.5(wc)-.25 G(urrent directory f)-2.5
-E(ails.)-.1 E F2(pwd)108 338.4 Q F0([)2.5 E F2(\255LP)A F0(])A .845
-(Print the absolute pathname of the current w)144 350.4 R .845
+-.15 F(speci\214ed ne)144 362.4 Q 2.5(wc)-.25 G(urrent directory f)-2.5
+E(ails.)-.1 E F2(pwd)108 379.2 Q F0([)2.5 E F2(\255LP)A F0(])A .845
+(Print the absolute pathname of the current w)144 391.2 R .845
(orking directory)-.1 F 5.844(.T)-.65 G .844
(he pathname printed contains no)-5.844 F .181(symbolic links if the)144
-362.4 R F2<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F2
+403.2 R F2<ad50>2.681 E F0 .181(option is supplied or the)2.681 F F2
.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F2
(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264
-(enabled. If)144 374.4 R(the)3.264 E F2<ad4c>3.264 E F0 .763
+(enabled. If)144 415.2 R(the)3.264 E F2<ad4c>3.264 E F0 .763
(option is used, the pathname printed may contain symbolic links.)3.264
-F .763(The return)5.763 F 1.36(status is 0 unless an error occurs while\
- reading the name of the current directory or an in)144 386.4 R -.25(va)
--.4 G(lid).25 E(option is supplied.)144 398.4 Q F2 -.18(re)108 415.2 S
-(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2<ad61>-3.817 E F1
-(aname)3.817 E F0 3.817(][)C F2<ad64>-3.817 E F1(delim)3.817 E F0 3.817
-(][)C F2<ad69>-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2<ad6e>
--3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad4e>-3.816 E
-F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad70>-3.816 E F1(pr)
-3.816 E(ompt)-.45 E F0 3.816(][)C F2<ad74>-3.816 E F1(timeout)3.816 E F0
-3.816(][)C F2<ad75>-3.816 E F1(fd)3.816 E F0(])A([)108 427.2 Q F1(name)A
-F0(...])2.5 E .516(One line is read from the standard input, or from th\
-e \214le descriptor)144 439.2 R F1(fd)3.016 E F0 .516(supplied as an ar)
-3.016 F .517(gument to)-.18 F(the)144 451.2 Q F2<ad75>3.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 F2 -.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 463.2 R F1(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 F1(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 475.2 S 1.112(rds than names, the remaining w).1 F 1.112
-(ords and their interv)-.1 F 1.112
-(ening delimiters are assigned to the last)-.15 F F1(name)144 487.2 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 499.2 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 511.2 R .197
-(xpansion \(described abo)-.15 F .497 -.15(ve u)-.15 H(nder).15 E F2
--.75(Wo)2.697 G .197(rd Splitting).75 F F0 2.697(\). The)B .197
-(backslash charac-)2.697 F .157(ter \()144 523.2 R F2(\\)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
-535.2 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F2<ad61>144 547.2 Q F1(aname)2.5 E F0 1.049
-(The w)180 559.2 R 1.049
-(ords are assigned to sequential indices of the array v)-.1 F(ariable)
--.25 E F1(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F1
-(aname)180.33 571.2 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25
-(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F1(name)2.5 E F0(ar)2.5
-E(guments are ignored.)-.18 E F2<ad64>144 583.2 Q F1(delim)2.5 E F0
-1.318(The \214rst character of)180 595.2 R F1(delim)3.818 E F0 1.317
-(is used to terminate the input line, rather than ne)3.818 F 3.817
-(wline. If)-.25 F F1(delim)180 607.2 Q F0(is the empty string,)2.5 E F2
--.18(re)2.5 G(ad).18 E F0
+F .763(The return)5.763 F .405(status is 0 unless an error occurs while\
+ reading the name of the current directory or an in)144 427.2 R -.25(va)
+-.4 G .405(lid op-).25 F(tion is supplied.)144 439.2 Q F2 -.18(re)108
+456 S(ad).18 E F0([)3.817 E F2(\255ers)A F0 3.817(][)C F2<ad61>-3.817 E
+F1(aname)3.817 E F0 3.817(][)C F2<ad64>-3.817 E F1(delim)3.817 E F0
+3.817(][)C F2<ad69>-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2
+<ad6e>-3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad4e>
+-3.816 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2<ad70>-3.816 E
+F1(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F2<ad74>-3.816 E F1(timeout)
+3.816 E F0 3.816(][)C F2<ad75>-3.816 E F1(fd)3.816 E F0(])A([)108 468 Q
+F1(name)A F0(...])2.5 E .516(One line is read from the standard input, \
+or from the \214le descriptor)144 480 R F1(fd)3.016 E F0 .516
+(supplied as an ar)3.016 F .517(gument to)-.18 F(the)144 492 Q F2<ad75>
+2.936 E F0 .436(option, split into w)2.936 F .435(ords as described abo)
+-.1 F .735 -.15(ve u)-.15 H(nder).15 E F2 -.75(Wo)2.935 G .435
+(rd Splitting).75 F F0 2.935(,a)C .435(nd the \214rst w)-2.935 F .435
+(ord is as-)-.1 F .375(signed to the \214rst)144 504 R F1(name)3.235 E
+F0 2.876(,t).18 G .376(he second w)-2.876 F .376(ord to the second)-.1 F
+F1(name)3.236 E F0 2.876(,a).18 G .376(nd so on.)-2.876 F .376
+(If there are more w)5.376 F(ords)-.1 E .237
+(than names, the remaining w)144 516 R .237(ords and their interv)-.1 F
+.237(ening delimiters are assigned to the last)-.15 F F1(name)3.096 E F0
+5.236(.I).18 G(f)-5.236 E .874(there are fe)144 528 R .874(wer w)-.25 F
+.875(ords read from the input stream than names, the remaining names ar\
+e assigned)-.1 F .518(empty v)144 540 R 3.018(alues. The)-.25 F .518
+(characters in)3.018 F/F3 9/Times-Bold@0 SF(IFS)3.018 E F0 .518
+(are used to split the line into w)2.768 F .517
+(ords using the same rules the)-.1 F .026(shell uses for e)144 552 R
+.026(xpansion \(described abo)-.15 F .326 -.15(ve u)-.15 H(nder).15 E F2
+-.75(Wo)2.526 G .026(rd Splitting).75 F F0 2.526(\). The)B .026
+(backslash character \()2.526 F F2(\\)A F0 2.527(\)m)C(ay)-2.527 E .489
+(be used to remo)144 564 R .788 -.15(ve a)-.15 H .788 -.15(ny s).15 H
+.488(pecial meaning for the ne).15 F .488
+(xt character read and for line continuation.)-.15 F(Op-)5.488 E
+(tions, if supplied, ha)144 576 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F2<ad61>144 588 Q F1(aname)2.5 E F0 1.025(The w)
+180 600 R 1.026(ords are assigned to sequential indices of the array v)
+-.1 F(ariable)-.25 E F1(aname)3.856 E F0 3.526(,s).18 G 1.026
+(tarting at 0.)-3.526 F F1(aname)180.33 612 Q F0(is unset before an)2.68
+E 2.5(yn)-.15 G .5 -.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E
+F1(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F2<ad64>144 624 Q
+F1(delim)2.5 E F0 .281(The \214rst character of)180 636 R F1(delim)2.781
+E F0 .281(is used to terminate the input line, rather than ne)2.781 F
+2.78(wline. If)-.25 F F1(de-)2.78 E(lim)180 648 Q F0
+(is the empty string,)2.5 E F2 -.18(re)2.5 G(ad).18 E F0
(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2
-<ad65>144 619.2 Q F0 .372
-(If the standard input is coming from a terminal,)180 619.2 R F2 -.18
-(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)
-2.623 E -.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E
-.218(to obtain the line.)180 631.2 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 643.2 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E
-(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5 E
-(ault \214lename completion.)-.1 E F2<ad69>144 655.2 Q F1(te)2.5 E(xt)
--.2 E F0(If)180 655.2 Q F2 -.18(re)2.715 G(adline).18 E F0 .216
+<ad65>144 660 Q F0 .372
+(If the standard input is coming from a terminal,)180 660 R F2 -.18(re)
+2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.873 E F0(abo)2.623 E
+-.15(ve)-.15 G 2.873(\)i).15 G 2.873(su)-2.873 G(sed)-2.873 E .218
+(to obtain the line.)180 672 R .218(Readline uses the current \(or def)
+5.218 F .218(ault, if line editing w)-.1 F .218(as not pre)-.1 F
+(viously)-.25 E(acti)180 684 Q -.15(ve)-.25 G 2.5(\)e).15 G
+(diting settings, b)-2.5 E(ut uses Readline')-.2 E 2.5(sd)-.55 G(ef)-2.5
+E(ault \214lename completion.)-.1 E F2<ad69>144 696 Q F1(te)2.5 E(xt)-.2
+E F0(If)180 696 Q F2 -.18(re)2.715 G(adline).18 E F0 .216
(is being used to read the line,)2.715 F F1(te)2.716 E(xt)-.2 E F0 .216
(is placed into the editing b)2.716 F(uf)-.2 E .216(fer before edit-)
--.25 F(ing be)180 667.2 Q(gins.)-.15 E F2<ad6e>144 679.2 Q F1(nc)2.5 E
-(har)-.15 E(s)-.1 E F2 -.18(re)180 691.2 S(ad).18 E F0 1.395
-(returns after reading)3.895 F F1(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 703.2 Q(ut honors a delimiter if fe)-.2 E(wer than)
--.25 E F1(nc)2.5 E(har)-.15 E(s)-.1 E F0
-(characters are read before the delimiter)2.5 E(.)-.55 E(GNU Bash 5.0)72
-768 Q(2004 Apr 20)149.565 E(13)198.725 E 0 Cg EP
+-.25 F(ing be)180 708 Q(gins.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(13)198.725 E 0 Cg EP
%%Page: 14 14
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad4e>144 84 Q/F2 10
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6e>144 84 Q/F2 10
/Times-Italic@0 SF(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 96 S(ad)
+.18 E F0 .323(returns after reading)2.823 F F2(nc)2.823 E(har)-.15 E(s)
+-.1 E F0 .323(characters rather than w)2.823 F .323
+(aiting for a complete line of in-)-.1 F(put, b)180 108 Q
+(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15
+E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1
+<ad4e>144 120 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 132 S(ad)
.18 E F0 1.269(returns after reading e)3.769 F(xactly)-.15 E F2(nc)3.769
E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.27
(aiting for a complete)-.1 F .275
-(line of input, unless EOF is encountered or)180 108 R F1 -.18(re)2.775
+(line of input, unless EOF is encountered or)180 144 R F1 -.18(re)2.775
G(ad).18 E F0 .274(times out.)2.774 F .274(Delimiter characters encoun-)
5.274 F 1.002
-(tered in the input are not treated specially and do not cause)180 120 R
+(tered in the input are not treated specially and do not cause)180 156 R
F1 -.18(re)3.503 G(ad).18 E F0 1.003(to return until)3.503 F F2(nc)3.503
-E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 132 R .608
+E(har)-.15 E(s)-.1 E F0 .609(characters are read.)180 168 R .608
(The result is not split on the characters in)5.609 F F1(IFS)3.108 E F0
-3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 144 S .669
+3.108(;t)C .608(he intent is that the)-3.108 F -.25(va)180 180 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 F1<ad72>180 156 Q F0(option belo)
-2.5 E(w\).)-.25 E F1<ad70>144 168 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)
-180 180 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F
+(xception of backslash; see the)-.15 F F1<ad72>180 192 Q F0(option belo)
+2.5 E(w\).)-.25 E F1<ad70>144 204 Q F2(pr)2.5 E(ompt)-.45 E F0(Display)
+180 216 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161(on standard error)3.661 F
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 192 Q 2.5(yi)-.15 G 2.5
+(wline, before attempting to read)-.25 F(an)180 228 Q 2.5(yi)-.15 G 2.5
(nput. The)-2.5 F
(prompt is displayed only if input is coming from a terminal.)2.5 E F1
-<ad72>144 204 Q F0 .543(Backslash does not act as an escape character)
-180 204 R 5.543(.T)-.55 G .544(he backslash is considered to be part of)
--5.543 F .493(the line.)180 216 R .493(In particular)5.493 F 2.993(,ab)
+<ad72>144 240 Q F0 .543(Backslash does not act as an escape character)
+180 240 R 5.543(.T)-.55 G .544(he backslash is considered to be part of)
+-5.543 F .493(the line.)180 252 R .493(In particular)5.493 F 2.993(,ab)
-.4 G(ackslash-ne)-2.993 E .493
(wline pair may not then be used as a line continua-)-.25 F(tion.)180
-228 Q F1<ad73>144 240 Q F0(Silent mode.)180 240 Q
+264 Q F1<ad73>144 276 Q F0(Silent mode.)180 276 Q
(If input is coming from a terminal, characters are not echoed.)5 E F1
-<ad74>144 252 Q F2(timeout)2.5 E F0(Cause)180 264 Q F1 -.18(re)2.928 G
+<ad74>144 288 Q F2(timeout)2.5 E F0(Cause)180 300 Q F1 -.18(re)2.928 G
(ad).18 E F0 .428(to time out and return f)2.928 F .428
(ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561
-(ber of characters\) is not read within)180 276 R F2(timeout)3.061 E F0
+(ber of characters\) is not read within)180 312 R F2(timeout)3.061 E F0
(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number)
-3.061 F(with a fractional portion follo)180 288 Q
+3.061 F(with a fractional portion follo)180 324 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
-300 R .505(fect when reading)-.25 F .589(from re)180 312 R .589
+336 R .505(fect when reading)-.25 F .589(from re)180 348 R .589
(gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589
(times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve)
-.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59
-(artial input read into the speci\214ed).15 F -.25(va)180 324 S(riable)
+(artial input read into the speci\214ed).15 F -.25(va)180 360 S(riable)
.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27
(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77
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 336 R 1.12(xit status is 0 if input is a)
+(ata.)-2.77 E 1.12(The e)180 372 R 1.12(xit status is 0 if input is a)
-.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor)
.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180
-348 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
-.15 E(xceeded.)-.15 E F1<ad75>144 360 Q F2(fd)2.5 E F0
-(Read input from \214le descriptor)180 360 Q F2(fd)2.5 E F0(.)A .477
-(If no)144 376.8 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 9/Times-Bold@0 SF(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 .772
-(unless end-of-\214le is encountered,)144 388.8 R F1 -.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 400.8 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 412.8 Q(gument to)-.18 E F1<ad75>
-2.5 E F0(.)A F1 -.18(re)108 429.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A
-F0 2.5(][)C F1<ad70>-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 441.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.097(quent assignment.)144 453.6 R
-1.097(If the)6.097 F F1<ad66>3.597 E F0 1.097
-(option is supplied, the functions corresponding to the)3.597 F F2
-(names)3.596 E F0 1.096(are so)3.596 F(mark)144 465.6 Q 3.334(ed. The)
+384 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e)
+.15 E(xceeded.)-.15 E F1<ad75>144 396 Q F2(fd)2.5 E F0
+(Read input from \214le descriptor)180 396 Q F2(fd)2.5 E F0(.)A .522
+(If no)144 412.8 R F2(names)3.382 E F0 .522
+(are supplied, the line read, without the ending delimiter b)3.292 F
+.522(ut otherwise unmodi\214ed, is)-.2 F 1.186(assigned to the v)144
+424.8 R(ariable)-.25 E/F3 9/Times-Bold@0 SF(REPL)3.686 E(Y)-.828 E/F4 9
+/Times-Roman@0 SF(.)A F0 1.186(The e)5.686 F 1.186
+(xit status is zero, unless end-of-\214le is encountered,)-.15 F F1 -.18
+(re)3.687 G(ad).18 E F0 .961
+(times out \(in which case the status is greater than 128\), a v)144
+436.8 R .96(ariable assignment error \(such as as-)-.25 F .706
+(signing to a readonly v)144 448.8 R .706(ariable\) occurs, or an in)
+-.25 F -.25(va)-.4 G .706(lid \214le descriptor is supplied as the ar)
+.25 F .707(gument to)-.18 F F1<ad75>144 460.8 Q F0(.)A F1 -.18(re)108
+477.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1<ad70>-2.5 E
+F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C(..])
+-2.5 E .77(The gi)144 489.6 R -.15(ve)-.25 G(n).15 E F2(names)3.27 E F0
+.77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77(alues of these)-.25
+F F2(names)3.63 E F0 .77(may not be changed by subse-)3.54 F 1.096
+(quent assignment.)144 501.6 R 1.096(If the)6.096 F F1<ad66>3.596 E F0
+1.097(option is supplied, the functions corresponding to the)3.596 F F2
+(names)3.597 E F0 1.097(are so)3.597 F(mark)144 513.6 Q 3.334(ed. The)
-.1 F F1<ad61>3.334 E F0 .834(option restricts the v)3.334 F .834
(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the)
-3.334 F F1<ad41>3.334 E F0 .834(option restricts the v)3.334 F(ari-)
--.25 E .777(ables to associati)144 477.6 R 1.077 -.15(ve a)-.25 H 3.277
-(rrays. If).15 F .777(both options are supplied,)3.277 F F1<ad41>3.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 489.6 R -.15(ve)
+-.25 E .776(ables to associati)144 525.6 R 1.076 -.15(ve a)-.25 H 3.276
+(rrays. If).15 F .777(both options are supplied,)3.276 F F1<ad41>3.277 E
+F0(tak)3.277 E .777(es precedence.)-.1 F .777(If no)5.777 F F2(name)
+3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 537.6 R -.15(ve)
-.25 G .521(n, or if the).15 F F1<ad70>3.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 501.6 R(The)5.295 E F1
-<ad70>2.795 E F0(option)2.795 E .786
+.521(The other)5.521 F .295(options may be used to restrict the output \
+to a subset of the set of readonly names.)144 549.6 R(The)5.296 E F1
+<ad70>2.796 E F0(option)2.796 E .786
(causes output to be displayed in a format that may be reused as input.)
-144 513.6 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144
-525.6 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
+144 561.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144
+573.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v)
-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor)
3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in)
-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the)
-144 537.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
+144 585.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v)
-.25 F .26(ariable name, or)-.25 F F1<ad66>2.76 E F0 .26
-(is supplied with a)2.76 F F2(name)144.36 549.6 Q F0
-(that is not a function.)2.68 E F1 -.18(re)108 566.4 S(tur).18 E(n)-.15
-E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 578.4 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 590.4 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 602.4 R 3.738(,t)-.4 G 1.238
+(is supplied with a)2.76 F F2(name)144.36 597.6 Q F0
+(that is not a function.)2.68 E F1 -.18(re)108 614.4 S(tur).18 E(n)-.15
+E F0([)2.5 E F2(n)A F0(])A .02(Causes a function to stop e)144 626.4 R
+-.15(xe)-.15 G .02(cuting and return the v).15 F .021
+(alue speci\214ed by)-.25 F F2(n)2.881 E F0 .021(to its caller)2.761 F
+5.021(.I)-.55 G(f)-5.021 E F2(n)2.881 E F0 .021(is omitted,)2.761 F .597
+(the return status is that of the last command e)144 638.4 R -.15(xe)
+-.15 G .596(cuted in the function body).15 F 5.596(.I)-.65 G(f)-5.596 E
+F1 -.18(re)3.096 G(tur).18 E(n)-.15 E F0 .596(is e)3.096 F -.15(xe)-.15
+G(cuted).15 E .267(by a trap handler)144 650.4 R 2.767(,t)-.4 G .267
(he last command used to determine the status is the last command e)
--3.738 F -.15(xe)-.15 G(cuted).15 E 1.032(before the trap handler)144
-614.4 R 6.032(.I)-.55 G(f)-6.032 E F1 -.18(re)3.532 G(tur).18 E(n)-.15 E
-F0 1.032(is e)3.532 F -.15(xe)-.15 G 1.032(cuted during a).15 F F1(DEB)
-3.533 E(UG)-.1 E F0 1.033(trap, the last command used to)3.533 F .39
-(determine the status is the last command e)144 626.4 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 638.4 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 650.4 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 662.4 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F
-.326(xit status of the script.)-.15 F(If)5.326 E 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 674.4 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 686.4 R -.15
-(xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E
-F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15
-E .75(mand associated with the)144 698.4 R F1(RETURN)3.249 E F0 .749
-(trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15
-G .749(cution resumes after the function).15 F(or script.)144 710.4 Q
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP
+-2.767 F -.15(xe)-.15 G .268(cuted be-).15 F .02(fore the trap handler)
+144 662.4 R 5.02(.I)-.55 G(f)-5.02 E F1 -.18(re)2.52 G(tur).18 E(n)-.15
+E F0 .02(is e)2.52 F -.15(xe)-.15 G .02(cuted during a).15 F F1(DEB)2.52
+E(UG)-.1 E F0 .02(trap, the last command used to deter)2.52 F(-)-.2 E
+.885(mine the status is the last command e)144 674.4 R -.15(xe)-.15 G
+.886(cuted by the trap handler before).15 F F1 -.18(re)3.386 G(tur).18 E
+(n)-.15 E F0 -.1(wa)3.386 G 3.386(si).1 G -1.9 -.4(nv o)-3.386 H -.1(ke)
+.4 G 3.386(d. If).1 F F1 -.18(re)144 686.4 S(tur).18 E(n)-.15 E F0 .628
+(is used outside a function, b)3.128 F .628(ut during e)-.2 F -.15(xe)
+-.15 G .628(cution of a script by the).15 F F1(.)3.127 E F0(\()5.627 E
+F1(sour)A(ce)-.18 E F0 3.127(\)c)C .627(ommand, it)-3.127 F .588
+(causes the shell to stop e)144 698.4 R -.15(xe)-.15 G .588
+(cuting that script and return either).15 F F2(n)3.448 E F0 .589
+(or the e)3.329 F .589(xit status of the last com-)-.15 F .326(mand e)
+144 710.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F
+.326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .325
+(is supplied, the return v)2.826 F .325(alue is)-.25 F 2.035
+(its least signi\214cant 8 bits.)144 722.4 R 2.035
+(The return status is non-zero if)7.035 F F1 -.18(re)4.536 G(tur).18 E
+(n)-.15 E F0 2.036(is supplied a non-numeric)4.536 F(GNU Bash 5.0)72 768
+Q(2004 Apr 20)149.565 E(14)198.725 E 0 Cg EP
%%Page: 15 15
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(set)108 84 Q F0([)2.5
-E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1<ad6f>-2.5 E/F2 10
-/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37
-E F0(...])2.5 E F1(set)108 96 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 108 S .835
+E(UIL)-.1 E(TINS\(1\))-.92 E(ar)144 84 Q .706
+(gument, or is used outside a function and not during e)-.18 F -.15(xe)
+-.15 G .705(cution of a script by).15 F/F1 10/Times-Bold@0 SF(.)3.205 E
+F0(or)4.038 E F1(sour)3.205 E(ce)-.18 E F0 5.705(.A)C -.15(ny)-5.705 G
+.365(command associated with the)144 96 R F1(RETURN)2.865 E F0 .365
+(trap is e)2.865 F -.15(xe)-.15 G .365(cuted before e).15 F -.15(xe)-.15
+G .366(cution resumes after the func-).15 F(tion or script.)144 108 Q F1
+(set)108 124.8 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C
+F1<ad6f>-2.5 E/F2 10/Times-Italic@0 SF(option\255name)2.5 E F0 2.5(][)C
+F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E F1(set)108 136.8 Q F0([)2.5 E F1
+(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E
+F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E F0(...])2.5 E -.4(Wi)144 148.8 S .836
(thout options, the name and v).4 F .835(alue of each shell v)-.25 F
-.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 120 R
-3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783(riables cannot be)
-.25 F 2.946(reset. In)144 132 R F2 .447(posix mode)2.946 F F0 2.947(,o)C
-.447(nly shell v)-2.947 F .447(ariables are listed.)-.25 F .447
-(The output is sorted according to the current)5.447 F 3.531
-(locale. When)144 144 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 156 R 1.624
-(alues for the positional parameters and are assigned, in)-.25 F(order)
-144 168 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 F1<ad61>144 180 Q F0
-1.378(Each v)184 180 R 1.377
+.835(ariable are displayed in a format that can be)-.25 F .784
+(reused as input for setting or resetting the currently-set v)144 160.8
+R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784
+(riables cannot be).25 F 2.947(reset. In)144 172.8 R F2 .447(posix mode)
+2.947 F F0 2.947(,o)C .447(nly shell v)-2.947 F .447
+(ariables are listed.)-.25 F .447
+(The output is sorted according to the current)5.447 F 3.53
+(locale. When)144 184.8 R 1.031(options are speci\214ed, the)3.53 F
+3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.531(utes. An)
+-.2 F 3.531(ya)-.15 G -.18(rg)-3.531 G 1.031(uments remaining).18 F .585
+(after option processing are treated as v)144 196.8 R .584
+(alues for the positional parameters and are assigned, in or)-.25 F(-)
+-.2 E(der)144 208.8 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5
+E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)
+-5 E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1<ad61>144
+220.8 Q F0 1.377(Each v)184 220.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.377(xport attrib)-.15 F
-1.377(ute and)-.2 F(mark)184 192 Q(ed for e)-.1 E(xport to the en)-.15 E
-(vironment of subsequent commands.)-.4 E F1<ad62>144 204 Q F0 .131
-(Report the status of terminated background jobs immediately)184 204 R
-2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E
-(primary prompt.)184 216 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)-.25
-H(nly when job control is enabled.).15 E F1<ad65>144 228 Q F0 .088
-(Exit immediately if a)184 228 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 240 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
-252 R .079(xit if the command that f)-.15 F .079
-(ails is part of the command list immediately)-.1 F(follo)184 264 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 276 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 288 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 300 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 312 R 1.112(ailed while)-.1 F
-F1<ad65>3.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 324 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 336 R .617
+-.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.378(xport attrib)-.15 F
+1.378(ute and)-.2 F(mark)184 232.8 Q(ed for e)-.1 E(xport to the en)-.15
+E(vironment of subsequent commands.)-.4 E F1<ad62>144 244.8 Q F0 .132
+(Report the status of terminated background jobs immediately)184 244.8 R
+2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E
+(primary prompt.)184 256.8 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o)
+-.25 H(nly when job control is enabled.).15 E F1<ad65>144 268.8 Q F0
+.087(Exit immediately if a)184 268.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 280.8 Q
+F2 1.521(compound command)4.021 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF
+1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e)
+.15 F 1.521(xits with a non-zero status.)-.15 F .079
+(The shell does not e)184 292.8 R .079(xit if the command that f)-.15 F
+.08(ails is part of the command list immediately)-.1 F(follo)184 304.8 Q
+1.655(wing a)-.25 F F1(while)4.155 E F0(or)4.155 E F1(until)4.155 E F0
+-.1(ke)4.155 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.654
+(wing the)-.25 F F1(if)4.154 E F0(or)4.154 E F1(elif)4.154 E F0(reserv)
+4.154 E(ed)-.15 E -.1(wo)184 316.8 S .581(rds, part of an).1 F 3.081(yc)
+-.15 G .581(ommand e)-3.081 F -.15(xe)-.15 G .581(cuted in a).15 F F1
+(&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .582(list e)3.082 F .582
+(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 328.8 R
+F1(&&)3.418 E F0(or)3.418 E F1(||)3.418 E F0 3.418(,a)C 1.218 -.15(ny c)
+-3.418 H .918(ommand in a pipeline b).15 F .917
+(ut the last, or if the command')-.2 F 3.417(sr)-.55 G(eturn)-3.417 E
+-.25(va)184 340.8 S .66(lue is being in).25 F -.15(ve)-.4 G .66
+(rted with).15 F F1(!)3.16 E F0 5.661(.I)C 3.161(fac)-5.661 G .661
+(ompound command other than a subshell returns a)-3.161 F 1.113
+(non-zero status because a command f)184 352.8 R 1.112(ailed while)-.1 F
+F1<ad65>3.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.112
+(eing ignored, the shell does)-3.612 F .177(not e)184 364.8 R 2.677
+(xit. A)-.15 F .177(trap on)2.677 F F1(ERR)2.677 E F0 2.677(,i)C 2.678
+(fs)-2.677 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178
+(cuted before the shell e).15 F 2.678(xits. This)-.15 F .178
+(option applies to)2.678 F .618(the shell en)184 376.8 R .617
(vironment and each subshell en)-.4 F .617(vironment separately \(see)
--.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 348 R(ONMENT)
+-.4 F F3 .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR)184 388.8 R(ONMENT)
-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643
(\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15
-(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 360 Q
-2.042(If a compound command or shell function e)184 378 R -.15(xe)-.15 G
-2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F1<ad65>4.542 E F0
-2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 390 R
--.15(xe)-.15 G 1.435(cuted within the compound command or function).15 F
-.193(body will be af)184 402 R .193(fected by the)-.25 F F1<ad65>2.693 E
-F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1
-<ad65>2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure)
--.1 E 3.39(status. If)184 414 R 3.39(ac)3.39 G .89
-(ompound command or shell function sets)-3.39 F F1<ad65>3.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 426 Q F1<ad65>3.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 438 Q F1
-<ad66>144 450 Q F0(Disable pathname e)184 450 Q(xpansion.)-.15 E F1
-<ad68>144 462 Q F0 2.239(Remember the location of commands as the)184
-462 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
-474 Q(ault.)-.1 E F1<ad6b>144 486 Q F0 .513(All ar)184 486 R .514
+(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 400.8
+Q .999(If a compound command or shell function e)184 418.8 R -.15(xe)
+-.15 G .999(cutes in a conte).15 F .998(xt where)-.15 F F1<ad65>3.498 E
+F0 .998(is being ig-)3.498 F .089(nored, none of the commands e)184
+430.8 R -.15(xe)-.15 G .089
+(cuted within the compound command or function body).15 F .503
+(will be af)184 442.8 R .503(fected by the)-.25 F F1<ad65>3.002 E F0
+.502(setting, e)3.002 F -.15(ve)-.25 G 3.002(ni).15 G(f)-3.002 E F1
+<ad65>3.002 E F0 .502(is set and a command returns a f)3.002 F .502
+(ailure sta-)-.1 F 4.183(tus. If)184 454.8 R 4.183(ac)4.183 G 1.683
+(ompound command or shell function sets)-4.183 F F1<ad65>4.184 E F0
+1.684(while e)4.184 F -.15(xe)-.15 G 1.684(cuting in a conte).15 F(xt)
+-.15 E(where)184 466.8 Q F1<ad65>3.154 E F0 .654
+(is ignored, that setting will not ha)3.154 F .953 -.15(ve a)-.2 H .953
+-.15(ny e).15 H -.25(ff).15 G .653(ect until the compound command).25 F
+(or the command containing the function call completes.)184 478.8 Q F1
+<ad66>144 490.8 Q F0(Disable pathname e)184 490.8 Q(xpansion.)-.15 E F1
+<ad68>144 502.8 Q F0 .988(Remember the location of commands as the)184
+502.8 R 3.488(ya)-.15 G .988(re look)-3.488 F .988(ed up for e)-.1 F
+-.15(xe)-.15 G 3.488(cution. This).15 F .988(is en-)3.488 F
+(abled by def)184 514.8 Q(ault.)-.1 E F1<ad6b>144 526.8 Q F0 .514
+(All ar)184 526.8 R .514
(guments in the form of assignment statements are placed in the en)-.18
-F .514(vironment for a)-.4 F
-(command, not just those that precede the command name.)184 498 Q F1
-<ad6d>144 510 Q F0 .149(Monitor mode.)184 510 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 522 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 .651
-(processes run in a separate)3.151 F .679(process group.)184 534 R .678
-(When a background job completes, the shell prints a line containing it\
-s)5.679 F -.15(ex)184 546 S(it status.).15 E F1<ad6e>144 558 Q F0 .652
-(Read commands b)184 558 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 570 Q(This is ignored by interacti)5 E .3
--.15(ve s)-.25 H(hells.).15 E F1<ad6f>144 582 Q F2(option\255name)2.5 E
-F0(The)184 594 Q F2(option\255name)2.5 E F0(can be one of the follo)2.5
-E(wing:)-.25 E F1(allexport)184 606 Q F0(Same as)224 618 Q F1<ad61>2.5 E
-F0(.)A F1(braceexpand)184 630 Q F0(Same as)224 642 Q F1<ad42>2.5 E F0(.)
-A F1(emacs)184 654 Q F0 .089
-(Use an emacs-style command line editing interf)224 654 R 2.589
+F .513(vironment for a)-.4 F
+(command, not just those that precede the command name.)184 538.8 Q F1
+<ad6d>144 550.8 Q F0 .148(Monitor mode.)184 550.8 R .148
+(Job control is enabled.)5.148 F .149(This option is on by def)5.148 F
+.149(ault for interacti)-.1 F .449 -.15(ve s)-.25 H(hells).15 E .651
+(on systems that support it \(see)184 562.8 R F3 .651(JOB CONTR)3.151 F
+(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151(\). All).15 F .65
+(processes run in a separate)3.151 F .678(process group.)184 574.8 R
+.679(When a background job completes, the shell prints a line containin\
+g its)5.678 F -.15(ex)184 586.8 S(it status.).15 E F1<ad6e>144 598.8 Q
+F0 .653(Read commands b)184 598.8 R .653(ut do not e)-.2 F -.15(xe)-.15
+G .653(cute them.).15 F .652
+(This may be used to check a shell script for)5.653 F(syntax errors.)184
+610.8 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15
+E F1<ad6f>144 622.8 Q F2(option\255name)2.5 E F0(The)184 634.8 Q F2
+(option\255name)2.5 E F0(can be one of the follo)2.5 E(wing:)-.25 E F1
+(allexport)184 646.8 Q F0(Same as)224 658.8 Q F1<ad61>2.5 E F0(.)A F1
+(braceexpand)184 670.8 Q F0(Same as)224 682.8 Q F1<ad42>2.5 E F0(.)A F1
+(emacs)184 694.8 Q F0 .089
+(Use an emacs-style command line editing interf)224 694.8 R 2.589
(ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95
-(when the shell is interacti)224 666 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 678 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 690 Q(exit)-.18 E F0(Same as)224 690 Q F1<ad65>2.5 E F0(.)A F1
-(errtrace)184 702 Q F0(Same as)224 702 Q F1<ad45>2.5 E F0(.)A
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15)198.725 E 0 Cg EP
+(when the shell is interacti)224 706.8 R -.15(ve)-.25 G 3.45(,u).15 G
+.95(nless the shell is started with the)-3.45 F F1(\255\255noediting)
+3.45 E F0 2.5(option. This)224 718.8 R(also af)2.5 E
+(fects the editing interf)-.25 E(ace used for)-.1 E F1 -.18(re)2.5 G
+(ad \255e).18 E F0(.)A(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(15)
+198.725 E 0 Cg EP
%%Page: 16 16
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(functrace)184 84 Q F0
-(Same as)224 96 Q F1<ad54>2.5 E F0(.)A F1(hashall)184 108 Q F0(Same as)
-224 108 Q F1<ad68>2.5 E F0(.)A F1(histexpand)184 120 Q F0(Same as)224
-132 Q F1<ad48>2.5 E F0(.)A F1(history)184 144 Q F0 .587
-(Enable command history)224 144 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(err)184 84 Q(exit)
+-.18 E F0(Same as)224 84 Q F1<ad65>2.5 E F0(.)A F1(errtrace)184 96 Q F0
+(Same as)224 96 Q F1<ad45>2.5 E F0(.)A F1(functrace)184 108 Q F0
+(Same as)224 120 Q F1<ad54>2.5 E F0(.)A F1(hashall)184 132 Q F0(Same as)
+224 132 Q F1<ad68>2.5 E F0(.)A F1(histexpand)184 144 Q F0(Same as)224
+156 Q F1<ad48>2.5 E F0(.)A F1(history)184 168 Q F0 .586
+(Enable command history)224 168 R 3.087(,a)-.65 G 3.087(sd)-3.087 G .587
(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E/F2 9
/Times-Bold@0 SF(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F3 9/Times-Roman@0 SF
-(.)A F0 .587(This option is)5.087 F(on by def)224 156 Q
+(.)A F0 .587(This option is)5.087 F(on by def)224 180 Q
(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184
-168 Q(eeof)-.18 E F0 1.656(The ef)224 180 R 1.656
+192 Q(eeof)-.18 E F0 1.657(The ef)224 204 R 1.657
(fect is as if the shell command)-.25 F/F4 10/Courier@0 SF(IGNOREEOF=10)
-4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224
-192 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 204 S(yw).1 E(ord)-.1 E F0(Same as)224 216 Q F1
-<ad6b>2.5 E F0(.)A F1(monitor)184 228 Q F0(Same as)224 228 Q F1<ad6d>2.5
-E F0(.)A F1(noclob)184 240 Q(ber)-.1 E F0(Same as)224 252 Q F1<ad43>2.5
-E F0(.)A F1(noexec)184 264 Q F0(Same as)224 264 Q F1<ad6e>2.5 E F0(.)A
-F1(noglob)184 276 Q F0(Same as)224 276 Q F1<ad66>2.5 E F0(.)A F1(nolog)
-184 288 Q F0(Currently ignored.)224 288 Q F1(notify)184 300 Q F0
-(Same as)224 300 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 312 Q F0(Same as)
-224 312 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 324 Q F0(Same as)224 324 Q
-F1<ad74>2.5 E F0(.)A F1(ph)184 336 Q(ysical)-.15 E F0(Same as)224 336 Q
-F1<ad50>2.5 E F0(.)A F1(pipefail)184 348 Q F0 1.03(If set, the return v)
-224 348 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 360 R
-1.136
+4.156 E F0 1.656(had been e)4.156 F -.15(xe)-.15 G(cuted).15 E(\(see)224
+216 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).)
+.15 E F1 -.1(ke)184 228 S(yw).1 E(ord)-.1 E F0(Same as)224 240 Q F1
+<ad6b>2.5 E F0(.)A F1(monitor)184 252 Q F0(Same as)224 252 Q F1<ad6d>2.5
+E F0(.)A F1(noclob)184 264 Q(ber)-.1 E F0(Same as)224 276 Q F1<ad43>2.5
+E F0(.)A F1(noexec)184 288 Q F0(Same as)224 288 Q F1<ad6e>2.5 E F0(.)A
+F1(noglob)184 300 Q F0(Same as)224 300 Q F1<ad66>2.5 E F0(.)A F1(nolog)
+184 312 Q F0(Currently ignored.)224 312 Q F1(notify)184 324 Q F0
+(Same as)224 324 Q F1<ad62>2.5 E F0(.)A F1(nounset)184 336 Q F0(Same as)
+224 336 Q F1<ad75>2.5 E F0(.)A F1(onecmd)184 348 Q F0(Same as)224 348 Q
+F1<ad74>2.5 E F0(.)A F1(ph)184 360 Q(ysical)-.15 E F0(Same as)224 360 Q
+F1<ad50>2.5 E F0(.)A F1(pipefail)184 372 Q F0 1.029
+(If set, the return v)224 372 R 1.029(alue of a pipeline is the v)-.25 F
+1.03(alue of the last \(rightmost\) com-)-.25 F 1.137(mand to e)224 384
+R 1.136
(xit with a non-zero status, or zero if all commands in the pipeline)
--.15 F -.15(ex)224 372 S(it successfully).15 E 5(.T)-.65 G
-(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 384 Q F0
-2.091(Change the beha)224 384 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
+-.15 F -.15(ex)224 396 S(it successfully).15 E 5(.T)-.65 G
+(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 408 Q F0
+2.09(Change the beha)224 408 R 2.091(vior of)-.2 F F1(bash)4.591 E F0
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
-396 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.463 E(w)-.25 E 2.307
-(for a reference to a document that details ho)224 408 R 4.806(wp)-.25 G
-2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224
-420 Q(vior)-.2 E(.)-.55 E F1(pri)184 432 Q(vileged)-.1 E F0(Same as)224
-444 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 456 S(rbose).1 E F0(Same as)224
-456 Q F1<ad76>2.5 E F0(.)A F1(vi)184 468 Q F0 1.465
-(Use a vi-style command line editing interf)224 468 R 3.966(ace. This)
--.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224
-480 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
-(xtrace)184 492 Q F0(Same as)224 492 Q F1<ad78>2.5 E F0(.)A(If)184 510 Q
-F1<ad6f>3.053 E F0 .553(is supplied with no)3.053 F F5(option\255name)
-3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552
-(alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184
-522 Q F0 1.071(is supplied with no)3.571 F F5(option\255name)3.571 E F0
-3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072
-(commands to recreate the current)3.572 F
-(option settings is displayed on the standard output.)184 534 Q F1<ad70>
-144 546 Q F0 -.45(Tu)184 546 S 1.072(rn on).45 F F5(privile)4.822 E -.1
-(ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F
-F2($ENV)3.572 E F0(and)3.322 E F2($B)3.572 E(ASH_ENV)-.27 E F0 1.071
-(\214les are not pro-)3.322 F 1.5
-(cessed, shell functions are not inherited from the en)184 558 R 1.501
-(vironment, and the)-.4 F F2(SHELLOPTS)4.001 E F3(,)A F2 -.27(BA)184 570
-S(SHOPTS).27 E F3(,)A F2(CDP)2.775 E -.855(AT)-.666 G(H).855 E F3(,)A F0
-(and)2.775 E F2(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524
-(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F
-(vironment,)-.4 E .379(are ignored.)184 582 R .379
-(If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15
-(ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462
-(user \(group\) id, and the)184 594 R F1<ad70>2.961 E F0 .461
-(option is not supplied, these actions are tak)2.961 F .461
-(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .694 -.15(ve u)-.25 H .394
+420 R/F5 10/Times-Italic@0 SF 1.212(posix mode)B F0 3.712(\). See)B F2
+1.212(SEE ALSO)3.712 F F0(belo)3.462 E(w)-.25 E .954
+(for a reference to a document that details ho)224 432 R 3.455(wp)-.25 G
+.955(osix mode af)-3.455 F .955(fects bash')-.25 F 3.455(sb)-.55 G(e-)
+-3.455 E(ha)224 444 Q(vior)-.2 E(.)-.55 E F1(pri)184 456 Q(vileged)-.1 E
+F0(Same as)224 468 Q F1<ad70>2.5 E F0(.)A F1 -.1(ve)184 480 S(rbose).1 E
+F0(Same as)224 480 Q F1<ad76>2.5 E F0(.)A F1(vi)184 492 Q F0 .209
+(Use a vi-style command line editing interf)224 492 R 2.709(ace. This)
+-.1 F .209(also af)2.709 F .209(fects the editing in-)-.25 F(terf)224
+504 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1
+(xtrace)184 516 Q F0(Same as)224 516 Q F1<ad78>2.5 E F0(.)A(If)184 534 Q
+F1<ad6f>3.052 E F0 .552(is supplied with no)3.052 F F5(option\255name)
+3.053 E F0 3.053(,t)C .553(he v)-3.053 F .553
+(alues of the current options are printed.)-.25 F(If)5.553 E F1(+o)184
+546 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 558 Q F1<ad70>
+144 570 Q F0 -.45(Tu)184 570 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 582 R 1.5
+(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 594 S
+(SHOPTS).27 E F3(,)A F2(CDP)2.774 E -.855(AT)-.666 G(H).855 E F3(,)A F0
+(and)2.774 E F2(GLOBIGNORE)3.024 E F0 -.25(va)2.774 G .524
+(riables, if the).25 F 3.025(ya)-.15 G .525(ppear in the en)-3.025 F
+(vironment,)-.4 E .38(are ignored.)184 606 R .38
+(If the shell is started with the ef)5.38 F(fecti)-.25 E .679 -.15(ve u)
+-.25 H .379(ser \(group\) id not equal to the real).15 F .461
+(user \(group\) id, and the)184 618 R F1<ad70>2.961 E F0 .461
+(option is not supplied, these actions are tak)2.961 F .462
+(en and the ef)-.1 F(fec-)-.25 E(ti)184 630 Q .695 -.15(ve u)-.25 H .395
(ser id is set to the real user id.).15 F .395(If the)5.395 F F1<ad70>
-2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25
-E -.15(ve)-.25 G .387(user id is not reset.)184 618 R -.45(Tu)5.387 G
-.387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886
-F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F
-(set to the real user and group ids.)184 630 Q F1<ad74>144 642 Q F0
-(Exit after reading and e)184 642 Q -.15(xe)-.15 G(cuting one command.)
-.15 E F1<ad75>144 654 Q F0 -.35(Tr)184 654 S .043(eat unset v).35 F .044
+2.895 E F0 .394(option is supplied at startup, the ef)2.895 F(fecti)-.25
+E -.15(ve)-.25 G .386(user id is not reset.)184 642 R -.45(Tu)5.386 G
+.386(rning this option of).45 F 2.886(fc)-.25 G .387(auses the ef)-2.886
+F(fecti)-.25 E .687 -.15(ve u)-.25 H .387(ser and group ids to be).15 F
+(set to the real user and group ids.)184 654 Q F1<ad74>144 666 Q F0
+(Exit after reading and e)184 666 Q -.15(xe)-.15 G(cuting one command.)
+.15 E F1<ad75>144 678 Q F0 -.35(Tr)184 678 S .044(eat unset v).35 F .044
(ariables and parameters other than the special parameters "@" and "*" \
-as an)-.25 F .183(error when performing parameter e)184 666 R 2.683
-(xpansion. If)-.15 F -.15(ex)2.683 G .182
+as an)-.25 F .182(error when performing parameter e)184 690 R 2.682
+(xpansion. If)-.15 F -.15(ex)2.682 G .183
(pansion is attempted on an unset v).15 F(ari-)-.25 E .746
-(able or parameter)184 678 R 3.246(,t)-.4 G .746
+(able or parameter)184 702 R 3.246(,t)-.4 G .746
(he shell prints an error message, and, if not interacti)-3.246 F -.15
(ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184
-690 Q F1<ad76>144 702 Q F0(Print shell input lines as the)184 702 Q 2.5
-(ya)-.15 G(re read.)-2.5 E F1<ad78>144 714 Q F0 .315(After e)184 714 R
-.315(xpanding each)-.15 F F5 .315(simple command)2.815 F F0(,)A F1 -.25
-(fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)
-2.815 E F1(select)2.815 E F0(command,)2.815 E 3.259(or arithmetic)184
-726 R F1 -.25(fo)5.759 G(r).25 E F0 3.26(command, display the e)5.759 F
-3.26(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo)
-5.51 E 3.26(wed by the)-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565
-E(16)198.725 E 0 Cg EP
+714 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(16)198.725 E 0 Cg EP
%%Page: 17 17
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(command and its e)184 84 Q(xpanded ar)-.15
-E(guments or associated w)-.18 E(ord list.)-.1 E/F1 10/Times-Bold@0 SF
-<ad42>144 96 Q F0 2.579(The shell performs brace e)184 96 R 2.578
-(xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E
--.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 108 Q
-(ault.)-.1 E F1<ad43>144 120 Q F0 .213(If set,)184 120 R F1(bash)2.713 E
-F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214
-(xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0
-2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F
-3.054(tors. This)184 132 R .553(may be o)3.053 F -.15(ve)-.15 G .553
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad76>144 84 Q F0
+(Print shell input lines as the)184 84 Q 2.5(ya)-.15 G(re read.)-2.5 E
+F1<ad78>144 96 Q F0 .315(After e)184 96 R .315(xpanding each)-.15 F/F2
+10/Times-Italic@0 SF .315(simple command)2.815 F F0(,)A F1 -.25(fo)2.815
+G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,)2.815 E F1
+(select)2.815 E F0(command,)2.815 E 1.236(or arithmetic)184 108 R F1
+-.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236
+(xpanded v)-.15 F 1.236(alue of)-.25 F/F3 9/Times-Bold@0 SF(PS4)3.736 E
+/F4 9/Times-Roman@0 SF(,)A F0(follo)3.486 E 1.236(wed by the com-)-.25 F
+(mand and its e)184 120 Q(xpanded ar)-.15 E(guments or associated w)-.18
+E(ord list.)-.1 E F1<ad42>144 132 Q F0 1.205(The shell performs brace e)
+184 132 R 1.205(xpansion \(see)-.15 F F1 1.205(Brace Expansion)3.705 F
+F0(abo)3.705 E -.15(ve)-.15 G 3.706(\). This).15 F 1.206(is on by de-)
+3.706 F -.1(fa)184 144 S(ult.).1 E F1<ad43>144 156 Q F0 .214(If set,)184
+156 R F1(bash)2.714 E F0 .214(does not o)2.714 F -.15(ve)-.15 G .214
+(rwrite an e).15 F .214(xisting \214le with the)-.15 F F1(>)2.714 E F0
+(,)A F1(>&)2.714 E F0 2.713(,a)C(nd)-2.713 E F1(<>)2.713 E F0 .213
+(redirection opera-)2.713 F 3.053(tors. This)184 168 R .553(may be o)
+3.053 F -.15(ve)-.15 G .553
(rridden when creating output \214les by using the redirection opera-)
-.15 F(tor)184 144 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
-<ad45>144 156 Q F0 .103(If set, an)184 156 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 168 R -.15(xe)-.15 G .839(cuted in a subshell en).15
-F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838
-(trap is normally not inherited in)3.338 F(such cases.)184 180 Q F1
-<ad48>144 192 Q F0(Enable)184 192 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 204 Q -.15
-(ve)-.25 G(.).15 E F1<ad50>144 216 Q F0 .96
-(If set, the shell does not resolv)184 216 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 228 R 2.822(orking directory)-.1 F 7.822
-(.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822
-(ysical directory structure)-.05 F 2.686(instead. By)184 240 R(def)2.686
-E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186
+.15 F(tor)184 180 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1
+<ad45>144 192 Q F0 .104(If set, an)184 192 R 2.604(yt)-.15 G .104
+(rap on)-2.604 F F1(ERR)2.604 E F0 .103
+(is inherited by shell functions, command substitutions, and com-)2.604
+F .838(mands e)184 204 R -.15(xe)-.15 G .838(cuted in a subshell en).15
+F 3.338(vironment. The)-.4 F F1(ERR)3.338 E F0 .839
+(trap is normally not inherited in)3.339 F(such cases.)184 216 Q F1
+<ad48>144 228 Q F0(Enable)184 228 Q F1(!)3.032 E F0 .532
+(style history substitution.)5.532 F .531(This option is on by def)5.532
+F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 240 Q -.15
+(ve)-.25 G(.).15 E F1<ad50>144 252 Q F0 .959
+(If set, the shell does not resolv)184 252 R 3.459(es)-.15 G .959
+(ymbolic links when e)-3.459 F -.15(xe)-.15 G .96
+(cuting commands such as).15 F F1(cd)3.46 E F0 1.453
+(that change the current w)184 264 R 1.453(orking directory)-.1 F 6.453
+(.I)-.65 G 3.952(tu)-6.453 G 1.452(ses the ph)-3.952 F 1.452
+(ysical directory structure in-)-.05 F 3.334(stead. By)184 276 R(def)
+3.334 E(ault,)-.1 E F1(bash)3.334 E F0(follo)3.334 E .834
(ws the logical chain of directories when performing com-)-.25 F
-(mands which change the current directory)184 252 Q(.)-.65 E F1<ad54>144
-264 Q F0 .89(If set, an)184 264 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1
+(mands which change the current directory)184 288 Q(.)-.65 E F1<ad54>144
+300 Q F0 .89(If set, an)184 300 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 276 R -.15(xe)-.15 G 1.932
+(substitutions, and commands e)184 312 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 288 Q F0
-(traps are normally not inherited in such cases.)2.5 E F1<adad>144 300 Q
-F0 .4(If no ar)184 300 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401
-(his option, then the positional parameters are unset.)-2.901 F
-(Otherwise,)5.401 E(the positional parameters are set to the)184 312 Q
-/F2 10/Times-Italic@0 SF(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5
-(ni).15 G 2.5(fs)-2.5 G(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>
-2.5 E F0(.)A F1<ad>144 324 Q F0 1.945
-(Signal the end of options, cause all remaining)184 324 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 336 R F1
-<ad78>3.445 E F0(and)3.445 E F1<ad76>3.445 E F0 .945
-(options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no)
-3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B
-(parameters remain unchanged.)184 348 Q .425(The options are of)144
-364.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
+(UG)-.1 E F0(and)4.432 E F1(RETURN)184 324 Q F0
+(traps are normally not inherited in such cases.)2.5 E F1<adad>144 336 Q
+F0 .401(If no ar)184 336 R .401(guments follo)-.18 F 2.901(wt)-.25 G
+.401(his option, then the positional parameters are unset.)-2.901 F
+(Otherwise,)5.4 E(the positional parameters are set to the)184 348 Q F2
+(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G
+(ome of them be)-2.5 E(gin with a)-.15 E F1<ad>2.5 E F0(.)A F1<ad>144
+360 Q F0 .796(Signal the end of options, cause all remaining)184 360 R
+F2(ar)3.297 E(g)-.37 E F0 3.297(st)C 3.297(ob)-3.297 G 3.297(ea)-3.297 G
+.797(ssigned to the positional pa-)-3.297 F 3.022(rameters. The)184 372
+R F1<ad78>3.022 E F0(and)3.022 E F1<ad76>3.022 E F0 .522
+(options are turned of)3.022 F 3.022(f. If)-.25 F .522(there are no)
+3.022 F F2(ar)3.022 E(g)-.37 E F0 .521(s, the positional pa-)B
+(rameters remain unchanged.)184 384 Q .425(The options are of)144 400.8
+R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425
(ault unless otherwise noted.)-.1 F .425
-(Using + rather than \255 causes these options)5.425 F .177
-(to be turned of)144 376.8 R 2.677(f. The)-.25 F .178
+(Using + rather than \255 causes these options)5.425 F .178
+(to be turned of)144 412.8 R 2.678(f. The)-.25 F .178
(options can also be speci\214ed as ar)2.678 F .178(guments to an in)
--.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066
-(current set of options may be found in)144 388.8 R F1<24ad>2.566 E F0
+-.18 F -.2(vo)-.4 G .177(cation of the shell.).2 F(The)5.177 E .066
+(current set of options may be found in)144 424.8 R F1<24ad>2.566 E F0
5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066
-(ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F
-(is encountered.)144 400.8 Q F1(shift)108 417.6 Q F0([)2.5 E F2(n)A F0
-(])A .428(The positional parameters from)144 429.6 R F2(n)2.928 E F0
-.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G
-.429(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.583
-E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0<ad>A F2(n)A F0 .083
-(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga)
--.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to)
-.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06
-(is 0, no parameters are changed.)144 453.6 R(If)5.06 E F2(n)2.92 E F0
+(ys true unless an in).1 F -.25(va)-.4 G .067(lid option).25 F
+(is encountered.)144 436.8 Q F1(shift)108 453.6 Q F0([)2.5 E F2(n)A F0
+(])A .429(The positional parameters from)144 465.6 R F2(n)2.929 E F0
+.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.428 G
+.428(rameters represented by the num-).15 F(bers)144 477.6 Q F1($#)2.582
+E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0<ad>A F2(n)A F0 .082
+(+1 are unset.)B F2(n)5.442 E F0 .082(must be a non-ne)2.822 F -.05(ga)
+-.15 G(ti).05 E .383 -.15(ve n)-.25 H .083(umber less than or equal to)
+.15 F F1($#)2.583 E F0 5.083(.I)C(f)-5.083 E F2(n)2.943 E F0 .06
+(is 0, no parameters are changed.)144 489.6 R(If)5.06 E F2(n)2.92 E F0
.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F
(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56
-(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 465.6 R
-.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0
-.143(is greater than)2.883 F F1($#)2.643 E F0
-(or less than zero; otherwise 0.)144 477.6 Q F1(shopt)108 494.4 Q F0([)
+(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 501.6 R
+.144(The return status is greater than zero if)5.143 F F2(n)3.004 E F0
+.144(is greater than)2.884 F F1($#)2.644 E F0
+(or less than zero; otherwise 0.)144 513.6 Q F1(shopt)108 530.4 Q F0([)
2.5 E F1(\255pqsu)A F0 2.5(][)C F1<ad6f>-2.5 E F0 2.5(][)C F2(optname)
--2.5 E F0(...])2.5 E -.8(To)144 506.4 S .639(ggle the v).8 F .639
+-2.5 E F0(...])2.5 E -.8(To)144 542.4 S .64(ggle the v).8 F .639
(alues of settings controlling optional shell beha)-.25 F(vior)-.2 E
-5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375
-(listed belo)144 518.4 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H
-2.875(ft).4 G(he)-2.875 E F1<ad6f>2.875 E F0 .375
+5.639(.T)-.55 G .639(he settings can be either those)-5.639 F .374
+(listed belo)144 554.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H
+2.874(ft).4 G(he)-2.874 E F1<ad6f>2.874 E F0 .375
(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25
-F F1<ad6f>2.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 530.4 R .825
-(ith no options, or with the)-.4 F F1<ad70>3.325 E F0 .826
-(option, a list of all settable options is displayed, with an)3.325 F
-.552(indication of whether or not each is set; if)144 542.4 R F2
-(optnames)3.052 E F0 .551
-(are supplied, the output is restricted to those)3.052 F 2.549
-(options. The)144 554.4 R F1<ad70>2.549 E F0 .049(option causes output \
-to be displayed in a form that may be reused as input.)2.549 F(Other)
-5.05 E(options ha)144 566.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
-(wing meanings:)-.25 E F1<ad73>144 578.4 Q F0(Enable \(set\) each)180
-578.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 590.4 Q F0
-(Disable \(unset\) each)180 590.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
-602.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
-tus indicates whether the)180 602.4 R F2(optname)2.503 E F0(is)2.503 E
-.255(set or unset.)180 614.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 F1<ad71>2.756 E F0 2.756(,t)C .256
-(he return status is zero if)-2.756 F(all)180 626.4 Q F2(optnames)2.5 E
-F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 638.4 Q F0
-(Restricts the v)180 638.4 Q(alues of)-.25 E F2(optname)2.5 E F0
+F F1<ad6f>2.875 E F0 .375(option to the)2.875 F F1(set)2.875 E F0 -.2
+(bu)2.875 G .375(iltin com-).2 F 2.566(mand. W)144 566.4 R .066
+(ith no options, or with the)-.4 F F1<ad70>2.566 E F0 .066
+(option, a list of all settable options is displayed, with an in-)2.566
+F .074(dication of whether or not each is set; if)144 578.4 R F2
+(optnames)2.574 E F0 .074
+(are supplied, the output is restricted to those op-)2.574 F 3.105
+(tions. The)144 590.4 R F1<ad70>3.105 E F0 .605(option causes output to\
+ be displayed in a form that may be reused as input.)3.105 F(Other)5.605
+E(options ha)144 602.4 Q .3 -.15(ve t)-.2 H(he follo).15 E
+(wing meanings:)-.25 E F1<ad73>144 614.4 Q F0(Enable \(set\) each)180
+614.4 Q F2(optname)2.5 E F0(.)A F1<ad75>144 626.4 Q F0
+(Disable \(unset\) each)180 626.4 Q F2(optname)2.5 E F0(.)A F1<ad71>144
+638.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\
+tus indicates whether the)180 638.4 R F2(optname)2.504 E F0(is)2.504 E
+.256(set or unset.)180 650.4 R .256(If multiple)5.256 F F2(optname)2.756
+E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G
+(ith)-2.756 E F1<ad71>2.756 E F0 2.755(,t)C .255
+(he return status is zero if)-2.755 F(all)180 662.4 Q F2(optnames)2.5 E
+F0(are enabled; non-zero otherwise.)2.5 E F1<ad6f>144 674.4 Q F0
+(Restricts the v)180 674.4 Q(alues of)-.25 E F2(optname)2.5 E F0
(to be those de\214ned for the)2.5 E F1<ad6f>2.5 E F0(option to the)2.5
-E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .625(If either)144 655.2 R F1
-<ad73>3.125 E F0(or)3.124 E F1<ad75>3.124 E F0 .624(is used with no)
+E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 691.2 R F1
+<ad73>3.124 E F0(or)3.124 E F1<ad75>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 667.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U)
--.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0
-2.234(options are disabled \(unset\) by)4.734 F(def)144 679.2 Q(ault.)
--.1 E 1.544(The return status when listing options is zero if all)144
-696 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 708 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .696(alid shell)
--.25 F(option.)144 720 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)
-198.725 E 0 Cg EP
+E F0(sho)3.124 E .624(ws only those options which are)-.25 F .984
+(set or unset, respecti)144 703.2 R -.15(ve)-.25 G(ly).15 E 5.984(.U)
+-.65 G .984(nless otherwise noted, the)-5.984 F F1(shopt)3.484 E F0 .983
+(options are disabled \(unset\) by de-)3.483 F -.1(fa)144 715.2 S(ult.)
+.1 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(17)198.725 E 0 Cg EP
%%Page: 18 18
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E(The list of)144 84 Q/F1 10/Times-Bold@0 SF
-(shopt)2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 102 Q F0
-1.945(If set, the shell suppresses multiple e)184 114 R -.25(va)-.25 G
-1.944(luation of associati).25 F 2.244 -.15(ve a)-.25 H 1.944
-(rray subscripts during).15 F 2.556(arithmetic e)184 126 R 2.556
-(xpression e)-.15 F -.25(va)-.25 G 2.556(luation, while e).25 F -.15(xe)
--.15 G 2.557(cuting b).15 F 2.557(uiltins that can perform v)-.2 F
-(ariable)-.25 E(assignments, and while e)184 138 Q -.15(xe)-.15 G
-(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F1
-(autocd)144 150 Q F0 .2
-(If set, a command name that is the name of a directory is e)184 150 R
--.15(xe)-.15 G .199(cuted as if it were the ar).15 F(gu-)-.18 E
-(ment to the)184 162 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F
+E(UIL)-.1 E(TINS\(1\))-.92 E 1.544
+(The return status when listing options is zero if all)144 84 R/F1 10
+/Times-Italic@0 SF(optnames)4.044 E F0 1.545
+(are enabled, non-zero otherwise.)4.045 F .696
+(When setting or unsetting options, the return status is zero unless an)
+144 96 R F1(optname)3.196 E F0 .696(is not a v)3.196 F .695(alid shell)
+-.25 F(option.)144 108 Q(The list of)144 124.8 Q/F2 10/Times-Bold@0 SF
+(shopt)2.5 E F0(options is:)2.5 E F2(assoc_expand_once)144 142.8 Q F0
+1.944(If set, the shell suppresses multiple e)184 154.8 R -.25(va)-.25 G
+1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945
+(rray subscripts during).15 F .885(arithmetic e)184 166.8 R .885
+(xpression e)-.15 F -.25(va)-.25 G .885(luation, while e).25 F -.15(xe)
+-.15 G .885(cuting b).15 F .885(uiltins that can perform v)-.2 F .885
+(ariable as-)-.25 F(signments, and while e)184 178.8 Q -.15(xe)-.15 G
+(cuting b).15 E(uiltins that perform array dereferencing.)-.2 E F2
+(autocd)144 190.8 Q F0 .199
+(If set, a command name that is the name of a directory is e)184 190.8 R
+-.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E
+(ment to the)184 202.8 Q F2(cd)2.5 E F0 2.5(command. This)2.5 F
(option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E
-F1(cdable_v)144 174 Q(ars)-.1 E F0 .155(If set, an ar)184 186 R .155
-(gument to the)-.18 F F1(cd)2.655 E F0 -.2(bu)2.655 G .156
+F2(cdable_v)144 214.8 Q(ars)-.1 E F0 .156(If set, an ar)184 226.8 R .156
+(gument to the)-.18 F F2(cd)2.656 E F0 -.2(bu)2.656 G .155
(iltin command that is not a directory is assumed to be the).2 F
-(name of a v)184 198 Q(ariable whose v)-.25 E
-(alue is the directory to change to.)-.25 E F1(cdspell)144 210 Q F0
+(name of a v)184 238.8 Q(ariable whose v)-.25 E
+(alue is the directory to change to.)-.25 E F2(cdspell)144 250.8 Q F0
1.055
(If set, minor errors in the spelling of a directory component in a)184
-210 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.987
-(corrected. The)184 222 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 234 R 4.57 -.65(y. I)
+250.8 R F2(cd)3.555 E F0 1.055(command will be)3.555 F 3.988
+(corrected. The)184 262.8 R 1.488(errors check)3.988 F 1.487
+(ed for are transposed characters, a missing character)-.1 F 3.987(,a)
+-.4 G(nd)-3.987 E .77(one character too man)184 274.8 R 4.57 -.65(y. I)
-.15 H 3.27(fac).65 G .77
(orrection is found, the corrected \214lename is printed, and)-3.27 F
-(the command proceeds.)184 246 Q(This option is only used by interacti)5
-E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 258 Q F0 .736
-(If set,)184 270 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 282
-Q(If a hashed command no longer e)5 E
-(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 294 Q
-F0 .449(If set,)184 306 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 318 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 330 R 2.203(ening command \(see)-.15 F
-/F2 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E
--.15(ve)-.15 G 4.703(\). The).15 F(shell)4.703 E(al)184 342 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 354 Q F0 1.09(If set,)184
-366 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09
-(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
-(uiltin\) command and, if)-.2 F(necessary)184 378 Q 4.694(,u)-.65 G
-2.194(pdates the v)-4.694 F 2.194(alues of)-.25 F F2(LINES)4.694 E F0
-(and)4.444 E F2(COLUMNS)4.693 E/F3 9/Times-Roman@0 SF(.)A F0 2.193
-(This option is enabled by)6.693 F(def)184 390 Q(ault.)-.1 E F1(cmdhist)
-144 402 Q F0 1.202(If set,)184 402 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
-414 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133
-(ws easy re-editing of multi-line commands.)-.25 F 1.132
-(This option is enabled by)6.132 F(def)184 426 Q .613(ault, b)-.1 F .613
-(ut only has an ef)-.2 F .614
-(fect if command history is enabled, as described abo)-.25 F .914 -.15
-(ve u)-.15 H(nder).15 E F2(HIST)184 438 Q(OR)-.162 E(Y)-.315 E F3(.)A F1
-(compat31)144 450 Q F0 .42(If set,)184 462 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 474 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 486 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s)
--.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash)
-3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82
-(use ASCII collation and)184 498 R/F4 10/Times-Italic@0 SF(str)3.321 E
-(cmp)-.37 E F0 .821(\(3\); bash-4.1 and later use the current locale')
-.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 510 Q F4(str)
-2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 522 Q F0 1.41(If set,)
-184 534 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409
-(vior to that of v)-.2 F 1.409
-(ersion 3.2 with respect to locale-speci\214c)-.15 F .422
-(string comparison when using the)184 546 R F1([[)2.922 E F0 .422
-(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>)
-2.923 E F0 .423(operators \(see pre-)2.923 F .481
-(vious item\) and the ef)184 558 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 570 Q
-(xt command in the list after one terminates due to an interrupt.)-.15 E
-F1(compat40)144 582 Q F0 1.409(If set,)184 594 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 606 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 618 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
-630 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 642 Q
-(xt command in the list.)-.15 E F1(compat41)144 654 Q F0 1.523(If set,)
-184 666 R F1(bash)4.023 E F0 4.023(,w)C 1.523(hen in)-4.023 F F4 1.523
-(posix mode)4.023 F F0 4.024(,t)C 1.524
-(reats a single quote in a double-quoted parameter)-4.024 F -.15(ex)184
-678 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 690
-R .59(This is the beha)5.59 F .59(vior of)-.2 F .59
-(posix mode through v)184 702 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 714 Q(GNU Bash 5.0)72 768 Q
-(2004 Apr 20)149.565 E(18)198.725 E 0 Cg EP
-%%Page: 19 19
-%%BeginPageSetup
-BP
-%%EndPageSetup
-/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
-(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(compat42)144 84 Q F0
-1.796(If set,)184 96 R F1(bash)4.296 E F0 1.796
-(does not process the replacement string in the pattern substitution w)
-4.296 F(ord)-.1 E -.15(ex)184 108 S(pansion using quote remo).15 E -.25
-(va)-.15 G(l.).25 E F1(compat43)144 120 Q F0 .141(If set,)184 132 R F1
-(bash)2.641 E F0 .141(does not print a w)2.641 F .14
-(arning message if an attempt is made to use a quoted com-)-.1 F .912
-(pound array assignment as an ar)184 144 R .912(gument to)-.18 F F1
-(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913
-(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 156 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 168 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 180 R -.15(xe)-.15 G .375(cuted \(this allo).15 F
-(ws)-.25 E F1(br)2.875 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0
-.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F
-(the caller')184 192 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1
-(compat44)144 204 Q F0 .441(If set,)184 216 R F1(bash)2.941 E F0(sa)
-2.942 E -.15(ve)-.2 G 2.942(st).15 G .442(he positional parameters to B)
--2.942 F .442(ASH_ARGV and B)-.35 F .442(ASH_ARGC before)-.35 F(the)184
-228 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G
-(rdless of whether or not e).05 E(xtended deb)-.15 E
-(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 240 Q F0 .654
-(If set,)184 252 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\
-ers in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524
-(forming completion.)184 264 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
+(the command proceeds.)184 286.8 Q
+(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.)
+.15 E F2(checkhash)144 298.8 Q F0 .737(If set,)184 310.8 R F2(bash)3.237
+E F0 .736(checks that a command found in the hash table e)3.237 F .736
+(xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184
+322.8 Q(If a hashed command no longer e)5 E
+(xists, a normal path search is performed.)-.15 E F2(checkjobs)144 334.8
+Q F0 .448(If set,)184 346.8 R F2(bash)2.948 E F0 .448
+(lists the status of an)2.948 F 2.949(ys)-.15 G .449
+(topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15
+F -.15(ve)-.25 G 2.662(shell. If)184 358.8 R(an)2.662 E 2.661(yj)-.15 G
+.161(obs are running, this causes the e)-2.661 F .161
+(xit to be deferred until a second e)-.15 F .161(xit is at-)-.15 F 1.472
+(tempted without an interv)184 370.8 R 1.473(ening command \(see)-.15 F
+/F3 9/Times-Bold@0 SF 1.473(JOB CONTR)3.973 F(OL)-.27 E F0(abo)3.723 E
+-.15(ve)-.15 G 3.973(\). The).15 F 1.473(shell al-)3.973 F -.1(wa)184
+382.8 S(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G
+(obs are stopped.)-2.5 E F2(checkwinsize)144 394.8 Q F0 1.09(If set,)184
+406.8 R F2(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G
+1.09(ize after each e)-3.59 F 1.09(xternal \(non-b)-.15 F 1.09
+(uiltin\) command and, if)-.2 F(necessary)184 418.8 Q 3.35(,u)-.65 G .85
+(pdates the v)-3.35 F .85(alues of)-.25 F F3(LINES)3.35 E F0(and)3.1 E
+F3(COLUMNS)3.35 E/F4 9/Times-Roman@0 SF(.)A F0 .85
+(This option is enabled by de-)5.35 F -.1(fa)184 430.8 S(ult.).1 E F2
+(cmdhist)144 442.8 Q F0 .173(If set,)184 442.8 R F2(bash)2.673 E F0 .173
+(attempts to sa)2.673 F .473 -.15(ve a)-.2 H .172
+(ll lines of a multiple-line command in the same history en-).15 F(try)
+184 454.8 Q 5.596(.T)-.65 G .597(his allo)-5.596 F .597
+(ws easy re-editing of multi-line commands.)-.25 F .597
+(This option is enabled by de-)5.597 F -.1(fa)184 466.8 S 1.288(ult, b)
+.1 F 1.288(ut only has an ef)-.2 F 1.288
+(fect if command history is enabled, as described abo)-.25 F 1.587 -.15
+(ve u)-.15 H(nder).15 E F3(HIST)184 478.8 Q(OR)-.162 E(Y)-.315 E F4(.)A
+F2(compat31)144 490.8 Q(compat32)144 502.8 Q(compat40)144 514.8 Q
+(compat41)144 526.8 Q(compat42)144 538.8 Q(compat43)144 550.8 Q
+(compat44)144 562.8 Q F0 .889(These control aspects of the shell')184
+574.8 R 3.389(sc)-.55 G .889(ompatibility mode \(see)-3.389 F F3 .889
+(SHELL COMP)3.389 F -.855(AT)-.666 G(IBILITY).855 E(MODE)184 586.8 Q F0
+(belo)2.25 E(w\).)-.25 E F2(complete_fullquote)144 603.6 Q F0 .654
+(If set,)184 615.6 R F2(bash)3.153 E F0 .653(quotes all shell metachara\
+cters in \214lenames and directory names when per)3.153 F(-)-.2 E 1.524
+(forming completion.)184 627.6 R 1.524(If not set,)6.524 F F2(bash)4.024
+E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524
(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
-276 R .028(metacharacters appear in shell v)184 288 R .028
+639.6 R .028(metacharacters appear in shell v)184 651.6 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 300 R 1.073
+(This means)5.029 F 1.073(that dollar signs in v)184 663.6 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 312 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123
+(ev e)184 675.6 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
-324 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 336 Q
+687.6 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 699.6 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 348 Q(expand)-.18 E F0 .486
-(If set,)184 360 R F1(bash)2.986 E F0 .486
+(ersions through 4.2.)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E
+(18)198.725 E 0 Cg EP
+%%Page: 19 19
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(dir)144 84 Q(expand)
+-.18 E F0 .486(If set,)184 96 R F1(bash)2.986 E F0 .486
(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
-372 R .179(This changes the contents of the readline editing b)5.18 F
+108 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 384 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 396 Q F0 .858(If set,)184
-396 R F1(bash)3.358 E F0 .858
+184 120 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G
+(hat the user typed.)-2.5 E F1(dirspell)144 136.8 Q F0 .858(If set,)184
+136.8 R F1(bash)3.358 E F0 .858
(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 408 Q(xist.)-.15 E
-F1(dotglob)144 420 Q F0 .165(If set,)184 420 R F1(bash)2.665 E F0 .165
-(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665('i)
--.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
-(xpansion.)-.15 E(The \214lenames)184 432 Q F1 -.63(``)2.5 G -.55(.').63
-G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
+(the directory name initially supplied does not e)184 148.8 Q(xist.)-.15
+E F1(dotglob)144 165.6 Q F0 .165(If set,)184 165.6 R F1(bash)2.665 E F0
+.165(includes \214lenames be)2.665 F .165(ginning with a `.)-.15 F 2.665
+('i)-.7 G 2.665(nt)-2.665 G .165(he results of pathname e)-2.665 F
+(xpansion.)-.15 E(The \214lenames)184 177.6 Q F1 -.63(``)2.5 G -.55(.')
+.63 G(')-.08 E F0(and)5 E F1 -.63(``)2.5 G(..).63 E -.63('')-.55 G F0
(must al)5.63 E -.1(wa)-.1 G(ys be matched e).1 E(xplicitly)-.15 E 2.5
(,e)-.65 G -.15(ve)-2.75 G 2.5(ni).15 G(f)-2.5 E F1(dotglob)2.5 E F0
-(is set.)2.5 E F1(execfail)144 444 Q F0 1.386(If set, a non-interacti)
-184 444 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 456 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 468 Q F0 .717
-(If set, aliases are e)184 480 R .717(xpanded as described abo)-.15 F
+(is set.)2.5 E F1(execfail)144 194.4 Q F0 .516(If set, a non-interacti)
+184 194.4 R .816 -.15(ve s)-.25 H .516(hell will not e).15 F .516
+(xit if it cannot e)-.15 F -.15(xe)-.15 G .517
+(cute the \214le speci\214ed as an ar).15 F(-)-.2 E(gument to the)184
+206.4 Q F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E(An interacti)5
+E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 E F1(exec)2.5 E
+F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 223.2 Q F0 .717
+(If set, aliases are e)184 235.2 R .717(xpanded as described abo)-.15 F
1.017 -.15(ve u)-.15 H(nder).15 E/F2 9/Times-Bold@0 SF(ALIASES)3.217 E
/F3 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F
-(by def)184 492 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
-.15 E F1(extdeb)144 504 Q(ug)-.2 E F0 .671(If set at shell in)184 516 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 528 R F1<adad646562>2.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 540 Q
-(uggers is enabled:)-.2 E F1(1.)184 552 Q F0(The)220 552 Q F1<ad46>4.25
-E F0 1.75(option to the)4.25 F F1(declar)4.251 E(e)-.18 E F0 -.2(bu)
-4.251 G 1.751(iltin displays the source \214le name and line).2 F
-(number corresponding to each function name supplied as an ar)220 564 Q
-(gument.)-.18 E F1(2.)184 576 Q F0 1.667(If the command run by the)220
-576 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 588
-Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 600 Q F0 .84
-(If the command run by the)220 600 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 612 S .488
+(by def)184 247.2 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.)
+.15 E F1(extdeb)144 264 Q(ug)-.2 E F0 .17(If set at shell in)184 276 R
+-.2(vo)-.4 G .17(cation, or in a shell startup \214le, arrange to e).2 F
+-.15(xe)-.15 G .17(cute the deb).15 F .17(ugger pro\214le)-.2 F 1.082
+(before the shell starts, identical to the)184 288 R F1<adad646562>3.582
+E(ugger)-.2 E F0 3.581(option. If)3.581 F 1.081(set after in)3.581 F -.2
+(vo)-.4 G 1.081(cation, be-).2 F(ha)184 300 Q
+(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184
+316.8 Q F0(The)220 316.8 Q F1<ad46>4.25 E F0 1.75(option to the)4.25 F
+F1(declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751
+(iltin displays the source \214le name and line).2 F
+(number corresponding to each function name supplied as an ar)220 328.8
+Q(gument.)-.18 E F1(2.)184 345.6 Q F0 1.667(If the command run by the)
+220 345.6 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)
+4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E
+(command is skipped and not e)220 357.6 Q -.15(xe)-.15 G(cuted.).15 E F1
+(3.)184 374.4 Q F0 .84(If the command run by the)220 374.4 R F1(DEB)3.34
+E(UG)-.1 E F0 .841(trap returns a v)3.341 F .841
+(alue of 2, and the shell is)-.25 F -.15(exe)220 386.4 S .488
(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 624 Q(ce)-.18 E F0 -.2(bu)2.5 G
+(sour)220 398.4 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 636 Q F2 -.27(BA)220 636 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 648 Q
--.15(ve)-.15 G(.).15 E F1(5.)184 660 Q F0 1.637(Function tracing is ena\
-bled: command substitution, shell functions, and sub-)220 660 R
-(shells in)220 672 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
+(n)-.15 E F0(.)A F1(4.)184 415.2 Q F2 -.27(BA)220 415.2 S(SH_ARGC).27 E
+F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904
+(are updated as described in their descriptions)3.154 F(abo)220 427.2 Q
+-.15(ve)-.15 G(.).15 E F1(5.)184 444 Q F0 1.637(Function tracing is ena\
+bled: command substitution, shell functions, and sub-)220 444 R
+(shells in)220 456 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1
(\()2.5 E/F4 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0
(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0
-(traps.)2.5 E F1(6.)184 684 Q F0 1.082(Error tracing is enabled: comman\
-d substitution, shell functions, and subshells)220 684 R(in)220 696 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 708 Q F0 .4(If set, the e)184 708 R .4
+(traps.)2.5 E F1(6.)184 472.8 Q F0 1.082(Error tracing is enabled: comm\
+and substitution, shell functions, and subshells)220 472.8 R(in)220
+484.8 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F4
+(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)
+2.5 E F1(extglob)144 501.6 Q F0 .4(If set, the e)184 501.6 R .4
(xtended pattern matching features described abo)-.15 F .7 -.15(ve u)
--.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 720 Q
-F0(are enabled.)2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)
-198.725 E 0 Cg EP
+-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 513.6 Q
+F0(are enabled.)2.5 E F1(extquote)144 530.4 Q F0 .86(If set,)184 542.4 R
+F1($)3.36 E F0<08>A F4(string)A F0 3.36<0861>C(nd)-3.36 E F1($)3.36 E F0
+(")A F4(string)A F0 3.36("q)C .86(uoting is performed within)-3.36 F F1
+(${)3.36 E F4(par)A(ameter)-.15 E F1(})A F0 -.15(ex)3.36 G .86
+(pansions en-).15 F(closed in double quotes.)184 554.4 Q
+(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 571.2 Q
+F0 .243(If set, patterns which f)184 571.2 R .243
+(ail to match \214lenames during pathname e)-.1 F .243
+(xpansion result in an e)-.15 F(x-)-.15 E(pansion error)184 583.2 Q(.)
+-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
+.936(If set, the suf)184 612 R<8c78>-.25 E .936(es speci\214ed by the)
+-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w)
+-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 R .32
+(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32
+(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947
+(pletions. See)184 636 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0
+(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2
+(FIGNORE)2.948 E F3(.)A F0 .448(This option is)4.948 F(enabled by def)
+184 648 Q(ault.)-.1 E F1(globasciiranges)144 664.8 Q F0 2.519
+(If set, range e)184 676.8 R 2.519
+(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518
+(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E
+(Matching)184 688.8 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha)
+-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214
+(nt)-3.214 G .714(he traditional C locale when performing comparisons.)
+-3.214 F 1.02(That is, the current locale')184 700.8 R 3.52(sc)-.55 G
+1.02(ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F
+F1(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 712.8 R F1
+(A)3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)
+-3.457 F .957(-case and lo)-.2 F(wer)-.25 E .957
+(-case ASCII characters will collate)-.2 F(together)184 724.8 Q(.)-.55 E
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP
%%Page: 20 20
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(extquote)144 84 Q F0
-2.473(If set,)184 96 R F1($)4.973 E F0<08>A/F2 10/Times-Italic@0 SF
-(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F2(string)A F0
-4.973("q)C 2.473(uoting is performed within)-4.973 F F1(${)4.973 E F2
-(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G(pansions).15 E
-(enclosed in double quotes.)184 108 Q(This option is enabled by def)5 E
-(ault.)-.1 E F1(failglob)144 120 Q F0 1.425(If set, patterns which f)184
-120 R 1.425(ail to match \214lenames during pathname e)-.1 F 1.424
-(xpansion result in an)-.15 F -.15(ex)184 132 S(pansion error).15 E(.)
--.55 E F1 -.25(fo)144 144 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0
-.936(If set, the suf)184 156 R<8c78>-.25 E .936(es speci\214ed by the)
--.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936
-(ariable cause w)-.25 F .937(ords to be ignored)-.1 F .32
-(when performing w)184 168 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 180 R F3
-.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 F3(FIGNORE)2.948 E/F4 9
-/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 F(enabled by def)184
-192 Q(ault.)-.1 E F1(globasciiranges)144 204 Q F0 2.519(If set, range e)
-184 216 R 2.519(xpressions used in pattern matching brack)-.15 F 2.518
-(et e)-.1 F 2.518(xpressions \(see)-.15 F F3 -.09(Pa)5.018 G(tter).09 E
-(n)-.135 E(Matching)184 228 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 240 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 252 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 264 Q(.)-.55 E
-F1(globstar)144 276 Q F0 .519(If set, the pattern)184 276 R F1(**)3.019
-E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(globstar)144 84 Q F0
+.519(If set, the pattern)184 84 R F1(**)3.019 E F0 .519
+(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518
(xt will match all \214les and zero)-.15 F .431
-(or more directories and subdirectories.)184 288 R .431
+(or more directories and subdirectories.)184 96 R .431
(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0
2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184
-300 Q F1(gnu_errfmt)144 312 Q F0(If set, shell error messages are writt\
-en in the standard GNU error message format.)184 324 Q F1(histappend)144
-336 Q F0 .676
+108 Q F1(gnu_errfmt)144 124.8 Q F0(If set, shell error messages are wri\
+tten in the standard GNU error message format.)184 136.8 Q F1
+(histappend)144 153.6 Q F0 .676
(If set, the history list is appended to the \214le named by the v)184
-348 R .676(alue of the)-.25 F F3(HISTFILE)3.176 E F0 -.25(va)2.926 G
-(ri-).25 E(able when the shell e)184 360 Q(xits, rather than o)-.15 E
--.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 372 Q(eedit)-.18
-E F0 .575(If set, and)184 384 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 396 Q F1(histv)144 408 Q(erify)-.1 E F0 .403
-(If set, and)184 420 R F1 -.18(re)2.903 G(adline).18 E F0 .403
+165.6 R .676(alue of the)-.25 F/F2 9/Times-Bold@0 SF(HISTFILE)3.176 E F0
+-.25(va)2.926 G(ri-).25 E(able when the shell e)184 177.6 Q
+(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1
+(histr)144 194.4 Q(eedit)-.18 E F0 .575(If set, and)184 206.4 R F1 -.18
+(re)3.075 G(adline).18 E F0 .575(is being used, a user is gi)3.075 F
+-.15(ve)-.25 G 3.075(nt).15 G .576(he opportunity to re-edit a f)-3.075
+F .576(ailed his-)-.1 F(tory substitution.)184 218.4 Q F1(histv)144
+235.2 Q(erify)-.1 E F0 .403(If set, and)184 247.2 R F1 -.18(re)2.903 G
+(adline).18 E F0 .403
(is being used, the results of history substitution are not immediately)
-2.903 F .661(passed to the shell parser)184 432 R 5.661(.I)-.55 G .662
+2.903 F .661(passed to the shell parser)184 259.2 R 5.661(.I)-.55 G .662
(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162
-G(adline).18 E F0(editing)3.162 E -.2(bu)184 444 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 456 Q F0 1.182(If set, and)184 468 R F1 -.18(re)3.682
+G(adline).18 E F0(editing)3.162 E -.2(bu)184 271.2 S -.25(ff).2 G(er).25
+E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1
+(hostcomplete)144 288 Q F0 1.182(If set, and)184 300 R F1 -.18(re)3.682
G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181
(will attempt to perform hostname completion)3.681 F 1.38(when a w)184
-480 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
+312 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381
(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E
-F3(READLINE)3.881 E F0(abo)184 492 Q -.15(ve)-.15 G 2.5(\). This).15 F
-(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 504 Q F0(If set,)
-184 516 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E F0
+F2(READLINE)3.881 E F0(abo)184 324 Q -.15(ve)-.15 G 2.5(\). This).15 F
+(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 340.8 Q F0
+(If set,)184 352.8 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0
(to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e)
-.15 E(xits.)-.15 E F1(inherit_err)144 528 Q(exit)-.18 E F0 .22
-(If set, command substitution inherits the v)184 540 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 552 Q 2.5(vironment. This)-.4 F
-(option is enabled when)2.5 E F2(posix mode)2.5 E F0(is enabled.)2.5 E
-F1(interacti)144 564 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)
-184 576 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 588 R 1.267 -.15(ve s)-.25
-H .967(hell \(see).15 F F3(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 600 Q
-(ault.)-.1 E F1(lastpipe)144 612 Q F0 .066
-(If set, and job control is not acti)184 612 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 624 Q(vironment.)-.4 E F1(lithist)144 636 Q F0 .655(If set, and the)
-184 636 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 648 Q
+.15 E(xits.)-.15 E F1(inherit_err)144 369.6 Q(exit)-.18 E F0 .22
+(If set, command substitution inherits the v)184 381.6 R .219
+(alue of the)-.25 F F1(err)2.719 E(exit)-.18 E F0 .219
+(option, instead of unsetting)2.719 F(it in the subshell en)184 393.6 Q
+2.5(vironment. This)-.4 F(option is enabled when)2.5 E/F3 10
+/Times-Italic@0 SF(posix mode)2.5 E F0(is enabled.)2.5 E F1(interacti)
+144 410.4 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 422.4 R
+2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E
+F0 .33(to cause that w)2.83 F .33(ord and all remaining characters on)
+-.1 F .967(that line to be ignored in an interacti)184 434.4 R 1.267
+-.15(ve s)-.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217
+E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F
+(enabled by def)184 446.4 Q(ault.)-.1 E F1(lastpipe)144 463.2 Q F0 .066
+(If set, and job control is not acti)184 463.2 R -.15(ve)-.25 G 2.566
+(,t).15 G .066(he shell runs the last command of a pipeline not e)-2.566
+F -.15(xe)-.15 G(-).15 E
+(cuted in the background in the current shell en)184 475.2 Q(vironment.)
+-.4 E F1(lithist)144 492 Q F0 .655(If set, and the)184 492 R F1(cmdhist)
+3.155 E F0 .654(option is enabled, multi-line commands are sa)3.154 F
+-.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F
+(with embedded ne)184 504 Q
(wlines rather than using semicolon separators where possible.)-.25 E F1
-(localv)144 660 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 672 R
+(localv)144 520.8 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 532.8 R
.422(ariables inherit the v)-.25 F .422(alue and attrib)-.25 F .422
(utes of a v)-.2 F .422(ariable of the same name that)-.25 F -.15(ex)184
-684 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
+544.8 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673
(yn)-.15 G .673 -.25(ew va)-2.673 H .173(lue is assigned.).25 F .173
-(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 696 Q
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(20)198.725 E 0 Cg EP
+(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 556.8 Q
+F1(localv)144 573.6 Q(ar_unset)-.1 E F0 .328(If set, calling)184 585.6 R
+F1(unset)2.828 E F0 .328(on local v)2.828 F .329(ariables in pre)-.25 F
+.329(vious function scopes marks them so subse-)-.25 F .543(quent looku\
+ps \214nd them unset until that function returns. This is identical to \
+the beha)184 597.6 R(v-)-.2 E(ior of unsetting local v)184 609.6 Q
+(ariables at the current function scope.)-.25 E F1(login_shell)144 626.4
+Q F0 .486
+(The shell sets this option if it is started as a login shell \(see)184
+638.4 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve)
+-.15 G 2.987(\). The).15 F -.25(va)184 650.4 S(lue may not be changed.)
+.25 E F1(mailwar)144 667.2 Q(n)-.15 E F0 .815(If set, and a \214le that)
+184 679.2 R F1(bash)3.315 E F0 .814
+(is checking for mail has been accessed since the last time it)3.315 F
+-.1(wa)184 691.2 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E
+(`The mail in)-.74 E F3(mail\214le)2.5 E F0(has been read')2.5 E 2.5('i)
+-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(20)198.725 E 0 Cg EP
%%Page: 21 21
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(localv)144 84 Q
-(ar_unset)-.1 E F0 .328(If set, calling)184 96 R F1(unset)2.828 E F0
-.328(on local v)2.828 F .329(ariables in pre)-.25 F .329
-(vious function scopes marks them so subse-)-.25 F .543(quent lookups \
-\214nd them unset until that function returns. This is identical to the\
- beha)184 108 R(v-)-.2 E(ior of unsetting local v)184 120 Q
-(ariables at the current function scope.)-.25 E F1(login_shell)144 132 Q
-F0 .486
-(The shell sets this option if it is started as a login shell \(see)184
-144 R/F2 9/Times-Bold@0 SF(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 156 S
-(lue may not be changed.).25 E F1(mailwar)144 168 Q(n)-.15 E F0 .815
-(If set, and a \214le that)184 180 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 192 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 204 Q F0 .324(If set, and)184 216 R F1 -.18
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF
+(no_empty_cmd_completion)144 84 Q F0 .324(If set, and)184 96 R F1 -.18
(re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E
-F0 .324(will not attempt to search the)2.824 F F2 -.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 228 Q F1
-(nocaseglob)144 240 Q F0 .437(If set,)184 252 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 264 S
+F0 .324(will not attempt to search the)2.824 F/F2 9/Times-Bold@0 SF
+-.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F
+(completions when completion is attempted on an empty line.)184 108 Q F1
+(nocaseglob)144 124.8 Q F0 .437(If set,)184 136.8 R F1(bash)2.937 E F0
+.436(matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)
+-.25 H .436(ashion when performing pathname).05 F -.15(ex)184 148.8 S
(pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E
--.15(ve)-.15 G(\).).15 E F1(nocasematch)144 276 Q F0 1.193(If set,)184
-288 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 300 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 312 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\
-le completions as part of programmable com-)-.15 F(pletion.)184 324 Q F1
-(nullglob)144 336 Q F0 .855(If set,)184 348 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 360 S
+-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 165.6 Q F0 1.193(If set,)184
+177.6 R F1(bash)3.693 E F0 1.194
+(matches patterns in a case\255insensiti)3.693 F 1.494 -.15(ve f)-.25 H
+1.194(ashion when performing matching).05 F .551(while e)184 189.6 R
+-.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0(or)3.051 E F1([[)3.051 E
+F0 .551(conditional commands, when performing pattern substitution)3.051
+F -.1(wo)184 201.6 S .622(rd e).1 F .623(xpansions, or when \214ltering\
+ possible completions as part of programmable com-)-.15 F(pletion.)184
+213.6 Q F1(nullglob)144 230.4 Q F0 .855(If set,)184 242.4 R F1(bash)
+3.355 E F0(allo)3.355 E .855(ws patterns which match no \214les \(see)
+-.25 F F1 -.1(Pa)3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15
+(ve)-.15 G 3.354(\)t).15 G(o)-3.354 E -.15(ex)184 254.4 S
(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144
-372 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
-384 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
+271.2 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184
+283.2 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677
(ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E
-(are enabled.)184 396 Q(This option is enabled by def)5 E(ault.)-.1 E F1
-(pr)144 408 Q(ogcomp_alias)-.18 E F0 2.124
-(If set, and programmable completion is enabled,)184 420 R F1(bash)4.624
-E F0 2.124(treats a command name that)4.624 F(doesn')184 432 Q 3.288(th)
+(are enabled.)184 295.2 Q(This option is enabled by def)5 E(ault.)-.1 E
+F1(pr)144 312 Q(ogcomp_alias)-.18 E F0 2.124
+(If set, and programmable completion is enabled,)184 324 R F1(bash)4.624
+E F0 2.124(treats a command name that)4.624 F(doesn')184 336 Q 3.288(th)
-.18 G -2.25 -.2(av e)-3.288 H(an)3.488 E 3.288(yc)-.15 G .789
(ompletions as a possible alias and attempts alias e)-3.288 F .789
-(xpansion. If it has)-.15 F 1.473(an alias,)184 444 R F1(bash)3.973 E F0
+(xpansion. If it has)-.15 F 1.473(an alias,)184 348 R F1(bash)3.973 E F0
1.473(attempts programmable completion using the command w)3.973 F 1.473
-(ord resulting)-.1 F(from the e)184 456 Q(xpanded alias.)-.15 E F1(pr)
-144 468 Q(omptv)-.18 E(ars)-.1 E F0 1.447(If set, prompt strings under)
-184 480 R 1.448(go parameter e)-.18 F 1.448
-(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 492 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
+(ord resulting)-.1 F(from the e)184 360 Q(xpanded alias.)-.15 E F1(pr)
+144 376.8 Q(omptv)-.18 E(ars)-.1 E F0 1.447
+(If set, prompt strings under)184 388.8 R 1.448(go parameter e)-.18 F
+1.448(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184
+400.8 S .171(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G
+.17(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.67 E
(OMPTING)-.27 E F0(abo)2.42 E -.15(ve)-.15 G(.).15 E
-(This option is enabled by def)184 504 Q(ault.)-.1 E F1 -.18(re)144 516
-S(stricted_shell).18 E F0 1.069
+(This option is enabled by def)184 412.8 Q(ault.)-.1 E F1 -.18(re)144
+429.6 S(stricted_shell).18 E F0 1.069
(The shell sets this option if it is started in restricted mode \(see)
-184 528 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 540 Q 2.86
+184 441.6 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 453.6 Q 2.86
(w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36
(This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G
-(-).15 E(cuted, allo)184 552 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 564 Q(erbose)-.1 E F0 .501(If set, the)184 576 R F1
+(-).15 E(cuted, allo)184 465.6 Q(wing the startup \214les to disco)-.25
+E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5
+E F1(shift_v)144 482.4 Q(erbose)-.1 E F0 .501(If set, the)184 494.4 R F1
(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 588 Q F1(sour)
-144 600 Q(cepath)-.18 E F0 .771(If set, the)184 612 R F1(sour)3.271 E
-(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
+(xceeds the number)-.15 F(of positional parameters.)184 506.4 Q F1(sour)
+144 523.2 Q(cepath)-.18 E F0 .771(If set, the)184 535.2 R F1(sour)3.271
+E(ce)-.18 E F0(\()3.271 E F1(.)A F0 3.271(\)b)C .771(uiltin uses the v)
-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 624 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E(ault.)
--.1 E F1(xpg_echo)144 636 Q F0(If set, the)184 648 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 664.8 Q F0([)2.5 E F1<ad66>A F0(])A 1.001
-(Suspend the e)144 676.8 R -.15(xe)-.15 G 1.001
+184 547.2 Q 2.5(gument. This)-.18 F(option is enabled by def)2.5 E
+(ault.)-.1 E F1(xpg_echo)144 564 Q F0(If set, the)184 576 Q F1(echo)2.5
+E F0 -.2(bu)2.5 G(iltin e).2 E(xpands backslash-escape sequences by def)
+-.15 E(ault.)-.1 E F1(suspend)108 592.8 Q F0([)2.5 E F1<ad66>A F0(])A
+1.001(Suspend the e)144 604.8 R -.15(xe)-.15 G 1.001
(cution of this shell until it recei).15 F -.15(ve)-.25 G 3.501(sa).15 G
F2(SIGCONT)A F0 3.502(signal. A)3.252 F 1.002(login shell cannot be)
-3.502 F .023(suspended; the)144 688.8 R F1<ad66>2.523 E F0 .023
+3.502 F .023(suspended; the)144 616.8 R F1<ad66>2.523 E F0 .023
(option can be used to o)2.523 F -.15(ve)-.15 G .022
(rride this and force the suspension.).15 F .022(The return status is)
-5.022 F 2.5(0u)144 700.8 S(nless the shell is a login shell and)-2.5 E
+5.022 F 2.5(0u)144 628.8 S(nless the shell is a login shell and)-2.5 E
F1<ad66>2.5 E F0(is not supplied, or if job control is not enabled.)2.5
-E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP
+E F1(test)108 645.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([)
+108 657.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .877
+(Return a status of 0 \(true\) or 1 \(f)144 657.6 R .878
+(alse\) depending on the e)-.1 F -.25(va)-.25 G .878
+(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 669.6
+S(pr).2 E F0 5.53(.E).73 G .53
+(ach operator and operand must be a separate ar)-5.53 F 3.03
+(gument. Expressions)-.18 F .53(are composed of the)3.03 F .072
+(primaries described in the)144 681.6 R F1(bash)2.573 E F0 .073
+(manual page under)2.573 F F2(CONDITION)2.573 E .073(AL EXPRESSIONS)-.18
+F/F4 9/Times-Roman@0 SF(.)A F1(test)4.573 E F0 .073(does not)2.573 F
+.695(accept an)144 693.6 R 3.195(yo)-.15 G .695
+(ptions, nor does it accept and ignore an ar)-3.195 F .694(gument of)
+-.18 F F1<adad>3.194 E F0 .694(as signifying the end of op-)3.194 F
+(tions.)144 705.6 Q 3.141(Expressions may be combined using the follo)
+144 723.6 R 3.141(wing operators, listed in decreasing order of)-.25 F
+(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(21)198.725 E 0 Cg EP
%%Page: 22 22
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/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 .877(Return a status of 0 \(true\) or 1 \(f)144
-96 R .878(alse\) depending on the e)-.1 F -.25(va)-.25 G .878
-(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.079
-(primaries described abo)144 120 R 3.379 -.15(ve u)-.15 H(nder).15 E/F3
-9/Times-Bold@0 SF(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 132 Q
-(gument of)-.18 E F1<adad>2.5 E F0(as signifying the end of options.)2.5
-E .786(Expressions may be combined using the follo)144 150 R .785
-(wing operators, listed in decreasing order of prece-)-.25 F 3.411
-(dence. The)144 162 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 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 F0<ad>2.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
-F0<ad>2.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 258 S
+E(UIL)-.1 E(TINS\(1\))-.92 E 4.114(precedence. The)144 84 R -.25(eva)
+4.114 G 1.613(luation depends on the number of ar).25 F 1.613
+(guments; see belo)-.18 F 5.413 -.65(w. O)-.25 H 1.613(perator prece-)
+.65 F(dence is used when there are \214v)144 96 Q 2.5(eo)-.15 G 2.5(rm)
+-2.5 G(ore ar)-2.5 E(guments.)-.18 E/F1 10/Times-Bold@0 SF(!)144 108 Q
+/F2 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)180 108 S
+(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\()
+144 120 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)180
+120 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26
+(his may be used to o)-5.26 F -.15(ve)-.15 G .26
+(rride the normal precedence of opera-).15 F(tors.)180 132 Q F2 -.2(ex)
+144 144 S(pr1).2 E F0<ad>2.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35
+(Tr)180 156 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2
+-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 168 S(pr1).2 E
+F0<ad>2.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 180 S
(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G
-(pr2).2 E F0(is true.)2.52 E F1(test)144 274.8 Q F0(and)2.5 E F1([)2.5 E
+(pr2).2 E F0(is true.)2.52 E F1(test)144 196.8 Q F0(and)2.5 E F1([)2.5 E
F0 -.25(eva)2.5 G(luate conditional e).25 E
(xpressions using a set of rules based on the number of ar)-.15 E
-(guments.)-.18 E 2.5(0a)144 292.8 S -.18(rg)-2.5 G(uments).18 E(The e)
-180 304.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 316.8 S -.18
-(rg)-2.5 G(ument).18 E(The e)180 328.8 Q
+(guments.)-.18 E 2.5(0a)144 214.8 S -.18(rg)-2.5 G(uments).18 E(The e)
+180 226.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 238.8 S -.18
+(rg)-2.5 G(ument).18 E(The e)180 250.8 Q
(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18
-E 2.5(2a)144 340.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
-180 352.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
+E 2.5(2a)144 262.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar)
+180 274.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87
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 364.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(CONDI-)2.879 E(TION)180 376.8 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 388.8 Q
+(gument is null.)-.18 F .379(If the \214rst ar)180 286.8 R .38
+(gument is one of the unary conditional operators listed abo)-.18 F .68
+-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180
+298.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552
+(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F
+.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 310.8 Q
(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
+(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 322.8 S -.18(rg)-2.5 G
+(uments).18 E .236(The follo)180 334.8 R .236
(wing conditions are applied in the order listed.)-.25 F .236
(If the second ar)5.236 F .236(gument is one of)-.18 F .855
-(the binary conditional operators listed abo)180 424.8 R 1.155 -.15
+(the binary conditional operators listed abo)180 346.8 R 1.155 -.15
(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F
-F4(,)A F0(the)3.105 E .579(result of the e)180 436.8 R .578(xpression i\
+F4(,)A F0(the)3.104 E .578(result of the e)180 358.8 R .578(xpression i\
s the result of the binary test using the \214rst and third ar)-.15 F
-(guments)-.18 E 1.332(as operands.)180 448.8 R(The)6.332 E F1<ad61>3.832
-E F0(and)3.832 E F1<ad6f>3.832 E F0 1.333
+(guments)-.18 E 1.333(as operands.)180 370.8 R(The)6.333 E F1<ad61>3.833
+E F0(and)3.833 E F1<ad6f>3.832 E F0 1.332
(operators are considered binary operators when there are)3.832 F .558
-(three ar)180 460.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
+(three ar)180 382.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058
F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F
.558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F
-(o-ar)-.1 E(gument)-.18 E .52(test using the second and third ar)180
-472.8 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 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
+(o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180
+394.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52
+(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02
+F(ar)180 406.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0
+2.985(,t)C .485(he result is the one-ar)-2.985 F .485
(gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E
-(wise, the e)180 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 .384(If the \214rst ar)180 520.8 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 532.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
-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
+(wise, the e)180 418.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144
+430.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 442.8 R
+.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385
+(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar)
+.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F .284
+(posed of the remaining ar)180 454.8 R 2.784(guments. Otherwise,)-.18 F
+.284(the e)2.784 F .284(xpression is parsed and e)-.15 F -.25(va)-.25 G
+.285(luated ac-).25 F(cording to precedence using the rules listed abo)
+180 466.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 478.8 S 2.5(rm)-2.5 G
+(ore ar)-2.5 E(guments)-.18 E 1.635(The e)180 490.8 R 1.635
(xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635
(luated according to precedence using the rules listed).25 F(abo)180
-580.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 598.8 Q F1(test)2.5 E
+502.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 520.8 Q F1(test)2.5 E
F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1
(>)2.5 E F0(operators sort le)2.5 E
-(xicographically using ASCII ordering.)-.15 E F1(times)108 615.6 Q F0
+(xicographically using ASCII ordering.)-.15 E F1(times)108 537.6 Q F0
1.229(Print the accumulated user and system times for the shell and for\
- processes run from the shell.)144 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 .702(The command)
-144 656.4 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 668.4 R F2(sigspec)3.108 E F0 3.108
+ processes run from the shell.)144 537.6 R(The return status is 0.)144
+549.6 Q F1(trap)108 566.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E
+F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .683(The command)
+144 578.4 R F2(ar)3.513 E(g)-.37 E F0 .683(is to be read and e)3.403 F
+-.15(xe)-.15 G .682(cuted when the shell recei).15 F -.15(ve)-.25 G
+3.182(ss).15 G(ignal\(s\))-3.182 E F2(sigspec)3.522 E F0 5.682(.I).31 G
+(f)-5.682 E F2(ar)3.512 E(g)-.37 E F0(is)3.402 E .608
+(absent \(and there is a single)144 590.4 R F2(sigspec)3.108 E F0 3.108
(\)o)C(r)-3.108 E F1<ad>3.108 E F0 3.108(,e)C .608
(ach speci\214ed signal is reset to its original disposition)-3.108 F
-.658(\(the v)144 680.4 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 602.4 R .659(alue it had upon entrance to the shell\).)
+-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658
(is the null string the signal speci\214ed by each)3.378 F F2(sigspec)
-144.34 692.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 F2(ar)3.41 E(g)-.37 E F0 .58
-(is not present and)3.3 F F1<ad70>3.08 E F0(has)3.08 E 1.214
-(been supplied, then the trap commands associated with each)144 704.4 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 716.4 R F1<ad70>3.36
+144.34 614.4 Q F0 .58(is ignored by the shell and by the commands it in)
+3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E
+F0 .581(is not present and)3.301 F F1<ad70>3.081 E F0(has)3.081 E 1.215
+(been supplied, then the trap commands associated with each)144 626.4 R
+F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214
+F(gu-)-.18 E .86(ments are supplied or if only)144 638.4 R F1<ad70>3.36
E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86
-(prints the list of commands associated with each)3.36 F 4.326
-(signal. The)144 728.4 R F1<ad6c>4.326 E F0 1.826(option causes the she\
-ll to print a list of signal names and their corresponding)4.326 F
-(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(22)198.725 E 0 Cg EP
+(prints the list of commands associated with each)3.36 F 2.83
+(signal. The)144 650.4 R F1<ad6c>2.83 E F0 .33(option causes the shell \
+to print a list of signal names and their corresponding num-)2.83 F 4.31
+(bers. Each)144 662.4 R F2(sigspec)4.65 E F0 1.811
+(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811
+(>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E
+(names are case insensiti)144 674.4 Q .3 -.15(ve a)-.25 H(nd the).15 E
+F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E .667(If a)144 692.4 R F2
+(sigspec)3.507 E F0(is)3.477 E F3(EXIT)3.167 E F0 .667
+(\(0\) the command)2.917 F F2(ar)3.496 E(g)-.37 E F0 .666(is e)3.386 F
+-.15(xe)-.15 G .666(cuted on e).15 F .666(xit from the shell.)-.15 F
+.666(If a)5.666 F F2(sigspec)3.506 E F0(is)3.476 E F3(DE-)3.166 E -.09
+(BU)144 704.4 S(G).09 E F4(,)A F0 .483(the command)2.733 F F2(ar)3.313 E
+(g)-.37 E F0 .483(is e)3.203 F -.15(xe)-.15 G .484(cuted before e).15 F
+-.15(ve)-.25 G(ry).15 E F2 .484(simple command)2.984 F F0(,)A F2(for)
+2.984 E F0(command,)2.984 E F2(case)2.984 E F0(command,)2.984 E F2
+(select)144 716.4 Q F0 .563(command, e)3.063 F -.15(ve)-.25 G .563
+(ry arithmetic).15 F F2(for)3.063 E F0 .563
+(command, and before the \214rst command e)3.063 F -.15(xe)-.15 G .562
+(cutes in a shell).15 F .622(function \(see)144 728.4 R F3 .622
+(SHELL GRAMMAR)3.122 F F0(abo)2.872 E -.15(ve)-.15 G 3.122(\). Refer).15
+F .622(to the description of the)3.122 F F1(extdeb)3.122 E(ug)-.2 E F0
+.622(option to the)3.122 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E
+(22)198.725 E 0 Cg EP
%%Page: 23 23
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E 3.126(numbers. Each)144 84 R/F1 10
-/Times-Italic@0 SF(sigspec)3.466 E F0 .625
-(is either a signal name de\214ned in <)3.436 F F1(signal.h)A F0 .625
-(>, or a signal number)B 5.625(.S)-.55 G(ignal)-5.625 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.648(If a)
-144 114 R F1(sigspec)4.488 E F0(is)4.458 E F2(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 F2(DEB)144 126 Q(UG)
--.09 E/F3 9/Times-Roman@0 SF(,)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 138 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 150 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/F4 10/Times-Bold@0 SF(extdeb)
-2.645 E(ug)-.2 E F0 .145(option to)2.645 F(the)144 162 Q F4(shopt)3.2 E
-F0 -.2(bu)3.2 G .7(iltin for details of its ef).2 F .7(fect on the)-.25
-F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E
-F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .701(the com-)2.951 F(mand)144
-174 Q F1(ar)3.474 E(g)-.37 E F0 .644(is e)3.364 F -.15(xe)-.15 G .643
-(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G
-.643(cuted with the).15 F F4(.)3.143 E F0(or)3.143 E F4(sour)3.143 E(ce)
--.18 E F0 -.2(bu)3.143 G(iltins).2 E(\214nishes e)144 186 Q -.15(xe)-.15
-G(cuting.).15 E .96(If a)144 204 R F1(sigspec)3.8 E F0(is)3.77 E F2(ERR)
-3.46 E F3(,)A F0 .96(the command)3.21 F F1(ar)3.791 E(g)-.37 E F0 .961
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(shopt)144 84 Q F0 -.2
+(bu)2.996 G .496(iltin for details of its ef).2 F .496(fect on the)-.25
+F F1(DEB)2.996 E(UG)-.1 E F0 2.996(trap. If)2.996 F(a)2.996 E/F2 10
+/Times-Italic@0 SF(sigspec)3.336 E F0(is)3.306 E/F3 9/Times-Bold@0 SF
+(RETURN)2.996 E/F4 9/Times-Roman@0 SF(,)A F0 .496(the command)2.746 F F2
+(ar)144.33 96 Q(g)-.37 E F0 .18(is e)2.9 F -.15(xe)-.15 G .18
+(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G .18
+(cuted with the).15 F F1(.)2.68 E F0(or)2.68 E F1(sour)2.68 E(ce)-.18 E
+F0 -.2(bu)2.68 G .18(iltins \214nishes).2 F -.15(exe)144 108 S(cuting.)
+.15 E .961(If a)144 126 R F2(sigspec)3.801 E F0(is)3.771 E F3(ERR)3.461
+E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E(g)-.37 E F0 .961
(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 G 3.461
-(rap).15 G .961(ipeline \(which may consist of a)-3.461 F .185(single s\
-imple command\), a list, or a compound command returns a non\255zero e)
-144 216 R .184(xit status, subject to)-.15 F .451(the follo)144 228 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 240 R .388(wing a)-.25 F F4(while)2.888
-E F0(or)2.888 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
-(ord, part of the test in an)-.1 F F1(if)2.897 E F0 .387
-(statement, part)4.847 F .777(of a command e)144 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
+(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(single sim\
+ple command\), a list, or a compound command returns a non\255zero e)144
+138 R .185(xit status, subject to)-.15 F .452(the follo)144 150 R .452
+(wing conditions.)-.25 F(The)5.452 E F3(ERR)2.952 E F0 .451
+(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451
+(ailed command is part of the com-)-.1 F .387
+(mand list immediately follo)144 162 R .387(wing a)-.25 F F1(while)2.887
+E F0(or)2.887 E F1(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388
+(ord, part of the test in an)-.1 F F2(if)2.898 E F0 .388
+(statement, part)4.848 F .778(of a command e)144 174 R -.15(xe)-.15 G
+.778(cuted in a).15 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.278 E F0 .778
(list e)3.278 F .778(xcept the command follo)-.15 F .778
-(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0
-3.278(,a)C -.15(ny)-3.278 G 1.28(command in a pipeline b)144 264 R 1.28
+(wing the \214nal)-.25 F F1(&&)3.278 E F0(or)3.278 E F1(||)3.277 E F0
+3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 186 R 1.28
(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78
-F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F 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 F4<ad65>A F0 2.5(\)o)C
-(ption.)-2.5 E 1.095
+F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F1(!)
+3.78 E F0(.)A(These are the same conditions obe)144 198 Q(yed by the)
+-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1<ad65>A F0 2.5(\)o)C
+(ption.)-2.5 E .133
(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 .661(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 .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
-F4<ad74>144 358.8 Q F0 .843(option is used,)3.343 F F4(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 370.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 382.8 R .118
-(xit status of f)-.15 F .118(alse is returned.)-.1 F .118(If the)5.118 F
-F4<ad70>2.618 E F0 .118(option is used,)2.618 F F4(type)2.618 E F0 .855
-(either returns the name of the disk \214le that w)144 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 .641(mand name, or nothing if)
-144 406.8 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 F1(\214le)3.14 E F0 5.64(.T).18 G(he)-5.64 E
-F4<ad50>3.14 E F0 .64(option forces a)3.14 F F2 -.666(PA)3.14 G(TH)-.189
-E F0 .112(search for each)144 418.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 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(fac)-5.113 G .113(ommand is hashed,)-2.613 F F4<ad70>2.613 E
-F0(and)144 430.8 Q F4<ad50>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 F2 -.666(PA)3.23 G(TH)-.189 E F3(.)A F0 .73(If the)5.23 F F4
-<ad61>144 442.8 Q F0 1.748(option is used,)4.248 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.249 E F0 6.749(.T).18 G(his)-6.749 E
-.744(includes aliases and functions, if and only if the)144 454.8 R F4
-<ad70>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 466.8 R F4<ad61>3.723 E F0 6.223(.T)C(he)-6.223 E F4<ad66>3.723 E F0
-1.223(option suppresses shell function lookup, as)3.723 F .326(with the)
-144 478.8 R F4(command)2.826 E F0 -.2(bu)2.826 G(iltin.).2 E F4(type)
-5.326 E F0 .326(returns true if all of the ar)2.826 F .325
-(guments are found, f)-.18 F .325(alse if an)-.1 F 2.825(ya)-.15 G .325
-(re not)-2.825 F(found.)144 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 .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
+216 R -.35(Tr)5.132 G .132(apped signals that are not be-).35 F .117
+(ing ignored are reset to their original v)144 228 R .117
+(alues in a subshell or subshell en)-.25 F .117
+(vironment when one is cre-)-.4 F 2.5(ated. The)144 240 R
+(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F2(sigspec)2.84 E F0
+(is in)2.81 E -.25(va)-.4 G(lid; otherwise).25 E F1(trap)2.5 E F0
+(returns true.)2.5 E F1(type)108 256.8 Q F0([)2.5 E F1(\255aftpP)A F0(])
+A F2(name)2.5 E F0([)2.5 E F2(name)A F0(...])2.5 E -.4(Wi)144 268.8 S
+.174(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2
+(name)3.034 E F0 -.1(wo)2.854 G .173
+(uld be interpreted if used as a command name.).1 F .173(If the)5.173 F
+F1<ad74>144 280.8 Q F0 .715(option is used,)3.215 F F1(type)3.215 E F0
+.715(prints a string which is one of)3.215 F F2(alias)3.545 E F0(,).27 E
+F2 -.1(ke)3.215 G(ywor)-.2 E(d)-.37 E F0(,).77 E F2(function)5.185 E F0
+(,).24 E F2 -.2(bu)3.215 G(iltin).2 E F0 3.215(,o).24 G(r)-3.215 E F2
+(\214le)5.125 E F0(if)3.395 E F2(name)144.36 292.8 Q F0 .087
+(is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087
+(ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15
+(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F2
+(name)2.946 E F0 .086(is not)2.766 F .118
+(found, then nothing is printed, and an e)144 304.8 R .118
+(xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F
+F1<ad70>2.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855
+(either returns the name of the disk \214le that w)144 316.8 R .855
+(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F2(name)3.715 E F0
+.855(were speci\214ed as a com-)3.535 F .528(mand name, or nothing if)
+144 328.8 R/F5 10/Courier@0 SF .528(type -t name)3.028 F F0 -.1(wo)3.028
+G .528(uld not return).1 F F2(\214le)4.938 E F0 5.528(.T).18 G(he)-5.528
+E F1<ad50>3.028 E F0 .529(option forces a)3.028 F F3 -.666(PA)3.029 G
+(TH)-.189 E F0 .007(search for each)144 340.8 R F2(name)2.507 E F0 2.507
+(,e)C -.15(ve)-2.757 G 2.507(ni).15 G(f)-2.507 E F5 .007(type -t name)
+2.507 F F0 -.1(wo)2.507 G .007(uld not return).1 F F2(\214le)4.417 E F0
+5.006(.I).18 G 2.506(fac)-5.006 G .006(ommand is hashed,)-2.506 F F1
+<ad70>2.506 E F0(and)144 352.8 Q F1<ad50>3.23 E F0 .73
+(print the hashed v)3.23 F .731
+(alue, which is not necessarily the \214le that appears \214rst in)-.25
+F F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1<ad61>
+144 364.8 Q F0 .824(option is used,)3.324 F F1(type)3.324 E F0 .824
+(prints all of the places that contain an e)3.324 F -.15(xe)-.15 G .823
+(cutable named).15 F F2(name)3.683 E F0 5.823(.T).18 G .823(his in-)
+-5.823 F 1.176(cludes aliases and functions, if and only if the)144
+376.8 R F1<ad70>3.676 E F0 1.176(option is not also used.)3.676 F 1.177
+(The table of hashed)6.176 F 1.223(commands is not consulted when using)
+144 388.8 R F1<ad61>3.723 E F0 6.223(.T)C(he)-6.223 E F1<ad66>3.723 E F0
+1.223(option suppresses shell function lookup, as)3.723 F .325(with the)
+144 400.8 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(type)
+5.325 E F0 .325(returns true if all of the ar)2.825 F .326
+(guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326
+(re not)-2.826 F(found.)144 412.8 Q F1(ulimit)108 429.6 Q F0([)2.5 E F1
+(\255HS)A F0(])A F1<ad61>2.5 E(ulimit)108 441.6 Q F0([)2.5 E F1(\255HS)A
+F0 2.5(][)C F1(\255bcde\214klmnpqrstuvxPR)-2.5 E(T)-.4 E F0([)2.5 E F2
+(limit)A F0(]])A(Pro)144 453.6 Q .244(vides control o)-.15 F -.15(ve)
+-.15 G 2.744(rt).15 G .244(he resources a)-2.744 F -.25(va)-.2 G .244
(ilable to the shell and to processes started by it, on systems).25 F
-.944(that allo)144 531.6 R 3.444(ws)-.25 G .944(uch control.)-3.444 F
-(The)5.944 E F4<ad48>3.444 E F0(and)3.444 E F4<ad53>3.444 E F0 .943
+.943(that allo)144 465.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F
+(The)5.943 E F1<ad48>3.443 E F0(and)3.443 E F1<ad53>3.444 E F0 .944
(options specify that the hard or soft limit is set for the)3.444 F(gi)
-144 543.6 Q -.15(ve)-.25 G 2.708(nr).15 G 2.708(esource. A)-2.708 F .208
+144 477.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 555.6 R .426
-(alue of the hard limit.)-.25 F .425(If neither)5.426 F F4<ad48>2.925 E
-F0(nor)2.925 E F4<ad53>2.925 E F0 .425
-(is speci\214ed, both the soft and)2.925 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
+ft limit may)2.709 F .425(be increased up to the v)144 489.6 R .425
+(alue of the hard limit.)-.25 F .426(If neither)5.425 F F1<ad48>2.926 E
+F0(nor)2.926 E F1<ad53>2.926 E F0 .426
+(is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144
+501.6 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139
(can be a number in the unit speci\214ed for the resource or one)3.319 F
-.742(of the special v)144 579.6 R(alues)-.25 E F4(hard)3.242 E F0(,)A F4
-(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w)
-C .741(hich stand for the current hard limit, the current)-3.241 F .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 603.6 R F4<ad48>2.999 E F0
-.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .498
-(more than one resource is speci\214ed, the)2.999 F
-(limit name and unit are printed before the v)144 615.6 Q 2.5
-(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4
-<ad61>144 627.6 Q F0(All current limits are reported)180 627.6 Q F4
-<ad62>144 639.6 Q F0(The maximum sock)180 639.6 Q(et b)-.1 E(uf)-.2 E
-(fer size)-.25 E F4<ad63>144 651.6 Q F0
-(The maximum size of core \214les created)180 651.6 Q F4<ad64>144 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 F4<ad65>144 675.6 Q F0
-(The maximum scheduling priority \("nice"\))180 675.6 Q F4<ad66>144
-687.6 Q F0
+.741(of the special v)144 513.6 R(alues)-.25 E F1(hard)3.241 E F0(,)A F1
+(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F1(unlimited)3.241 E F0 3.241(,w)
+C .741(hich stand for the current hard limit, the current)-3.241 F .024
+(soft limit, and no limit, respecti)144 525.6 R -.15(ve)-.25 G(ly).15 E
+5.023(.I)-.65 G(f)-5.023 E F2(limit)2.613 E F0 .023
+(is omitted, the current v)3.203 F .023
+(alue of the soft limit of the re-)-.25 F .984
+(source is printed, unless the)144 537.6 R F1<ad48>3.484 E F0 .984
+(option is gi)3.484 F -.15(ve)-.25 G 3.484(n. When).15 F .985
+(more than one resource is speci\214ed, the)3.484 F .7
+(limit name and unit, if appropriate, are printed before the v)144 549.6
+R 3.2(alue. Other)-.25 F .7(options are interpreted as)3.2 F(follo)144
+561.6 Q(ws:)-.25 E F1<ad61>144 573.6 Q F0
+(All current limits are reported; no limits are set)180 573.6 Q F1<ad62>
+144 585.6 Q F0(The maximum sock)180 585.6 Q(et b)-.1 E(uf)-.2 E
+(fer size)-.25 E F1<ad63>144 597.6 Q F0
+(The maximum size of core \214les created)180 597.6 Q F1<ad64>144 609.6
+Q F0(The maximum size of a process')180 609.6 Q 2.5(sd)-.55 G(ata se)
+-2.5 E(gment)-.15 E F1<ad65>144 621.6 Q F0
+(The maximum scheduling priority \("nice"\))180 621.6 Q F1<ad66>144
+633.6 Q F0
(The maximum size of \214les written by the shell and its children)180
-687.6 Q F4<ad69>144 699.6 Q F0(The maximum number of pending signals)180
-699.6 Q F4<ad6b>144 711.6 Q F0
-(The maximum number of kqueues that may be allocated)180 711.6 Q
+633.6 Q F1<ad69>144 645.6 Q F0(The maximum number of pending signals)180
+645.6 Q F1<ad6b>144 657.6 Q F0
+(The maximum number of kqueues that may be allocated)180 657.6 Q F1
+<ad6c>144 669.6 Q F0(The maximum size that may be lock)180 669.6 Q
+(ed into memory)-.1 E F1<ad6d>144 681.6 Q F0
+(The maximum resident set size \(man)180 681.6 Q 2.5(ys)-.15 G
+(ystems do not honor this limit\))-2.5 E F1<ad6e>144 693.6 Q F0 .791(Th\
+e maximum number of open \214le descriptors \(most systems do not allo)
+180 693.6 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
+(be set\))180 705.6 Q F1<ad70>144 717.6 Q F0
+(The pipe size in 512-byte blocks \(this may not be set\))180 717.6 Q
(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(23)198.725 E 0 Cg EP
%%Page: 24 24
%%BeginPageSetup
@@ -3001,136 +2984,335 @@ BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad6c>144 84 Q F0
-(The maximum size that may be lock)180 84 Q(ed into memory)-.1 E F1
-<ad6d>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 F1<ad6e>144 108 Q F0 .791
-(The maximum number of open \214le descriptors \(most systems do not al\
-lo)180 108 R 3.291(wt)-.25 G .791(his v)-3.291 F .791(alue to)-.25 F
-(be set\))180 120 Q F1<ad70>144 132 Q F0
-(The pipe size in 512-byte blocks \(this may not be set\))180 132 Q F1
-<ad71>144 144 Q F0(The maximum number of bytes in POSIX message queues)
-180 144 Q F1<ad72>144 156 Q F0
-(The maximum real-time scheduling priority)180 156 Q F1<ad73>144 168 Q
-F0(The maximum stack size)180 168 Q F1<ad74>144 180 Q F0
-(The maximum amount of cpu time in seconds)180 180 Q F1<ad75>144 192 Q
-F0(The maximum number of processes a)180 192 Q -.25(va)-.2 G
-(ilable to a single user).25 E F1<ad76>144 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 F1<ad78>144 228 Q F0(The maximum number of \214le locks)180 228 Q F1
-<ad50>144 240 Q F0(The maximum number of pseudoterminals)180 240 Q F1
-<ad54>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 F1<ad61>2.968 E F0 .468
-(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F
-2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468
-E .045(no option is gi)144 280.8 R -.15(ve)-.25 G .045(n, then).15 F F1
-<ad66>2.545 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045
+E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF<ad71>144 84 Q F0
+(The maximum number of bytes in POSIX message queues)180 84 Q F1<ad72>
+144 96 Q F0(The maximum real-time scheduling priority)180 96 Q F1<ad73>
+144 108 Q F0(The maximum stack size)180 108 Q F1<ad74>144 120 Q F0
+(The maximum amount of cpu time in seconds)180 120 Q F1<ad75>144 132 Q
+F0(The maximum number of processes a)180 132 Q -.25(va)-.2 G
+(ilable to a single user).25 E F1<ad76>144 144 Q F0 .47
+(The maximum amount of virtual memory a)180 144 R -.25(va)-.2 G .47
+(ilable to the shell and, on some systems, to).25 F(its children)180 156
+Q F1<ad78>144 168 Q F0(The maximum number of \214le locks)180 168 Q F1
+<ad50>144 180 Q F0(The maximum number of pseudoterminals)180 180 Q F1
+<ad52>144 192 Q F0(The maximum time a real-time process can run before \
+blocking, in microseconds)180 192 Q F1<ad54>144 204 Q F0
+(The maximum number of threads)180 204 Q(If)144 220.8 Q/F2 10
+/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G
+.468(n, and the).15 F F1<ad61>2.968 E F0 .468(option is not used,)2.968
+F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468
+(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .045
+(no option is gi)144 232.8 R -.15(ve)-.25 G .045(n, then).15 F F1<ad66>
+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
-<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F 1.588(in seconds;)144
-292.8 R F1<ad70>4.088 E F0 4.089(,w)C 1.589
-(hich is in units of 512-byte blocks;)-4.089 F F1<ad50>4.089 E F0(,)A F1
-<ad54>4.089 E F0(,)A F1<ad62>4.089 E F0(,)A F1<ad6b>4.089 E F0(,)A F1
-<ad6e>4.089 E F0 4.089(,a)C(nd)-4.089 E F1<ad75>4.089 E F0 4.089(,w)C
-1.589(hich are)-4.089 F 1.476(unscaled v)144 304.8 R 1.476
-(alues; and, when in posix mode,)-.25 F F1<ad63>3.976 E F0(and)3.976 E
-F1<ad66>3.976 E F0 3.976(,w)C 1.476(hich are in 512-byte increments.)
--3.976 F(The)6.476 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
-F1<ad70>A F0 2.5(][)C F1<ad53>-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
+<ad74>2.544 E F0 2.544(,w)C .044(hich is)-2.544 F .67(in seconds;)144
+244.8 R F1<ad52>3.17 E F0 3.17(,w)C .67(hich is in microseconds;)-3.17 F
+F1<ad70>3.17 E F0 3.17(,w)C .67(hich is in units of 512-byte blocks;)
+-3.17 F F1<ad50>3.17 E F0(,)A F1<ad54>3.17 E F0(,)A F1<ad62>3.17 E F0(,)
+A F1<ad6b>144 256.8 Q F0(,)A F1<ad6e>3.737 E F0 3.737(,a)C(nd)-3.737 E
+F1<ad75>3.736 E F0 3.736(,w)C 1.236(hich are unscaled v)-3.736 F 1.236
+(alues; and, when in posix mode,)-.25 F F1<ad63>3.736 E F0(and)3.736 E
+F1<ad66>3.736 E F0 3.736(,w)C 1.236(hich are in)-3.736 F .238
+(512-byte increments.)144 268.8 R .238
+(The return status is 0 unless an in)5.238 F -.25(va)-.4 G .238
+(lid option or ar).25 F .238(gument is supplied, or an)-.18 F
+(error occurs while setting a ne)144 280.8 Q 2.5(wl)-.25 G(imit.)-2.5 E
+F1(umask)108 297.6 Q F0([)2.5 E F1<ad70>A F0 2.5(][)C F1<ad53>-2.5 E F0
+2.5(][)C F2(mode)-2.5 E F0(])A .18
+(The user \214le-creation mask is set to)144 309.6 R F2(mode)3.06 E F0
+5.18(.I).18 G(f)-5.18 E F2(mode)3.06 E F0(be)2.86 E .18
(gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\
therwise it is interpreted as a symbolic mode mask similar to that acce\
-pted by)144 369.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
-381.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
+pted by)144 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144
+333.6 Q F2(mode)3.263 E F0 .382(is omitted, the current v)3.063 F .382
(alue of the mask is printed.)-.25 F(The)5.382 E F1<ad53>2.882 E F0 .382
(option causes the mask to be)2.882 F .547
-(printed in symbolic form; the def)144 393.6 R .547
+(printed in symbolic form; the def)144 345.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 F1<ad70>3.047 E F0 .547(option is supplied, and)3.047 F F2
-(mode)144.38 405.6 Q F0 .552
+(mode)144.38 357.6 Q F0 .552
(is omitted, the output is in a form that may be reused as input.)3.232
-F .551(The return status is 0 if the)5.551 F(mode w)144 417.6 Q
+F .551(The return status is 0 if the)5.551 F(mode w)144 369.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
-F1<ad61>4.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
+(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0
+(...])2.5 E(Remo)144 398.4 Q 1.057 -.15(ve e)-.15 H(ach).15 E F2(name)
+3.257 E F0 .757(from the list of de\214ned aliases.)3.257 F(If)5.758 E
+F1<ad61>3.258 E F0 .758(is supplied, all alias de\214nitions are re-)
+3.258 F(mo)144 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E
(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
+(is not a de\214ned alias.)2.68 E F1(unset)108 427.2 Q F0<5bad>2.5 E F1
(fv)A F0 2.5(][)C<ad>-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.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 F1<ad76>3.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 499.2 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 511.2 R F1
-<ad66>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 523.2 Q -.15(ve)-.15 G 2.537(d. If).15 F(the)2.537 E F1<ad6e>
-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 535.2 R .492(ariable it references.)-.25
-F F1<ad6e>5.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1
-<ad66>2.992 E F0 .492(option is supplied.)2.992 F .492(If no)5.492 F .22
-(options are supplied, each)144 547.2 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 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.688(df).15 G
-1.188(rom the en)-3.688 F(vironment)-.4 E 3.205
-(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.456 E F4(,)A F3(SECONDS)5.456 E
-F4(,)A F3(LINENO)144 583.2 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
-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 F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144
-624 S .659(it for each speci\214ed child process and return its termina\
+2.5 E -.15(Fo)144 439.2 S 3.804(re).15 G(ach)-3.804 E F2(name)4.164 E F0
+3.804(,r).18 G(emo)-3.804 E 1.604 -.15(ve t)-.15 H 1.304
+(he corresponding v).15 F 1.303(ariable or function.)-.25 F 1.303
+(If the)6.303 F F1<ad76>3.803 E F0 1.303(option is gi)3.803 F -.15(ve)
+-.25 G 1.303(n, each).15 F F2(name)144.36 451.2 Q F0 .464
+(refers to a shell v)3.144 F .464(ariable, and that v)-.25 F .464
+(ariable is remo)-.25 F -.15(ve)-.15 G 2.965(d. Read-only).15 F -.25(va)
+2.965 G .465(riables may not be un-).25 F 2.769(set. If)144 463.2 R F1
+<ad66>2.769 E F0 .269(is speci\214ed, each)2.769 F F2(name)3.129 E F0
+.269(refers to a shell function, and the function de\214nition is remo)
+2.949 F -.15(ve)-.15 G(d.).15 E .403(If the)144 475.2 R F1<ad6e>2.903 E
+F0 .404(option is supplied, and)2.904 F F2(name)2.904 E F0 .404(is a v)
+2.904 F .404(ariable with the)-.25 F F2(namer)2.904 E(ef)-.37 E F0
+(attrib)2.904 E(ute,)-.2 E F2(name)2.904 E F0 .404(will be unset)2.904 F
+.72(rather than the v)144 487.2 R .72(ariable it references.)-.25 F F1
+<ad6e>5.72 E F0 .72(has no ef)3.22 F .719(fect if the)-.25 F F1<ad66>
+3.219 E F0 .719(option is supplied.)3.219 F .719(If no options)5.719 F
+.736(are supplied, each)144 499.2 R F2(name)3.236 E F0 .736
+(refers to a v)3.236 F .737(ariable; if there is no v)-.25 F .737
+(ariable by that name, a function with)-.25 F 1.762(that name, if an)144
+511.2 R 3.062 -.65(y, i)-.15 H 4.262(su).65 G 4.261(nset. Each)-4.262 F
+1.761(unset v)4.261 F 1.761(ariable or function is remo)-.25 F -.15(ve)
+-.15 G 4.261(df).15 G 1.761(rom the en)-4.261 F(vironment)-.4 E 3.171
+(passed to subsequent commands.)144 523.2 R 3.172(If an)8.172 F 5.672
+(yo)-.15 G(f)-5.672 E/F3 9/Times-Bold@0 SF -.27(BA)5.672 G(SH_ALIASES)
+.27 E/F4 9/Times-Roman@0 SF(,)A F3 -.27(BA)5.422 G(SH_ARGV0).27 E F4(,)A
+F3 -.27(BA)5.422 G(SH_CMDS).27 E F4(,)A F3 -.27(BA)144 535.2 S
+(SH_COMMAND).27 E F4(,)A F3 -.27(BA)11.482 G(SH_SUBSHELL).27 E F4(,)A F3
+-.27(BA)11.482 G(SHPID).27 E F4(,)A F3(COMP_W)11.482 E(ORDBREAKS)-.09 E
+F4(,)A F3(DIRST)11.481 E -.495(AC)-.81 G(K).495 E F4(,)A F3(EPOCHREAL)
+144 547.2 Q(TIME)-.828 E F4(,)A F3(EPOCHSECONDS)2.67 E F4(,)A F3(FUNCN)
+2.67 E(AME)-.18 E F4(,)A F3(GR)2.67 E(OUPS)-.27 E F4(,)A F3(HISTCMD)2.67
+E F4(,)A F3(LINENO)2.67 E F4(,)A F3(RANDOM)2.67 E F4(,)A F3(SECONDS)144
+559.2 Q F4(,)A F0(or)4.03 E F3(SRANDOM)4.28 E F0 1.779(are unset, the)
+4.03 F 4.279(yl)-.15 G 1.779(ose their special properties, e)-4.279 F
+-.15(ve)-.25 G 4.279(ni).15 G 4.279(ft)-4.279 G(he)-4.279 E 4.279(ya)
+-.15 G 1.779(re subse-)-4.279 F(quently reset.)144 571.2 Q(The e)5 E
+(xit status is true unless a)-.15 E F2(name)2.86 E F0(is readonly)2.68 E
+(.)-.65 E F1(wait)108 588 Q F0([)2.5 E F1(\255fn)A F0 2.5(][)C F1<ad70>
+-2.5 E F2(varname)2.5 E F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144
+600 S .659(it for each speci\214ed child process and return its termina\
tion status.).8 F(Each)5.659 E F2(id)3.169 E F0 .659(may be a process)
-3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 636 R
+3.929 F .009(ID or a job speci\214cation; if a job spec is gi)144 612 R
-.15(ve)-.25 G .008(n, all processes in that job').15 F 2.508(sp)-.55 G
.008(ipeline are w)-2.508 F .008(aited for)-.1 F 5.008(.I)-.55 G(f)
--5.008 E F2(id)144.01 648 Q F0 .521(is not gi)3.791 F -.15(ve)-.25 G
-.521(n, all currently acti).15 F .821 -.15(ve c)-.25 H .521
-(hild processes are w).15 F .521(aited for)-.1 F 3.021(,a)-.4 G .521
-(nd the return status is zero.)-3.021 F(If)5.522 E(the)144 660 Q F1
-<ad6e>3.057 E F0 .557(option is supplied,)3.057 F F1(wait)3.057 E F0 -.1
-(wa)3.057 G .557(its for an).1 F 3.057(yj)-.15 G .557
-(ob to terminate and returns its e)-3.057 F .557(xit status.)-.15 F .556
-(If the)5.556 F F1<ad66>3.056 E F0 .586
-(option is supplied, and job control is enabled,)144 672 R F1(wait)3.086
-E F0(forces)3.086 E F2(id)3.086 E F0 .587
-(to terminate before returning its sta-)3.086 F .756
-(tus, instead of returning when it changes status.)144 684 R(If)5.756 E
-F2(id)3.266 E F0 .755(speci\214es a non-e)4.026 F .755
-(xistent process or job, the)-.15 F .365(return status is 127.)144 696 R
-.365(Otherwise, the return status is the e)5.365 F .365
-(xit status of the last process or job w)-.15 F(aited)-.1 E(for)144 708
-Q(.)-.55 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg
-EP
+-5.008 E F2(id)144.01 624 Q F0 .441(is not gi)3.711 F -.15(ve)-.25 G(n,)
+.15 E F1(wait)2.941 E F0 -.1(wa)2.941 G .441
+(its for all running background jobs and the last-e).1 F -.15(xe)-.15 G
+.442(cuted process substitu-).15 F .598
+(tion, if its process id is the same as)144 636 R F1($!)3.098 E F0 3.098
+(,a)C .598(nd the return status is zero.)-3.098 F .597(If the)5.597 F F1
+<ad6e>3.097 E F0 .597(option is supplied,)3.097 F F1(wait)144 648 Q F0
+-.1(wa)3.082 G .583(its for a single job from the list of).1 F F2(id)
+3.083 E F0 3.083(so)C 1.383 -.4(r, i)-3.083 H 3.083(fn).4 G(o)-3.083 E
+F2(id)3.083 E F0 3.083(sa)C .583(re supplied, an)-3.083 F 3.083(yj)-.15
+G .583(ob, to complete and)-3.083 F .404(returns its e)144 660 R .404
+(xit status.)-.15 F .403(If none of the supplied ar)5.403 F .403
+(guments is a child of the shell, or if no ar)-.18 F(guments)-.18 E .572
+(are supplied and the shell has no unw)144 672 R .573
+(aited-for children, the e)-.1 F .573(xit status is 127.)-.15 F .573
+(If the)5.573 F F1<ad70>3.073 E F0 .573(option is)3.073 F .39
+(supplied, the process or job identi\214er of the job for which the e)
+144 684 R .39(xit status is returned is assigned to)-.15 F .905(the v)
+144 696 R(ariable)-.25 E F2(varname)3.405 E F0 .905
+(named by the option ar)3.405 F 3.405(gument. The)-.18 F -.25(va)3.405 G
+.905(riable will be unset initially).25 F 3.405(,b)-.65 G(efore)-3.405 E
+(an)144 708 Q 3.89(ya)-.15 G 3.89(ssignment. This)-3.89 F 1.39
+(is useful only when the)3.89 F F1<ad6e>3.89 E F0 1.39
+(option is supplied.)3.89 F 1.39(Supplying the)6.39 F F1<ad66>3.89 E F0
+(option,)3.89 E 1.461(when job control is enabled, forces)144 720 R F1
+(wait)3.961 E F0 1.461(to w)3.961 F 1.461(ait for)-.1 F F2(id)3.961 E F0
+1.462(to terminate before returning its status,)3.961 F(GNU Bash 5.0)72
+768 Q(2004 Apr 20)149.565 E(24)198.725 E 0 Cg EP
%%Page: 25 25
%%BeginPageSetup
BP
%%EndPageSetup
/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
-E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10.95/Times-Bold@0 SF(SEE ALSO)72 84 Q
-F0(bash\(1\), sh\(1\))108 96 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565
-E(25)198.725 E 0 Cg EP
+E(UIL)-.1 E(TINS\(1\))-.92 E .149
+(instead of returning when it changes status.)144 84 R(If)5.149 E/F1 10
+/Times-Italic@0 SF(id)2.659 E F0 .149(speci\214es a non-e)3.419 F .148
+(xistent process or job, the return)-.15 F(status is 127.)144 96 Q
+(Otherwise, the return status is the e)5 E
+(xit status of the last process or job w)-.15 E(aited for)-.1 E(.)-.55 E
+/F2 10.95/Times-Bold@0 SF(SHELL COMP)72 112.8 Q -1.04(AT)-.81 G
+(IBILITY MODE)1.04 E F0 .911
+(Bash-4.0 introduced the concept of a `shell compatibility le)108 124.8
+R -.15(ve)-.25 G .912(l', speci\214ed as a set of options to the shopt)
+.15 F -.2(bu)108 136.8 S(iltin).2 E/F3 10/Times-Bold@0 SF(compat31)3.378
+E F0(,)A F3(compat32)3.378 E F0(,)A F3(compat40)3.378 E F0(,)A F3
+(compat41)3.378 E F0 3.378(,a)C .878(nd so on\).)-3.378 F .877
+(There is only one current compatibility)5.878 F(le)108 148.8 Q -.15(ve)
+-.25 G 3.253(l-).15 G 3.253(-e)-3.253 G .753(ach option is mutually e)
+-3.253 F(xclusi)-.15 E -.15(ve)-.25 G 5.753(.T).15 G .753
+(he compatibility le)-5.753 F -.15(ve)-.25 G 3.254(li).15 G 3.254(si)
+-3.254 G .754(ntended to allo)-3.254 F 3.254(wu)-.25 G .754
+(sers to select be-)-3.254 F(ha)108 160.8 Q 1.084(vior from pre)-.2 F
+1.084(vious v)-.25 F 1.083(ersions that is incompatible with ne)-.15 F
+1.083(wer v)-.25 F 1.083(ersions while the)-.15 F 3.583(ym)-.15 G 1.083
+(igrate scripts to use)-3.583 F(current features and beha)108 172.8 Q
+(vior)-.2 E 2.5(.I)-.55 G(t')-2.5 E 2.5(si)-.55 G
+(ntended to be a temporary solution.)-2.5 E 1.456
+(This section does not mention beha)108 189.6 R 1.457
+(vior that is standard for a particular v)-.2 F 1.457
+(ersion \(e.g., setting)-.15 F F3(compat32)3.957 E F0 .887
+(means that quoting the rhs of the re)108 201.6 R(ge)-.15 E .886
+(xp matching operator quotes special re)-.15 F(ge)-.15 E .886
+(xp characters in the w)-.15 F(ord,)-.1 E(which is def)108 213.6 Q
+(ault beha)-.1 E(vior in bash-3.2 and abo)-.2 E -.15(ve)-.15 G(\).).15 E
+.522(If a user enables, say)108 230.4 R(,)-.65 E F3(compat32)3.023 E F0
+3.023(,i)C 3.023(tm)-3.023 G .523(ay af)-3.023 F .523(fect the beha)-.25
+F .523(vior of other compatibility le)-.2 F -.15(ve)-.25 G .523
+(ls up to and includ-).15 F .26(ing the current compatibility le)108
+242.4 R -.15(ve)-.25 G 2.76(l. The).15 F .259
+(idea is that each compatibility le)2.759 F -.15(ve)-.25 G 2.759(lc).15
+G .259(ontrols beha)-2.759 F .259(vior that changed)-.2 F 1.645
+(in that v)108 254.4 R 1.646(ersion of)-.15 F F3(bash)4.146 E F0 4.146
+(,b)C 1.646(ut that beha)-4.346 F 1.646(vior may ha)-.2 F 1.946 -.15
+(ve b)-.2 H 1.646(een present in earlier v).15 F 4.146(ersions. F)-.15 F
+1.646(or instance, the)-.15 F .761
+(change to use locale-based comparisons with the)108 266.4 R F3([[)3.261
+E F0 .76(command came in bash-4.1, and earlier v)3.261 F .76
+(ersions used)-.15 F 1.904(ASCII-based comparisons, so enabling)108
+278.4 R F3(compat32)4.404 E F0 1.905
+(will enable ASCII-based comparisons as well.)4.404 F(That)6.905 E .296
+(granularity may not be suf)108 290.4 R .296
+(\214cient for all uses, and as a result users should emplo)-.25 F 2.796
+(yc)-.1 G .295(ompatibility le)-2.796 F -.15(ve)-.25 G .295(ls care-).15
+F(fully)108 302.4 Q 5(.R)-.65 G(ead the documentation for a particular \
+feature to \214nd out the current beha)-5 E(vior)-.2 E(.)-.55 E .531
+(Bash-4.3 introduced a ne)108 319.2 R 3.031(ws)-.25 G .531(hell v)-3.031
+F(ariable:)-.25 E/F4 9/Times-Bold@0 SF -.27(BA)3.031 G(SH_COMP).27 E
+-.855(AT)-.666 G/F5 9/Times-Roman@0 SF(.).855 E F0 .531(The v)5.031 F
+.531(alue assigned to this v)-.25 F .532(ariable \(a decimal)-.25 F -.15
+(ve)108 331.2 S .108(rsion number lik).15 F 2.608(e4)-.1 G .108
+(.2, or an inte)-2.608 F .108(ger corresponding to the)-.15 F F3(compat)
+2.607 E F1(NN)A F0 .107(option, lik)2.607 F 2.607(e4)-.1 G .107
+(2\) determines the com-)-2.607 F(patibility le)108 343.2 Q -.15(ve)-.25
+G(l.).15 E .387(Starting with bash-4.4, Bash has be)108 360 R .388
+(gun deprecating older compatibility le)-.15 F -.15(ve)-.25 G 2.888
+(ls. Ev).15 F(entually)-.15 E 2.888(,t)-.65 G .388(he options will)
+-2.888 F(be remo)108 372 Q -.15(ve)-.15 G 2.5(di).15 G 2.5(nf)-2.5 G -.2
+(avo)-2.6 G 2.5(ro).2 G(f)-2.5 E F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F5(.).855 E F0 1.164(Bash-5.0 is the \214nal v)108 388.8 R
+1.164(ersion for which there will be an indi)-.15 F 1.163
+(vidual shopt option for the pre)-.25 F 1.163(vious v)-.25 F(ersion.)
+-.15 E(Users should use)108 400.8 Q F4 -.27(BA)2.5 G(SH_COMP).27 E -.855
+(AT)-.666 G F0(on bash-5.0 and later v)3.105 E(ersions.)-.15 E 1.613
+(The follo)108 417.6 R 1.613(wing table describes the beha)-.25 F 1.613
+(vior changes controlled by each compatibility le)-.2 F -.15(ve)-.25 G
+4.113(ls).15 G 4.114(etting. The)-4.113 F F3(compat)108 429.6 Q F1(NN)A
+F0 1.186(tag is used as shorthand for setting the compatibility le)3.686
+F -.15(ve)-.25 G 3.686(lt).15 G(o)-3.686 E F1(NN)3.686 E F0 1.186
+(using one of the follo)3.686 F(wing)-.25 E 3.806(mechanisms. F)108
+441.6 R 1.306(or v)-.15 F 1.306
+(ersions prior to bash-5.0, the compatibility le)-.15 F -.15(ve)-.25 G
+3.807(lm).15 G 1.307(ay be set using the corresponding)-3.807 F F3
+(compat)108 453.6 Q F1(NN)A F0 .502(shopt option.)3.002 F -.15(Fo)5.502
+G 3.002(rb).15 G .502(ash-4.3 and later v)-3.002 F .502(ersions, the)
+-.15 F F4 -.27(BA)3.002 G(SH_COMP).27 E -.855(AT)-.666 G F0 -.25(va)
+3.607 G .502(riable is preferred, and it).25 F
+(is required for bash-5.1 and later v)108 465.6 Q(ersions.)-.15 E F3
+(compat31)108 482.4 Q F0<83>144 494.4 Q(quoting the rhs of the)180 494.4
+Q F3([[)2.5 E F0(command')2.5 E 2.5(sr)-.55 G -.15(eg)-2.5 G -.15(ex).15
+G 2.5(pm).15 G(atching operator \(=~\) has no special ef)-2.5 E(fect)
+-.25 E F3(compat32)108 511.2 Q F0<83>144 523.2 Q .35
+(interrupting a command list such as "a ; b ; c" causes the e)180 523.2
+R -.15(xe)-.15 G .35(cution of the ne).15 F .35(xt command)-.15 F .018
+(in the list \(in bash-4.0 and later v)180 535.2 R .018
+(ersions, the shell acts as if it recei)-.15 F -.15(ve)-.25 G 2.517(dt)
+.15 G .017(he interrupt, so in-)-2.517 F
+(terrupting one command in a list aborts the e)180 547.2 Q -.15(xe)-.15
+G(cution of the entire list\)).15 E F3(compat40)108 564 Q F0<83>144 576
+Q(the)180 576 Q F3(<)2.673 E F0(and)2.673 E F3(>)2.673 E F0 .173
+(operators to the)2.673 F F3([[)2.673 E F0 .173
+(command do not consider the current locale when compar)2.673 F(-)-.2 E
+.068(ing strings; the)180 588 R 2.568(yu)-.15 G .068(se ASCII ordering.)
+-2.568 F .068(Bash v)5.068 F .067
+(ersions prior to bash-4.1 use ASCII collation)-.15 F(and)180 600 Q F1
+(str)4.742 E(cmp)-.37 E F0 1.902
+(\(3\); bash-4.1 and later use the current locale').19 F 4.403(sc)-.55 G
+1.903(ollation sequence and)-4.403 F F1(str)4.743 E(-)-.2 E(coll)180 612
+Q F0(\(3\).).51 E F3(compat41)108 628.8 Q F0<83>144 640.8 Q(in)180 640.8
+Q F1(posix)3.79 E F0(mode,)3.79 E F3(time)3.79 E F0 1.29(may be follo)
+3.79 F 1.29(wed by options and still be recognized as a reserv)-.25 F
+(ed)-.15 E -.1(wo)180 652.8 S(rd \(this is POSIX interpretation 267\)).1
+E<83>144 664.8 Q(in)180 664.8 Q F1(posix)2.708 E F0 .208
+(mode, the parser requires that an e)2.708 F -.15(ve)-.25 G 2.708(nn).15
+G .208(umber of single quotes occur in the)-2.708 F F1(wor)2.709 E(d)
+-.37 E F0 .282(portion of a double-quoted parameter e)180 676.8 R .282
+(xpansion and treats them specially)-.15 F 2.781(,s)-.65 G 2.781(ot)
+-2.781 G .281(hat charac-)-2.781 F(ters within the single quotes are co\
+nsidered quoted \(this is POSIX interpretation 221\))180 688.8 Q F3
+(compat42)108 705.6 Q F0<83>144 717.6 Q 1.055(the replacement string in\
+ double-quoted pattern substitution does not under)180 717.6 R 1.056
+(go quote re-)-.18 F(mo)180 729.6 Q -.25(va)-.15 G(l, as it does in v)
+.25 E(ersions after bash-4.2)-.15 E(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(25)198.725 E 0 Cg EP
+%%Page: 26 26
+%%BeginPageSetup
+BP
+%%EndPageSetup
+/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61
+(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35
+E(UIL)-.1 E(TINS\(1\))-.92 E<83>144 84 Q .021
+(in posix mode, single quotes are considered special when e)180 84 R
+.021(xpanding the)-.15 F/F1 10/Times-Italic@0 SF(wor)2.52 E(d)-.37 E F0
+.02(portion of a)2.52 F .017(double-quoted parameter e)180 96 R .017
+(xpansion and can be used to quote a closing brace or other spe-)-.15 F
+.999(cial character \(this is part of POSIX interpretation 221\); in la\
+ter v)180 108 R .998(ersions, single quotes)-.15 F
+(are not special within double-quoted w)180 120 Q(ord e)-.1 E(xpansions)
+-.15 E/F2 10/Times-Bold@0 SF(compat43)108 136.8 Q F0<83>144 148.8 Q 1.07
+(the shell does not print a w)180 148.8 R 1.071
+(arning message if an attempt is made to use a quoted com-)-.1 F .249
+(pound assignment as an ar)180 160.8 R .248
+(gument to declare \(declare -a foo='\(1 2\)'\). Later v)-.18 F .248
+(ersions w)-.15 F(arn)-.1 E(that this usage is deprecated)180 172.8 Q
+<83>144 184.8 Q -.1(wo)180 184.8 S .5(rd e).1 F .501
+(xpansion errors are considered non-f)-.15 F .501
+(atal errors that cause the current command to)-.1 F -.1(fa)180 196.8 S
+.605(il, e).1 F -.15(ve)-.25 G 3.105(ni).15 G 3.105(np)-3.105 G .605
+(osix mode \(the def)-3.105 F .605(ault beha)-.1 F .605(vior is to mak)
+-.2 F 3.105(et)-.1 G .605(hem f)-3.105 F .605
+(atal errors that cause the)-.1 F(shell to e)180 208.8 Q(xit\))-.15 E
+<83>144 220.8 Q .354(when e)180 220.8 R -.15(xe)-.15 G .354
+(cuting a shell function, the loop state \(while/until/etc.\)).15 F .355
+(is not reset, so)5.354 F F2(br)2.855 E(eak)-.18 E F0(or)2.855 E F2
+(continue)180 232.8 Q F0 .052
+(in that function will break or continue loops in the calling conte)
+2.553 F .052(xt. Bash-4.4 and)-.15 F(later reset the loop state to pre)
+180 244.8 Q -.15(ve)-.25 G(nt this).15 E F2(compat44)108 261.6 Q F0<83>
+144 273.6 Q .719(the shell sets up the v)180 273.6 R .719(alues used by)
+-.25 F/F3 9/Times-Bold@0 SF -.27(BA)3.219 G(SH_ARGV).27 E F0(and)2.969 E
+F3 -.27(BA)3.219 G(SH_ARGC).27 E F0 .719(so the)2.969 F 3.219(yc)-.15 G
+.719(an e)-3.219 F(xpand)-.15 E(to the shell')180 285.6 Q 2.5(sp)-.55 G
+(ositional parameters e)-2.5 E -.15(ve)-.25 G 2.5(ni).15 G 2.5(fe)-2.5 G
+(xtended deb)-2.65 E(ugging mode is not enabled)-.2 E<83>144 297.6 Q
+2.635(as)180 297.6 S .135(ubshell inherits loops from its parent conte)
+-2.635 F .135(xt, so)-.15 F F2(br)2.635 E(eak)-.18 E F0(or)2.635 E F2
+(continue)2.634 E F0 .134(will cause the sub-)2.634 F(shell to e)180
+309.6 Q 2.5(xit. Bash-5.0)-.15 F(and later reset the loop state to pre)
+2.5 E -.15(ve)-.25 G(nt the e).15 E(xit)-.15 E<83>144 321.6 Q -.25(va)
+180 321.6 S .618(riable assignments preceding b).25 F .618(uiltins lik)
+-.2 F(e)-.1 E F2(export)3.118 E F0(and)3.118 E F2 -.18(re)3.118 G
+(adonly).18 E F0 .618(that set attrib)3.118 F .619(utes con-)-.2 F .12
+(tinue to af)180 333.6 R .12(fect v)-.25 F .119
+(ariables with the same name in the calling en)-.25 F .119(vironment e)
+-.4 F -.15(ve)-.25 G 2.619(ni).15 G 2.619(ft)-2.619 G .119(he shell is)
+-2.619 F(not in posix mode)180 345.6 Q F2(compat50)108 362.4 Q F0<83>144
+374.4 Q 1.209(Bash-5.1 changed the w)180 374.4 R(ay)-.1 E F3($RANDOM)
+3.709 E F0 1.209(is generated to introduce slightly more random-)3.459 F
+1.019(ness. If the shell compatibility le)180 386.4 R -.15(ve)-.25 G
+3.518(li).15 G 3.518(ss)-3.518 G 1.018(et to 50 or lo)-3.518 F(wer)-.25
+E 3.518(,i)-.4 G 3.518(tr)-3.518 G -2.15 -.25(ev e)-3.518 H 1.018
+(rts to the method from).25 F .732(bash-5.0 and pre)180 398.4 R .732
+(vious v)-.25 F .733
+(ersions, so seeding the random number generator by assigning a)-.15 F
+-.25(va)180 410.4 S(lue to).25 E F3(RANDOM)2.5 E F0
+(will produce the same sequence as in bash-5.0)2.25 E<83>144 422.4 Q
+.696(If the command hash table is empty)180 422.4 R 3.196(,b)-.65 G .696
+(ash v)-3.196 F .695(ersions prior to bash-5.1 printed an informa-)-.15
+F 1.32(tional message to that ef)180 434.4 R 1.321(fect, e)-.25 F -.15
+(ve)-.25 G 3.821(nw).15 G 1.321
+(hen producing output that can be reused as input.)-3.821 F
+(Bash-5.1 suppresses that message when the)180 446.4 Q F2<ad6c>2.5 E F0
+(option is supplied.)2.5 E/F4 10.95/Times-Bold@0 SF(SEE ALSO)72 463.2 Q
+F0(bash\(1\), sh\(1\))108 475.2 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20)
+149.565 E(26)198.725 E 0 Cg EP
%%Trailer
end
%%EOF
diff --git a/doc/rbash.0 b/doc/rbash.0
index 9becaa45..b602a702 100644
--- a/doc/rbash.0
+++ b/doc/rbash.0
@@ -14,13 +14,17 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL
+o changing directories with ccdd
- +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, EENNVV, or BBAASSHH__EENNVV
+ +o setting or unsetting the values of SSHHEELLLL, PPAATTHH, HHIISSTTFFIILLEE, EENNVV,
+ or BBAASSHH__EENNVV
+o specifying command names containing //
- +o specifying a filename containing a // as an argument to the ..
+ +o specifying a filename containing a // as an argument to the ..
builtin command
+ +o specifying a filename containing a slash as an argument to the
+ hhiissttoorryy builtin command
+
+o specifying a filename containing a slash as an argument to the
--pp option to the hhaasshh builtin command
diff --git a/doc/rbash.ps b/doc/rbash.ps
index 885aef04..45c9f66b 100644
--- a/doc/rbash.ps
+++ b/doc/rbash.ps
@@ -1,9 +1,9 @@
%!PS-Adobe-3.0
-%%Creator: groff version 1.22.3
-%%CreationDate: Wed Jan 2 09:14:38 2019
+%%Creator: groff version 1.22.4
+%%CreationDate: Wed Nov 18 15:13:06 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
-%%DocumentSuppliedResources: procset grops 1.22 3
+%%DocumentSuppliedResources: procset grops 1.22 4
%%Pages: 1
%%PageOrder: Ascend
%%DocumentMedia: Default 612 792 0 () ()
@@ -13,7 +13,7 @@
%%PageMedia: Default
%%EndDefaults
%%BeginProlog
-%%BeginResource: procset grops 1.22 3
+%%BeginResource: procset grops 1.22 4
%!PS-Adobe-3.0 Resource-ProcSet
/setpacking where{
pop
@@ -236,50 +236,54 @@ BP
(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 F2<ad72>4.397 E F0 1.896
-(option is supplied at in)4.397 F -.2(vo)-.4 G 1.896
-(cation, the shell becomes).2 F 3.445(restricted. A)108 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
+112.8 Q F0(If)108 124.8 Q F2(bash)3.582 E F0 1.081
+(is started with the name)3.581 F F2(rbash)3.581 E F0 3.581(,o)C 3.581
+(rt)-3.581 G(he)-3.581 E F2<ad72>3.581 E F0 1.081
+(option is supplied at in)3.581 F -.2(vo)-.4 G 1.081
+(cation, the shell becomes re-).2 F 2.976(stricted. A)108 136.8 R .476
+(restricted shell is used to set up an en)2.976 F .476
+(vironment more controlled than the standard shell.)-.4 F .477(It be-)
+5.477 F(ha)108 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<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<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
+G(TH)-.189 E F4(,)A F3(HISTFILE)2.25 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 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
+(specifying a \214lename containing a slash as an ar)144 232.8 Q
+(gument to the)-.18 E F2(history)2.5 E F0 -.2(bu)2.5 G(iltin command).2
+E<83>108 249.6 Q .45
+(specifying a \214lename containing a slash as an ar)144 249.6 R .449
(gument to the)-.18 F F2<ad70>2.949 E F0 .449(option to the)2.949 F F2
-(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 244.8 Q
-<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
+(hash)2.949 E F0 -.2(bu)2.949 G .449(iltin com-).2 F(mand)144 261.6 Q
+<83>108 278.4 Q(importing function de\214nitions from the shell en)144
+278.4 Q(vironment at startup)-.4 E<83>108 295.2 Q(parsing the v)144
+295.2 Q(alue of)-.25 E F3(SHELLOPTS)2.5 E F0(from the shell en)2.25 E
+(vironment at startup)-.4 E<83>108 312 Q(redirecting output using the >\
+, >|, <>, >&, &>, and >> redirection operators)144 312 Q<83>108 328.8 Q
+(using the)144 328.8 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
+345.6 Q(adding or deleting b)144 345.6 Q(uiltin commands with the)-.2 E
F2<ad66>2.5 E F0(and)2.5 E F2<ad64>2.5 E F0(options to the)2.5 E F2
-(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 345.6 Q
-(using the)144 345.6 Q F2(enable)2.5 E F0 -.2(bu)2.5 G
+(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 362.4 Q
+(using the)144 362.4 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 F2<ad70>2.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
+379.2 Q(specifying the)144 379.2 Q F2<ad70>2.5 E F0(option to the)2.5 E
+F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 396 Q
+(turning of)144 396 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2
(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A
-(These restrictions are enforced after an)108 396 Q 2.5(ys)-.15 G
+(These restrictions are enforced after an)108 412.8 Q 2.5(ys)-.15 G
(tartup \214les are read.)-2.5 E .429
-(When a command that is found to be a shell script is e)108 412.8 R -.15
+(When a command that is found to be a shell script is e)108 429.6 R -.15
(xe)-.15 G(cuted,).15 E F2(rbash)2.929 E F0 .429(turns of)2.929 F 2.929
(fa)-.25 G .729 -.15(ny r)-2.929 H .429(estrictions in the shell).15 F
-(spa)108 424.8 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E
-F1(SEE ALSO)72 441.6 Q F0(bash\(1\))108 453.6 Q(GNU Bash-4.0)72 768 Q
+(spa)108 441.6 Q(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E
+F1(SEE ALSO)72 458.4 Q F0(bash\(1\))108 470.4 Q(GNU Bash-4.0)72 768 Q
(2004 Apr 20)148.735 E(1)203.725 E 0 Cg EP
%%Trailer
end
diff --git a/doc/version.texi b/doc/version.texi
index 12462477..561a6d0e 100644
--- a/doc/version.texi
+++ b/doc/version.texi
@@ -1,11 +1,11 @@
@ignore
-Copyright (C) 1988-2018 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
@end ignore
-@set LASTCHANGE Fri Dec 7 09:49:07 EST 2018
+@set LASTCHANGE Thu Oct 29 16:18:54 EDT 2020
-@set EDITION 5.0
-@set VERSION 5.0
+@set EDITION 5.1
+@set VERSION 5.1
-@set UPDATED 7 December 2018
-@set UPDATED-MONTH December 2018
+@set UPDATED 29 October 2020
+@set UPDATED-MONTH October 2020
diff --git a/error.c b/error.c
index 417c902e..7df4b146 100644
--- a/error.c
+++ b/error.c
@@ -1,6 +1,6 @@
/* error.c -- Functions for handling errors. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,18 +52,18 @@ extern int errno;
# include "bashhist.h"
#endif
-extern int executing_line_number __P((void));
+extern int executing_line_number PARAMS((void));
#if defined (JOB_CONTROL)
extern pid_t shell_pgrp;
-extern int give_terminal_to __P((pid_t, int));
+extern int give_terminal_to PARAMS((pid_t, int));
#endif /* JOB_CONTROL */
#if defined (ARRAY_VARS)
extern const char * const bash_badsub_errmsg;
#endif
-static void error_prolog __P((int));
+static void error_prolog PARAMS((int));
/* The current maintainer of the shell. You change this in the
Makefile. */
@@ -201,7 +201,7 @@ report_error (format, va_alist)
if (exit_immediately_on_error)
{
if (last_command_exit_value == 0)
- last_command_exit_value = 1;
+ last_command_exit_value = EXECUTION_FAILURE;
exit_shell (last_command_exit_value);
}
}
diff --git a/error.h b/error.h
index 964c1123..30828095 100644
--- a/error.h
+++ b/error.h
@@ -1,6 +1,6 @@
/* error.h -- External declarations of functions appearing in error.c. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -24,50 +24,50 @@
#include "stdc.h"
/* Get the name of the shell or shell script for an error message. */
-extern char *get_name_for_error __P((void));
+extern char *get_name_for_error PARAMS((void));
/* Report an error having to do with FILENAME. */
-extern void file_error __P((const char *));
+extern void file_error PARAMS((const char *));
/* Report a programmer's error, and abort. Pass REASON, and ARG1 ... ARG5. */
-extern void programming_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void programming_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* General error reporting. Pass FORMAT and ARG1 ... ARG5. */
-extern void report_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void report_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Error messages for parts of the parser that don't call report_syntax_error */
-extern void parser_error __P((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
+extern void parser_error PARAMS((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
/* Report an unrecoverable error and exit. Pass FORMAT and ARG1 ... ARG5. */
-extern void fatal_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void fatal_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Report a system error, like BSD warn(3). */
-extern void sys_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void sys_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Report an internal error. */
-extern void internal_error __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void internal_error PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Report an internal warning. */
-extern void internal_warning __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void internal_warning PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
/* Report an internal informational notice. */
-extern void internal_inform __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+extern void internal_inform PARAMS((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)));
-extern void trace __P((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2)));
+extern char *strescape PARAMS((const char *));
+extern void itrace PARAMS((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2)));
+extern void trace PARAMS((const char *, ...)) __attribute__ ((__format__ (printf, 1, 2)));
/* Report an error having to do with command parsing or execution. */
-extern void command_error __P((const char *, int, int, int));
+extern void command_error PARAMS((const char *, int, int, int));
-extern char *command_errstr __P((int));
+extern char *command_errstr PARAMS((int));
/* Specific error message functions that eventually call report_error or
internal_error. */
-extern void err_badarraysub __P((const char *));
-extern void err_unboundvar __P((const char *));
-extern void err_readonly __P((const char *));
+extern void err_badarraysub PARAMS((const char *));
+extern void err_unboundvar PARAMS((const char *));
+extern void err_readonly PARAMS((const char *));
#endif /* !_ERROR_H_ */
diff --git a/eval.c b/eval.c
index f02d6e40..1d967da1 100644
--- a/eval.c
+++ b/eval.c
@@ -1,6 +1,6 @@
/* eval.c -- reading and evaluating commands. */
-/* Copyright (C) 1996-2011 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -48,12 +48,8 @@
# include "bashhist.h"
#endif
-#if defined (HAVE_POSIX_SIGNALS)
-extern sigset_t top_level_mask;
-#endif
-
-static void send_pwd_to_eterm __P((void));
-static sighandler alrm_catcher __P((int));
+static void send_pwd_to_eterm PARAMS((void));
+static sighandler alrm_catcher PARAMS((int));
/* Read and execute commands until EOF is reached. This assumes that
the input source has already been initialized. */
@@ -108,7 +104,7 @@ reader_loop ()
leave existing non-zero values (e.g., > 128 on signal)
alone. */
if (last_command_exit_value == 0)
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
if (subshell_environment)
{
current_command = (COMMAND *)NULL;
@@ -121,9 +117,8 @@ reader_loop ()
dispose_command (current_command);
current_command = (COMMAND *)NULL;
}
-#if defined (HAVE_POSIX_SIGNALS)
- sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
-#endif
+
+ restore_sigmask ();
break;
default:
@@ -144,7 +139,7 @@ reader_loop ()
{
if (interactive_shell == 0 && read_but_dont_execute)
{
- last_command_exit_value = EXECUTION_SUCCESS;
+ set_exit_status (EXECUTION_SUCCESS);
dispose_command (global_command);
global_command = (COMMAND *)NULL;
}
@@ -242,8 +237,11 @@ static sighandler
alrm_catcher(i)
int i;
{
- printf (_("\007timed out waiting for input: auto-logout\n"));
- fflush (stdout);
+ char *msg;
+
+ msg = _("\007timed out waiting for input: auto-logout\n");
+ write (1, msg, strlen (msg));
+
bash_logout (); /* run ~/.bash_logout if this is a login shell */
jump_to_top_level (EXITPROG);
SIGRETURN (0);
@@ -264,15 +262,58 @@ send_pwd_to_eterm ()
free (f);
}
+#if defined (ARRAY_VARS)
+/* Caller ensures that A has a non-zero number of elements */
+int
+execute_array_command (a, v)
+ ARRAY *a;
+ void *v;
+{
+ char *tag;
+ char **argv;
+ int argc, i;
+
+ tag = (char *)v;
+ argc = 0;
+ argv = array_to_argv (a, &argc);
+ for (i = 0; i < argc; i++)
+ {
+ if (argv[i] && argv[i][0])
+ execute_variable_command (argv[i], tag);
+ }
+ strvec_dispose (argv);
+ return 0;
+}
+#endif
+
static void
execute_prompt_command ()
{
char *command_to_execute;
+ SHELL_VAR *pcv;
+#if defined (ARRAY_VARS)
+ ARRAY *pcmds;
+#endif
- command_to_execute = get_string_value ("PROMPT_COMMAND");
- if (command_to_execute)
+ pcv = find_variable ("PROMPT_COMMAND");
+ if (pcv == 0 || var_isset (pcv) == 0 || invisible_p (pcv))
+ return;
+#if defined (ARRAY_VARS)
+ if (array_p (pcv))
+ {
+ if ((pcmds = array_cell (pcv)) && array_num_elements (pcmds) > 0)
+ execute_array_command (pcmds, "PROMPT_COMMAND");
+ return;
+ }
+ else if (assoc_p (pcv))
+ return; /* currently don't allow associative arrays here */
+#endif
+
+ command_to_execute = value_cell (pcv);
+ if (command_to_execute && *command_to_execute)
execute_variable_command (command_to_execute, "PROMPT_COMMAND");
}
+
/* Call the YACC-generated parser and return the status of the parse.
Input is read from the current input stream (bash_input). yyparse
leaves the parsed command in the global variable GLOBAL_COMMAND.
@@ -287,13 +328,16 @@ 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. */
+ is set then its value (array or string) is the command(s) to execute. */
/* 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)
{
- execute_prompt_command ();
+#if defined (READLINE)
+ if (no_line_editing || (bash_input.type == st_stdin && parser_will_prompt ()))
+#endif
+ execute_prompt_command ();
if (running_under_emacs == 2)
send_pwd_to_eterm (); /* Yuck */
diff --git a/examples/functions/autoload.v2 b/examples/functions/autoload.v2
index e8f34335..e29c6958 100644
--- a/examples/functions/autoload.v2
+++ b/examples/functions/autoload.v2
@@ -29,7 +29,7 @@ _aindex=0
#
# Declare a function ($1) to be autoloaded from a file ($2) when it is first
# called. This defines a `temporary' function that will `.' the file
-# containg the real function definition, then execute that new definition with
+# containing the real function definition, then execute that new definition with
# the arguments given to this `fake' function. The autoload function defined
# by the file and the file itself *must* be named identically.
#
diff --git a/examples/functions/autoload.v4 b/examples/functions/autoload.v4
index a172e612..7f60563b 100644
--- a/examples/functions/autoload.v4
+++ b/examples/functions/autoload.v4
@@ -383,7 +383,7 @@ OPTIONS
'theCharCount=\$(wc -c \$theFuncFile)'
- for each funcion and
+ for each function and
if \$theCharCount < \$AUTOLOAD_SHIM_OVERHEAD
@@ -416,7 +416,7 @@ NOTES
backticks or $(), or in a script that is not being sourced into the
current environment. If you have not previously called the function
in question at your command line or in a script that was sourced into
- the current envirnoment, then the various subshells are going to
+ the current environment, then the various subshells are going to
encounter the shim and replace with the real code before executing.
Remember, however, that environment modifications that occur in a
@@ -490,9 +490,9 @@ NOTES
matter how hard you try, your autoloaded functions will be
unavailable to you, even if you run 'autoload -x -f'. The typical
condition for this is starting up not a subshell, but a brand new
- DIFFERENT shell. And the typical example of this is git extentions.
+ DIFFERENT shell. And the typical example of this is git extensions.
- At the time of this writing, git extentions work by taking a command
+ At the time of this writing, git extensions work by taking a command
'git foo' and looking for a file 'git-foo' on the path. 'git' then
executes 'git-foo' in a new shell - it executes your command in
/bin/sh. That's not a subshell of your process. It will not get your
diff --git a/examples/functions/csh-compat b/examples/functions/csh-compat
index b8dcf8f7..54c8488c 100644
--- a/examples/functions/csh-compat
+++ b/examples/functions/csh-compat
@@ -1,4 +1,4 @@
-# C-shell compatabilty package.
+# C-shell compatibilty package.
# setenv VAR VALUE
function setenv ()
{
diff --git a/examples/functions/isnum2 b/examples/functions/isnum2
index 583e3749..b21974db 100644
--- a/examples/functions/isnum2
+++ b/examples/functions/isnum2
@@ -20,7 +20,7 @@
isnum2()
{
case "$1" in
- '[-+]' | '') return 1;; # empty or bare `-' or `+'
+ [-+] | '') return 1;; # empty or bare `-' or `+'
[-+]*[!0-9]*) return 1;; # non-digit with leading sign
[-+]*) return 0;; # OK
*[!0-9]*) return 1;; # non-digit
diff --git a/examples/functions/shcat b/examples/functions/shcat
index c5d3d630..84f0391e 100644
--- a/examples/functions/shcat
+++ b/examples/functions/shcat
@@ -1,6 +1,6 @@
shcat()
{
- while read -r line
+ while IFS= read -r line
do
echo "$line"
done
diff --git a/examples/functions/shcat2 b/examples/functions/shcat2
index 6fe90f40..8ceff330 100644
--- a/examples/functions/shcat2
+++ b/examples/functions/shcat2
@@ -1,8 +1,8 @@
shcat()
{
- while read -r line
+ while read -r
do
- echo "$line"
+ echo "$REPLY"
done
}
diff --git a/examples/functions/sort-pos-params b/examples/functions/sort-pos-params
index 3fbf7dba..95acd85f 100644
--- a/examples/functions/sort-pos-params
+++ b/examples/functions/sort-pos-params
@@ -17,7 +17,7 @@
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-# Sort the positional paramters.
+# Sort the positional parameters.
# Make sure the positional parameters are passed as arguments to the function.
# If -u is the first arg, remove duplicate array members.
sort_posparams()
diff --git a/examples/loadables/Makefile.in b/examples/loadables/Makefile.in
index cc3d3a7f..be46121b 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-2015 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019 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
@@ -76,7 +76,7 @@ INTL_BUILDDIR = ${LIBBUILD}/intl
INTL_INC = @INTL_INC@
LIBINTL_H = @LIBINTL_H@
-CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CFLAGS)
+CCFLAGS = $(DEFS) $(LOCAL_DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(CFLAGS)
#
# These values are generated for configure by ${topdir}/support/shobj-conf.
@@ -101,9 +101,10 @@ INC = -I. -I.. -I$(topdir) -I$(topdir)/lib -I$(topdir)/builtins -I${srcdir} \
ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \
- tty pathchk tee head mkdir rmdir printenv id whoami \
- uname sync push ln unlink realpath strftime mypid setpgid seq
-OTHERPROG = necho hello cat pushd stat rm
+ tty pathchk tee head mkdir rmdir mkfifo mktemp printenv id whoami \
+ uname sync push ln unlink realpath strftime mypid setpgid seq rm \
+ accept csv cut
+OTHERPROG = necho hello cat pushd stat asort
all: $(SHOBJ_STATUS)
@@ -133,6 +134,9 @@ hello: hello.o
truefalse: truefalse.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ truefalse.o $(SHOBJ_LIBS)
+accept: accept.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ accept.o $(SHOBJ_LIBS)
+
sleep: sleep.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ sleep.o $(SHOBJ_LIBS)
@@ -175,6 +179,12 @@ mkdir: mkdir.o
rmdir: rmdir.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ rmdir.o $(SHOBJ_LIBS)
+mkfifo: mkfifo.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mkfifo.o $(SHOBJ_LIBS)
+
+mktemp: mktemp.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ mktemp.o $(SHOBJ_LIBS)
+
head: head.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ head.o $(SHOBJ_LIBS)
@@ -205,6 +215,12 @@ unlink: unlink.o
realpath: realpath.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ realpath.o $(SHOBJ_LIBS)
+csv: csv.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ csv.o $(SHOBJ_LIBS)
+
+cut: cut.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ cut.o $(SHOBJ_LIBS)
+
strftime: strftime.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ strftime.o $(SHOBJ_LIBS)
@@ -217,6 +233,9 @@ setpgid: setpgid.o
stat: stat.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS)
+asort: asort.o
+ $(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ asort.o $(SHOBJ_LIBS)
+
# pushd is a special case. We use the same source that the builtin version
# uses, with special compilation options.
#
@@ -272,6 +291,7 @@ uninstall: uninstall-$(SHOBJ_STATUS)
print.o: print.c
truefalse.o: truefalse.c
+accept.o: accept.c
sleep.o: sleep.c
finfo.o: finfo.c
logname.o: logname.c
@@ -285,6 +305,8 @@ rmdir.o: rmdir.c
necho.o: necho.c
hello.o: hello.c
cat.o: cat.c
+csv.o: csv.c
+cut.o: cut.c
printenv.o: printenv.c
id.o: id.c
whoami.o: whoami.c
@@ -292,9 +314,11 @@ uname.o: uname.c
sync.o: sync.c
push.o: push.c
mkdir.o: mkdir.c
+mktemp.o: mktemp.c
realpath.o: realpath.c
strftime.o: strftime.c
setpgid.o: setpgid.c
stat.o: stat.c
fdflags.o: fdflags.c
seq.o: seq.c
+asort.o: asort.c
diff --git a/examples/loadables/README b/examples/loadables/README
index f9bcfac6..6820c960 100644
--- a/examples/loadables/README
+++ b/examples/loadables/README
@@ -41,7 +41,7 @@ without having to search for the right CFLAGS and LDFLAGS.
basename.c Return non-directory portion of pathname.
cat.c cat(1) replacement with no options - the way cat was intended.
dirname.c Return directory portion of pathname.
-fdflags.c Change the flag associated with one of bash's open file desriptors.
+fdflags.c Change the flag associated with one of bash's open file descriptors.
finfo.c Print file info.
head.c Copy first part of files.
hello.c Obligatory "Hello World" / sample loadable.
diff --git a/examples/loadables/accept.c b/examples/loadables/accept.c
new file mode 100644
index 00000000..54cf38c8
--- /dev/null
+++ b/examples/loadables/accept.c
@@ -0,0 +1,234 @@
+/* accept - listen for and accept a remote network connection on a given port */
+
+/*
+ Copyright (C) 2020 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash.
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include "bashtypes.h"
+#include <errno.h>
+#include <time.h>
+#include "typemax.h"
+
+#include <sys/socket.h>
+#include <arpa/inet.h>
+#include <netinet/in.h>
+
+#include "loadables.h"
+
+static int accept_bind_variable (char *, int);
+
+int
+accept_builtin (list)
+ WORD_LIST *list;
+{
+ WORD_LIST *l;
+ SHELL_VAR *v;
+ intmax_t iport;
+ int opt;
+ char *tmoutarg, *fdvar, *rhostvar, *rhost;
+ unsigned short uport;
+ int servsock, clisock;
+ struct sockaddr_in server, client;
+ socklen_t clientlen;
+ struct timeval timeval;
+ struct linger linger = { 0, 0 };
+
+ rhostvar = tmoutarg = fdvar = rhost = (char *)NULL;
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "r:t:v:")) != -1)
+ {
+ switch (opt)
+ {
+ case 'r':
+ rhostvar = list_optarg;
+ break;
+ case 't':
+ tmoutarg = list_optarg;
+ break;
+ case 'v':
+ fdvar = list_optarg;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+
+ list = loptend;
+
+ /* Validate input and variables */
+ if (tmoutarg)
+ {
+ long ival, uval;
+ opt = uconvert (tmoutarg, &ival, &uval, (char **)0);
+ if (opt == 0 || ival < 0 || uval < 0)
+ {
+ builtin_error ("%s: invalid timeout specification", tmoutarg);
+ return (EXECUTION_FAILURE);
+ }
+ timeval.tv_sec = ival;
+ timeval.tv_usec = uval;
+ /* XXX - should we warn if ival == uval == 0 ? */
+ }
+
+ if (list == 0)
+ {
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+
+ if (legal_number (list->word->word, &iport) == 0 || iport < 0 || iport > TYPE_MAXIMUM (unsigned short))
+ {
+ builtin_error ("%s: invalid port number", list->word->word);
+ return (EXECUTION_FAILURE);
+ }
+ uport = (unsigned short)iport;
+
+ if (fdvar == 0)
+ fdvar = "ACCEPT_FD";
+
+ unbind_variable (fdvar);
+ if (rhostvar)
+ unbind_variable (rhostvar);
+
+ if ((servsock = socket (AF_INET, SOCK_STREAM, IPPROTO_IP)) < 0)
+ {
+ builtin_error ("cannot create socket: %s", strerror (errno));
+ return (EXECUTION_FAILURE);
+ }
+
+ memset ((char *)&server, 0, sizeof (server));
+ server.sin_family = AF_INET;
+ server.sin_port = htons(uport);
+ server.sin_addr.s_addr = htonl(INADDR_ANY);
+
+ if (bind (servsock, (struct sockaddr *)&server, sizeof (server)) < 0)
+ {
+ builtin_error ("socket bind failure: %s", strerror (errno));
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
+
+ opt = 1;
+ setsockopt (servsock, SOL_SOCKET, SO_REUSEADDR, (void *)&opt, sizeof (opt));
+ setsockopt (servsock, SOL_SOCKET, SO_LINGER, (void *)&linger, sizeof (linger));
+
+ if (listen (servsock, 1) < 0)
+ {
+ builtin_error ("listen failure: %s", strerror (errno));
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (tmoutarg)
+ {
+ fd_set iofds;
+
+ FD_ZERO(&iofds);
+ FD_SET(servsock, &iofds);
+
+ opt = select (servsock+1, &iofds, 0, 0, &timeval);
+ if (opt < 0)
+ builtin_error ("select failure: %s", strerror (errno));
+ if (opt <= 0)
+ {
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
+ }
+
+ clientlen = sizeof (client);
+ if ((clisock = accept (servsock, (struct sockaddr *)&client, &clientlen)) < 0)
+ {
+ builtin_error ("client accept failure: %s", strerror (errno));
+ close (servsock);
+ return (EXECUTION_FAILURE);
+ }
+
+ close (servsock);
+
+ accept_bind_variable (fdvar, clisock);
+ if (rhostvar)
+ {
+ rhost = inet_ntoa (client.sin_addr);
+ v = builtin_bind_variable (rhostvar, rhost, 0);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ builtin_error ("%s: cannot set variable", rhostvar);
+ }
+
+ return (EXECUTION_SUCCESS);
+}
+
+static int
+accept_bind_variable (varname, intval)
+ char *varname;
+ int intval;
+{
+ SHELL_VAR *v;
+ char ibuf[INT_STRLEN_BOUND (int) + 1], *p;
+
+ p = fmtulong (intval, 10, ibuf, sizeof (ibuf), 0);
+ v = builtin_bind_variable (varname, p, 0);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ builtin_error ("%s: cannot set variable", varname);
+ return (v != 0);
+}
+
+char *accept_doc[] = {
+ "Accept a network connection on a specified port.",
+ ""
+ "This builtin allows a bash script to act as a TCP/IP server.",
+ "",
+ "Options, if supplied, have the following meanings:",
+ " -t timeout wait TIMEOUT seconds for a connection. TIMEOUT may",
+ " be a decimal number including a fractional portion",
+ " -v varname store the numeric file descriptor of the connected",
+ " socket into VARNAME. The default VARNAME is ACCEPT_FD",
+ " -r rhost store the IP address of the remote host into the shell",
+ " variable RHOST, in dotted-decimal notation",
+ "",
+ "If successful, the shell variable ACCEPT_FD, or the variable named by the",
+ "-v option, will be set to the fd of the connected socket, suitable for",
+ "use as 'read -u$ACCEPT_FD'. RHOST, if supplied, will hold the IP address",
+ "of the remote client. The return status is 0.",
+ "",
+ "On failure, the return status is 1 and ACCEPT_FD (or VARNAME) and RHOST,",
+ "if supplied, will be unset.",
+ "",
+ "The server socket fd will be closed before accept returns.",
+ (char *) NULL
+};
+
+struct builtin accept_struct = {
+ "accept", /* builtin name */
+ accept_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ accept_doc, /* array of long documentation strings. */
+ "accept [-t timeout] [-v varname] [-r addrvar ] port", /* usage synopsis; becomes short_doc */
+ 0 /* reserved for internal use */
+};
diff --git a/examples/loadables/asort.c b/examples/loadables/asort.c
new file mode 100644
index 00000000..e847ef86
--- /dev/null
+++ b/examples/loadables/asort.c
@@ -0,0 +1,279 @@
+/*
+ Copyright (C) 2020 Free Software Foundation, Inc.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+#include <stdlib.h>
+#include <string.h>
+#include <inttypes.h>
+
+#include "bashtypes.h"
+#include "shell.h"
+#include "builtins.h"
+#include "common.h"
+#include "xmalloc.h"
+#include "bashgetopt.h"
+
+typedef struct sort_element {
+ ARRAY_ELEMENT *v; // used when sorting array in-place
+ char *key; // used when sorting assoc array
+ char *value; // points to value of array element or assoc entry
+ double num; // used for numeric sort
+} sort_element;
+
+static int reverse_flag;
+static int numeric_flag;
+
+static int
+compare(const void *p1, const void *p2) {
+ const sort_element e1 = *(sort_element *) p1;
+ const sort_element e2 = *(sort_element *) p2;
+
+ if (numeric_flag) {
+ if (reverse_flag)
+ return (e2.num > e1.num) ? 1 : (e2.num < e1.num) ? -1 : 0;
+ else
+ return (e1.num > e2.num) ? 1 : (e1.num < e2.num) ? -1 : 0;
+ }
+ else {
+ if (reverse_flag)
+ return strcoll(e2.value, e1.value);
+ else
+ return strcoll(e1.value, e2.value);
+ }
+}
+
+static int
+sort_index(SHELL_VAR *dest, SHELL_VAR *source) {
+ HASH_TABLE *hash;
+ BUCKET_CONTENTS *bucket;
+ sort_element *sa;
+ ARRAY *array, *dest_array;
+ ARRAY_ELEMENT *ae;
+ size_t i, j, n;
+ char ibuf[INT_STRLEN_BOUND (intmax_t) + 1]; // used by fmtulong
+ char *key;
+
+ dest_array = array_cell(dest);
+
+ if (assoc_p(source)) {
+ hash = assoc_cell(source);
+ n = hash->nentries;
+ sa = xmalloc(n * sizeof(sort_element));
+ i = 0;
+ for ( j = 0; j < hash->nbuckets; ++j ) {
+ bucket = hash->bucket_array[j];
+ while ( bucket ) {
+ sa[i].v = NULL;
+ sa[i].key = bucket->key;
+ if ( numeric_flag )
+ sa[i].num = strtod(bucket->data, NULL);
+ else
+ sa[i].value = bucket->data;
+ i++;
+ bucket = bucket->next;
+ }
+ }
+ }
+ else {
+ array = array_cell(source);
+ n = array_num_elements(array);
+ sa = xmalloc(n * sizeof(sort_element));
+ i = 0;
+
+ for (ae = element_forw(array->head); ae != array->head; ae = element_forw(ae)) {
+ sa[i].v = ae;
+ if (numeric_flag)
+ sa[i].num = strtod(element_value(ae), NULL);
+ else
+ sa[i].value = element_value(ae);
+ i++;
+ }
+ }
+
+ // sanity check
+ if ( i != n ) {
+ builtin_error("%s: corrupt array", source->name);
+ return EXECUTION_FAILURE;
+ }
+
+ qsort(sa, n, sizeof(sort_element), compare);
+
+ array_flush(dest_array);
+
+ for ( i = 0; i < n; ++i ) {
+ if ( assoc_p(source) )
+ key = sa[i].key;
+ else
+ key = fmtulong((long unsigned)sa[i].v->ind, 10, ibuf, sizeof(ibuf), 0);
+
+ array_insert(dest_array, i, key);
+ }
+
+ return EXECUTION_SUCCESS;
+}
+
+static int
+sort_inplace(SHELL_VAR *var) {
+ size_t i, n;
+ ARRAY *a;
+ ARRAY_ELEMENT *ae;
+ sort_element *sa = 0;
+
+ a = array_cell(var);
+ n = array_num_elements(a);
+
+ if ( n == 0 )
+ return EXECUTION_SUCCESS;
+
+ sa = xmalloc(n * sizeof(sort_element));
+
+ i = 0;
+ for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
+ sa[i].v = ae;
+ if (numeric_flag)
+ sa[i].num = strtod(element_value(ae), NULL);
+ else
+ sa[i].value = element_value(ae);
+ i++;
+ }
+
+ // sanity check
+ if ( i != n ) {
+ builtin_error("%s: corrupt array", var->name);
+ return EXECUTION_FAILURE;
+ }
+
+ qsort(sa, n, sizeof(sort_element), compare);
+
+ // for in-place sort, simply "rewire" the array elements
+ sa[0].v->prev = sa[n-1].v->next = a->head;
+ a->head->next = sa[0].v;
+ a->head->prev = sa[n-1].v;
+ a->max_index = n - 1;
+ for (i = 0; i < n; i++) {
+ sa[i].v->ind = i;
+ if (i > 0)
+ sa[i].v->prev = sa[i-1].v;
+ if (i < n - 1)
+ sa[i].v->next = sa[i+1].v;
+ }
+ xfree(sa);
+ return EXECUTION_SUCCESS;
+}
+
+int
+asort_builtin(WORD_LIST *list) {
+ SHELL_VAR *var, *var2;
+ char *word;
+ int opt, ret;
+ int index_flag = 0;
+
+ numeric_flag = 0;
+ reverse_flag = 0;
+
+ reset_internal_getopt();
+ while ((opt = internal_getopt(list, "inr")) != -1) {
+ switch (opt) {
+ case 'i': index_flag = 1; break;
+ case 'n': numeric_flag = 1; break;
+ case 'r': reverse_flag = 1; break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage();
+ return (EX_USAGE);
+ }
+ }
+ list = loptend;
+
+ if (list == 0) {
+ builtin_usage();
+ return EX_USAGE;
+ }
+
+ if (legal_identifier (list->word->word) == 0) {
+ sh_invalidid (list->word->word);
+ return EXECUTION_FAILURE;
+ }
+
+ if ( index_flag ) {
+ if ( list->next == 0 || list->next->next ) {
+ builtin_usage();
+ return EX_USAGE;
+ }
+ if (legal_identifier (list->next->word->word) == 0) {
+ sh_invalidid (list->next->word->word);
+ return EXECUTION_FAILURE;
+ }
+ var = find_or_make_array_variable(list->word->word, 1);
+ if (var == 0)
+ return EXECUTION_FAILURE;
+ var2 = find_variable(list->next->word->word);
+ if ( !var2 || ( !array_p(var2) && !assoc_p(var2) ) ) {
+ builtin_error("%s: Not an array", list->next->word->word);
+ return EXECUTION_FAILURE;
+ }
+ return sort_index(var, var2);
+ }
+
+ while (list) {
+ word = list->word->word;
+ var = find_variable(word);
+ list = list->next;
+
+ if (var == 0 || array_p(var) == 0) {
+ builtin_error("%s: Not an array", word);
+ continue;
+ }
+ if (readonly_p(var) || noassign_p(var)) {
+ if (readonly_p(var))
+ err_readonly(word);
+ continue;
+ }
+
+ if ( (ret = sort_inplace(var)) != EXECUTION_SUCCESS )
+ return ret;
+ }
+ return EXECUTION_SUCCESS;
+
+}
+
+char *asort_doc[] = {
+ "Sort arrays in-place.",
+ "",
+ "Options:",
+ " -n compare according to string numerical value",
+ " -r reverse the result of comparisons",
+ " -i sort using indices/keys",
+ "",
+ "If -i is supplied, SOURCE is not sorted in-place, but the indices (or keys",
+ "if associative) of SOURCE, after sorting it by its values, are placed as",
+ "values in the indexed array DEST",
+ "",
+ "Associative arrays may not be sorted in-place.",
+ "",
+ "Exit status:",
+ "Return value is zero unless an error happened (like invalid variable name",
+ "or readonly array).",
+ (char *)NULL
+};
+
+struct builtin asort_struct = {
+ "asort",
+ asort_builtin,
+ BUILTIN_ENABLED,
+ asort_doc,
+ "asort [-nr] array ... or asort [-nr] -i dest source",
+ 0
+};
diff --git a/examples/loadables/basename.c b/examples/loadables/basename.c
index 0734322d..29dd1a6d 100644
--- a/examples/loadables/basename.c
+++ b/examples/loadables/basename.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -39,15 +39,14 @@ basename_builtin (list)
int slen, sufflen, off;
char *string, *suffix, *fn;
+ if (no_options (list))
+ return (EX_USAGE);
+ list = loptend;
if (list == 0)
{
builtin_usage ();
return (EX_USAGE);
- }
-
- if (no_options (list))
- return (EX_USAGE);
- list = loptend;
+ }
string = list->word->word;
suffix = (char *)NULL;
diff --git a/examples/loadables/csv.c b/examples/loadables/csv.c
new file mode 100644
index 00000000..11228f1a
--- /dev/null
+++ b/examples/loadables/csv.c
@@ -0,0 +1,206 @@
+/* csv - process a line of csv data and populate an indexed array with the
+ fields */
+
+/*
+ Copyright (C) 2020 Free Software Foundation, Inc.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* See Makefile for compilation details. */
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+#include "bashansi.h"
+#include <stdio.h>
+
+#include "loadables.h"
+
+#define CSV_ARRAY_DEFAULT "CSV"
+
+#define NQUOTE 0
+#define DQUOTE 1
+
+/* Split LINE into comma-separated fields, storing each field into a separate
+ element of array variable CSV, starting at index 0. The format of LINE is
+ as described in RFC 4180. */
+static int
+csvsplit (csv, line)
+ SHELL_VAR *csv;
+ char *line;
+{
+ arrayind_t ind;
+ char *field, *prev, *buf, *xbuf;
+ int delim, qstate;
+ int b, rval;
+
+ xbuf = 0;
+ ind = 0;
+ field = prev = line;
+
+ do
+ {
+ if (*prev == '"')
+ {
+ if (xbuf == 0)
+ xbuf = xmalloc (strlen (prev) + 1);
+ buf = xbuf;
+ b = 0;
+ qstate = DQUOTE;
+ for (field = ++prev; *field; field++)
+ {
+ if (qstate == DQUOTE && *field == '"' && field[1] == '"')
+ buf[b++] = *field++; /* skip double quote */
+ else if (qstate == DQUOTE && *field == '"')
+ qstate = NQUOTE;
+ else if (qstate == NQUOTE && *field == ',')
+ break;
+ else
+ /* This copies any text between a closing double quote and the
+ delimiter. If you want to change that, make sure to do the
+ copy only if qstate == DQUOTE. */
+ buf[b++] = *field;
+ }
+ buf[b] = '\0';
+ }
+ else
+ {
+ buf = prev;
+ field = prev + strcspn (prev, ",");
+ }
+
+ delim = *field;
+ *field = '\0';
+
+ bind_array_element (csv, ind, buf, 0);
+ ind++;
+
+ *field = delim;
+
+ if (delim == ',')
+ prev = field + 1;
+ }
+ while (delim == ',');
+
+ if (xbuf)
+ free (xbuf);
+
+ return (rval = ind); /* number of fields */
+}
+
+int
+csv_builtin (list)
+ WORD_LIST *list;
+{
+ int opt, rval;
+ char *array_name, *csvstring;
+ SHELL_VAR *v;
+
+ array_name = 0;
+ rval = EXECUTION_SUCCESS;
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "a:")) != -1)
+ {
+ switch (opt)
+ {
+ case 'a':
+ array_name = list_optarg;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+ list = loptend;
+
+ if (array_name == 0)
+ array_name = CSV_ARRAY_DEFAULT;
+
+ if (legal_identifier (array_name) == 0)
+ {
+ sh_invalidid (array_name);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (list == 0)
+ {
+ builtin_error ("csv string argument required");
+ return (EX_USAGE);
+ }
+
+ v = find_or_make_array_variable (array_name, 1);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ {
+ if (v && readonly_p (v))
+ err_readonly (array_name);
+ return (EXECUTION_FAILURE);
+ }
+ else if (array_p (v) == 0)
+ {
+ builtin_error ("%s: not an indexed array", array_name);
+ return (EXECUTION_FAILURE);
+ }
+ if (invisible_p (v))
+ VUNSETATTR (v, att_invisible);
+ array_flush (array_cell (v));
+
+ csvstring = list->word->word;
+
+ if (csvstring == 0 || *csvstring == 0)
+ return (EXECUTION_SUCCESS);
+
+ opt = csvsplit (v, csvstring);
+ /* Maybe do something with OPT here, it's the number of fields */
+
+ return (rval);
+}
+
+/* Called when builtin is enabled and loaded from the shared object. If this
+ function returns 0, the load fails. */
+int
+csv_builtin_load (name)
+ char *name;
+{
+ return (1);
+}
+
+/* Called when builtin is disabled. */
+void
+csv_builtin_unload (name)
+ char *name;
+{
+}
+
+char *csv_doc[] = {
+ "Read comma-separated fields from a string.",
+ "",
+ "Parse STRING, a line of comma-separated values, into individual fields,",
+ "and store them into the indexed array ARRAYNAME starting at index 0.",
+ "If ARRAYNAME is not supplied, \"CSV\" is the default array name.",
+ (char *)NULL
+};
+
+struct builtin csv_struct = {
+ "csv", /* builtin name */
+ csv_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ csv_doc, /* array of long documentation strings. */
+ "csv [-a ARRAY] string", /* usage synopsis; becomes short_doc */
+ 0 /* reserved for internal use */
+};
diff --git a/examples/loadables/cut.c b/examples/loadables/cut.c
new file mode 100644
index 00000000..ad9a8335
--- /dev/null
+++ b/examples/loadables/cut.c
@@ -0,0 +1,625 @@
+/* cut,lcut - extract specified fields from a line and assign them to an array
+ or print them to the standard output */
+
+/*
+ Copyright (C) 2020 Free Software Foundation, Inc.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+/* See Makefile for compilation details. */
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+#include "bashansi.h"
+#include <stdio.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#include "loadables.h"
+#include "shmbutil.h"
+
+#define CUT_ARRAY_DEFAULT "CUTFIELDS"
+
+#define NOPOS -2 /* sentinel for unset startpos/endpos */
+
+#define BOL 0
+#define EOL INT_MAX
+#define NORANGE -1 /* just a position, no range */
+
+#define BFLAG (1 << 0)
+#define CFLAG (1 << 1)
+#define DFLAG (1 << 2)
+#define FFLAG (1 << 3)
+#define SFLAG (1 << 4)
+
+struct cutpos
+{
+ int startpos, endpos; /* zero-based, correction done in getlist() */
+};
+
+struct cutop
+{
+ int flags;
+ int delim;
+ int npos;
+ struct cutpos *poslist;
+};
+
+static int
+poscmp (a, b)
+ void *a, *b;
+{
+ struct cutpos *p1, *p2;
+
+ p1 = (struct cutpos *)a;
+ p2 = (struct cutpos *)b;
+ return (p1->startpos - p2->startpos);
+}
+
+static int
+getlist (arg, opp)
+ char *arg;
+ struct cutpos **opp;
+{
+ char *ntok, *ltok, *larg;
+ int s, e;
+ intmax_t num;
+ struct cutpos *poslist;
+ int npos, nsize;
+
+ poslist = 0;
+ nsize = npos = 0;
+ s = e = 0;
+ larg = arg;
+ while (ltok = strsep (&larg, ","))
+ {
+ if (*ltok == 0)
+ continue;
+
+ ntok = strsep (&ltok, "-");
+ if (*ntok == 0)
+ s = BOL;
+ else
+ {
+ if (legal_number (ntok, &num) == 0 || (int)num != num || num <= 0)
+ {
+ builtin_error ("%s: invalid list value", ntok);
+ *opp = poslist;
+ return -1;
+ }
+ s = num;
+ s--; /* fields are 1-based */
+ }
+ if (ltok == 0)
+ e = NORANGE;
+ else if (*ltok == 0)
+ e = EOL;
+ else
+ {
+ if (legal_number (ltok, &num) == 0 || (int)num != num || num <= 0)
+ {
+ builtin_error ("%s: invalid list value", ltok);
+ *opp = poslist;
+ return -1;
+ }
+ e = num;
+ e--;
+ if (e == s)
+ e = NORANGE;
+ }
+
+ if (npos == nsize)
+ {
+ nsize += 4;
+ poslist = (struct cutpos *)xrealloc (poslist, nsize * sizeof (struct cutpos));
+ }
+ poslist[npos].startpos = s;
+ poslist[npos].endpos = e;
+ npos++;
+ }
+ if (npos == 0)
+ {
+ builtin_error ("missing list of positions");
+ *opp = poslist;
+ return -1;
+ }
+
+ qsort (poslist, npos, sizeof(poslist[0]), poscmp);
+ *opp = poslist;
+
+ return npos;
+}
+
+static int
+cutbytes (v, line, ops)
+ SHELL_VAR *v;
+ char *line;
+ struct cutop *ops;
+{
+ arrayind_t ind;
+ char *buf, *bmap;
+ size_t llen;
+ int i, b, n, s, e;
+
+ llen = strlen (line);
+ buf = xmalloc (llen + 1);
+ bmap = xmalloc (llen + 1);
+ memset (bmap, 0, llen);
+
+ for (n = 0; n < ops->npos; n++)
+ {
+ s = ops->poslist[n].startpos; /* no translation needed yet */
+ e = ops->poslist[n].endpos;
+ if (e == NORANGE)
+ e = s;
+ else if (e == EOL || e >= llen)
+ e = llen - 1;
+ /* even if a column is specified multiple times, it will only be printed
+ once */
+ for (i = s; i <= e; i++)
+ bmap[i] = 1;
+ }
+
+ b = 0;
+ for (i = 0; i < llen; i++)
+ if (bmap[i])
+ buf[b++] = line[i];
+ buf[b] = 0;
+
+ if (v)
+ {
+ ind = 0;
+ bind_array_element (v, ind, buf, 0);
+ ind++;
+ }
+ else
+ printf ("%s\n", buf);
+
+ free (buf);
+ free (bmap);
+
+ return ind;
+}
+
+static int
+cutchars (v, line, ops)
+ SHELL_VAR *v;
+ char *line;
+ struct cutop *ops;
+{
+ arrayind_t ind;
+ char *buf, *bmap;
+ wchar_t *wbuf, *wb2;
+ size_t llen, wlen;
+ int i, b, n, s, e;
+
+ if (MB_CUR_MAX == 1)
+ return (cutbytes (v, line, ops));
+ if (locale_utf8locale && utf8_mbsmbchar (line) == 0)
+ return (cutbytes (v, line, ops));
+
+ llen = strlen (line);
+ wbuf = (wchar_t *)xmalloc ((llen + 1) * sizeof (wchar_t));
+
+ wlen = mbstowcs (wbuf, line, llen);
+ if (MB_INVALIDCH (wlen))
+ {
+ free (wbuf);
+ return (cutbytes (v, line, ops));
+ }
+
+ bmap = xmalloc (llen + 1);
+ memset (bmap, 0, llen);
+
+ for (n = 0; n < ops->npos; n++)
+ {
+ s = ops->poslist[n].startpos; /* no translation needed yet */
+ e = ops->poslist[n].endpos;
+ if (e == NORANGE)
+ e = s;
+ else if (e == EOL || e >= wlen)
+ e = wlen - 1;
+ /* even if a column is specified multiple times, it will only be printed
+ once */
+ for (i = s; i <= e; i++)
+ bmap[i] = 1;
+ }
+
+ wb2 = (wchar_t *)xmalloc ((wlen + 1) * sizeof (wchar_t));
+ b = 0;
+ for (i = 0; i < wlen; i++)
+ if (bmap[i])
+ wb2[b++] = wbuf[i];
+ wb2[b] = 0;
+
+ free (wbuf);
+
+ buf = bmap;
+ n = wcstombs (buf, wb2, llen);
+
+ if (v)
+ {
+ ind = 0;
+ bind_array_element (v, ind, buf, 0);
+ ind++;
+ }
+ else
+ printf ("%s\n", buf);
+
+ free (buf);
+ free (wb2);
+
+ return ind;
+}
+
+/* The basic strategy is to cut the line into fields using strsep, populate
+ an array of fields from 0..nf, then select those fields using the same
+ bitmap approach as cut{bytes,chars} and assign them to the array variable
+ V or print them on stdout. This function obeys SFLAG. */
+static int
+cutfields (v, line, ops)
+ SHELL_VAR *v;
+ char *line;
+ struct cutop *ops;
+{
+ arrayind_t ind;
+ char *buf, *bmap, *field, **fields, delim[2];
+ size_t llen, fsize;
+ int i, b, n, s, e, nf;
+
+ ind = 0;
+
+ delim[0] = ops->delim;
+ delim[1] = '\0';
+
+ fields = 0;
+ nf = 0;
+ fsize = 0;
+
+ field = buf = line;
+ do
+ {
+ field = strsep (&buf, delim); /* destructive */
+ if (nf == fsize)
+ {
+ fsize += 8;
+ fields = xrealloc (fields, fsize * sizeof (char *));
+ }
+ fields[nf] = field;
+ if (field)
+ nf++;
+ }
+ while (field);
+
+ if (nf == 1)
+ {
+ free (fields);
+ if (ops->flags & SFLAG)
+ return ind;
+ if (v)
+ {
+ bind_array_element (v, ind, line, 0);
+ ind++;
+ }
+ else
+ printf ("%s\n", line);
+ return ind;
+ }
+
+ bmap = xmalloc (nf + 1);
+ memset (bmap, 0, nf);
+
+ for (n = 0; n < ops->npos; n++)
+ {
+ s = ops->poslist[n].startpos; /* no translation needed yet */
+ e = ops->poslist[n].endpos;
+ if (e == NORANGE)
+ e = s;
+ else if (e == EOL || e >= nf)
+ e = nf - 1;
+ /* even if a column is specified multiple times, it will only be printed
+ once */
+ for (i = s; i <= e; i++)
+ bmap[i] = 1;
+ }
+
+ for (i = 1, b = 0; b < nf; b++)
+ {
+ if (bmap[b] == 0)
+ continue;
+ if (v)
+ {
+ bind_array_element (v, ind, fields[b], 0);
+ ind++;
+ }
+ else
+ {
+ if (i == 0)
+ putchar (ops->delim);
+ printf ("%s", fields[b]);
+ }
+ i = 0;
+ }
+ if (v == 0)
+ putchar ('\n');
+
+ return nf;
+}
+
+static int
+cutline (v, line, ops)
+ SHELL_VAR *v;
+ char *line;
+ struct cutop *ops;
+{
+ int rval;
+
+ if (ops->flags & BFLAG)
+ rval = cutbytes (v, line, ops);
+ else if (ops->flags & CFLAG)
+ rval = cutchars (v, line, ops);
+ else
+ rval = cutfields (v, line, ops);
+
+ return (rval >= 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
+}
+
+static int
+cutfile (v, list, ops)
+ SHELL_VAR *v;
+ WORD_LIST *list;
+ struct cutop *ops;
+{
+ int fd, unbuffered_read;
+ char *line, *b;
+ size_t llen;
+ WORD_LIST *l;
+ ssize_t n;
+
+ line = 0;
+ llen = 0;
+
+ l = list;
+ do
+ {
+ /* for each file */
+ if (l == 0 || (l->word->word[0] == '-' && l->word->word[1] == '\0'))
+ fd = 0;
+ else
+ fd = open (l->word->word, O_RDONLY);
+ if (fd < 0)
+ {
+ file_error (l->word->word);
+ return (EXECUTION_FAILURE);
+ }
+
+#ifndef __CYGWIN__
+ unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE);
+#else
+ unbuffered_read = 1;
+#endif
+
+ while ((n = zgetline (fd, &line, &llen, '\n', unbuffered_read)) != -1)
+ cutline (v, line, ops); /* can modify line */
+ if (fd > 0)
+ close (fd);
+
+ if (l)
+ l = l->next;
+ }
+ while (l);
+
+ free (line);
+ return EXECUTION_SUCCESS;
+}
+
+#define OPTSET(x) ((cutflags & (x)) ? 1 : 0)
+
+static int
+cut_internal (which, list)
+ int which; /* not used yet */
+ WORD_LIST *list;
+{
+ int opt, rval, cutflags, delim, npos;
+ char *array_name, *cutstring, *list_arg;
+ SHELL_VAR *v;
+ struct cutop op;
+ struct cutpos *poslist;
+
+ v = 0;
+ rval = EXECUTION_SUCCESS;
+
+ cutflags = 0;
+ array_name = 0;
+ list_arg = 0;
+ delim = '\t';
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "a:b:c:d:f:sn")) != -1)
+ {
+ switch (opt)
+ {
+ case 'a':
+ array_name = list_optarg;
+ break;
+ case 'b':
+ cutflags |= BFLAG;
+ list_arg = list_optarg;
+ break;
+ case 'c':
+ cutflags |= CFLAG;
+ list_arg = list_optarg;
+ break;
+ case 'd':
+ cutflags |= DFLAG;
+ delim = list_optarg[0];
+ if (delim == 0 || list_optarg[1])
+ {
+ builtin_error ("delimiter must be a single non-null character");
+ return (EX_USAGE);
+ }
+ break;
+ case 'f':
+ cutflags |= FFLAG;
+ list_arg = list_optarg;
+ break;
+ case 'n':
+ break;
+ case 's':
+ cutflags |= SFLAG;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+ list = loptend;
+
+ if (array_name && (legal_identifier (array_name) == 0))
+ {
+ sh_invalidid (array_name);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (list == 0 && which == 0)
+ {
+ builtin_error ("string argument required");
+ return (EX_USAGE);
+ }
+
+ /* options are mutually exclusive and one is required */
+ if ((OPTSET (BFLAG) + OPTSET (CFLAG) + OPTSET (FFLAG)) != 1)
+ {
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+
+ if ((npos = getlist (list_arg, &poslist)) < 0)
+ {
+ free (poslist);
+ return (EXECUTION_FAILURE);
+ }
+
+ if (array_name)
+ {
+ v = find_or_make_array_variable (array_name, 1);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ {
+ if (v && readonly_p (v))
+ err_readonly (array_name);
+ return (EXECUTION_FAILURE);
+ }
+ else if (array_p (v) == 0)
+ {
+ builtin_error ("%s: not an indexed array", array_name);
+ return (EXECUTION_FAILURE);
+ }
+ if (invisible_p (v))
+ VUNSETATTR (v, att_invisible);
+ array_flush (array_cell (v));
+ }
+
+ op.flags = cutflags;
+ op.delim = delim;
+ op.npos = npos;
+ op.poslist = poslist;
+
+ /* we implement cut as a builtin with a cutfile() function that opens each
+ filename in LIST as a filename (or `-' for stdin) and runs cutline on
+ every line in the file. */
+ if (which == 0)
+ {
+ cutstring = list->word->word;
+ if (cutstring == 0 || *cutstring == 0)
+ {
+ free (poslist);
+ return (EXECUTION_SUCCESS);
+ }
+ rval = cutline (v, cutstring, &op);
+ }
+ else
+ rval = cutfile (v, list, &op);
+
+ return (rval);
+}
+
+int
+lcut_builtin (list)
+ WORD_LIST *list;
+{
+ return (cut_internal (0, list));
+}
+
+int
+cut_builtin (list)
+ WORD_LIST *list;
+{
+ return (cut_internal (1, list));
+}
+
+char *lcut_doc[] = {
+ "Extract selected fields from a string.",
+ "",
+ "Select portions of LINE (as specified by LIST) and assign them to",
+ "elements of the indexed array ARRAY starting at index 0, or write",
+ "them to the standard output if -a is not specified.",
+ "",
+ "Items specified by LIST are either column positions or fields delimited",
+ "by a special character, and are described more completely in cut(1).",
+ "",
+ "Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
+ "field delimiter is specified by -d (default TAB). Column numbering",
+ "starts at 1.",
+ (char *)NULL
+};
+
+struct builtin lcut_struct = {
+ "lcut", /* builtin name */
+ lcut_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ lcut_doc, /* array of long documentation strings. */
+ "lcut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] line", /* usage synopsis; becomes short_doc */
+ 0 /* reserved for internal use */
+};
+
+char *cut_doc[] = {
+ "Extract selected fields from each line of a file.",
+ "",
+ "Select portions of each line (as specified by LIST) from each FILE",
+ "and write them to the standard output. cut reads from the standard",
+ "input if no FILE arguments are specified or if a FILE argument is a",
+ "single hyphen.",
+ "",
+ "Items specified by LIST are either column positions or fields delimited",
+ "by a special character, and are described more completely in cut(1).",
+ "",
+ "Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
+ "field delimiter is specified by -d (default TAB). Column numbering",
+ "starts at 1.",
+ (char *)NULL
+};
+
+struct builtin cut_struct = {
+ "cut", /* builtin name */
+ cut_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ cut_doc, /* array of long documentation strings. */
+ "cut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] [file ...]", /* usage synopsis; becomes short_doc */
+ 0 /* reserved for internal use */
+};
diff --git a/examples/loadables/fdflags.c b/examples/loadables/fdflags.c
index f3094666..fbe52304 100644
--- a/examples/loadables/fdflags.c
+++ b/examples/loadables/fdflags.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 2017 Free Software Foundation, Inc.
+ Copyright (C) 2017,2018,2019 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -32,6 +32,10 @@
#include "loadables.h"
+#ifndef FD_CLOEXEC
+# define FD_CLOEXEC 1
+#endif
+
static const struct
{
const char *name;
@@ -40,37 +44,69 @@ static const struct
{
#ifdef O_APPEND
{ "append", O_APPEND },
+#else
+# define O_APPEND 0
#endif
#ifdef O_ASYNC
{ "async", O_ASYNC },
+#else
+# define O_ASYNC 0
#endif
#ifdef O_SYNC
{ "sync", O_SYNC },
+#else
+# define O_SYNC 0
#endif
#ifdef O_NONBLOCK
{ "nonblock", O_NONBLOCK },
+#else
+# define O_NONBLOCK 0
#endif
#ifdef O_FSYNC
{ "fsync", O_FSYNC },
+#else
+# define O_FSYNC 0
#endif
#ifdef O_DSYNC
{ "dsync", O_DSYNC },
+#else
+# define O_DSYNC 0
#endif
#ifdef O_RSYNC
{ "rsync", O_RSYNC },
+#else
+# define O_RSYNC 0
#endif
#ifdef O_ALT_IO
{ "altio", O_ALT_IO },
+#else
+# define O_ALT_IO 0
#endif
#ifdef O_DIRECT
{ "direct", O_DIRECT },
+#else
+# define O_DIRECT 0
#endif
#ifdef O_NOATIME
{ "noatime", O_NOATIME },
+#else
+# define O_NOATIME 0
#endif
#ifdef O_NOSIGPIPE
{ "nosigpipe", O_NOSIGPIPE },
+#else
+# define O_NOSIGPIPE 0
+#endif
+
+#ifndef O_CLOEXEC
+# define ALLFLAGS (O_APPEND|O_ASYNC|O_SYNC|O_NONBLOCK|O_FSYNC|O_DSYNC|\
+ O_RSYNC|O_ALT_IO|O_DIRECT|O_NOATIME|O_NOSIGPIPE)
+
+/* An unsed bit in the file status flags word we can use to pass around the
+ state of close-on-exec. */
+# define O_CLOEXEC ((~ALLFLAGS) ^ ((~ALLFLAGS) & ((~ALLFLAGS) - 1)))
#endif
+
#ifdef O_CLOEXEC
{ "cloexec", O_CLOEXEC },
#endif
@@ -199,10 +235,12 @@ setone(int fd, char *v, int verbose)
parseflags(v, &pos, &neg);
cloexec = -1;
+
if ((pos & O_CLOEXEC) && (f & O_CLOEXEC) == 0)
cloexec = FD_CLOEXEC;
if ((neg & O_CLOEXEC) && (f & O_CLOEXEC))
cloexec = 0;
+
if (cloexec != -1 && fcntl(fd, F_SETFD, cloexec) == -1)
builtin_error("can't set status for fd %d: %s", fd, strerror(errno));
diff --git a/examples/loadables/finfo.c b/examples/loadables/finfo.c
index 4273aa59..8c278c35 100644
--- a/examples/loadables/finfo.c
+++ b/examples/loadables/finfo.c
@@ -28,6 +28,12 @@
#endif
#include <sys/types.h>
+#ifdef MAJOR_IN_MKDEV
+# include <sys/mkdev.h>
+#endif
+#ifdef MAJOR_IN_SYSMACROS
+# include <sys/sysmacros.h>
+#endif
#include "posixstat.h"
#include <stdio.h>
#include <pwd.h>
@@ -334,13 +340,13 @@ int flags;
else
printf("%ld\n", st->st_ctime);
} else if (flags & OPT_DEV)
- printf("%d\n", st->st_dev);
+ printf("%lu\n", (unsigned long)st->st_dev);
else if (flags & OPT_INO)
printf("%lu\n", (unsigned long)st->st_ino);
else if (flags & OPT_FID)
- printf("%d:%lu\n", st->st_dev, (unsigned long)st->st_ino);
+ printf("%lu:%lu\n", (unsigned long)st->st_dev, (unsigned long)st->st_ino);
else if (flags & OPT_NLINK)
- printf("%d\n", st->st_nlink);
+ printf("%lu\n", (unsigned long)st->st_nlink);
else if (flags & OPT_LNKNAM) {
#ifdef S_ISLNK
b = xmalloc(4096);
diff --git a/examples/loadables/ln.c b/examples/loadables/ln.c
index 93764a35..874e9db8 100644
--- a/examples/loadables/ln.c
+++ b/examples/loadables/ln.c
@@ -3,7 +3,7 @@
/* See Makefile for compilation details. */
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -42,7 +42,7 @@
extern int errno;
#endif
-typedef int unix_link_syscall_t __P((const char *, const char *));
+typedef int unix_link_syscall_t PARAMS((const char *, const char *));
#define LN_SYMLINK 0x01
#define LN_UNLINK 0x02
diff --git a/examples/loadables/mkdir.c b/examples/loadables/mkdir.c
index b3811199..d5d39551 100644
--- a/examples/loadables/mkdir.c
+++ b/examples/loadables/mkdir.c
@@ -93,7 +93,7 @@ mkdir_builtin (list)
return (EXECUTION_FAILURE);
}
}
- else if (mode)
+ else /* symbolic mode */
{
/* initial bits are a=rwx; the mode argument modifies them */
omode = parse_symbolic_mode (mode, S_IRWXU | S_IRWXG | S_IRWXO);
diff --git a/examples/loadables/mkfifo.c b/examples/loadables/mkfifo.c
new file mode 100644
index 00000000..2bc4e98a
--- /dev/null
+++ b/examples/loadables/mkfifo.c
@@ -0,0 +1,146 @@
+/* mkfifo - make FIFOs */
+
+/* See Makefile for compilation details. */
+
+/*
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash.
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#include "bashtypes.h"
+#include "posixstat.h"
+#include <errno.h>
+#include <stdio.h>
+#include "bashansi.h"
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include "builtins.h"
+#include "shell.h"
+#include "bashgetopt.h"
+#include "common.h"
+
+#if !defined (errno)
+extern int errno;
+#endif
+
+#define ISOCTAL(c) ((c) >= '0' && (c) <= '7')
+
+extern int parse_symbolic_mode ();
+
+static int original_umask;
+
+int
+mkfifo_builtin (list)
+ WORD_LIST *list;
+{
+ int opt, mflag, omode, rval, nmode, basemode;
+ char *mode;
+ WORD_LIST *l;
+
+ mflag = 0;
+ mode = (char *)NULL;
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt(list, "m:")) != -1)
+ switch (opt)
+ {
+ case 'm':
+ mflag = 1;
+ mode = list_optarg;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage();
+ return (EX_USAGE);
+ }
+ list = loptend;
+
+ if (list == 0)
+ {
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+
+ basemode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH;
+ if (mode == NULL)
+ omode = basemode;
+ else if (ISOCTAL (*mode)) /* octal number */
+ {
+ omode = read_octal (mode);
+ if (omode < 0)
+ {
+ builtin_error ("invalid file mode: %s", mode);
+ return (EXECUTION_FAILURE);
+ }
+ }
+ else /* symbolic mode */
+ {
+ /* initial bits are a=rwx; the mode argument modifies them */
+ omode = parse_symbolic_mode (mode, basemode);
+ if (omode < 0)
+ {
+ builtin_error ("invalid file mode: %s", mode);
+ return (EXECUTION_FAILURE);
+ }
+ }
+
+ /* Make the new mode */
+ original_umask = umask (0);
+ umask (original_umask);
+
+ nmode = basemode & ~original_umask;
+ /* Adjust new mode based on mode argument */
+ nmode &= omode;
+
+ for (rval = EXECUTION_SUCCESS, l = list; l; l = l->next)
+ {
+ if (mkfifo (l->word->word, nmode) < 0)
+ {
+ builtin_error ("cannot create FIFO `%s': %s", l->word->word, strerror (errno));
+ rval = EXECUTION_FAILURE;
+ }
+ }
+ return rval;
+}
+
+
+char *mkfifo_doc[] = {
+ "Create FIFOs (named pipes).",
+ "",
+ "Make FIFOs. Create the FIFOs named as arguments, in",
+ "the order specified, using mode a=rw as modified by the current",
+ "umask (see `help umask'). The -m option causes the file permission",
+ "bits of the final FIFO to be MODE. The MODE argument may be",
+ "an octal number or a symbolic mode like that used by chmod(1). If",
+ "a symbolic mode is used, the operations are interpreted relative to",
+ "an initial mode of \"a=rw\". mkfifo returns 0 if the FIFOs are",
+ "umask, plus write and search permissions for the owner. mkdir",
+ "created successfully, and non-zero if an error occurs.",
+ (char *)NULL
+};
+
+struct builtin mkfifo_struct = {
+ "mkfifo",
+ mkfifo_builtin,
+ BUILTIN_ENABLED,
+ mkfifo_doc,
+ "mkfifo [-m mode] fifo_name [fifo_name ...]",
+ 0
+};
diff --git a/examples/loadables/mktemp.c b/examples/loadables/mktemp.c
new file mode 100644
index 00000000..1f7c9ad3
--- /dev/null
+++ b/examples/loadables/mktemp.c
@@ -0,0 +1,212 @@
+/* mktemp - create temporary file or directory */
+
+/*
+ Copyright (C) 2019 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash.
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <config.h>
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+
+#include <stdio.h>
+#include "bashansi.h"
+
+#include "loadables.h"
+
+#define DEFAULT_PREFIX "shtmp"
+
+int
+mktemp_builtin (list)
+ WORD_LIST *list;
+{
+ WORD_LIST *l;
+ int rval, opt, fd, mflags, base_mflags;
+ int dflag, qflag, tflag, uflag, onetime;
+ char *prefix, *varname, *filename, *template;
+ SHELL_VAR *v;
+
+ dflag = qflag = uflag = tflag = onetime = 0;
+ prefix = varname = 0;
+ rval = EXECUTION_SUCCESS;
+
+ reset_internal_getopt ();
+ while ((opt = internal_getopt (list, "dqut:v:")) != -1)
+ {
+ switch (opt)
+ {
+ case 'd':
+ dflag = 1;
+ break;
+ case 'q':
+ qflag = 1;
+ break;
+ case 't':
+ tflag = 1;
+ prefix = list_optarg;
+ break;
+ case 'u':
+ uflag = 1;
+ break;
+ case 'v':
+ varname = list_optarg;
+ break;
+ CASE_HELPOPT;
+ default:
+ builtin_usage ();
+ return (EX_USAGE);
+ }
+ }
+ list = loptend;
+
+ if (varname) /* check for validity, not readonly */
+ {
+ if (legal_identifier (varname) == 0)
+ {
+ if (qflag == 0)
+ sh_invalidid (varname);
+ return (EXECUTION_FAILURE);
+ }
+ v = find_variable (varname);
+ if (v && readonly_p (v))
+ {
+ if (qflag == 0)
+ sh_readonly (varname);
+ return (EXECUTION_FAILURE);
+ }
+ }
+
+ onetime = (list == 0); /* once through the loop, $TMPDIR/prefix.XXXXXX */
+
+ if (prefix == 0)
+ prefix = DEFAULT_PREFIX;
+ base_mflags = MT_USETMPDIR|MT_USERANDOM; /* USERANDOM not strictly needed */
+
+ while (list || onetime)
+ {
+ mflags = base_mflags;
+ onetime = 0;
+#if defined (USE_MKTEMP) && defined (USE_MKSTEMP)
+ if (list)
+ {
+ template = list->word->word;
+ mflags |= MT_TEMPLATE;
+ }
+#else
+ /* This is sub-optimal. */
+ if (list)
+ {
+ /* Treat the basename as a prefix */
+ template = strrchr (list->word->word, '/');
+ if (template)
+ template++;
+ else
+ template = list->word->word;
+ }
+#endif
+ else
+ template = prefix;
+
+ if (dflag)
+ {
+ filename = sh_mktmpdir (template, mflags);
+ if (filename == 0)
+ {
+ if (qflag == 0)
+ builtin_error ("%s: cannot create directory", template);
+ rval = EXECUTION_FAILURE;
+ }
+ else
+ {
+ if (uflag)
+ rmdir (filename);
+ printf ("%s\n", filename);
+ }
+ }
+ else /* filename */
+ {
+ fd = sh_mktmpfd (template, mflags, &filename);
+ if (fd < 0)
+ {
+ if (qflag == 0)
+ builtin_error ("%s: cannot create file", template);
+ rval = EXECUTION_FAILURE;
+ }
+ else
+ {
+ close (fd);
+ if (uflag)
+ unlink (filename);
+ printf ("%s\n", filename);
+ }
+ }
+
+ /* Assign variable if requested */
+ if (filename && varname)
+ {
+ v = builtin_bind_variable (varname, filename, 0);
+ if (v == 0 || readonly_p (v) || noassign_p (v))
+ {
+ builtin_error ("%s: cannot set variable", varname);
+ rval = EXECUTION_FAILURE;
+ }
+ }
+
+ FREE (filename);
+
+ if (list)
+ list = list->next;
+ }
+
+ return (rval);
+}
+
+char *mktemp_doc[] = {
+ "Make unique temporary file name",
+ "",
+ "Take each supplied filename template and overwrite a portion of it",
+ "to create a filename, which is unique and may be used by the calling",
+ "script. TEMPLATE is a string ending in some number of 'X's. If",
+ "TEMPLATE is not supplied, shtmp.XXXXXX is used and $TMPDIR is used as",
+ "the name of the containing directory. Files are created u+rw; directories",
+ "are created u+rwx.",
+ "",
+ "Options, if supplied, have the following meanings:",
+ "",
+ " -d Create a directory instead of a file",
+ " -q Do not print error messages about file creation failure",
+ " -t PREFIX Use PREFIX as the directory in which to create files",
+ " -u Do not create anything; simply print a name",
+ " -v VAR Store the generated name into shell variable VAR",
+ "",
+ "Any PREFIX supplied with -t is ignored if TEMPLATE is supplied.",
+ "",
+ "The return status is true if the file or directory was created successfully;",
+ "false if an error occurs or VAR is invalid or readonly.",
+
+ (char *)NULL
+};
+
+struct builtin mktemp_struct = {
+ "mktemp", /* builtin name */
+ mktemp_builtin, /* function implementing the builtin */
+ BUILTIN_ENABLED, /* initial flags for builtin */
+ mktemp_doc, /* array of long documentation strings. */
+ "mktemp [-d] [-q] [-t prefix] [-u] [-v varname] [template] ...",
+ 0 /* reserved for internal use */
+};
diff --git a/examples/loadables/push.c b/examples/loadables/push.c
index 9bcd5c32..b27455b4 100644
--- a/examples/loadables/push.c
+++ b/examples/loadables/push.c
@@ -4,7 +4,7 @@
*/
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -35,7 +35,7 @@
extern int errno;
#endif
-extern int dollar_dollar_pid;
+extern pid_t dollar_dollar_pid;
extern int last_command_exit_value;
int
@@ -92,7 +92,7 @@ push_builtin (list)
else
{
stop_pipeline (0, (COMMAND *)NULL);
- xstatus = wait_for (pid);
+ xstatus = wait_for (pid, 0);
return (xstatus);
}
}
diff --git a/examples/loadables/realpath.c b/examples/loadables/realpath.c
index 9892ddb8..0974ac41 100644
--- a/examples/loadables/realpath.c
+++ b/examples/loadables/realpath.c
@@ -130,7 +130,7 @@ char *realpath_doc[] = {
"Display the canonicalized version of each PATHNAME argument, resolving",
"symbolic links. The -c option checks whether or not each resolved name",
"exists. The -s option produces no output; the exit status determines the",
- "valididty of each PATHNAME. The -v option produces verbose output. The",
+ "validity of each PATHNAME. The -v option produces verbose output. The",
"exit status is 0 if each PATHNAME was resolved; non-zero otherwise.",
(char *)NULL
};
diff --git a/examples/loadables/rm.c b/examples/loadables/rm.c
index adfbffdc..0af5493c 100644
--- a/examples/loadables/rm.c
+++ b/examples/loadables/rm.c
@@ -145,8 +145,12 @@ rm_builtin (list)
if (list == 0)
{
- builtin_usage ();
- return (EXECUTION_FAILURE);
+ if (force == 0)
+ {
+ builtin_usage ();
+ return (EXECUTION_FAILURE);
+ }
+ return (EXECUTION_SUCCESS);
}
for (l = list; l; l = l->next)
diff --git a/examples/loadables/seq.c b/examples/loadables/seq.c
index d8f3e0a0..e5624079 100644
--- a/examples/loadables/seq.c
+++ b/examples/loadables/seq.c
@@ -1,5 +1,5 @@
/* seq - print sequence of numbers to standard output.
- Copyright (C) 2018 Free Software Foundation, Inc.
+ Copyright (C) 2018-2020 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -49,8 +49,8 @@ typedef double floatmax_t;
# define FLOATMAX_FMT "%g"
# define FLOATMAX_WFMT "%0.f"
#endif
-static floatmax_t getfloatmax __P((const char *));
-static char *genformat __P((floatmax_t, floatmax_t, floatmax_t));
+static floatmax_t getfloatmax PARAMS((const char *));
+static char *genformat PARAMS((floatmax_t, floatmax_t, floatmax_t));
#define MAX(a, b) (((a) < (b))? (b) : (a))
@@ -238,7 +238,7 @@ print_fltseq (fmt, first, last, incr)
floatmax_t next;
const char *s;
- n = 0; /* interation counter */
+ n = 0; /* iteration counter */
s = "";
for (next = first; incr >= 0 ? (next <= last) : (next >= last); next = first + n * incr)
{
diff --git a/examples/loadables/setpgid.c b/examples/loadables/setpgid.c
index 7da58f13..e56fd51e 100644
--- a/examples/loadables/setpgid.c
+++ b/examples/loadables/setpgid.c
@@ -105,7 +105,7 @@ const char *setpgid_doc[] = {
"invoke the setpgid(2) system call",
"",
"Arguments:",
- " pid : numeric process identifer, >= 0",
+ " pid : numeric process identifier, >= 0",
" pgrpid: numeric process group identifier, >=0",
"See the setpgid(2) manual page.",
(const char *)NULL
diff --git a/examples/loadables/sleep.c b/examples/loadables/sleep.c
index 92b1a8fa..fc2203d4 100644
--- a/examples/loadables/sleep.c
+++ b/examples/loadables/sleep.c
@@ -5,7 +5,7 @@
*/
/*
- Copyright (C) 1999-2009 Free Software Foundation, Inc.
+ Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash.
Bash is free software: you can redistribute it and/or modify
@@ -53,6 +53,9 @@ sleep_builtin (list)
WORD_LIST *list;
{
long sec, usec;
+ char *ep;
+ int r, mul;
+ time_t t;
if (list == 0) {
builtin_usage();
@@ -68,8 +71,12 @@ WORD_LIST *list;
return (EX_USAGE);
}
- if (uconvert(list->word->word, &sec, &usec)) {
+ r = uconvert(list->word->word, &sec, &usec, &ep);
+ /* Maybe postprocess conversion failures here based on EP */
+
+ if (r) {
fsleep(sec, usec);
+ QUIT;
return(EXECUTION_SUCCESS);
}
diff --git a/examples/loadables/strftime.c b/examples/loadables/strftime.c
index 2de09e34..f4e194e6 100644
--- a/examples/loadables/strftime.c
+++ b/examples/loadables/strftime.c
@@ -34,6 +34,7 @@
#include "builtins.h"
#include "shell.h"
#include "common.h"
+#include "bashgetopt.h"
int
strftime_builtin (list)
@@ -46,15 +47,16 @@ strftime_builtin (list)
int n;
intmax_t i;
+ if (no_options (list))
+ return (EX_USAGE);
+ list = loptend;
+
if (list == 0)
{
builtin_usage ();
return (EX_USAGE);
}
- if (no_options (list))
- return (EX_USAGE);
-
format = list->word->word;
if (format == 0 || *format == 0)
{
@@ -86,7 +88,7 @@ strftime_builtin (list)
/* Now try to figure out how big the buffer should really be. strftime(3)
will return the number of bytes placed in the buffer unless it's greater
than MAXSIZE, in which case it returns 0. */
- for (n = 1; n < 4; n++)
+ for (n = 1; n <= 8; n++)
{
tbuf = xrealloc (tbuf, tbsize * n);
tsize = strftime (tbuf, tbsize * n, format, t);
@@ -94,7 +96,8 @@ strftime_builtin (list)
break;
}
- printf ("%s\n", tbuf);
+ if (tsize)
+ printf ("%s\n", tbuf);
free (tbuf);
return (EXECUTION_SUCCESS);
diff --git a/examples/loadables/tee.c b/examples/loadables/tee.c
index 819d83ae..283f23f1 100644
--- a/examples/loadables/tee.c
+++ b/examples/loadables/tee.c
@@ -164,7 +164,7 @@ char *tee_doc[] = {
"Duplicate standard output.",
"",
"Copy standard input to standard output, making a copy in each",
- "filename argument. If the `-a' option is gived, the specified",
+ "filename argument. If the `-a' option is given, the specified",
"files are appended to, otherwise they are overwritten. If the",
"`-i' option is supplied, tee ignores interrupts.",
(char *)NULL
diff --git a/examples/startup-files/Bash_aliases b/examples/startup-files/Bash_aliases
index bb9c01e4..2abb93ee 100644
--- a/examples/startup-files/Bash_aliases
+++ b/examples/startup-files/Bash_aliases
@@ -17,7 +17,7 @@ alias pu="pushd"
alias po="popd"
#
-# Csh compatability:
+# Csh compatibility:
#
alias unsetenv=unset
function setenv () {
diff --git a/execute_cmd.c b/execute_cmd.c
index 4a05758d..d2a0dd71 100644
--- a/execute_cmd.c
+++ b/execute_cmd.c
@@ -1,6 +1,6 @@
/* execute_cmd.c -- Execute a COMMAND structure. */
-/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -109,89 +109,90 @@ extern int errno;
extern int command_string_index;
extern char *the_printed_command;
extern time_t shell_start_time;
+#if defined (HAVE_GETTIMEOFDAY)
+extern struct timeval shellstart;
+#endif
#if 0
extern char *glob_argv_flags;
#endif
-extern int close __P((int));
+extern int close PARAMS((int));
/* Static functions defined and used in this file. */
-static void close_pipes __P((int, int));
-static void do_piping __P((int, int));
-static void bind_lastarg __P((char *));
-static int shell_control_structure __P((enum command_type));
-static void cleanup_redirects __P((REDIRECT *));
+static void close_pipes PARAMS((int, int));
+static void do_piping PARAMS((int, int));
+static void bind_lastarg PARAMS((char *));
+static int shell_control_structure PARAMS((enum command_type));
+static void cleanup_redirects PARAMS((REDIRECT *));
#if defined (JOB_CONTROL)
-static int restore_signal_mask __P((sigset_t *));
+static int restore_signal_mask PARAMS((sigset_t *));
#endif
-static void async_redirect_stdin __P((void));
-
-static int builtin_status __P((int));
+static int builtin_status PARAMS((int));
-static int execute_for_command __P((FOR_COM *));
+static int execute_for_command PARAMS((FOR_COM *));
#if defined (SELECT_COMMAND)
-static int displen __P((const char *));
-static int print_index_and_element __P((int, int, WORD_LIST *));
-static void indent __P((int, int));
-static void print_select_list __P((WORD_LIST *, int, int, int));
-static char *select_query __P((WORD_LIST *, int, char *, int));
-static int execute_select_command __P((SELECT_COM *));
+static int displen PARAMS((const char *));
+static int print_index_and_element PARAMS((int, int, WORD_LIST *));
+static void indent PARAMS((int, int));
+static void print_select_list PARAMS((WORD_LIST *, int, int, int));
+static char *select_query PARAMS((WORD_LIST *, int, char *, int));
+static int execute_select_command PARAMS((SELECT_COM *));
#endif
#if defined (DPAREN_ARITHMETIC)
-static int execute_arith_command __P((ARITH_COM *));
+static int execute_arith_command PARAMS((ARITH_COM *));
#endif
#if defined (COND_COMMAND)
-static int execute_cond_node __P((COND_COM *));
-static int execute_cond_command __P((COND_COM *));
+static int execute_cond_node PARAMS((COND_COM *));
+static int execute_cond_command PARAMS((COND_COM *));
#endif
#if defined (COMMAND_TIMING)
-static int mkfmt __P((char *, int, int, time_t, int));
-static void print_formatted_time __P((FILE *, char *,
+static int mkfmt PARAMS((char *, int, int, time_t, int));
+static void print_formatted_time PARAMS((FILE *, char *,
time_t, int, time_t, int,
time_t, int, int));
-static int time_command __P((COMMAND *, int, int, int, struct fd_bitmap *));
+static int time_command PARAMS((COMMAND *, int, int, int, struct fd_bitmap *));
#endif
#if defined (ARITH_FOR_COMMAND)
-static intmax_t eval_arith_for_expr __P((WORD_LIST *, int *));
-static int execute_arith_for_command __P((ARITH_FOR_COM *));
-#endif
-static int execute_case_command __P((CASE_COM *));
-static int execute_while_command __P((WHILE_COM *));
-static int execute_until_command __P((WHILE_COM *));
-static int execute_while_or_until __P((WHILE_COM *, int));
-static int execute_if_command __P((IF_COM *));
-static int execute_null_command __P((REDIRECT *, int, int, int));
-static void fix_assignment_words __P((WORD_LIST *));
-static int execute_simple_command __P((SIMPLE_COM *, int, int, int, struct fd_bitmap *));
-static int execute_builtin __P((sh_builtin_func_t *, WORD_LIST *, int, int));
-static int execute_function __P((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int));
-static int execute_builtin_or_function __P((WORD_LIST *, sh_builtin_func_t *,
+static intmax_t eval_arith_for_expr PARAMS((WORD_LIST *, int *));
+static int execute_arith_for_command PARAMS((ARITH_FOR_COM *));
+#endif
+static int execute_case_command PARAMS((CASE_COM *));
+static int execute_while_command PARAMS((WHILE_COM *));
+static int execute_until_command PARAMS((WHILE_COM *));
+static int execute_while_or_until PARAMS((WHILE_COM *, int));
+static int execute_if_command PARAMS((IF_COM *));
+static int execute_null_command PARAMS((REDIRECT *, int, int, int));
+static void fix_assignment_words PARAMS((WORD_LIST *));
+static int execute_simple_command PARAMS((SIMPLE_COM *, int, int, int, struct fd_bitmap *));
+static int execute_builtin PARAMS((sh_builtin_func_t *, WORD_LIST *, int, int));
+static int execute_function PARAMS((SHELL_VAR *, WORD_LIST *, int, struct fd_bitmap *, int, int));
+static int execute_builtin_or_function PARAMS((WORD_LIST *, sh_builtin_func_t *,
SHELL_VAR *,
REDIRECT *, struct fd_bitmap *, int));
-static void execute_subshell_builtin_or_function __P((WORD_LIST *, REDIRECT *,
+static void execute_subshell_builtin_or_function PARAMS((WORD_LIST *, REDIRECT *,
sh_builtin_func_t *,
SHELL_VAR *,
int, int, int,
struct fd_bitmap *,
int));
-static int execute_disk_command __P((WORD_LIST *, REDIRECT *, char *,
+static int execute_disk_command PARAMS((WORD_LIST *, REDIRECT *, char *,
int, int, int, struct fd_bitmap *, int));
-static char *getinterp __P((char *, int, int *));
-static void initialize_subshell __P((void));
-static int execute_in_subshell __P((COMMAND *, int, int, int, struct fd_bitmap *));
+static char *getinterp PARAMS((char *, int, int *));
+static void initialize_subshell PARAMS((void));
+static int execute_in_subshell PARAMS((COMMAND *, int, int, int, struct fd_bitmap *));
#if defined (COPROCESS_SUPPORT)
-static void coproc_setstatus __P((struct coproc *, int));
-static int execute_coproc __P((COMMAND *, int, int, struct fd_bitmap *));
+static void coproc_setstatus PARAMS((struct coproc *, int));
+static int execute_coproc PARAMS((COMMAND *, int, int, struct fd_bitmap *));
#endif
-static int execute_pipeline __P((COMMAND *, int, int, int, struct fd_bitmap *));
+static int execute_pipeline PARAMS((COMMAND *, int, int, int, struct fd_bitmap *));
-static int execute_connection __P((COMMAND *, int, int, int, struct fd_bitmap *));
+static int execute_connection PARAMS((COMMAND *, int, int, int, struct fd_bitmap *));
-static int execute_intern_function __P((WORD_DESC *, FUNCTION_DEF *));
+static int execute_intern_function PARAMS((WORD_DESC *, FUNCTION_DEF *));
/* Set to 1 if fd 0 was the subject of redirection to a subshell. Global
so that reader_loop can set it to zero before executing a command. */
@@ -521,7 +522,7 @@ open_files ()
}
#endif
-static void
+void
async_redirect_stdin ()
{
int fd;
@@ -540,7 +541,7 @@ async_redirect_stdin ()
/* Execute the command passed in COMMAND, perhaps doing it asynchronously.
COMMAND is exactly what read_command () places into GLOBAL_COMMAND.
- ASYNCHROUNOUS, if non-zero, says to do this command in the background.
+ ASYNCHRONOUS, if non-zero, says to do this command in the background.
PIPE_IN and PIPE_OUT are file descriptors saying where input comes
from and where it goes. They can have the value of NO_PIPE, which means
I/O is stdin/stdout.
@@ -558,7 +559,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
int pipe_in, pipe_out;
struct fd_bitmap *fds_to_close;
{
- int exec_result, user_subshell, invert, ignore_return, was_error_trap;
+ int exec_result, user_subshell, invert, ignore_return, was_error_trap, fork_flags;
REDIRECT *my_undo_list, *exec_undo_list;
char *tcmd;
volatile int save_line_number;
@@ -624,11 +625,13 @@ 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. */
+ save_line_number = line_number;
if (command->type == cm_subshell)
line_number_for_err_trap = line_number = command->value.Subshell->line; /* XXX - save value? */
/* Otherwise we defer setting line_number */
tcmd = make_command_string (command);
- paren_pid = make_child (p = savestring (tcmd), asynchronous);
+ fork_flags = asynchronous ? FORK_ASYNC : 0;
+ paren_pid = make_child (p = savestring (tcmd), fork_flags);
if (user_subshell && signal_is_trapped (ERROR_TRAP) &&
signal_in_progress (DEBUG_TRAP) == 0 && running_trap == 0)
@@ -677,13 +680,15 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
stop_pipeline (asynchronous, (COMMAND *)NULL);
+ line_number = save_line_number;
+
if (asynchronous == 0)
{
was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
invert = (command->flags & CMD_INVERT_RETURN) != 0;
ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
- exec_result = wait_for (paren_pid);
+ exec_result = wait_for (paren_pid, 0);
/* If we have to, invert the return value. */
if (invert)
@@ -751,7 +756,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
# endif
/* XXX - also if sourcelevel != 0? */
- if (variable_context != 0)
+ if (variable_context != 0 || executing_list)
{
ofifo = num_fifos ();
ofifo_list = copy_fifo_list ((int *)&osize);
@@ -766,6 +771,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
/* Handle WHILE FOR CASE etc. with redirections. (Also '&' input
redirection.) */
+ was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
+ ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
+
if (do_redirections (command->redirects, RX_ACTIVE|RX_UNDOABLE) != 0)
{
undo_partial_redirects ();
@@ -777,36 +785,32 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
discard_unwind_frame ("internal_fifos");
}
#endif
- return (last_command_exit_value = EXECUTION_FAILURE);
- }
-#if 0
- if (redirection_undo_list)
- {
- /* XXX - why copy here? */
- my_undo_list = (REDIRECT *)copy_redirects (redirection_undo_list);
- dispose_partial_redirects ();
+ /* Handle redirection error as command failure if errexit set. */
+ last_command_exit_value = EXECUTION_FAILURE;
+ if (ignore_return == 0 && invert == 0 && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+ {
+ if (was_error_trap)
+ {
+ save_line_number = line_number;
+ line_number = line_number_for_err_trap;
+ run_error_trap ();
+ line_number = save_line_number;
+ }
+ if (exit_immediately_on_error)
+ {
+ run_pending_traps ();
+ jump_to_top_level (ERREXIT);
+ }
+ }
+ return (last_command_exit_value);
}
- else
- my_undo_list = (REDIRECT *)NULL;
-#else
+
my_undo_list = redirection_undo_list;
redirection_undo_list = (REDIRECT *)NULL;
-#endif
-#if 0
- if (exec_redirection_undo_list)
- {
- /* XXX - why copy here? */
- exec_undo_list = (REDIRECT *)copy_redirects (exec_redirection_undo_list);
- dispose_exec_redirects ();
- }
- else
- exec_undo_list = (REDIRECT *)NULL;
-#else
exec_undo_list = exec_redirection_undo_list;
exec_redirection_undo_list = (REDIRECT *)NULL;
-#endif
if (my_undo_list || exec_undo_list)
begin_unwind_frame ("loop_redirections");
@@ -817,8 +821,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
if (exec_undo_list)
add_unwind_protect ((Function *)dispose_redirects, exec_undo_list);
- ignore_return = (command->flags & CMD_IGNORE_RETURN) != 0;
-
QUIT;
switch (command->type)
@@ -886,7 +888,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
the function to be waited for twice. This also causes
subshells forked to execute builtin commands (e.g., in
pipelines) to be waited for twice. */
- exec_result = wait_for (last_made_pid);
+ exec_result = wait_for (last_made_pid, 0);
}
}
@@ -894,6 +896,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
only the failure of a simple command. We don't want to run the error
trap if the command run by the `command' builtin fails; we want to
defer that until the command builtin itself returns failure. */
+ /* 2020/07/14 -- this changes with how the command builtin is handled */
if (was_error_trap && ignore_return == 0 && invert == 0 &&
pipe_in == NO_PIPE && pipe_out == NO_PIPE &&
(command->value.Simple->flags & CMD_COMMAND_BUILTIN) == 0 &&
@@ -1023,40 +1026,35 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
#if defined (DPAREN_ARITHMETIC)
case cm_arith:
- was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
- if (ignore_return)
- command->value.Arith->flags |= CMD_IGNORE_RETURN;
- line_number_for_err_trap = save_line_number = line_number;
- exec_result = execute_arith_command (command->value.Arith);
- line_number = save_line_number;
-
- if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
- {
- last_command_exit_value = exec_result;
- save_line_number = line_number;
- line_number = line_number_for_err_trap;
- run_error_trap ();
- line_number = save_line_number;
- }
-
- if (ignore_return == 0 && invert == 0 && exit_immediately_on_error && exec_result != EXECUTION_SUCCESS)
- {
- last_command_exit_value = exec_result;
- run_pending_traps ();
- jump_to_top_level (ERREXIT);
- }
-
- break;
#endif
-
#if defined (COND_COMMAND)
case cm_cond:
+#endif
+ case cm_function_def:
was_error_trap = signal_is_trapped (ERROR_TRAP) && signal_is_ignored (ERROR_TRAP) == 0;
- if (ignore_return)
+#if defined (DPAREN_ARITHMETIC)
+ if (ignore_return && command->type == cm_arith)
+ command->value.Arith->flags |= CMD_IGNORE_RETURN;
+#endif
+#if defined (COND_COMMAND)
+ if (ignore_return && command->type == cm_cond)
command->value.Cond->flags |= CMD_IGNORE_RETURN;
+#endif
line_number_for_err_trap = save_line_number = line_number;
- exec_result = execute_cond_command (command->value.Cond);
+#if defined (DPAREN_ARITHMETIC)
+ if (command->type == cm_arith)
+ exec_result = execute_arith_command (command->value.Arith);
+ else
+#endif
+#if defined (COND_COMMAND)
+ if (command->type == cm_cond)
+ exec_result = execute_cond_command (command->value.Cond);
+ else
+#endif
+ if (command->type == cm_function_def)
+ exec_result = execute_intern_function (command->value.Function_def->name,
+ command->value.Function_def);
line_number = save_line_number;
if (was_error_trap && ignore_return == 0 && invert == 0 && exec_result != EXECUTION_SUCCESS)
@@ -1076,12 +1074,6 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
}
break;
-#endif
-
- case cm_function_def:
- exec_result = execute_intern_function (command->value.Function_def->name,
- command->value.Function_def);
- break;
default:
command_error ("execute_command", CMDERR_BADTYPE, command->type, 0);
@@ -1135,10 +1127,7 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
last_command_exit_value = exec_result;
run_pending_traps ();
-#if 0
- if (running_trap == 0)
-#endif
- currently_executing_command = (COMMAND *)NULL;
+ currently_executing_command = (COMMAND *)NULL;
return (last_command_exit_value);
}
@@ -1146,9 +1135,9 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out,
#if defined (COMMAND_TIMING)
#if defined (HAVE_GETRUSAGE) && defined (HAVE_GETTIMEOFDAY)
-extern struct timeval *difftimeval __P((struct timeval *, struct timeval *, struct timeval *));
-extern struct timeval *addtimeval __P((struct timeval *, struct timeval *, struct timeval *));
-extern int timeval_to_cpu __P((struct timeval *, struct timeval *, struct timeval *));
+extern struct timeval *difftimeval PARAMS((struct timeval *, struct timeval *, struct timeval *));
+extern struct timeval *addtimeval PARAMS((struct timeval *, struct timeval *, struct timeval *));
+extern int timeval_to_cpu PARAMS((struct timeval *, struct timeval *, struct timeval *));
#endif
#define POSIX_TIMEFORMAT "real %2R\nuser %2U\nsys %2S"
@@ -1371,8 +1360,7 @@ time_command (command, asynchronous, pipe_in, pipe_out, fds_to_close)
#if defined (HAVE_GETRUSAGE)
selfb.ru_utime.tv_sec = kidsb.ru_utime.tv_sec = selfb.ru_stime.tv_sec = kidsb.ru_stime.tv_sec = 0;
selfb.ru_utime.tv_usec = kidsb.ru_utime.tv_usec = selfb.ru_stime.tv_usec = kidsb.ru_stime.tv_usec = 0;
- before.tv_sec = shell_start_time;
- before.tv_usec = 0;
+ before = shellstart;
#else
before.tms_utime = before.tms_stime = before.tms_cutime = before.tms_cstime = 0;
tbefore = shell_start_time;
@@ -1548,22 +1536,25 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
subshell_environment |= SUBSHELL_COPROC;
}
+ QUIT;
+ CHECK_TERMSIG;
+
reset_terminating_signals (); /* in sig.c */
/* Cancel traps, in trap.c. */
/* Reset the signal handlers in the child, but don't free the
trap strings. Set a flag noting that we have to free the
trap strings if we run trap to change a signal disposition. */
+ clear_pending_traps ();
reset_signal_handlers ();
subshell_environment |= SUBSHELL_RESETTRAP;
-#if 0 /* TAG:bash-5.1 */
+
/* We are in a subshell, so forget that we are running a trap handler or
that the signal handler has changed (we haven't changed it!) */
if (running_trap > 0)
{
run_trap_cleanup (running_trap - 1);
- running_trap = 0;
+ running_trap = 0; /* XXX - maybe leave this */
}
-#endif
/* Make sure restore_original_signals doesn't undo the work done by
make_child to ensure that asynchronous children are immune to SIGINT
@@ -1594,6 +1585,10 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
coproc_closeall ();
#endif
+#if defined (PROCESS_SUBSTITUTION)
+ clear_fifo_list (); /* XXX- we haven't created any FIFOs */
+#endif
+
/* 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
@@ -1617,8 +1612,12 @@ execute_in_subshell (command, asynchronous, pipe_in, pipe_out, fds_to_close)
if (should_redir_stdin && stdin_redir == 0)
async_redirect_stdin ();
-#if 0
- /* XXX - TAG:bash-5.1 */
+#if defined (BUFFERED_INPUT)
+ /* In any case, we are not reading our command input from stdin. */
+ default_buffered_input = -1;
+#endif
+
+#if 0 /* TAG: bash-5.2 */
if (user_subshell && command->type == cm_subshell)
optimize_subshell_command (command->value.Subshell->command);
#endif
@@ -1725,18 +1724,18 @@ typedef struct cplist
}
cplist_t;
-static struct cpelement *cpe_alloc __P((struct coproc *));
-static void cpe_dispose __P((struct cpelement *));
-static struct cpelement *cpl_add __P((struct coproc *));
-static struct cpelement *cpl_delete __P((pid_t));
-static void cpl_reap __P((void));
-static void cpl_flush __P((void));
-static void cpl_closeall __P((void));
-static struct cpelement *cpl_search __P((pid_t));
-static struct cpelement *cpl_searchbyname __P((const char *));
-static void cpl_prune __P((void));
+static struct cpelement *cpe_alloc PARAMS((struct coproc *));
+static void cpe_dispose PARAMS((struct cpelement *));
+static struct cpelement *cpl_add PARAMS((struct coproc *));
+static struct cpelement *cpl_delete PARAMS((pid_t));
+static void cpl_reap PARAMS((void));
+static void cpl_flush PARAMS((void));
+static void cpl_closeall PARAMS((void));
+static struct cpelement *cpl_search PARAMS((pid_t));
+static struct cpelement *cpl_searchbyname PARAMS((const char *));
+static void cpl_prune PARAMS((void));
-static void coproc_free __P((struct coproc *));
+static void coproc_free PARAMS((struct coproc *));
/* Will go away when there is fully-implemented support for multiple coprocs. */
Coproc sh_coproc = { 0, NO_PID, -1, -1, 0, 0, 0, 0, 0 };
@@ -2388,7 +2387,7 @@ execute_coproc (command, pipe_in, pipe_out, fds_to_close)
BLOCK_SIGNAL (SIGCHLD, set, oset);
- coproc_pid = make_child (p = savestring (tcmd), 1);
+ coproc_pid = make_child (p = savestring (tcmd), FORK_ASYNC);
if (coproc_pid == 0)
{
@@ -2581,6 +2580,9 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
old_frozen = freeze_jobs_list ();
lastpipe_jid = stop_pipeline (0, (COMMAND *)NULL); /* XXX */
add_unwind_protect (lastpipe_cleanup, old_frozen);
+#if defined (JOB_CONTROL)
+ UNBLOCK_CHILD (oset); /* XXX */
+#endif
}
if (cmd)
cmd->flags |= CMD_LASTPIPE;
@@ -2608,12 +2610,12 @@ execute_pipeline (command, asynchronous, pipe_in, pipe_out, fds_to_close)
if (INVALID_JOB (lastpipe_jid) == 0)
{
append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid);
- lstdin = wait_for (lastpid);
+ lstdin = wait_for (lastpid, 0);
}
else
lstdin = wait_for_single_pid (lastpid, 0); /* checks bgpids list */
#else
- lstdin = wait_for (lastpid);
+ lstdin = wait_for (lastpid, 0);
#endif
#if defined (JOB_CONTROL)
@@ -2699,8 +2701,17 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
}
executing_list++;
QUIT;
+
+#if 1
execute_command (command->value.Connection->first);
+#else
+ execute_command_internal (command->value.Connection->first,
+ asynchronous, pipe_in, pipe_out,
+ fds_to_close);
+#endif
+
QUIT;
+ optimize_fork (command); /* XXX */
exec_result = execute_command_internal (command->value.Connection->second,
asynchronous, pipe_in, pipe_out,
fds_to_close);
@@ -2762,7 +2773,11 @@ execute_connection (command, asynchronous, pipe_in, pipe_out, fds_to_close)
if (command->value.Connection->first)
command->value.Connection->first->flags |= CMD_IGNORE_RETURN;
+#if 1
exec_result = execute_command (command->value.Connection->first);
+#else
+ exec_result = execute_command_internal (command->value.Connection->first, 0, NO_PIPE, NO_PIPE, fds_to_close);
+#endif
QUIT;
if (((command->value.Connection->connector == AND_AND) &&
(exec_result == EXECUTION_SUCCESS)) ||
@@ -2912,6 +2927,8 @@ execute_for_command (for_command)
if (ifsname (identifier))
setifs (v);
+ else
+ stupidly_hack_special_variables (identifier);
retval = execute_command (for_command->action);
REAP ();
@@ -3246,7 +3263,7 @@ select_query (list, list_len, prompt, print_menu)
char *prompt;
int print_menu;
{
- int max_elem_len, indices_len, len;
+ int max_elem_len, indices_len, len, r, oe;
intmax_t reply;
WORD_LIST *l;
char *repl_string, *t;
@@ -3280,7 +3297,11 @@ select_query (list, list_len, prompt, print_menu)
fflush (stderr);
QUIT;
- if (read_builtin ((WORD_LIST *)NULL) != EXECUTION_SUCCESS)
+ oe = executing_builtin;
+ executing_builtin = 1;
+ r = read_builtin ((WORD_LIST *)NULL);
+ executing_builtin = oe;
+ if (r != EXECUTION_SUCCESS)
{
putchar ('\n');
return ((char *)NULL);
@@ -3407,6 +3428,8 @@ execute_select_command (select_command)
}
}
+ stupidly_hack_special_variables (identifier);
+
retval = execute_command (select_command->action);
REAP ();
@@ -3702,7 +3725,7 @@ execute_arith_command (arith_command)
int expok, save_line_number, retval;
intmax_t expresult;
WORD_LIST *new;
- char *exp;
+ char *exp, *t;
expresult = 0;
@@ -3741,27 +3764,37 @@ execute_arith_command (arith_command)
}
#endif
- new = expand_words_no_vars (arith_command->exp);
+ t = (char *)NULL;
+ new = arith_command->exp;
+ if (new->next)
+ exp = t = string_list (new); /* just in case */
+ else
+ exp = new->word->word;
+
+ exp = expand_arith_string (exp, Q_DOUBLE_QUOTES|Q_ARITH);
/* If we're tracing, make a new word list with `((' at the front and `))'
- at the back and print it. */
+ at the back and print it. Change xtrace_print_arith_cmd to take a string
+ when I change eval_arith_for_expr to use expand_arith_string(). */
if (echo_command_at_execute)
- xtrace_print_arith_cmd (new);
+ {
+ new = make_word_list (make_word (exp ? exp : ""), (WORD_LIST *)NULL);
+ xtrace_print_arith_cmd (new);
+ dispose_words (new);
+ }
- if (new)
+ if (exp)
{
- exp = new->next ? string_list (new) : new->word->word;
expresult = evalexp (exp, EXP_EXPANDED, &expok);
line_number = save_line_number;
- if (exp != new->word->word)
- free (exp);
- dispose_words (new);
+ free (exp);
}
else
{
expresult = 0;
expok = 1;
}
+ FREE (t);
if (expok == 0)
return (EXECUTION_FAILURE);
@@ -3973,7 +4006,7 @@ execute_null_command (redirects, pipe_in, pipe_out, async)
int pipe_in, pipe_out, async;
{
int r;
- int forcefork;
+ int forcefork, fork_flags;
REDIRECT *rd;
for (forcefork = 0, rd = redirects; rd; rd = rd->next)
@@ -3987,7 +4020,8 @@ execute_null_command (redirects, pipe_in, pipe_out, async)
{
/* We have a null command, but we really want a subshell to take
care of it. Just fork, do piping and redirections, and exit. */
- if (make_child ((char *)NULL, async) == 0)
+ fork_flags = async ? FORK_ASYNC : 0;
+ if (make_child ((char *)NULL, fork_flags) == 0)
{
/* Cancel traps, in trap.c. */
restore_original_signals (); /* XXX */
@@ -4100,10 +4134,8 @@ fix_assignment_words (words)
an existing local variable, if there is one. */
if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN))
w->word->flags |= W_ASSNGLOBAL|W_CHKLOCAL;
-#if 0
- else if (b && (b->flags & ASSIGNMENT_BUILTIN) && (b->flags & LOCALVAR_BUILTIN))
- w->word->flags |= W_CHKLOCAL;
-#endif
+ else if (b && (b->flags & ASSIGNMENT_BUILTIN) && (b->flags & LOCALVAR_BUILTIN) && variable_context)
+ w->word->flags |= W_FORCELOCAL;
}
#if defined (ARRAY_VARS)
/* Note that we saw an associative array option to a builtin that takes
@@ -4130,6 +4162,52 @@ fix_assignment_words (words)
}
}
+#ifndef ISOPTION
+# define ISOPTION(s, c) (s[0] == '-' && s[1] == c && s[2] == 0)
+#endif
+
+#define RETURN_NOT_COMMAND() \
+ do { if (typep) *typep = 0; return words; } while (0)
+
+/* Make sure we have `command [-p] command_name [args]', and handle skipping
+ over the usual `--' that ends the options. Returns the updated WORDS with
+ the command and options stripped and sets *TYPEP to a non-zero value. If
+ any other options are supplied, or there is not a command_name, we punt
+ and return a zero value in *TYPEP without updating WORDS. */
+static WORD_LIST *
+check_command_builtin (words, typep)
+ WORD_LIST *words;
+ int *typep;
+{
+ int type;
+ WORD_LIST *w;
+
+ w = words->next;
+ type = 1;
+
+ if (w && ISOPTION (w->word->word, 'p')) /* command -p */
+ {
+#if defined (RESTRICTED_SHELL)
+ if (restricted)
+ RETURN_NOT_COMMAND();
+#endif
+ w = w->next;
+ type = 2;
+ }
+
+ if (w && ISOPTION (w->word->word, '-')) /* command [-p] -- */
+ w = w->next;
+ else if (w && w->word->word[0] == '-') /* any other option */
+ RETURN_NOT_COMMAND();
+
+ if (w == 0 || w->word->word == 0) /* must have a command_name */
+ RETURN_NOT_COMMAND();
+
+ if (typep)
+ *typep = type;
+ return w;
+}
+
/* Return 1 if the file found by searching $PATH for PATHNAME, defaulting
to PATHNAME, is a directory. Used by the autocd code below. */
static int
@@ -4157,6 +4235,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
WORD_LIST *words, *lastword;
char *command_line, *lastarg, *temp;
int first_word_quoted, result, builtin_is_special, already_forked, dofork;
+ int fork_flags, cmdflags;
pid_t old_last_async_pid;
sh_builtin_func_t *builtin;
SHELL_VAR *func;
@@ -4201,6 +4280,8 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
return (EXECUTION_SUCCESS);
#endif
+ cmdflags = simple_command->flags;
+
first_word_quoted =
simple_command->words ? (simple_command->words->word->flags & W_QUOTED) : 0;
@@ -4233,10 +4314,11 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
/* Don't let a DEBUG trap overwrite the command string to be saved with
the process/job associated with this child. */
- if (make_child (p = savestring (the_printed_command_except_trap), async) == 0)
+ fork_flags = async ? FORK_ASYNC : 0;
+ if (make_child (p = savestring (the_printed_command_except_trap), fork_flags) == 0)
{
already_forked = 1;
- simple_command->flags |= CMD_NO_FORK;
+ cmdflags |= CMD_NO_FORK;
subshell_environment = SUBSHELL_FORK; /* XXX */
if (pipe_in != NO_PIPE || pipe_out != NO_PIPE)
@@ -4262,8 +4344,6 @@ 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 */
@@ -4278,19 +4358,7 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
if (pipe_out != NO_PIPE)
result = last_command_exit_value;
close_pipes (pipe_in, pipe_out);
-#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
-#if 0
- /* Close /dev/fd file descriptors in the parent after forking the
- last child in a (possibly one-element) pipeline. Defer this
- until any running shell function completes. */
- if (pipe_out == NO_PIPE && variable_context == 0) /* XXX */
- unlink_fifo_list (); /* XXX */
-#endif
-#endif
command_line = (char *)NULL; /* don't free this. */
-#if 0
- bind_lastarg ((char *)NULL);
-#endif
return (result);
}
}
@@ -4299,15 +4367,15 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
/* 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)
+ if ((cmdflags & CMD_INHIBIT_EXPANSION) == 0)
{
current_fds_to_close = fds_to_close;
fix_assignment_words (simple_command->words);
/* Pass the ignore return flag down to command substitutions */
- if (simple_command->flags & CMD_IGNORE_RETURN) /* XXX */
+ if (cmdflags & CMD_IGNORE_RETURN) /* XXX */
comsub_ignore_return++;
words = expand_words (simple_command->words);
- if (simple_command->flags & CMD_IGNORE_RETURN)
+ if (cmdflags & CMD_IGNORE_RETURN)
comsub_ignore_return--;
current_fds_to_close = (struct fd_bitmap *)NULL;
}
@@ -4337,12 +4405,16 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
begin_unwind_frame ("simple-command");
- if (echo_command_at_execute)
+ if (echo_command_at_execute && (cmdflags & CMD_COMMAND_BUILTIN) == 0)
xtrace_print_word_list (words, 1);
builtin = (sh_builtin_func_t *)NULL;
func = (SHELL_VAR *)NULL;
- if ((simple_command->flags & CMD_NO_FUNCTIONS) == 0)
+
+ /* This test is still here in case we want to change the command builtin
+ handler code below to recursively call execute_simple_command (after
+ modifying the simple_command struct). */
+ if ((cmdflags & CMD_NO_FUNCTIONS) == 0)
{
/* Posix.2 says special builtins are found before functions. We
don't set builtin_is_special anywhere other than here, because
@@ -4362,13 +4434,55 @@ execute_simple_command (simple_command, pipe_in, pipe_out, async, fds_to_close)
/* In POSIX mode, assignment errors in the temporary environment cause a
non-interactive shell to exit. */
+#if 1
if (posixly_correct && builtin_is_special && interactive_shell == 0 && tempenv_assign_error)
+#else
+ /* This is for strict posix conformance. */
+ if (posixly_correct && interactive_shell == 0 && tempenv_assign_error)
+#endif
{
last_command_exit_value = EXECUTION_FAILURE;
jump_to_top_level (ERREXIT);
}
tempenv_assign_error = 0; /* don't care about this any more */
+ /* This is where we handle the command builtin as a pseudo-reserved word
+ prefix. This allows us to optimize away forks if we can. */
+ old_command_builtin = -1;
+ if (builtin == 0 && func == 0)
+ {
+ WORD_LIST *disposer, *l;
+ int cmdtype;
+
+ builtin = find_shell_builtin (words->word->word);
+ while (builtin == command_builtin)
+ {
+ disposer = words;
+ cmdtype = 0;
+ words = check_command_builtin (words, &cmdtype);
+ if (cmdtype > 0) /* command -p [--] words */
+ {
+ for (l = disposer; l->next != words; l = l->next)
+ ;
+ l->next = 0;
+ dispose_words (disposer);
+ cmdflags |= CMD_COMMAND_BUILTIN | CMD_NO_FUNCTIONS;
+ if (cmdtype == 2)
+ cmdflags |= CMD_STDPATH;
+ builtin = find_shell_builtin (words->word->word);
+ }
+ else
+ break;
+ }
+ if (cmdflags & CMD_COMMAND_BUILTIN)
+ {
+ old_command_builtin = executing_command_builtin;
+ unwind_protect_int (executing_command_builtin);
+ executing_command_builtin |= 1;
+ }
+ builtin = 0;
+ }
+
add_unwind_protect (dispose_words, words);
QUIT;
@@ -4445,9 +4559,12 @@ run_builtin:
if (builtin)
{
old_builtin = executing_builtin;
- old_command_builtin = executing_command_builtin;
unwind_protect_int (executing_builtin); /* modified in execute_builtin */
- unwind_protect_int (executing_command_builtin); /* ditto */
+ if (old_command_builtin == -1) /* sentinel, can be set above */
+ {
+ old_command_builtin = executing_command_builtin;
+ unwind_protect_int (executing_command_builtin); /* ditto and set above */
+ }
}
if (already_forked)
{
@@ -4460,7 +4577,7 @@ run_builtin:
if (async)
{
- if ((simple_command->flags & CMD_STDIN_REDIR) &&
+ if ((cmdflags & CMD_STDIN_REDIR) &&
pipe_in == NO_PIPE &&
(stdin_redirects (simple_command->redirects) == 0))
async_redirect_stdin ();
@@ -4472,14 +4589,14 @@ run_builtin:
execute_subshell_builtin_or_function
(words, simple_command->redirects, builtin, func,
pipe_in, pipe_out, async, fds_to_close,
- simple_command->flags);
+ cmdflags);
subshell_level--;
}
else
{
result = execute_builtin_or_function
(words, builtin, func, simple_command->redirects, fds_to_close,
- simple_command->flags);
+ cmdflags);
if (builtin)
{
if (result > EX_SHERRBASE)
@@ -4519,7 +4636,7 @@ run_builtin:
if (result == EX_USAGE)
result = EX_BADUSAGE;
else if (result > EX_SHERRBASE)
- result = EXECUTION_FAILURE;
+ result = builtin_status (result);
}
set_pipestatus_from_exit (result);
@@ -4545,12 +4662,12 @@ execute_from_filesystem:
/* 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;
+ if (already_forked == 0 && (cmdflags & CMD_NO_FORK) && fifos_pending() > 0)
+ cmdflags &= ~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);
+ cmdflags);
return_result:
bind_lastarg (lastarg);
@@ -4577,16 +4694,17 @@ builtin_status (result)
switch (result)
{
case EX_USAGE:
+ case EX_BADSYNTAX:
r = EX_BADUSAGE;
break;
case EX_REDIRFAIL:
- case EX_BADSYNTAX:
case EX_BADASSIGN:
case EX_EXPFAIL:
r = EXECUTION_FAILURE;
break;
default:
- r = EXECUTION_SUCCESS;
+ /* other special exit statuses not yet defined */
+ r = (result > EX_SHERRBASE) ? EXECUTION_FAILURE : EXECUTION_SUCCESS;
break;
}
return (r);
@@ -4613,7 +4731,7 @@ execute_builtin (builtin, words, flags, subshell)
the ERR trap, then restore them when the command completes. This is
also a problem (as below) for the command and source/. builtins. */
if (subshell == 0 && (flags & CMD_IGNORE_RETURN) &&
- (builtin == eval_builtin || builtin == command_builtin || builtin == source_builtin))
+ (builtin == eval_builtin || (flags & CMD_COMMAND_BUILTIN) || builtin == source_builtin))
{
begin_unwind_frame ("eval_builtin");
unwind_protect_int (exit_immediately_on_error);
@@ -4807,6 +4925,11 @@ execute_function (var, words, flags, fds_to_close, async, subshell)
if (tc && (flags & CMD_IGNORE_RETURN))
tc->flags |= CMD_IGNORE_RETURN;
+ /* A limited attempt at optimization: shell functions at the end of command
+ substitutions that are already marked NO_FORK. */
+ if (tc && (flags & CMD_NO_FORK) && (subshell_environment & SUBSHELL_COMSUB))
+ optimize_shell_function (tc);
+
gs = sh_getopt_save_istate ();
if (subshell == 0)
{
@@ -5118,11 +5241,11 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var,
funcvalue = setjmp_nosigs (return_catch);
if (result == EXITPROG)
- exit (last_command_exit_value);
+ subshell_exit (last_command_exit_value);
else if (result)
- exit (EXECUTION_FAILURE);
+ subshell_exit (EXECUTION_FAILURE);
else if (funcvalue)
- exit (return_catch_value);
+ subshell_exit (return_catch_value);
else
{
r = execute_builtin (builtin, words, flags, 1);
@@ -5138,14 +5261,14 @@ execute_subshell_builtin_or_function (words, redirects, builtin, var,
r = execute_disk_command (words, (REDIRECT *)0, command_line,
-1, -1, async, (struct fd_bitmap *)0, flags|CMD_NO_FORK);
}
- sh_exit (r);
+ subshell_exit (r);
}
}
else
{
r = execute_function (var, words, flags, fds_to_close, async, 1);
fflush (stdout);
- sh_exit (r);
+ subshell_exit (r);
}
}
@@ -5171,7 +5294,7 @@ execute_builtin_or_function (words, builtin, var, redirects,
REDIRECT *saved_undo_list;
#if defined (PROCESS_SUBSTITUTION)
int ofifo, nfifo, osize;
- char *ofifo_list;
+ void *ofifo_list;
#endif
#if defined (PROCESS_SUBSTITUTION)
@@ -5326,7 +5449,7 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
int cmdflags;
{
char *pathname, *command, **args, *p;
- int nofork, stdpath, result;
+ int nofork, stdpath, result, fork_flags;
pid_t pid;
SHELL_VAR *hookf;
WORD_LIST *wl;
@@ -5361,7 +5484,11 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
{
/* If we're optimizing out the fork (implicit `exec'), decrement the
shell level like `exec' would do. */
+#if 0 /* TAG: bash-5.2 psmith 10/11/2020 */
+ if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE && (subshell_environment & SUBSHELL_PIPE) == 0)
+#else
if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
+#endif
adjust_shell_level (-1);
maybe_make_export_env ();
@@ -5375,7 +5502,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
if (nofork && pipe_in == NO_PIPE && pipe_out == NO_PIPE)
pid = 0;
else
- pid = make_child (p = savestring (command_line), async);
+ {
+ fork_flags = async ? FORK_ASYNC : 0;
+ pid = make_child (p = savestring (command_line), fork_flags);
+ }
if (pid == 0)
{
@@ -5385,8 +5515,6 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
/* Cancel traps, in trap.c. */
restore_original_signals ();
- CHECK_SIGTERM;
-
#if defined (JOB_CONTROL)
FREE (p);
#endif
@@ -5419,6 +5547,10 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
subshell_environment |= SUBSHELL_FORK; /* XXX - was just = */
+#if defined (PROCESS_SUBSTITUTION) && !defined (HAVE_DEV_FD)
+ clear_fifo_list (); /* XXX - we haven't created any FIFOs */
+#endif
+
if (redirects && (do_redirections (redirects, RX_ACTIVE) != 0))
{
#if defined (PROCESS_SUBSTITUTION)
@@ -5456,8 +5588,6 @@ execute_disk_command (words, redirects, command_line, pipe_in, pipe_out,
exit (execute_shell_function (hookf, wl));
}
- CHECK_SIGTERM;
-
/* Execve expects the command name to be in args[0]. So we
leave it there, in the same format that the user used to
type it in. */
@@ -5808,7 +5938,7 @@ shell_execve (command, args, env)
unbind_args (); /* remove the positional parameters */
-#if defined (PROCESS_SUBSTITUTION)
+#if defined (PROCESS_SUBSTITUTION) && defined (HAVE_DEV_FD)
clear_fifo_list (); /* pipe fds are what they are now */
#endif
diff --git a/execute_cmd.h b/execute_cmd.h
index dc2f15ec..465030ae 100644
--- a/execute_cmd.h
+++ b/execute_cmd.h
@@ -44,7 +44,7 @@ struct execstate
};
-/* Variables delared in execute_cmd.c, used by many other files */
+/* Variables declared in execute_cmd.c, used by many other files */
extern int return_catch_flag;
extern int return_catch_value;
extern volatile int last_command_exit_value;
@@ -67,56 +67,57 @@ extern char *the_printed_command_except_trap;
extern char *this_command_name;
extern SHELL_VAR *this_shell_function;
-/* Functions delared in execute_cmd.c, used by many other files */
+/* Functions declared in execute_cmd.c, used by many other files */
-extern struct fd_bitmap *new_fd_bitmap __P((int));
-extern void dispose_fd_bitmap __P((struct fd_bitmap *));
-extern void close_fd_bitmap __P((struct fd_bitmap *));
-extern int executing_line_number __P((void));
-extern int execute_command __P((COMMAND *));
-extern int execute_command_internal __P((COMMAND *, int, int, int, struct fd_bitmap *));
-extern int shell_execve __P((char *, char **, char **));
-extern void setup_async_signals __P((void));
+extern struct fd_bitmap *new_fd_bitmap PARAMS((int));
+extern void dispose_fd_bitmap PARAMS((struct fd_bitmap *));
+extern void close_fd_bitmap PARAMS((struct fd_bitmap *));
+extern int executing_line_number PARAMS((void));
+extern int execute_command PARAMS((COMMAND *));
+extern int execute_command_internal PARAMS((COMMAND *, int, int, int, struct fd_bitmap *));
+extern int shell_execve PARAMS((char *, char **, char **));
+extern void setup_async_signals PARAMS((void));
+extern void async_redirect_stdin PARAMS((void));
-extern void undo_partial_redirects __P((void));
-extern void dispose_partial_redirects __P((void));
-extern void dispose_exec_redirects __P((void));
+extern void undo_partial_redirects PARAMS((void));
+extern void dispose_partial_redirects PARAMS((void));
+extern void dispose_exec_redirects PARAMS((void));
-extern int execute_shell_function __P((SHELL_VAR *, WORD_LIST *));
+extern int execute_shell_function PARAMS((SHELL_VAR *, WORD_LIST *));
-extern struct coproc *getcoprocbypid __P((pid_t));
-extern struct coproc *getcoprocbyname __P((const char *));
+extern struct coproc *getcoprocbypid PARAMS((pid_t));
+extern struct coproc *getcoprocbyname PARAMS((const char *));
-extern void coproc_init __P((struct coproc *));
-extern struct coproc *coproc_alloc __P((char *, pid_t));
-extern void coproc_dispose __P((struct coproc *));
-extern void coproc_flush __P((void));
-extern void coproc_close __P((struct coproc *));
-extern void coproc_closeall __P((void));
-extern void coproc_reap __P((void));
-extern pid_t coproc_active __P((void));
+extern void coproc_init PARAMS((struct coproc *));
+extern struct coproc *coproc_alloc PARAMS((char *, pid_t));
+extern void coproc_dispose PARAMS((struct coproc *));
+extern void coproc_flush PARAMS((void));
+extern void coproc_close PARAMS((struct coproc *));
+extern void coproc_closeall PARAMS((void));
+extern void coproc_reap PARAMS((void));
+extern pid_t coproc_active PARAMS((void));
-extern void coproc_rclose __P((struct coproc *, int));
-extern void coproc_wclose __P((struct coproc *, int));
-extern void coproc_fdclose __P((struct coproc *, int));
+extern void coproc_rclose PARAMS((struct coproc *, int));
+extern void coproc_wclose PARAMS((struct coproc *, int));
+extern void coproc_fdclose PARAMS((struct coproc *, int));
-extern void coproc_checkfd __P((struct coproc *, int));
-extern void coproc_fdchk __P((int));
+extern void coproc_checkfd PARAMS((struct coproc *, int));
+extern void coproc_fdchk PARAMS((int));
-extern void coproc_pidchk __P((pid_t, int));
+extern void coproc_pidchk PARAMS((pid_t, int));
-extern void coproc_fdsave __P((struct coproc *));
-extern void coproc_fdrestore __P((struct coproc *));
+extern void coproc_fdsave PARAMS((struct coproc *));
+extern void coproc_fdrestore PARAMS((struct coproc *));
-extern void coproc_setvars __P((struct coproc *));
-extern void coproc_unsetvars __P((struct coproc *));
+extern void coproc_setvars PARAMS((struct coproc *));
+extern void coproc_unsetvars PARAMS((struct coproc *));
#if defined (PROCESS_SUBSTITUTION)
-extern void close_all_files __P((void));
+extern void close_all_files PARAMS((void));
#endif
#if defined (ARRAY_VARS)
-extern void restore_funcarray_state __P((struct func_array_state *));
+extern void restore_funcarray_state PARAMS((struct func_array_state *));
#endif
#endif /* _EXECUTE_CMD_H_ */
diff --git a/expr.c b/expr.c
index 9edc8d9c..bbff95e9 100644
--- a/expr.c
+++ b/expr.c
@@ -1,6 +1,6 @@
/* expr.c -- arithmetic expression evaluation. */
-/* Copyright (C) 1990-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1990-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -181,43 +181,43 @@ static int already_expanded;
static struct lvalue curlval = {0, 0, 0, -1};
static struct lvalue lastlval = {0, 0, 0, -1};
-static int _is_arithop __P((int));
-static void readtok __P((void)); /* lexical analyzer */
+static int _is_arithop PARAMS((int));
+static void readtok PARAMS((void)); /* lexical analyzer */
-static void init_lvalue __P((struct lvalue *));
-static struct lvalue *alloc_lvalue __P((void));
-static void free_lvalue __P((struct lvalue *));
+static void init_lvalue PARAMS((struct lvalue *));
+static struct lvalue *alloc_lvalue PARAMS((void));
+static void free_lvalue PARAMS((struct lvalue *));
-static intmax_t expr_streval __P((char *, int, struct lvalue *));
-static intmax_t strlong __P((char *));
-static void evalerror __P((const char *));
+static intmax_t expr_streval PARAMS((char *, int, struct lvalue *));
+static intmax_t strlong PARAMS((char *));
+static void evalerror PARAMS((const char *));
-static void pushexp __P((void));
-static void popexp __P((void));
-static void expr_unwind __P((void));
-static void expr_bind_variable __P((char *, char *));
+static void pushexp PARAMS((void));
+static void popexp PARAMS((void));
+static void expr_unwind PARAMS((void));
+static void expr_bind_variable PARAMS((char *, char *));
#if defined (ARRAY_VARS)
-static void expr_bind_array_element __P((char *, arrayind_t, char *));
+static void expr_bind_array_element PARAMS((char *, arrayind_t, char *));
#endif
-static intmax_t subexpr __P((char *));
-
-static intmax_t expcomma __P((void));
-static intmax_t expassign __P((void));
-static intmax_t expcond __P((void));
-static intmax_t explor __P((void));
-static intmax_t expland __P((void));
-static intmax_t expbor __P((void));
-static intmax_t expbxor __P((void));
-static intmax_t expband __P((void));
-static intmax_t exp5 __P((void));
-static intmax_t exp4 __P((void));
-static intmax_t expshift __P((void));
-static intmax_t exp3 __P((void));
-static intmax_t expmuldiv __P((void));
-static intmax_t exppower __P((void));
-static intmax_t exp1 __P((void));
-static intmax_t exp0 __P((void));
+static intmax_t subexpr PARAMS((char *));
+
+static intmax_t expcomma PARAMS((void));
+static intmax_t expassign PARAMS((void));
+static intmax_t expcond PARAMS((void));
+static intmax_t explor PARAMS((void));
+static intmax_t expland PARAMS((void));
+static intmax_t expbor PARAMS((void));
+static intmax_t expbxor PARAMS((void));
+static intmax_t expband PARAMS((void));
+static intmax_t exp5 PARAMS((void));
+static intmax_t exp4 PARAMS((void));
+static intmax_t expshift PARAMS((void));
+static intmax_t exp3 PARAMS((void));
+static intmax_t expmuldiv PARAMS((void));
+static intmax_t exppower PARAMS((void));
+static intmax_t exp1 PARAMS((void));
+static intmax_t exp0 PARAMS((void));
/* Global var which contains the stack of expression contexts. */
static EXPR_CONTEXT **expr_stack;
@@ -549,6 +549,7 @@ expassign ()
switch (op)
{
case MUL:
+ /* Handle INTMAX_MIN and INTMAX_MAX * -1 specially here? */
lvalue *= value;
break;
case DIV:
@@ -1168,6 +1169,8 @@ expr_streval (tok, e, lvalue)
#else
v = find_variable (tok);
#endif
+ if (v == 0 && e != ']')
+ v = find_variable_last_nameref (tok, 0);
if ((v == 0 || invisible_p (v)) && unbound_vars_is_error)
{
@@ -1177,7 +1180,7 @@ expr_streval (tok, e, lvalue)
value = tok;
#endif
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (value);
#if defined (ARRAY_VARS)
@@ -1520,10 +1523,12 @@ evalerror (msg)
Base may be >=2 and <=64. If base is <= 36, the numbers are drawn
from [0-9][a-zA-Z], and lowercase and uppercase letters may be used
- interchangably. If base is > 36 and <= 64, the numbers are drawn
+ interchangeably. If base is > 36 and <= 64, the numbers are drawn
from [0-9][a-z][A-Z]_@ (a = 10, z = 35, A = 36, Z = 61, @ = 62, _ = 63 --
you get the picture). */
+#define VALID_NUMCHAR(c) (ISALNUM(c) || ((c) == '_') || ((c) == '@'))
+
static intmax_t
strlong (num)
char *num;
@@ -1570,8 +1575,13 @@ strlong (num)
base = val;
val = 0;
foundbase++;
+
+ /* Make sure a base# is followed by a character that can compose a
+ valid integer constant. Jeremy Townshend <jeremy.townshend@gmail.com> */
+ if (VALID_NUMCHAR (*s) == 0)
+ evalerror (_("invalid integer constant"));
}
- else if (ISALNUM(c) || (c == '_') || (c == '@'))
+ else if (VALID_NUMCHAR (c))
{
if (DIGIT(c))
c = TODIGIT(c);
diff --git a/externs.h b/externs.h
index 72df33d1..3d7716c6 100644
--- a/externs.h
+++ b/externs.h
@@ -1,7 +1,7 @@
/* externs.h -- extern function declarations which do not appear in their
own header file. */
-/* Copyright (C) 1993-2010 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -29,151 +29,153 @@
/* Functions from expr.c. */
#define EXP_EXPANDED 0x01
-extern intmax_t evalexp __P((char *, int, int *));
+extern intmax_t evalexp PARAMS((char *, int, int *));
/* Functions from print_cmd.c. */
#define FUNC_MULTILINE 0x01
#define FUNC_EXTERNAL 0x02
-extern char *make_command_string __P((COMMAND *));
-extern char *named_function_string __P((char *, COMMAND *, int));
+extern char *make_command_string PARAMS((COMMAND *));
+extern char *named_function_string PARAMS((char *, COMMAND *, int));
-extern void print_command __P((COMMAND *));
-extern void print_simple_command __P((SIMPLE_COM *));
-extern void print_word_list __P((WORD_LIST *, char *));
+extern void print_command PARAMS((COMMAND *));
+extern void print_simple_command PARAMS((SIMPLE_COM *));
+extern void print_word_list PARAMS((WORD_LIST *, char *));
/* debugger support */
-extern void print_for_command_head __P((FOR_COM *));
+extern void print_for_command_head PARAMS((FOR_COM *));
#if defined (SELECT_COMMAND)
-extern void print_select_command_head __P((SELECT_COM *));
+extern void print_select_command_head PARAMS((SELECT_COM *));
#endif
-extern void print_case_command_head __P((CASE_COM *));
+extern void print_case_command_head PARAMS((CASE_COM *));
#if defined (DPAREN_ARITHMETIC)
-extern void print_arith_command __P((WORD_LIST *));
+extern void print_arith_command PARAMS((WORD_LIST *));
#endif
#if defined (COND_COMMAND)
-extern void print_cond_command __P((COND_COM *));
+extern void print_cond_command PARAMS((COND_COM *));
#endif
/* set -x support */
-extern void xtrace_init __P((void));
+extern void xtrace_init PARAMS((void));
#ifdef NEED_XTRACE_SET_DECL
-extern void xtrace_set __P((int, FILE *));
-#endif
-extern void xtrace_fdchk __P((int));
-extern void xtrace_reset __P((void));
-extern char *indirection_level_string __P((void));
-extern void xtrace_print_assignment __P((char *, char *, int, int));
-extern void xtrace_print_word_list __P((WORD_LIST *, int));
-extern void xtrace_print_for_command_head __P((FOR_COM *));
+extern void xtrace_set PARAMS((int, FILE *));
+#endif
+extern void xtrace_fdchk PARAMS((int));
+extern void xtrace_reset PARAMS((void));
+extern char *indirection_level_string PARAMS((void));
+extern void xtrace_print_assignment PARAMS((char *, char *, int, int));
+extern void xtrace_print_word_list PARAMS((WORD_LIST *, int));
+extern void xtrace_print_for_command_head PARAMS((FOR_COM *));
#if defined (SELECT_COMMAND)
-extern void xtrace_print_select_command_head __P((SELECT_COM *));
+extern void xtrace_print_select_command_head PARAMS((SELECT_COM *));
#endif
-extern void xtrace_print_case_command_head __P((CASE_COM *));
+extern void xtrace_print_case_command_head PARAMS((CASE_COM *));
#if defined (DPAREN_ARITHMETIC)
-extern void xtrace_print_arith_cmd __P((WORD_LIST *));
+extern void xtrace_print_arith_cmd PARAMS((WORD_LIST *));
#endif
#if defined (COND_COMMAND)
-extern void xtrace_print_cond_term __P((int, int, WORD_DESC *, char *, char *));
+extern void xtrace_print_cond_term PARAMS((int, int, WORD_DESC *, char *, char *));
#endif
/* Functions from shell.c. */
-extern void exit_shell __P((int)) __attribute__((__noreturn__));
-extern void sh_exit __P((int)) __attribute__((__noreturn__));
-extern void subshell_exit __P((int)) __attribute__((__noreturn__));
-extern void disable_priv_mode __P((void));
-extern void unbind_args __P((void));
+extern void exit_shell PARAMS((int)) __attribute__((__noreturn__));
+extern void sh_exit PARAMS((int)) __attribute__((__noreturn__));
+extern void subshell_exit PARAMS((int)) __attribute__((__noreturn__));
+extern void set_exit_status PARAMS((int));
+extern void disable_priv_mode PARAMS((void));
+extern void unbind_args PARAMS((void));
#if defined (RESTRICTED_SHELL)
-extern int shell_is_restricted __P((char *));
-extern int maybe_make_restricted __P((char *));
+extern int shell_is_restricted PARAMS((char *));
+extern int maybe_make_restricted PARAMS((char *));
#endif
-extern void unset_bash_input __P((int));
-extern void get_current_user_info __P((void));
+extern void unset_bash_input PARAMS((int));
+extern void get_current_user_info PARAMS((void));
/* Functions from eval.c. */
-extern int reader_loop __P((void));
-extern int pretty_print_loop __P((void));
-extern int parse_command __P((void));
-extern int read_command __P((void));
+extern int reader_loop PARAMS((void));
+extern int pretty_print_loop PARAMS((void));
+extern int parse_command PARAMS((void));
+extern int read_command PARAMS((void));
/* Functions from braces.c. */
#if defined (BRACE_EXPANSION)
-extern char **brace_expand __P((char *));
+extern char **brace_expand PARAMS((char *));
#endif
/* 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 void reset_readahead_token __P((void));
-extern WORD_LIST *parse_string_to_word_list __P((char *, int, const char *));
+extern int yyparse PARAMS((void));
+extern int return_EOF PARAMS((void));
+extern void push_token PARAMS((int));
+extern char *xparse_dolparen PARAMS((char *, char *, int *, int));
+extern void reset_parser PARAMS((void));
+extern void reset_readahead_token PARAMS((void));
+extern WORD_LIST *parse_string_to_word_list PARAMS((char *, int, const char *));
-extern int parser_in_command_position __P((void));
+extern int parser_will_prompt PARAMS((void));
+extern int parser_in_command_position PARAMS((void));
-extern void free_pushed_string_input __P((void));
+extern void free_pushed_string_input PARAMS((void));
-extern int parser_expanding_alias __P((void));
-extern void parser_save_alias __P((void));
-extern void parser_restore_alias __P((void));
+extern int parser_expanding_alias PARAMS((void));
+extern void parser_save_alias PARAMS((void));
+extern void parser_restore_alias PARAMS((void));
-extern void clear_shell_input_line __P((void));
+extern void clear_shell_input_line PARAMS((void));
-extern char *decode_prompt_string __P((char *));
+extern char *decode_prompt_string PARAMS((char *));
-extern int get_current_prompt_level __P((void));
-extern void set_current_prompt_level __P((int));
+extern int get_current_prompt_level PARAMS((void));
+extern void set_current_prompt_level PARAMS((int));
#if defined (HISTORY)
-extern char *history_delimiting_chars __P((const char *));
+extern char *history_delimiting_chars PARAMS((const char *));
#endif
/* Declarations for functions defined in locale.c */
-extern void set_default_locale __P((void));
-extern void set_default_locale_vars __P((void));
-extern int set_locale_var __P((char *, char *));
-extern int set_lang __P((char *, char *));
-extern void set_default_lang __P((void));
-extern char *get_locale_var __P((char *));
-extern char *localetrans __P((char *, int, int *));
-extern char *mk_msgstr __P((char *, int *));
-extern char *localeexpand __P((char *, int, int, int, int *));
+extern void set_default_locale PARAMS((void));
+extern void set_default_locale_vars PARAMS((void));
+extern int set_locale_var PARAMS((char *, char *));
+extern int set_lang PARAMS((char *, char *));
+extern void set_default_lang PARAMS((void));
+extern char *get_locale_var PARAMS((char *));
+extern char *localetrans PARAMS((char *, int, int *));
+extern char *mk_msgstr PARAMS((char *, int *));
+extern char *localeexpand PARAMS((char *, int, int, int, int *));
#ifndef locale_decpoint
-extern int locale_decpoint __P((void));
+extern int locale_decpoint PARAMS((void));
#endif
/* Declarations for functions defined in list.c. */
-extern void list_walk __P((GENERIC_LIST *, sh_glist_func_t *));
-extern void wlist_walk __P((WORD_LIST *, sh_icpfunc_t *));
+extern void list_walk PARAMS((GENERIC_LIST *, sh_glist_func_t *));
+extern void wlist_walk PARAMS((WORD_LIST *, sh_icpfunc_t *));
extern GENERIC_LIST *list_reverse ();
extern int list_length ();
extern GENERIC_LIST *list_append ();
extern GENERIC_LIST *list_remove ();
/* Declarations for functions defined in stringlib.c */
-extern int find_string_in_alist __P((char *, STRING_INT_ALIST *, int));
-extern char *find_token_in_alist __P((int, STRING_INT_ALIST *, int));
-extern int find_index_in_alist __P((char *, STRING_INT_ALIST *, int));
+extern int find_string_in_alist PARAMS((char *, STRING_INT_ALIST *, int));
+extern char *find_token_in_alist PARAMS((int, STRING_INT_ALIST *, int));
+extern int find_index_in_alist PARAMS((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, const char *, int));
-extern void strip_leading __P((char *));
-extern void strip_trailing __P((char *, int, int));
-extern void xbcopy __P((char *, char *, int));
+extern char *substring PARAMS((const char *, int, int));
+extern char *strsub PARAMS((char *, char *, char *, int));
+extern char *strcreplace PARAMS((char *, int, const char *, int));
+extern void strip_leading PARAMS((char *));
+extern void strip_trailing PARAMS((char *, int, int));
+extern void xbcopy PARAMS((char *, char *, int));
/* Functions from version.c. */
-extern char *shell_version_string __P((void));
-extern void show_shell_version __P((int));
+extern char *shell_version_string PARAMS((void));
+extern void show_shell_version PARAMS((int));
/* Functions from the bash library, lib/sh/libsh.a. These should really
go into a separate include file. */
/* declarations for functions defined in lib/sh/casemod.c */
-extern char *sh_modcase __P((const char *, char *, int));
+extern char *sh_modcase PARAMS((const char *, char *, int));
/* Defines for flags argument to sh_modcase. These need to agree with what's
in lib/sh/casemode.c */
@@ -189,7 +191,7 @@ extern char *sh_modcase __P((const char *, char *, int));
#define CASE_USEWORDS 0x1000
/* declarations for functions defined in lib/sh/clktck.c */
-extern long get_clk_tck __P((void));
+extern long get_clk_tck PARAMS((void));
/* declarations for functions defined in lib/sh/clock.c */
extern void clock_t_to_secs ();
@@ -197,7 +199,7 @@ extern void print_clock_t ();
/* Declarations for functions defined in lib/sh/dprintf.c */
#if !defined (HAVE_DPRINTF)
-extern void dprintf __P((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
+extern void dprintf PARAMS((int, const char *, ...)) __attribute__((__format__ (printf, 2, 3)));
#endif
/* Declarations for functions defined in lib/sh/fmtulong.c */
@@ -206,19 +208,19 @@ extern void dprintf __P((int, const char *, ...)) __attribute__((__format__ (pr
#define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */
#define FL_UNSIGNED 0x08 /* don't add any sign */
-extern char *fmtulong __P((unsigned long int, int, char *, size_t, int));
+extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int));
/* Declarations for functions defined in lib/sh/fmtulong.c */
#if defined (HAVE_LONG_LONG)
-extern char *fmtullong __P((unsigned long long int, int, char *, size_t, int));
+extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int));
#endif
/* Declarations for functions defined in lib/sh/fmtumax.c */
-extern char *fmtumax __P((uintmax_t, int, char *, size_t, int));
+extern char *fmtumax PARAMS((uintmax_t, int, char *, size_t, int));
/* Declarations for functions defined in lib/sh/fnxform.c */
-extern char *fnx_fromfs __P((char *, size_t));
-extern char *fnx_tofs __P((char *, size_t));
+extern char *fnx_fromfs PARAMS((char *, size_t));
+extern char *fnx_tofs PARAMS((char *, size_t));
/* Declarations for functions defined in lib/sh/fpurge.c */
@@ -228,25 +230,25 @@ extern char *fnx_tofs __P((char *, size_t));
#if HAVE_FPURGE
# define fpurge _bash_fpurge
#endif
-extern int fpurge __P((FILE *stream));
+extern int fpurge PARAMS((FILE *stream));
#endif /* HAVE_DECL_FPURGE */
#endif /* NEED_FPURGE_DECL */
/* Declarations for functions defined in lib/sh/getcwd.c */
#if !defined (HAVE_GETCWD)
-extern char *getcwd __P((char *, size_t));
+extern char *getcwd PARAMS((char *, size_t));
#endif
/* Declarations for functions defined in lib/sh/input_avail.c */
-extern int input_avail __P((int));
+extern int input_avail PARAMS((int));
/* Declarations for functions defined in lib/sh/itos.c */
-extern char *inttostr __P((intmax_t, char *, size_t));
-extern char *itos __P((intmax_t));
-extern char *mitos __P((intmax_t));
-extern char *uinttostr __P((uintmax_t, char *, size_t));
-extern char *uitos __P((uintmax_t));
+extern char *inttostr PARAMS((intmax_t, char *, size_t));
+extern char *itos PARAMS((intmax_t));
+extern char *mitos PARAMS((intmax_t));
+extern char *uinttostr PARAMS((uintmax_t, char *, size_t));
+extern char *uitos PARAMS((uintmax_t));
/* declarations for functions defined in lib/sh/makepath.c */
#define MP_DOTILDE 0x01
@@ -254,45 +256,45 @@ extern char *uitos __P((uintmax_t));
#define MP_RMDOT 0x04
#define MP_IGNDOT 0x08
-extern char *sh_makepath __P((const char *, const char *, int));
+extern char *sh_makepath PARAMS((const char *, const char *, int));
/* declarations for functions defined in lib/sh/mbscasecmp.c */
#if !defined (HAVE_MBSCASECMP)
-extern char *mbscasecmp __P((const char *, const char *));
+extern char *mbscasecmp PARAMS((const char *, const char *));
#endif
/* declarations for functions defined in lib/sh/mbschr.c */
#if !defined (HAVE_MBSCHR)
-extern char *mbschr __P((const char *, int));
+extern char *mbschr PARAMS((const char *, int));
#endif
/* declarations for functions defined in lib/sh/mbscmp.c */
#if !defined (HAVE_MBSCMP)
-extern char *mbscmp __P((const char *, const char *));
+extern char *mbscmp PARAMS((const char *, const char *));
#endif
/* declarations for functions defined in lib/sh/netconn.c */
-extern int isnetconn __P((int));
+extern int isnetconn PARAMS((int));
/* declarations for functions defined in lib/sh/netopen.c */
-extern int netopen __P((char *));
+extern int netopen PARAMS((char *));
/* Declarations for functions defined in lib/sh/oslib.c */
#if !defined (HAVE_DUP2) || defined (DUP2_BROKEN)
-extern int dup2 __P((int, int));
+extern int dup2 PARAMS((int, int));
#endif
#if !defined (HAVE_GETDTABLESIZE)
-extern int getdtablesize __P((void));
+extern int getdtablesize PARAMS((void));
#endif /* !HAVE_GETDTABLESIZE */
#if !defined (HAVE_GETHOSTNAME)
-extern int gethostname __P((char *, int));
+extern int gethostname PARAMS((char *, int));
#endif /* !HAVE_GETHOSTNAME */
-extern int getmaxgroups __P((void));
-extern long getmaxchild __P((void));
+extern int getmaxgroups PARAMS((void));
+extern long getmaxchild PARAMS((void));
/* declarations for functions defined in lib/sh/pathcanon.c */
#define PATH_CHECKDOTDOT 0x0001
@@ -300,71 +302,78 @@ extern long getmaxchild __P((void));
#define PATH_HARDPATH 0x0004
#define PATH_NOALLOC 0x0008
-extern char *sh_canonpath __P((char *, int));
+extern char *sh_canonpath PARAMS((char *, int));
/* declarations for functions defined in lib/sh/pathphys.c */
-extern char *sh_physpath __P((char *, int));
-extern char *sh_realpath __P((const char *, char *));
+extern char *sh_physpath PARAMS((char *, int));
+extern char *sh_realpath PARAMS((const char *, char *));
+
+/* declarations for functions defined in lib/sh/random.c */
+extern int brand PARAMS((void));
+extern void sbrand PARAMS((unsigned long)); /* set bash random number generator. */
+extern void seedrand PARAMS((void)); /* seed generator randomly */
+extern void seedrand32 PARAMS((void));
+extern u_bits32_t get_urandom32 PARAMS((void));
/* declarations for functions defined in lib/sh/setlinebuf.c */
#ifdef NEED_SH_SETLINEBUF_DECL
-extern int sh_setlinebuf __P((FILE *));
+extern int sh_setlinebuf PARAMS((FILE *));
#endif
/* declarations for functions defined in lib/sh/shaccess.c */
-extern int sh_eaccess __P((const char *, int));
+extern int sh_eaccess PARAMS((const char *, int));
/* declarations for functions defined in lib/sh/shmatch.c */
-extern int sh_regmatch __P((const char *, const char *, int));
+extern int sh_regmatch PARAMS((const char *, const char *, int));
/* defines for flags argument to sh_regmatch. */
#define SHMAT_SUBEXP 0x001 /* save subexpressions in SH_REMATCH */
#define SHMAT_PWARN 0x002 /* print a warning message on invalid regexp */
/* declarations for functions defined in lib/sh/shmbchar.c */
-extern size_t mbstrlen __P((const char *));
-extern char *mbsmbchar __P((const char *));
-extern int sh_mbsnlen __P((const char *, size_t, int));
+extern size_t mbstrlen PARAMS((const char *));
+extern char *mbsmbchar PARAMS((const char *));
+extern int sh_mbsnlen PARAMS((const char *, size_t, int));
/* declarations for functions defined in lib/sh/shquote.c */
-extern char *sh_single_quote __P((const char *));
-extern char *sh_double_quote __P((const char *));
-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 char *sh_quote_reusable __P((char *, int));
-extern int sh_contains_shell_metas __P((const char *));
-extern int sh_contains_quotes __P((const char *));
+extern char *sh_single_quote PARAMS((const char *));
+extern char *sh_double_quote PARAMS((const char *));
+extern char *sh_mkdoublequoted PARAMS((const char *, int, int));
+extern char *sh_un_double_quote PARAMS((char *));
+extern char *sh_backslash_quote PARAMS((char *, const char *, int));
+extern char *sh_backslash_quote_for_double_quotes PARAMS((char *));
+extern char *sh_quote_reusable PARAMS((char *, int));
+extern int sh_contains_shell_metas PARAMS((const char *));
+extern int sh_contains_quotes PARAMS((const char *));
/* declarations for functions defined in lib/sh/spell.c */
-extern int spname __P((char *, char *));
-extern char *dirspell __P((char *));
+extern int spname PARAMS((char *, char *));
+extern char *dirspell PARAMS((char *));
/* declarations for functions defined in lib/sh/strcasecmp.c */
#if !defined (HAVE_STRCASECMP)
-extern int strncasecmp __P((const char *, const char *, size_t));
-extern int strcasecmp __P((const char *, const char *));
+extern int strncasecmp PARAMS((const char *, const char *, size_t));
+extern int strcasecmp PARAMS((const char *, const char *));
#endif /* HAVE_STRCASECMP */
/* declarations for functions defined in lib/sh/strcasestr.c */
#if ! HAVE_STRCASESTR
-extern char *strcasestr __P((const char *, const char *));
+extern char *strcasestr PARAMS((const char *, const char *));
#endif
/* declarations for functions defined in lib/sh/strchrnul.c */
#if ! HAVE_STRCHRNUL
-extern char *strchrnul __P((const char *, int));
+extern char *strchrnul PARAMS((const char *, int));
#endif
/* declarations for functions defined in lib/sh/strerror.c */
#if !defined (HAVE_STRERROR) && !defined (strerror)
-extern char *strerror __P((int));
+extern char *strerror PARAMS((int));
#endif
/* declarations for functions defined in lib/sh/strftime.c */
#if !defined (HAVE_STRFTIME) && defined (NEED_STRFTIME_DECL)
-extern size_t strftime __P((char *, size_t, const char *, const struct tm *));
+extern size_t strftime PARAMS((char *, size_t, const char *, const struct tm *));
#endif
/* declarations for functions and structures defined in lib/sh/stringlist.c */
@@ -376,89 +385,90 @@ typedef struct _list_of_strings {
int list_len;
} STRINGLIST;
-typedef int sh_strlist_map_func_t __P((char *));
-
-extern STRINGLIST *strlist_create __P((int));
-extern STRINGLIST *strlist_resize __P((STRINGLIST *, int));
-extern void strlist_flush __P((STRINGLIST *));
-extern void strlist_dispose __P((STRINGLIST *));
-extern int strlist_remove __P((STRINGLIST *, char *));
-extern STRINGLIST *strlist_copy __P((STRINGLIST *));
-extern STRINGLIST *strlist_merge __P((STRINGLIST *, STRINGLIST *));
-extern STRINGLIST *strlist_append __P((STRINGLIST *, STRINGLIST *));
-extern STRINGLIST *strlist_prefix_suffix __P((STRINGLIST *, char *, char *));
-extern void strlist_print __P((STRINGLIST *, char *));
-extern void strlist_walk __P((STRINGLIST *, sh_strlist_map_func_t *));
-extern void strlist_sort __P((STRINGLIST *));
+typedef int sh_strlist_map_func_t PARAMS((char *));
+
+extern STRINGLIST *strlist_create PARAMS((int));
+extern STRINGLIST *strlist_resize PARAMS((STRINGLIST *, int));
+extern void strlist_flush PARAMS((STRINGLIST *));
+extern void strlist_dispose PARAMS((STRINGLIST *));
+extern int strlist_remove PARAMS((STRINGLIST *, char *));
+extern STRINGLIST *strlist_copy PARAMS((STRINGLIST *));
+extern STRINGLIST *strlist_merge PARAMS((STRINGLIST *, STRINGLIST *));
+extern STRINGLIST *strlist_append PARAMS((STRINGLIST *, STRINGLIST *));
+extern STRINGLIST *strlist_prefix_suffix PARAMS((STRINGLIST *, char *, char *));
+extern void strlist_print PARAMS((STRINGLIST *, char *));
+extern void strlist_walk PARAMS((STRINGLIST *, sh_strlist_map_func_t *));
+extern void strlist_sort PARAMS((STRINGLIST *));
/* declarations for functions defined in lib/sh/stringvec.c */
-extern char **strvec_create __P((int));
-extern char **strvec_resize __P((char **, int));
-extern char **strvec_mcreate __P((int));
-extern char **strvec_mresize __P((char **, int));
-extern void strvec_flush __P((char **));
-extern void strvec_dispose __P((char **));
-extern int strvec_remove __P((char **, char *));
-extern int strvec_len __P((char **));
-extern int strvec_search __P((char **, char *));
-extern char **strvec_copy __P((char **));
-extern int strvec_strcmp __P((char **, char **));
-extern void strvec_sort __P((char **));
-
-extern char **strvec_from_word_list __P((WORD_LIST *, int, int, int *));
-extern WORD_LIST *strvec_to_word_list __P((char **, int, int));
+extern char **strvec_create PARAMS((int));
+extern char **strvec_resize PARAMS((char **, int));
+extern char **strvec_mcreate PARAMS((int));
+extern char **strvec_mresize PARAMS((char **, int));
+extern void strvec_flush PARAMS((char **));
+extern void strvec_dispose PARAMS((char **));
+extern int strvec_remove PARAMS((char **, char *));
+extern int strvec_len PARAMS((char **));
+extern int strvec_search PARAMS((char **, char *));
+extern char **strvec_copy PARAMS((char **));
+extern int strvec_posixcmp PARAMS((char **, char **));
+extern int strvec_strcmp PARAMS((char **, char **));
+extern void strvec_sort PARAMS((char **, int));
+
+extern char **strvec_from_word_list PARAMS((WORD_LIST *, int, int, int *));
+extern WORD_LIST *strvec_to_word_list PARAMS((char **, int, int));
/* declarations for functions defined in lib/sh/strnlen.c */
#if !defined (HAVE_STRNLEN)
-extern size_t strnlen __P((const char *, size_t));
+extern size_t strnlen PARAMS((const char *, size_t));
#endif
/* declarations for functions defined in lib/sh/strpbrk.c */
#if !defined (HAVE_STRPBRK)
-extern char *strpbrk __P((const char *, const char *));
+extern char *strpbrk PARAMS((const char *, const char *));
#endif
/* declarations for functions defined in lib/sh/strtod.c */
#if !defined (HAVE_STRTOD)
-extern double strtod __P((const char *, char **));
+extern double strtod PARAMS((const char *, char **));
#endif
/* declarations for functions defined in lib/sh/strtol.c */
#if !HAVE_DECL_STRTOL
-extern long strtol __P((const char *, char **, int));
+extern long strtol PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtoll.c */
#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOLL
-extern long long strtoll __P((const char *, char **, int));
+extern long long strtoll PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtoul.c */
#if !HAVE_DECL_STRTOUL
-extern unsigned long strtoul __P((const char *, char **, int));
+extern unsigned long strtoul PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtoull.c */
#if defined (HAVE_LONG_LONG) && !HAVE_DECL_STRTOULL
-extern unsigned long long strtoull __P((const char *, char **, int));
+extern unsigned long long strtoull PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strimax.c */
#if !HAVE_DECL_STRTOIMAX
-extern intmax_t strtoimax __P((const char *, char **, int));
+extern intmax_t strtoimax PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strumax.c */
#if !HAVE_DECL_STRTOUMAX
-extern uintmax_t strtoumax __P((const char *, char **, int));
+extern uintmax_t strtoumax PARAMS((const char *, char **, int));
#endif
/* declarations for functions defined in lib/sh/strtrans.c */
-extern char *ansicstr __P((char *, int, int, int *, int *));
-extern char *ansic_quote __P((char *, int, int *));
-extern int ansic_shouldquote __P((const char *));
-extern char *ansiexpand __P((char *, int, int, int *));
+extern char *ansicstr PARAMS((char *, int, int, int *, int *));
+extern char *ansic_quote PARAMS((char *, int, int *));
+extern int ansic_shouldquote PARAMS((const char *));
+extern char *ansiexpand PARAMS((char *, int, int, int *));
/* declarations for functions defined in lib/sh/timeval.c. No prototypes
so we don't have to count on having a definition of struct timeval in
@@ -470,67 +480,69 @@ extern void print_timeval ();
#define MT_USETMPDIR 0x0001
#define MT_READWRITE 0x0002
#define MT_USERANDOM 0x0004
+#define MT_TEMPLATE 0x0008
-extern char *sh_mktmpname __P((char *, int));
-extern int sh_mktmpfd __P((char *, int, char **));
-/* extern FILE *sh_mktmpfp __P((char *, int, char **)); */
+extern char *sh_mktmpname PARAMS((char *, int));
+extern int sh_mktmpfd PARAMS((char *, int, char **));
+/* extern FILE *sh_mktmpfp PARAMS((char *, int, char **)); */
+extern char *sh_mktmpdir PARAMS((char *, int));
/* declarations for functions defined in lib/sh/uconvert.c */
-extern int uconvert __P((char *, long *, long *));
+extern int uconvert PARAMS((char *, long *, long *, char **));
/* declarations for functions defined in lib/sh/ufuncs.c */
-extern unsigned int falarm __P((unsigned int, unsigned int));
-extern unsigned int fsleep __P((unsigned int, unsigned int));
+extern unsigned int falarm PARAMS((unsigned int, unsigned int));
+extern unsigned int fsleep PARAMS((unsigned int, unsigned int));
/* declarations for functions defined in lib/sh/unicode.c */
-extern int u32cconv __P((unsigned long, char *));
-extern void u32reset __P((void));
+extern int u32cconv PARAMS((unsigned long, char *));
+extern void u32reset PARAMS((void));
/* declarations for functions defined in lib/sh/utf8.c */
-extern char *utf8_mbschr __P((const char *, int));
-extern int utf8_mbscmp __P((const char *, const char *));
-extern char *utf8_mbsmbchar __P((const char *));
-extern int utf8_mbsnlen __P((const char *, size_t, int));
-extern int utf8_mblen __P((const char *, size_t));
-extern size_t utf8_mbstrlen __P((const char *));
+extern char *utf8_mbschr PARAMS((const char *, int));
+extern int utf8_mbscmp PARAMS((const char *, const char *));
+extern char *utf8_mbsmbchar PARAMS((const char *));
+extern int utf8_mbsnlen PARAMS((const char *, size_t, int));
+extern int utf8_mblen PARAMS((const char *, size_t));
+extern size_t utf8_mbstrlen PARAMS((const char *));
/* declarations for functions defined in lib/sh/wcsnwidth.c */
#if defined (HANDLE_MULTIBYTE)
-extern int wcsnwidth __P((const wchar_t *, size_t, int));
+extern int wcsnwidth PARAMS((const wchar_t *, size_t, int));
#endif
/* declarations for functions defined in lib/sh/winsize.c */
-extern void get_new_window_size __P((int, int *, int *));
+extern void get_new_window_size PARAMS((int, int *, int *));
/* declarations for functions defined in lib/sh/zcatfd.c */
-extern int zcatfd __P((int, int, char *));
+extern int zcatfd PARAMS((int, int, char *));
/* declarations for functions defined in lib/sh/zgetline.c */
-extern ssize_t zgetline __P((int, char **, size_t *, int, int));
+extern ssize_t zgetline PARAMS((int, char **, size_t *, int, int));
/* declarations for functions defined in lib/sh/zmapfd.c */
-extern int zmapfd __P((int, char **, char *));
+extern int zmapfd PARAMS((int, char **, char *));
/* declarations for functions defined in lib/sh/zread.c */
-extern ssize_t zread __P((int, char *, size_t));
-extern ssize_t zreadretry __P((int, char *, size_t));
-extern ssize_t zreadintr __P((int, char *, size_t));
-extern ssize_t zreadc __P((int, char *));
-extern ssize_t zreadcintr __P((int, char *));
-extern ssize_t zreadn __P((int, char *, size_t));
-extern void zreset __P((void));
-extern void zsyncfd __P((int));
+extern ssize_t zread PARAMS((int, char *, size_t));
+extern ssize_t zreadretry PARAMS((int, char *, size_t));
+extern ssize_t zreadintr PARAMS((int, char *, size_t));
+extern ssize_t zreadc PARAMS((int, char *));
+extern ssize_t zreadcintr PARAMS((int, char *));
+extern ssize_t zreadn PARAMS((int, char *, size_t));
+extern void zreset PARAMS((void));
+extern void zsyncfd PARAMS((int));
/* declarations for functions defined in lib/sh/zwrite.c */
-extern int zwrite __P((int, char *, size_t));
+extern int zwrite PARAMS((int, char *, size_t));
/* declarations for functions defined in lib/glob/gmisc.c */
-extern int match_pattern_char __P((char *, char *, int));
-extern int umatchlen __P((char *, size_t));
+extern int match_pattern_char PARAMS((char *, char *, int));
+extern int umatchlen PARAMS((char *, size_t));
#if defined (HANDLE_MULTIBYTE)
-extern int match_pattern_wchar __P((wchar_t *, wchar_t *, int));
-extern int wmatchlen __P((wchar_t *, size_t));
+extern int match_pattern_wchar PARAMS((wchar_t *, wchar_t *, int));
+extern int wmatchlen PARAMS((wchar_t *, size_t));
#endif
#endif /* _EXTERNS_H_ */
diff --git a/findcmd.c b/findcmd.c
index c3f00a40..e235705a 100644
--- a/findcmd.c
+++ b/findcmd.c
@@ -1,6 +1,6 @@
/* findcmd.c -- Functions to search for commands by name. */
-/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,13 +52,13 @@ extern int errno;
#endif
/* Static functions defined and used in this file. */
-static char *_find_user_command_internal __P((const char *, int));
-static char *find_user_command_internal __P((const char *, int));
-static char *find_user_command_in_path __P((const char *, char *, int));
-static char *find_in_path_element __P((const char *, char *, int, int, struct stat *));
-static char *find_absolute_program __P((const char *, int));
+static char *_find_user_command_internal PARAMS((const char *, int));
+static char *find_user_command_internal PARAMS((const char *, int));
+static char *find_user_command_in_path PARAMS((const char *, char *, int));
+static char *find_in_path_element PARAMS((const char *, char *, int, int, struct stat *));
+static char *find_absolute_program PARAMS((const char *, int));
-static char *get_next_path_element __P((char *, int *));
+static char *get_next_path_element PARAMS((char *, int *));
/* The file name which we would try to execute, except that it isn't
possible to execute it. This is the first file that matches the
@@ -397,6 +397,14 @@ search_for_command (pathname, flags)
if (st & FS_EXECABLE)
phash_insert ((char *)pathname, command, dot_found_in_search, 1);
}
+ /* If we're in posix mode, don't add files without the execute bit
+ to the hash table. */
+ else if (posixly_correct)
+ {
+ 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);
}
diff --git a/findcmd.h b/findcmd.h
index 34b49149..bf457814 100644
--- a/findcmd.h
+++ b/findcmd.h
@@ -1,6 +1,6 @@
/* findcmd.h - functions from findcmd.c. */
-/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2015,2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -28,16 +28,16 @@
#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 *));
+extern int file_status PARAMS((const char *));
+extern int executable_file PARAMS((const char *));
+extern int is_directory PARAMS((const char *));
+extern int executable_or_directory PARAMS((const char *));
+extern char *find_user_command PARAMS((const char *));
+extern char *find_in_path PARAMS((const char *, char *, int));
+extern char *find_path_file PARAMS((const char *));
+extern char *search_for_command PARAMS((const char *, int));
+extern char *user_command_matches PARAMS((const char *, int, int));
+extern void setup_exec_ignore PARAMS((char *));
extern int dot_found_in_search;
diff --git a/flags.c b/flags.c
index 6e208419..983f9a50 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -33,7 +33,7 @@
#endif
#if defined (JOB_CONTROL)
-extern int set_job_control __P((int));
+extern int set_job_control PARAMS((int));
#endif
/* **************************************************************** */
@@ -112,9 +112,6 @@ int no_symbolic_links = 0;
int lexical_scoping = 0;
#endif
-/* Non-zero means no such thing as invisible variables. */
-int no_invisible_vars = 0;
-
/* Non-zero means look up and remember command names in a hash table, */
int hashing_enabled = 1;
@@ -201,7 +198,6 @@ const struct flags_alist shell_flags[] = {
#if defined (BANG_HISTORY)
{ 'H', &histexp_flag },
#endif /* BANG_HISTORY */
- { 'I', &no_invisible_vars },
{ 'P', &no_symbolic_links },
{ 'T', &function_trace_mode },
{0, (int *)NULL}
@@ -349,7 +345,7 @@ reset_shell_flags ()
place_keywords_in_env = read_but_dont_execute = just_one_command = 0;
noclobber = unbound_vars_is_error = 0;
echo_command_at_execute = jobs_m_flag = forced_interactive = 0;
- no_symbolic_links = no_invisible_vars = 0;
+ no_symbolic_links = 0;
privileged_mode = pipefail_opt = 0;
error_trace_mode = function_trace_mode = 0;
@@ -364,11 +360,7 @@ reset_shell_flags ()
#endif
#if defined (BANG_HISTORY)
-# if defined (STRICT_POSIX)
- history_expansion = 0;
-# else
- history_expansion = 1;
-# endif /* STRICT_POSIX */
+ histexp_flag = 0;
#endif
#if defined (BRACE_EXPANSION)
diff --git a/flags.h b/flags.h
index fdbf7f97..a3b5daa9 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,7 +45,7 @@ extern int
disallow_filename_globbing,
place_keywords_in_env, read_but_dont_execute,
just_one_command, unbound_vars_is_error, echo_input_at_read, verbose_flag,
- echo_command_at_execute, no_invisible_vars, noclobber,
+ echo_command_at_execute, noclobber,
hashing_enabled, forced_interactive, privileged_mode, jobs_m_flag,
asynchronous_notification, interactive_comments, no_symbolic_links,
function_trace_mode, error_trace_mode, pipefail_opt;
@@ -71,15 +71,15 @@ extern int restricted;
extern int restricted_shell;
#endif /* RESTRICTED_SHELL */
-extern int *find_flag __P((int));
-extern int change_flag __P((int, int));
-extern char *which_set_flags __P((void));
-extern void reset_shell_flags __P((void));
+extern int *find_flag PARAMS((int));
+extern int change_flag PARAMS((int, int));
+extern char *which_set_flags PARAMS((void));
+extern void reset_shell_flags PARAMS((void));
-extern char *get_current_flags __P((void));
-extern void set_current_flags __P((const char *));
+extern char *get_current_flags PARAMS((void));
+extern void set_current_flags PARAMS((const char *));
-extern void initialize_flags __P((void));
+extern void initialize_flags PARAMS((void));
/* A macro for efficiency. */
#define change_flag_char(flag, on_or_off) change_flag (flag, on_or_off)
diff --git a/general.c b/general.c
index 9542963a..50d52167 100644
--- a/general.c
+++ b/general.c
@@ -1,6 +1,6 @@
/* general.c -- Stuff that is used by all files. */
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -44,6 +44,7 @@
#include "findcmd.h"
#include "test.h"
#include "trap.h"
+#include "pathexp.h"
#include "builtins/common.h"
@@ -61,9 +62,9 @@ extern int errno;
# include <sys/cygwin.h>
#endif
-static char *bash_special_tilde_expansions __P((char *));
-static int unquoted_tilde_word __P((const char *));
-static void initialize_group_array __P((void));
+static char *bash_special_tilde_expansions PARAMS((char *));
+static int unquoted_tilde_word PARAMS((const char *));
+static void initialize_group_array PARAMS((void));
/* A standard error message to use when getcwd() returns NULL. */
const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directories");
@@ -75,6 +76,7 @@ const char * const bash_getcwd_errstr = N_("getcwd: cannot access parent directo
expand_aliases
inherit_errexit
print_shift_error
+ posixglob
and the following variables which cannot be user-modified:
@@ -95,6 +97,8 @@ static struct {
0
};
+static char *saved_posix_vars = 0;
+
void
posix_initialize (on)
int on;
@@ -106,11 +110,16 @@ posix_initialize (on)
inherit_errexit = 1;
source_searches_cwd = 0;
print_shift_error = 1;
-
}
/* Things that should be turned on when posix mode is disabled. */
- if (on == 0)
+ else if (saved_posix_vars) /* on == 0, restore saved settings */
+ {
+ set_posix_options (saved_posix_vars);
+ free (saved_posix_vars);
+ saved_posix_vars = 0;
+ }
+ else /* on == 0, restore a default set of settings */
{
source_searches_cwd = 1;
expand_aliases = interactive_shell;
@@ -137,6 +146,13 @@ get_posix_options (bitmap)
return bitmap;
}
+#undef save_posix_options
+void
+save_posix_options ()
+{
+ saved_posix_vars = get_posix_options (saved_posix_vars);
+}
+
void
set_posix_options (bitmap)
const char *bitmap;
@@ -338,21 +354,21 @@ check_selfref (name, value, flags)
}
/* 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,
+ does not contain a dollar sign, nor is quoted in any way.
+ If CHECK_WORD is non-zero,
the word is checked to ensure that it consists of only letters,
- digits, and underscores. */
+ digits, and underscores, and does not consist of all digits. */
int
check_identifier (word, check_word)
WORD_DESC *word;
int check_word;
{
- if ((word->flags & (W_HASDOLLAR|W_QUOTED)) || all_digits (word->word))
+ if (word->flags & (W_HASDOLLAR|W_QUOTED)) /* XXX - HASDOLLAR? */
{
internal_error (_("`%s': not a valid identifier"), word->word);
return (0);
}
- else if (check_word && legal_identifier (word->word) == 0)
+ else if (check_word && (all_digits (word->word) || legal_identifier (word->word) == 0))
{
internal_error (_("`%s': not a valid identifier"), word->word);
return (0);
@@ -409,7 +425,8 @@ legal_alias_name (string, flags)
/* Returns non-zero if STRING is an assignment statement. The returned value
is the index of the `=' sign. If FLAGS&1 we are expecting a compound assignment
- and don't want an array subscript before the `='. */
+ and require an array subscript before the `=' to denote an assignment
+ statement. */
int
assignment (string, flags)
const char *string;
@@ -421,7 +438,17 @@ assignment (string, flags)
c = string[indx = 0];
#if defined (ARRAY_VARS)
- if ((legal_variable_starter (c) == 0) && ((flags&1) == 0 || c != '[')) /* ] */
+ /* If parser_state includes PST_COMPASSIGN, FLAGS will include 1, so we are
+ parsing the contents of a compound assignment. If parser_state includes
+ PST_REPARSE, we are in the middle of an assignment statement and breaking
+ the words between the parens into words and assignment statements, but
+ we don't need to check for that right now. Within a compound assignment,
+ the subscript is required to make the word an assignment statement. If
+ we don't have a subscript, even if the word is a valid assignment
+ statement otherwise, we don't want to treat it as one. */
+ if ((flags & 1) && c != '[') /* ] */
+ return (0);
+ else if ((flags & 1) == 0 && legal_variable_starter (c) == 0)
#else
if (legal_variable_starter (c) == 0)
#endif
@@ -1023,7 +1050,7 @@ extract_colon_unit (string, p_index)
/* **************************************************************** */
#if defined (PUSHD_AND_POPD)
-extern char *get_dirstack_from_string __P((char *));
+extern char *get_dirstack_from_string PARAMS((char *));
#endif
static char **bash_tilde_prefixes;
@@ -1172,21 +1199,9 @@ bash_tilde_expand (s, assign_p)
const char *s;
int assign_p;
{
- int old_immed, old_term, r;
+ int 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
- jump to top_level, but we don't want to run any trap commands in a signal
- handler context. We might be able to get away with just checking for
- things like SIGINT and SIGQUIT. */
- 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);
if (assign_p == 2)
@@ -1195,11 +1210,6 @@ 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;
return (ret);
diff --git a/general.h b/general.h
index 638d2372..7e4db8e6 100644
--- a/general.h
+++ b/general.h
@@ -1,6 +1,6 @@
/* general.h -- defines that everybody likes to use. */
-/* Copyright (C) 1993-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -62,7 +62,7 @@ extern char *strchr (), *strrchr ();
#endif
#if !defined (strcpy) && (defined (HAVE_DECL_STRCPY) && !HAVE_DECL_STRCPY)
-extern char *strcpy __P((char *, const char *));
+extern char *strcpy PARAMS((char *, const char *));
#endif
#if !defined (savestring)
@@ -205,47 +205,48 @@ typedef char **CPPFunction (); /* no longer used */
/* Shell function typedefs with prototypes */
/* `Generic' function pointer typedefs */
-typedef int sh_intfunc_t __P((int));
-typedef int sh_ivoidfunc_t __P((void));
-typedef int sh_icpfunc_t __P((char *));
-typedef int sh_icppfunc_t __P((char **));
-typedef int sh_iptrfunc_t __P((PTR_T));
+typedef int sh_intfunc_t PARAMS((int));
+typedef int sh_ivoidfunc_t PARAMS((void));
+typedef int sh_icpfunc_t PARAMS((char *));
+typedef int sh_icppfunc_t PARAMS((char **));
+typedef int sh_iptrfunc_t PARAMS((PTR_T));
-typedef void sh_voidfunc_t __P((void));
-typedef void sh_vintfunc_t __P((int));
-typedef void sh_vcpfunc_t __P((char *));
-typedef void sh_vcppfunc_t __P((char **));
-typedef void sh_vptrfunc_t __P((PTR_T));
+typedef void sh_voidfunc_t PARAMS((void));
+typedef void sh_vintfunc_t PARAMS((int));
+typedef void sh_vcpfunc_t PARAMS((char *));
+typedef void sh_vcppfunc_t PARAMS((char **));
+typedef void sh_vptrfunc_t PARAMS((PTR_T));
-typedef int sh_wdesc_func_t __P((WORD_DESC *));
-typedef int sh_wlist_func_t __P((WORD_LIST *));
+typedef int sh_wdesc_func_t PARAMS((WORD_DESC *));
+typedef int sh_wlist_func_t PARAMS((WORD_LIST *));
-typedef int sh_glist_func_t __P((GENERIC_LIST *));
+typedef int sh_glist_func_t PARAMS((GENERIC_LIST *));
-typedef char *sh_string_func_t __P((char *)); /* like savestring, et al. */
+typedef char *sh_string_func_t PARAMS((char *)); /* like savestring, et al. */
-typedef int sh_msg_func_t __P((const char *, ...)); /* printf(3)-like */
-typedef void sh_vmsg_func_t __P((const char *, ...)); /* printf(3)-like */
+typedef int sh_msg_func_t PARAMS((const char *, ...)); /* printf(3)-like */
+typedef void sh_vmsg_func_t PARAMS((const char *, ...)); /* printf(3)-like */
/* Specific function pointer typedefs. Most of these could be done
with #defines. */
-typedef void sh_sv_func_t __P((char *)); /* sh_vcpfunc_t */
-typedef void sh_free_func_t __P((PTR_T)); /* sh_vptrfunc_t */
-typedef void sh_resetsig_func_t __P((int)); /* sh_vintfunc_t */
+typedef void sh_sv_func_t PARAMS((char *)); /* sh_vcpfunc_t */
+typedef void sh_free_func_t PARAMS((PTR_T)); /* sh_vptrfunc_t */
+typedef void sh_resetsig_func_t PARAMS((int)); /* sh_vintfunc_t */
-typedef int sh_ignore_func_t __P((const char *)); /* sh_icpfunc_t */
+typedef int sh_ignore_func_t PARAMS((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_assign_func_t PARAMS((const char *));
+typedef int sh_wassign_func_t PARAMS((WORD_DESC *, int));
-typedef int sh_load_func_t __P((char *));
-typedef void sh_unload_func_t __P((char *));
+typedef int sh_load_func_t PARAMS((char *));
+typedef void sh_unload_func_t PARAMS((char *));
-typedef int sh_builtin_func_t __P((WORD_LIST *)); /* sh_wlist_func_t */
+typedef int sh_builtin_func_t PARAMS((WORD_LIST *)); /* sh_wlist_func_t */
#endif /* SH_FUNCTION_TYPEDEF */
#define NOW ((time_t) time ((time_t *) 0))
+#define GETTIME(tv) gettimeofday(&(tv), NULL)
/* Some defines for calling file status functions. */
#define FS_EXISTS 0x1
@@ -287,77 +288,84 @@ typedef int QSFUNC ();
#endif /* __CYGWIN__ */
#define PATHSEP(c) (ISDIRSEP(c) || (c) == 0)
+#define DOT_OR_DOTDOT(s) (s[0] == '.' && (s[1] == 0 || (s[1] == '.' && s[2] == 0)))
+#if defined (HANDLE_MULTIBYTE)
+#define WDOT_OR_DOTDOT(w) (w[0] == L'.' && (w[1] == L'\0' || (w[1] == L'.' && w[2] == L'\0')))
+#endif
+
#if 0
/* Declarations for functions defined in xmalloc.c */
-extern PTR_T xmalloc __P((size_t));
-extern PTR_T xrealloc __P((void *, size_t));
-extern void xfree __P((void *));
+extern PTR_T xmalloc PARAMS((size_t));
+extern PTR_T xrealloc PARAMS((void *, size_t));
+extern void xfree PARAMS((void *));
#endif
/* Declarations for functions defined in general.c */
-extern void posix_initialize __P((int));
+extern void posix_initialize PARAMS((int));
+
+extern int num_posix_options PARAMS((void));
+extern char *get_posix_options PARAMS((char *));
+extern void set_posix_options PARAMS((const char *));
-extern int num_posix_options __P((void));
-extern char *get_posix_options __P((char *));
-extern void set_posix_options __P((const char *));
+extern void save_posix_options PARAMS((void));
#if defined (RLIMTYPE)
-extern RLIMTYPE string_to_rlimtype __P((char *));
-extern void print_rlimtype __P((RLIMTYPE, int));
+extern RLIMTYPE string_to_rlimtype PARAMS((char *));
+extern void print_rlimtype PARAMS((RLIMTYPE, int));
#endif
-extern int all_digits __P((const char *));
-extern int legal_number __P((const char *, intmax_t *));
-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 valid_nameref_value __P((const char *, int));
-extern int check_selfref __P((const char *, char *, int));
-extern int legal_alias_name __P((const char *, int));
-extern int line_isblank __P((const char *));
-extern int assignment __P((const char *, int));
-
-extern int sh_unset_nodelay_mode __P((int));
-extern int sh_setclexec __P((int));
-extern int sh_validfd __P((int));
-extern int fd_ispipe __P((int));
-extern void check_dev_tty __P((void));
-extern int move_to_high_fd __P((int, int, int));
-extern int check_binary_file __P((const char *, int));
+extern int all_digits PARAMS((const char *));
+extern int legal_number PARAMS((const char *, intmax_t *));
+extern int legal_identifier PARAMS((const char *));
+extern int importable_function_name PARAMS((const char *, size_t));
+extern int exportable_function_name PARAMS((const char *));
+extern int check_identifier PARAMS((WORD_DESC *, int));
+extern int valid_nameref_value PARAMS((const char *, int));
+extern int check_selfref PARAMS((const char *, char *, int));
+extern int legal_alias_name PARAMS((const char *, int));
+extern int line_isblank PARAMS((const char *));
+extern int assignment PARAMS((const char *, int));
+
+extern int sh_unset_nodelay_mode PARAMS((int));
+extern int sh_setclexec PARAMS((int));
+extern int sh_validfd PARAMS((int));
+extern int fd_ispipe PARAMS((int));
+extern void check_dev_tty PARAMS((void));
+extern int move_to_high_fd PARAMS((int, int, int));
+extern int check_binary_file PARAMS((const char *, int));
#ifdef _POSIXSTAT_H_
-extern int same_file __P((const char *, const char *, struct stat *, struct stat *));
+extern int same_file PARAMS((const char *, const char *, struct stat *, struct stat *));
#endif
-extern int sh_openpipe __P((int *));
-extern int sh_closepipe __P((int *));
+extern int sh_openpipe PARAMS((int *));
+extern int sh_closepipe PARAMS((int *));
-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 int file_exists PARAMS((const char *));
+extern int file_isdir PARAMS((const char *));
+extern int file_iswdir PARAMS((const char *));
+extern int path_dot_or_dotdot PARAMS((const char *));
+extern int absolute_pathname PARAMS((const char *));
+extern int absolute_program PARAMS((const 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 *make_absolute PARAMS((const char *, const char *));
+extern char *base_pathname PARAMS((char *));
+extern char *full_pathname PARAMS((char *));
+extern char *polite_directory_format PARAMS((char *));
+extern char *trim_pathname PARAMS((char *, int));
+extern char *printable_filename PARAMS((char *, int));
-extern char *extract_colon_unit __P((char *, int *));
+extern char *extract_colon_unit PARAMS((char *, int *));
-extern void tilde_initialize __P((void));
-extern char *bash_tilde_find_word __P((const char *, int, int *));
-extern char *bash_tilde_expand __P((const char *, int));
+extern void tilde_initialize PARAMS((void));
+extern char *bash_tilde_find_word PARAMS((const char *, int, int *));
+extern char *bash_tilde_expand PARAMS((const char *, int));
-extern int group_member __P((gid_t));
-extern char **get_group_list __P((int *));
-extern int *get_group_array __P((int *));
+extern int group_member PARAMS((gid_t));
+extern char **get_group_list PARAMS((int *));
+extern int *get_group_array PARAMS((int *));
-extern char *conf_standard_path __P((void));
-extern int default_columns __P((void));
+extern char *conf_standard_path PARAMS((void));
+extern int default_columns PARAMS((void));
#endif /* _GENERAL_H_ */
diff --git a/hashcmd.c b/hashcmd.c
index c53764f1..da3af005 100644
--- a/hashcmd.c
+++ b/hashcmd.c
@@ -1,7 +1,7 @@
/* hashcmd.c - functions for managing a hash table mapping command names to
full pathnames. */
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -37,7 +37,7 @@
HASH_TABLE *hashed_filenames = (HASH_TABLE *)NULL;
-static void phash_freedata __P((PTR_T));
+static void phash_freedata PARAMS((PTR_T));
void
phash_create ()
diff --git a/hashcmd.h b/hashcmd.h
index 758f5b4b..2459f200 100644
--- a/hashcmd.h
+++ b/hashcmd.h
@@ -1,6 +1,6 @@
/* hashcmd.h - Common defines for hashing filenames. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -21,7 +21,7 @@
#include "stdc.h"
#include "hashlib.h"
-#define FILENAME_HASH_BUCKETS 64 /* must be power of two */
+#define FILENAME_HASH_BUCKETS 256 /* must be power of two */
extern HASH_TABLE *hashed_filenames;
@@ -35,9 +35,9 @@ typedef struct _pathdata {
#define pathdata(x) ((PATH_DATA *)(x)->data)
-extern void phash_create __P((void));
-extern void phash_flush __P((void));
+extern void phash_create PARAMS((void));
+extern void phash_flush PARAMS((void));
-extern void phash_insert __P((char *, char *, int, int));
-extern int phash_remove __P((const char *));
-extern char *phash_search __P((const char *));
+extern void phash_insert PARAMS((char *, char *, int, int));
+extern int phash_remove PARAMS((const char *));
+extern char *phash_search PARAMS((const char *));
diff --git a/hashlib.c b/hashlib.c
index 8adbe221..4a7e8132 100644
--- a/hashlib.c
+++ b/hashlib.c
@@ -34,11 +34,27 @@
#include "shell.h"
#include "hashlib.h"
+/* tunable constants for rehashing */
+#define HASH_REHASH_MULTIPLIER 4
+#define HASH_REHASH_FACTOR 2
+
+#define HASH_SHOULDGROW(table) \
+ ((table)->nentries >= (table)->nbuckets * HASH_REHASH_FACTOR)
+
+/* an initial approximation */
+#define HASH_SHOULDSHRINK(table) \
+ (((table)->nbuckets > DEFAULT_HASH_BUCKETS) && \
+ ((table)->nentries < (table)->nbuckets / HASH_REHASH_MULTIPLIER))
+
/* Rely on properties of unsigned division (unsigned/int -> unsigned) and
don't discard the upper 32 bits of the value, if present. */
#define HASH_BUCKET(s, t, h) (((h) = hash_string (s)) & ((t)->nbuckets - 1))
-static BUCKET_CONTENTS *copy_bucket_array __P((BUCKET_CONTENTS *, sh_string_func_t *));
+static BUCKET_CONTENTS *copy_bucket_array PARAMS((BUCKET_CONTENTS *, sh_string_func_t *));
+
+static void hash_rehash PARAMS((HASH_TABLE *, int));
+static void hash_grow PARAMS((HASH_TABLE *));
+static void hash_shrink PARAMS((HASH_TABLE *));
/* Make a new hash table with BUCKETS number of buckets. Initialize
each slot in the table to NULL. */
@@ -105,6 +121,60 @@ copy_bucket_array (ba, cpdata)
return new_bucket;
}
+static void
+hash_rehash (table, nsize)
+ HASH_TABLE *table;
+ int nsize;
+{
+ int osize, i, j;
+ BUCKET_CONTENTS **old_bucket_array, *item, *next;
+
+ if (table == NULL || nsize == table->nbuckets)
+ return;
+
+ osize = table->nbuckets;
+ old_bucket_array = table->bucket_array;
+
+ table->nbuckets = nsize;
+ table->bucket_array = (BUCKET_CONTENTS **)xmalloc (table->nbuckets * sizeof (BUCKET_CONTENTS *));
+ for (i = 0; i < table->nbuckets; i++)
+ table->bucket_array[i] = (BUCKET_CONTENTS *)NULL;
+
+ for (j = 0; j < osize; j++)
+ {
+ for (item = old_bucket_array[j]; item; item = next)
+ {
+ next = item->next;
+ i = item->khash & (table->nbuckets - 1);
+ item->next = table->bucket_array[i];
+ table->bucket_array[i] = item;
+ }
+ }
+
+ free (old_bucket_array);
+}
+
+static void
+hash_grow (table)
+ HASH_TABLE *table;
+{
+ int nsize;
+
+ nsize = table->nbuckets * HASH_REHASH_MULTIPLIER;
+ if (nsize > 0) /* overflow */
+ hash_rehash (table, nsize);
+}
+
+static void
+hash_shrink (table)
+ HASH_TABLE *table;
+{
+ int nsize;
+
+ nsize = table->nbuckets / HASH_REHASH_MULTIPLIER;
+ hash_rehash (table, nsize);
+}
+
HASH_TABLE *
hash_copy (table, cpdata)
HASH_TABLE *table;
@@ -136,7 +206,7 @@ hash_copy (table, cpdata)
/* If you want to use 64 bits, use
FNV_OFFSET 14695981039346656037
-FNV_PRIMT 1099511628211
+FNV_PRIME 1099511628211
*/
/* The `khash' check below requires that strings that compare equally with
@@ -149,7 +219,10 @@ hash_string (s)
for (i = FNV_OFFSET; *s; s++)
{
- i *= FNV_PRIME;
+ /* FNV-1a has the XOR first, traditional FNV-1 has the multiply first */
+
+ /* was i *= FNV_PRIME */
+ i += (i<<1) + (i<<4) + (i<<7) + (i<<8) + (i<<24);
i ^= *s;
}
@@ -198,6 +271,12 @@ hash_search (string, table, flags)
if (flags & HASH_CREATE)
{
+ if (HASH_SHOULDGROW (table))
+ {
+ hash_grow (table);
+ bucket = HASH_BUCKET (string, table, hv);
+ }
+
list = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS));
list->next = table->bucket_array[bucket];
table->bucket_array[bucket] = list;
@@ -269,6 +348,9 @@ hash_insert (string, table, flags)
if (item == 0)
{
+ if (HASH_SHOULDGROW (table))
+ hash_grow (table);
+
bucket = HASH_BUCKET (string, table, hv);
item = (BUCKET_CONTENTS *)xmalloc (sizeof (BUCKET_CONTENTS));
@@ -392,6 +474,7 @@ hash_pstats (table, name)
HASH_TABLE *table, *ntable;
int interrupt_immediately = 0;
+int running_trap = 0;
int
signal_is_trapped (s)
@@ -417,6 +500,7 @@ internal_warning (const char *format, ...)
{
}
+int
main ()
{
char string[256];
diff --git a/hashlib.h b/hashlib.h
index 88ea778f..cf2de988 100644
--- a/hashlib.h
+++ b/hashlib.h
@@ -1,6 +1,6 @@
/* hashlib.h -- the data structures used in hashing in Bash. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,26 +45,26 @@ typedef struct hash_table {
int nentries; /* How many entries does this table have. */
} HASH_TABLE;
-typedef int hash_wfunc __P((BUCKET_CONTENTS *));
+typedef int hash_wfunc PARAMS((BUCKET_CONTENTS *));
/* Operations on tables as a whole */
-extern HASH_TABLE *hash_create __P((int));
-extern HASH_TABLE *hash_copy __P((HASH_TABLE *, sh_string_func_t *));
-extern void hash_flush __P((HASH_TABLE *, sh_free_func_t *));
-extern void hash_dispose __P((HASH_TABLE *));
-extern void hash_walk __P((HASH_TABLE *, hash_wfunc *));
+extern HASH_TABLE *hash_create PARAMS((int));
+extern HASH_TABLE *hash_copy PARAMS((HASH_TABLE *, sh_string_func_t *));
+extern void hash_flush PARAMS((HASH_TABLE *, sh_free_func_t *));
+extern void hash_dispose PARAMS((HASH_TABLE *));
+extern void hash_walk PARAMS((HASH_TABLE *, hash_wfunc *));
/* Operations to extract information from or pieces of tables */
-extern int hash_bucket __P((const char *, HASH_TABLE *));
-extern int hash_size __P((HASH_TABLE *));
+extern int hash_bucket PARAMS((const char *, HASH_TABLE *));
+extern int hash_size PARAMS((HASH_TABLE *));
/* Operations on hash table entries */
-extern BUCKET_CONTENTS *hash_search __P((const char *, HASH_TABLE *, int));
-extern BUCKET_CONTENTS *hash_insert __P((char *, HASH_TABLE *, int));
-extern BUCKET_CONTENTS *hash_remove __P((const char *, HASH_TABLE *, int));
+extern BUCKET_CONTENTS *hash_search PARAMS((const char *, HASH_TABLE *, int));
+extern BUCKET_CONTENTS *hash_insert PARAMS((char *, HASH_TABLE *, int));
+extern BUCKET_CONTENTS *hash_remove PARAMS((const char *, HASH_TABLE *, int));
/* Miscellaneous */
-extern unsigned int hash_string __P((const char *));
+extern unsigned int hash_string PARAMS((const char *));
/* Redefine the function as a macro for speed. */
#define hash_items(bucket, table) \
diff --git a/include/posixdir.h b/include/posixdir.h
index 0921c5d7..af5be801 100644
--- a/include/posixdir.h
+++ b/include/posixdir.h
@@ -46,7 +46,7 @@
# define D_NAMLEN(d) ((d)->d_namlen)
#endif /* !HAVE_DIRENT_H */
-/* The bash code fairly consistenly uses d_fileno; make sure it's available */
+/* The bash code fairly consistently uses d_fileno; make sure it's available */
#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO)
# define d_fileno d_ino
#endif
diff --git a/include/posixstat.h b/include/posixstat.h
index 3eb7f290..b6077860 100644
--- a/include/posixstat.h
+++ b/include/posixstat.h
@@ -1,7 +1,7 @@
/* posixstat.h -- Posix stat(2) definitions for systems that
don't have them. */
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -132,6 +132,26 @@
# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+#else /* !S_IRWXU */
+ /* S_IRWXU is defined, but "group" and "other" bits might not be
+ (happens in certain versions of MinGW). */
+# if !defined (S_IRGRP)
+# define S_IRGRP (S_IREAD >> 3) /* read, group */
+# define S_IWGRP (S_IWRITE >> 3) /* write, group */
+# define S_IXGRP (S_IEXEC >> 3) /* execute, group */
+# endif /* !S_IRGRP */
+
+# if !defined (S_IROTH)
+# define S_IROTH (S_IREAD >> 6) /* read, other */
+# define S_IWOTH (S_IWRITE >> 6) /* write, other */
+# define S_IXOTH (S_IEXEC >> 6) /* execute, other */
+# endif /* !S_IROTH */
+# if !defined (S_IRWXG)
+# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
+# endif
+# if !defined (S_IRWXO)
+# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+# endif
#endif /* !S_IRWXU */
/* These are non-standard, but are used in builtins.c$symbolic_umask() */
diff --git a/include/posixtime.h b/include/posixtime.h
index 31bdddf8..a83e436b 100644
--- a/include/posixtime.h
+++ b/include/posixtime.h
@@ -46,4 +46,16 @@
# endif /* !CLK_TCK */
#endif /* !HAVE_SYSCONF && !_SC_CLK_TCK */
+#if !HAVE_TIMEVAL
+struct timeval
+{
+ time_t tv_sec;
+ long int tv_usec;
+};
+#endif
+
+#if !HAVE_GETTIMEOFDAY
+extern int gettimeofday PARAMS((struct timeval *, void *));
+#endif
+
#endif /* _POSIXTIME_H_ */
diff --git a/include/posixwait.h b/include/posixwait.h
index 815ea229..63b59c24 100644
--- a/include/posixwait.h
+++ b/include/posixwait.h
@@ -77,7 +77,11 @@ typedef int WAIT;
# endif /* !WIFSIGNALED */
# if !defined (WIFCORED)
-# define WIFCORED(s) ((s) & 0200)
+# if defined (WCOREDUMP)
+# define WIFCORED(s) (WCOREDUMP(s))
+# else
+# define WIFCORED(s) ((s) & 0200)
+# endif
# endif /* !WIFCORED */
#else /* !_POSIX_VERSION */
diff --git a/include/shmbutil.h b/include/shmbutil.h
index 36902f16..835fb80c 100644
--- a/include/shmbutil.h
+++ b/include/shmbutil.h
@@ -1,6 +1,6 @@
/* shmbutil.h -- utility functions for multibyte characters. */
-/* Copyright (C) 2002-2004 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -29,12 +29,13 @@
#if defined (HANDLE_MULTIBYTE)
#include "shmbchar.h"
-extern size_t xmbsrtowcs __P((wchar_t *, const char **, size_t, mbstate_t *));
-extern size_t xdupmbstowcs __P((wchar_t **, char ***, const char *));
+extern size_t xwcsrtombs PARAMS((char *, const wchar_t **, size_t, mbstate_t *));
+extern size_t xmbsrtowcs PARAMS((wchar_t *, const char **, size_t, mbstate_t *));
+extern size_t xdupmbstowcs PARAMS((wchar_t **, char ***, const char *));
-extern size_t mbstrlen __P((const char *));
+extern size_t mbstrlen PARAMS((const char *));
-extern char *xstrchr __P((const char *, int));
+extern char *xstrchr PARAMS((const char *, int));
extern int locale_mb_cur_max; /* XXX */
extern int locale_utf8locale; /* XXX */
diff --git a/include/shtty.h b/include/shtty.h
index 66500d93..fdf379b8 100644
--- a/include/shtty.h
+++ b/include/shtty.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999 Free Software Foundation, Inc. */
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc. */
/* This file is part of GNU Bash, the Bourne Again SHell.
@@ -67,24 +67,24 @@
/* Get and set terminal attributes for the file descriptor passed as
an argument. */
-extern int ttgetattr __P((int, TTYSTRUCT *));
-extern int ttsetattr __P((int, TTYSTRUCT *));
+extern int ttgetattr PARAMS((int, TTYSTRUCT *));
+extern int ttsetattr PARAMS((int, TTYSTRUCT *));
/* Save and restore the terminal's attributes from static storage. */
-extern void ttsave __P((void));
-extern void ttrestore __P((void));
+extern void ttsave PARAMS((void));
+extern void ttrestore PARAMS((void));
/* Return the attributes corresponding to the file descriptor (0 or 1)
passed as an argument. */
-extern TTYSTRUCT *ttattr __P((int));
+extern TTYSTRUCT *ttattr PARAMS((int));
/* These functions only operate on the passed TTYSTRUCT; they don't
actually change anything with the kernel's current tty settings. */
-extern int tt_setonechar __P((TTYSTRUCT *));
-extern int tt_setnoecho __P((TTYSTRUCT *));
-extern int tt_seteightbit __P((TTYSTRUCT *));
-extern int tt_setnocanon __P((TTYSTRUCT *));
-extern int tt_setcbreak __P((TTYSTRUCT *));
+extern int tt_setonechar PARAMS((TTYSTRUCT *));
+extern int tt_setnoecho PARAMS((TTYSTRUCT *));
+extern int tt_seteightbit PARAMS((TTYSTRUCT *));
+extern int tt_setnocanon PARAMS((TTYSTRUCT *));
+extern int tt_setcbreak PARAMS((TTYSTRUCT *));
/* These functions are all generally mutually exclusive. If you call
more than one (bracketed with calls to ttsave and ttrestore, of
@@ -94,19 +94,19 @@ extern int tt_setcbreak __P((TTYSTRUCT *));
/* These functions work with a given file descriptor and set terminal
attributes */
-extern int ttfd_onechar __P((int, TTYSTRUCT *));
-extern int ttfd_noecho __P((int, TTYSTRUCT *));
-extern int ttfd_eightbit __P((int, TTYSTRUCT *));
-extern int ttfd_nocanon __P((int, TTYSTRUCT *));
+extern int ttfd_onechar PARAMS((int, TTYSTRUCT *));
+extern int ttfd_noecho PARAMS((int, TTYSTRUCT *));
+extern int ttfd_eightbit PARAMS((int, TTYSTRUCT *));
+extern int ttfd_nocanon PARAMS((int, TTYSTRUCT *));
-extern int ttfd_cbreak __P((int, TTYSTRUCT *));
+extern int ttfd_cbreak PARAMS((int, TTYSTRUCT *));
/* These functions work with fd 0 and the TTYSTRUCT saved with ttsave () */
-extern int ttonechar __P((void));
-extern int ttnoecho __P((void));
-extern int tteightbit __P((void));
-extern int ttnocanon __P((void));
+extern int ttonechar PARAMS((void));
+extern int ttnoecho PARAMS((void));
+extern int tteightbit PARAMS((void));
+extern int ttnocanon PARAMS((void));
-extern int ttcbreak __P((void));
+extern int ttcbreak PARAMS((void));
#endif
diff --git a/include/stdc.h b/include/stdc.h
index c66492f0..7b9282cc 100644
--- a/include/stdc.h
+++ b/include/stdc.h
@@ -26,18 +26,8 @@
/* A function can be defined using prototypes and compile on both ANSI C
and traditional C compilers with something like this:
- extern char *func __P((char *, char *, int)); */
+ extern char *func PARAMS((char *, char *, int)); */
-#if !defined (__P)
-# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES)
-# define __P(protos) protos
-# else
-# define __P(protos) ()
-# endif
-#endif
-
-/* New definition to use, moving away from __P since it's part of a reserved
- namespace */
#if !defined (PARAMS)
# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES)
# define PARAMS(protos) protos
diff --git a/include/systimes.h b/include/systimes.h
index ec2d92f5..aefcab7f 100644
--- a/include/systimes.h
+++ b/include/systimes.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1996, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -49,7 +49,7 @@ struct tms
Return the elapsed real time from an arbitrary point in the
past (the bash emulation uses the epoch), or (clock_t) -1 for
errors. All times are in CLK_TCKths of a second. */
-extern clock_t times __P((struct tms *buffer));
+extern clock_t times PARAMS((struct tms *buffer));
#endif /* !HAVE_SYS_TIMES_H */
#endif /* _BASH_SYSTIMES_H */
diff --git a/include/typemax.h b/include/typemax.h
index 0f696388..9853d567 100644
--- a/include/typemax.h
+++ b/include/typemax.h
@@ -109,4 +109,23 @@ static const unsigned long long int maxquad = ULLONG_MAX;
# define SIZE_MAX 65535 /* POSIX minimum max */
#endif
+#ifndef sh_imaxabs
+# define sh_imaxabs(x) (((x) >= 0) ? (x) : -(x))
+#endif
+
+/* Handle signed arithmetic overflow and underflow. Have to do it this way
+ to avoid compilers optimizing out simpler overflow checks. */
+
+/* Make sure that a+b does not exceed MAXV or is smaller than MINV (if b < 0).
+ Assumes that b > 0 if a > 0 and b < 0 if a < 0 */
+#define ADDOVERFLOW(a,b,minv,maxv) \
+ ((((a) > 0) && ((b) > ((maxv) - (a)))) || \
+ (((a) < 0) && ((b) < ((minv) - (a)))))
+
+/* Make sure that a-b is not smaller than MINV or exceeds MAXV (if b < 0).
+ Assumes that b > 0 if a > 0 and b < 0 if a < 0 */
+#define SUBOVERFLOW(a,b,minv,maxv) \
+ ((((b) > 0) && ((a) < ((minv) + (b)))) || \
+ (((b) < 0) && ((a) > ((maxv) + (b)))))
+
#endif /* _SH_TYPEMAX_H */
diff --git a/input.c b/input.c
index 8b3e4259..c57e81c3 100644
--- a/input.c
+++ b/input.c
@@ -1,6 +1,6 @@
/* input.c -- functions to perform buffered input with synchronization. */
-/* Copyright (C) 1992-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -57,12 +57,12 @@ extern int errno;
# define X_EWOULDBLOCK -99
#endif
-extern void termsig_handler __P((int));
+extern void termsig_handler PARAMS((int));
/* Functions to handle reading input on systems that don't restart read(2)
if a signal is received. */
-static char localbuf[128];
+static char localbuf[1024];
static int local_index = 0, local_bufused = 0;
/* Posix and USG systems do not guarantee to restart read () if it is
@@ -132,7 +132,7 @@ ungetc_with_restart (c, stream)
/* A facility similar to stdio, but input-only. */
#if defined (USING_BASH_MALLOC)
-# define MAX_INPUT_BUFFER_SIZE 8176
+# define MAX_INPUT_BUFFER_SIZE 8172
#else
# define MAX_INPUT_BUFFER_SIZE 8192
#endif
diff --git a/input.h b/input.h
index 6aef1269..cb3eee42 100644
--- a/input.h
+++ b/input.h
@@ -1,6 +1,6 @@
/* input.h -- Structures and unions used for reading input. */
-/* Copyright (C) 1993-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -32,8 +32,8 @@ typedef char *CPFunction (); /* no longer used */
typedef char **CPPFunction (); /* no longer used */
#endif /* _FUNCTION_DEF */
-typedef int sh_cget_func_t __P((void)); /* sh_ivoidfunc_t */
-typedef int sh_cunget_func_t __P((int)); /* sh_intfunc_t */
+typedef int sh_cget_func_t PARAMS((void)); /* sh_ivoidfunc_t */
+typedef int sh_cunget_func_t PARAMS((int)); /* sh_intfunc_t */
enum stream_type {st_none, st_stdin, st_stream, st_string, st_bstream};
@@ -92,44 +92,44 @@ extern BASH_INPUT bash_input;
/* Functions from parse.y whose use directly or indirectly depends on the
definitions in this file. */
-extern void initialize_bash_input __P((void));
-extern void init_yy_io __P((sh_cget_func_t *, sh_cunget_func_t *, enum stream_type, const char *, INPUT_STREAM));
-extern char *yy_input_name __P((void));
-extern void with_input_from_stdin __P((void));
-extern void with_input_from_string __P((char *, const char *));
-extern void with_input_from_stream __P((FILE *, const char *));
-extern void push_stream __P((int));
-extern void pop_stream __P((void));
-extern int stream_on_stack __P((enum stream_type));
-extern char *read_secondary_line __P((int));
-extern int find_reserved_word __P((char *));
-extern void gather_here_documents __P((void));
-extern void execute_variable_command __P((char *, char *));
-
-extern int *save_token_state __P((void));
-extern void restore_token_state __P((int *));
+extern void initialize_bash_input PARAMS((void));
+extern void init_yy_io PARAMS((sh_cget_func_t *, sh_cunget_func_t *, enum stream_type, const char *, INPUT_STREAM));
+extern char *yy_input_name PARAMS((void));
+extern void with_input_from_stdin PARAMS((void));
+extern void with_input_from_string PARAMS((char *, const char *));
+extern void with_input_from_stream PARAMS((FILE *, const char *));
+extern void push_stream PARAMS((int));
+extern void pop_stream PARAMS((void));
+extern int stream_on_stack PARAMS((enum stream_type));
+extern char *read_secondary_line PARAMS((int));
+extern int find_reserved_word PARAMS((char *));
+extern void gather_here_documents PARAMS((void));
+extern void execute_variable_command PARAMS((char *, char *));
+
+extern int *save_token_state PARAMS((void));
+extern void restore_token_state PARAMS((int *));
/* Functions from input.c */
-extern int getc_with_restart __P((FILE *));
-extern int ungetc_with_restart __P((int, FILE *));
+extern int getc_with_restart PARAMS((FILE *));
+extern int ungetc_with_restart PARAMS((int, FILE *));
#if defined (BUFFERED_INPUT)
/* Functions from input.c. */
-extern int fd_is_bash_input __P((int));
-extern int set_bash_input_fd __P((int));
-extern int save_bash_input __P((int, int));
-extern int check_bash_input __P((int));
-extern int duplicate_buffered_stream __P((int, int));
-extern BUFFERED_STREAM *fd_to_buffered_stream __P((int));
-extern BUFFERED_STREAM *set_buffered_stream __P((int, BUFFERED_STREAM *));
-extern BUFFERED_STREAM *open_buffered_stream __P((char *));
-extern void free_buffered_stream __P((BUFFERED_STREAM *));
-extern int close_buffered_stream __P((BUFFERED_STREAM *));
-extern int close_buffered_fd __P((int));
-extern int sync_buffered_stream __P((int));
-extern int buffered_getchar __P((void));
-extern int buffered_ungetchar __P((int));
-extern void with_input_from_buffered_stream __P((int, char *));
+extern int fd_is_bash_input PARAMS((int));
+extern int set_bash_input_fd PARAMS((int));
+extern int save_bash_input PARAMS((int, int));
+extern int check_bash_input PARAMS((int));
+extern int duplicate_buffered_stream PARAMS((int, int));
+extern BUFFERED_STREAM *fd_to_buffered_stream PARAMS((int));
+extern BUFFERED_STREAM *set_buffered_stream PARAMS((int, BUFFERED_STREAM *));
+extern BUFFERED_STREAM *open_buffered_stream PARAMS((char *));
+extern void free_buffered_stream PARAMS((BUFFERED_STREAM *));
+extern int close_buffered_stream PARAMS((BUFFERED_STREAM *));
+extern int close_buffered_fd PARAMS((int));
+extern int sync_buffered_stream PARAMS((int));
+extern int buffered_getchar PARAMS((void));
+extern int buffered_ungetchar PARAMS((int));
+extern void with_input_from_buffered_stream PARAMS((int, char *));
#endif /* BUFFERED_INPUT */
#endif /* _INPUT_H_ */
diff --git a/jobs.c b/jobs.c
index 6bc31dca..a581f305 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -87,11 +87,11 @@ extern int errno;
#endif /* !errno */
#if !defined (HAVE_KILLPG)
-extern int killpg __P((pid_t, int));
+extern int killpg PARAMS((pid_t, int));
#endif
#if !DEFAULT_CHILD_MAX
-# define DEFAULT_CHILD_MAX 32
+# define DEFAULT_CHILD_MAX 4096
#endif
#if !MAX_CHILD_MAX
@@ -162,21 +162,22 @@ extern int killpg __P((pid_t, int));
/* The number of additional slots to allocate when we run out. */
#define JOB_SLOTS 8
-typedef int sh_job_map_func_t __P((JOB *, int, int, int));
+typedef int sh_job_map_func_t PARAMS((JOB *, int, int, int));
/* Variables used here but defined in other files. */
-extern sigset_t top_level_mask;
extern WORD_LIST *subst_assign_varlist;
extern SigHandler **original_signals;
-extern void set_original_signal __P((int, SigHandler *));
+extern void set_original_signal PARAMS((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 };
+struct bgpids bgpids = { 0, 0, 0, 0 };
+
+struct procchain procsubs = { 0, 0, 0 };
/* The array of known jobs. */
JOB **jobs = (JOB **)NULL;
@@ -236,74 +237,75 @@ PROCESS *last_procsub_child = (PROCESS *)NULL;
void debug_print_pgrps (void);
-static sighandler wait_sigint_handler __P((int));
-static sighandler sigchld_handler __P((int));
-static sighandler sigcont_sighandler __P((int));
-static sighandler sigstop_sighandler __P((int));
-
-static int waitchld __P((pid_t, int));
-
-static PROCESS *find_pipeline __P((pid_t, int, int *));
-static PROCESS *find_process __P((pid_t, int, int *));
-
-static char *current_working_directory __P((void));
-static char *job_working_directory __P((void));
-static char *j_strsignal __P((int));
-static char *printable_job_status __P((int, PROCESS *, int));
-
-static PROCESS *find_last_proc __P((int, int));
-static pid_t find_last_pid __P((int, int));
-
-static int set_new_line_discipline __P((int));
-static int map_over_jobs __P((sh_job_map_func_t *, int, int));
-static int job_last_stopped __P((int));
-static int job_last_running __P((int));
-static int most_recent_job_in_state __P((int, JOB_STATE));
-static int find_job __P((pid_t, int, PROCESS **));
-static int print_job __P((JOB *, int, int, int));
-static int process_exit_status __P((WAIT));
-static int process_exit_signal __P((WAIT));
-static int set_job_status_and_cleanup __P((int));
-
-static WAIT job_signal_status __P((int));
-static WAIT raw_job_exit_status __P((int));
-
-static void notify_of_job_status __P((void));
-static void reset_job_indices __P((void));
-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 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 *));
-static void set_current_job __P((int));
-static void reset_current __P((void));
-static void set_job_running __P((int));
-static void setjstatus __P((int));
-static int maybe_give_terminal_to __P((pid_t, pid_t, int));
-static void mark_all_jobs_as_dead __P((void));
-static void mark_dead_jobs_as_notified __P((int));
-static void restore_sigint_handler __P((void));
+static sighandler wait_sigint_handler PARAMS((int));
+static sighandler sigchld_handler PARAMS((int));
+static sighandler sigcont_sighandler PARAMS((int));
+static sighandler sigstop_sighandler PARAMS((int));
+
+static int waitchld PARAMS((pid_t, int));
+
+static PROCESS *find_pid_in_pipeline PARAMS((pid_t, PROCESS *, int));
+static PROCESS *find_pipeline PARAMS((pid_t, int, int *));
+static PROCESS *find_process PARAMS((pid_t, int, int *));
+
+static char *current_working_directory PARAMS((void));
+static char *job_working_directory PARAMS((void));
+static char *j_strsignal PARAMS((int));
+static char *printable_job_status PARAMS((int, PROCESS *, int));
+
+static PROCESS *find_last_proc PARAMS((int, int));
+static pid_t find_last_pid PARAMS((int, int));
+
+static int set_new_line_discipline PARAMS((int));
+static int map_over_jobs PARAMS((sh_job_map_func_t *, int, int));
+static int job_last_stopped PARAMS((int));
+static int job_last_running PARAMS((int));
+static int most_recent_job_in_state PARAMS((int, JOB_STATE));
+static int find_job PARAMS((pid_t, int, PROCESS **));
+static int print_job PARAMS((JOB *, int, int, int));
+static int process_exit_status PARAMS((WAIT));
+static int process_exit_signal PARAMS((WAIT));
+static int set_job_status_and_cleanup PARAMS((int));
+
+static WAIT job_signal_status PARAMS((int));
+static WAIT raw_job_exit_status PARAMS((int));
+
+static void notify_of_job_status PARAMS((void));
+static void reset_job_indices PARAMS((void));
+static void cleanup_dead_jobs PARAMS((void));
+static int processes_in_job PARAMS((int));
+static void realloc_jobs_list PARAMS((void));
+static int compact_jobs_list PARAMS((int));
+static void add_process PARAMS((char *, pid_t));
+static void print_pipeline PARAMS((PROCESS *, int, int, FILE *));
+static void pretty_print_job PARAMS((int, int, FILE *));
+static void set_current_job PARAMS((int));
+static void reset_current PARAMS((void));
+static void set_job_running PARAMS((int));
+static void setjstatus PARAMS((int));
+static int maybe_give_terminal_to PARAMS((pid_t, pid_t, int));
+static void mark_all_jobs_as_dead PARAMS((void));
+static void mark_dead_jobs_as_notified PARAMS((int));
+static void restore_sigint_handler PARAMS((void));
#if defined (PGRP_PIPE)
-static void pipe_read __P((int *));
+static void pipe_read PARAMS((int *));
#endif
/* Hash table manipulation */
-static ps_index_t *pshash_getbucket __P((pid_t));
-static void pshash_delindex __P((ps_index_t));
+static ps_index_t *pshash_getbucket PARAMS((pid_t));
+static void pshash_delindex PARAMS((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 struct pidstat *bgp_add PARAMS((pid_t, int));
+static int bgp_delete PARAMS((pid_t));
+static void bgp_clear PARAMS((void));
+static int bgp_search PARAMS((pid_t));
-static struct pipeline_saver *alloc_pipeline_saver __P((void));
+static struct pipeline_saver *alloc_pipeline_saver PARAMS((void));
-static ps_index_t bgp_getindex __P((void));
-static void bgp_resize __P((void)); /* XXX */
+static ps_index_t bgp_getindex PARAMS((void));
+static void bgp_resize PARAMS((void)); /* XXX */
#if defined (ARRAY_VARS)
static int *pstatuses; /* list of pipeline statuses */
@@ -317,11 +319,17 @@ static int queue_sigchld;
#define QUEUE_SIGCHLD(os) (os) = sigchld, queue_sigchld++
+/* We set queue_sigchld around the call to waitchld to protect data structures
+ from a SIGCHLD arriving while waitchld is executing. */
#define UNQUEUE_SIGCHLD(os) \
do { \
queue_sigchld--; \
if (queue_sigchld == 0 && os != sigchld) \
- waitchld (-1, 0); \
+ { \
+ queue_sigchld = 1; \
+ waitchld (-1, 0); \
+ queue_sigchld = 0; \
+ } \
} while (0)
static SigHandler *old_tstp, *old_ttou, *old_ttin;
@@ -440,6 +448,7 @@ cleanup_the_pipeline ()
discard_pipeline (disposer);
}
+/* Not used right now */
void
discard_last_procsub_child ()
{
@@ -516,7 +525,12 @@ start_pipeline ()
if (the_pipeline)
{
cleanup_the_pipeline ();
- pipeline_pgrp = 0;
+ /* If job_control == 0, pipeline_pgrp will always be equal to shell_pgrp;
+ if job_control != 0, pipeline_pgrp == shell_pgrp for command and
+ process substitution, in which case we want it to be the same as
+ shell_pgrp for the lifetime of this shell instance. */
+ if (pipeline_pgrp != shell_pgrp)
+ pipeline_pgrp = 0;
#if defined (PGRP_PIPE)
sh_closepipe (pgrp_pipe);
#endif
@@ -629,7 +643,8 @@ stop_pipeline (async, deferred)
the_pipeline = (PROCESS *)NULL;
newjob->pgrp = pipeline_pgrp;
- pipeline_pgrp = 0;
+ if (pipeline_pgrp != shell_pgrp)
+ pipeline_pgrp = 0;
newjob->flags = 0;
if (pipefail_opt)
@@ -888,7 +903,7 @@ bgp_delete (pid)
break;
if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */
{
- internal_warning ("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next", psi);
+ internal_warning (_("bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"), psi);
return 0;
}
}
@@ -941,7 +956,7 @@ bgp_search (pid)
return (bgpids.storage[psi].status);
if (orig_psi == bgpids.storage[psi].bucket_next) /* catch reported bug */
{
- internal_warning ("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next", psi);
+ internal_warning (_("bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"), psi);
return -1;
}
}
@@ -957,6 +972,195 @@ bgp_prune ()
}
#endif
+/* External interface to bgp_add; takes care of blocking and unblocking
+ SIGCHLD. Not really used. */
+void
+save_proc_status (pid, status)
+ pid_t pid;
+ int status;
+{
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ bgp_add (pid, status);
+ UNBLOCK_CHILD (oset);
+}
+
+#if defined (PROCESS_SUBSTITUTION)
+/* Functions to add and remove PROCESS * children from the list of running
+ asynchronous process substitutions. The list is currently a simple singly
+ linked list of PROCESS *, so it works with the set of callers that want
+ a child. subst.c:process_substitute adds to the list, the various wait*
+ functions manipulate child->running and child->status, and processes are
+ eventually removed from the list and added to the bgpids table. */
+
+static void
+procsub_free (p)
+ PROCESS *p;
+{
+ FREE (p->command);
+ free (p);
+}
+
+PROCESS *
+procsub_add (p)
+ PROCESS *p;
+{
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ if (procsubs.head == 0)
+ {
+ procsubs.head = procsubs.end = p;
+ procsubs.nproc = 0;
+ }
+ else
+ {
+ procsubs.end->next = p;
+ procsubs.end = p;
+ }
+ procsubs.nproc++;
+ UNBLOCK_CHILD (oset);
+
+ return p;
+}
+
+PROCESS *
+procsub_search (pid)
+ pid_t pid;
+{
+ PROCESS *p;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ for (p = procsubs.head; p; p = p->next)
+ if (p->pid == pid)
+ break;
+ UNBLOCK_CHILD (oset);
+
+ return p;
+}
+
+PROCESS *
+procsub_delete (pid)
+ pid_t pid;
+{
+ PROCESS *p, *prev;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+ for (p = prev = procsubs.head; p; prev = p, p = p->next)
+ if (p->pid == pid)
+ {
+ prev->next = p->next;
+ break;
+ }
+
+ if (p == 0)
+ {
+ UNBLOCK_CHILD (oset);
+ return p;
+ }
+
+ if (p == procsubs.head)
+ procsubs.head = procsubs.head->next;
+ else if (p == procsubs.end)
+ procsubs.end = prev;
+
+ procsubs.nproc--;
+ if (procsubs.nproc == 0)
+ procsubs.head = procsubs.end = 0;
+ else if (procsubs.nproc == 1) /* XXX */
+ procsubs.end = procsubs.head;
+
+ /* this can't be called anywhere in a signal handling path */
+ bgp_add (p->pid, process_exit_status (p->status));
+ UNBLOCK_CHILD (oset);
+ return (p);
+}
+
+int
+procsub_waitpid (pid)
+ pid_t pid;
+{
+ PROCESS *p;
+ int r;
+
+ p = procsub_search (pid);
+ if (p == 0)
+ return -1;
+ if (p->running == PS_DONE)
+ return (p->status);
+ r = wait_for (p->pid, 0);
+ return (r); /* defer removing until later */
+}
+
+void
+procsub_waitall ()
+{
+ PROCESS *p;
+ int r;
+
+ for (p = procsubs.head; p; p = p->next)
+ {
+ if (p->running == PS_DONE)
+ continue;
+ r = wait_for (p->pid, 0);
+ }
+}
+
+void
+procsub_clear ()
+{
+ PROCESS *p, *ps;
+ sigset_t set, oset;
+
+ BLOCK_CHILD (set, oset);
+
+ for (ps = procsubs.head; ps; )
+ {
+ p = ps;
+ ps = ps->next;
+ procsub_free (p);
+ }
+ procsubs.head = procsubs.end = 0;
+ procsubs.nproc = 0;
+ UNBLOCK_CHILD (oset);
+}
+
+/* Must be called with SIGCHLD blocked. */
+void
+procsub_prune ()
+{
+ PROCESS *ohead, *oend, *ps, *p;
+ int onproc;
+
+ if (procsubs.nproc == 0)
+ return;
+
+ ohead = procsubs.head;
+ oend = procsubs.end;
+ onproc = procsubs.nproc;
+
+ procsubs.head = procsubs.end = 0;
+ procsubs.nproc = 0;
+
+ for (p = ohead; p; )
+ {
+ ps = p->next;
+ p->next = 0;
+ if (p->running == PS_DONE)
+ {
+ bgp_add (p->pid, process_exit_status (p->status));
+ procsub_free (p);
+ }
+ else
+ procsub_add (p);
+ p = ps;
+ }
+}
+#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
calling this. This wraps around, but the rest of the code does not. At
@@ -980,7 +1184,7 @@ reset_job_indices ()
js.j_firstj++;
}
if (js.j_firstj == old)
- js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
}
if (jobs[js.j_lastj] == 0)
{
@@ -996,7 +1200,7 @@ reset_job_indices ()
js.j_lastj--;
}
if (js.j_lastj == old)
- js.j_firstj = js.j_lastj = js.j_njobs = 0;
+ js.j_firstj = js.j_lastj = js.j_njobs = 0;
}
}
@@ -1028,13 +1232,8 @@ cleanup_dead_jobs ()
}
#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 = last_procsub_child;
- last_procsub_child = (PROCESS *)NULL;
- discard_pipeline (discard);
- }
+ procsub_prune ();
+ last_procsub_child = (PROCESS *)NULL;
#endif
#if defined (COPROCESS_SUPPORT)
@@ -1224,7 +1423,9 @@ delete_job (job_index, dflags)
js.c_injobs -= ndel;
if (temp->state == JDEAD)
{
- js.c_reaped -= ndel;
+ /* XXX - save_pipeline and restore_pipeline (e.g., for DEBUG trap) can
+ mess with this total. */
+ js.c_reaped -= ndel; /* assumes proc hadn't been reaped earlier */
js.j_ndead--;
if (js.c_reaped < 0)
{
@@ -1304,10 +1505,10 @@ add_process (name, pid)
{
# ifdef DEBUG
if (j == NO_JOB)
- internal_warning (_("add_process: process %5ld (%s) in the_pipeline"), (long)p->pid, p->command);
+ internal_warning ("add_process: process %5ld (%s) in the_pipeline", (long)p->pid, p->command);
# endif
if (PALIVE (p))
- internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command);
+ internal_warning (_("add_process: pid %5ld (%s) marked as still alive"), (long)p->pid, p->command);
p->running = PS_RECYCLED; /* mark as recycled */
}
#endif
@@ -1492,6 +1693,27 @@ kill_current_pipeline ()
start_pipeline ();
}
+static PROCESS *
+find_pid_in_pipeline (pid, pipeline, alive_only)
+ pid_t pid;
+ PROCESS *pipeline;
+ int alive_only;
+{
+ PROCESS *p;
+
+ p = pipeline;
+ 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 != pipeline);
+ return ((PROCESS *)NULL);
+}
+
/* Return the pipeline that PID belongs to. Note that the pipeline
doesn't have to belong to a job. Must be called with SIGCHLD blocked.
If JOBP is non-null, return the index of the job containing PID. */
@@ -1503,37 +1725,25 @@ find_pipeline (pid, alive_only, jobp)
{
int job;
PROCESS *p;
+ struct pipeline_saver *save;
/* See if this process is in the pipeline that we are building. */
+ p = (PROCESS *)NULL;
if (jobp)
*jobp = NO_JOB;
- if (the_pipeline)
- {
- p = the_pipeline;
- 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 != 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);
+ if (the_pipeline && (p = find_pid_in_pipeline (pid, the_pipeline, alive_only)))
+ return (p);
- p = p->next;
- }
- while (p != last_procsub_child);
- }
+ /* Is this process in a saved pipeline? */
+ for (save = saved_pipeline; save; save = save->next)
+ if (save->pipeline && (p = find_pid_in_pipeline (pid, save->pipeline, alive_only)))
+ return (p);
+
+#if defined (PROCESS_SUBSTITUTION)
+ if (procsubs.nproc > 0 && (p = procsub_search (pid)) && ((alive_only == 0 && PRECYCLED(p) == 0) || PALIVE(p)))
+ return (p);
+#endif
job = find_job (pid, alive_only, &p);
if (jobp)
@@ -1603,9 +1813,10 @@ find_job (pid, alive_only, procp)
/* Find a job given a PID. If BLOCK is non-zero, block SIGCHLD as
required by find_job. */
int
-get_job_by_pid (pid, block)
+get_job_by_pid (pid, block, procp)
pid_t pid;
int block;
+ PROCESS **procp;
{
int job;
sigset_t set, oset;
@@ -1613,7 +1824,7 @@ get_job_by_pid (pid, block)
if (block)
BLOCK_CHILD (set, oset);
- job = find_job (pid, 0, NULL);
+ job = find_job (pid, 0, procp);
if (block)
UNBLOCK_CHILD (oset);
@@ -1817,9 +2028,8 @@ print_pipeline (p, job_index, format, stream)
reported asynchronously, so just add the CR if the shell is
currently interactive and asynchronous notification is enabled. */
if (asynchronous_notification && interactive)
- fprintf (stream, "\r\n");
- else
- fprintf (stream, "\n");
+ putc ('\r', stream);
+ fprintf (stream, "\n");
}
if (p == last)
@@ -1885,6 +2095,7 @@ list_one_job (job, format, ignore, job_index)
int format, ignore, job_index;
{
pretty_print_job (job_index, format, stdout);
+ cleanup_dead_jobs ();
}
void
@@ -1918,24 +2129,36 @@ list_all_jobs (format)
anything else with it. ASYNC_P says what to do with the tty. If
non-zero, then don't give it away. */
pid_t
-make_child (command, async_p)
+make_child (command, flags)
char *command;
- int async_p;
+ int flags;
{
- int forksleep;
- sigset_t set, oset;
+ int async_p, forksleep;
+ sigset_t set, oset, termset, chldset, oset_copy;
pid_t pid;
+ SigHandler *oterm;
+
+ sigemptyset (&oset_copy);
+ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &oset_copy);
+ sigaddset (&oset_copy, SIGTERM);
- /* XXX - block SIGTERM here and unblock in child after fork resets the
- set of pending signals? */
+ /* Block SIGTERM here and unblock in child after fork resets the
+ set of pending signals. */
sigemptyset (&set);
sigaddset (&set, SIGCHLD);
sigaddset (&set, SIGINT);
+ sigaddset (&set, SIGTERM);
+
sigemptyset (&oset);
sigprocmask (SIG_BLOCK, &set, &oset);
+ /* Blocked in the parent, child will receive it after unblocking SIGTERM */
+ if (interactive_shell)
+ oterm = set_signal_handler (SIGTERM, SIG_DFL);
+
making_children ();
+ async_p = (flags & FORK_ASYNC);
forksleep = 1;
#if defined (BUFFERED_INPUT)
@@ -1948,19 +2171,17 @@ make_child (command, async_p)
sync_buffered_stream (default_buffered_input);
#endif /* BUFFERED_INPUT */
- RESET_SIGTERM;
-
/* Create the child, handle severe errors. Retry on EAGAIN. */
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
{
/* bash-4.2 */
- sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ /* keep SIGTERM blocked until we reset the handler to SIG_IGN */
+ sigprocmask (SIG_SETMASK, &oset_copy, (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;
@@ -1972,7 +2193,8 @@ make_child (command, async_p)
}
if (pid != 0)
- RESET_SIGTERM;
+ if (interactive_shell)
+ set_signal_handler (SIGTERM, oterm);
if (pid < 0)
{
@@ -1985,7 +2207,7 @@ make_child (command, async_p)
if (the_pipeline)
kill_current_pipeline ();
- last_command_exit_value = EX_NOEXEC;
+ set_exit_status (EX_NOEXEC);
throw_to_top_level (); /* Reset signals, etc. */
}
@@ -2008,9 +2230,9 @@ make_child (command, async_p)
CLRINTERRUPT; /* XXX - children have their own interrupt state */
- /* Restore top-level signal mask. */
- sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
-
+ /* Restore top-level signal mask, including unblocking SIGTERM */
+ restore_sigmask ();
+
if (job_control)
{
/* All processes in this pipeline belong in the same
@@ -2042,7 +2264,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|SUBSHELL_PIPE)) == 0) && running_in_background == 0)
+ if ((flags & FORK_NOTERM) == 0 && 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)
@@ -2071,15 +2293,11 @@ make_child (command, async_p)
sh_closepipe (pgrp_pipe);
#endif /* PGRP_PIPE */
-#if 0
/* Don't set last_asynchronous_pid in the child */
- if (async_p)
- last_asynchronous_pid = mypid; /* XXX */
- else
-#endif
+
#if defined (RECYCLES_PIDS)
if (last_asynchronous_pid == mypid)
- /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
+ /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
last_asynchronous_pid = 1;
#endif
}
@@ -2117,7 +2335,7 @@ make_child (command, async_p)
last_asynchronous_pid = pid;
#if defined (RECYCLES_PIDS)
else if (last_asynchronous_pid == pid)
- /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
+ /* Avoid pid aliasing. 1 seems like a safe, unusual pid value. */
last_asynchronous_pid = 1;
#endif
@@ -2126,7 +2344,7 @@ make_child (command, async_p)
delete_old_job (pid);
/* Perform the check for pid reuse unconditionally. Some systems reuse
- PIDs before giving a process CHILD_MAX/_SC_CHILD_MAX unique ones. */
+ PIDs before giving a process CHILD_MAX/_SC_CHILD_MAX unique ones. */
bgp_delete (pid); /* new process, discard any saved status */
last_made_pid = pid;
@@ -2135,9 +2353,9 @@ make_child (command, async_p)
js.c_totforked++;
js.c_living++;
- /* Unblock SIGINT and SIGCHLD unless creating a pipeline, in which case
- SIGCHLD remains blocked until all commands in the pipeline have been
- created. */
+ /* Unblock SIGTERM, SIGINT, and SIGCHLD unless creating a pipeline, in
+ which case SIGCHLD remains blocked until all commands in the pipeline
+ have been created (execute_cmd.c:execute_pipeline()). */
sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
}
@@ -2403,7 +2621,7 @@ wait_for_single_pid (pid, flags)
alive = 0;
do
{
- r = wait_for (pid);
+ r = wait_for (pid, 0);
if ((flags & JWAIT_FORCE) == 0)
break;
@@ -2428,12 +2646,16 @@ wait_for_single_pid (pid, flags)
bgp_delete (pid);
}
+ /* Check for a trapped signal interrupting the wait builtin and jump out */
+ CHECK_WAIT_INTR;
+
return r;
}
/* Wait for all of the background processes started by this shell to finish. */
void
-wait_for_background_pids ()
+wait_for_background_pids (ps)
+ struct procstat *ps;
{
register int i, r;
int any_stopped, check_async;
@@ -2475,6 +2697,11 @@ wait_for_background_pids ()
QUIT;
errno = 0; /* XXX */
r = wait_for_single_pid (pid, JWAIT_PERROR);
+ if (ps)
+ {
+ ps->pid = pid;
+ ps->status = (r < 0) ? 127 : r;
+ }
if (r == -1 && errno == ECHILD)
{
/* If we're mistaken about job state, compensate. */
@@ -2484,22 +2711,7 @@ wait_for_background_pids ()
}
#if defined (PROCESS_SUBSTITUTION)
- if (last_procsub_child && last_procsub_child->pid != NO_PID)
- r = wait_for (last_procsub_child->pid);
- wait_procsubs ();
- reap_procsubs ();
-#if 0
- /* We don't want to wait indefinitely if we have stopped children. */
- if (any_stopped == 0)
- {
- /* Check whether or not we have any unreaped children. */
- while ((r = wait_for (ANY_PID)) >= 0)
- {
- QUIT;
- CHECK_WAIT_INTR;
- }
- }
-#endif
+ procsub_waitall ();
#endif
/* POSIX.2 says the shell can discard the statuses of all completed jobs if
@@ -2515,7 +2727,8 @@ static SigHandler *old_sigint_handler = INVALID_SIGNAL_HANDLER;
static int wait_sigint_received;
static int child_caught_sigint;
-static int waiting_for_child;
+
+int waiting_for_child;
/* Clean up state after longjmp to wait_intr_buf */
void
@@ -2545,10 +2758,9 @@ wait_sigint_handler (sig)
{
SigHandler *sigint_handler;
- if (interrupt_immediately ||
- (this_shell_builtin && this_shell_builtin == wait_builtin))
+ if (this_shell_builtin && this_shell_builtin == wait_builtin)
{
- last_command_exit_value = 128+SIGINT;
+ set_exit_status (128+SIGINT);
restore_sigint_handler ();
/* If we got a SIGINT while in `wait', and SIGINT is trapped, do
what POSIX.2 says (see builtins/wait.def for more info). */
@@ -2558,20 +2770,12 @@ wait_sigint_handler (sig)
{
trap_handler (SIGINT); /* set pending_traps[SIGINT] */
wait_signal_received = SIGINT;
- if (interrupt_immediately && wait_intr_flag)
- {
- interrupt_immediately = 0;
- sh_longjmp (wait_intr_buf, 1);
- }
+ if (wait_intr_flag)
+ sh_longjmp (wait_intr_buf, 1);
else
/* Let CHECK_WAIT_INTR handle it in wait_for/waitchld */
SIGRETURN (0);
}
- else if (interrupt_immediately)
- {
- ADDINTERRUPT;
- QUIT;
- }
else /* wait_builtin but signal not trapped, treat as interrupt */
kill (getpid (), SIGINT);
}
@@ -2582,7 +2786,7 @@ wait_sigint_handler (sig)
wait_sigint_received = 1;
else
{
- last_command_exit_value = 128+SIGINT;
+ set_exit_status (128+SIGINT);
restore_sigint_handler ();
kill (getpid (), SIGINT);
}
@@ -2641,11 +2845,7 @@ raw_job_exit_status (job)
int fail;
WAIT ret;
-#if 0
- if (pipefail_opt)
-#else
if (jobs[job]->flags & J_PIPEFAIL)
-#endif
{
fail = 0;
p = jobs[job]->pipe;
@@ -2702,8 +2902,9 @@ job_exit_signal (job)
the jobs table. Returns -1 if waitchld() returns -1, indicating
that there are no unwaited-for child processes. */
int
-wait_for (pid)
+wait_for (pid, flags)
pid_t pid;
+ int flags;
{
int job, termination_state, r;
WAIT s;
@@ -2733,11 +2934,11 @@ wait_for (pid)
temp_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
if (temp_sigint_handler == wait_sigint_handler)
- {
+ {
#if defined (DEBUG)
internal_warning ("wait_for: recursively setting old_sigint_handler to wait_sigint_handler: running_trap = %d", running_trap);
#endif
- }
+ }
else
old_sigint_handler = temp_sigint_handler;
waiting_for_child = 0;
@@ -2777,39 +2978,20 @@ wait_for (pid)
if (pid == ANY_PID || PRUNNING(child) || (job != NO_JOB && RUNNING (job)))
{
-#if defined (WAITPID_BROKEN) /* SCOv4 */
- sigset_t suspend_set;
- sigemptyset (&suspend_set);
- sigsuspend (&suspend_set);
-#else /* !WAITPID_BROKEN */
-# if defined (MUST_UNBLOCK_CHLD)
- struct sigaction act, oact;
- sigset_t nullset, chldset;
+ int old_waiting;
queue_sigchld = 1;
- sigemptyset (&nullset);
- sigemptyset (&chldset);
- sigprocmask (SIG_SETMASK, &nullset, &chldset);
- act.sa_handler = SIG_DFL;
- sigemptyset (&act.sa_mask);
- sigemptyset (&oact.sa_mask);
- act.sa_flags = 0;
-# if defined (SA_RESTART)
- act.sa_flags |= SA_RESTART;
-# endif
- sigaction (SIGCHLD, &act, &oact);
-# endif /* MUST_UNBLOCK_CHLD */
- queue_sigchld = 1;
- waiting_for_child++;
+ old_waiting = waiting_for_child;
+ waiting_for_child = 1;
+ /* XXX - probably not strictly necessary but we want to catch
+ everything that happened before we switch the behavior of
+ trap_handler to longjmp on a trapped signal (waiting_for_child) */
+ CHECK_WAIT_INTR;
r = waitchld (pid, 1); /* XXX */
- waiting_for_child--;
+ waiting_for_child = old_waiting;
#if 0
itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, child);
#endif
-# if defined (MUST_UNBLOCK_CHLD)
- sigaction (SIGCHLD, &oact, (struct sigaction *)NULL);
- sigprocmask (SIG_SETMASK, &chldset, (sigset_t *)NULL);
-# endif
queue_sigchld = 0;
if (r == -1 && errno == ECHILD && this_shell_builtin == wait_builtin)
{
@@ -2843,7 +3025,6 @@ itrace("wait_for: blocking wait for %d returns %d child = %p", (int)pid, r, chil
break;
}
}
-#endif /* WAITPID_BROKEN */
}
/* If the shell is interactive, and job control is disabled, see
@@ -2908,7 +3089,8 @@ if (job == NO_JOB)
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)
+ if ((flags & JWAIT_NOTERM) == 0 && running_in_background == 0 &&
+ (subshell_environment & (SUBSHELL_ASYNC|SUBSHELL_PIPE)) == 0)
give_terminal_to (shell_pgrp, 0);
}
@@ -3015,7 +3197,7 @@ if (job == NO_JOB)
}
/* Moved here from set_job_status_and_cleanup, which is in the SIGCHLD
- signal handler path */
+ signal handler path */
if (DEADJOB (job) && IS_FOREGROUND (job) /*&& subshell_environment == 0*/)
setjstatus (job);
@@ -3040,8 +3222,9 @@ wait_for_return:
includes JWAIT_FORCE, we wait for the job to terminate, no just change
state */
int
-wait_for_job (job, flags)
+wait_for_job (job, flags, ps)
int job, flags;
+ struct procstat *ps;
{
pid_t pid;
int r, state;
@@ -3057,10 +3240,12 @@ wait_for_job (job, flags)
do
{
- r = wait_for (pid);
+ r = wait_for (pid, 0);
if (r == -1 && errno == ECHILD)
mark_all_jobs_as_dead ();
+ CHECK_WAIT_INTR;
+
if ((flags & JWAIT_FORCE) == 0)
break;
@@ -3077,16 +3262,23 @@ wait_for_job (job, flags)
jobs[job]->flags |= J_NOTIFIED;
UNBLOCK_CHILD (oset);
+ if (ps)
+ {
+ ps->pid = pid;
+ ps->status = (r < 0) ? 127 : r;
+ }
return r;
}
/* Wait for any background job started by this shell to finish. Very
similar to wait_for_background_pids(). Returns the exit status of
the next exiting job, -1 if there are no background jobs. The caller
- is responsible for translating -1 into the right return value. */
+ is responsible for translating -1 into the right return value. RPID,
+ if non-null, gets the pid of the job's process leader. */
int
-wait_for_any_job (flags)
+wait_for_any_job (flags, ps)
int flags;
+ struct procstat *ps;
{
pid_t pid;
int i, r;
@@ -3099,10 +3291,18 @@ wait_for_any_job (flags)
BLOCK_CHILD (set, oset);
for (i = 0; i < js.j_jobslots; i++)
{
+ if ((flags & JWAIT_WAITING) && jobs[i] && IS_WAITING (i) == 0)
+ continue; /* if we don't want it, skip it */
if (jobs[i] && DEADJOB (i) && IS_NOTIFIED (i) == 0)
{
return_job:
r = job_exit_status (i);
+ pid = find_last_pid (i, 0);
+ if (ps)
+ {
+ ps->pid = pid;
+ ps->status = r;
+ }
notify_of_job_status (); /* XXX */
delete_job (i, 0);
#if defined (COPROCESS_SUPPORT)
@@ -3121,8 +3321,8 @@ return_job:
/* Make sure there is a background job to wait for */
BLOCK_CHILD (set, oset);
for (i = 0; i < js.j_jobslots; i++)
- if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0)
- break;
+ if (jobs[i] && RUNNING (i) && IS_FOREGROUND (i) == 0)
+ break;
if (i == js.j_jobslots)
{
UNBLOCK_CHILD (oset);
@@ -3136,15 +3336,19 @@ return_job:
CHECK_WAIT_INTR;
errno = 0;
- r = wait_for (ANY_PID); /* special sentinel value for wait_for */
+ r = wait_for (ANY_PID, 0); /* special sentinel value for wait_for */
if (r == -1 && errno == ECHILD)
mark_all_jobs_as_dead ();
/* Now we see if we have any dead jobs and return the first one */
BLOCK_CHILD (set, oset);
for (i = 0; i < js.j_jobslots; i++)
- if (jobs[i] && DEADJOB (i))
- goto return_job;
+ {
+ if ((flags & JWAIT_WAITING) && jobs[i] && IS_WAITING (i) == 0)
+ continue; /* if we don't want it, skip it */
+ if (jobs[i] && DEADJOB (i))
+ goto return_job;
+ }
UNBLOCK_CHILD (oset);
}
@@ -3355,6 +3559,13 @@ start_job (job, foreground)
BLOCK_CHILD (set, oset);
+ if ((subshell_environment & SUBSHELL_COMSUB) && (pipeline_pgrp == shell_pgrp))
+ {
+ internal_error (_("%s: no current jobs"), this_command_name);
+ UNBLOCK_CHILD (oset);
+ return (-1);
+ }
+
if (DEADJOB (job))
{
internal_error (_("%s: job has terminated"), this_command_name);
@@ -3443,7 +3654,7 @@ start_job (job, foreground)
pid = find_last_pid (job, 0);
UNBLOCK_CHILD (oset);
- st = wait_for (pid);
+ st = wait_for (pid, 0);
shell_tty_info = save_stty;
set_tty_state ();
return (st);
@@ -3657,10 +3868,10 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
/* 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)
- child_caught_sigint = 0;
+ child_caught_sigint = 0;
/* children_exited is used to run traps on SIGCHLD. We don't want to
- run the trap if a process is just being continued. */
+ run the trap if a process is just being continued. */
if (WIFCONTINUED(status) == 0)
{
children_exited++;
@@ -3676,10 +3887,11 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
#if defined (PROCESS_SUBSTITUTION)
/* Only manipulate the list of process substitutions while SIGCHLD
- is blocked. */
+ is blocked. We only use this as a hint that we can remove FIFOs
+ or close file descriptors corresponding to terminated process
+ substitutions. */
if ((ind = find_procsub_child (pid)) >= 0)
set_procsub_status (ind, pid, WSTATUS (status));
- /* XXX - save in bgpids list? */
#endif
/* It is not an error to have a child terminate that we did
@@ -3733,7 +3945,6 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
{
if (posixly_correct && this_shell_builtin && this_shell_builtin == wait_builtin)
{
- interrupt_immediately = 0;
/* This was trap_handler (SIGCHLD) but that can lose traps if
children_exited > 1 */
queue_sigchld_trap (children_exited);
@@ -3764,7 +3975,7 @@ itrace("waitchld: waitpid returns %d block = %d children_exited = %d", pid, bloc
that has just changed state. If we notify asynchronously, and the job
that this process belongs to is no longer running, then notify the user
of that fact now. */
- if (asynchronous_notification && interactive)
+ if (asynchronous_notification && interactive && executing_builtin == 0)
notify_of_job_status ();
return (children_exited);
@@ -3912,9 +4123,9 @@ set_job_status_and_cleanup (job)
/* If the signal is trapped, let the trap handler get it no matter
what and simply return if the trap handler returns.
- maybe_call_trap_handler() may cause dead jobs to be removed from
- the job table because of a call to execute_command. We work
- around this by setting JOBS_LIST_FROZEN. */
+ maybe_call_trap_handler() may cause dead jobs to be removed from
+ the job table because of a call to execute_command. We work
+ around this by setting JOBS_LIST_FROZEN. */
old_frozen = jobs_list_frozen;
jobs_list_frozen = 1;
tstatus = maybe_call_trap_handler (SIGINT);
@@ -3997,7 +4208,6 @@ run_sigchld_trap (nchild)
unwind_protect_int (last_command_exit_value);
unwind_protect_int (last_command_exit_signal);
unwind_protect_var (last_made_pid);
- unwind_protect_int (interrupt_immediately);
unwind_protect_int (jobs_list_frozen);
unwind_protect_pointer (the_pipeline);
unwind_protect_pointer (subst_assign_varlist);
@@ -4020,9 +4230,6 @@ run_sigchld_trap (nchild)
jobs_list_frozen = 1;
for (i = 0; i < nchild; i++)
{
-#if 0
- interrupt_immediately = 1;
-#endif
parse_and_execute (savestring (trap_command), "trap", SEVAL_NOHIST|SEVAL_RESETLINE);
}
@@ -4080,14 +4287,9 @@ notify_of_job_status ()
substitution, so don't print anything.
Otherwise, if the shell is not interactive, POSIX says that `jobs'
is the only way to notify of job status. */
-#if 1
- if ((job_control == 0 && interactive_shell) ||
- (startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)))
-#else /* TAG:bash-5.1 */
if ((job_control == 0 && interactive_shell) ||
(startup_state == 2 && (subshell_environment & SUBSHELL_COMSUB)) ||
(startup_state == 2 && posixly_correct && (subshell_environment & SUBSHELL_COMSUB) == 0))
-#endif
{
/* POSIX.2 compatibility: if the shell is not interactive,
hang onto the job corresponding to the last asynchronous
@@ -4319,15 +4521,7 @@ just_bail:
if (interactive)
get_tty_state ();
- if (js.c_childmax < 0)
- js.c_childmax = getmaxchild ();
- 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
+ set_maxchild (0);
return job_control;
}
@@ -4673,7 +4867,7 @@ mark_dead_jobs_as_notified (force)
way to avoid pid aliasing and reuse problems than keeping the POSIX-
mandated CHILD_MAX jobs around. delete_job() takes care of keeping the
bgpids list regulated. */
-
+
/* Count the number of dead jobs */
/* XXX could use js.j_firstj here */
for (i = ndead = ndeadproc = 0; i < js.j_jobslots; i++)
@@ -4701,14 +4895,7 @@ mark_dead_jobs_as_notified (force)
#endif
if (js.c_childmax < 0)
- js.c_childmax = getmaxchild ();
- 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
+ set_maxchild (0);
/* Don't do anything if the number of dead processes is less than CHILD_MAX
and we're not forcing a cleanup. */
@@ -4795,7 +4982,12 @@ set_job_control (arg)
if (terminal_pgrp == NO_PID)
terminal_pgrp = tcgetpgrp (shell_tty);
-
+
+ /* If we're turning on job control we're going to want to know the shell's
+ process group. */
+ if (job_control != old && job_control)
+ shell_pgrp = getpgid (0);
+
running_in_background = (terminal_pgrp != shell_pgrp);
#if 0
@@ -4856,14 +5048,23 @@ restart_job_control ()
initialize_job_control (0);
}
+/* Set the maximum number of background children we keep track of to NCHILD.
+ If the caller passes NCHILD as 0 or -1, this ends up setting it to
+ LMAXCHILD, which is initialized the first time through. */
void
set_maxchild (nchild)
int nchild;
{
static int lmaxchild = -1;
+ /* Initialize once. */
if (lmaxchild < 0)
- lmaxchild = getmaxchild ();
+ {
+ errno = 0;
+ lmaxchild = getmaxchild ();
+ if (lmaxchild < 0 && errno == 0)
+ lmaxchild = MAX_CHILD_MAX; /* assume unlimited */
+ }
if (lmaxchild < 0)
lmaxchild = DEFAULT_CHILD_MAX;
diff --git a/jobs.h b/jobs.h
index ddea88b1..43ba8c23 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -38,9 +38,14 @@
/* I looked it up. For pretty_print_job (). The real answer is 24. */
#define LONGEST_SIGNAL_DESC 24
-/* Defines for the wait_for functions and for the wait builtin to use */
-#define JWAIT_PERROR 0x01
-#define JWAIT_FORCE 0x02
+/* Defines for the wait_for_* functions and for the wait builtin to use */
+#define JWAIT_PERROR (1 << 0)
+#define JWAIT_FORCE (1 << 1)
+#define JWAIT_NOWAIT (1 << 2) /* don't waitpid(), just return status if already exited */
+#define JWAIT_WAITING (1 << 3) /* wait for jobs marked J_WAITING only */
+
+/* flags for wait_for */
+#define JWAIT_NOTERM (1 << 8) /* wait_for doesn't give terminal away */
/* The max time to sleep while retrying fork() on EAGAIN failure */
#define FORKSLEEP_MAX 16
@@ -101,14 +106,16 @@ typedef enum { JNONE = -1, JRUNNING = 1, JSTOPPED = 2, JDEAD = 4, JMIXED = 8 } J
#define J_NOTIFIED 0x02 /* Non-zero if already notified about job state. */
#define J_JOBCONTROL 0x04 /* Non-zero if this job started under job control. */
#define J_NOHUP 0x08 /* Don't send SIGHUP to job if shell gets SIGHUP. */
-#define J_STATSAVED 0x10 /* A process in this job had had status saved via $! */
+#define J_STATSAVED 0x10 /* A process in this job had status saved via $! */
#define J_ASYNC 0x20 /* Job was started asynchronously */
#define J_PIPEFAIL 0x40 /* pipefail set when job was started */
+#define J_WAITING 0x80 /* one of a list of jobs for which we are waiting */
#define IS_FOREGROUND(j) ((jobs[j]->flags & J_FOREGROUND) != 0)
#define IS_NOTIFIED(j) ((jobs[j]->flags & J_NOTIFIED) != 0)
#define IS_JOBCONTROL(j) ((jobs[j]->flags & J_JOBCONTROL) != 0)
#define IS_ASYNC(j) ((jobs[j]->flags & J_ASYNC) != 0)
+#define IS_WAITING(j) ((jobs[j]->flags & J_WAITING) != 0)
typedef struct job {
char *wd; /* The working directory at time of invocation. */
@@ -169,6 +176,20 @@ struct bgpids {
#define NO_PIDSTAT (ps_index_t)-1
+/* standalone process status struct, without bgpids indexes */
+struct procstat {
+ pid_t pid;
+ bits16_t status;
+};
+
+/* A standalone singly-linked list of PROCESS *, used in various places
+ including keeping track of process substitutions. */
+struct procchain {
+ PROCESS *head;
+ PROCESS *end;
+ int nproc;
+};
+
#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. */
@@ -178,6 +199,12 @@ struct bgpids {
#define ANY_PID (pid_t)-1
+/* flags for make_child () */
+#define FORK_SYNC 0 /* normal synchronous process */
+#define FORK_ASYNC 1 /* background process */
+#define FORK_NOJOB 2 /* don't put process in separate pgrp */
+#define FORK_NOTERM 4 /* don't give terminal to any pgrp */
+
/* System calls. */
#if !defined (HAVE_UNISTD_H)
extern pid_t fork (), getpid (), getpgrp ();
@@ -197,87 +224,97 @@ extern PROCESS *last_procsub_child;
extern JOB **jobs;
-extern void making_children __P((void));
-extern void stop_making_children __P((void));
-extern void cleanup_the_pipeline __P((void));
-extern void discard_last_procsub_child __P((void));
-extern void save_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));
-extern void nohup_job __P((int));
-extern void delete_all_jobs __P((int));
-extern void nohup_all_jobs __P((int));
-
-extern int count_all_jobs __P((void));
-
-extern void terminate_current_pipeline __P((void));
-extern void terminate_stopped_jobs __P((void));
-extern void hangup_all_jobs __P((void));
-extern void kill_current_pipeline __P((void));
+extern void making_children PARAMS((void));
+extern void stop_making_children PARAMS((void));
+extern void cleanup_the_pipeline PARAMS((void));
+extern void discard_last_procsub_child PARAMS((void));
+extern void save_pipeline PARAMS((int));
+extern PROCESS *restore_pipeline PARAMS((int));
+extern void start_pipeline PARAMS((void));
+extern int stop_pipeline PARAMS((int, COMMAND *));
+extern int discard_pipeline PARAMS((PROCESS *));
+extern void append_process PARAMS((char *, pid_t, int, int));
+
+extern void save_proc_status PARAMS((pid_t, int));
+
+extern PROCESS *procsub_add PARAMS((PROCESS *));
+extern PROCESS *procsub_search PARAMS((pid_t));
+extern PROCESS *procsub_delete PARAMS((pid_t));
+extern int procsub_waitpid PARAMS((pid_t));
+extern void procsub_waitall PARAMS((void));
+extern void procsub_clear PARAMS((void));
+extern void procsub_prune PARAMS((void));
+
+extern void delete_job PARAMS((int, int));
+extern void nohup_job PARAMS((int));
+extern void delete_all_jobs PARAMS((int));
+extern void nohup_all_jobs PARAMS((int));
+
+extern int count_all_jobs PARAMS((void));
+
+extern void terminate_current_pipeline PARAMS((void));
+extern void terminate_stopped_jobs PARAMS((void));
+extern void hangup_all_jobs PARAMS((void));
+extern void kill_current_pipeline PARAMS((void));
#if defined (__STDC__) && defined (pid_t)
-extern int get_job_by_pid __P((int, int));
-extern void describe_pid __P((int));
+extern int get_job_by_pid PARAMS((int, int, PROCESS **));
+extern void describe_pid PARAMS((int));
#else
-extern int get_job_by_pid __P((pid_t, int));
-extern void describe_pid __P((pid_t));
+extern int get_job_by_pid PARAMS((pid_t, int, PROCESS **));
+extern void describe_pid PARAMS((pid_t));
#endif
-extern void list_one_job __P((JOB *, int, int, int));
-extern void list_all_jobs __P((int));
-extern void list_stopped_jobs __P((int));
-extern void list_running_jobs __P((int));
+extern void list_one_job PARAMS((JOB *, int, int, int));
+extern void list_all_jobs PARAMS((int));
+extern void list_stopped_jobs PARAMS((int));
+extern void list_running_jobs PARAMS((int));
-extern pid_t make_child __P((char *, int));
+extern pid_t make_child PARAMS((char *, int));
-extern int get_tty_state __P((void));
-extern int set_tty_state __P((void));
+extern int get_tty_state PARAMS((void));
+extern int set_tty_state PARAMS((void));
-extern int job_exit_status __P((int));
-extern int job_exit_signal __P((int));
+extern int job_exit_status PARAMS((int));
+extern int job_exit_signal PARAMS((int));
-extern int wait_for_single_pid __P((pid_t, int));
-extern void wait_for_background_pids __P((void));
-extern int wait_for __P((pid_t));
-extern int wait_for_job __P((int, int));
-extern int wait_for_any_job __P((int));
+extern int wait_for_single_pid PARAMS((pid_t, int));
+extern void wait_for_background_pids PARAMS((struct procstat *));
+extern int wait_for PARAMS((pid_t, int));
+extern int wait_for_job PARAMS((int, int, struct procstat *));
+extern int wait_for_any_job PARAMS((int, struct procstat *));
-extern void wait_sigint_cleanup __P((void));
+extern void wait_sigint_cleanup PARAMS((void));
-extern void notify_and_cleanup __P((void));
-extern void reap_dead_jobs __P((void));
-extern int start_job __P((int, int));
-extern int kill_pid __P((pid_t, int, int));
-extern int initialize_job_control __P((int));
-extern void initialize_job_signals __P((void));
-extern int give_terminal_to __P((pid_t, int));
+extern void notify_and_cleanup PARAMS((void));
+extern void reap_dead_jobs PARAMS((void));
+extern int start_job PARAMS((int, int));
+extern int kill_pid PARAMS((pid_t, int, int));
+extern int initialize_job_control PARAMS((int));
+extern void initialize_job_signals PARAMS((void));
+extern int give_terminal_to PARAMS((pid_t, int));
-extern void run_sigchld_trap __P((int));
+extern void run_sigchld_trap PARAMS((int));
-extern int freeze_jobs_list __P((void));
-extern void unfreeze_jobs_list __P((void));
-extern void set_jobs_list_frozen __P((int));
-extern int set_job_control __P((int));
-extern void without_job_control __P((void));
-extern void end_job_control __P((void));
-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 int freeze_jobs_list PARAMS((void));
+extern void unfreeze_jobs_list PARAMS((void));
+extern void set_jobs_list_frozen PARAMS((int));
+extern int set_job_control PARAMS((int));
+extern void without_job_control PARAMS((void));
+extern void end_job_control PARAMS((void));
+extern void restart_job_control PARAMS((void));
+extern void set_sigchld_handler PARAMS((void));
+extern void ignore_tty_job_signals PARAMS((void));
+extern void default_tty_job_signals PARAMS((void));
+extern void get_original_tty_job_signals PARAMS((void));
-extern void init_job_stats __P((void));
+extern void init_job_stats PARAMS((void));
-extern void close_pgrp_pipe __P((void));
-extern void save_pgrp_pipe __P((int *, int));
-extern void restore_pgrp_pipe __P((int *));
+extern void close_pgrp_pipe PARAMS((void));
+extern void save_pgrp_pipe PARAMS((int *, int));
+extern void restore_pgrp_pipe PARAMS((int *));
-extern void set_maxchild __P((int));
+extern void set_maxchild PARAMS((int));
extern int job_control; /* set to 0 in nojobs.c */
diff --git a/lib/glob/glob.c b/lib/glob/glob.c
index 398253b5..eb6277f0 100644
--- a/lib/glob/glob.c
+++ b/lib/glob/glob.c
@@ -1,6 +1,6 @@
/* glob.c -- file-name wildcard pattern matching for Bash.
- Copyright (C) 1985-2017 Free Software Foundation, Inc.
+ Copyright (C) 1985-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -51,6 +51,7 @@
#include <signal.h>
#include "shell.h"
+#include "general.h"
#include "glob.h"
#include "strmatch.h"
@@ -83,11 +84,11 @@ struct globval
char *name;
};
-extern void throw_to_top_level __P((void));
-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));
+extern void throw_to_top_level PARAMS((void));
+extern int sh_eaccess PARAMS((const char *, int));
+extern char *sh_makepath PARAMS((const char *, const char *, int));
+extern int signal_is_pending PARAMS((int));
+extern void run_pending_traps PARAMS((void));
extern int extended_glob;
@@ -99,34 +100,40 @@ int noglob_dot_filenames = 1;
is done without regard to case. */
int glob_ignore_case = 0;
+/* Global variable controlling whether globbing ever returns . or ..
+ regardless of the pattern. If set to 1, no glob pattern will ever
+ match `.' or `..'. Disabled by default. */
+int glob_always_skip_dot_and_dotdot = 0;
+
/* Global variable to return to signify an error in globbing. */
char *glob_error_return;
static struct globval finddirs_error_return;
/* Some forward declarations. */
-static int skipname __P((char *, char *, int));
+static int skipname PARAMS((char *, char *, int));
#if HANDLE_MULTIBYTE
-static int mbskipname __P((char *, char *, int));
+static int mbskipname PARAMS((char *, char *, int));
#endif
+void udequote_pathname PARAMS((char *));
#if HANDLE_MULTIBYTE
-static void udequote_pathname __P((char *));
-static void wdequote_pathname __P((char *));
+void wcdequote_pathname PARAMS((wchar_t *));
+static void wdequote_pathname PARAMS((char *));
#else
# define dequote_pathname udequote_pathname
#endif
-static void dequote_pathname __P((char *));
-static int glob_testdir __P((char *, int));
-static char **glob_dir_to_array __P((char *, char **, int));
+static void dequote_pathname PARAMS((char *));
+static int glob_testdir PARAMS((char *, int));
+static char **glob_dir_to_array PARAMS((char *, char **, int));
/* 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));
+extern char *glob_patscan PARAMS((char *, char *, int));
+extern wchar_t *glob_patscan_wc PARAMS((wchar_t *, wchar_t *, int));
/* And this from gmisc.c/gm_loop.c */
-extern int wextglob_pattern_p __P((wchar_t *));
+extern int wextglob_pattern_p PARAMS((wchar_t *));
-extern char *glob_dirscan __P((char *, int));
+extern char *glob_dirscan PARAMS((char *, int));
/* Compile `glob_loop.c' for single-byte characters. */
#define GCHAR unsigned char
@@ -159,7 +166,7 @@ glob_pattern_p (pattern)
wchar_t *wpattern;
int r;
- if (MB_CUR_MAX == 1)
+ if (MB_CUR_MAX == 1 || mbsmbchar (pattern) == 0)
return (internal_glob_pattern_p ((unsigned char *)pattern));
/* Convert strings to wide chars, and call the multibyte version. */
@@ -173,7 +180,7 @@ glob_pattern_p (pattern)
return r;
#else
- return (internal_glob_pattern_p (pattern));
+ return (internal_glob_pattern_p ((unsigned char *)pattern));
#endif
}
@@ -187,7 +194,7 @@ extglob_skipname (pat, dname, flags)
int flags;
{
char *pp, *pe, *t, *se;
- int n, r, negate, wild;
+ int n, r, negate, wild, nullpat;
negate = *pat == '!';
wild = *pat == '*' || *pat == '?';
@@ -214,6 +221,11 @@ extglob_skipname (pat, dname, flags)
return r;
}
+ /* Is the extglob pattern between the parens the null pattern? The null
+ pattern can match nothing, so should we check any remaining portion of
+ the pattern? */
+ nullpat = pe >= (pat + 2) && pe[-2] == '(' && pe[-1] == ')';
+
/* check every subpattern */
while (t = glob_patscan (pp, pe, '|'))
{
@@ -257,12 +269,14 @@ skipname (pat, dname, flags)
return (extglob_skipname (pat, dname, flags));
#endif
+ if (glob_always_skip_dot_and_dotdot && DOT_OR_DOTDOT (dname))
+ return 1;
+
/* If a leading dot need not be explicitly matched, and the pattern
doesn't start with a `.', don't match `.' or `..' */
if (noglob_dot_filenames == 0 && pat[0] != '.' &&
(pat[0] != '\\' || pat[1] != '.') &&
- (dname[0] == '.' &&
- (dname[1] == '\0' || (dname[1] == '.' && dname[2] == '\0'))))
+ DOT_OR_DOTDOT (dname))
return 1;
/* If a dot must be explicitly matched, check to see if they do. */
@@ -280,12 +294,14 @@ wskipname (pat, dname, flags)
wchar_t *pat, *dname;
int flags;
{
+ if (glob_always_skip_dot_and_dotdot && WDOT_OR_DOTDOT (dname))
+ return 1;
+
/* If a leading dot need not be explicitly matched, and the
pattern doesn't start with a `.', don't match `.' or `..' */
if (noglob_dot_filenames == 0 && pat[0] != L'.' &&
(pat[0] != L'\\' || pat[1] != L'.') &&
- (dname[0] == L'.' &&
- (dname[1] == L'\0' || (dname[1] == L'.' && dname[2] == L'\0'))))
+ WDOT_OR_DOTDOT (dname))
return 1;
/* If a leading dot must be explicitly matched, check to see if the
@@ -305,7 +321,7 @@ wextglob_skipname (pat, dname, flags)
{
#if EXTENDED_GLOB
wchar_t *pp, *pe, *t, n, *se;
- int r, negate, wild;
+ int r, negate, wild, nullpat;
negate = *pat == L'!';
wild = *pat == L'*' || *pat == L'?';
@@ -323,6 +339,11 @@ wextglob_skipname (pat, dname, flags)
return r;
}
+ /* Is the extglob pattern between the parens the null pattern? The null
+ pattern can match nothing, so should we check any remaining portion of
+ the pattern? */
+ nullpat = pe >= (pat + 2) && pe[-2] == L'(' && pe[-1] == L')';
+
/* check every subpattern */
while (t = glob_patscan_wc (pp, pe, '|'))
{
@@ -389,7 +410,7 @@ mbskipname (pat, dname, flags)
#endif /* HANDLE_MULTIBYTE */
/* Remove backslashes quoting characters in PATHNAME by modifying PATHNAME. */
-static void
+void
udequote_pathname (pathname)
char *pathname;
{
@@ -411,6 +432,26 @@ udequote_pathname (pathname)
#if HANDLE_MULTIBYTE
/* Remove backslashes quoting characters in PATHNAME by modifying PATHNAME. */
+void
+wcdequote_pathname (wpathname)
+ wchar_t *wpathname;
+{
+ int i, j;
+
+ for (i = j = 0; wpathname && wpathname[i]; )
+ {
+ if (wpathname[i] == L'\\')
+ i++;
+
+ wpathname[j++] = wpathname[i++];
+
+ if (wpathname[i - 1] == L'\0')
+ break;
+ }
+ if (wpathname)
+ wpathname[j] = L'\0';
+}
+
static void
wdequote_pathname (pathname)
char *pathname;
@@ -421,6 +462,12 @@ wdequote_pathname (pathname)
int i, j;
wchar_t *orig_wpathname;
+ if (mbsmbchar (pathname) == 0)
+ {
+ udequote_pathname (pathname);
+ return;
+ }
+
len = strlen (pathname);
/* Convert the strings into wide characters. */
n = xdupmbstowcs (&wpathname, NULL, pathname);
@@ -432,22 +479,17 @@ wdequote_pathname (pathname)
}
orig_wpathname = wpathname;
- for (i = j = 0; wpathname && wpathname[i]; )
- {
- if (wpathname[i] == L'\\')
- i++;
-
- wpathname[j++] = wpathname[i++];
-
- if (wpathname[i - 1] == L'\0')
- break;
- }
- if (wpathname)
- wpathname[j] = L'\0';
+ wcdequote_pathname (wpathname);
/* Convert the wide character string into unibyte character set. */
memset (&ps, '\0', sizeof(mbstate_t));
n = wcsrtombs(pathname, (const wchar_t **)&wpathname, len, &ps);
+ if (n == (size_t)-1 || (wpathname && *wpathname != 0)) /* what? now you tell me? */
+ {
+ wpathname = orig_wpathname;
+ memset (&ps, '\0', sizeof(mbstate_t));
+ n = xwcsrtombs (pathname, (const wchar_t **)&wpathname, len, &ps);
+ }
pathname[len] = '\0';
/* Can't just free wpathname here; wcsrtombs changes it in many cases. */
@@ -607,6 +649,7 @@ glob_vector (pat, dir, flags)
register unsigned int i;
int mflags; /* Flags passed to strmatch (). */
int pflags; /* flags passed to sh_makepath () */
+ int hasglob; /* return value from glob_pattern_p */
int nalloca;
struct globval *firstmalloc, *tmplink;
char *convfn;
@@ -648,10 +691,12 @@ glob_vector (pat, dir, flags)
patlen = (pat && *pat) ? strlen (pat) : 0;
/* If the filename pattern (PAT) does not contain any globbing characters,
+ or contains a pattern with only backslash escapes (hasglob == 2),
we can dispense with reading the directory, and just see if there is
a filename `DIR/PAT'. If there is, and we can access it, just make the
vector to return and bail immediately. */
- if (skip == 0 && glob_pattern_p (pat) == 0)
+ hasglob = 0;
+ if (skip == 0 && ((hasglob = glob_pattern_p (pat)) == 0 || hasglob == 2))
{
int dirlen;
struct stat finfo;
@@ -807,14 +852,6 @@ glob_vector (pat, dir, flags)
}
}
- /* When FLAGS includes GX_ALLDIRS, we want to skip a symlink
- to a directory, since we will pick the directory up later. */
- if (isdir == -2 && glob_testdir (subdir, 0) == 0)
- {
- free (subdir);
- continue;
- }
-
/* XXX - should we even add this if it's not a directory? */
nextlink = (struct globval *) malloc (sizeof (struct globval));
if (firstmalloc == 0)
@@ -1024,17 +1061,22 @@ glob_dir_to_array (dir, array, flags)
strcpy (result[i], dir);
if (add_slash)
result[i][l] = '/';
- strcpy (result[i] + l + add_slash, array[i]);
- if (flags & GX_MARKDIRS)
+ if (array[i][0])
{
- if ((stat (result[i], &sb) == 0) && S_ISDIR (sb.st_mode))
+ strcpy (result[i] + l + add_slash, array[i]);
+ if (flags & GX_MARKDIRS)
{
- size_t rlen;
- rlen = strlen (result[i]);
- result[i][rlen] = '/';
- result[i][rlen+1] = '\0';
+ if ((stat (result[i], &sb) == 0) && S_ISDIR (sb.st_mode))
+ {
+ size_t rlen;
+ rlen = strlen (result[i]);
+ result[i][rlen] = '/';
+ result[i][rlen+1] = '\0';
+ }
}
}
+ else
+ result[i][l+add_slash] = '\0';
}
result[i] = NULL;
@@ -1228,6 +1270,7 @@ glob_filename (pathname, flags)
files ending in `h' with a `/' appended. */
dname = directories[i];
dflags = flags & ~(GX_MARKDIRS|GX_ALLDIRS|GX_ADDCURDIR);
+ /* last_starstar? */
if ((flags & GX_GLOBSTAR) && filename[0] == '*' && filename[1] == '*' && filename[2] == '\0')
dflags |= GX_ALLDIRS|GX_ADDCURDIR;
if (dname[0] == '\0' && filename[0])
@@ -1235,7 +1278,44 @@ glob_filename (pathname, flags)
dflags |= GX_NULLDIR;
dname = "."; /* treat null directory name and non-null filename as current directory */
}
- temp_results = glob_vector (filename, dname, dflags);
+
+ /* Special handling for symlinks to directories with globstar on */
+ if (all_starstar && (dflags & GX_NULLDIR) == 0)
+ {
+ int dlen;
+
+ /* If we have a directory name that is not null (GX_NULLDIR above)
+ and is a symlink to a directory, we return the symlink if
+ we're not `descending' into it (filename[0] == 0) and return
+ glob_error_return (which causes the code below to skip the
+ name) otherwise. I should fold this into a test that does both
+ checks instead of calling stat twice. */
+ if (glob_testdir (dname, flags|GX_ALLDIRS) == -2 && glob_testdir (dname, 0) == 0)
+ {
+ if (filename[0] != 0)
+ temp_results = (char **)&glob_error_return; /* skip */
+ else
+ {
+ /* Construct array to pass to glob_dir_to_array */
+ temp_results = (char **)malloc (2 * sizeof (char *));
+ if (temp_results == NULL)
+ goto memory_error;
+ temp_results[0] = (char *)malloc (1);
+ if (temp_results[0] == 0)
+ {
+ free (temp_results);
+ goto memory_error;
+ }
+ **temp_results = '\0';
+ temp_results[1] = NULL;
+ dflags |= GX_SYMLINK; /* mostly for debugging */
+ }
+ }
+ else
+ temp_results = glob_vector (filename, dname, dflags);
+ }
+ else
+ temp_results = glob_vector (filename, dname, dflags);
/* Handle error cases. */
if (temp_results == NULL)
@@ -1283,6 +1363,8 @@ glob_filename (pathname, flags)
else
array = temp_results;
}
+ else if (dflags & GX_SYMLINK)
+ array = glob_dir_to_array (directories[i], temp_results, flags);
else
array = glob_dir_to_array (directories[i], temp_results, flags);
l = 0;
@@ -1347,7 +1429,21 @@ only_filename:
/* We could check whether or not the dequoted directory_name is a
directory and return it here, returning the original directory_name
- if not, but we don't do that yet. I'm not sure it matters. */
+ if not, but we don't do that. We do return the dequoted directory
+ name if we're not being called recursively and the dequoted name
+ corresponds to an actual directory. For better backwards compatibility,
+ we can return &glob_error_return unconditionally in this case. */
+
+ if (directory_len > 0 && hasglob == 2 && (flags & GX_RECURSE) == 0)
+ {
+ dequote_pathname (directory_name);
+ if (glob_testdir (directory_name, 0) < 0)
+ {
+ if (free_dirname)
+ free (directory_name);
+ return ((char **)&glob_error_return);
+ }
+ }
/* Handle GX_MARKDIRS here. */
result[0] = (char *) malloc (directory_len + 1);
diff --git a/lib/glob/glob.h b/lib/glob/glob.h
index 56ac08ba..ca3a66cf 100644
--- a/lib/glob/glob.h
+++ b/lib/glob/glob.h
@@ -1,5 +1,5 @@
/* File-name wildcard pattern matching for GNU.
- Copyright (C) 1985, 1988, 1989, 2008,2009 Free Software Foundation, Inc.
+ Copyright (C) 1985-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -31,12 +31,13 @@
#define GX_ADDCURDIR 0x200 /* internal -- add passed directory name */
#define GX_GLOBSTAR 0x400 /* turn on special handling of ** */
#define GX_RECURSE 0x800 /* internal -- glob_filename called recursively */
+#define GX_SYMLINK 0x1000 /* internal -- symlink to a directory */
-extern int glob_pattern_p __P((const char *));
-extern char **glob_vector __P((char *, char *, int));
-extern char **glob_filename __P((char *, int));
+extern int glob_pattern_p PARAMS((const char *));
+extern char **glob_vector PARAMS((char *, char *, int));
+extern char **glob_filename PARAMS((char *, int));
-extern int extglob_pattern_p __P((const char *));
+extern int extglob_pattern_p PARAMS((const char *));
extern char *glob_error_return;
extern int noglob_dot_filenames;
diff --git a/lib/glob/glob_loop.c b/lib/glob/glob_loop.c
index 3a4f4f1e..467e7ae3 100644
--- a/lib/glob/glob_loop.c
+++ b/lib/glob/glob_loop.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -16,7 +16,7 @@
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
-static int INTERNAL_GLOB_PATTERN_P __P((const GCHAR *));
+static int INTERNAL_GLOB_PATTERN_P PARAMS((const GCHAR *));
/* Return nonzero if PATTERN has any special globbing chars in it.
Compiled twice, once each for single-byte and multibyte characters. */
@@ -70,7 +70,11 @@ INTERNAL_GLOB_PATTERN_P (pattern)
return 0;
}
+#if 0
return bsquote ? 2 : 0;
+#else
+ return (0);
+#endif
}
#undef INTERNAL_GLOB_PATTERN_P
diff --git a/lib/glob/gmisc.c b/lib/glob/gmisc.c
index a2bca965..f3d74cea 100644
--- a/lib/glob/gmisc.c
+++ b/lib/glob/gmisc.c
@@ -1,6 +1,6 @@
/* gmisc.c -- miscellaneous pattern matching utility functions for Bash.
- Copyright (C) 2010-2017 Free Software Foundation, Inc.
+ Copyright (C) 2010-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -38,7 +38,7 @@
#include "glob.h"
/* Make sure these names continue to agree with what's in smatch.c */
-extern char *glob_patscan __P((char *, char *, int));
+extern char *glob_patscan PARAMS((char *, char *, int));
/* Compile `gm_loop.c' for single-byte characters. */
#define CHAR char
diff --git a/lib/glob/sm_loop.c b/lib/glob/sm_loop.c
index cc14fb16..a98c14bd 100644
--- a/lib/glob/sm_loop.c
+++ b/lib/glob/sm_loop.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,14 +22,16 @@ struct STRUCT
CHAR *string;
};
-int FCT __P((CHAR *, CHAR *, int));
+int FCT PARAMS((CHAR *, CHAR *, int));
-static int GMATCH __P((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int));
-static CHAR *PARSE_COLLSYM __P((CHAR *, INT *));
-static CHAR *BRACKMATCH __P((CHAR *, U_CHAR, int));
-static int EXTMATCH __P((INT, CHAR *, CHAR *, CHAR *, CHAR *, int));
+static int GMATCH PARAMS((CHAR *, CHAR *, CHAR *, CHAR *, struct STRUCT *, int));
+static CHAR *PARSE_COLLSYM PARAMS((CHAR *, INT *));
+static CHAR *BRACKMATCH PARAMS((CHAR *, U_CHAR, int));
+static int EXTMATCH PARAMS((INT, CHAR *, CHAR *, CHAR *, CHAR *, int));
-/*static*/ CHAR *PATSCAN __P((CHAR *, CHAR *, INT));
+extern void DEQUOTE_PATHNAME PARAMS((CHAR *));
+
+/*static*/ CHAR *PATSCAN PARAMS((CHAR *, CHAR *, INT));
int
FCT (pattern, string, flags)
@@ -384,9 +386,10 @@ BRACKMATCH (p, test, flags)
{
register CHAR cstart, cend, c;
register int not; /* Nonzero if the sense of the character class is inverted. */
- int brcnt, brchr, forcecoll, isrange;
+ int brcnt, forcecoll, isrange;
INT pc;
CHAR *savep;
+ CHAR *brchrp;
U_CHAR orig_test;
orig_test = test;
@@ -455,6 +458,9 @@ BRACKMATCH (p, test, flags)
{
bcopy (p + 1, ccname, (close - p - 1) * sizeof (CHAR));
*(ccname + (close - p - 1)) = L('\0');
+ /* As a result of a POSIX discussion, char class names are
+ allowed to be quoted (?) */
+ DEQUOTE_PATHNAME (ccname);
pc = IS_CCLASS (orig_test, (XCHAR *)ccname);
}
if (pc == -1)
@@ -577,15 +583,10 @@ BRACKMATCH (p, test, flags)
isrange = 1;
}
-#if 0 /* TAG: bash-5.1 */
if (isrange == 0 && test == cstart)
goto matched;
if (isrange && RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0)
goto matched;
-#else
- if (RANGECMP (test, cstart, forcecoll) >= 0 && RANGECMP (test, cend, forcecoll) <= 0)
- goto matched;
-#endif
if (c == L(']'))
break;
@@ -597,7 +598,7 @@ matched:
/* Skip the rest of the [...] that already matched. */
c = *--p;
brcnt = 1;
- brchr = 0;
+ brchrp = 0;
while (brcnt > 0)
{
int oc;
@@ -611,13 +612,26 @@ matched:
if (c == L('[') && (*p == L('=') || *p == L(':') || *p == L('.')))
{
brcnt++;
- brchr = *p;
+ brchrp = p++; /* skip over the char after the left bracket */
+ if ((c = *p) == L('\0'))
+ return ((test == L('[')) ? savep : (CHAR *)0);
+ /* If *brchrp == ':' we should check that the rest of the characters
+ form a valid character class name. We don't do that yet, but we
+ keep BRCHRP in case we want to. */
+ }
+ /* We only want to check brchrp if we set it above. */
+ else if (c == L(']') && brcnt > 1 && brchrp != 0 && oc == *brchrp)
+ {
+ brcnt--;
+ brchrp = 0; /* just in case */
}
- /* we only want to check brchr if we set it above */
- else if (c == L(']') && brcnt > 1 && brchr != 0 && oc == brchr)
- brcnt--;
- else if (c == L(']') && brcnt == 1)
- brcnt--;
+ /* Left bracket loses its special meaning inside a bracket expression.
+ It is only valid when followed by a `.', `=', or `:', which we check
+ for above. Technically the right bracket can appear in a collating
+ symbol, so we check for that here. Otherwise, it terminates the
+ bracket expression. */
+ else if (c == L(']') && (brchrp == 0 || *brchrp != L('.')) && brcnt >= 1)
+ brcnt = 0;
else if (!(flags & FNM_NOESCAPE) && c == L('\\'))
{
if (*p == '\0')
@@ -915,6 +929,7 @@ fprintf(stderr, "extmatch: flags = %d\n", flags);
#undef PATSCAN
#undef STRCOMPARE
#undef EXTMATCH
+#undef DEQUOTE_PATHNAME
#undef STRUCT
#undef BRACKMATCH
#undef STRCHR
diff --git a/lib/glob/smatch.c b/lib/glob/smatch.c
index 64fdbbb7..a58456d7 100644
--- a/lib/glob/smatch.c
+++ b/lib/glob/smatch.c
@@ -1,7 +1,7 @@
/* strmatch.c -- ksh-like extended pattern matching for the shell and filename
globbing. */
-/* Copyright (C) 1991-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,6 +36,12 @@
extern int errno;
#endif
+#if FNMATCH_EQUIV_FALLBACK
+/* We don't include <fnmatch.h> in order to avoid namespace collisions; the
+ internal strmatch still uses the FNM_ constants. */
+extern int fnmatch (const char *, const char *, int);
+#endif
+
/* First, compile `sm_loop.c' for single-byte characters. */
#define CHAR unsigned char
#define U_CHAR unsigned char
@@ -55,6 +61,32 @@ extern int errno;
int glob_asciirange = GLOBASCII_DEFAULT;
+#if FNMATCH_EQUIV_FALLBACK
+/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them
+ to fnmatch to see if wide characters c1 and c2 collate as members of the
+ same equivalence class. We can't really do this portably any other way */
+static int
+_fnmatch_fallback (s, p)
+ int s, p; /* string char, patchar */
+{
+ char s1[2]; /* string */
+ char s2[8]; /* constructed pattern */
+
+ s1[0] = (unsigned char)s;
+ s1[1] = '\0';
+
+ /* reconstruct the pattern */
+ s2[0] = s2[1] = '[';
+ s2[2] = '=';
+ s2[3] = (unsigned char)p;
+ s2[4] = '=';
+ s2[5] = s2[6] = ']';
+ s2[7] = '\0';
+
+ return (fnmatch ((const char *)s2, (const char *)s1, 0));
+}
+#endif
+
/* We use strcoll(3) for range comparisons in bracket expressions,
even though it can have unwanted side effects in locales
other than POSIX or US. For instance, in the de locale, [A-Z] matches
@@ -63,9 +95,11 @@ int glob_asciirange = GLOBASCII_DEFAULT;
straight ordering as if in the C locale. */
#if defined (HAVE_STRCOLL)
-/* Helper function for collating symbol equivalence. */
+/* Helper functions for collating symbol equivalence. */
+
+/* Return 0 if C1 == C2 or collates equally if FORCECOLL is non-zero. */
static int
-rangecmp (c1, c2, forcecoll)
+charcmp (c1, c2, forcecoll)
int c1, c2;
int forcecoll;
{
@@ -86,8 +120,21 @@ rangecmp (c1, c2, forcecoll)
s1[0] = c1;
s2[0] = c2;
- if ((ret = strcoll (s1, s2)) != 0)
- return ret;
+ return (strcoll (s1, s2));
+}
+
+static int
+rangecmp (c1, c2, forcecoll)
+ int c1, c2;
+ int forcecoll;
+{
+ int r;
+
+ r = charcmp (c1, c2, forcecoll);
+
+ /* We impose a total ordering here by returning c1-c2 if charcmp returns 0 */
+ if (r != 0)
+ return r;
return (c1 - c2); /* impose total ordering */
}
#else /* !HAVE_STRCOLL */
@@ -95,14 +142,23 @@ rangecmp (c1, c2, forcecoll)
#endif /* !HAVE_STRCOLL */
#if defined (HAVE_STRCOLL)
+/* Returns 1 if chars C and EQUIV collate equally in the current locale. */
static int
-collequiv (c1, c2)
- int c1, c2;
+collequiv (c, equiv)
+ int c, equiv;
{
- return (rangecmp (c1, c2, 1) == 0);
+ if (charcmp (c, equiv, 1) == 0)
+ return 1;
+
+#if FNMATCH_EQUIV_FALLBACK
+ return (_fnmatch_fallback (c, equiv) == 0);
+#else
+ return 0;
+#endif
+
}
#else
-# define collequiv(c1, c2) ((c1) == (c2))
+# define collequiv(c, equiv) ((c) == (equiv))
#endif
#define _COLLSYM _collsym
@@ -260,6 +316,7 @@ is_cclass (c, name)
#define PATSCAN glob_patscan
#define STRCOMPARE strcompare
#define EXTMATCH extmatch
+#define DEQUOTE_PATHNAME udequote_pathname
#define STRUCT smat_struct
#define STRCHR(S, C) strchr((S), (C))
#define MEMCHR(S, C, N) memchr((S), (C), (N))
@@ -286,13 +343,9 @@ is_cclass (c, name)
# define STREQ(s1, s2) ((wcscmp (s1, s2) == 0))
# define STREQN(a, b, n) ((a)[0] == (b)[0] && wcsncmp(a, b, n) == 0)
-extern char *mbsmbchar __P((const char *));
+extern char *mbsmbchar PARAMS((const char *));
#if FNMATCH_EQUIV_FALLBACK
-/* We don't include <fnmatch.h> in order to avoid namespace collisions; the
- internal strmatch still uses the FNM_ constants. */
-extern int fnmatch (const char *, const char *, int);
-
/* Construct a string w1 = "c1" and a pattern w2 = "[[=c2=]]" and pass them
to fnmatch to see if wide characters c1 and c2 collate as members of the
same equivalence class. We can't really do this portably any other way */
@@ -324,13 +377,13 @@ _fnmatch_fallback_wc (c1, c2)
#endif
static int
-rangecmp_wc (c1, c2, forcecoll)
+charcmp_wc (c1, c2, forcecoll)
wint_t c1, c2;
int forcecoll;
{
static wchar_t s1[2] = { L' ', L'\0' };
static wchar_t s2[2] = { L' ', L'\0' };
- int r, oerrno;
+ int r;
if (c1 == c2)
return 0;
@@ -341,27 +394,35 @@ rangecmp_wc (c1, c2, forcecoll)
s1[0] = c1;
s2[0] = c2;
-#if 0 /* TAG:bash-5.1 */
- /* We impose a total ordering here by returning c1-c2 if wcscoll returns 0,
- as we do above in the single-byte case. If we do this, we can no longer
- use this code in collequiv_wc */
- if ((r = wcscoll (s1, s2)) != 0)
+ return (wcscoll (s1, s2));
+}
+
+static int
+rangecmp_wc (c1, c2, forcecoll)
+ wint_t c1, c2;
+ int forcecoll;
+{
+ int r;
+
+ r = charcmp_wc (c1, c2, forcecoll);
+
+ /* We impose a total ordering here by returning c1-c2 if charcmp returns 0,
+ as we do above in the single-byte case. */
+ if (r != 0 || forcecoll)
return r;
return ((int)(c1 - c2)); /* impose total ordering */
-#else
- return (wcscoll (s1, s2));
-#endif
}
-/* Returns non-zero on success */
+/* Returns 1 if wide chars C and EQUIV collate equally in the current locale. */
static int
collequiv_wc (c, equiv)
wint_t c, equiv;
{
wchar_t s, p;
- if (rangecmp_wc (c, equiv, 1) == 0)
+ if (charcmp_wc (c, equiv, 1) == 0)
return 1;
+
#if FNMATCH_EQUIV_FALLBACK
/* We check explicitly for success (fnmatch returns 0) to avoid problems if
our local definition of FNM_NOMATCH (strmatch.h) doesn't match the
@@ -500,6 +561,7 @@ posix_cclass_only (pattern)
#define PATSCAN glob_patscan_wc
#define STRCOMPARE wscompare
#define EXTMATCH extmatch_wc
+#define DEQUOTE_PATHNAME wcdequote_pathname
#define STRUCT wcsmat_struct
#define STRCHR(S, C) wcschr((S), (C))
#define MEMCHR(S, C, N) wmemchr((S), (C), (N))
@@ -529,7 +591,7 @@ xstrmatch (pattern, string, flags)
if (MB_CUR_MAX == 1)
return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
- if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern) )
+ if (mbsmbchar (string) == 0 && mbsmbchar (pattern) == 0 && posix_cclass_only (pattern))
return (internal_strmatch ((unsigned char *)pattern, (unsigned char *)string, flags));
n = xdupmbstowcs (&wpattern, NULL, pattern);
diff --git a/lib/glob/strmatch.c b/lib/glob/strmatch.c
index cea9bd86..5b7b49fb 100644
--- a/lib/glob/strmatch.c
+++ b/lib/glob/strmatch.c
@@ -1,7 +1,7 @@
/* strmatch.c -- ksh-like extended pattern matching for the shell and filename
globbing. */
-/* Copyright (C) 1991-2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -24,9 +24,9 @@
#include "stdc.h"
#include "strmatch.h"
-extern int xstrmatch __P((char *, char *, int));
+extern int xstrmatch PARAMS((char *, char *, int));
#if defined (HANDLE_MULTIBYTE)
-extern int internal_wstrmatch __P((wchar_t *, wchar_t *, int));
+extern int internal_wstrmatch PARAMS((wchar_t *, wchar_t *, int));
#endif
int
diff --git a/lib/glob/strmatch.h b/lib/glob/strmatch.h
index aee00cc8..fa7be7bb 100644
--- a/lib/glob/strmatch.h
+++ b/lib/glob/strmatch.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2004 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -55,10 +55,10 @@
/* Match STRING against the filename pattern PATTERN,
returning zero if it matches, FNM_NOMATCH if not. */
-extern int strmatch __P((char *, char *, int));
+extern int strmatch PARAMS((char *, char *, int));
#if HANDLE_MULTIBYTE
-extern int wcsmatch __P((wchar_t *, wchar_t *, int));
+extern int wcsmatch PARAMS((wchar_t *, wchar_t *, int));
#endif
#endif /* _STRMATCH_H */
diff --git a/lib/glob/xmbsrtowcs.c b/lib/glob/xmbsrtowcs.c
index 11a4d1b9..17250c30 100644
--- a/lib/glob/xmbsrtowcs.c
+++ b/lib/glob/xmbsrtowcs.c
@@ -1,6 +1,6 @@
/* xmbsrtowcs.c -- replacement function for mbsrtowcs */
-/* Copyright (C) 2002-2013 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -35,6 +35,11 @@
#if HANDLE_MULTIBYTE
+#include <errno.h>
+#if !defined (errno)
+extern int errno;
+#endif
+
#define WSBUF_INC 32
#ifndef FREE
@@ -42,7 +47,7 @@
#endif
#if ! HAVE_STRCHRNUL
-extern char *strchrnul __P((const char *, int));
+extern char *strchrnul PARAMS((const char *, int));
#endif
/* On some locales (ex. ja_JP.sjis), mbsrtowc doesn't convert 0x5c to U<0x5c>.
@@ -406,4 +411,113 @@ xdupmbstowcs (destp, indicesp, src)
return (wcnum - 1);
}
+/* Convert wide character string to multibyte character string. Treat invalid
+ wide characters as bytes. Used only in unusual circumstances.
+
+ Written by Bruno Haible <bruno@clisp.org>, 2008, adapted by Chet Ramey
+ for use in Bash. */
+
+/* Convert wide character string *SRCP to a multibyte character string and
+ store the result in DEST. Store at most LEN bytes in DEST. */
+size_t
+xwcsrtombs (char *dest, const wchar_t **srcp, size_t len, mbstate_t *ps)
+{
+ const wchar_t *src;
+ size_t cur_max; /* XXX - locale_cur_max */
+ char buf[64], *destptr, *tmp_dest;
+ unsigned char uc;
+ mbstate_t prev_state;
+
+ cur_max = MB_CUR_MAX;
+ if (cur_max > sizeof (buf)) /* Holy cow. */
+ return (size_t)-1;
+
+ src = *srcp;
+
+ if (dest != NULL)
+ {
+ destptr = dest;
+
+ for (; len > 0; src++)
+ {
+ wchar_t wc;
+ size_t ret;
+
+ wc = *src;
+ /* If we have room, store directly into DEST. */
+ tmp_dest = destptr;
+ ret = wcrtomb (len >= cur_max ? destptr : buf, wc, ps);
+
+ if (ret == (size_t)(-1)) /* XXX */
+ {
+ /* Since this is used for globbing and other uses of filenames,
+ treat invalid wide character sequences as bytes. This is
+ intended to be symmetric with xdupmbstowcs2. */
+handle_byte:
+ destptr = tmp_dest; /* in case wcrtomb modified it */
+ uc = wc;
+ ret = 1;
+ if (len >= cur_max)
+ *destptr = uc;
+ else
+ buf[0] = uc;
+ if (ps)
+ memset (ps, 0, sizeof (mbstate_t));
+ }
+
+ if (ret > cur_max) /* Holy cow */
+ goto bad_input;
+
+ if (len < ret)
+ break;
+
+ if (len < cur_max)
+ memcpy (destptr, buf, ret);
+
+ if (wc == 0)
+ {
+ src = NULL;
+ /* Here mbsinit (ps). */
+ break;
+ }
+ destptr += ret;
+ len -= ret;
+ }
+ *srcp = src;
+ return destptr - dest;
+ }
+ else
+ {
+ /* Ignore dest and len, don't store *srcp at the end, and
+ don't clobber *ps. */
+ mbstate_t state = *ps;
+ size_t totalcount = 0;
+
+ for (;; src++)
+ {
+ wchar_t wc;
+ size_t ret;
+
+ wc = *src;
+ ret = wcrtomb (buf, wc, &state);
+
+ if (ret == (size_t)(-1))
+ goto bad_input2;
+ if (wc == 0)
+ {
+ /* Here mbsinit (&state). */
+ break;
+ }
+ totalcount += ret;
+ }
+ return totalcount;
+ }
+
+bad_input:
+ *srcp = src;
+bad_input2:
+ errno = EILSEQ;
+ return (size_t)(-1);
+}
+
#endif /* HANDLE_MULTIBYTE */
diff --git a/lib/malloc/imalloc.h b/lib/malloc/imalloc.h
index 82b09eba..d07adac2 100644
--- a/lib/malloc/imalloc.h
+++ b/lib/malloc/imalloc.h
@@ -1,6 +1,6 @@
/* imalloc.h -- internal malloc definitions shared by source files. */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -67,11 +67,11 @@
# endif /* HAVE_BCOPY */
#endif /* !__GNUC__ */
-#if !defined (__P)
+#if !defined (PARAMS)
# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) || defined (PROTOTYPES)
-# define __P(protos) protos
+# define PARAMS(protos) protos
# else
-# define __P(protos) ()
+# define PARAMS(protos) ()
# endif
#endif
@@ -167,7 +167,7 @@ do { \
#include <signal.h>
-extern void _malloc_block_signals __P((sigset_t *, sigset_t *));
-extern void _malloc_unblock_signals __P((sigset_t *, sigset_t *));
+extern void _malloc_block_signals PARAMS((sigset_t *, sigset_t *));
+extern void _malloc_unblock_signals PARAMS((sigset_t *, sigset_t *));
#endif /* _IMALLOC_H */
diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c
index 5621adf4..439f8ef1 100644
--- a/lib/malloc/malloc.c
+++ b/lib/malloc/malloc.c
@@ -1,6 +1,6 @@
/* malloc.c - dynamic memory allocation for bash. */
-/* Copyright (C) 1985-2005 Free Software Foundation, Inc.
+/* Copyright (C) 1985-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -25,6 +25,8 @@
*
* Nov 1983, Mike@BRL, Added support for 4.1C/4.2 BSD.
*
+ * [VERY] old explanation:
+ *
* This is a very fast storage allocator. It allocates blocks of a small
* number of different sizes, and keeps free lists of each size. Blocks
* that don't exactly fit are passed up to the next larger size. In this
@@ -84,6 +86,10 @@
#include <errno.h>
#include <stdio.h>
+#if !defined (botch)
+#include <stdlib.h>
+#endif
+
#if defined (HAVE_MMAP)
#include <sys/mman.h>
#endif
@@ -134,22 +140,35 @@
enough room in the block for the new size. Range checking is always
done. */
union mhead {
+#if SIZEOF_CHAR_P == 8
+ bits64_t mh_align[2]; /* 16 */
+#else
bits64_t mh_align; /* 8 */
+#endif
struct {
char mi_alloc; /* ISALLOC or ISFREE */ /* 1 */
char mi_index; /* index in nextf[] */ /* 1 */
/* Remainder are valid only when block is allocated */
u_bits16_t mi_magic2; /* should be == MAGIC2 */ /* 2 */
u_bits32_t mi_nbytes; /* # of bytes allocated */ /* 4 */
+#if SIZEOF_CHAR_P == 8
+ char mi_magic8[8]; /* MAGIC1 guard bytes */ /* 8 */
+#endif
} minfo;
};
#define mh_alloc minfo.mi_alloc
#define mh_index minfo.mi_index
#define mh_nbytes minfo.mi_nbytes
#define mh_magic2 minfo.mi_magic2
+#define mh_magic8 minfo.mi_magic8
#define MOVERHEAD sizeof(union mhead)
+
+#if SIZEOF_CHAR_P == 8
+#define MALIGN_MASK 15
+#else
#define MALIGN_MASK 7 /* one less than desired alignment */
+#endif
typedef union _malloc_guard {
char s[4];
@@ -163,6 +182,8 @@ typedef union _malloc_guard {
to describe the overhead for when the block is in use,
and we do not want the free-list pointer to count in that. */
+/* If SIZEOF_CHAR_P == 8, this goes into the mh_magic8 buffer at the end of
+ the rest of the struct. This may need adjusting. */
#define CHAIN(a) \
(*(union mhead **) (sizeof (char *) + (char *) (a)))
@@ -170,13 +191,14 @@ typedef union _malloc_guard {
and end of each allocated block, and make sure they are undisturbed
whenever a free or a realloc occurs. */
-/* Written in the 2 bytes before the block's real space (-4 bytes) */
+/* Written in the bytes before the block's real space (-SIZEOF_CHAR_P bytes) */
+#define MAGIC1 0x55
#define MAGIC2 0x5555
#define MSLOP 4 /* 4 bytes extra for u_bits32_t size */
/* How many bytes are actually allocated for a request of size N --
- rounded up to nearest multiple of 8 after accounting for malloc
- overhead. */
+ rounded up to nearest multiple of 2*SIZEOF_CHAR_P after accounting for
+ malloc overhead. */
#define ALLOCATED_BYTES(n) \
(((n) + MOVERHEAD + MSLOP + MALIGN_MASK) & ~MALIGN_MASK)
@@ -204,12 +226,12 @@ typedef union _malloc_guard {
/* Should we use mmap for large allocations? */
#if defined (HAVE_MMAP)
-# if !defined (MAP_ANON) && defined (MAP_ANONYMOUS)
-# define MAP_ANON MAP_ANONYMOUS
+# if defined (MAP_ANON) && !defined (MAP_ANONYMOUS)
+# define MAP_ANONYMOUS MAP_ANON
# endif
#endif
-#if defined (HAVE_MMAP) && defined (MAP_ANON)
+#if defined (HAVE_MMAP) && defined (MAP_ANONYMOUS)
# define USE_MMAP
#endif
@@ -273,32 +295,32 @@ extern int errno;
#endif
/* Declarations for internal functions */
-static PTR_T internal_malloc __P((size_t, const char *, int, int));
-static PTR_T internal_realloc __P((PTR_T, size_t, const char *, int, int));
-static void internal_free __P((PTR_T, const char *, int, int));
-static PTR_T internal_memalign __P((size_t, size_t, const char *, int, int));
+static PTR_T internal_malloc PARAMS((size_t, const char *, int, int));
+static PTR_T internal_realloc PARAMS((PTR_T, size_t, const char *, int, int));
+static void internal_free PARAMS((PTR_T, const char *, int, int));
+static PTR_T internal_memalign PARAMS((size_t, size_t, const char *, int, int));
#ifndef NO_CALLOC
-static PTR_T internal_calloc __P((size_t, size_t, const char *, int, int));
-static void internal_cfree __P((PTR_T, const char *, int, int));
+static PTR_T internal_calloc PARAMS((size_t, size_t, const char *, int, int));
+static void internal_cfree PARAMS((PTR_T, const char *, int, int));
#endif
#ifndef NO_VALLOC
-static PTR_T internal_valloc __P((size_t, const char *, int, int));
+static PTR_T internal_valloc PARAMS((size_t, const char *, int, int));
#endif
#if defined (botch)
extern void botch ();
#else
-static void botch __P((const char *, const char *, int));
+static void botch PARAMS((const char *, const char *, int));
#endif
-static void xbotch __P((PTR_T, int, const char *, const char *, int));
+static void xbotch PARAMS((PTR_T, int, const char *, const char *, int));
#if !HAVE_DECL_SBRK
extern char *sbrk ();
#endif /* !HAVE_DECL_SBRK */
#ifdef SHELL
-extern int interrupt_immediately, running_trap;
-extern int signal_is_trapped __P((int));
+extern int running_trap;
+extern int signal_is_trapped PARAMS((int));
#endif
#ifdef MALLOC_STATS
@@ -317,8 +339,8 @@ int malloc_mmap_threshold = MMAP_THRESHOLD;
char _malloc_trace_buckets[NBUCKETS];
/* These should really go into a header file. */
-extern void mtrace_alloc __P((const char *, PTR_T, size_t, const char *, int));
-extern void mtrace_free __P((PTR_T, int, const char *, int));
+extern void mtrace_alloc PARAMS((const char *, PTR_T, size_t, const char *, int));
+extern void mtrace_free PARAMS((PTR_T, int, const char *, int));
#endif
#if !defined (botch)
@@ -598,9 +620,9 @@ morecore (nu)
blocked_sigs = 0;
#ifdef SHELL
# if defined (SIGCHLD)
- if (interrupt_immediately || running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
+ if (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
# else
- if (interrupt_immediately || running_trap || signal_is_trapped (SIGINT))
+ if (running_trap || signal_is_trapped (SIGINT))
# endif
#endif
{
@@ -689,7 +711,7 @@ morecore (nu)
memtop += sbrk_amt;
- /* shouldn't happen, but just in case -- require 8-byte alignment */
+ /* shouldn't happen, but just in case -- require 8- or 16-byte alignment */
if ((long)mp & MALIGN_MASK)
{
mp = (union mhead *) (((long)mp + MALIGN_MASK) & ~MALIGN_MASK);
@@ -719,8 +741,13 @@ malloc_debug_dummy ()
write (1, "malloc_debug_dummy\n", 19);
}
+#if SIZEOF_CHAR_P == 8
+#define PREPOP_BIN 3
+#define PREPOP_SIZE 64
+#else
#define PREPOP_BIN 2
#define PREPOP_SIZE 32
+#endif
static int
pagealign ()
@@ -756,8 +783,8 @@ pagealign ()
memtop += sbrk_needed;
/* Take the memory which would otherwise be wasted and populate the most
- popular bin (2 == 32 bytes) with it. Add whatever we need to curbrk
- to make things 32-byte aligned, compute how many 32-byte chunks we're
+ popular bin (3 == 64 bytes) with it. Add whatever we need to curbrk
+ to make things 64-byte aligned, compute how many 64-byte chunks we're
going to get, and set up the bin. */
curbrk += sbrk_needed & (PREPOP_SIZE - 1);
sbrk_needed -= sbrk_needed & (PREPOP_SIZE - 1);
@@ -818,7 +845,7 @@ internal_malloc (n, file, line, flags) /* get a block */
if (nbytes <= binsize(nunits))
break;
- /* Silently reject too-large requests. */
+ /* Silently reject too-large requests. XXX - can increase this if HAVE_MMAP */
if (nunits >= NBUCKETS)
return ((PTR_T) NULL);
@@ -859,6 +886,11 @@ internal_malloc (n, file, line, flags) /* get a block */
p->mh_magic2 = MAGIC2;
p->mh_nbytes = n;
+#if SIZEOF_CHAR_P == 8
+ /* Begin guard */
+ MALLOC_MEMSET ((char *)p->mh_magic8, MAGIC1, 8);
+#endif
+
/* End guard */
mg.i = n;
z = mg.s;
@@ -893,6 +925,14 @@ internal_malloc (n, file, line, flags) /* get a block */
_malloc_ckwatch (p + 1, file, line, W_ALLOC, n);
#endif
+#if defined (MALLOC_DEBUG)
+ z = (char *) (p + 1);
+ /* Check alignment of returned pointer */
+ if ((unsigned long)z & MALIGN_MASK)
+ fprintf (stderr, "malloc: %s:%d: warning: request for %d bytes not aligned on %d byte boundary\r\n",
+ file ? file : _("unknown"), line, p->mh_nbytes, MALIGN_MASK+1);
+#endif
+
return (PTR_T) (p + 1);
}
@@ -952,6 +992,15 @@ internal_free (mem, file, line, flags)
if (IN_BUCKET(nbytes, nunits) == 0)
xbotch (mem, ERR_UNDERFLOW,
_("free: underflow detected; mh_nbytes out of range"), file, line);
+#if SIZEOF_CHAR_P == 8
+ {
+ int i;
+ for (i = 0, z = p->mh_magic8; i < 8; i++)
+ if (*z++ != MAGIC1)
+ xbotch (mem, ERR_UNDERFLOW,
+ _("free: underflow detected; magic8 corrupted"), file, line);
+ }
+#endif
ap += p->mh_nbytes;
z = mg.s;
@@ -1083,6 +1132,16 @@ internal_realloc (mem, n, file, line, flags)
if (IN_BUCKET(nbytes, nunits) == 0)
xbotch (mem, ERR_UNDERFLOW,
_("realloc: underflow detected; mh_nbytes out of range"), file, line);
+#if SIZEOF_CHAR_P == 8
+ {
+ int i;
+ for (i = 0, z = p->mh_magic8; i < 8; i++)
+ if (*z++ != MAGIC1)
+ xbotch (mem, ERR_UNDERFLOW,
+ _("realloc: underflow detected; magic8 corrupted"), file, line);
+
+ }
+#endif
m = (char *)mem + (tocopy = p->mh_nbytes);
z = mg.s;
diff --git a/lib/malloc/mstats.h b/lib/malloc/mstats.h
index dac02980..ce8aaeca 100644
--- a/lib/malloc/mstats.h
+++ b/lib/malloc/mstats.h
@@ -1,6 +1,6 @@
/* mstats.h - definitions for malloc statistics */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -104,10 +104,10 @@ struct bucket_stats {
int nmmap; /* currently unused */
};
-extern struct bucket_stats malloc_bucket_stats __P((int));
-extern struct _malstats malloc_stats __P((void));
-extern void print_malloc_stats __P((char *));
-extern void trace_malloc_stats __P((char *, char *));
+extern struct bucket_stats malloc_bucket_stats PARAMS((int));
+extern struct _malstats malloc_stats PARAMS((void));
+extern void print_malloc_stats PARAMS((char *));
+extern void trace_malloc_stats PARAMS((char *, char *));
#endif /* MALLOC_STATS */
diff --git a/lib/malloc/shmalloc.h b/lib/malloc/shmalloc.h
index 2dac6154..d51193eb 100644
--- a/lib/malloc/shmalloc.h
+++ b/lib/malloc/shmalloc.h
@@ -1,6 +1,6 @@
/* Functions (currently) for use by the shell to do malloc debugging and
tracking. */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -21,11 +21,11 @@
#ifndef _SH_MALLOC_H
#define _SH_MALLOC_H
-#ifndef __P
+#ifndef PARAMS
# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
-# define __P(protos) protos
+# define PARAMS(protos) protos
# else
-# define __P(protos) ()
+# define PARAMS(protos) ()
# endif
#endif
@@ -41,30 +41,30 @@
#endif /* PTR_T */
-extern PTR_T sh_malloc __P((size_t, const char *, int));
-extern PTR_T sh_realloc __P((PTR_T, size_t, const char *, int));
-extern void sh_free __P((PTR_T, const char *, int));
+extern PTR_T sh_malloc PARAMS((size_t, const char *, int));
+extern PTR_T sh_realloc PARAMS((PTR_T, size_t, const char *, int));
+extern void sh_free PARAMS((PTR_T, const char *, int));
-extern PTR_T sh_memalign __P((size_t, size_t, const char *, int));
+extern PTR_T sh_memalign PARAMS((size_t, size_t, const char *, int));
-extern PTR_T sh_calloc __P((size_t, size_t, const char *, int));
-extern void sh_cfree __P((PTR_T, const char *, int));
+extern PTR_T sh_calloc PARAMS((size_t, size_t, const char *, int));
+extern void sh_cfree PARAMS((PTR_T, const char *, int));
-extern PTR_T sh_valloc __P((size_t, const char *, int));
+extern PTR_T sh_valloc PARAMS((size_t, const char *, int));
/* trace.c */
-extern int malloc_set_trace __P((int));
+extern int malloc_set_trace PARAMS((int));
extern void malloc_set_tracefp (); /* full prototype requires stdio.h */
-extern void malloc_set_tracefn __P((char *, char *));
+extern void malloc_set_tracefn PARAMS((char *, char *));
/* table.c */
-extern void mregister_dump_table __P((void));
-extern void mregister_table_init __P((void));
-extern int malloc_set_register __P((int));
+extern void mregister_dump_table PARAMS((void));
+extern void mregister_table_init PARAMS((void));
+extern int malloc_set_register PARAMS((int));
/* stats.c */
-extern void print_malloc_stats __P((char *));
+extern void print_malloc_stats PARAMS((char *));
extern void fprint_malloc_stats (); /* full prototype requires stdio.h */
-extern void trace_malloc_stats __P((char *, char *));
+extern void trace_malloc_stats PARAMS((char *, char *));
#endif
diff --git a/lib/malloc/stats.c b/lib/malloc/stats.c
index 05247970..b38df9f4 100644
--- a/lib/malloc/stats.c
+++ b/lib/malloc/stats.c
@@ -1,6 +1,6 @@
/* stats.c - malloc statistics */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -34,13 +34,13 @@
#include "mstats.h"
-extern int malloc_free_blocks __P((int));
+extern int malloc_free_blocks PARAMS((int));
extern int malloc_mmap_threshold;
extern struct _malstats _mstats;
-extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t));
+extern FILE *_imalloc_fopen PARAMS((char *, char *, char *, char *, size_t));
struct bucket_stats
malloc_bucket_stats (size)
@@ -110,7 +110,7 @@ _print_malloc_stats (s, fp)
if (i == malloc_mmap_threshold+1)
fprintf (fp, "--------\n");
if (v.nmal > 0)
- fprintf (fp, "%8lu\t%4d\t%6d\t%5d\t%8d\t%8d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce);
+ fprintf (fp, "%8lu\t%4d\t%6d\t%5d%8d\t%8d %5d %8d\n", (unsigned long)v.blocksize, v.nfree, v.nused, v.nmal, v.nmorecore, v.nlesscore, v.nsplit, v.ncoalesce);
totfree += v.nfree * v.blocksize;
totused += v.nused * v.blocksize;
}
diff --git a/lib/malloc/table.c b/lib/malloc/table.c
index 97946dc7..e6acbf4a 100644
--- a/lib/malloc/table.c
+++ b/lib/malloc/table.c
@@ -1,6 +1,6 @@
/* table.c - bookkeeping functions for allocated memory */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -29,15 +29,15 @@
#include "table.h"
#ifdef SHELL
-extern int interrupt_immediately, running_trap;
-extern int signal_is_trapped __P((int));
+extern int running_trap;
+extern int signal_is_trapped PARAMS((int));
#endif
extern int malloc_register;
#ifdef MALLOC_REGISTER
-extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t));
+extern FILE *_imalloc_fopen PARAMS((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 */
@@ -174,7 +174,7 @@ mregister_alloc (tag, mem, size, file, line)
/* Block all signals in case we are executed from a signal handler. */
blocked_sigs = 0;
#ifdef SHELL
- if (interrupt_immediately || running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
+ if (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
#endif
{
_malloc_block_signals (&set, &oset);
@@ -229,7 +229,7 @@ mregister_free (mem, size, file, line)
/* Block all signals in case we are executed from a signal handler. */
blocked_sigs = 0;
#ifdef SHELL
- if (interrupt_immediately || running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
+ if (running_trap || signal_is_trapped (SIGINT) || signal_is_trapped (SIGCHLD))
#endif
{
_malloc_block_signals (&set, &oset);
diff --git a/lib/malloc/table.h b/lib/malloc/table.h
index 7494f0a5..92866cf2 100644
--- a/lib/malloc/table.h
+++ b/lib/malloc/table.h
@@ -1,6 +1,6 @@
/* table.h - definitions for tables for keeping track of allocated memory */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -57,12 +57,12 @@ typedef struct mr_table {
#define REG_TABLE_SIZE 8192
-extern mr_table_t *mr_table_entry __P((PTR_T));
-extern void mregister_alloc __P((const char *, PTR_T, size_t, const char *, int));
-extern void mregister_free __P((PTR_T, int, const char *, int));
+extern mr_table_t *mr_table_entry PARAMS((PTR_T));
+extern void mregister_alloc PARAMS((const char *, PTR_T, size_t, const char *, int));
+extern void mregister_free PARAMS((PTR_T, int, const char *, int));
extern void mregister_describe_mem ();
-extern void mregister_dump_table __P((void));
-extern void mregister_table_init __P((void));
+extern void mregister_dump_table PARAMS((void));
+extern void mregister_table_init PARAMS((void));
typedef struct ma_table {
const char *file;
@@ -70,10 +70,10 @@ typedef struct ma_table {
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));
+extern void mlocation_register_alloc PARAMS((const char *, int));
+extern void mlocation_table_init PARAMS((void));
+extern void mlocation_dump_table PARAMS((void));
+extern void mlocation_write_table PARAMS((void));
/* NOTE: HASH_MIX taken from dmalloc (http://dmalloc.com) */
diff --git a/lib/malloc/trace.c b/lib/malloc/trace.c
index 95898b70..391ca9d8 100644
--- a/lib/malloc/trace.c
+++ b/lib/malloc/trace.c
@@ -1,6 +1,6 @@
/* trace.c - tracing functions for malloc */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -35,7 +35,7 @@ static int _mtrace_verbose = 0;
#ifdef MALLOC_TRACE
-extern FILE *_imalloc_fopen __P((char *, char *, char *, char *, size_t));
+extern FILE *_imalloc_fopen PARAMS((char *, char *, char *, char *, size_t));
FILE *_mtrace_fp = NULL;
extern char _malloc_trace_buckets[];
diff --git a/lib/malloc/watch.h b/lib/malloc/watch.h
index 6782acc4..2a0f4970 100644
--- a/lib/malloc/watch.h
+++ b/lib/malloc/watch.h
@@ -1,6 +1,6 @@
/* watch.h - definitions for tables for keeping track of allocated memory */
-/* Copyright (C) 2001-2003 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne-Again SHell.
@@ -34,7 +34,7 @@
extern int _malloc_nwatch;
-extern void _malloc_ckwatch __P((PTR_T, const char *, int, int, unsigned long));
+extern void _malloc_ckwatch PARAMS((PTR_T, const char *, int, int, unsigned long));
#endif /* MALLOC_WATCH */
diff --git a/lib/readline/bind.c b/lib/readline/bind.c
index 57ae10f7..87596dce 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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.
@@ -135,12 +135,13 @@ rl_add_defun (const char *name, rl_command_func_t *function, int key)
int
rl_bind_key (int key, rl_command_func_t *function)
{
- char keyseq[3];
+ char keyseq[4];
int l;
- if (key < 0)
+ if (key < 0 || key > largest_char)
return (key);
+ /* Want to make this a multi-character key sequence with an ESC prefix */
if (META_CHAR (key) && _rl_convert_meta_chars_to_ascii)
{
if (_rl_keymap[ESC].type == ISKMAP)
@@ -153,24 +154,43 @@ rl_bind_key (int key, rl_command_func_t *function)
escmap[key].function = function;
return (0);
}
- return (key);
+
+ /* Otherwise, let's just let rl_generic_bind handle the key sequence.
+ We start it off with ESC here and let the code below add the rest
+ of the sequence. */
+ keyseq[0] = ESC;
+ l = 1;
+ key = UNMETA(key);
+ goto bind_keyseq;
}
/* 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. */
+ for us. If we are binding '\' or \C-@ (NUL) make sure to escape it so
+ it makes it through the call to rl_translate_keyseq. */
if (_rl_keymap[key].type != ISKMAP)
{
+ if (_rl_keymap[key].type == ISMACR)
+ xfree ((char *)_rl_keymap[key].function);
_rl_keymap[key].type = ISFUNC;
_rl_keymap[key].function = function;
}
else
{
l = 0;
+bind_keyseq:
if (key == '\\')
- keyseq[l++] = '\\';
- keyseq[l++] = key;
+ {
+ keyseq[l++] = '\\';
+ keyseq[l++] = '\\';
+ }
+ else if (key == '\0')
+ {
+ keyseq[l++] = '\\';
+ keyseq[l++] = '0';
+ }
+ else
+ keyseq[l++] = key;
keyseq[l] = '\0';
rl_bind_keyseq (keyseq, function);
}
@@ -242,6 +262,13 @@ rl_unbind_function_in_map (rl_command_func_t *func, Keymap map)
map[i].function = (rl_command_func_t *)NULL;
rval = 1;
}
+ else if (map[i].type == ISKMAP) /* TAG:readline-8.1 */
+ {
+ int r;
+ r = rl_unbind_function_in_map (func, FUNCTION_TO_KEYMAP (map, i));
+ if (r == 1)
+ rval = 1;
+ }
}
return rval;
}
@@ -352,7 +379,7 @@ int
rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
{
char *keys;
- int keys_len, prevkey;
+ int keys_len, prevkey, ic;
register int i;
KEYMAP_ENTRY k;
Keymap prevmap;
@@ -385,7 +412,6 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
for (i = 0; i < keys_len; i++)
{
unsigned char uc = keys[i];
- int ic;
if (i > 0)
prevkey = ic;
@@ -397,6 +423,9 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
return -1;
}
+ /* We now rely on rl_translate_keyseq to do this conversion, so this
+ check is superfluous. */
+#if 0
if (META_CHAR (ic) && _rl_convert_meta_chars_to_ascii)
{
ic = UNMETA (ic);
@@ -406,6 +435,7 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
map = FUNCTION_TO_KEYMAP (map, ESC);
}
}
+#endif
if ((i + 1) < keys_len)
{
@@ -439,9 +469,7 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
}
else
{
- if (map[ic].type == ISMACR)
- xfree ((char *)map[ic].function);
- else if (map[ic].type == ISKMAP)
+ if (map[ic].type == ISKMAP)
{
prevmap = map;
map = FUNCTION_TO_KEYMAP (map, ic);
@@ -454,6 +482,8 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
if (type == ISFUNC && data == 0)
data = (char *)_rl_null_function;
}
+ if (map[ic].type == ISMACR)
+ xfree ((char *)map[ic].function);
map[ic].function = KEYMAP_TO_FUNCTION (data);
map[ic].type = type;
@@ -492,59 +522,38 @@ rl_generic_bind (int type, const char *keyseq, char *data, Keymap map)
int
rl_translate_keyseq (const char *seq, char *array, int *len)
{
- register int i, c, l, temp;
+ register int i, l, temp;
+ int has_control, has_meta;
+ unsigned char c;
- for (i = l = 0; c = seq[i]; i++)
+ has_control = 0;
+ has_meta = 0;
+
+ /* When there are incomplete prefixes \C- or \M- (has_control || has_meta)
+ without base character at the end of SEQ, they are processed as the
+ prefixes for '\0'.
+ */
+ for (i = l = 0; (c = seq[i]) || has_control || has_meta; i++)
{
- if (c == '\\')
+ /* Only backslashes followed by a non-null character are handled
+ specially. Trailing backslash (backslash followed by '\0') is
+ processed as a normal character.
+ */
+ if (c == '\\' && seq[i + 1] != '\0')
{
c = seq[++i];
- if (c == 0)
+ /* Handle \C- and \M- prefixes. */
+ if (c == 'C' && seq[i + 1] == '-')
{
- array[l++] = '\\'; /* preserve trailing backslash */
- break;
+ i++;
+ has_control = 1;
+ continue;
}
-
- /* Handle \C- and \M- prefixes. */
- if ((c == 'C' || c == 'M') && seq[i + 1] == '-')
+ else if (c == 'M' && seq[i + 1] == '-')
{
- /* Handle special case of backwards define. */
- if (strncmp (&seq[i], "C-\\M-", 5) == 0)
- {
- array[l++] = ESC; /* ESC is meta-prefix */
- i += 5;
- array[l++] = CTRL (_rl_to_upper (seq[i]));
- }
- else if (c == 'M')
- {
- i++; /* seq[i] == '-' */
- /* XXX - obey convert-meta setting */
- if (_rl_convert_meta_chars_to_ascii && _rl_keymap[ESC].type == ISKMAP)
- array[l++] = ESC; /* ESC is meta-prefix */
- else if (seq[i+1] == '\\' && seq[i+2] == 'C' && seq[i+3] == '-')
- {
- i += 4;
- temp = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
- array[l++] = META (temp);
- }
- else
- {
- /* This doesn't yet handle things like \M-\a, which may
- or may not have any reasonable meaning. You're
- probably better off using straight octal or hex. */
- i++;
- array[l++] = META (seq[i]);
- }
- }
- else if (c == 'C')
- {
- i += 2;
- /* Special hack for C-?... */
- array[l++] = (seq[i] == '?') ? RUBOUT : CTRL (_rl_to_upper (seq[i]));
- }
- if (seq[i] == '\0')
- break;
+ i++;
+ has_meta = 1;
continue;
}
@@ -555,34 +564,34 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
switch (c)
{
case 'a':
- array[l++] = '\007';
+ c = '\007';
break;
case 'b':
- array[l++] = '\b';
+ c = '\b';
break;
case 'd':
- array[l++] = RUBOUT; /* readline-specific */
+ c = RUBOUT; /* readline-specific */
break;
case 'e':
- array[l++] = ESC;
+ c = ESC;
break;
case 'f':
- array[l++] = '\f';
+ c = '\f';
break;
case 'n':
- array[l++] = NEWLINE;
+ c = NEWLINE;
break;
case 'r':
- array[l++] = RETURN;
+ c = RETURN;
break;
case 't':
- array[l++] = TAB;
+ c = TAB;
break;
case 'v':
- array[l++] = 0x0B;
+ c = 0x0B;
break;
case '\\':
- array[l++] = '\\';
+ c = '\\';
break;
case '0': case '1': case '2': case '3':
case '4': case '5': case '6': case '7':
@@ -590,7 +599,7 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
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;
+ c &= largest_char;
break;
case 'x':
i++;
@@ -599,16 +608,40 @@ rl_translate_keyseq (const char *seq, char *array, int *len)
if (temp == 2)
c = 'x';
i--; /* auto-increment in for loop */
- array[l++] = c & largest_char;
+ c &= largest_char;
break;
default: /* backslashes before non-special chars just add the char */
- array[l++] = c;
+ c &= largest_char;
break; /* the backslash is stripped */
}
- continue;
}
- array[l++] = c;
+ /* Process \C- and \M- flags */
+ if (has_control)
+ {
+ /* Special treatment for C-? */
+ c = (c == '?') ? RUBOUT : CTRL (_rl_to_upper (c));
+ has_control = 0;
+ }
+ if (has_meta)
+ {
+ c = META (c);
+ has_meta = 0;
+ }
+
+ /* If convert-meta is turned on, convert a meta char to a key sequence */
+ if (META_CHAR (c) && _rl_convert_meta_chars_to_ascii)
+ {
+ array[l++] = ESC; /* ESC is meta-prefix */
+ array[l++] = UNMETA (c);
+ }
+ else
+ array[l++] = (c);
+
+ /* Null characters may be processed for incomplete prefixes at the end of
+ sequence */
+ if (seq[i] == '\0')
+ break;
}
*len = l;
@@ -756,7 +789,7 @@ _rl_untranslate_macro_value (char *seq, int use_escapes)
/* Return a pointer to the function that STRING represents.
If STRING doesn't have a matching function, then a NULL pointer
- is returned. */
+ is returned. The string match is case-insensitive. */
rl_command_func_t *
rl_named_function (const char *string)
{
@@ -809,7 +842,7 @@ _rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int
{
/* If this is the last key in the key sequence, return the
map. */
- if (keyseq[i + 1] == '\0')
+ if (i + 1 == len)
{
if (type)
*type = ISKMAP;
@@ -822,9 +855,9 @@ _rl_function_of_keyseq_internal (const char *keyseq, size_t len, Keymap map, int
/* If we're not at the end of the key sequence, and the current key
is bound to something other than a keymap, then the entire key
sequence is not bound. */
- else if (map[ic].type != ISKMAP && keyseq[i+1])
+ else if (map[ic].type != ISKMAP && i+1 < len)
return ((rl_command_func_t *)NULL);
- else /* map[ic].type != ISKMAP && keyseq[i+1] == 0 */
+ else /* map[ic].type != ISKMAP && i+1 == len */
{
if (type)
*type = map[ic].type;
@@ -1569,15 +1602,11 @@ rl_parse_and_bind (char *string)
/* Strip trailing whitespace from values of boolean variables. */
if (find_boolean_var (var) >= 0)
{
- /* remove trailing whitespace */
-remove_trailing:
- e = value + strlen (value) - 1;
- while (e >= value && whitespace (*e))
- e--;
- e++; /* skip back to whitespace or EOS */
-
- if (*e && e >= value)
- *e = '\0';
+ /* just read a whitespace-delimited word or empty string */
+ for (e = value; *e && whitespace (*e) == 0; e++)
+ ;
+ if (e > value)
+ *e = '\0'; /* cut off everything trailing */
}
else if ((i = find_string_var (var)) >= 0)
{
@@ -1589,9 +1618,24 @@ remove_trailing:
value++; /* skip past the quote */
}
else
- goto remove_trailing;
+ {
+ /* remove trailing whitespace */
+ e = value + strlen (value) - 1;
+ while (e >= value && whitespace (*e))
+ e--;
+ e++; /* skip back to whitespace or EOS */
+
+ if (*e && e >= value)
+ *e = '\0';
+ }
}
-
+ else
+ {
+ /* avoid calling rl_variable_bind just to find this out */
+ _rl_init_file_error ("%s: unknown variable name", var);
+ return 1;
+ }
+
rl_variable_bind (var, value);
return 0;
}
@@ -1768,7 +1812,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-bracketed-paste", &_rl_enable_bracketed_paste, V_SPECIAL },
{ "enable-keypad", &_rl_enable_keypad, 0 },
{ "enable-meta-key", &_rl_enable_meta, 0 },
{ "expand-tilde", &rl_complete_with_tilde_expansion, 0 },
@@ -1834,6 +1878,8 @@ hack_special_boolean_var (int i)
}
else if (_rl_stricmp (name, "show-mode-in-prompt") == 0)
_rl_reset_prompt ();
+ else if (_rl_stricmp (name, "enable-bracketed-paste") == 0)
+ _rl_enable_active_region = _rl_enable_bracketed_paste;
}
typedef int _rl_sv_func_t PARAMS((const char *));
@@ -1903,7 +1949,7 @@ string_varname (int i)
}
/* A boolean value that can appear in a `set variable' command is true if
- the value is null or empty, `on' (case-insensitive), or "1". Any other
+ the value is null or empty, `on' (case-insensitive), or "1". All other
values result in 0 (false). */
static int
bool_to_int (const char *value)
@@ -1928,7 +1974,7 @@ rl_variable_value (const char *name)
return (_rl_get_string_variable_value (string_varlist[i].name));
/* Unknown variable names return NULL. */
- return 0;
+ return (char *)NULL;
}
int
@@ -1959,6 +2005,8 @@ rl_variable_bind (const char *name, const char *value)
}
v = (*string_varlist[i].set_func) (value);
+ if (v != 0)
+ _rl_init_file_error ("%s: could not set value to `%s'", name, value);
return v;
}
@@ -2581,20 +2629,22 @@ rl_invoking_keyseqs_in_map (rl_command_func_t *function, Keymap map)
else
sprintf (keyname, "\\e");
}
- else if (CTRL_CHAR (key))
- sprintf (keyname, "\\C-%c", _rl_to_lower (UNCTRL (key)));
- else if (key == RUBOUT)
- sprintf (keyname, "\\C-?");
- else if (key == '\\' || key == '"')
- {
- keyname[0] = '\\';
- keyname[1] = (char) key;
- keyname[2] = '\0';
- }
else
{
- keyname[0] = (char) key;
- keyname[1] = '\0';
+ int c = key, l = 0;
+ if (CTRL_CHAR (c) || c == RUBOUT)
+ {
+ keyname[l++] = '\\';
+ keyname[l++] = 'C';
+ keyname[l++] = '-';
+ c = (c == RUBOUT) ? '?' : _rl_to_lower (UNCTRL (c));
+ }
+
+ if (c == '\\' || c == '"')
+ keyname[l++] = '\\';
+
+ keyname[l++] = (char) c;
+ keyname[l++] = '\0';
}
strcat (keyname, seqs[i]);
diff --git a/lib/readline/colors.c b/lib/readline/colors.c
index 53758e0e..9e37527e 100644
--- a/lib/readline/colors.c
+++ b/lib/readline/colors.c
@@ -2,7 +2,7 @@
Modified by Chet Ramey for Readline.
- Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017
+ Copyright (C) 1985, 1988, 1990-1991, 1995-2010, 2012, 2015, 2017, 2019
Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
@@ -32,6 +32,13 @@
#include "rlconf.h"
+#if defined __TANDEM
+# define _XOPEN_SOURCE_EXTENDED 1
+# define _TANDEM_SOURCE 1
+# include <sys/types.h>
+# include <sys/stat.h>
+#endif
+
#include <stdio.h>
#include "posixstat.h" // stat related macros (S_ISREG, ...)
@@ -175,7 +182,7 @@ _rl_print_color_indicator (const 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)
+ else if (linkok == 0 && _rl_color_indicator[C_ORPHAN].string != NULL)
colored_filetype = C_ORPHAN; /* dangling symlink */
else if(stat_ok != 0)
{
diff --git a/lib/readline/complete.c b/lib/readline/complete.c
index adce0d69..fc5c3adb 100644
--- a/lib/readline/complete.c
+++ b/lib/readline/complete.c
@@ -1,6 +1,6 @@
/* complete.c -- filename completion for readline. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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.
@@ -21,11 +21,18 @@
#define READLINE_LIBRARY
+#if defined (__TANDEM)
+# define _XOPEN_SOURCE_EXTENDED 1
+#endif
+
#if defined (HAVE_CONFIG_H)
# include <config.h>
#endif
#include <sys/types.h>
+#if defined (__TANDEM)
+# include <sys/stat.h>
+#endif
#include <fcntl.h>
#if defined (HAVE_SYS_FILE_H)
# include <sys/file.h>
@@ -141,6 +148,7 @@ static int complete_fncmp PARAMS((const char *, int, const char *, int));
static void display_matches PARAMS((char **));
static int compute_lcd_of_matches PARAMS((char **, int, const char *));
static int postprocess_matches PARAMS((char ***, int));
+static int compare_match PARAMS((char *, const char *));
static int complete_get_screenwidth PARAMS((void));
static char *make_quoted_replacement PARAMS((char *, int, char *));
@@ -406,6 +414,7 @@ int rl_sort_completion_matches = 1;
/* Local variable states what happened during the last completion attempt. */
static int completion_changed_buffer;
+static int last_completion_failed = 0;
/* The result of the query to the user about displaying completion matches */
static int completion_y_or_n;
@@ -428,7 +437,11 @@ rl_complete (int ignore, int invoking_key)
if (rl_inhibit_completion)
return (_rl_insert_char (ignore, invoking_key));
- else if (rl_last_func == rl_complete && !completion_changed_buffer)
+#if 0
+ else if (rl_last_func == rl_complete && completion_changed_buffer == 0 && last_completion_failed == 0)
+#else
+ else if (rl_last_func == rl_complete && completion_changed_buffer == 0)
+#endif
return (rl_complete_internal ('?'));
else if (_rl_complete_show_all)
return (rl_complete_internal ('!'));
@@ -477,7 +490,7 @@ rl_completion_mode (rl_command_func_t *cfunc)
/* */
/************************************/
-/* Reset readline state on a signal or other event. */
+/* Reset public readline state on a signal or other event. */
void
_rl_reset_completion_state (void)
{
@@ -1330,12 +1343,13 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
memset (&ps2, 0, sizeof (mbstate_t));
}
#endif
- if (_rl_completion_case_fold)
+ for (si = 0; (c1 = match_list[i][si]) && (c2 = match_list[i + 1][si]); si++)
{
- for (si = 0;
- (c1 = _rl_to_lower(match_list[i][si])) &&
- (c2 = _rl_to_lower(match_list[i + 1][si]));
- si++)
+ if (_rl_completion_case_fold)
+ {
+ c1 = _rl_to_lower (c1);
+ c2 = _rl_to_lower (c2);
+ }
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
{
@@ -1347,8 +1361,11 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
break;
continue;
}
- wc1 = towlower (wc1);
- wc2 = towlower (wc2);
+ if (_rl_completion_case_fold)
+ {
+ wc1 = towlower (wc1);
+ wc2 = towlower (wc2);
+ }
if (wc1 != wc2)
break;
else if (v1 > 1)
@@ -1359,27 +1376,6 @@ compute_lcd_of_matches (char **match_list, int matches, const char *text)
if (c1 != c2)
break;
}
- else
- {
- for (si = 0;
- (c1 = match_list[i][si]) &&
- (c2 = match_list[i + 1][si]);
- si++)
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- {
- mbstate_t ps_back;
- ps_back = ps1;
- if (!_rl_compare_chars (match_list[i], si, &ps1, match_list[i+1], si, &ps2))
- break;
- else if ((v = _rl_get_char_len (&match_list[i][si], &ps_back)) > 1)
- si += v - 1;
- }
- else
-#endif
- if (c1 != c2)
- break;
- }
if (low > si)
low = si;
@@ -1969,6 +1965,26 @@ _rl_free_match_list (char **matches)
xfree (matches);
}
+/* Compare a possibly-quoted filename TEXT from the line buffer and a possible
+ MATCH that is the product of filename completion, which acts on the dequoted
+ text. */
+static int
+compare_match (char *text, const char *match)
+{
+ char *temp;
+ int r;
+
+ if (rl_filename_completion_desired && rl_filename_quoting_desired &&
+ rl_completion_found_quote && rl_filename_dequoting_function)
+ {
+ temp = (*rl_filename_dequoting_function) (text, rl_completion_quote_character);
+ r = strcmp (temp, match);
+ free (temp);
+ return r;
+ }
+ return (strcmp (text, match));
+}
+
/* Complete the word at or before point.
WHAT_TO_DO says what to do with the completion.
`?' means list the possible completions.
@@ -1986,10 +2002,12 @@ rl_complete_internal (int what_to_do)
int start, end, delimiter, found_quote, i, nontrivial_lcd;
char *text, *saved_line_buffer;
char quote_char;
- int tlen, mlen;
+ int tlen, mlen, saved_last_completion_failed;
RL_SETSTATE(RL_STATE_COMPLETING);
+ saved_last_completion_failed = last_completion_failed;
+
set_completion_defaults (what_to_do);
saved_line_buffer = rl_line_buffer ? savestring (rl_line_buffer) : (char *)NULL;
@@ -2013,7 +2031,7 @@ rl_complete_internal (int what_to_do)
matches = gen_completion_matches (text, start, end, our_func, found_quote, quote_char);
/* nontrivial_lcd is set if the common prefix adds something to the word
being completed. */
- nontrivial_lcd = matches && strcmp (text, matches[0]) != 0;
+ nontrivial_lcd = matches && compare_match (text, matches[0]) != 0;
if (what_to_do == '!' || what_to_do == '@')
tlen = strlen (text);
xfree (text);
@@ -2023,6 +2041,7 @@ rl_complete_internal (int what_to_do)
rl_ding ();
FREE (saved_line_buffer);
completion_changed_buffer = 0;
+ last_completion_failed = 1;
RL_UNSETSTATE(RL_STATE_COMPLETING);
_rl_reset_completion_state ();
return (0);
@@ -2038,11 +2057,15 @@ rl_complete_internal (int what_to_do)
rl_ding ();
FREE (saved_line_buffer);
completion_changed_buffer = 0;
+ last_completion_failed = 1;
RL_UNSETSTATE(RL_STATE_COMPLETING);
_rl_reset_completion_state ();
return (0);
}
+ if (matches && matches[0] && *matches[0])
+ last_completion_failed = 0;
+
switch (what_to_do)
{
case TAB:
@@ -2098,6 +2121,15 @@ rl_complete_internal (int what_to_do)
break;
case '?':
+ /* Let's try to insert a single match here if the last completion failed
+ but this attempt returned a single match. */
+ if (saved_last_completion_failed && matches[0] && *matches[0] && matches[1] == 0)
+ {
+ insert_match (matches[0], start, matches[1] ? MULT_MATCH : SINGLE_MATCH, &quote_char);
+ append_to_match (matches[0], delimiter, quote_char, nontrivial_lcd);
+ break;
+ }
+
if (rl_completion_display_matches_hook == 0)
{
_rl_sigcleanup = _rl_complete_sigcleanup;
@@ -2761,7 +2793,7 @@ rl_old_menu_complete (int count, int invoking_key)
{
insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);
append_to_match (matches[match_list_index], delimiter, quote_char,
- strcmp (orig_text, matches[match_list_index]));
+ compare_match (orig_text, matches[match_list_index]));
}
completion_changed_buffer = 1;
@@ -2835,7 +2867,7 @@ rl_menu_complete (int count, int ignore)
matches = gen_completion_matches (orig_text, orig_start, orig_end,
our_func, found_quote, quote_char);
- nontrivial_lcd = matches && strcmp (orig_text, matches[0]) != 0;
+ nontrivial_lcd = matches && compare_match (orig_text, matches[0]) != 0;
/* If we are matching filenames, the attempted completion function will
have set rl_filename_completion_desired to a non-zero value. The basic
@@ -2942,7 +2974,7 @@ rl_menu_complete (int count, int ignore)
{
insert_match (matches[match_list_index], orig_start, SINGLE_MATCH, &quote_char);
append_to_match (matches[match_list_index], delimiter, quote_char,
- strcmp (orig_text, matches[match_list_index]));
+ compare_match (orig_text, matches[match_list_index]));
}
completion_changed_buffer = 1;
diff --git a/lib/readline/display.c b/lib/readline/display.c
index 4c6cc00e..38b3d0e7 100644
--- a/lib/readline/display.c
+++ b/lib/readline/display.c
@@ -1,6 +1,6 @@
/* display.c -- readline redisplay facility. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -63,23 +63,31 @@
extern char *strchr (), *strrchr ();
#endif /* !strchr && !__STDC__ */
-static void update_line PARAMS((char *, char *, int, int, int, int));
+static void putc_face PARAMS((int, int, char *));
+static void puts_face PARAMS((const char *, const char *, int));
+static void norm_face PARAMS((char *, int));
+
+static void update_line PARAMS((char *, char *, char *, char *, int, int, int, int));
static void space_to_eol PARAMS((int));
static void delete_chars PARAMS((int));
static void insert_some_chars PARAMS((char *, int, int));
static void open_some_spaces PARAMS((int));
static void cr PARAMS((void));
static void redraw_prompt PARAMS((char *));
+static void _rl_move_cursor_relative PARAMS((int, const char *, const char *));
/* Values for FLAGS */
#define PMT_MULTILINE 0x01
static char *expand_prompt PARAMS((char *, int, int *, int *, int *, int *));
+#define DEFAULT_LINE_BUFFER_SIZE 1024
+
/* State of visible and invisible lines. */
struct line_state
{
char *line;
+ char *lface;
int *lbreaks;
int lbsize;
#if defined (HANDLE_MULTIBYTE)
@@ -102,7 +110,9 @@ static int line_structures_initialized = 0;
#define vis_lbsize (line_state_visible->lbsize)
#define visible_line (line_state_visible->line)
+#define vis_face (line_state_visible->lface)
#define invisible_line (line_state_invisible->line)
+#define inv_face (line_state_invisible->lface)
#if defined (HANDLE_MULTIBYTE)
static int _rl_col_width PARAMS((const char *, int, int, int));
@@ -123,6 +133,10 @@ static int _rl_col_width PARAMS((const char *, int, int, int));
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)
+
+#define FACE_NORMAL '0'
+#define FACE_STANDOUT '1'
+#define FACE_INVALID ((char)1)
/* **************************************************************** */
/* */
@@ -190,6 +204,8 @@ int _rl_last_v_pos = 0;
on screen minus 1. */
int _rl_vis_botlin = 0;
+static int _rl_quick_redisplay = 0;
+
/* This is a hint update_line gives to rl_redisplay that it has adjusted the
value of _rl_last_c_pos *and* taken the presence of any invisible chars in
the prompt into account. rl_redisplay notes this and does not do the
@@ -219,7 +235,11 @@ static int msg_bufsiz = 0;
static int forced_display;
/* Default and initial buffer size. Can grow. */
-static int line_size = 1024;
+static int line_size = 0;
+
+/* Set to a non-zero value if horizontal scrolling has been enabled
+ automatically because the terminal was resized to height 1. */
+static int horizontal_scrolling_autoset = 0; /* explicit initialization */
/* Variables to keep track of the expanded prompt string, which may
include invisible characters. */
@@ -574,11 +594,6 @@ rl_expand_prompt (char *prompt)
{
/* The prompt spans multiple lines. */
t = ++p;
- 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. */
@@ -588,11 +603,53 @@ rl_expand_prompt (char *prompt)
(int *)NULL,
(int *)NULL);
*t = c;
+
+ local_prompt = expand_prompt (p, PMT_MULTILINE,
+ &prompt_visible_length,
+ &prompt_last_invisible,
+ &prompt_invis_chars_first_line,
+ &prompt_physical_chars);
local_prompt_len = local_prompt ? strlen (local_prompt) : 0;
return (prompt_prefix_length);
}
}
+/* Allocate the various line structures, making sure they can hold MINSIZE
+ bytes. If the existing line size can accommodate MINSIZE bytes, don't do
+ anything. */
+static void
+realloc_line (int minsize)
+{
+ int minimum_size;
+ int newsize, delta;
+
+ minimum_size = DEFAULT_LINE_BUFFER_SIZE;
+ if (minsize < minimum_size)
+ minsize = minimum_size;
+ if (minsize <= _rl_screenwidth) /* XXX - for gdb */
+ minsize = _rl_screenwidth + 1;
+ if (line_size >= minsize)
+ return;
+
+ newsize = minimum_size;
+ while (newsize < minsize)
+ newsize *= 2;
+
+ visible_line = (char *)xrealloc (visible_line, newsize);
+ vis_face = (char *)xrealloc (vis_face, newsize);
+
+ invisible_line = (char *)xrealloc (invisible_line, newsize);
+ inv_face = (char *)xrealloc (inv_face, newsize);
+
+ delta = newsize - line_size;
+ memset (visible_line + line_size, 0, delta);
+ memset (vis_face + line_size, FACE_NORMAL, delta);
+ memset (invisible_line + line_size, 1, delta);
+ memset (inv_face + line_size, FACE_INVALID, delta);
+
+ line_size = newsize;
+}
+
/* Initialize the VISIBLE_LINE and INVISIBLE_LINE arrays, and their associated
arrays of line break markers. MINSIZE is the minimum size of VISIBLE_LINE
and INVISIBLE_LINE; if it is greater than LINE_SIZE, LINE_SIZE is
@@ -601,29 +658,12 @@ rl_expand_prompt (char *prompt)
static void
init_line_structures (int minsize)
{
- register int n;
-
if (invisible_line == 0) /* initialize it */
{
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xmalloc (line_size);
- invisible_line = (char *)xmalloc (line_size);
- }
- else if (line_size < minsize) /* ensure it can hold MINSIZE chars */
- {
- line_size *= 2;
- if (line_size < minsize)
- line_size = minsize;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
-
- for (n = minsize; n < line_size; n++)
- {
- visible_line[n] = 0;
- invisible_line[n] = 1;
+ if (line_size > minsize)
+ minsize = line_size;
}
+ realloc_line (minsize);
if (vis_lbreaks == 0)
{
@@ -645,16 +685,68 @@ init_line_structures (int minsize)
line_structures_initialized = 1;
}
-
+
+/* Convenience functions to add chars to the invisible line that update the
+ face information at the same time. */
+static void /* XXX - change this */
+invis_addc (int *outp, char c, char face)
+{
+ realloc_line (*outp + 1);
+ invisible_line[*outp] = c;
+ inv_face[*outp] = face;
+ *outp += 1;
+}
+
+static void
+invis_adds (int *outp, const char *str, int n, char face)
+{
+ int i;
+
+ for (i = 0; i < n; i++)
+ invis_addc (outp, str[i], face);
+}
+
+static void
+invis_nul (int *outp)
+{
+ invis_addc (outp, '\0', 0);
+ *outp -= 1;
+}
+
+static void
+set_active_region (int *beg, int *end)
+{
+ if (rl_point >= 0 && rl_point <= rl_end && rl_mark >= 0 && rl_mark <= rl_end)
+ {
+ *beg = (rl_mark < rl_point) ? rl_mark : rl_point;
+ *end = (rl_mark < rl_point) ? rl_point : rl_mark;
+ }
+}
+
+/* Do whatever tests are necessary and tell update_line that it can do a
+ quick, dumb redisplay on the assumption that there are so many
+ differences between the old and new lines that it would be a waste to
+ compute all the differences.
+ Right now, it just sets _rl_quick_redisplay if the current visible line
+ is a single line (so we don't have to move vertically or mess with line
+ wrapping). */
+void
+_rl_optimize_redisplay (void)
+{
+ if (_rl_vis_botlin == 0)
+ _rl_quick_redisplay = 1;
+}
+
/* Basic redisplay algorithm. See comments inline. */
void
rl_redisplay (void)
{
- register int in, out, c, linenum, cursor_linenum;
- register char *line;
+ int in, out, c, linenum, cursor_linenum;
int inv_botlin, lb_botlin, lb_linenum, o_cpos;
int newlines, lpos, temp, n0, num, prompt_lines_estimate;
char *prompt_this_line;
+ char cur_face;
+ int hl_begin, hl_end;
int mb_cur_max = MB_CUR_MAX;
#if defined (HANDLE_MULTIBYTE)
wchar_t wc;
@@ -672,6 +764,14 @@ rl_redisplay (void)
_rl_block_sigint ();
RL_SETSTATE (RL_STATE_REDISPLAYING);
+ cur_face = FACE_NORMAL;
+ /* Can turn this into an array for multiple highlighted objects in addition
+ to the region */
+ hl_begin = hl_end = -1;
+
+ if (rl_mark_active_p ())
+ set_active_region (&hl_begin, &hl_end);
+
if (!rl_display_prompt)
rl_display_prompt = "";
@@ -680,13 +780,26 @@ rl_redisplay (void)
init_line_structures (0);
rl_on_new_line ();
}
+ else if (line_size <= _rl_screenwidth)
+ init_line_structures (_rl_screenwidth + 1);
+
+ /* Enable horizontal scrolling automatically for terminals of height 1
+ where wrapping lines doesn't work. Disable it as soon as the terminal
+ height is increased again if it was automatically enabled. */
+ if (_rl_screenheight <= 1)
+ {
+ if (_rl_horizontal_scroll_mode == 0)
+ horizontal_scrolling_autoset = 1;
+ _rl_horizontal_scroll_mode = 1;
+ }
+ else if (horizontal_scrolling_autoset)
+ _rl_horizontal_scroll_mode = 0;
/* Draw the line into the buffer. */
cpos_buffer_position = -1;
prompt_multibyte_chars = prompt_visible_length - prompt_physical_chars;
- line = invisible_line;
out = inv_botlin = 0;
/* Mark the line as modified or not. We only do this for history
@@ -694,8 +807,8 @@ rl_redisplay (void)
modmark = 0;
if (_rl_mark_modified_lines && current_history () && rl_undo_list)
{
- line[out++] = '*';
- line[out] = '\0';
+ invis_addc (&out, '*', cur_face);
+ invis_nul (&out);
modmark = 1;
}
@@ -708,7 +821,7 @@ rl_redisplay (void)
/* If the prompt to be displayed is the `primary' readline prompt (the
one passed to readline()), use the values we have already expanded.
If not, use what's already in rl_display_prompt. WRAP_OFFSET is the
- number of non-visible characters in the prompt string. */
+ number of non-visible characters (bytes) in the prompt string. */
/* This is where we output the characters in the prompt before the last
newline, if any. If there aren't any embedded newlines, we don't
write anything. Copy the last line of the prompt string into the line in
@@ -719,18 +832,8 @@ rl_redisplay (void)
_rl_output_some_chars (local_prompt_prefix, strlen (local_prompt_prefix));
if (local_prompt_len > 0)
- {
- temp = local_prompt_len + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, local_prompt, local_prompt_len);
- out += local_prompt_len;
- }
- line[out] = '\0';
+ invis_adds (&out, local_prompt, local_prompt_len, cur_face);
+ invis_nul (&out);
wrap_offset = local_prompt_len - prompt_visible_length;
}
else
@@ -753,17 +856,9 @@ rl_redisplay (void)
}
}
- prompt_physical_chars = pmtlen = strlen (prompt_this_line);
- temp = pmtlen + out + 2;
- if (temp >= line_size)
- {
- line_size = (temp + 1024) - (temp % 1024);
- visible_line = (char *)xrealloc (visible_line, line_size);
- line = invisible_line = (char *)xrealloc (invisible_line, line_size);
- }
- strncpy (line + out, prompt_this_line, pmtlen);
- out += pmtlen;
- line[out] = '\0';
+ prompt_physical_chars = pmtlen = strlen (prompt_this_line); /* XXX */
+ invis_adds (&out, prompt_this_line, pmtlen, cur_face);
+ invis_nul (&out);
wrap_offset = prompt_invis_chars_first_line = 0;
}
@@ -844,8 +939,8 @@ rl_redisplay (void)
num = 0;
#endif
- /* prompt_invis_chars_first_line is the number of invisible characters in
- the first physical line of the prompt.
+ /* prompt_invis_chars_first_line is the number of invisible characters (bytes)
+ in the first physical line of the prompt.
wrap_offset - prompt_invis_chars_first_line is usually the number of
invis chars on the second (or, more generally, last) line. */
@@ -901,6 +996,11 @@ rl_redisplay (void)
for (in = 0; in < rl_end; in++)
#endif
{
+ if (in == hl_begin)
+ cur_face = FACE_STANDOUT;
+ else if (in == hl_end)
+ cur_face = FACE_NORMAL;
+
c = (unsigned char)rl_line_buffer[in];
#if defined (HANDLE_MULTIBYTE)
@@ -925,14 +1025,6 @@ rl_redisplay (void)
}
#endif
- if (out + 8 >= line_size) /* XXX - 8 for \t */
- {
- line_size *= 2;
- visible_line = (char *)xrealloc (visible_line, line_size);
- invisible_line = (char *)xrealloc (invisible_line, line_size);
- line = invisible_line;
- }
-
if (in == rl_point)
{
cpos_buffer_position = out;
@@ -947,9 +1039,12 @@ rl_redisplay (void)
{
if (_rl_output_meta_chars == 0)
{
- sprintf (line + out, "\\%o", c);
+ char obuf[5];
+ int olen;
- if (lpos + 4 >= _rl_screenwidth)
+ olen = sprintf (obuf, "\\%o", c);
+
+ if (lpos + olen >= _rl_screenwidth)
{
temp = _rl_screenwidth - lpos;
CHECK_INV_LBREAKS ();
@@ -957,16 +1052,20 @@ rl_redisplay (void)
#if defined (HANDLE_MULTIBYTE)
line_state_invisible->wrapped_line[newlines] = _rl_wrapped_multicolumn;
#endif
- lpos = 4 - temp;
+ lpos = olen - temp;
}
else
- lpos += 4;
+ lpos += olen;
- out += 4;
+ for (temp = 0; temp < olen; temp++)
+ {
+ invis_addc (&out, obuf[temp], cur_face);
+ CHECK_LPOS ();
+ }
}
else
{
- line[out++] = c;
+ invis_addc (&out, c, cur_face);
CHECK_LPOS();
}
}
@@ -975,11 +1074,7 @@ rl_redisplay (void)
{
register int newout;
-#if 0
- newout = (out | (int)7) + 1;
-#else
newout = out + 8 - lpos % 8;
-#endif
temp = newout - out;
if (lpos + temp >= _rl_screenwidth)
{
@@ -992,19 +1087,19 @@ rl_redisplay (void)
#endif
lpos = temp - temp2;
while (out < newout)
- line[out++] = ' ';
+ invis_addc (&out, ' ', cur_face);
}
else
{
while (out < newout)
- line[out++] = ' ';
+ invis_addc (&out, ' ', cur_face);
lpos += temp;
}
}
#endif
else if (c == '\n' && _rl_horizontal_scroll_mode == 0 && _rl_term_up && *_rl_term_up)
{
- line[out++] = '\0'; /* XXX - sentinel */
+ invis_addc (&out, '\0', cur_face);
CHECK_INV_LBREAKS ();
inv_lbreaks[++newlines] = out;
#if defined (HANDLE_MULTIBYTE)
@@ -1014,9 +1109,9 @@ rl_redisplay (void)
}
else if (CTRL_CHAR (c) || c == RUBOUT)
{
- line[out++] = '^';
+ invis_addc (&out, '^', cur_face);
CHECK_LPOS();
- line[out++] = CTRL_CHAR (c) ? UNCTRL (c) : '?';
+ invis_addc (&out, CTRL_CHAR (c) ? UNCTRL (c) : '?', cur_face);
CHECK_LPOS();
}
else
@@ -1032,7 +1127,7 @@ rl_redisplay (void)
for (i = lpos; i < _rl_screenwidth; i++)
{
/* The space will be removed in update_line() */
- line[out++] = ' ';
+ invis_addc (&out, ' ', cur_face);
_rl_wrapped_multicolumn++;
CHECK_LPOS();
}
@@ -1042,17 +1137,17 @@ rl_redisplay (void)
lb_linenum = newlines;
}
for (i = in; i < in+wc_bytes; i++)
- line[out++] = rl_line_buffer[i];
+ invis_addc (&out, rl_line_buffer[i], cur_face);
for (i = 0; i < wc_width; i++)
CHECK_LPOS();
}
else
{
- line[out++] = c;
+ invis_addc (&out, c, cur_face);
CHECK_LPOS();
}
#else
- line[out++] = c;
+ invis_addc (&out, c, cur_face);
CHECK_LPOS();
#endif
}
@@ -1074,7 +1169,7 @@ rl_redisplay (void)
in++;
#endif
}
- line[out] = '\0';
+ invis_nul (&out);
line_totbytes = out;
if (cpos_buffer_position < 0)
{
@@ -1082,6 +1177,11 @@ rl_redisplay (void)
lb_linenum = newlines;
}
+ /* If we are switching from one line to multiple wrapped lines, we don't
+ want to do a dumb update (or we want to make it smarter). */
+ if (_rl_quick_redisplay && newlines > 0)
+ _rl_quick_redisplay = 0;
+
inv_botlin = lb_botlin = _rl_inv_botlin = newlines;
CHECK_INV_LBREAKS ();
inv_lbreaks[newlines+1] = out;
@@ -1118,7 +1218,7 @@ rl_redisplay (void)
{
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0)
- out = _rl_find_prev_mbchar (line, _rl_screenchars, MB_FIND_ANY);
+ out = _rl_find_prev_mbchar (invisible_line, _rl_screenchars, MB_FIND_ANY);
else
#endif
out = _rl_screenchars - 1;
@@ -1136,14 +1236,32 @@ rl_redisplay (void)
#define VIS_LLEN(l) ((l) > _rl_vis_botlin ? 0 : (vis_lbreaks[l+1] - vis_lbreaks[l]))
#define INV_LLEN(l) (inv_lbreaks[l+1] - inv_lbreaks[l])
#define VIS_CHARS(line) (visible_line + vis_lbreaks[line])
+#define VIS_FACE(line) (vis_face + vis_lbreaks[line])
#define VIS_LINE(line) ((line) > _rl_vis_botlin) ? "" : VIS_CHARS(line)
+#define VIS_LINE_FACE(line) ((line) > _rl_vis_botlin) ? "" : VIS_FACE(line)
#define INV_LINE(line) (invisible_line + inv_lbreaks[line])
+#define INV_LINE_FACE(line) (inv_face + inv_lbreaks[line])
#define OLD_CPOS_IN_PROMPT() (cpos_adjusted == 0 && \
_rl_last_c_pos != o_cpos && \
_rl_last_c_pos > wrap_offset && \
o_cpos < prompt_last_invisible)
+
+ /* We don't want to highlight anything that's going to be off the top
+ of the display; if the current line takes up more than an entire
+ screen, just mark the lines that won't be displayed as having a
+ `normal' face.
+ It's imperfect, but better than display corruption. */
+ if (rl_mark_active_p () && inv_botlin > _rl_screenheight)
+ {
+ int extra;
+
+ extra = inv_botlin - _rl_screenheight;
+ for (linenum = 0; linenum <= extra; linenum++)
+ norm_face (INV_LINE_FACE(linenum), INV_LLEN (linenum));
+ }
+
/* For each line in the buffer, do the updating display. */
for (linenum = 0; linenum <= inv_botlin; linenum++)
{
@@ -1151,7 +1269,9 @@ rl_redisplay (void)
the locale from a non-multibyte to a multibyte one. */
o_cpos = _rl_last_c_pos;
cpos_adjusted = 0;
- update_line (VIS_LINE(linenum), INV_LINE(linenum), linenum,
+ update_line (VIS_LINE(linenum), VIS_LINE_FACE(linenum),
+ INV_LINE(linenum), INV_LINE_FACE(linenum),
+ linenum,
VIS_LLEN(linenum), INV_LLEN(linenum), inv_botlin);
/* update_line potentially changes _rl_last_c_pos, but doesn't
@@ -1199,19 +1319,35 @@ rl_redisplay (void)
_rl_clear_to_eol (nleft);
}
#if 0
- /* This segment is intended to handle the case where the prompt
- has invisible characters on the second line and the new line
+ /* This segment is intended to handle the case where the old
+ visible prompt has invisible characters and the new line
to be displayed needs to clear the rest of the old characters
- out (e.g., when printing the i-search prompt). In general,
- the case of the new line being shorter than the old.
- Incomplete */
- else if (linenum == prompt_last_screen_line &&
- prompt_physical_chars > _rl_screenwidth &&
- wrap_offset != prompt_invis_chars_first_line &&
+ out (e.g., when printing the i-search prompt): in general,
+ the case of the new line being shorter than the old. We need
+ to be at the end of the new line and the old line needs to be
+ longer than the current cursor position. It's not perfect,
+ since it uses the byte length of the first line, but this will
+ at worst result in some extra clear-to-end-of-lines. We can't
+ use the prompt length variables because they may not
+ correspond to the visible line (see printing the i-search
+ prompt above). The tests for differing numbers of invisible
+ characters may not matter and can probably be removed. */
+ else if (linenum == 0 &&
+ linenum == prompt_last_screen_line &&
_rl_last_c_pos == out &&
+ _rl_last_c_pos < visible_first_line_len &&
+ visible_wrap_offset &&
+ visible_wrap_offset != wrap_offset)
+ {
+ 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;
+ if (nleft)
+ _rl_clear_to_eol (nleft);
+ }
#endif
-
/* Since the new first line is now visible, save its length. */
if (linenum == 0)
visible_first_line_len = (inv_botlin > 0) ? inv_lbreaks[1] : out - wrap_offset;
@@ -1226,7 +1362,7 @@ rl_redisplay (void)
{
tt = VIS_CHARS (linenum);
_rl_move_vert (linenum);
- _rl_move_cursor_relative (0, tt);
+ _rl_move_cursor_relative (0, tt, VIS_FACE(linenum));
_rl_clear_to_eol
((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
}
@@ -1255,20 +1391,12 @@ rl_redisplay (void)
the characters from the current cursor position. But we
only need to reprint it if the cursor is before the last
invisible character in the prompt string. */
+ /* XXX - why not use local_prompt_len? */
nleft = prompt_visible_length + wrap_offset;
if (cursor_linenum == 0 && wrap_offset > 0 && _rl_last_c_pos > 0 &&
-#if 0
- _rl_last_c_pos <= PROMPT_ENDING_INDEX && local_prompt)
-#else
_rl_last_c_pos < PROMPT_ENDING_INDEX && local_prompt)
-#endif
{
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- if (_rl_term_cr)
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
+ _rl_cr ();
if (modmark)
_rl_output_some_chars ("*", 1);
@@ -1282,8 +1410,8 @@ rl_redisplay (void)
/* Where on that line? And where does that line start
in the buffer? */
pos = inv_lbreaks[cursor_linenum];
- /* nleft == number of characters in the line buffer between the
- start of the line and the desired cursor position. */
+ /* nleft == number of characters (bytes) in the line buffer between
+ the start of the line and the desired cursor position. */
nleft = cpos_buffer_position - pos;
/* NLEFT is now a number of characters in a buffer. When in a
@@ -1314,9 +1442,9 @@ rl_redisplay (void)
point specified by a buffer position (NLEFT) that doesn't take
invisible characters into account. */
if (mb_cur_max > 1 && rl_byte_oriented == 0)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
+ _rl_move_cursor_relative (nleft, &invisible_line[pos], &inv_face[pos]);
else if (nleft != _rl_last_c_pos)
- _rl_move_cursor_relative (nleft, &invisible_line[pos]);
+ _rl_move_cursor_relative (nleft, &invisible_line[pos], &inv_face[pos]);
}
}
else /* Do horizontal scrolling. Much simpler */
@@ -1372,7 +1500,7 @@ rl_redisplay (void)
/* If the first character on the screen isn't the first character
in the display line, indicate this with a special character. */
if (lmargin > 0)
- line[lmargin] = '<';
+ invisible_line[lmargin] = '<';
/* If SCREENWIDTH characters starting at LMARGIN do not encompass
the whole line, indicate that with a special character at the
@@ -1380,15 +1508,15 @@ rl_redisplay (void)
wrap offset into account. */
t = lmargin + M_OFFSET (lmargin, wrap_offset) + _rl_screenwidth;
if (t > 0 && t < out)
- line[t - 1] = '>';
+ invisible_line[t - 1] = '>';
if (rl_display_fixed == 0 || forced_display || lmargin != last_lmargin)
{
forced_display = 0;
o_cpos = _rl_last_c_pos;
cpos_adjusted = 0;
- update_line (&visible_line[last_lmargin],
- &invisible_line[lmargin],
+ update_line (&visible_line[last_lmargin], &vis_face[last_lmargin],
+ &invisible_line[lmargin], &inv_face[lmargin],
0,
_rl_screenwidth + visible_wrap_offset,
_rl_screenwidth + (lmargin ? 0 : wrap_offset),
@@ -1413,7 +1541,7 @@ rl_redisplay (void)
if (visible_first_line_len > _rl_screenwidth)
visible_first_line_len = _rl_screenwidth;
- _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin]);
+ _rl_move_cursor_relative (cpos_buffer_position - lmargin, &invisible_line[lmargin], &inv_face[lmargin]);
last_lmargin = lmargin;
}
}
@@ -1434,22 +1562,64 @@ rl_redisplay (void)
visible_wrap_offset = 0;
else
visible_wrap_offset = wrap_offset;
+
+ _rl_quick_redisplay = 0;
}
RL_UNSETSTATE (RL_STATE_REDISPLAYING);
_rl_release_sigint ();
}
+static void
+putc_face (int c, int face, char *cur_face)
+{
+ char cf;
+ cf = *cur_face;
+ if (cf != face)
+ {
+ if (cf != FACE_NORMAL && cf != FACE_STANDOUT)
+ return;
+ if (face != FACE_NORMAL && face != FACE_STANDOUT)
+ return;
+ if (face == FACE_STANDOUT && cf == FACE_NORMAL)
+ _rl_standout_on ();
+ if (face == FACE_NORMAL && cf == FACE_STANDOUT)
+ _rl_standout_off ();
+ *cur_face = face;
+ }
+ if (c != EOF)
+ putc (c, rl_outstream);
+}
+
+static void
+puts_face (const char *str, const char *face, int n)
+{
+ int i;
+ char cur_face;
+
+ for (cur_face = FACE_NORMAL, i = 0; i < n; i++)
+ putc_face (str[i], face[i], &cur_face);
+ putc_face (EOF, FACE_NORMAL, &cur_face);
+}
+
+static void
+norm_face (char *face, int n)
+{
+ memset (face, FACE_NORMAL, n);
+}
+
+#define ADJUST_CPOS(x) do { _rl_last_c_pos -= (x) ; cpos_adjusted = 1; } while (0)
+
/* PWP: update_line() is based on finding the middle difference of each
line on the screen; vis:
/old first difference
- /beginning of line | /old last same /old EOL
- v v v v
+ /beginning of line | /old last same /old EOL
+ v v v v
old: eddie> Oh, my little gruntle-buggy is to me, as lurgid as
new: eddie> Oh, my little buggy says to me, as lurgid as
- ^ ^ ^ ^
- \beginning of line | \new last same \new end of line
+ ^ ^ ^ ^
+ \beginning of line | \new last same \new end of line
\new first difference
All are character pointers for the sake of speed. Special cases for
@@ -1457,9 +1627,10 @@ new: eddie> Oh, my little buggy says to me, as lurgid as
Could be made even smarter, but this works well enough */
static void
-update_line (char *old, char *new, int current_line, int omax, int nmax, int inv_botlin)
+update_line (char *old, char *old_face, char *new, char *new_face, int current_line, int omax, int nmax, int inv_botlin)
{
- register char *ofd, *ols, *oe, *nfd, *nls, *ne;
+ char *ofd, *ols, *oe, *nfd, *nls, *ne;
+ char *ofdf, *nfdf, *olsf, *nlsf;
int temp, lendiff, wsatend, od, nd, twidth, o_cpos;
int current_invis_chars;
int col_lendiff, col_temp;
@@ -1594,17 +1765,24 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
int count, i, j;
char *optr;
- _rl_output_some_chars (new, newbytes);
+ puts_face (new, new_face, newbytes);
_rl_last_c_pos = newwidth;
_rl_last_v_pos++;
/* 5a. If the number of screen positions doesn't match, punt
- and do a dumb update. */
- if (newwidth != oldwidth)
+ and do a dumb update.
+ 5b. If the number of bytes is greater in the new line than
+ the old, do a dumb update, because there is no guarantee we
+ can extend the old line enough to fit the new bytes. */
+ if (newwidth != oldwidth || newbytes > oldbytes)
{
+ oe = old + omax;
ne = new + nmax;
nd = newbytes;
nfd = new + nd;
+ ofdf = old_face + oldbytes;
+ nfdf = new_face + newbytes;
+
goto dumb_update;
}
if (oldbytes != 0 && newbytes != 0)
@@ -1613,13 +1791,21 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
consume the first character of old. Fix up `old' so it
reflects the new screen contents. We use +1 in the
memmove call to copy the trailing NUL. */
- memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1);
+ /* (strlen(old+oldbytes) == (omax - oldbytes - 1)) */
+
+ /* Don't bother trying to fit the bytes if the number of bytes
+ doesn't change. */
+ if (oldbytes != newbytes)
+ {
+ memmove (old+newbytes, old+oldbytes, strlen (old+oldbytes) + 1);
+ memmove (old_face+newbytes, old_face+oldbytes, strlen (old+oldbytes) + 1);
+ }
memcpy (old, new, newbytes);
+ memcpy (old_face, new_face, newbytes);
j = newbytes - oldbytes;
-
omax += j;
/* Fix up indices if we copy data from one line to another */
- for (i = current_line+1; i <= inv_botlin+1; i++)
+ for (i = current_line+1; j != 0 && i <= inv_botlin+1 && i <=_rl_vis_botlin+1; i++)
vis_lbreaks[i] += j;
}
}
@@ -1629,23 +1815,71 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
_rl_last_c_pos = 1;
_rl_last_v_pos++;
if (old[0] && new[0])
- old[0] = new[0];
+ {
+ old[0] = new[0];
+ old_face[0] = new_face[0];
+ }
}
}
else
#endif
{
if (new[0])
- putc (new[0], rl_outstream);
+ puts_face (new, new_face, 1);
else
putc (' ', rl_outstream);
_rl_last_c_pos = 1;
_rl_last_v_pos++;
if (old[0] && new[0])
- old[0] = new[0];
+ {
+ old[0] = new[0];
+ old_face[0] = new_face[0];
+ }
}
}
+ /* We know that we are dealing with a single screen line here */
+ if (_rl_quick_redisplay)
+ {
+ nfd = new;
+ nfdf = new_face;
+ ofd = old;
+ ofdf = old_face;
+ for (od = 0, oe = ofd; od < omax && *oe; oe++, od++);
+ for (nd = 0, ne = nfd; nd < nmax && *ne; ne++, nd++);
+ od = nd = 0;
+ _rl_move_cursor_relative (0, old, old_face);
+
+ bytes_to_insert = ne - nfd;
+ if (bytes_to_insert < local_prompt_len) /* ??? */
+ goto dumb_update;
+
+ /* output the prompt, output the line contents, clear the rest */
+ _rl_output_some_chars (nfd, local_prompt_len);
+ if (mb_cur_max > 1 && rl_byte_oriented == 0)
+ _rl_last_c_pos = prompt_physical_chars;
+ else
+ _rl_last_c_pos = local_prompt_len;
+
+ bytes_to_insert -= local_prompt_len;
+ if (bytes_to_insert > 0)
+ {
+ puts_face (new+local_prompt_len, nfdf+local_prompt_len, bytes_to_insert);
+ if (mb_cur_max > 1 && rl_byte_oriented)
+ _rl_last_c_pos += _rl_col_width (new, local_prompt_len, ne-new, 1);
+ else
+ _rl_last_c_pos += bytes_to_insert;
+ }
+
+ /* See comments at dumb_update: for an explanation of this heuristic */
+ if (nmax < omax)
+ goto clear_rest_of_line;
+ else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset)))
+ goto clear_rest_of_line;
+ else
+ return;
+ }
+
/* Find first difference. */
#if defined (HANDLE_MULTIBYTE)
if (mb_cur_max > 1 && rl_byte_oriented == 0)
@@ -1653,11 +1887,13 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
/* See if the old line is a subset of the new line, so that the
only change is adding characters. */
temp = (omax < nmax) ? omax : nmax;
- if (memcmp (old, new, temp) == 0) /* adding at the end */
+ if (memcmp (old, new, temp) == 0 && memcmp (old_face, new_face, temp) == 0)
{
- new_offset = old_offset = temp;
+ new_offset = old_offset = temp; /* adding at the end */
ofd = old + temp;
+ ofdf = old_face + temp;
nfd = new + temp;
+ nfdf = new_face + temp;
}
else
{
@@ -1665,36 +1901,42 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
memset (&ps_old, 0, sizeof(mbstate_t));
/* Are the old and new lines the same? */
- if (omax == nmax && STREQN (new, old, omax))
+ if (omax == nmax && memcmp (new, old, omax) == 0 && memcmp (new_face, old_face, omax) == 0)
{
old_offset = omax;
new_offset = nmax;
ofd = old + omax;
+ ofdf = old_face + omax;
nfd = new + nmax;
+ nfdf = new_face + nmax;
}
else
{
/* Go through the line from the beginning and find the first
- difference. */
+ difference. We assume that faces change at (possibly multi-
+ byte) character boundaries. */
new_offset = old_offset = 0;
- for (ofd = old, nfd = new;
+ for (ofd = old, ofdf = old_face, nfd = new, nfdf = new_face;
(ofd - old < omax) && *ofd &&
- _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new); )
+ _rl_compare_chars(old, old_offset, &ps_old, new, new_offset, &ps_new) &&
+ *ofdf == *nfdf; )
{
old_offset = _rl_find_next_mbchar (old, old_offset, 1, MB_FIND_ANY);
new_offset = _rl_find_next_mbchar (new, new_offset, 1, MB_FIND_ANY);
ofd = old + old_offset;
+ ofdf = old_face + old_offset;
nfd = new + new_offset;
+ nfdf = new_face + new_offset;
}
}
}
}
else
#endif
- for (ofd = old, nfd = new;
- (ofd - old < omax) && *ofd && (*ofd == *nfd);
- ofd++, nfd++)
+ for (ofd = old, ofdf = old_face, nfd = new, nfdf = new_face;
+ (ofd - old < omax) && *ofd && (*ofd == *nfd) && (*ofdf == *nfdf);
+ ofd++, nfd++, ofdf++, nfdf++)
;
/* Move to the end of the screen line. ND and OD are used to keep track
@@ -1723,7 +1965,9 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
old_offset = _rl_find_prev_mbchar (old, ofd - old, MB_FIND_ANY);
new_offset = _rl_find_prev_mbchar (new, nfd - new, MB_FIND_ANY);
ofd = old + old_offset; /* equal by definition */
+ ofdf = old_face + old_offset;
nfd = new + new_offset;
+ nfdf = new_face + new_offset;
}
}
#endif
@@ -1736,40 +1980,41 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
ols = old + _rl_find_prev_mbchar (old, oe - old, MB_FIND_ANY);
+ olsf = old_face + (ols - old);
nls = new + _rl_find_prev_mbchar (new, ne - new, MB_FIND_ANY);
+ nlsf = new_face + (nls - new);
while ((ols > ofd) && (nls > nfd))
{
memset (&ps_old, 0, sizeof (mbstate_t));
memset (&ps_new, 0, sizeof (mbstate_t));
-#if 0
- /* On advice from jir@yamato.ibm.com */
- _rl_adjust_point (old, ols - old, &ps_old);
- _rl_adjust_point (new, nls - new, &ps_new);
-#endif
-
- if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0)
+ if (_rl_compare_chars (old, ols - old, &ps_old, new, nls - new, &ps_new) == 0 ||
+ *olsf != *nlsf)
break;
if (*ols == ' ')
wsatend = 0;
ols = old + _rl_find_prev_mbchar (old, ols - old, MB_FIND_ANY);
+ olsf = old_face + (ols - old);
nls = new + _rl_find_prev_mbchar (new, nls - new, MB_FIND_ANY);
+ nlsf = new_face + (nls - new);
}
}
else
{
#endif /* HANDLE_MULTIBYTE */
ols = oe - 1; /* find last same */
+ olsf = old_face + (ols - old);
nls = ne - 1;
- while ((ols > ofd) && (nls > nfd) && (*ols == *nls))
+ nlsf = new_face + (nls - new);
+ while ((ols > ofd) && (nls > nfd) && (*ols == *nls) && (*olsf == *nlsf))
{
if (*ols != ' ')
wsatend = 0;
- ols--;
- nls--;
+ ols--; olsf--;
+ nls--; nlsf--;
}
#if defined (HANDLE_MULTIBYTE)
}
@@ -1778,15 +2023,17 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
if (wsatend)
{
ols = oe;
+ olsf = old_face + (ols - old);
nls = ne;
+ nlsf = new_face + (nls - new);
}
#if defined (HANDLE_MULTIBYTE)
/* This may not work for stateful encoding, but who cares? To handle
stateful encoding properly, we have to scan each string from the
beginning and compare. */
- else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0)
+ else if (_rl_compare_chars (ols, 0, NULL, nls, 0, NULL) == 0 || *olsf != *nlsf)
#else
- else if (*ols != *nls)
+ else if (*ols != *nls || *olsf != *nlsf)
#endif
{
if (*ols) /* don't step past the NUL */
@@ -1803,6 +2050,8 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
else
nls++;
}
+ olsf = old_face + (ols - old);
+ nlsf = new_face + (nls - new);
}
/* count of invisible characters in the current invisible line. */
@@ -1815,6 +2064,10 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
visible_wrap_offset based on what we know. */
if (current_line == 0)
visible_wrap_offset = prompt_invis_chars_first_line; /* XXX */
+#if 0 /* XXX - not yet */
+ else if (current_line == prompt_last_screen_line && wrap_offset > prompt_invis_chars_first_line)
+ visible_wrap_offset = wrap_offset - prompt_invis_chars_first_line
+#endif
if ((mb_cur_max == 1 || rl_byte_oriented) && current_line == 0 && visible_wrap_offset)
_rl_last_c_pos += visible_wrap_offset;
}
@@ -1852,19 +2105,21 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
(((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);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
+ _rl_cr ();
if (modmark)
_rl_output_some_chars ("*", 1);
_rl_output_some_chars (local_prompt, lendiff);
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. */
- _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff, 1) - wrap_offset + modmark;
+ /* If we just output the entire prompt string we can take advantage
+ of knowing the number of physical characters in the prompt. If
+ the prompt wraps lines (lendiff clamped at nmax), we can't. */
+ if (lendiff == local_prompt_len)
+ _rl_last_c_pos = prompt_physical_chars + modmark;
+ else
+ /* We take wrap_offset into account here so we can pass correct
+ information to _rl_move_cursor_relative. */
+ _rl_last_c_pos = _rl_col_width (local_prompt, 0, lendiff, 1) - wrap_offset + modmark;
cpos_adjusted = 1;
}
else
@@ -1885,10 +2140,11 @@ update_line (char *old, char *new, int current_line, int omax, int nmax, int inv
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. */
+ This needs a lot of work to be efficient, but it usually doesn't matter. */
if ((od <= prompt_last_invisible || nd <= prompt_last_invisible))
{
nfd = new + lendiff; /* number of characters we output above */
+ nfdf = new_face + lendiff;
nd = lendiff;
/* Do a dumb update and return */
@@ -1896,7 +2152,7 @@ dumb_update:
temp = ne - nfd;
if (temp > 0)
{
- _rl_output_some_chars (nfd, temp);
+ puts_face (nfd, nfdf, temp);
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
_rl_last_c_pos += _rl_col_width (new, nd, ne - new, 1);
@@ -1910,16 +2166,33 @@ dumb_update:
current_line == prompt_last_screen_line &&
prompt_physical_chars > _rl_screenwidth &&
_rl_horizontal_scroll_mode == 0)
- {
- _rl_last_c_pos -= wrap_offset - prompt_invis_chars_first_line;
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line);
+
+ /* If we just output a new line including the prompt, and
+ the prompt includes invisible characters, we need to
+ account for them in the _rl_last_c_pos calculation, since
+ _rl_col_width does not. This happens when other code does
+ a goto dumb_update; */
+ else if (current_line == 0 &&
+ nfd == new &&
+ prompt_invis_chars_first_line &&
+ local_prompt_len <= temp &&
+ wrap_offset >= prompt_invis_chars_first_line &&
+ _rl_horizontal_scroll_mode == 0)
+ ADJUST_CPOS (prompt_invis_chars_first_line);
}
else
_rl_last_c_pos += temp;
}
+ /* This is a useful heuristic, but what we really want is to clear
+ if the new number of visible screen characters is less than the
+ old number of visible screen characters. If the prompt has changed,
+ we don't really have enough information about the visible line to
+ know for sure, so we use another heuristic calclulation below. */
if (nmax < omax)
goto clear_rest_of_line; /* XXX */
+ else if ((nmax - W_OFFSET(current_line, wrap_offset)) < (omax - W_OFFSET (current_line, visible_wrap_offset)))
+ goto clear_rest_of_line;
else
return;
}
@@ -1930,7 +2203,7 @@ dumb_update:
/* When this function returns, _rl_last_c_pos is correct, and an absolute
cursor position in multibyte mode, but a buffer index when not in a
multibyte locale. */
- _rl_move_cursor_relative (od, old);
+ _rl_move_cursor_relative (od, old, old_face);
#if defined (HANDLE_MULTIBYTE)
/* We need to indicate that the cursor position is correct in the presence of
@@ -1948,15 +2221,76 @@ dumb_update:
When not using multibyte characters, these are equal */
lendiff = (nls - nfd) - (ols - ofd);
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);
+ {
+ int newchars, newwidth, newind;
+ int oldchars, oldwidth, oldind;
+
+ newchars = nls - new;
+ oldchars = ols - old;
+
+ /* If we can do it, try to adjust nls and ols so that nls-new will
+ contain the entire new prompt string. That way we can use
+ prompt_physical_chars and not have to recompute column widths.
+ _rl_col_width adds wrap_offset and expects the caller to compensate,
+ which we do below, so we do the same thing if we don't call
+ _rl_col_width.
+ We don't have to compare, since we know the characters are the same.
+ The check of differing numbers of invisible chars may be extraneous.
+ XXX - experimental */
+ if (current_line == 0 && nfd == new && newchars > prompt_last_invisible &&
+ newchars <= local_prompt_len &&
+ local_prompt_len <= nmax &&
+ current_invis_chars != visible_wrap_offset)
+ {
+ while (newchars < nmax && oldchars < omax && newchars < local_prompt_len)
+ {
+#if defined (HANDLE_MULTIBYTE)
+ newind = _rl_find_next_mbchar (new, newchars, 1, MB_FIND_NONZERO);
+ oldind = _rl_find_next_mbchar (old, oldchars, 1, MB_FIND_NONZERO);
+
+ nls += newind - newchars;
+ ols += oldind - oldchars;
+
+ newchars = newind;
+ oldchars = oldind;
+#else
+ nls++; ols++;
+ newchars++; oldchars++;
+#endif
+ }
+ newwidth = (newchars == local_prompt_len) ? prompt_physical_chars + wrap_offset
+ : _rl_col_width (new, 0, nls - new, 1);
+ /* if we changed nls and ols, we need to recompute lendiff */
+ lendiff = (nls - nfd) - (ols - ofd);
+
+ nlsf = new_face + (nls - new);
+ olsf = old_face + (ols - old);
+ }
+ else
+ newwidth = _rl_col_width (new, nfd - new, nls - new, 1);
+
+ oldwidth = _rl_col_width (old, ofd - old, ols - old, 1);
+
+ col_lendiff = newwidth - oldwidth;
+ }
else
col_lendiff = lendiff;
+ /* col_lendiff uses _rl_col_width(), which doesn't know about whether or not
+ the multibyte characters it counts are invisible, so unless we're printing
+ the entire prompt string (in which case we can use prompt_physical_chars)
+ the count is short by the number of bytes in the invisible multibyte
+ characters - the number of multibyte characters.
+
+ We don't have a good way to solve this without moving to something like
+ a bitmap that indicates which characters are visible and which are
+ invisible. We fix it up (imperfectly) in the caller and by trying to use
+ the entire prompt string wherever we can. */
+
/* If we are changing the number of invisible characters in a line, and
the spot of first difference is before the end of the invisible chars,
lendiff needs to be adjusted. */
- if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */
- current_invis_chars != visible_wrap_offset)
+ if (current_line == 0 && current_invis_chars != visible_wrap_offset)
{
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
@@ -1998,16 +2332,13 @@ dumb_update:
only happen in a multibyte environment. */
if (lendiff < 0)
{
- _rl_output_some_chars (nfd, temp);
- _rl_last_c_pos += col_temp; /* XXX - was _rl_col_width (nfd, 0, temp, 1); */
+ puts_face (nfd, nfdf, temp);
+ _rl_last_c_pos += col_temp;
/* If nfd begins before any invisible characters in the prompt,
adjust _rl_last_c_pos to account for wrap_offset and set
cpos_adjusted to let the caller know. */
if (current_line == 0 && displaying_prompt_first_line && wrap_offset && ((nfd - new) <= prompt_last_invisible))
- {
- _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */
return;
}
/* Sometimes it is cheaper to print the characters rather than
@@ -2035,7 +2366,7 @@ dumb_update:
(visible_wrap_offset >= current_invis_chars))
{
open_some_spaces (col_lendiff);
- _rl_output_some_chars (nfd, bytes_to_insert);
+ puts_face (nfd, nfdf, bytes_to_insert);
if (mb_cur_max > 1 && rl_byte_oriented == 0)
_rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1);
else
@@ -2045,22 +2376,19 @@ dumb_update:
{
/* At the end of a line the characters do not have to
be "inserted". They can just be placed on the screen. */
- _rl_output_some_chars (nfd, temp);
+ puts_face (nfd, nfdf, temp);
_rl_last_c_pos += col_temp;
return;
}
else /* just write from first difference to end of new line */
{
- _rl_output_some_chars (nfd, temp);
+ puts_face (nfd, nfdf, temp);
_rl_last_c_pos += col_temp;
/* 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))
- {
- _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */
return;
}
@@ -2070,16 +2398,13 @@ dumb_update:
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))
- {
- _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */
}
}
else
{
/* cannot insert chars, write to EOL */
- _rl_output_some_chars (nfd, temp);
+ puts_face (nfd, nfdf, temp);
_rl_last_c_pos += col_temp;
/* If we're in a multibyte locale and were before the last invisible
char in the current line (which implies we just output some invisible
@@ -2094,10 +2419,11 @@ dumb_update:
displaying_prompt_first_line &&
wrap_offset != prompt_invis_chars_first_line &&
((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;
- }
+ ADJUST_CPOS (wrap_offset - prompt_invis_chars_first_line);
+
+ /* XXX - what happens if wrap_offset == prompt_invis_chars_first_line
+ and we are drawing the first line (current_line == 0)? We should
+ adjust by _rl_last_c_pos -= prompt_invis_chars_first_line */
}
}
else /* Delete characters from line. */
@@ -2132,18 +2458,18 @@ dumb_update:
characters in the prompt, we need to adjust _rl_last_c_pos
in a multibyte locale to account for the wrap offset and
set cpos_adjusted accordingly. */
- _rl_output_some_chars (nfd, bytes_to_insert);
+ puts_face (nfd, nfdf, bytes_to_insert);
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
+ /* This still doesn't take into account whether or not the
+ characters that this counts are invisible. */
_rl_last_c_pos += _rl_col_width (nfd, 0, bytes_to_insert, 1);
if (current_line == 0 && wrap_offset &&
displaying_prompt_first_line &&
- _rl_last_c_pos >= wrap_offset && /* XXX was > */
+ prompt_invis_chars_first_line &&
+ _rl_last_c_pos >= prompt_invis_chars_first_line &&
((nfd - new) <= prompt_last_invisible))
- {
- _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (prompt_invis_chars_first_line);
#if 1
#ifdef HANDLE_MULTIBYTE
@@ -2166,7 +2492,7 @@ dumb_update:
so we move there with _rl_move_cursor_relative */
if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new)))
{
- _rl_move_cursor_relative (ne-new, new);
+ _rl_move_cursor_relative (ne-new, new, new_face);
goto clear_rest_of_line;
}
}
@@ -2180,7 +2506,7 @@ dumb_update:
characters in the prompt, we need to adjust _rl_last_c_pos
in a multibyte locale to account for the wrap offset and
set cpos_adjusted accordingly. */
- _rl_output_some_chars (nfd, temp);
+ puts_face (nfd, nfdf, temp);
_rl_last_c_pos += col_temp; /* XXX */
if (mb_cur_max > 1 && rl_byte_oriented == 0)
{
@@ -2188,10 +2514,7 @@ dumb_update:
displaying_prompt_first_line &&
_rl_last_c_pos > wrap_offset &&
((nfd - new) <= prompt_last_invisible))
- {
- _rl_last_c_pos -= wrap_offset; /* XXX - prompt_invis_chars_first_line? */
- cpos_adjusted = 1;
- }
+ ADJUST_CPOS (wrap_offset); /* XXX - prompt_invis_chars_first_line? */
}
}
clear_rest_of_line:
@@ -2240,11 +2563,7 @@ rl_clear_visible_line (void)
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_cr ();
_rl_last_c_pos = 0;
/* Move to the last screen line of the current visible line */
@@ -2357,8 +2676,8 @@ rl_redraw_prompt_last_line (void)
DATA is the contents of the screen line of interest; i.e., where
the movement is being done.
DATA is always the visible line or the invisible line */
-void
-_rl_move_cursor_relative (int new, const char *data)
+static void
+_rl_move_cursor_relative (int new, const char *data, const char *dataf)
{
register int i;
int woff; /* number of invisible chars on current line */
@@ -2455,11 +2774,7 @@ _rl_move_cursor_relative (int new, const char *data)
if (dpos == 0 || CR_FASTER (dpos, _rl_last_c_pos) ||
(_rl_term_autowrap && i == _rl_screenwidth))
{
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif /* !__MSDOS__ */
+ _rl_cr ();
cpos = _rl_last_c_pos = 0;
}
@@ -2491,14 +2806,12 @@ _rl_move_cursor_relative (int new, const char *data)
}
else
{
- tputs (_rl_term_cr, 1, _rl_output_character_function);
- for (i = 0; i < new; i++)
- putc (data[i], rl_outstream);
+ _rl_cr ();
+ puts_face (data, dataf, new);
}
}
else
- for (i = cpos; i < new; i++)
- putc (data[i], rl_outstream);
+ puts_face (data + cpos, dataf + cpos, new - cpos);
}
#if defined (HANDLE_MULTIBYTE)
@@ -2526,11 +2839,7 @@ _rl_move_vert (int to)
{
for (i = 0; i < delta; i++)
putc ('\n', rl_outstream);
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
+ _rl_cr ();
_rl_last_c_pos = 0;
}
else
@@ -2871,14 +3180,18 @@ space_to_eol (int count)
}
void
-_rl_clear_screen (void)
+_rl_clear_screen (int clrscr)
{
#if defined (__DJGPP__)
ScreenClear ();
ScreenSetCursor (0, 0);
#else
if (_rl_term_clrpag)
- tputs (_rl_term_clrpag, 1, _rl_output_character_function);
+ {
+ tputs (_rl_term_clrpag, 1, _rl_output_character_function);
+ if (clrscr && _rl_term_clrscroll)
+ tputs (_rl_term_clrscroll, 1, _rl_output_character_function);
+ }
else
rl_crlf ();
#endif /* __DJGPP__ */
@@ -2958,6 +3271,9 @@ _rl_update_final (void)
{
int full_lines, woff, botline_length;
+ if (line_structures_initialized == 0)
+ return;
+
full_lines = 0;
/* If the cursor is the only thing on an otherwise-blank last line,
compensate so we don't print an extra CRLF. */
@@ -2973,7 +3289,7 @@ _rl_update_final (void)
/* If we've wrapped lines, remove the final xterm line-wrap flag. */
if (full_lines && _rl_term_autowrap && botline_length == _rl_screenwidth)
{
- char *last_line;
+ char *last_line, *last_face;
/* LAST_LINE includes invisible characters, so if you want to get the
last character of the first line, you have to take WOFF into account.
@@ -2981,10 +3297,12 @@ _rl_update_final (void)
which takes a buffer position as the first argument, and any direct
subscripts of LAST_LINE. */
last_line = &visible_line[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */
+ last_face = &vis_face[vis_lbreaks[_rl_vis_botlin]]; /* = VIS_CHARS(_rl_vis_botlin); */
cpos_buffer_position = -1; /* don't know where we are in buffer */
- _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line); /* XXX */
+ _rl_move_cursor_relative (_rl_screenwidth - 1 + woff, last_line, last_face); /* XXX */
_rl_clear_to_eol (0);
- putc (last_line[_rl_screenwidth - 1 + woff], rl_outstream);
+ puts_face (&last_line[_rl_screenwidth - 1 + woff],
+ &last_face[_rl_screenwidth - 1 + woff], 1);
}
_rl_vis_botlin = 0;
if (botline_length > 0 || _rl_last_c_pos > 0)
@@ -2997,15 +3315,8 @@ _rl_update_final (void)
static void
cr (void)
{
- if (_rl_term_cr)
- {
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
- _rl_last_c_pos = 0;
- }
+ _rl_cr ();
+ _rl_last_c_pos = 0;
}
/* Redraw the last line of a multi-line prompt that may possibly contain
@@ -3048,24 +3359,19 @@ _rl_redisplay_after_sigwinch (void)
{
_rl_move_vert (_rl_vis_botlin);
-#if defined (__MSDOS__)
- putc ('\r', rl_outstream);
-#else
- tputs (_rl_term_cr, 1, _rl_output_character_function);
-#endif
+ _rl_cr ();
_rl_last_c_pos = 0;
-#if defined (__MSDOS__)
- space_to_eol (_rl_screenwidth);
- putc ('\r', rl_outstream);
-#else
+
+#if !defined (__MSDOS__)
if (_rl_term_clreol)
tputs (_rl_term_clreol, 1, _rl_output_character_function);
else
+#endif
{
space_to_eol (_rl_screenwidth);
- tputs (_rl_term_cr, 1, _rl_output_character_function);
+ _rl_cr ();
}
-#endif
+
if (_rl_last_v_pos > 0)
_rl_move_vert (0);
}
@@ -3130,6 +3436,14 @@ _rl_current_display_line (void)
return ret;
}
+void
+_rl_refresh_line (void)
+{
+ rl_clear_visible_line ();
+ rl_redraw_prompt_last_line ();
+ rl_keep_mark_active ();
+}
+
#if defined (HANDLE_MULTIBYTE)
/* Calculate the number of screen columns occupied by STR from START to END.
In the case of multibyte characters with stateful encoding, we have to
diff --git a/lib/readline/doc/history.texi b/lib/readline/doc/history.texi
index 98e22332..7a3a4767 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--2016 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2020 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 dbc21c14..7ac11953 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-2016 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -48,7 +48,7 @@ History library is able to keep track of those lines, associate arbitrary
data with each line, and utilize information from previous lines in
composing new ones.
-The programmer using the History library has available functions
+A programmer using the History library has available functions
for remembering lines on a history list, associating arbitrary data
with a line, removing lines from the list, searching through the list
for a line containing an arbitrary text string, and referencing any line
@@ -62,7 +62,7 @@ commands for manipulating the text of previous lines and using that text
in new commands. The basic history manipulation commands are similar to
the history substitution provided by @code{csh}.
-If the programmer desires, he can use the Readline library, which
+The programmer can also use the Readline library, which
includes some history manipulation by default, and has the added
advantage of command line editing.
diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi
index 521ccc70..b8fedf33 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--2018 Free Software Foundation, Inc.
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
Permission is granted to make and distribute verbatim copies of this manual
@@ -149,7 +149,14 @@ Both @var{first} and
@var{last} may be specified as a string (to locate the most recent
command beginning with that string) or as a number (an index into the
history list, where a negative number is used as an offset from the
-current command number). If @var{last} is not specified, it is set to
+current command number).
+
+When listing, a @var{first} or @var{last} of 0 is equivalent to -1
+and -0 is equivalent to the current command (usually the @code{fc}
+command);
+otherwise 0 is equivalent to -1 and -0 is invalid.
+
+If @var{last} is not specified, it is set to
@var{first}. If @var{first} is not specified, it is set to the previous
command for editing and @minus{}16 for listing. If the @option{-l} flag is
given, the commands are listed on standard output. The @option{-n} flag
@@ -164,7 +171,7 @@ When editing is complete, the edited commands are echoed and executed.
In the second form, @var{command} is re-executed after each instance
of @var{pat} in the selected command is replaced by @var{rep}.
-@var{command} is intepreted the same as @var{first} above.
+@var{command} is interpreted the same as @var{first} above.
A useful alias to use with the @code{fc} command is @code{r='fc -s'}, so
that typing @samp{r cc} runs the last command beginning with @code{cc}
@@ -370,11 +377,13 @@ containing @var{string}.
The trailing
@samp{?} may be omitted if the @var{string} is followed immediately by
a newline.
+If @var{string} is missing, the string from the most recent search is used;
+it is an error if there is no previous search string.
@item @code{^@var{string1}^@var{string2}^}
Quick Substitution. Repeat the last command, replacing @var{string1}
with @var{string2}. Equivalent to
-@code{!!:s/@var{string1}/@var{string2}/}.
+@code{!!:s^@var{string1}^@var{string2}^}.
@item @code{!#}
The entire command line typed so far.
@@ -426,7 +435,8 @@ The first argument; that is, word 1.
The last argument.
@item %
-The word matched by the most recent @samp{?@var{string}?} search.
+The first word matched by the most recent @samp{?@var{string}?} search,
+if the search string begins with a character that is part of a word.
@item @var{x}-@var{y}
A range of words; @samp{-@var{y}} abbreviates @samp{0-@var{y}}.
@@ -441,6 +451,7 @@ Abbreviates @samp{@var{x}-$}
@item @var{x}-
Abbreviates @samp{@var{x}-$} like @samp{@var{x}*}, but omits the last word.
+If @samp{x} is missing, it defaults to 0.
@end table
@@ -452,6 +463,7 @@ previous command is used as the event.
After the optional word designator, you can add a sequence of one or more
of the following modifiers, each preceded by a @samp{:}.
+These modify, or edit, the word or words selected from the history event.
@table @code
@@ -478,15 +490,25 @@ Quote the substituted words, escaping further substitutions.
@item x
Quote the substituted words as with @samp{q},
but break into words at spaces, tabs, and newlines.
+The @samp{q} and @samp{x} modifiers are mutually exclusive; the last one
+supplied is used.
@end ifset
@item s/@var{old}/@var{new}/
Substitute @var{new} for the first occurrence of @var{old} in the
-event line. Any delimiter may be used in place of @samp{/}.
+event line.
+Any character may be used as the delimiter in place of @samp{/}.
The delimiter may be quoted in @var{old} and @var{new}
with a single backslash. If @samp{&} appears in @var{new},
it is replaced by @var{old}. A single backslash will quote
-the @samp{&}. The final delimiter is optional if it is the last
+the @samp{&}.
+If @var{old} is null, it is set to the last @var{old}
+substituted, or, if no previous history substitutions took place,
+the last @var{string}
+in a !?@var{string}@code{[?]}
+search.
+If @var{new} is is null, each matching @var{old} is deleted.
+The final delimiter is optional if it is the last
character on the input line.
@item &
@@ -499,6 +521,7 @@ conjunction with @samp{s}, as in @code{gs/@var{old}/@var{new}/},
or with @samp{&}.
@item G
-Apply the following @samp{s} modifier once to each word in the event.
+Apply the following @samp{s} or @samp{&} modifier once to each word
+in the event.
@end table
diff --git a/lib/readline/doc/rlman.texi b/lib/readline/doc/rlman.texi
index 737f971d..ec7487b7 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--2016 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2020 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 28a02d99..bbf57c23 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--2016 Free Software Foundation, Inc.
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
Permission is granted to make and distribute verbatim copies of
this manual provided the copyright notice and this permission notice
@@ -1342,6 +1342,29 @@ This differs from @code{clear_history} because it frees private data
Readline saves in the history list.
@end deftypefun
+@deftypefun {void} rl_activate_mark (void)
+Enable an @emph{active} mark.
+When this is enabled, the text between point and mark (the @var{region}) is
+displayed in the terminal's standout mode (a @var{face}).
+This is called by various readline functions that set the mark and insert
+text, and is available for applications to call.
+@end deftypefun
+
+@deftypefun {void} rl_deactivate_mark (void)
+Turn off the active mark.
+@end deftypefun
+
+@deftypefun {void} rl_keep_mark_active (void)
+Indicate that the mark should remain active when the current readline function
+completes and after redisplay occurs.
+In most cases, the mark remains active for only the duration of a single
+bindable readline function.
+@end deftypefun
+
+@deftypefun {int} rl_mark_active_p (void)
+Return a non-zero value if the mark is currently active; zero otherwise.
+@end deftypefun
+
@node Alternate Interface
@subsection Alternate Interface
@@ -1733,8 +1756,8 @@ to determine whether or not there are any pending signals.
If an application does not wish Readline to catch @code{SIGWINCH}, it may
call @code{rl_resize_terminal()} or @code{rl_set_screen_size()} to force
-Readline to update its idea of the terminal size when a @code{SIGWINCH}
-is received.
+Readline to update its idea of the terminal size when it receives
+a @code{SIGWINCH}.
@deftypefun void rl_echo_signal_char (int sig)
If an application wishes to install its own signal handlers, but still
@@ -1751,11 +1774,14 @@ Update Readline's internal screen size by reading values from the kernel.
Set Readline's idea of the terminal size to @var{rows} rows and
@var{cols} columns. If either @var{rows} or @var{columns} is less than
or equal to 0, Readline's idea of that terminal dimension is unchanged.
+This is intended to tell Readline the physical dimensions of the terminal,
+and is used internally to calculate the maximum number of characters that
+may appear on a single line and on the screen.
@end deftypefun
If an application does not want to install a @code{SIGWINCH} handler, but
-is still interested in the screen dimensions, Readline's idea of the screen
-size may be queried.
+is still interested in the screen dimensions, it may query Readline's idea
+of the screen size.
@deftypefun void rl_get_screen_size (int *rows, int *cols)
Return Readline's idea of the terminal's size in the
@@ -2039,7 +2065,7 @@ remove any quote characters from the directory name, because its result will
be passed directly to @code{opendir()}.
The directory rewrite hook returns an integer that should be non-zero if
-the function modfies its directory argument.
+the function modifies its directory argument.
The function should not modify the directory argument if it returns 0.
@end deftypevar
@@ -2051,7 +2077,7 @@ is passed to @code{stat()} to determine the file's type and characteristics.
This function does not need to remove quote characters from the filename.
The stat hook returns an integer that should be non-zero if
-the function modfies its directory argument.
+the function modifies its directory argument.
The function should not modify the directory argument if it returns 0.
@end deftypevar
@@ -2645,7 +2671,7 @@ com_help (arg)
if (!printed)
@{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
for (i = 0; commands[i].name; i++)
@{
diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi
index a59bd144..26b0ff07 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--2016 Free Software Foundation, Inc.
+Copyright (C) 1988--2020 Free Software Foundation, Inc.
Authored by Brian Fox and Chet Ramey.
@@ -350,6 +350,11 @@ file is taken from the value of the environment variable @env{INPUTRC}. If
that variable is unset, the default is @file{~/.inputrc}. If that
file does not exist or cannot be read, the ultimate default is
@file{/etc/inputrc}.
+@ifset BashFeatures
+The @w{@code{bind}} builtin command can also be used to set Readline
+keybindings and variables.
+@xref{Bash Builtins}.
+@end ifset
When a program which uses the Readline library starts up, the
init file is read, and the key bindings are set.
@@ -488,9 +493,9 @@ replaced with an ellipsis when displaying possible completions.
@vindex 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.
+If the number of possible completions is greater than or equal to this value,
+Readline will ask whether or not the user wishes to view them;
+otherwise, they are simply listed.
This variable must be set to an integer value greater than or equal to 0.
A negative value means Readline should never ask.
The default limit is @code{100}.
@@ -541,7 +546,7 @@ 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}.
+from being interpreted as editing commands. The default is @samp{On}.
@item enable-keypad
@vindex enable-keypad
@@ -583,8 +588,9 @@ the maximum number of history entries will be set to 500.
This variable can be set to either @samp{on} or @samp{off}. Setting it
to @samp{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 @samp{off}.
+of the screen, instead of wrapping onto a new screen line.
+This variable is automatically set to @samp{on} for terminals of height 1.
+By default, this variable is set to @samp{off}.
@item input-meta
@vindex input-meta
@@ -1109,8 +1115,8 @@ set convert-meta off
# 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
+# if there are 150 or more possible completions for a word,
+# ask whether or not the user wants to see all of them
set completion-query-items 150
# For FTP
@@ -1173,11 +1179,11 @@ Move back to the start of the current or previous word.
Words are composed of letters and digits.
@ifset BashFeatures
-@item shell-forward-word ()
+@item shell-forward-word (M-C-f)
Move forward to the end of the next word.
Words are delimited by non-quoted shell metacharacters.
-@item shell-backward-word ()
+@item shell-backward-word (M-C-b)
Move back to the start of the current or previous word.
Words are delimited by non-quoted shell metacharacters.
@end ifset
@@ -1195,8 +1201,14 @@ Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
+@item clear-display (M-C-l)
+Clear the screen and, if possible, the terminal's scrollback buffer,
+then redraw the current line,
+leaving the current line at the top of the screen.
+
@item clear-screen (C-l)
-Clear the screen and redraw the current line,
+Clear the screen,
+then redraw the current line,
leaving the current line at the top of the screen.
@item redraw-current-line ()
@@ -1242,10 +1254,12 @@ being entered.
@item reverse-search-history (C-r)
Search backward starting at the current line and moving `up' through
the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
@item forward-search-history (C-s)
Search forward starting at the current line and moving `down' through
the history as necessary. This is an incremental search.
+This command sets the region to the matched text and activates the mark.
@item non-incremental-reverse-search-history (M-p)
Search backward starting at the current line and moving `up'
@@ -1310,6 +1324,14 @@ the direction through the history (back or forward).
The history expansion facilities are used to extract the last argument,
as if the @samp{!$} history expansion had been specified.
+@item operate-and-get-next (C-o)
+Accept the current line for return to the calling application as if a
+newline had been entered,
+and fetch the next line relative to the current line from the history
+for editing.
+A numeric argument, if supplied, specifies the history entry to use instead
+of the current line.
+
@end ftable
@node Commands For Text
@@ -1357,6 +1379,11 @@ 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.
+Bracketed paste sets the region (the characters between point and the mark)
+to the inserted text. It uses the concept of an @emph{active mark}: when the
+mark is active, Readline redisplay uses the terminal's standout mode to
+denote the region.
+
@item transpose-chars (C-t)
Drag the character before the cursor forward over
the character at the cursor, moving the
@@ -1406,9 +1433,13 @@ By default, this command is unbound.
@item kill-line (C-k)
Kill the text from point to the end of the line.
+With a negative numeric argument, kill backward from the cursor to the
+beginning of the current line.
@item backward-kill-line (C-x Rubout)
Kill backward from the cursor to the beginning of the current line.
+With a negative numeric argument, kill forward from the cursor to the
+end of the current line.
@item unix-line-discard (C-u)
Kill backward from the cursor to the beginning of the current line.
@@ -1427,7 +1458,7 @@ Kill the word behind point.
Word boundaries are the same as @code{backward-word}.
@ifset BashFeatures
-@item shell-kill-word ()
+@item shell-kill-word (M-C-d)
Kill from point to the end of the current word, or if between
words, to the end of the next word.
Word boundaries are the same as @code{shell-forward-word}.
@@ -1437,6 +1468,14 @@ Kill the word behind point.
Word boundaries are the same as @code{shell-backward-word}.
@end ifset
+@item shell-transpose-words (M-C-t)
+Drag the word before point past the word after point,
+moving point past that word as well.
+If the insertion point is at the end of the line, this transposes
+the last two words on the line.
+Word boundaries are the same as @code{shell-forward-word} and
+@code{shell-backward-word}.
+
@item 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.
@@ -1774,12 +1813,6 @@ Perform history and alias expansion on the current line.
@item insert-last-argument (M-. or M-_)
A synonym for @code{yank-last-arg}.
-@item operate-and-get-next (C-o)
-Accept the current line for execution and fetch the next line
-relative to the current line from the history for editing.
-A numeric argument, if supplied, specifies the history entry to use instead
-of the current line.
-
@item edit-and-execute-command (C-x C-e)
Invoke an editor on the current command line, and execute the result as shell
commands.
@@ -2044,7 +2077,7 @@ The @option{-E} option indicates that other supplied options and actions should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The @option{-I} option indicates that other supplied options and actions should
-apply to completion on the inital non-assignment word on the line, or after a
+apply to completion on the initial non-assignment word on the line, or after a
command delimiter such as @samp{;} or @samp{|}, which is usually command
name completion.
If multiple options are supplied, the @option{-D} option takes precedence
@@ -2255,7 +2288,7 @@ The @option{-E} option indicates that other supplied options should
apply to ``empty'' command completion; that is, completion attempted on a
blank line.
The @option{-I} option indicates that other supplied options should
-apply to completion on the inital non-assignment word on the line, or after a
+apply to completion on the initial non-assignment word on the line, or after a
command delimiter such as @samp{;} or @samp{|}, which is usually command
name completion.
@@ -2370,7 +2403,7 @@ character to the directory name, in case we want to append to it.
The @option{-o bashdefault} option brings in the rest of the "Bash default"
completions -- possible completion that Bash adds to the default Readline
set. These include things like command name completion, variable completion
-for words beginning with @samp{@{}, completions containing pathname
+for words beginning with @samp{$} or @samp{$@{}, completions containing pathname
expansion patterns (@pxref{Filename Expansion}), and so on.
Once installed using @code{complete}, @code{_comp_cd} will be called every
@@ -2380,7 +2413,7 @@ 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 @url{http://bash-completion.alioth.debian.org/}. There are ports for
+at @url{https://github.com/scop/bash-completion/}. 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
diff --git a/lib/readline/doc/rluserman.texi b/lib/readline/doc/rluserman.texi
index b5754389..6e8e848b 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--2016 Free Software Foundation, Inc.
+Copyright @copyright{} 1988--2020 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 576c35c8..abb9cb6b 100644
--- a/lib/readline/doc/version.texi
+++ b/lib/readline/doc/version.texi
@@ -1,10 +1,10 @@
@ignore
-Copyright (C) 1988-2018 Free Software Foundation, Inc.
+Copyright (C) 1988-2020 Free Software Foundation, Inc.
@end ignore
-@set EDITION 8.0
-@set VERSION 8.0
-@set UPDATED 30 November 2018
-@set UPDATED-MONTH November 2018
+@set EDITION 8.1
+@set VERSION 8.1
+@set UPDATED 29 October 2020
+@set UPDATED-MONTH October 2020
-@set LASTCHANGE Fri Nov 30 22:50:53 EST 2018
+@set LASTCHANGE Thu Oct 29 16:49:01 EDT 2020
diff --git a/lib/readline/emacs_keymap.c b/lib/readline/emacs_keymap.c
index b5e53f49..02597dad 100644
--- a/lib/readline/emacs_keymap.c
+++ b/lib/readline/emacs_keymap.c
@@ -47,7 +47,7 @@ KEYMAP_ENTRY_ARRAY emacs_standard_keymap = {
{ ISFUNC, rl_clear_screen }, /* Control-l */
{ ISFUNC, rl_newline }, /* Control-m */
{ ISFUNC, rl_get_next_history }, /* Control-n */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Control-o */
+ { ISFUNC, rl_operate_and_get_next }, /* Control-o */
{ ISFUNC, rl_get_previous_history }, /* Control-p */
{ ISFUNC, rl_quoted_insert }, /* Control-q */
{ ISFUNC, rl_reverse_search_history }, /* Control-r */
@@ -327,7 +327,7 @@ KEYMAP_ENTRY_ARRAY emacs_meta_keymap = {
{ ISFUNC, rl_tab_insert }, /* Meta-Control-i */
{ ISFUNC, rl_vi_editing_mode }, /* Meta-Control-j */
{ ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-k */
- { ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-l */
+ { ISFUNC, rl_clear_display }, /* Meta-Control-l */
{ ISFUNC, rl_vi_editing_mode }, /* Meta-Control-m */
{ ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-n */
{ ISFUNC, (rl_command_func_t *)0x0 }, /* Meta-Control-o */
diff --git a/lib/readline/examples/fileman.c b/lib/readline/examples/fileman.c
index c821df03..2a8b097a 100644
--- a/lib/readline/examples/fileman.c
+++ b/lib/readline/examples/fileman.c
@@ -377,11 +377,11 @@ com_stat (arg)
printf ("Statistics for `%s':\n", arg);
- printf ("%s has %d link%s, and is %d byte%s in length.\n",
+ printf ("%s has %d link%s, and is %lu byte%s in length.\n",
arg,
finfo.st_nlink,
(finfo.st_nlink == 1) ? "" : "s",
- finfo.st_size,
+ (unsigned long)finfo.st_size,
(finfo.st_size == 1) ? "" : "s");
printf ("Inode Last Change at: %s", ctime (&finfo.st_ctime));
printf (" Last access at: %s", ctime (&finfo.st_atime));
@@ -417,7 +417,7 @@ com_help (arg)
if (!printed)
{
- printf ("No commands match `%s'. Possibilties are:\n", arg);
+ printf ("No commands match `%s'. Possibilities are:\n", arg);
for (i = 0; commands[i].name; i++)
{
diff --git a/lib/readline/examples/rltest.c b/lib/readline/examples/rltest.c
index 78e26086..65abe87c 100644
--- a/lib/readline/examples/rltest.c
+++ b/lib/readline/examples/rltest.c
@@ -46,6 +46,7 @@ extern void exit();
extern HIST_ENTRY **history_list ();
+int
main ()
{
char *temp, *prompt;
diff --git a/lib/readline/funmap.c b/lib/readline/funmap.c
index aaf144de..eca49a3e 100644
--- a/lib/readline/funmap.c
+++ b/lib/readline/funmap.c
@@ -1,6 +1,6 @@
/* funmap.c -- attach names to functions. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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,6 +73,7 @@ static const FUNMAP default_funmap[] = {
{ "capitalize-word", rl_capitalize_word },
{ "character-search", rl_char_search },
{ "character-search-backward", rl_backward_char_search },
+ { "clear-display", rl_clear_display },
{ "clear-screen", rl_clear_screen },
{ "complete", rl_complete },
{ "copy-backward-word", rl_copy_backward_word },
@@ -116,6 +117,7 @@ static const FUNMAP default_funmap[] = {
{ "non-incremental-forward-search-history-again", rl_noninc_forward_search_again },
{ "non-incremental-reverse-search-history-again", rl_noninc_reverse_search_again },
{ "old-menu-complete", rl_old_menu_complete },
+ { "operate-and-get-next", rl_operate_and_get_next },
{ "overwrite-mode", rl_overwrite_mode },
#if defined (_WIN32)
{ "paste-from-clipboard", rl_paste_from_clipboard },
@@ -157,7 +159,7 @@ static const FUNMAP default_funmap[] = {
{ "vi-backward-bigword", rl_vi_bWord },
{ "vi-backward-word", rl_vi_bword },
{ "vi-bWord", rl_vi_bWord },
- { "vi-bword", rl_vi_bword },
+ { "vi-bword", rl_vi_bword }, /* BEWARE: name matching is case insensitive */
{ "vi-change-case", rl_vi_change_case },
{ "vi-change-char", rl_vi_change_char },
{ "vi-change-to", rl_vi_change_to },
@@ -171,13 +173,13 @@ static const FUNMAP default_funmap[] = {
{ "vi-end-bigword", rl_vi_eWord },
{ "vi-end-word", rl_vi_end_word },
{ "vi-eof-maybe", rl_vi_eof_maybe },
- { "vi-eword", rl_vi_eword },
+ { "vi-eword", rl_vi_eword }, /* BEWARE: name matching is case insensitive */
{ "vi-fWord", rl_vi_fWord },
{ "vi-fetch-history", rl_vi_fetch_history },
{ "vi-first-print", rl_vi_first_print },
{ "vi-forward-bigword", rl_vi_fWord },
{ "vi-forward-word", rl_vi_fword },
- { "vi-fword", rl_vi_fword },
+ { "vi-fword", rl_vi_fword }, /* BEWARE: name matching is case insensitive */
{ "vi-goto-mark", rl_vi_goto_mark },
{ "vi-insert-beg", rl_vi_insert_beg },
{ "vi-insertion-mode", rl_vi_insert_mode },
diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c
index adcf5dcb..b986dba0 100644
--- a/lib/readline/histexpand.c
+++ b/lib/readline/histexpand.c
@@ -89,7 +89,7 @@ char history_expansion_char = '!';
char history_subst_char = '^';
/* During tokenization, if this character is seen as the first character
- of a word, then it, and all subsequent characters upto a newline are
+ of a word, then it, and all subsequent characters up to a newline are
ignored. For a Bourne shell, this should be '#'. Bash special cases
the interactive comment character to not be a comment delimiter. */
char history_comment_char = '\0';
@@ -180,7 +180,7 @@ get_history_event (const char *string, int *caller_index, int delimiting_quote)
}
/* Hack case of numeric line specification. */
- if (string[i] == '-')
+ if (string[i] == '-' && _rl_digit_p (string[i+1]))
{
sign = -1;
i++;
@@ -230,10 +230,12 @@ get_history_event (const char *string, int *caller_index, int 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)) ||
+ if ((!substring_okay &&
+ (whitespace (c) || c == ':' ||
+ (i > local_index && history_event_delimiter_chars && 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' ||
(substring_okay && string[i] == '?'))
break;
@@ -409,7 +411,10 @@ hist_error(char *s, int start, int current, int errtype)
}
temp = (char *)xmalloc (ll + elen + 3);
- strncpy (temp, s + start, ll);
+ if (s[start])
+ strncpy (temp, s + start, ll);
+ else
+ ll = 0;
temp[ll] = ':';
temp[ll + 1] = ' ';
strcpy (temp + ll + 2, emsg);
@@ -624,7 +629,7 @@ history_expand_internal (char *string, int start, int qc, int *end_index_ptr, ch
return an error state after adding this line to the
history. */
case 'p':
- print_only++;
+ print_only = 1;
break;
/* :t discards all but the last part of the pathname. */
@@ -1356,6 +1361,11 @@ get_history_word_specifier (char *spec, char *from, int *caller_index)
i++;
last = '$';
}
+ else if (spec[i] == '^')
+ {
+ i++;
+ last = 1;
+ }
#if 0
else if (!spec[i] || spec[i] == ':')
/* check against `:' because there could be a modifier separator */
diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c
index 6c3adc9b..f0fa5ce1 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-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2019 Free Software Foundation, Inc.
This file contains the GNU History Library (History), a set of
routines for managing the text of previously typed lines.
@@ -26,6 +26,8 @@
#define READLINE_LIBRARY
#if defined (__TANDEM)
+# define _XOPEN_SOURCE_EXTENDED 1
+# include <unistd.h>
# include <floss.h>
#endif
@@ -79,6 +81,11 @@
#endif /* HISTORY_USE_MMAP */
+#if defined(_WIN32)
+# define WIN32_LEAN_AND_MEAN
+# include <windows.h>
+#endif
+
/* If we're compiling for __EMX__ (OS/2) or __CYGWIN__ (cygwin32 environment
on win 95/98/nt), we want to open files with O_BINARY mode so that there
is no \n -> \r\n conversion performed. On other systems, we don't want to
@@ -138,6 +145,7 @@ static char *history_backupfile PARAMS((const char *));
static char *history_tempfile PARAMS((const char *));
static int histfile_backup PARAMS((const char *, const char *));
static int histfile_restore PARAMS((const char *, const char *));
+static int history_rename PARAMS((const char *, const char *));
/* Return the string that should be used in the place of this
filename. This only matters when you don't specify the
@@ -449,6 +457,18 @@ read_history_range (const char *filename, int from, int to)
return (0);
}
+/* We need a special version for WIN32 because Windows rename() refuses to
+ overwrite an existing file. */
+static int
+history_rename (const char *old, const char *new)
+{
+#if defined (_WIN32)
+ return (MoveFileEx (old, new, MOVEFILE_REPLACE_EXISTING) == 0 ? -1 : 0);
+#else
+ return (rename (old, new));
+#endif
+}
+
/* Save FILENAME to BACK, handling case where FILENAME is a symlink
(e.g., ~/.bash_history -> .histfiles/.bash_history.$HOSTNAME) */
static int
@@ -462,10 +482,10 @@ histfile_backup (const char *filename, const char *back)
if ((n = readlink (filename, linkbuf, sizeof (linkbuf) - 1)) > 0)
{
linkbuf[n] = '\0';
- return (rename (linkbuf, back));
+ return (history_rename (linkbuf, back));
}
#endif
- return (rename (filename, back));
+ return (history_rename (filename, back));
}
/* Restore ORIG from BACKUP handling case where ORIG is a symlink
@@ -481,12 +501,18 @@ histfile_restore (const char *backup, const char *orig)
if ((n = readlink (orig, linkbuf, sizeof (linkbuf) - 1)) > 0)
{
linkbuf[n] = '\0';
- return (rename (backup, linkbuf));
+ return (history_rename (backup, linkbuf));
}
#endif
- return (rename (backup, orig));
+ return (history_rename (backup, orig));
}
+/* Should we call chown, based on whether finfo and nfinfo describe different
+ files with different owners? */
+
+#define SHOULD_CHOWN(finfo, nfinfo) \
+ (finfo.st_uid != nfinfo.st_uid || finfo.st_gid != nfinfo.st_gid)
+
/* Truncate the history file FNAME, leaving only LINES trailing lines.
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. */
@@ -495,7 +521,7 @@ history_truncate_file (const char *fname, int lines)
{
char *buffer, *filename, *tempname, *bp, *bp1; /* bp1 == bp+1 */
int file, chars_read, rv, orig_lines, exists, r;
- struct stat finfo;
+ struct stat finfo, nfinfo;
size_t file_size;
history_lines_written_to_file = 0;
@@ -516,6 +542,9 @@ history_truncate_file (const char *fname, int lines)
}
exists = 1;
+ nfinfo.st_uid = finfo.st_uid;
+ nfinfo.st_gid = finfo.st_gid;
+
if (S_ISREG (finfo.st_mode) == 0)
{
close (file);
@@ -604,6 +633,9 @@ history_truncate_file (const char *fname, int lines)
if (write (file, bp, chars_read - (bp - buffer)) < 0)
rv = errno;
+ if (fstat (file, &nfinfo) < 0 && rv == 0)
+ rv = errno;
+
if (close (file) < 0 && rv == 0)
rv = errno;
}
@@ -620,6 +652,7 @@ history_truncate_file (const char *fname, int lines)
if (rv != 0)
{
+ rv = errno;
if (tempname)
unlink (tempname);
history_lines_written_to_file = 0;
@@ -630,7 +663,7 @@ history_truncate_file (const char *fname, int lines)
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)
+ if (rv == 0 && exists && SHOULD_CHOWN (finfo, nfinfo))
r = chown (filename, finfo.st_uid, finfo.st_gid);
#endif
@@ -649,7 +682,7 @@ history_do_write (const char *filename, int nelements, int overwrite)
register int i;
char *output, *tempname, *histname;
int file, mode, rv, exists;
- struct stat finfo;
+ struct stat finfo, nfinfo;
#ifdef HISTORY_USE_MMAP
size_t cursize;
@@ -694,15 +727,11 @@ history_do_write (const char *filename, int nelements, int overwrite)
the_history = history_list ();
/* Calculate the total number of bytes to write. */
for (buffer_size = 0, i = history_length - nelements; i < history_length; i++)
-#if 0
- buffer_size += 2 + HISTENT_BYTES (the_history[i]);
-#else
{
if (history_write_timestamps && the_history[i]->timestamp && the_history[i]->timestamp[0])
buffer_size += strlen (the_history[i]->timestamp) + 1;
buffer_size += strlen (the_history[i]->line) + 1;
}
-#endif
/* Allocate the buffer, and fill it. */
#ifdef HISTORY_USE_MMAP
@@ -767,6 +796,7 @@ mmap_error:
if (rv != 0)
{
+ rv = errno;
if (tempname)
unlink (tempname);
history_lines_written_to_file = 0;
diff --git a/lib/readline/input.c b/lib/readline/input.c
index d4d57a81..61b0fde3 100644
--- a/lib/readline/input.c
+++ b/lib/readline/input.c
@@ -22,6 +22,8 @@
#define READLINE_LIBRARY
#if defined (__TANDEM)
+# define _XOPEN_SOURCE_EXTENDED 1
+# define _TANDEM_SOURCE 1
# include <floss.h>
#endif
@@ -347,8 +349,7 @@ _rl_input_available (void)
FD_ZERO (&exceptfds);
FD_SET (tty, &readfds);
FD_SET (tty, &exceptfds);
- timeout.tv_sec = 0;
- timeout.tv_usec = _keyboard_input_timeout;
+ USEC_TO_TIMEVAL (_keyboard_input_timeout, timeout);
return (select (tty + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout) > 0);
#else
@@ -368,6 +369,24 @@ _rl_input_available (void)
}
int
+_rl_nchars_available ()
+{
+ int chars_avail, fd, result;
+
+ chars_avail = 0;
+
+#if defined (FIONREAD)
+ fd = fileno (rl_instream);
+ errno = 0;
+ result = ioctl (fd, FIONREAD, &chars_avail);
+ if (result == -1 && errno == EIO)
+ return -1;
+#endif
+
+ return chars_avail;
+}
+
+int
_rl_input_queued (int t)
{
int old_timeout, r;
@@ -493,7 +512,7 @@ rl_read_key (void)
{
if (rl_get_char (&c) == 0)
c = (*rl_getc_function) (rl_instream);
-/* fprintf(stderr, "rl_read_key: calling RL_CHECK_SIGNALS: _rl_caught_signal = %d", _rl_caught_signal); */
+/* fprintf(stderr, "rl_read_key: calling RL_CHECK_SIGNALS: _rl_caught_signal = %d\r\n", _rl_caught_signal); */
RL_CHECK_SIGNALS ();
}
}
@@ -596,6 +615,10 @@ handle_error:
else if (_rl_caught_signal == SIGINT)
#endif
RL_CHECK_SIGNALS ();
+#if defined (SIGTSTP)
+ else if (_rl_caught_signal == SIGTSTP)
+ RL_CHECK_SIGNALS ();
+#endif
/* non-keyboard-generated signals of interest */
#if defined (SIGWINCH)
else if (_rl_caught_signal == SIGWINCH)
@@ -631,9 +654,7 @@ _rl_read_mbchar (char *mbchar, int size)
mb_len = 0;
while (mb_len < size)
{
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ c = (mb_len == 0) ? _rl_bracketed_read_key () : rl_read_key ();
if (c < 0)
break;
diff --git a/lib/readline/isearch.c b/lib/readline/isearch.c
index d6c59041..080ba3cb 100644
--- a/lib/readline/isearch.c
+++ b/lib/readline/isearch.c
@@ -6,7 +6,7 @@
/* */
/* **************************************************************** */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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.
@@ -185,11 +185,13 @@ rl_display_search (char *search_string, int flags, int where)
strcpy (message + msglen, "i-search)`");
msglen += 10;
- if (search_string)
+ if (search_string && *search_string)
{
strcpy (message + msglen, search_string);
msglen += searchlen;
}
+ else
+ _rl_optimize_redisplay ();
strcpy (message + msglen, "': ");
@@ -255,6 +257,9 @@ _rl_isearch_init (int direction)
_rl_iscxt = cxt; /* save globally */
+ /* experimental right now */
+ _rl_init_executing_keyseq ();
+
return cxt;
}
@@ -287,16 +292,22 @@ _rl_isearch_fini (_rl_search_cxt *cxt)
else
cxt->sline_index = strlen (rl_line_buffer);
rl_mark = cxt->save_mark;
+ rl_deactivate_mark ();
}
rl_point = cxt->sline_index;
/* Don't worry about where to put the mark here; rl_get_previous_history
- and rl_get_next_history take care of it. */
+ and rl_get_next_history take care of it.
+ If we want to highlight the search string, this is where to set the
+ point and mark to do it. */
_rl_fix_point (0);
+ rl_deactivate_mark ();
+/* _rl_optimize_redisplay (); */
rl_clear_message ();
}
+/* XXX - we could use _rl_bracketed_read_mbstring () here. */
int
_rl_search_getchar (_rl_search_cxt *cxt)
{
@@ -342,6 +353,24 @@ _rl_isearch_dispatch (_rl_search_cxt *cxt, int c)
return -1;
}
+ _rl_add_executing_keyseq (c);
+
+ /* XXX - experimental code to allow users to bracketed-paste into the search
+ string even when ESC is one of the isearch-terminators. Not perfect yet. */
+ if (_rl_enable_bracketed_paste && c == ESC && strchr (cxt->search_terminators, c) && (n = _rl_nchars_available ()) > (BRACK_PASTE_SLEN-1))
+ {
+ j = _rl_read_bracketed_paste_prefix (c);
+ if (j == 1)
+ {
+ cxt->lastc = -7; /* bracketed paste, see below */
+ goto opcode_dispatch;
+ }
+ else if (_rl_pushed_input_available ()) /* eat extra char we pushed back */
+ c = cxt->lastc = rl_read_key ();
+ else
+ c = cxt->lastc; /* last ditch */
+ }
+
/* If we are moving into a new keymap, modify cxt->keymap and go on.
This can be a problem if c == ESC and we want to terminate the
incremental search, so we check */
@@ -387,7 +416,18 @@ add_character:
/* Translate the keys we do something with to opcodes. */
if (c >= 0 && cxt->keymap[c].type == ISFUNC)
{
- f = cxt->keymap[c].function;
+ /* If we have a multibyte character, see if it's bound to something that
+ affects the search. */
+#if defined (HANDLE_MULTIBYTE)
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0 && cxt->mb[1])
+ f = rl_function_of_keyseq (cxt->mb, cxt->keymap, (int *)NULL);
+ else
+#endif
+ {
+ f = cxt->keymap[c].function;
+ if (f == rl_do_lowercase_version)
+ f = cxt->keymap[_rl_to_lower (c)].function;
+ }
if (f == rl_reverse_search_history)
cxt->lastc = (cxt->sflags & SF_REVERSE) ? -1 : -2;
@@ -454,9 +494,14 @@ add_character:
}
else if (cxt->lastc > 0 && cxt->prevc > 0 && f && f != rl_insert)
{
- rl_stuff_char (cxt->lastc);
- rl_execute_next (cxt->prevc);
- /* XXX - do we insert everything in cxt->pmb? */
+ _rl_term_executing_keyseq (); /* should this go in the caller? */
+
+ _rl_pending_command.map = cxt->keymap;
+ _rl_pending_command.count = 1; /* XXX */
+ _rl_pending_command.key = cxt->lastc;
+ _rl_pending_command.func = f;
+ _rl_command_to_execute = &_rl_pending_command;
+
return (0);
}
}
@@ -502,6 +547,9 @@ add_character:
return (0);
}
+ _rl_init_executing_keyseq ();
+
+opcode_dispatch:
/* Now dispatch on the character. `Opcodes' affect the search string or
state. Other characters are added to the string. */
switch (cxt->lastc)
@@ -519,6 +567,7 @@ add_character:
rl_display_search (cxt->search_string, cxt->sflags, -1);
break;
}
+ /* XXX - restore keymap here? */
return (1);
}
else if ((cxt->sflags & SF_REVERSE) && cxt->sline_index >= 0)
@@ -566,9 +615,11 @@ add_character:
rl_replace_line (cxt->lines[cxt->save_line], 0);
rl_point = cxt->save_point;
rl_mark = cxt->save_mark;
+ rl_deactivate_mark ();
rl_restore_prompt();
rl_clear_message ();
+ _rl_fix_point (1); /* in case save_line and save_point are out of sync */
return -1;
case -5: /* C-W */
@@ -632,6 +683,8 @@ add_character:
free (paste);
break;
}
+ if (_rl_enable_active_region)
+ rl_activate_mark ();
if (cxt->search_string_index + pastelen + 1 >= cxt->search_string_size)
{
cxt->search_string_size += pastelen + 2;
@@ -736,11 +789,15 @@ add_character:
cxt->sline_index = (cxt->sflags & SF_REVERSE) ? cxt->sline_len - cxt->search_string_index : 0;
}
+ /* reset the keymaps for the next time through the loop */
+ cxt->keymap = cxt->okeymap = _rl_keymap;
+
if (cxt->sflags & SF_FAILED)
{
/* We cannot find the search string. Ding the bell. */
rl_ding ();
cxt->history_pos = cxt->last_found_line;
+ rl_deactivate_mark ();
rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos);
return 1;
}
@@ -752,7 +809,11 @@ add_character:
{
cxt->prev_line_found = cxt->lines[cxt->history_pos];
rl_replace_line (cxt->lines[cxt->history_pos], 0);
+ if (_rl_enable_active_region)
+ rl_activate_mark ();
rl_point = cxt->sline_index;
+ if (rl_mark_active_p () && cxt->search_string_index > 0)
+ rl_mark = rl_point + cxt->search_string_index;
cxt->last_found_line = cxt->history_pos;
rl_display_search (cxt->search_string, cxt->sflags, (cxt->history_pos == cxt->save_line) ? -1 : cxt->history_pos);
}
diff --git a/lib/readline/kill.c b/lib/readline/kill.c
index cf8ca932..50c3fdea 100644
--- a/lib/readline/kill.c
+++ b/lib/readline/kill.c
@@ -1,6 +1,6 @@
/* kill.c -- kill ring management. */
-/* Copyright (C) 1994-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2020 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.
@@ -408,6 +408,7 @@ region_kill_internal (int delete)
_rl_copy_to_kill_ring (text, rl_point < rl_mark);
}
+ _rl_fix_point (1);
_rl_last_command_was_kill++;
return 0;
}
@@ -427,8 +428,8 @@ rl_kill_region (int count, int key)
npoint = (rl_point < rl_mark) ? rl_point : rl_mark;
r = region_kill_internal (1);
- _rl_fix_point (1);
rl_point = npoint;
+ _rl_fix_point (1);
return r;
}
@@ -605,7 +606,7 @@ rl_yank_nth_arg_internal (int count, int key, int history_skip)
#if defined (VI_MODE)
/* Vi mode always inserts a space before yanking the argument, and it
inserts it right *after* rl_point. */
- if (rl_editing_mode == vi_mode)
+ if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap)
{
rl_vi_append_mode (1, key);
rl_insert_text (" ");
@@ -668,8 +669,7 @@ rl_yank_last_arg (int count, int key)
/* 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. */
+ closing sequence and return the pasted text. */
char *
_rl_bracketed_text (size_t *lenp)
{
@@ -715,6 +715,10 @@ _rl_bracketed_text (size_t *lenp)
return (buf);
}
+/* 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. Temporarily highlight the inserted text. */
int
rl_bracketed_paste_begin (int count, int key)
{
@@ -723,12 +727,108 @@ rl_bracketed_paste_begin (int count, int key)
char *buf;
buf = _rl_bracketed_text (&len);
+ rl_mark = rl_point;
retval = rl_insert_text (buf) == len ? 0 : 1;
+ if (_rl_enable_active_region)
+ rl_activate_mark ();
xfree (buf);
return (retval);
}
+int
+_rl_read_bracketed_paste_prefix (int c)
+{
+ char pbuf[BRACK_PASTE_SLEN+1], *pbpref;
+ int key, ind, j;
+
+ pbpref = BRACK_PASTE_PREF; /* XXX - debugging */
+ if (c != pbpref[0])
+ return (0);
+ pbuf[ind = 0] = c;
+ while (ind < BRACK_PASTE_SLEN-1 &&
+ (RL_ISSTATE (RL_STATE_INPUTPENDING|RL_STATE_MACROINPUT) == 0) &&
+ _rl_pushed_input_available () == 0 &&
+ _rl_input_queued (0))
+ {
+ key = rl_read_key (); /* XXX - for now */
+ if (key < 0)
+ break;
+ pbuf[++ind] = key;
+ if (pbuf[ind] != pbpref[ind])
+ break;
+ }
+
+ if (ind < BRACK_PASTE_SLEN-1) /* read incomplete sequence */
+ {
+ while (ind >= 0)
+ _rl_unget_char (pbuf[ind--]);
+ return (key < 0 ? key : 0);
+ }
+ return (key < 0 ? key : 1);
+}
+
+/* Get a character from wherever we read input, handling input in bracketed
+ paste mode. If we don't have or use bracketed paste mode, this can be
+ used in place of rl_read_key(). */
+int
+_rl_bracketed_read_key ()
+{
+ int c, r;
+ char *pbuf;
+ size_t pblen;
+
+ RL_SETSTATE(RL_STATE_MOREINPUT);
+ c = rl_read_key ();
+ RL_UNSETSTATE(RL_STATE_MOREINPUT);
+
+ if (c < 0)
+ return -1;
+
+ /* read pasted data with bracketed-paste mode enabled. */
+ if (_rl_enable_bracketed_paste && c == ESC && (r = _rl_read_bracketed_paste_prefix (c)) == 1)
+ {
+ pbuf = _rl_bracketed_text (&pblen);
+ if (pblen == 0)
+ {
+ xfree (pbuf);
+ return 0; /* XXX */
+ }
+ c = (unsigned char)pbuf[0];
+ if (pblen > 1)
+ {
+ while (--pblen > 0)
+ _rl_unget_char ((unsigned char)pbuf[pblen]);
+ }
+ xfree (pbuf);
+ }
+
+ return c;
+}
+
+/* Get a character from wherever we read input, handling input in bracketed
+ paste mode. If we don't have or use bracketed paste mode, this can be
+ used in place of rl_read_key(). */
+int
+_rl_bracketed_read_mbstring (char *mb, int mlen)
+{
+ int c, r;
+
+ c = _rl_bracketed_read_key ();
+ if (c < 0)
+ return -1;
+
+#if defined (HANDLE_MULTIBYTE)
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ c = _rl_read_mbstring (c, mb, mlen);
+ else
+#endif
+ mb[0] = c;
+ mb[mlen] = '\0'; /* just in case */
+
+ return c;
+}
+
/* A special paste command for Windows users. */
#if defined (_WIN32)
#include <windows.h>
diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c
index 17716357..dc62b4cc 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 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.
@@ -86,7 +86,7 @@ int _rl_utf8locale = 0;
static int
_rl_utf8_mblen (const char *s, size_t n)
{
- unsigned char c, c1;
+ unsigned char c, c1, c2, c3;
if (s == 0)
return (0); /* no shift states */
@@ -101,25 +101,46 @@ _rl_utf8_mblen (const char *s, size_t n)
c1 = (unsigned char)s[1];
if (c < 0xe0)
{
- if (n >= 2 && (s[1] ^ 0x80) < 0x40)
+ if (n == 1)
+ return -2;
+ if (n >= 2 && (c1 ^ 0x80) < 0x40)
return 2;
}
else if (c < 0xf0)
{
- if (n >= 3
- && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ if (n == 1)
+ return -2;
+ if ((c1 ^ 0x80) < 0x40
&& (c >= 0xe1 || c1 >= 0xa0)
&& (c != 0xed || c1 < 0xa0))
- return 3;
+ {
+ if (n == 2)
+ return -2;
+ c2 = (unsigned char)s[2];
+ if ((c2 ^ 0x80) < 0x40)
+ return 3;
+ }
}
- else if (c < 0xf8)
+ else if (c < 0xf4)
{
- if (n >= 4
- && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
+ if (n == 1)
+ return -2;
+ if (((c1 ^ 0x80) < 0x40)
&& (c >= 0xf1 || c1 >= 0x90)
&& (c < 0xf4 || (c == 0xf4 && c1 < 0x90)))
- return 4;
+ {
+ if (n == 2)
+ return -2;
+ c2 = (unsigned char)s[2];
+ if ((c2 ^ 0x80) < 0x40)
+ {
+ if (n == 3)
+ return -2;
+ c3 = (unsigned char)s[3];
+ if ((c3 ^ 0x80) < 0x40)
+ return 4;
+ }
+ }
}
}
/* invalid or incomplete multibyte character */
@@ -206,6 +227,66 @@ _rl_find_next_mbchar_internal (char *string, int seed, int count, int find_non_z
return point;
}
+static inline int
+_rl_test_nonzero (char *string, int ind, int len)
+{
+ size_t tmp;
+ wchar_t wc;
+ mbstate_t ps;
+
+ memset (&ps, 0, sizeof (mbstate_t));
+ tmp = mbrtowc (&wc, string + ind, len - ind, &ps);
+ /* treat invalid multibyte sequences as non-zero-width */
+ return (MB_INVALIDCH (tmp) || MB_NULLWCH (tmp) || WCWIDTH (wc) > 0);
+}
+
+/* experimental -- needs to handle zero-width characters better */
+static int
+_rl_find_prev_utf8char (char *string, int seed, int find_non_zero)
+{
+ char *s;
+ unsigned char b;
+ int save, prev;
+ size_t len;
+
+ if (find_non_zero)
+ len = RL_STRLEN (string);
+
+ prev = seed - 1;
+ while (prev >= 0)
+ {
+ b = (unsigned char)string[prev];
+ if (UTF8_SINGLEBYTE (b))
+ return (prev);
+
+ save = prev;
+
+ /* Move back until we're not in the middle of a multibyte char */
+ if (UTF8_MBCHAR (b))
+ {
+ while (prev > 0 && (b = (unsigned char)string[--prev]) && UTF8_MBCHAR (b))
+ ;
+ }
+
+ if (UTF8_MBFIRSTCHAR (b))
+ {
+ if (find_non_zero)
+ {
+ if (_rl_test_nonzero (string, prev, len))
+ return (prev);
+ else /* valid but WCWIDTH (wc) == 0 */
+ prev = prev - 1;
+ }
+ else
+ return (prev);
+ }
+ else
+ return (save); /* invalid utf-8 multibyte sequence */
+ }
+
+ return ((prev < 0) ? 0 : prev);
+}
+
/*static*/ int
_rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
{
@@ -214,6 +295,9 @@ _rl_find_prev_mbchar_internal (char *string, int seed, int find_non_zero)
size_t tmp;
wchar_t wc;
+ if (_rl_utf8locale)
+ return (_rl_find_prev_utf8char (string, seed, find_non_zero));
+
memset(&ps, 0, sizeof(mbstate_t));
length = strlen(string);
diff --git a/lib/readline/misc.c b/lib/readline/misc.c
index 42005b0c..3d9a674c 100644
--- a/lib/readline/misc.c
+++ b/lib/readline/misc.c
@@ -1,6 +1,6 @@
/* misc.c -- miscellaneous bindable readline functions. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2019 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.
@@ -138,9 +138,7 @@ _rl_arg_dispatch (_rl_arg_cxt cxt, int c)
}
else
{
- RL_SETSTATE(RL_STATE_MOREINPUT);
- key = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
+ key = _rl_bracketed_read_key ();
rl_restore_prompt ();
rl_clear_message ();
RL_UNSETSTATE(RL_STATE_NUMERICARG);
@@ -435,7 +433,7 @@ rl_replace_from_history (HIST_ENTRY *entry, int flags)
intended to be called while actively editing, and the current line is
not assumed to have been added to the history list. */
void
-_rl_revert_all_lines (void)
+_rl_revert_previous_lines (void)
{
int hpos;
HIST_ENTRY *entry;
@@ -479,6 +477,19 @@ _rl_revert_all_lines (void)
xfree (lbuf);
}
+/* Revert all lines in the history by making sure we are at the end of the
+ history before calling _rl_revert_previous_lines() */
+void
+_rl_revert_all_lines (void)
+{
+ int pos;
+
+ pos = where_history ();
+ using_history ();
+ _rl_revert_previous_lines ();
+ history_set_pos (pos);
+}
+
/* Free the history list, including private readline data and take care
of pointer aliases to history data. Resets rl_undo_list if it points
to an UNDO_LIST * saved as some history entry's data member. This
@@ -626,6 +637,48 @@ rl_get_previous_history (int count, int key)
return 0;
}
+/* The equivalent of the Korn shell C-o operate-and-get-next-history-line
+ editing command. */
+
+/* This could stand to be global to the readline library */
+static rl_hook_func_t *_rl_saved_internal_startup_hook = 0;
+static int saved_history_logical_offset = -1;
+
+#define HISTORY_FULL() (history_is_stifled () && history_length >= history_max_entries)
+
+static int
+set_saved_history ()
+{
+ int absolute_offset, count;
+
+ if (saved_history_logical_offset >= 0)
+ {
+ absolute_offset = saved_history_logical_offset - history_base;
+ count = where_history () - absolute_offset;
+ rl_get_previous_history (count, 0);
+ }
+ saved_history_logical_offset = -1;
+ _rl_internal_startup_hook = _rl_saved_internal_startup_hook;
+
+ return (0);
+}
+
+int
+rl_operate_and_get_next (count, c)
+ int count, c;
+{
+ /* Accept the current line. */
+ rl_newline (1, c);
+
+ saved_history_logical_offset = rl_explicit_arg ? count : where_history () + history_base + 1;
+
+
+ _rl_saved_internal_startup_hook = _rl_internal_startup_hook;
+ _rl_internal_startup_hook = set_saved_history;
+
+ return 0;
+}
+
/* **************************************************************** */
/* */
/* Editing Modes */
diff --git a/lib/readline/posixdir.h b/lib/readline/posixdir.h
index 0921c5d7..af5be801 100644
--- a/lib/readline/posixdir.h
+++ b/lib/readline/posixdir.h
@@ -46,7 +46,7 @@
# define D_NAMLEN(d) ((d)->d_namlen)
#endif /* !HAVE_DIRENT_H */
-/* The bash code fairly consistenly uses d_fileno; make sure it's available */
+/* The bash code fairly consistently uses d_fileno; make sure it's available */
#if defined (HAVE_STRUCT_DIRENT_D_INO) && !defined (HAVE_STRUCT_DIRENT_D_FILENO)
# define d_fileno d_ino
#endif
diff --git a/lib/readline/posixstat.h b/lib/readline/posixstat.h
index 3eb7f290..b6077860 100644
--- a/lib/readline/posixstat.h
+++ b/lib/readline/posixstat.h
@@ -1,7 +1,7 @@
/* posixstat.h -- Posix stat(2) definitions for systems that
don't have them. */
-/* Copyright (C) 1987,1991 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -132,6 +132,26 @@
# define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+#else /* !S_IRWXU */
+ /* S_IRWXU is defined, but "group" and "other" bits might not be
+ (happens in certain versions of MinGW). */
+# if !defined (S_IRGRP)
+# define S_IRGRP (S_IREAD >> 3) /* read, group */
+# define S_IWGRP (S_IWRITE >> 3) /* write, group */
+# define S_IXGRP (S_IEXEC >> 3) /* execute, group */
+# endif /* !S_IRGRP */
+
+# if !defined (S_IROTH)
+# define S_IROTH (S_IREAD >> 6) /* read, other */
+# define S_IWOTH (S_IWRITE >> 6) /* write, other */
+# define S_IXOTH (S_IEXEC >> 6) /* execute, other */
+# endif /* !S_IROTH */
+# if !defined (S_IRWXG)
+# define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
+# endif
+# if !defined (S_IRWXO)
+# define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
+# endif
#endif /* !S_IRWXU */
/* These are non-standard, but are used in builtins.c$symbolic_umask() */
diff --git a/lib/readline/readline.c b/lib/readline/readline.c
index 678f989c..e61d188b 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -73,11 +73,11 @@ extern int errno;
#include "xmalloc.h"
#ifndef RL_LIBRARY_VERSION
-# define RL_LIBRARY_VERSION "5.1"
+# define RL_LIBRARY_VERSION "8.0"
#endif
#ifndef RL_READLINE_VERSION
-# define RL_READLINE_VERSION 0x0501
+# define RL_READLINE_VERSION 0x0800
#endif
extern void _rl_free_history_entry PARAMS((HIST_ENTRY *));
@@ -199,6 +199,10 @@ int rl_key_sequence_length = 0;
before readline_internal_setup () prints the first prompt. */
rl_hook_func_t *rl_startup_hook = (rl_hook_func_t *)NULL;
+/* Any readline function can set this and have it run just before the user's
+ rl_startup_hook. */
+rl_hook_func_t *_rl_internal_startup_hook = (rl_hook_func_t *)NULL;
+
/* If non-zero, this is the address of a function to call just before
readline_internal_setup () returns and readline_internal starts
reading input characters. */
@@ -258,6 +262,9 @@ int rl_executing_key;
char *rl_executing_keyseq = 0;
int _rl_executing_keyseq_size = 0;
+struct _rl_cmd _rl_pending_command;
+struct _rl_cmd *_rl_command_to_execute = (struct _rl_cmd *)NULL;
+
/* Timeout (specified in milliseconds) when reading characters making up an
ambiguous multiple-key sequence */
int _rl_keyseq_timeout = 500;
@@ -314,7 +321,8 @@ 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;
+int _rl_enable_bracketed_paste = BRACKETED_PASTE_DEFAULT;
+int _rl_enable_active_region = BRACKETED_PASTE_DEFAULT;
/* **************************************************************** */
/* */
@@ -417,6 +425,11 @@ readline_internal_setup (void)
if (rl_startup_hook)
(*rl_startup_hook) ();
+ if (_rl_internal_startup_hook)
+ (*_rl_internal_startup_hook) ();
+
+ rl_deactivate_mark ();
+
#if defined (VI_MODE)
if (rl_editing_mode == vi_mode)
rl_vi_insertion_mode (1, 'i'); /* don't want to reset last */
@@ -632,12 +645,34 @@ readline_internal_charloop (void)
r = _rl_dispatch ((unsigned char)c, _rl_keymap);
RL_CHECK_SIGNALS ();
+ if (_rl_command_to_execute)
+ {
+ (*rl_redisplay_function) ();
+
+ rl_executing_keymap = _rl_command_to_execute->map;
+ rl_executing_key = _rl_command_to_execute->key;
+
+ rl_dispatching = 1;
+ RL_SETSTATE(RL_STATE_DISPATCHING);
+ r = (*(_rl_command_to_execute->func)) (_rl_command_to_execute->count, _rl_command_to_execute->key);
+ _rl_command_to_execute = 0;
+ RL_UNSETSTATE(RL_STATE_DISPATCHING);
+ rl_dispatching = 0;
+
+ RL_CHECK_SIGNALS ();
+ }
+
/* If there was no change in _rl_last_command_was_kill, then no kill
has taken place. Note that if input is pending we are reading
a prefix command, so nothing has changed yet. */
if (rl_pending_input == 0 && lk == _rl_last_command_was_kill)
_rl_last_command_was_kill = 0;
+ if (_rl_keep_mark_active)
+ _rl_keep_mark_active = 0;
+ else if (rl_mark_active_p ())
+ rl_deactivate_mark ();
+
_rl_internal_char_cleanup ();
#if defined (READLINE_CALLBACKS)
@@ -856,7 +891,11 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
/* If we have input pending, then the last command was a prefix
command. Don't change the state of rl_last_func. Otherwise,
remember the last command executed in this variable. */
+#if defined (VI_MODE)
+ if (rl_pending_input == 0 && map[key].function != rl_digit_argument && map[key].function != rl_vi_arg_digit)
+#else
if (rl_pending_input == 0 && map[key].function != rl_digit_argument)
+#endif
rl_last_func = map[key].function;
RL_CHECK_SIGNALS ();
@@ -870,6 +909,8 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
_rl_prev_macro_key ();
else
_rl_unget_char (key);
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
return -2;
}
else if (got_subseq)
@@ -882,6 +923,8 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
_rl_prev_macro_key ();
else
_rl_unget_char (key);
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
return -1;
}
else
@@ -974,7 +1017,11 @@ _rl_dispatch_subseq (register int key, Keymap map, int got_subseq)
_rl_pushed_input_available () == 0 &&
_rl_dispatching_keymap[ANYOTHERKEY].function &&
_rl_input_queued (_rl_keyseq_timeout*1000) == 0)
- return (_rl_subseq_result (-2, map, key, got_subseq));
+ {
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
+ return (_rl_subseq_result (-2, map, key, got_subseq));
+ }
newkey = _rl_subseq_getchar (key);
if (newkey < 0)
@@ -1065,6 +1112,8 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq)
_rl_prev_macro_key ();
else
_rl_unget_char (key);
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
_rl_dispatching_keymap = map;
return -2;
}
@@ -1075,6 +1124,8 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq)
_rl_prev_macro_key ();
else
_rl_unget_char (key);
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
_rl_dispatching_keymap = map;
return -1;
}
@@ -1241,7 +1292,7 @@ readline_initialize_everything (void)
rl_executing_keyseq = malloc (_rl_executing_keyseq_size = 16);
if (rl_executing_keyseq)
- rl_executing_keyseq[0] = '\0';
+ rl_executing_keyseq[rl_key_sequence_length = 0] = '\0';
}
/* If this system allows us to look at the values of the regular
@@ -1356,9 +1407,12 @@ bind_bracketed_paste_prefix (void)
_rl_keymap = emacs_standard_keymap;
rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin);
-
+
+#if defined (VI_MODE)
_rl_keymap = vi_insertion_keymap;
rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_bracketed_paste_begin);
+ /* XXX - is there a reason to do this in the vi command keymap? */
+#endif
_rl_keymap = xkeymap;
}
@@ -1446,5 +1500,35 @@ rl_restore_state (struct readline_state *sp)
rl_attempted_completion_function = sp->attemptfunc;
rl_completer_word_break_characters = sp->wordbreakchars;
+ rl_deactivate_mark ();
+
return (0);
}
+
+/* Functions to manage the string that is the current key sequence. */
+
+void
+_rl_init_executing_keyseq (void)
+{
+ rl_executing_keyseq[rl_key_sequence_length = 0] = '\0';
+}
+
+void
+_rl_term_executing_keyseq (void)
+{
+ rl_executing_keyseq[rl_key_sequence_length] = '\0';
+}
+
+void
+_rl_end_executing_keyseq (void)
+{
+ if (rl_key_sequence_length > 0)
+ rl_executing_keyseq[--rl_key_sequence_length] = '\0';
+}
+
+void
+_rl_add_executing_keyseq (int key)
+{
+ RESIZE_KEYSEQ_BUFFER ();
+ rl_executing_keyseq[rl_key_sequence_length++] = key;
+}
diff --git a/lib/readline/readline.h b/lib/readline/readline.h
index da782716..78fa39d0 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-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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 0x0800 /* Readline 8.0 */
+#define RL_READLINE_VERSION 0x0801 /* Readline 8.0 */
#define RL_VERSION_MAJOR 8
-#define RL_VERSION_MINOR 0
+#define RL_VERSION_MINOR 1
/* Readline data structures. */
@@ -95,6 +95,7 @@ extern int rl_forward_word PARAMS((int, int));
extern int rl_backward_word PARAMS((int, int));
extern int rl_refresh_line PARAMS((int, int));
extern int rl_clear_screen PARAMS((int, int));
+extern int rl_clear_display PARAMS((int, int));
extern int rl_skip_csi_sequence PARAMS((int, int));
extern int rl_arrow_keys PARAMS((int, int));
@@ -132,6 +133,7 @@ extern int rl_beginning_of_history PARAMS((int, int));
extern int rl_end_of_history PARAMS((int, int));
extern int rl_get_next_history PARAMS((int, int));
extern int rl_get_previous_history PARAMS((int, int));
+extern int rl_operate_and_get_next PARAMS((int, int));
/* Bindable commands for managing the mark and region. */
extern int rl_set_mark PARAMS((int, int));
@@ -392,6 +394,14 @@ extern int rl_clear_message PARAMS((void));
extern int rl_reset_line_state PARAMS((void));
extern int rl_crlf PARAMS((void));
+/* Functions to manage the mark and region, especially the notion of an
+ active mark and an active region. */
+extern void rl_keep_mark_active PARAMS((void));
+
+extern void rl_activate_mark PARAMS((void));
+extern void rl_deactivate_mark PARAMS((void));
+extern int rl_mark_active_p PARAMS((void));
+
#if defined (USE_VARARGS) && defined (PREFER_STDARG)
extern int rl_message (const char *, ...) __attribute__((__format__ (printf, 1, 2)));
#else
diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h
index 6fd03f6a..4d3e9070 100644
--- a/lib/readline/rlmbutil.h
+++ b/lib/readline/rlmbutil.h
@@ -28,7 +28,7 @@
/* check multibyte capability for I18N code */
/************************************************/
-/* For platforms which support the ISO C amendement 1 functionality we
+/* For platforms which support the ISO C amendment 1 functionality we
support user defined character classes. */
/* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */
#if defined (HAVE_WCTYPE_H) && defined (HAVE_WCHAR_H) && defined (HAVE_LOCALE_H)
diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h
index e85e4d81..23ab2d8c 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
@@ -65,7 +65,8 @@
#define SF_FOUND 0x02
#define SF_FAILED 0x04
#define SF_CHGKMAP 0x08
-#define SF_PATTERN 0x10 /* unused so far */
+#define SF_PATTERN 0x10
+#define SF_NOCASE 0x20 /* unused so far */
typedef struct __rl_search_context
{
@@ -109,6 +110,15 @@ typedef struct __rl_search_context
char *search_terminators;
} _rl_search_cxt;
+struct _rl_cmd {
+ Keymap map;
+ int count;
+ int key;
+ rl_command_func_t *func;
+};
+extern struct _rl_cmd _rl_pending_command;
+extern struct _rl_cmd *_rl_command_to_execute;
+
/* Callback data for reading numeric arguments */
#define NUM_SAWMINUS 0x01
#define NUM_SAWDIGITS 0x02
@@ -267,23 +277,25 @@ extern void _rl_free_match_list PARAMS((char **));
/* display.c */
extern char *_rl_strip_prompt PARAMS((char *));
extern void _rl_reset_prompt PARAMS((void));
-extern void _rl_move_cursor_relative PARAMS((int, const char *));
extern void _rl_move_vert PARAMS((int));
extern void _rl_save_prompt PARAMS((void));
extern void _rl_restore_prompt PARAMS((void));
extern char *_rl_make_prompt_for_search PARAMS((int));
extern void _rl_erase_at_end_of_line PARAMS((int));
extern void _rl_clear_to_eol PARAMS((int));
-extern void _rl_clear_screen PARAMS((void));
+extern void _rl_clear_screen PARAMS((int));
extern void _rl_update_final PARAMS((void));
+extern void _rl_optimize_redisplay PARAMS((void));
extern void _rl_redisplay_after_sigwinch PARAMS((void));
extern void _rl_clean_up_for_exit PARAMS((void));
extern void _rl_erase_entire_line PARAMS((void));
extern int _rl_current_display_line PARAMS((void));
+extern void _rl_refresh_line PARAMS((void));
/* input.c */
extern int _rl_any_typein PARAMS((void));
extern int _rl_input_available PARAMS((void));
+extern int _rl_nchars_available PARAMS((void));
extern int _rl_input_queued PARAMS((int));
extern void _rl_insert_typein PARAMS((int));
extern int _rl_unget_char PARAMS((int));
@@ -300,6 +312,10 @@ extern int _rl_isearch_cleanup PARAMS((_rl_search_cxt *, int));
extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
/* kill.c */
+#ifndef BRACKETED_PASTE_DEFAULT
+# define BRACKETED_PASTE_DEFAULT 1 /* XXX - for now */
+#endif
+
#define BRACK_PASTE_PREF "\033[200~"
#define BRACK_PASTE_SUFF "\033[201~"
@@ -309,7 +325,10 @@ extern int _rl_search_getchar PARAMS((_rl_search_cxt *));
#define BRACK_PASTE_INIT "\033[?2004h"
#define BRACK_PASTE_FINI "\033[?2004l\r"
+extern int _rl_read_bracketed_paste_prefix PARAMS((int));
extern char *_rl_bracketed_text PARAMS((size_t *));
+extern int _rl_bracketed_read_key PARAMS((void));
+extern int _rl_bracketed_read_mbstring PARAMS((char *, int));
/* macro.c */
extern void _rl_with_macro_input PARAMS((char *));
@@ -332,6 +351,7 @@ extern void _rl_start_using_history PARAMS((void));
extern int _rl_free_saved_history_line PARAMS((void));
extern void _rl_set_insert_mode PARAMS((int, int));
+extern void _rl_revert_previous_lines PARAMS((void));
extern void _rl_revert_all_lines PARAMS((void));
/* nls.c */
@@ -348,6 +368,11 @@ extern int _rl_dispatch PARAMS((int, Keymap));
extern int _rl_dispatch_subseq PARAMS((int, Keymap, int));
extern void _rl_internal_char_cleanup PARAMS((void));
+extern void _rl_init_executing_keyseq PARAMS((void));
+extern void _rl_term_executing_keyseq PARAMS((void));
+extern void _rl_end_executing_keyseq PARAMS((void));
+extern void _rl_add_executing_keyseq PARAMS((int));
+
/* rltty.c */
extern int _rl_disable_tty_signals PARAMS((void));
extern int _rl_restore_tty_signals PARAMS((void));
@@ -373,15 +398,19 @@ extern void _rl_output_character_function PARAMS((int));
#else
extern int _rl_output_character_function PARAMS((int));
#endif
+extern void _rl_cr PARAMS((void));
extern void _rl_output_some_chars PARAMS((const char *, int));
extern int _rl_backspace PARAMS((int));
extern void _rl_enable_meta_key PARAMS((void));
extern void _rl_disable_meta_key PARAMS((void));
extern void _rl_control_keypad PARAMS((int));
extern void _rl_set_cursor PARAMS((int, int));
+extern void _rl_standout_on PARAMS((void));
+extern void _rl_standout_off PARAMS((void));
/* text.c */
extern void _rl_fix_point PARAMS((int));
+extern void _rl_fix_mark PARAMS((void));
extern int _rl_replace_text PARAMS((const char *, int, int));
extern int _rl_forward_char_internal PARAMS((int));
extern int _rl_backward_char_internal PARAMS((int));
@@ -507,6 +536,7 @@ 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 int _rl_enable_active_region;
extern char *_rl_comment_begin;
extern unsigned char _rl_parsing_conditionalized_out;
extern Keymap _rl_keymap;
@@ -521,11 +551,12 @@ extern int _rl_keyseq_timeout;
extern int _rl_executing_keyseq_size;
+extern rl_hook_func_t *_rl_internal_startup_hook;
+
/* search.c */
extern _rl_search_cxt *_rl_nscxt;
/* signals.c */
-extern int _rl_interrupt_immediately;
extern int volatile _rl_caught_signal;
extern _rl_sigcleanup_func_t *_rl_sigcleanup;
@@ -560,6 +591,7 @@ extern int _rl_term_autowrap;
/* text.c */
extern int _rl_optimize_typeahead;
+extern int _rl_keep_mark_active;
/* undo.c */
extern int _rl_doing_an_undo;
diff --git a/lib/readline/search.c b/lib/readline/search.c
index c9c1f5d1..38a29361 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2020 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.
@@ -159,7 +159,7 @@ noninc_search_from_pos (char *string, int pos, int dir, int flags, int *ncp)
static int
noninc_dosearch (char *string, int dir, int flags)
{
- int oldpos, pos;
+ int oldpos, pos, ind;
HIST_ENTRY *entry;
if (string == 0 || *string == '\0' || noninc_history_pos < 0)
@@ -168,7 +168,7 @@ noninc_dosearch (char *string, int dir, int flags)
return 0;
}
- pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, (int *)0);
+ pos = noninc_search_from_pos (string, noninc_history_pos + dir, dir, flags, &ind);
if (pos == -1)
{
/* Search failed, current history position unchanged. */
@@ -192,8 +192,19 @@ noninc_dosearch (char *string, int dir, int flags)
make_history_line_current (entry);
- rl_point = 0;
- rl_mark = rl_end;
+ if (_rl_enable_active_region && ((flags & SF_PATTERN) == 0) && ind > 0 && ind < rl_end)
+ {
+ rl_point = ind;
+ rl_mark = ind + strlen (string);
+ if (rl_mark > rl_end)
+ rl_mark = rl_end; /* can't happen? */
+ rl_activate_mark ();
+ }
+ else
+ {
+ rl_point = 0;
+ rl_mark = rl_end;
+ }
rl_clear_message ();
return 1;
@@ -256,6 +267,7 @@ _rl_nsearch_abort (_rl_search_cxt *cxt)
rl_clear_message ();
rl_point = cxt->save_point;
rl_mark = cxt->save_mark;
+ _rl_fix_point (1);
rl_restore_prompt ();
RL_UNSETSTATE (RL_STATE_NSEARCH);
@@ -267,6 +279,8 @@ _rl_nsearch_abort (_rl_search_cxt *cxt)
static int
_rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
{
+ int n;
+
if (c < 0)
c = CTRL ('C');
@@ -300,6 +314,28 @@ _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
_rl_nsearch_abort (cxt);
return -1;
+ case ESC:
+ /* XXX - experimental code to allow users to bracketed-paste into the
+ search string. Similar code is in isearch.c:_rl_isearch_dispatch().
+ The difference here is that the bracketed paste sometimes doesn't
+ paste everything, so checking for the prefix and the suffix in the
+ input queue doesn't work well. We just have to check to see if the
+ number of chars in the input queue is enough for the bracketed paste
+ prefix and hope for the best. */
+ if (_rl_enable_bracketed_paste && ((n = _rl_nchars_available ()) >= (BRACK_PASTE_SLEN-1)))
+ {
+ if (_rl_read_bracketed_paste_prefix (c) == 1)
+ rl_bracketed_paste_begin (1, c);
+ else
+ {
+ c = rl_read_key (); /* get the ESC that got pushed back */
+ _rl_insert_char (1, c);
+ }
+ }
+ else
+ _rl_insert_char (1, c);
+ break;
+
default:
#if defined (HANDLE_MULTIBYTE)
if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
@@ -311,6 +347,7 @@ _rl_nsearch_dispatch (_rl_search_cxt *cxt, int c)
}
(*rl_redisplay_function) ();
+ rl_deactivate_mark ();
return 1;
}
diff --git a/lib/readline/signals.c b/lib/readline/signals.c
index 76c5c473..f9174ab8 100644
--- a/lib/readline/signals.c
+++ b/lib/readline/signals.c
@@ -99,7 +99,6 @@ int rl_catch_sigwinch = 0; /* for the readline state struct in readline.c */
#endif
/* Private variables. */
-int _rl_interrupt_immediately = 0;
int volatile _rl_caught_signal = 0; /* should be sig_atomic_t, but that requires including <signal.h> everywhere */
/* If non-zero, print characters corresponding to received signals as long as
@@ -136,7 +135,7 @@ void *_rl_sigcleanarg;
/* Readline signal handler functions. */
-/* Called from RL_CHECK_SIGNALS() macro */
+/* Called from RL_CHECK_SIGNALS() macro to run signal handling code. */
RETSIGTYPE
_rl_signal_handler (int sig)
{
@@ -145,6 +144,8 @@ _rl_signal_handler (int sig)
#if defined (SIGWINCH)
if (sig == SIGWINCH)
{
+ RL_SETSTATE(RL_STATE_SIGHANDLER);
+
rl_resize_terminal ();
/* XXX - experimental for now */
/* Call a signal hook because though we called the original signal handler
@@ -152,6 +153,8 @@ _rl_signal_handler (int sig)
ourselves. */
if (rl_signal_event_hook)
(*rl_signal_event_hook) ();
+
+ RL_UNSETSTATE(RL_STATE_SIGHANDLER);
}
else
#endif
@@ -163,22 +166,20 @@ _rl_signal_handler (int sig)
static RETSIGTYPE
rl_signal_handler (int sig)
{
- if (_rl_interrupt_immediately)
- {
- _rl_interrupt_immediately = 0;
- _rl_handle_signal (sig);
- }
- else
- _rl_caught_signal = sig;
-
+ _rl_caught_signal = sig;
SIGHANDLER_RETURN;
}
+/* This is called to handle a signal when it is safe to do so (out of the
+ signal handler execution path). Called by _rl_signal_handler for all the
+ signals readline catches except SIGWINCH. */
static RETSIGTYPE
_rl_handle_signal (int sig)
{
+ int block_sig;
+
#if defined (HAVE_POSIX_SIGNALS)
- sigset_t set;
+ sigset_t set, oset;
#else /* !HAVE_POSIX_SIGNALS */
# if defined (HAVE_BSD_SIGNALS)
long omask;
@@ -208,7 +209,16 @@ _rl_handle_signal (int sig)
_rl_sigcleanup = 0;
_rl_sigcleanarg = 0;
}
-
+
+#if defined (HAVE_POSIX_SIGNALS)
+ /* Get the current set of blocked signals. If we want to block a signal for
+ the duration of the cleanup functions, make sure to add it to SET and
+ set block_sig = 1 (see the SIGHUP case below). */
+ block_sig = 0; /* sentinel to block signals with sigprocmask */
+ sigemptyset (&set);
+ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
+#endif
+
switch (sig)
{
case SIGINT:
@@ -223,38 +233,60 @@ _rl_handle_signal (int sig)
#if defined (SIGTSTP)
case SIGTSTP:
case SIGTTIN:
+ case SIGTTOU:
# 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);
+ tcgetpgrp() will generate SIGTTOU, so we don't bother. We still do
+ this even if we've been stopped on SIGTTOU, since we handle signals
+ when we have returned from the signal handler and the signal is no
+ longer blocked. */
sigaddset (&set, SIGTTOU);
- sigprocmask (SIG_BLOCK, &set, (sigset_t *)NULL);
+ block_sig = 1;
# endif
- case SIGTTOU:
#endif /* SIGTSTP */
- case SIGTERM:
+ /* Any signals that should be blocked during cleanup should go here. */
#if defined (SIGHUP)
case SIGHUP:
-#endif
+# if defined (_AIX)
+ if (block_sig == 0)
+ {
+ sigaddset (&set, sig);
+ block_sig = 1;
+ }
+# endif // _AIX
+#endif
+ /* Signals that don't require blocking during cleanup should go here. */
+ case SIGTERM:
#if defined (SIGALRM)
case SIGALRM:
#endif
#if defined (SIGQUIT)
case SIGQUIT:
#endif
+
+ if (block_sig)
+ sigprocmask (SIG_BLOCK, &set, &oset);
+
rl_echo_signal_char (sig);
rl_cleanup_after_signal ();
+ /* At this point, the application's signal handler, if any, is the
+ current handler. */
+
#if defined (HAVE_POSIX_SIGNALS)
-# if defined (SIGTSTP)
- /* Unblock SIGTTOU blocked above */
- if (sig == SIGTTIN || sig == SIGTSTP)
- sigprocmask (SIG_UNBLOCK, &set, (sigset_t *)NULL);
-# endif
+ /* Unblock any signal(s) blocked above */
+ if (block_sig)
+ sigprocmask (SIG_UNBLOCK, &oset, (sigset_t *)NULL);
+#endif
+ /* We don't have to bother unblocking the signal because we are not
+ running in a signal handler context. */
+#if 0
+#if defined (HAVE_POSIX_SIGNALS)
+ /* Make sure this signal is not blocked when we resend it to the
+ calling application. */
sigemptyset (&set);
sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
sigdelset (&set, sig);
@@ -263,6 +295,7 @@ _rl_handle_signal (int sig)
omask = sigblock (0);
# endif /* HAVE_BSD_SIGNALS */
#endif /* !HAVE_POSIX_SIGNALS */
+#endif
#if defined (__EMX__)
signal (sig, SIG_ACK);
@@ -274,7 +307,10 @@ _rl_handle_signal (int sig)
raise (sig); /* assume we have raise */
#endif
- /* Let the signal that we just sent through. */
+ /* We don't need to modify the signal mask now that this is not run in
+ a signal handler context. */
+#if 0
+ /* Let the signal that we just sent through if it is blocked. */
#if defined (HAVE_POSIX_SIGNALS)
sigprocmask (SIG_SETMASK, &set, (sigset_t *)NULL);
#else /* !HAVE_POSIX_SIGNALS */
@@ -282,6 +318,7 @@ _rl_handle_signal (int sig)
sigsetmask (omask & ~(sigmask (sig)));
# endif /* HAVE_BSD_SIGNALS */
#endif /* !HAVE_POSIX_SIGNALS */
+#endif
rl_reset_after_signal ();
}
diff --git a/lib/readline/terminal.c b/lib/readline/terminal.c
index e5573897..05415dc4 100644
--- a/lib/readline/terminal.c
+++ b/lib/readline/terminal.c
@@ -152,6 +152,10 @@ static int term_has_meta;
static char *_rl_term_mm;
static char *_rl_term_mo;
+/* The sequences to enter and exit standout mode. */
+static char *_rl_term_so;
+static char *_rl_term_se;
+
/* The key sequences output by the arrow keys, if this terminal has any. */
static char *_rl_term_ku;
static char *_rl_term_kd;
@@ -177,6 +181,19 @@ static char *_rl_term_kI;
static char *_rl_term_vs; /* very visible */
static char *_rl_term_ve; /* normal */
+/* It's not clear how HPUX is so broken here. */
+#ifdef TGETENT_BROKEN
+# define TGETENT_SUCCESS 0
+#else
+# define TGETENT_SUCCESS 1
+#endif
+#ifdef TGETFLAG_BROKEN
+# define TGETFLAG_SUCCESS 0
+#else
+# define TGETFLAG_SUCCESS 1
+#endif
+#define TGETFLAG(cap) (tgetflag (cap) == TGETFLAG_SUCCESS)
+
static void bind_termcap_arrow_keys PARAMS((Keymap));
/* Variables that hold the screen dimensions, used by the display code. */
@@ -410,6 +427,8 @@ static const struct _tc_string tc_strings[] =
{ "mo", &_rl_term_mo },
{ "nd", &_rl_term_forward_char },
{ "pc", &_rl_term_pc },
+ { "se", &_rl_term_se },
+ { "so", &_rl_term_so },
{ "up", &_rl_term_up },
{ "vb", &_rl_visible_bell },
{ "vs", &_rl_term_vs },
@@ -437,7 +456,7 @@ _rl_init_terminal_io (const char *terminal_name)
{
const char *term;
char *buffer;
- int tty, tgetent_ret;
+ int tty, tgetent_ret, dumbterm;
term = terminal_name ? terminal_name : sh_get_env_value ("TERM");
_rl_term_clrpag = _rl_term_cr = _rl_term_clreol = _rl_term_clrscroll = (char *)NULL;
@@ -446,6 +465,8 @@ _rl_init_terminal_io (const char *terminal_name)
if (term == 0)
term = "dumb";
+ dumbterm = STREQ (term, "dumb");
+
#ifdef __MSDOS__
_rl_term_im = _rl_term_ei = _rl_term_ic = _rl_term_IC = (char *)NULL;
_rl_term_up = _rl_term_dc = _rl_term_DC = _rl_visible_bell = (char *)NULL;
@@ -457,6 +478,7 @@ _rl_init_terminal_io (const char *terminal_name)
_rl_term_goto = _rl_term_pc = _rl_term_ip = (char *)NULL;
_rl_term_ks = _rl_term_ke =_rl_term_vs = _rl_term_ve = (char *)NULL;
_rl_term_kh = _rl_term_kH = _rl_term_at7 = _rl_term_kI = (char *)NULL;
+ _rl_term_so = _rl_term_se = (char *)NULL;
#if defined(HACK_TERMCAP_MOTION)
_rl_term_forward_char = (char *)NULL;
#endif
@@ -483,7 +505,7 @@ _rl_init_terminal_io (const char *terminal_name)
tgetent_ret = tgetent (term_buffer, term);
}
- if (tgetent_ret <= 0)
+ if (tgetent_ret != TGETENT_SUCCESS)
{
FREE (term_string_buffer);
FREE (term_buffer);
@@ -521,8 +543,13 @@ _rl_init_terminal_io (const char *terminal_name)
_rl_term_mm = _rl_term_mo = (char *)NULL;
_rl_term_ve = _rl_term_vs = (char *)NULL;
_rl_term_forward_char = (char *)NULL;
+ _rl_term_so = _rl_term_se = (char *)NULL;
_rl_terminal_can_insert = term_has_meta = 0;
+ /* Assume generic unknown terminal can't handle the enable/disable
+ escape sequences */
+ _rl_enable_bracketed_paste = 0;
+
/* Reasonable defaults for tgoto(). Readline currently only uses
tgoto if _rl_term_IC or _rl_term_DC is defined, but just in case we
change that later... */
@@ -541,10 +568,10 @@ _rl_init_terminal_io (const char *terminal_name)
BC = _rl_term_backspace;
UP = _rl_term_up;
- if (!_rl_term_cr)
+ if (_rl_term_cr == 0)
_rl_term_cr = "\r";
- _rl_term_autowrap = tgetflag ("am") && tgetflag ("xn");
+ _rl_term_autowrap = TGETFLAG ("am") && TGETFLAG ("xn");
/* Allow calling application to set default height and width, using
rl_set_screen_size */
@@ -559,7 +586,7 @@ _rl_init_terminal_io (const char *terminal_name)
/* Check to see if this terminal has a meta key and clear the capability
variables if there is none. */
- term_has_meta = tgetflag ("km") != 0;
+ term_has_meta = TGETFLAG ("km");
if (term_has_meta == 0)
_rl_term_mm = _rl_term_mo = (char *)NULL;
#endif /* !__MSDOS__ */
@@ -574,6 +601,11 @@ _rl_init_terminal_io (const char *terminal_name)
bind_termcap_arrow_keys (vi_insertion_keymap);
#endif /* VI_MODE */
+ /* There's no way to determine whether or not a given terminal supports
+ bracketed paste mode, so we assume a terminal named "dumb" does not. */
+ if (dumbterm)
+ _rl_enable_bracketed_paste = 0;
+
return 0;
}
@@ -676,6 +708,16 @@ rl_crlf (void)
return 0;
}
+void
+_rl_cr (void)
+{
+#if defined (__MSDOS__)
+ putc ('\r', rl_outstream);
+#else
+ tputs (_rl_term_cr, 1, _rl_output_character_function);
+#endif
+}
+
/* Ring the terminal bell. */
int
rl_ding (void)
@@ -710,6 +752,30 @@ rl_ding (void)
/* **************************************************************** */
/* */
+/* Entering and leaving terminal standout mode */
+/* */
+/* **************************************************************** */
+
+void
+_rl_standout_on (void)
+{
+#ifndef __MSDOS__
+ if (_rl_term_so && _rl_term_se)
+ tputs (_rl_term_so, 1, _rl_output_character_function);
+#endif
+}
+
+void
+_rl_standout_off (void)
+{
+#ifndef __MSDOS__
+ if (_rl_term_so && _rl_term_se)
+ tputs (_rl_term_se, 1, _rl_output_character_function);
+#endif
+}
+
+/* **************************************************************** */
+/* */
/* Controlling the Meta Key and Keypad */
/* */
/* **************************************************************** */
diff --git a/lib/readline/text.c b/lib/readline/text.c
index cddaeebd..2567dea2 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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.
@@ -154,6 +154,7 @@ rl_delete_text (int from, int to)
rl_end -= diff;
rl_line_buffer[rl_end] = '\0';
+ _rl_fix_mark ();
return (diff);
}
@@ -176,6 +177,12 @@ _rl_fix_point (int fix_mark_too)
if (fix_mark_too)
_RL_FIX_POINT (rl_mark);
}
+
+void
+_rl_fix_mark (void)
+{
+ _RL_FIX_POINT (rl_mark);
+}
#undef _RL_FIX_POINT
/* Replace the contents of the line buffer between START and END with
@@ -479,6 +486,8 @@ rl_forward_word (int count, int key)
while (count)
{
+ if (rl_point > rl_end)
+ rl_point = rl_end;
if (rl_point == rl_end)
return 0;
@@ -498,6 +507,8 @@ rl_forward_word (int count, int key)
}
}
+ if (rl_point > rl_end)
+ rl_point = rl_end;
if (rl_point == rl_end)
return 0;
@@ -569,18 +580,8 @@ rl_backward_word (int count, int key)
int
rl_refresh_line (int ignore1, int ignore2)
{
- int curr_line;
-
- curr_line = _rl_current_display_line ();
-
- _rl_move_vert (curr_line);
- _rl_move_cursor_relative (0, rl_line_buffer); /* XXX is this right */
-
- _rl_clear_to_eol (0); /* arg of 0 means to not use spaces */
-
- rl_redraw_prompt_last_line ();
+ _rl_refresh_line ();
rl_display_fixed = 1;
-
return 0;
}
@@ -596,7 +597,18 @@ rl_clear_screen (int count, int key)
return 0;
}
- _rl_clear_screen (); /* calls termcap function to clear screen */
+ _rl_clear_screen (0); /* calls termcap function to clear screen */
+ rl_keep_mark_active ();
+ rl_forced_update_display ();
+ rl_display_fixed = 1;
+
+ return 0;
+}
+
+int
+rl_clear_display (int count, int key)
+{
+ _rl_clear_screen (1); /* calls termcap function to clear screen and scrollback buffer */
rl_forced_update_display ();
rl_display_fixed = 1;
@@ -1080,6 +1092,13 @@ rl_tab_insert (int count, int key)
int
rl_newline (int count, int key)
{
+ if (rl_mark_active_p ())
+ {
+ rl_deactivate_mark ();
+ (*rl_redisplay_function) ();
+ _rl_want_redisplay = 0;
+ }
+
rl_done = 1;
if (_rl_history_preserve_point)
@@ -1452,7 +1471,18 @@ rl_change_case (int count, int op)
if (nwc != wc) /* just skip unchanged characters */
{
char *s, *e;
- mlen = wcrtomb (mb, nwc, &mps);
+ mbstate_t ts;
+
+ memset (&ts, 0, sizeof (mbstate_t));
+ mlen = wcrtomb (mb, nwc, &ts);
+ if (mlen < 0)
+ {
+ nwc = wc;
+ memset (&ts, 0, sizeof (mbstate_t));
+ mlen = wcrtomb (mb, nwc, &ts);
+ if (mlen < 0) /* should not happen */
+ strncpy (mb, rl_line_buffer + start, mlen = m);
+ }
if (mlen > 0)
mb[mlen] = '\0';
/* what to do if m != mlen? adjust below */
@@ -1472,7 +1502,9 @@ rl_change_case (int count, int op)
}
else if (m < mlen)
{
- rl_extend_line_buffer (mlen - m + 1);
+ rl_extend_line_buffer (rl_end + mlen + (e - s) - m + 2);
+ s = rl_line_buffer + start; /* have to redo this */
+ e = rl_line_buffer + rl_end;
memmove (s + mlen, s + m, (e - s) - m);
memcpy (s, mb, mlen);
next += mlen - m; /* next char changes */
@@ -1711,10 +1743,7 @@ _rl_char_search (int count, int fdir, int bdir)
{
int c;
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
+ c = _rl_bracketed_read_key ();
if (c < 0)
return 1;
@@ -1809,7 +1838,43 @@ rl_exchange_point_and_mark (int count, int key)
return 1;
}
else
- SWAP (rl_point, rl_mark);
+ {
+ SWAP (rl_point, rl_mark);
+ rl_activate_mark ();
+ }
return 0;
}
+
+/* Active mark support */
+
+/* Is the region active? */
+static int mark_active = 0;
+
+/* Does the current command want the mark to remain active when it completes? */
+int _rl_keep_mark_active;
+
+void
+rl_keep_mark_active (void)
+{
+ _rl_keep_mark_active++;
+}
+
+void
+rl_activate_mark (void)
+{
+ mark_active = 1;
+ rl_keep_mark_active ();
+}
+
+void
+rl_deactivate_mark (void)
+{
+ mark_active = 0;
+}
+
+int
+rl_mark_active_p (void)
+{
+ return (mark_active);
+}
diff --git a/lib/readline/tilde.c b/lib/readline/tilde.c
index 9d0f2961..d678a31a 100644
--- a/lib/readline/tilde.c
+++ b/lib/readline/tilde.c
@@ -1,6 +1,6 @@
/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2020 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,10 +57,10 @@ static void *xmalloc (), *xrealloc ();
#if !defined (HAVE_GETPW_DECLS)
# if defined (HAVE_GETPWUID)
-extern struct passwd *getpwuid PARAMS((uid_t));
+extern struct passwd *getpwuid (uid_t);
# endif
# if defined (HAVE_GETPWNAM)
-extern struct passwd *getpwnam PARAMS((const char *));
+extern struct passwd *getpwnam (const char *);
# endif
#endif /* !HAVE_GETPW_DECLS */
@@ -79,8 +79,8 @@ extern struct passwd *getpwnam PARAMS((const char *));
/* If being compiled as part of bash, these will be satisfied from
variables.o. If being compiled as part of readline, they will
be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
+extern char *sh_get_home_dir (void);
+extern char *sh_get_env_value (const char *);
/* The default value of tilde_additional_prefixes. This is set to
whitespace preceding a tilde so that simple programs which do not
@@ -116,10 +116,10 @@ char **tilde_additional_prefixes = (char **)default_prefixes;
`:' and `=~'. */
char **tilde_additional_suffixes = (char **)default_suffixes;
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
+static int tilde_find_prefix (const char *, int *);
+static int tilde_find_suffix (const char *);
+static char *isolate_tilde_prefix (const char *, int *);
+static char *glue_prefix_and_suffix (char *, const char *, int);
/* Find the start of a tilde expansion in STRING, and return the index of
the tilde which starts the expansion. Place the length of the text
diff --git a/lib/readline/undo.c b/lib/readline/undo.c
index ae65d380..14799911 100644
--- a/lib/readline/undo.c
+++ b/lib/readline/undo.c
@@ -196,6 +196,7 @@ rl_do_undo (void)
/* Undoing deletes means inserting some text. */
case UNDO_DELETE:
rl_point = start;
+ _rl_fix_point (1);
rl_insert_text (rl_undo_list->text);
xfree (rl_undo_list->text);
break;
@@ -204,6 +205,7 @@ rl_do_undo (void)
case UNDO_INSERT:
rl_delete_text (start, end);
rl_point = start;
+ _rl_fix_point (1);
break;
/* Undoing an END means undoing everything 'til we get to a BEGIN. */
diff --git a/lib/readline/util.c b/lib/readline/util.c
index e009b238..1576b55d 100644
--- a/lib/readline/util.c
+++ b/lib/readline/util.c
@@ -102,10 +102,11 @@ _rl_abort_internal (void)
rl_clear_message ();
_rl_reset_argument ();
rl_clear_pending_input ();
+ rl_deactivate_mark ();
- RL_UNSETSTATE (RL_STATE_MACRODEF);
while (rl_executing_macro)
_rl_pop_executing_macro ();
+ _rl_kill_kbd_macro ();
RL_UNSETSTATE (RL_STATE_MULTIKEY); /* XXX */
diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c
index 836371c9..742341e3 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-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 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.
@@ -298,6 +298,11 @@ rl_vi_redo (int count, int c)
if (rl_point > 0)
_rl_vi_backup ();
}
+ else if (_rl_vi_last_command == '.' && _rl_keymap == vi_movement_keymap)
+ {
+ rl_ding ();
+ r = 0;
+ }
else
r = _rl_dispatch (_rl_vi_last_command, _rl_keymap);
@@ -320,9 +325,9 @@ rl_vi_yank_arg (int count, int key)
/* Readline thinks that the first word on a line is the 0th, while vi
thinks the first word on a line is the 1st. Compensate. */
if (rl_explicit_arg)
- rl_yank_nth_arg (count - 1, 0);
+ rl_yank_nth_arg (count - 1, key);
else
- rl_yank_nth_arg ('$', 0);
+ rl_yank_nth_arg ('$', key);
return (0);
}
@@ -837,6 +842,12 @@ _rl_vi_save_replace (void)
start = end - vi_replace_count + 1;
len = vi_replace_count + 1;
+ if (start < 0)
+ {
+ len = end + 1;
+ start = 0;
+ }
+
vi_save_insert_buffer (start, len);
}
@@ -864,8 +875,8 @@ _rl_vi_done_inserting (void)
{
if (_rl_vi_doing_insert)
{
- /* The `C', `s', and `S' commands set this. */
- rl_end_undo_group ();
+ /* The `c', `s', `S', and `R' commands set this. */
+ rl_end_undo_group (); /* for the group in rl_vi_start_inserting */
/* Now, the text between rl_undo_list->next->start and
rl_undo_list->next->end is what was inserted while in insert
mode. It gets copied to VI_INSERT_BUFFER because it depends
@@ -876,7 +887,9 @@ _rl_vi_done_inserting (void)
_rl_vi_save_replace (); /* Half the battle */
else
_rl_vi_save_insert (rl_undo_list->next);
- vi_continued_command = 1;
+ /* sanity check, should always be >= 1 here */
+ if (_rl_undo_group_level > 0)
+ rl_end_undo_group (); /* for the group in the command (change or replace) */
}
else
{
@@ -888,10 +901,12 @@ _rl_vi_done_inserting (void)
/* XXX - Other keys probably need to be checked. */
else if (_rl_vi_last_key_before_insert == 'C')
rl_end_undo_group ();
- while (_rl_undo_group_level > 0)
- rl_end_undo_group ();
- vi_continued_command = 0;
}
+
+ /* Sanity check, make sure all the undo groups are closed before we leave
+ insert mode */
+ while (_rl_undo_group_level > 0)
+ rl_end_undo_group ();
}
int
@@ -1162,6 +1177,7 @@ rl_domove_motion_callback (_rl_vimotion_cxt *m)
/* Append a blank character temporarily so that the motion routines
work right at the end of the line. Original value of rl_end is saved
as m->end. */
+ rl_extend_line_buffer (rl_end + 1);
rl_line_buffer[rl_end++] = ' ';
rl_line_buffer[rl_end] = '\0';
@@ -1193,12 +1209,15 @@ _rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *m)
/* 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;
+ _rl_fix_point (0);
/* No change in position means the command failed. */
if (rl_mark == rl_point)
{
+ /* 'c' and 'C' enter insert mode after the delete even if the motion
+ didn't delete anything, as long as the motion command is valid. */
+ if (_rl_to_upper (m->key) == 'C' && _rl_vi_motion_command (c))
+ return (vidomove_dispatch (m));
RL_UNSETSTATE (RL_STATE_VIMOTION);
return (-1);
}
@@ -1316,13 +1335,7 @@ rl_domove_read_callback (_rl_vimotion_cxt *m)
static int
rl_vi_domove_getchar (_rl_vimotion_cxt *m)
{
- int c;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- return c;
+ return (_rl_bracketed_read_key ());
}
#if defined (READLINE_CALLBACKS)
@@ -1377,7 +1390,11 @@ rl_vi_delete_to (int count, int key)
{
int c, r;
- _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
+ if (_rl_vimvcxt)
+ _rl_mvcxt_init (_rl_vimvcxt, VIM_DELETE, key);
+ else
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_DELETE, key);
+
_rl_vimvcxt->start = rl_point;
rl_mark = rl_point;
@@ -1465,7 +1482,10 @@ rl_vi_change_to (int count, int key)
{
int c, r;
- _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
+ if (_rl_vimvcxt)
+ _rl_mvcxt_init (_rl_vimvcxt, VIM_CHANGE, key);
+ else
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_CHANGE, key);
_rl_vimvcxt->start = rl_point;
rl_mark = rl_point;
@@ -1524,6 +1544,8 @@ vi_yank_dispatch (_rl_vimotion_cxt *m)
rl_do_undo ();
rl_point = m->start;
+ _rl_fix_point (1);
+
return (0);
}
@@ -1532,7 +1554,10 @@ rl_vi_yank_to (int count, int key)
{
int c, r;
- _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
+ if (_rl_vimvcxt)
+ _rl_mvcxt_init (_rl_vimvcxt, VIM_YANK, key);
+ else
+ _rl_vimvcxt = _rl_mvcxt_alloc (VIM_YANK, key);
_rl_vimvcxt->start = rl_point;
rl_mark = rl_point;
@@ -2000,21 +2025,7 @@ _rl_vi_change_char (int count, int c, char *mb)
static int
_rl_vi_callback_getchar (char *mb, int mlen)
{
- int c;
-
- RL_SETSTATE(RL_STATE_MOREINPUT);
- c = rl_read_key ();
- RL_UNSETSTATE(RL_STATE_MOREINPUT);
-
- if (c < 0)
- return -1;
-
-#if defined (HANDLE_MULTIBYTE)
- if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
- c = _rl_read_mbstring (c, mb, mlen);
-#endif
-
- return c;
+ return (_rl_bracketed_read_mbstring (mb, mlen));
}
#if defined (READLINE_CALLBACKS)
@@ -2026,10 +2037,11 @@ _rl_vi_callback_change_char (_rl_callback_generic_arg *data)
c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
#if defined (HANDLE_MULTIBYTE)
- strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
-#else
- _rl_vi_last_replacement[0] = c;
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+ else
#endif
+ _rl_vi_last_replacement[0] = c;
_rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* XXX */
if (c < 0)
@@ -2066,10 +2078,11 @@ rl_vi_change_char (int count, int key)
{
c = _rl_vi_callback_getchar (mb, MB_LEN_MAX);
#ifdef HANDLE_MULTIBYTE
- strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
-#else
- _rl_vi_last_replacement[0] = c;
+ if (MB_CUR_MAX > 1 && rl_byte_oriented == 0)
+ strncpy (_rl_vi_last_replacement, mb, MB_LEN_MAX);
+ else
#endif
+ _rl_vi_last_replacement[0] = c;
_rl_vi_last_replacement[MB_LEN_MAX] = '\0'; /* just in case */
}
@@ -2122,7 +2135,7 @@ rl_vi_overstrike_delete (int count, int key)
s = rl_point;
if (rl_do_undo ())
- vi_replace_count--;
+ vi_replace_count--; /* XXX */
if (rl_point == s)
rl_backward_char (1, key);
@@ -2137,6 +2150,67 @@ rl_vi_overstrike_delete (int count, int key)
return (0);
}
+static int
+rl_vi_overstrike_kill_line (int count, int key)
+{
+ int r, end;
+
+ end = rl_end;
+ r = rl_unix_line_discard (count, key);
+ vi_replace_count -= end - rl_end;
+ return r;
+}
+
+static int
+rl_vi_overstrike_kill_word (int count, int key)
+{
+ int r, end;
+
+ end = rl_end;
+ r = rl_vi_unix_word_rubout (count, key);
+ vi_replace_count -= end - rl_end;
+ return r;
+}
+
+static int
+rl_vi_overstrike_yank (int count, int key)
+{
+ int r, end;
+
+ end = rl_end;
+ r = rl_yank (count, key);
+ vi_replace_count += rl_end - end;
+ return r;
+}
+
+/* Read bracketed paste mode pasted text and insert it in overwrite mode */
+static int
+rl_vi_overstrike_bracketed_paste (int count, int key)
+{
+ int r;
+ char *pbuf;
+ size_t pblen;
+
+ pbuf = _rl_bracketed_text (&pblen);
+ if (pblen == 0)
+ {
+ xfree (pbuf);
+ return 0;
+ }
+ r = pblen;
+ while (--r >= 0)
+ _rl_unget_char ((unsigned char)pbuf[r]);
+ xfree (pbuf);
+
+ while (_rl_pushed_input_available ())
+ {
+ key = rl_read_key ();
+ r = rl_vi_overstrike (1, key);
+ }
+
+ return r;
+}
+
int
rl_vi_replace (int count, int key)
{
@@ -2169,6 +2243,21 @@ rl_vi_replace (int count, int key)
vi_insertion_keymap[CTRL ('H')].function == rl_rubout)
vi_replace_map[CTRL ('H')].function = rl_vi_overstrike_delete;
+ /* Same for ^U and unix-line-discard. */
+ if (vi_insertion_keymap[CTRL ('U')].type == ISFUNC &&
+ vi_insertion_keymap[CTRL ('U')].function == rl_unix_line_discard)
+ vi_replace_map[CTRL ('U')].function = rl_vi_overstrike_kill_line;
+
+ /* And for ^W and unix-word-rubout. */
+ if (vi_insertion_keymap[CTRL ('W')].type == ISFUNC &&
+ vi_insertion_keymap[CTRL ('W')].function == rl_vi_unix_word_rubout)
+ vi_replace_map[CTRL ('W')].function = rl_vi_overstrike_kill_word;
+
+ /* And finally for ^Y and yank. */
+ if (vi_insertion_keymap[CTRL ('Y')].type == ISFUNC &&
+ vi_insertion_keymap[CTRL ('Y')].function == rl_yank)
+ vi_replace_map[CTRL ('Y')].function = rl_vi_overstrike_yank;
+
/* Make sure this is the value we need. */
vi_replace_map[ANYOTHERKEY].type = ISFUNC;
vi_replace_map[ANYOTHERKEY].function = (rl_command_func_t *)NULL;
@@ -2176,9 +2265,12 @@ rl_vi_replace (int count, int key)
rl_vi_start_inserting (key, 1, rl_arg_sign);
- _rl_vi_last_key_before_insert = key;
+ _rl_vi_last_key_before_insert = 'R'; /* in case someone rebinds it */
_rl_keymap = vi_replace_map;
+ if (_rl_enable_bracketed_paste)
+ rl_bind_keyseq_if_unbound (BRACK_PASTE_PREF, rl_vi_overstrike_bracketed_paste);
+
return (0);
}
@@ -2268,6 +2360,7 @@ _rl_vi_goto_mark (void)
if (ch == '`')
{
rl_point = rl_mark;
+ _rl_fix_point (1);
return 0;
}
else if (ch < 0 || ch < 'a' || ch > 'z') /* make test against 0 explicit */
@@ -2283,6 +2376,7 @@ _rl_vi_goto_mark (void)
return 1;
}
rl_point = vi_mark_chars[ch];
+ _rl_fix_point (1);
return 0;
}
diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in
index 06917ba4..98064de5 100644
--- a/lib/sh/Makefile.in
+++ b/lib/sh/Makefile.in
@@ -2,7 +2,7 @@
# Makefile for the Bash library
#
#
-# Copyright (C) 1998-2010 Free Software Foundation, Inc.
+# Copyright (C) 1998-2020 Free Software Foundation, Inc.
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -93,7 +93,7 @@ CSOURCES = clktck.c clock.c getcwd.c getenv.c oslib.c setlinebuf.c \
wcsdup.c fpurge.c zgetline.c mbscmp.c uconvert.c ufuncs.c \
casemod.c dprintf.c input_avail.c mbscasecmp.c fnxform.c \
strchrnul.c unicode.c wcswidth.c wcsnwidth.c shmbchar.c strdup.c \
- utf8.c
+ utf8.c random.c gettimeofday.c
# The header files for this library.
HSOURCES =
@@ -108,7 +108,7 @@ OBJECTS = clktck.o clock.o getenv.o oslib.o setlinebuf.o strnlen.o \
fmtullong.o fmtumax.o zcatfd.o zmapfd.o winsize.o wcsdup.o \
fpurge.o zgetline.o mbscmp.o uconvert.o ufuncs.o casemod.o \
input_avail.o mbscasecmp.o fnxform.o unicode.o shmbchar.o \
- utf8.o wcsnwidth.o ${LIBOBJS}
+ utf8.o random.o gettimeofday.o wcsnwidth.o ${LIBOBJS}
SUPPORT = Makefile
@@ -155,6 +155,7 @@ fnxform.o: fnxform.c
fpurge.o: fpurge.c
getcwd.o: getcwd.c
getenv.o: getenv.c
+gettimeofday.o: gettimeofday.c
inet_aton.o: inet_aton.c
input_avail.o: input_avail.c
itos.o: itos.c
@@ -170,6 +171,7 @@ netopen.o: netopen.c
oslib.o: oslib.c
pathcanon.o: pathcanon.c
pathphys.o: pathphys.c
+random.o: random.c
rename.o: rename.c
setlinebuf.o: setlinebuf.c
shmatch.o: shmatch.c
@@ -233,6 +235,7 @@ fnxform.o: ${BUILD_DIR}/config.h
fpurge.o: ${BUILD_DIR}/config.h
getcwd.o: ${BUILD_DIR}/config.h
getenv.o: ${BUILD_DIR}/config.h
+gettimeofday.o: ${BUILD_DIR}/config.h
inet_aton.o: ${BUILD_DIR}/config.h
input_avail.o: ${BUILD_DIR}/config.h
itos.o: ${BUILD_DIR}/config.h
@@ -248,6 +251,7 @@ netopen.o: ${BUILD_DIR}/config.h
oslib.o: ${BUILD_DIR}/config.h
pathcanon.o: ${BUILD_DIR}/config.h
pathphys.o: ${BUILD_DIR}/config.h
+random.o: ${BUILD_DIR}/config.h
rename.o: ${BUILD_DIR}/config.h
setlinebuf.o: ${BUILD_DIR}/config.h
shmatch.o: ${BUILD_DIR}/config.h
@@ -275,7 +279,7 @@ strtoumax.o: ${BUILD_DIR}/config.h
strtrans.o: ${BUILD_DIR}/config.h
times.o: ${BUILD_DIR}/config.h
timeval.o: ${BUILD_DIR}/config.h
-tmpfile.o: ${BUILD_DIR}/config.h
+tmpfile.o: ${BUILD_DIR}/config.h ${topdir}/config-top.h
uconvert.o: ${BUILD_DIR}/config.h
ufuncs.o: ${BUILD_DIR}/config.h
unicode.o: ${BUILD_DIR}/config.h
@@ -380,6 +384,10 @@ pathphys.o: ${BASHINCDIR}/posixstat.h ${BASHINCDIR}/filecntl.h
pathphys.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/chartypes.h
#pathphys.o: ${BUILD_DIR}/version.h
+random.o: ${topdir}/bashtypes.h ${BASHINCDIR}/stdc.h
+random.o: ${topdir}/bashansi.h ${BASHINCDIR}/ansi_stdlib.h
+random.o: ${BASHINCDIR}/filecntl.h
+
rename.o: ${topdir}/bashtypes.h ${BASHINCDIR}/stdc.h
rename.o: ${BASHINCDIR}/posixstat.h
@@ -505,6 +513,7 @@ times.o: ${BASHINCDIR}/systimes.h
times.o: ${BASHINCDIR}/posixtime.h
timeval.o: ${BASHINCDIR}/posixtime.h
+gettimeofday.o: ${BASHINCDIR}/posixtime.h
tmpfile.o: ${topdir}/bashtypes.h
tmpfile.o: ${BASHINCDIR}/chartypes.h
diff --git a/lib/sh/casemod.c b/lib/sh/casemod.c
index 7cdd4178..bdd96f84 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,2015 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -67,7 +67,7 @@
#define CASE_USEWORDS 0x1000 /* modify behavior to act on words in passed string */
-extern char *substring __P((char *, int, int));
+extern char *substring PARAMS((char *, int, int));
#ifndef UCHAR_MAX
# define UCHAR_MAX TYPE_MAXIMUM(unsigned char)
diff --git a/lib/sh/eaccess.c b/lib/sh/eaccess.c
index 3d8ae4e8..c3043ec1 100644
--- a/lib/sh/eaccess.c
+++ b/lib/sh/eaccess.c
@@ -1,6 +1,6 @@
/* eaccess.c - eaccess replacement for the shell, plus other access functions. */
-/* Copyright (C) 2006-2010 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,10 +52,10 @@ extern int errno;
#define F_OK 0
#endif /* R_OK */
-static int path_is_devfd __P((const char *));
-static int sh_stataccess __P((const char *, int));
+static int path_is_devfd PARAMS((const char *));
+static int sh_stataccess PARAMS((const char *, int));
#if HAVE_DECL_SETREGID
-static int sh_euidaccess __P((const char *, int));
+static int sh_euidaccess PARAMS((const char *, int));
#endif
static int
@@ -213,10 +213,10 @@ sh_eaccess (path, mode)
# else /* HAVE_EACCESS */ /* FreeBSD */
ret = eaccess (path, mode); /* XXX -- not always correct for X_OK */
# endif /* HAVE_EACCESS */
-# if defined (__FreeBSD__) || defined (SOLARIS)
+# if defined (__FreeBSD__) || defined (SOLARIS) || defined (_AIX)
if (ret == 0 && current_user.euid == 0 && mode == X_OK)
return (sh_stataccess (path, mode));
-# endif /* __FreeBSD__ || SOLARIS */
+# endif /* __FreeBSD__ || SOLARIS || _AIX */
return ret;
#elif defined (EFF_ONLY_OK) /* SVR4(?), SVR4.2 */
return access (path, mode|EFF_ONLY_OK);
diff --git a/lib/sh/fnxform.c b/lib/sh/fnxform.c
index d7e1b5ad..35d7e737 100644
--- a/lib/sh/fnxform.c
+++ b/lib/sh/fnxform.c
@@ -1,6 +1,6 @@
/* fnxform - use iconv(3) to transform strings to and from "filename" format */
-/* Copyright (C) 2009-2010 Free Software Foundation, Inc.
+/* Copyright (C) 2009-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -35,9 +35,9 @@
#endif
#if defined (HAVE_LOCALE_CHARSET)
-extern const char *locale_charset __P((void));
+extern const char *locale_charset PARAMS((void));
#else
-extern char *get_locale_var __P((char *));
+extern char *get_locale_var PARAMS((char *));
#endif
#if defined (HAVE_ICONV)
@@ -49,9 +49,9 @@ static iconv_t conv_tofs = (iconv_t)-1;
static char *outbuf = 0;
static size_t outlen = 0;
-static char *curencoding __P((void));
-static void init_tofs __P((void));
-static void init_fromfs __P((void));
+static char *curencoding PARAMS((void));
+static void init_tofs PARAMS((void));
+static void init_fromfs PARAMS((void));
static char *
curencoding ()
diff --git a/lib/sh/fpurge.c b/lib/sh/fpurge.c
index 13e8c78e..8cd4e368 100644
--- a/lib/sh/fpurge.c
+++ b/lib/sh/fpurge.c
@@ -1,6 +1,6 @@
/* fpurge - Flushing buffers of a FILE stream. */
-/* Copyright (C) 2007-2010 Free Software Foundation, Inc.
+/* Copyright (C) 2007-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -29,7 +29,7 @@
#if HAVE_FPURGE
# define fpurge _bash_fpurge
#endif
-extern int fpurge __P((FILE *stream));
+extern int fpurge PARAMS((FILE *stream));
#if HAVE___FPURGE /* glibc >= 2.2, Haiku, Solaris >= 7 */
# include <stdio_ext.h>
diff --git a/lib/sh/gettimeofday.c b/lib/sh/gettimeofday.c
new file mode 100644
index 00000000..b654c154
--- /dev/null
+++ b/lib/sh/gettimeofday.c
@@ -0,0 +1,35 @@
+/* gettimeofday.c - gettimeofday replacement using time() */
+
+/* Copyright (C) 2020 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#if !defined (HAVE_GETTIMEOFDAY)
+
+#include "posixtime.h"
+
+/* A version of gettimeofday that just sets tv_sec from time(3) */
+int
+gettimeofday (struct timeval *tv, void *tz)
+{
+ tv->tv_sec = (time_t) time ((time_t *)0);
+ tv->tv_usec = 0;
+ return 0;
+}
+#endif
diff --git a/lib/sh/input_avail.c b/lib/sh/input_avail.c
index ac157a9f..695165fd 100644
--- a/lib/sh/input_avail.c
+++ b/lib/sh/input_avail.c
@@ -1,7 +1,7 @@
/* input_avail.c -- check whether or not data is available for reading on a
specified file descriptor. */
-/* Copyright (C) 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -33,6 +33,10 @@
# include <sys/file.h>
#endif /* HAVE_SYS_FILE_H */
+#if defined (HAVE_PSELECT)
+# include <signal.h>
+#endif
+
#if defined (HAVE_UNISTD_H)
# include <unistd.h>
#endif /* HAVE_UNISTD_H */
@@ -82,10 +86,8 @@ input_avail (fd)
timeout.tv_usec = 0;
result = select (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, &timeout);
return ((result <= 0) ? 0 : 1);
-
#endif
- result = -1;
#if defined (FIONREAD)
errno = 0;
result = ioctl (fd, FIONREAD, &chars_avail);
@@ -96,3 +98,68 @@ input_avail (fd)
return 0;
}
+
+/* Wait until NCHARS are available for reading on file descriptor FD.
+ This can wait indefinitely. Return -1 on error. */
+int
+nchars_avail (fd, nchars)
+ int fd;
+ int nchars;
+{
+ int result, chars_avail;
+#if defined(HAVE_SELECT)
+ fd_set readfds, exceptfds;
+#endif
+#if defined (HAVE_PSELECT)
+ sigset_t set, oset;
+#endif
+
+ if (fd < 0 || nchars < 0)
+ return -1;
+ if (nchars == 0)
+ return (input_avail (fd));
+
+ chars_avail = 0;
+
+#if defined (HAVE_SELECT)
+ FD_ZERO (&readfds);
+ FD_ZERO (&exceptfds);
+ FD_SET (fd, &readfds);
+ FD_SET (fd, &exceptfds);
+#endif
+#if defined (HAVE_SELECT) || defined (HAVE_PSELECT)
+ sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &set);
+# ifdef SIGCHLD
+ sigaddset (&set, SIGCHLD);
+# endif
+ sigemptyset (&oset);
+#endif
+
+ while (1)
+ {
+ result = 0;
+#if defined (HAVE_PSELECT)
+ /* XXX - use pselect(2) to block SIGCHLD atomically */
+ result = pselect (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, (struct timespec *)NULL, &set);
+#elif defined (HAVE_SELECT)
+ sigprocmask (SIG_BLOCK, &set, &oset);
+ result = select (fd + 1, &readfds, (fd_set *)NULL, &exceptfds, (struct timeval *)NULL);
+ sigprocmask (SIG_BLOCK, &oset, (sigset_t *)NULL);
+#endif
+ if (result < 0)
+ return -1;
+
+#if defined (FIONREAD)
+ errno = 0;
+ result = ioctl (fd, FIONREAD, &chars_avail);
+ if (result == -1 && errno == EIO)
+ return -1;
+ if (chars_avail >= nchars)
+ break;
+#else
+ break;
+#endif
+ }
+
+ return 0;
+}
diff --git a/lib/sh/mailstat.c b/lib/sh/mailstat.c
index 79b431ae..bd5c25fb 100644
--- a/lib/sh/mailstat.c
+++ b/lib/sh/mailstat.c
@@ -60,7 +60,7 @@ mailstat(path, st)
struct stat st_ret, st_tmp;
DIR *dd;
struct dirent *fn;
- char dir[PATH_MAX * 2], file[PATH_MAX * 2];
+ char dir[PATH_MAX * 2], file[PATH_MAX * 2 + 1];
int i, l;
time_t atime, mtime;
diff --git a/lib/sh/makepath.c b/lib/sh/makepath.c
index ef01718b..ab46c967 100644
--- a/lib/sh/makepath.c
+++ b/lib/sh/makepath.c
@@ -1,6 +1,6 @@
/* makepath.c - glue PATH and DIR together into a full pathname. */
-/* Copyright (C) 1987, 1989, 1991 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,7 +45,7 @@
# define MP_IGNDOT 0x08
#endif
-extern char *get_working_directory __P((char *));
+extern char *get_working_directory PARAMS((char *));
static char *nullpath = "";
diff --git a/lib/sh/mktime.c b/lib/sh/mktime.c
index b2b0d3f2..9ee675be 100644
--- a/lib/sh/mktime.c
+++ b/lib/sh/mktime.c
@@ -1,6 +1,6 @@
/* mktime - convert struct tm to a time_t value */
-/* Copyright (C) 1993-2002 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
Contributed by Paul Eggert (eggert@twinsun.com).
@@ -56,13 +56,13 @@
#define mktime my_mktime
#endif /* DEBUG_MKTIME */
-#ifndef __P
+#ifndef PARAMS
#if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
-#define __P(args) args
+#define PARAMS(args) args
#else
-#define __P(args) ()
+#define PARAMS(args) ()
#endif /* GCC. */
-#endif /* Not __P. */
+#endif /* Not PARAMS. */
#ifndef CHAR_BIT
#define CHAR_BIT 8
@@ -117,13 +117,13 @@ const unsigned short int __mon_yday[2][13] =
{ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 }
};
-static time_t ydhms_tm_diff __P ((int, int, int, int, int, const struct tm *));
-time_t __mktime_internal __P ((struct tm *,
+static time_t ydhms_tm_diff PARAMS ((int, int, int, int, int, const struct tm *));
+time_t __mktime_internal PARAMS ((struct tm *,
struct tm *(*) (const time_t *, struct tm *),
time_t *));
-static struct tm *my_localtime_r __P ((const time_t *, struct tm *));
+static struct tm *my_localtime_r PARAMS ((const time_t *, struct tm *));
static struct tm *
my_localtime_r (t, tp)
const time_t *t;
@@ -193,7 +193,7 @@ mktime (tp)
time_t
__mktime_internal (tp, convert, offset)
struct tm *tp;
- struct tm *(*convert) __P ((const time_t *, struct tm *));
+ struct tm *(*convert) PARAMS ((const time_t *, struct tm *));
time_t *offset;
{
time_t t, dt, t0;
diff --git a/lib/sh/netopen.c b/lib/sh/netopen.c
index bc3d8f8a..ee0baf66 100644
--- a/lib/sh/netopen.c
+++ b/lib/sh/netopen.c
@@ -5,7 +5,7 @@
* chet@ins.CWRU.Edu
*/
-/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -63,18 +63,18 @@ extern int errno;
#endif
#if !defined (HAVE_INET_ATON)
-extern int inet_aton __P((const char *, struct in_addr *));
+extern int inet_aton PARAMS((const char *, struct in_addr *));
#endif
#ifndef HAVE_GETADDRINFO
-static int _getaddr __P((char *, struct in_addr *));
-static int _getserv __P((char *, int, unsigned short *));
-static int _netopen4 __P((char *, char *, int));
+static int _getaddr PARAMS((char *, struct in_addr *));
+static int _getserv PARAMS((char *, int, unsigned short *));
+static int _netopen4 PARAMS((char *, char *, int));
#else /* HAVE_GETADDRINFO */
-static int _netopen6 __P((char *, char *, int));
+static int _netopen6 PARAMS((char *, char *, int));
#endif
-static int _netopen __P((char *, char *, int));
+static int _netopen PARAMS((char *, char *, int));
#ifndef HAVE_GETADDRINFO
/* Stuff the internet address corresponding to HOST into AP, in network
diff --git a/lib/sh/pathcanon.c b/lib/sh/pathcanon.c
index f9506dff..7d0df9f9 100644
--- a/lib/sh/pathcanon.c
+++ b/lib/sh/pathcanon.c
@@ -90,7 +90,7 @@ _path_isdir (path)
/* Canonicalize PATH, and return a new path. The new path differs from PATH
in that:
- Multple `/'s are collapsed to a single `/'.
+ Multiple `/'s are collapsed to a single `/'.
Leading `./'s and trailing `/.'s are removed.
Trailing `/'s are removed.
Non-leading `../'s and trailing `..'s are handled by removing
diff --git a/lib/sh/pathphys.c b/lib/sh/pathphys.c
index 99390cef..95b72f19 100644
--- a/lib/sh/pathphys.c
+++ b/lib/sh/pathphys.c
@@ -1,6 +1,6 @@
/* pathphys.c -- return pathname with all symlinks expanded. */
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -46,7 +46,7 @@
extern int errno;
#endif /* !errno */
-extern char *get_working_directory __P((char *));
+extern char *get_working_directory PARAMS((char *));
static int
_path_readlink (path, buf, bufsiz)
diff --git a/lib/sh/random.c b/lib/sh/random.c
new file mode 100644
index 00000000..1eaa71aa
--- /dev/null
+++ b/lib/sh/random.c
@@ -0,0 +1,240 @@
+/* random.c -- Functions for managing 16-bit and 32-bit random numbers. */
+
+/* Copyright (C) 2020 Free Software Foundation, Inc.
+
+ This file is part of GNU Bash, the Bourne Again SHell.
+
+ Bash is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Bash is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Bash. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "config.h"
+
+#include "bashtypes.h"
+
+#if defined (HAVE_SYS_RANDOM_H)
+# include <sys/random.h>
+#endif
+
+#if defined (HAVE_UNISTD_H)
+# include <unistd.h>
+#endif
+#include "filecntl.h"
+
+#include <stdio.h>
+#include "bashansi.h"
+
+#include "shell.h"
+
+extern time_t shell_start_time;
+
+extern int last_random_value;
+
+static u_bits32_t intrand32 PARAMS((u_bits32_t));
+static u_bits32_t genseed PARAMS((void));
+
+static u_bits32_t brand32 PARAMS((void));
+static void sbrand32 PARAMS((u_bits32_t));
+static void perturb_rand32 PARAMS((void));
+
+/* The random number seed. You can change this by setting RANDOM. */
+static u_bits32_t rseed = 1;
+
+/* Returns a 32-bit pseudo-random number. */
+static u_bits32_t
+intrand32 (last)
+ u_bits32_t last;
+{
+ /* Minimal Standard generator from
+ "Random number generators: good ones are hard to find",
+ Park and Miller, Communications of the ACM, vol. 31, no. 10,
+ October 1988, p. 1195. Filtered through FreeBSD.
+
+ x(n+1) = 16807 * x(n) mod (m).
+
+ We split up the calculations to avoid overflow.
+
+ h = last / q; l = x - h * q; t = a * l - h * r
+ m = 2147483647, a = 16807, q = 127773, r = 2836
+
+ There are lots of other combinations of constants to use; look at
+ https://www.gnu.org/software/gsl/manual/html_node/Other-random-number-generators.html#Other-random-number-generators */
+
+ bits32_t h, l, t;
+ u_bits32_t ret;
+
+ /* Can't seed with 0. */
+ ret = (last == 0) ? 123459876 : last;
+ h = ret / 127773;
+ l = ret - (127773 * h);
+ t = 16807 * l - 2836 * h;
+ ret = (t < 0) ? t + 0x7fffffff : t;
+
+ return (ret);
+}
+
+static u_bits32_t
+genseed ()
+{
+ struct timeval tv;
+ u_bits32_t iv;
+
+ gettimeofday (&tv, NULL);
+ iv = (u_bits32_t)seedrand; /* let the compiler truncate */
+ iv = tv.tv_sec ^ tv.tv_usec ^ getpid () ^ getppid () ^ current_user.uid ^ iv;
+ return (iv);
+}
+
+#define BASH_RAND_MAX 32767 /* 0x7fff - 16 bits */
+
+/* Returns a pseudo-random number between 0 and 32767. */
+int
+brand ()
+{
+ unsigned int ret;
+
+ rseed = intrand32 (rseed);
+ if (shell_compatibility_level > 50)
+ ret = (rseed >> 16) ^ (rseed & 65535);
+ else
+ ret = rseed;
+ return (ret & BASH_RAND_MAX);
+}
+
+/* Set the random number generator seed to SEED. */
+void
+sbrand (seed)
+ unsigned long seed;
+{
+ rseed = seed;
+ last_random_value = 0;
+}
+
+void
+seedrand ()
+{
+ u_bits32_t iv;
+
+ iv = genseed ();
+ sbrand (iv);
+}
+
+static u_bits32_t rseed32 = 1073741823;
+static int last_rand32;
+
+static int urandfd = -1;
+
+#define BASH_RAND32_MAX 0x7fffffff /* 32 bits */
+
+/* Returns a 32-bit pseudo-random number between 0 and 4294967295. */
+static u_bits32_t
+brand32 ()
+{
+ u_bits32_t ret;
+
+ rseed32 = intrand32 (rseed32);
+ return (rseed32 & BASH_RAND32_MAX);
+}
+
+static void
+sbrand32 (seed)
+ u_bits32_t seed;
+{
+ last_rand32 = rseed32 = seed;
+}
+
+void
+seedrand32 ()
+{
+ u_bits32_t iv;
+
+ iv = genseed ();
+ sbrand32 (iv);
+}
+
+static void
+perturb_rand32 ()
+{
+ rseed32 ^= genseed ();
+}
+
+/* Force another attempt to open /dev/urandom on the next call to get_urandom32 */
+void
+urandom_close ()
+{
+ if (urandfd >= 0)
+ close (urandfd);
+ urandfd = -1;
+}
+
+#if !defined (HAVE_GETRANDOM)
+/* Imperfect emulation of getrandom(2). */
+#ifndef GRND_NONBLOCK
+# define GRND_NONBLOCK 1
+# define GRND_RANDOM 2
+#endif
+
+static ssize_t
+getrandom (buf, len, flags)
+ void *buf;
+ size_t len;
+ unsigned int flags;
+{
+ int oflags;
+ ssize_t r;
+ static int urand_unavail = 0;
+
+#if HAVE_GETENTROPY
+ r = getentropy (buf, len);
+ return (r == 0) ? len : -1;
+#endif
+
+ if (urandfd == -1 && urand_unavail == 0)
+ {
+ oflags = O_RDONLY;
+ if (flags & GRND_NONBLOCK)
+ oflags |= O_NONBLOCK;
+ urandfd = open ("/dev/urandom", oflags, 0);
+ if (urandfd >= 0)
+ SET_CLOSE_ON_EXEC (urandfd);
+ else
+ {
+ urand_unavail = 1;
+ return -1;
+ }
+ }
+ if (urandfd >= 0 && (r = read (urandfd, buf, len)) == len)
+ return (r);
+ return -1;
+}
+#endif
+
+u_bits32_t
+get_urandom32 ()
+{
+ u_bits32_t ret;
+
+ if (getrandom ((void *)&ret, sizeof (ret), GRND_NONBLOCK) == sizeof (ret))
+ return (last_rand32 = ret);
+
+#if defined (HAVE_ARC4RANDOM)
+ ret = arc4random ();
+#else
+ if (subshell_environment)
+ perturb_rand32 ();
+ do
+ ret = brand32 ();
+ while (ret == last_rand32);
+#endif
+ return (last_rand32 = ret);
+}
diff --git a/lib/sh/shmatch.c b/lib/sh/shmatch.c
index da05211e..d6e7f904 100644
--- a/lib/sh/shmatch.c
+++ b/lib/sh/shmatch.c
@@ -64,7 +64,7 @@ sh_regmatch (string, pattern, flags)
#endif
rflags = REG_EXTENDED;
- if (glob_ignore_case || match_ignore_case)
+ if (match_ignore_case)
rflags |= REG_ICASE;
#if !defined (ARRAY_VARS)
rflags |= REG_NOSUB;
@@ -107,7 +107,9 @@ sh_regmatch (string, pattern, flags)
}
}
+#if 0
VSETATTR (rematch, att_readonly);
+#endif
free (subexp_str);
free (matches);
diff --git a/lib/sh/shquote.c b/lib/sh/shquote.c
index 97e2bc53..680f84ed 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,8 +36,8 @@
#include "shmbchar.h"
#include "shmbutil.h"
-extern char *ansic_quote __P((char *, int, int *));
-extern int ansic_shouldquote __P((const char *));
+extern char *ansic_quote PARAMS((char *, int, int *));
+extern int ansic_shouldquote PARAMS((const char *));
/* Default set of characters that should be backslash-quoted in strings */
static const char bstab[256] =
@@ -136,8 +136,15 @@ sh_double_quote (string)
const char *string;
{
register unsigned char c;
+ int mb_cur_max;
char *result, *r;
- const char *s;
+ size_t slen;
+ const char *s, *send;
+ DECLARE_MBSTATE;
+
+ slen = strlen (string);
+ send = string + slen;
+ mb_cur_max = MB_CUR_MAX;
result = (char *)xmalloc (3 + (2 * strlen (string)));
r = result;
@@ -148,12 +155,19 @@ 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 '\\'? */
+
+#if defined (HANDLE_MULTIBYTE)
+ if ((locale_utf8locale && (c & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0))
+ {
+ COPY_CHAR_P (r, s, send);
+ s--; /* compensate for auto-increment in loop above */
+ continue;
+ }
#endif
+ /* Assume that the string will not be further expanded, so no need to
+ add CTLESC to protect CTLESC or CTLNUL. */
*r++ = c;
}
@@ -171,16 +185,29 @@ sh_mkdoublequoted (s, slen, flags)
int slen, flags;
{
char *r, *ret;
- int rlen;
+ const char *send;
+ int rlen, mb_cur_max;
+ DECLARE_MBSTATE;
+ send = s + slen;
+ mb_cur_max = flags ? MB_CUR_MAX : 1;
rlen = (flags == 0) ? slen + 3 : (2 * slen) + 1;
ret = r = (char *)xmalloc (rlen);
-
+
*r++ = '"';
while (*s)
{
if (flags && *s == '"')
*r++ = '\\';
+
+#if defined (HANDLE_MULTIBYTE)
+ if (flags && ((locale_utf8locale && (*s & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (*s) == 0)))
+ {
+ COPY_CHAR_P (r, s, send);
+ continue;
+ }
+#endif
*r++ = *s++;
}
*r++ = '"';
@@ -259,7 +286,8 @@ sh_backslash_quote (string, table, flags)
*r++ = c;
continue;
}
- if (mb_cur_max > 1 && is_basic (c) == 0)
+ if ((locale_utf8locale && (c & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0))
{
COPY_CHAR_P (r, s, send);
s--; /* compensate for auto-increment in loop above */
@@ -291,18 +319,35 @@ sh_backslash_quote_for_double_quotes (string)
char *string;
{
unsigned char c;
- char *result, *r, *s;
-
- result = (char *)xmalloc (2 * strlen (string) + 1);
+ char *result, *r, *s, *send;
+ size_t slen;
+ int mb_cur_max;
+ DECLARE_MBSTATE;
+
+ slen = strlen (string);
+ send = string + slen;
+ mb_cur_max = MB_CUR_MAX;
+ result = (char *)xmalloc (2 * slen + 1);
for (r = result, s = string; s && (c = *s); s++)
{
- if (sh_syntaxtab[c] & CBSDQUOTE)
+ /* Backslash-newline disappears within double quotes, so don't add one. */
+ if ((sh_syntaxtab[c] & CBSDQUOTE) && c != '\n')
*r++ = '\\';
- /* I should probably add flags for these to sh_syntaxtab[] */
+ /* I should probably use the CSPECL flag for these in sh_syntaxtab[] */
else if (c == CTLESC || c == CTLNUL)
*r++ = CTLESC; /* could be '\\'? */
+#if defined (HANDLE_MULTIBYTE)
+ if ((locale_utf8locale && (c & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 1 && is_basic (c) == 0))
+ {
+ COPY_CHAR_P (r, s, send);
+ s--; /* compensate for auto-increment in loop above */
+ continue;
+ }
+#endif
+
*r++ = c;
}
diff --git a/lib/sh/snprintf.c b/lib/sh/snprintf.c
index 6e5892ee..406a3a50 100644
--- a/lib/sh/snprintf.c
+++ b/lib/sh/snprintf.c
@@ -9,7 +9,7 @@
Unix snprintf implementation.
derived from inetutils/libinetutils/snprintf.c Version 1.1
- Copyright (C) 2001,2006,2010,2012 Free Software Foundation, Inc.
+ Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -129,8 +129,8 @@
# define FL_ADDBASE 0x02 /* add base# prefix to converted value */
# define FL_HEXUPPER 0x04 /* use uppercase when converting to hex */
# define FL_UNSIGNED 0x08 /* don't add any sign */
-extern char *fmtulong __P((unsigned long int, int, char *, size_t, int));
-extern char *fmtullong __P((unsigned long long int, int, char *, size_t, int));
+extern char *fmtulong PARAMS((unsigned long int, int, char *, size_t, int));
+extern char *fmtullong PARAMS((unsigned long long int, int, char *, size_t, int));
#endif
#ifndef FREE
@@ -271,38 +271,38 @@ struct DATA
/* the floating point stuff */
#ifdef FLOATING_POINT
-static double pow_10 __P((int));
-static int log_10 __P((double));
-static double integral __P((double, double *));
-static char *numtoa __P((double, int, int, char **));
+static double pow_10 PARAMS((int));
+static int log_10 PARAMS((double));
+static double integral PARAMS((double, double *));
+static char *numtoa PARAMS((double, int, int, char **));
#endif
-static void init_data __P((struct DATA *, char *, size_t, const char *, int));
-static void init_conv_flag __P((struct DATA *));
+static void init_data PARAMS((struct DATA *, char *, size_t, const char *, int));
+static void init_conv_flag PARAMS((struct DATA *));
/* for the format */
#ifdef FLOATING_POINT
-static void floating __P((struct DATA *, double));
-static void exponent __P((struct DATA *, double));
+static void floating PARAMS((struct DATA *, double));
+static void exponent PARAMS((struct DATA *, double));
#endif
-static void number __P((struct DATA *, unsigned long, int));
+static void number PARAMS((struct DATA *, unsigned long, int));
#ifdef HAVE_LONG_LONG
-static void lnumber __P((struct DATA *, unsigned long long, int));
+static void lnumber PARAMS((struct DATA *, unsigned long long, int));
#endif
-static void pointer __P((struct DATA *, unsigned long));
-static void strings __P((struct DATA *, char *));
+static void pointer PARAMS((struct DATA *, unsigned long));
+static void strings PARAMS((struct DATA *, char *));
#ifdef FLOATING_POINT
# define FALLBACK_FMTSIZE 32
# define FALLBACK_BASE 4096
# define LFALLBACK_BASE 5120
# ifdef HAVE_LONG_DOUBLE
-static void ldfallback __P((struct DATA *, const char *, const char *, long double));
+static void ldfallback PARAMS((struct DATA *, const char *, const char *, long double));
# endif
-static void dfallback __P((struct DATA *, const char *, const char *, double));
+static void dfallback PARAMS((struct DATA *, const char *, const char *, double));
#endif
-static char *groupnum __P((char *));
+static char *groupnum PARAMS((char *));
#if defined (HAVE_LONG_DOUBLE)
# define LONGDOUBLE long double
@@ -332,9 +332,9 @@ static char *groupnum __P((char *));
#ifdef DRIVER
static void memory_error_and_abort ();
-static void *xmalloc __P((size_t));
-static void *xrealloc __P((void *, size_t));
-static void xfree __P((void *));
+static void *xmalloc PARAMS((size_t));
+static void *xrealloc PARAMS((void *, size_t));
+static void xfree PARAMS((void *));
#else
# include <xmalloc.h>
#endif
diff --git a/lib/sh/spell.c b/lib/sh/spell.c
index da78690c..cdf465b2 100644
--- a/lib/sh/spell.c
+++ b/lib/sh/spell.c
@@ -1,6 +1,6 @@
/* spell.c -- spelling correction for pathnames. */
-/* Copyright (C) 2000 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -40,8 +40,8 @@
#include <maxpath.h>
#include <stdc.h>
-static int mindist __P((char *, char *, char *));
-static int spdist __P((char *, char *));
+static int mindist PARAMS((char *, char *, char *));
+static int spdist PARAMS((char *, char *));
/*
* `spname' and its helpers are inspired by the code in "The UNIX
diff --git a/lib/sh/strftime.c b/lib/sh/strftime.c
index 0ababc14..08ccb9a3 100644
--- a/lib/sh/strftime.c
+++ b/lib/sh/strftime.c
@@ -62,6 +62,7 @@
#include <stdio.h>
#include <ctype.h>
#include <time.h>
+#include <errno.h>
#if defined(TM_IN_SYS_TIME)
#include <sys/types.h>
@@ -80,6 +81,10 @@
#undef strchr /* avoid AIX weirdness */
+#if !defined (errno)
+extern int errno;
+#endif
+
#if defined (SHELL)
extern char *get_string_value (const char *);
#endif
@@ -172,7 +177,7 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
char *start = s;
auto char tbuf[100];
long off;
- int i, w;
+ int i, w, oerrno;
long y;
static short first = 1;
#ifdef POSIX_SEMANTICS
@@ -217,6 +222,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
};
static const char *ampm[] = { "AM", "PM", };
+ oerrno = errno;
+
if (s == NULL || format == NULL || timeptr == NULL || maxsize == 0)
return 0;
@@ -642,7 +649,7 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
sprintf(tbuf+1, "%02ld%02ld", off/60, off%60);
break;
- case 'Z': /* time zone name or abbrevation */
+ case 'Z': /* time zone name or abbreviation */
#ifdef HAVE_TZNAME
i = (daylight && timeptr->tm_isdst > 0); /* 0 or 1 */
strcpy(tbuf, tzname[i]);
@@ -716,6 +723,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
out:
if (s < endp && *format == '\0') {
*s = '\0';
+ if (s == start)
+ errno = oerrno;
return (s - start);
} else
return 0;
@@ -939,7 +948,7 @@ static char *array[] =
"(%%H) hour (24-hour clock, 00..23) %H",
"(%%I) hour (12-hour clock, 01..12) %I",
"(%%M) minute (00..59) %M",
- "(%%N) Emporer/Era Name %N",
+ "(%%N) Emperor/Era Name %N",
"(%%O) Locale extensions (ignored) %O",
"(%%R) time, 24-hour (%%H:%%M) %R",
"(%%S) second (00..60) %S",
@@ -960,7 +969,7 @@ static char *array[] =
"(%%k) hour, 24-hour clock, blank pad ( 0..23) %k",
"(%%l) hour, 12-hour clock, blank pad ( 0..12) %l",
"(%%m) month (01..12) %m",
- "(%%o) Emporer/Era Year %o",
+ "(%%o) Emperor/Era Year %o",
"(%%p) locale's AM or PM based on 12-hour clock %p",
"(%%r) time, 12-hour (same as %%I:%%M:%%S %%p) %r",
"(%%u) ISO 8601: Weekday as decimal number [1 (Monday) - 7] %u",
diff --git a/lib/sh/stringlist.c b/lib/sh/stringlist.c
index b0c272ae..3f28b631 100644
--- a/lib/sh/stringlist.c
+++ b/lib/sh/stringlist.c
@@ -1,6 +1,6 @@
/* stringlist.c - functions to handle a generic `list of strings' structure */
-/* Copyright (C) 2000-2002 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -255,7 +255,7 @@ strlist_sort (sl)
{
if (sl == 0 || sl->list_len == 0 || sl->list == 0)
return;
- strvec_sort (sl->list);
+ strvec_sort (sl->list, 0);
}
STRINGLIST *
diff --git a/lib/sh/stringvec.c b/lib/sh/stringvec.c
index 3bb4ab70..86000429 100644
--- a/lib/sh/stringvec.c
+++ b/lib/sh/stringvec.c
@@ -122,7 +122,6 @@ strvec_remove (array, name)
return 0;
}
-#ifdef INCLUDE_UNUSED
/* Find NAME in ARRAY. Return the index of NAME, or -1 if not present.
ARRAY should be NULL terminated. */
int
@@ -137,7 +136,6 @@ strvec_search (array, name)
return (-1);
}
-#endif
/* Allocate and return a new copy of ARRAY and its contents. */
char **
@@ -158,6 +156,28 @@ strvec_copy (array)
return (ret);
}
+/* Comparison routine for use by qsort that conforms to the new Posix
+ requirements (http://austingroupbugs.net/view.php?id=1070).
+
+ Perform a bytewise comparison if *S1 and *S2 collate equally. */
+int
+strvec_posixcmp (s1, s2)
+ register char **s1, **s2;
+{
+ int result;
+
+#if defined (HAVE_STRCOLL)
+ result = strcoll (*s1, *s2);
+ if (result != 0)
+ return result;
+#endif
+
+ if ((result = **s1 - **s2) == 0)
+ result = strcmp (*s1, *s2);
+
+ return (result);
+}
+
/* Comparison routine for use with qsort() on arrays of strings. Uses
strcoll(3) if available, otherwise it uses strcmp(3). */
int
@@ -178,10 +198,14 @@ strvec_strcmp (s1, s2)
/* Sort ARRAY, a null terminated array of pointers to strings. */
void
-strvec_sort (array)
+strvec_sort (array, posix)
char **array;
+ int posix;
{
- qsort (array, strvec_len (array), sizeof (char *), (QSFUNC *)strvec_strcmp);
+ if (posix)
+ qsort (array, strvec_len (array), sizeof (char *), (QSFUNC *)strvec_posixcmp);
+ else
+ qsort (array, strvec_len (array), sizeof (char *), (QSFUNC *)strvec_strcmp);
}
/* Cons up a new array of words. The words are taken from LIST,
diff --git a/lib/sh/strtod.c b/lib/sh/strtod.c
index 851d99b9..55e11540 100644
--- a/lib/sh/strtod.c
+++ b/lib/sh/strtod.c
@@ -49,6 +49,10 @@ extern int errno;
# define HUGE_VAL HUGE
#endif
+#ifndef locale_decpoint
+extern int locale_decpoint PARAMS((void));
+#endif
+
/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the
character after the last one used in the number is put in *ENDPTR. */
double
@@ -62,6 +66,7 @@ strtod (nptr, endptr)
/* The number so far. */
double num;
+ int radixchar;
int got_dot; /* Found a decimal point. */
int got_digit; /* Seen any digits. */
@@ -85,6 +90,7 @@ strtod (nptr, endptr)
if (*s == '-' || *s == '+')
++s;
+ radixchar = locale_decpoint ();
num = 0.0;
got_dot = 0;
got_digit = 0;
@@ -113,7 +119,7 @@ strtod (nptr, endptr)
if (got_dot)
--exponent;
}
- else if (!got_dot && *s == '.')
+ else if (!got_dot && *s == radixchar)
/* Record that we have found the decimal point. */
got_dot = 1;
else
diff --git a/lib/sh/strtoimax.c b/lib/sh/strtoimax.c
index a4170f06..676e02ef 100644
--- a/lib/sh/strtoimax.c
+++ b/lib/sh/strtoimax.c
@@ -1,6 +1,6 @@
/* strtoimax - convert string representation of a number into an intmax_t value. */
-/* Copyright 1999-2009 Free Software Foundation, Inc.
+/* Copyright 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,14 +45,14 @@
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRTOL
-extern long strtol __P((const char *, char **, int));
+extern long strtol PARAMS((const char *, char **, int));
#endif
#ifndef HAVE_DECL_STRTOLL
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRTOLL && HAVE_LONG_LONG
-extern long long strtoll __P((const char *, char **, int));
+extern long long strtoll PARAMS((const char *, char **, int));
#endif
#ifdef strtoimax
diff --git a/lib/sh/strtoumax.c b/lib/sh/strtoumax.c
index 09423add..0247e57b 100644
--- a/lib/sh/strtoumax.c
+++ b/lib/sh/strtoumax.c
@@ -1,6 +1,6 @@
/* strtoumax - convert string representation of a number into an uintmax_t value. */
-/* Copyright 1999-2009 Free Software Foundation, Inc.
+/* Copyright 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,14 +45,14 @@
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRTOUL
-extern unsigned long strtoul __P((const char *, char **, int));
+extern unsigned long strtoul PARAMS((const char *, char **, int));
#endif
#ifndef HAVE_DECL_STRTOULL
"this configure-time declaration test was not run"
#endif
#if !HAVE_DECL_STRTOULL && HAVE_UNSIGNED_LONG_LONG
-extern unsigned long long strtoull __P((const char *, char **, int));
+extern unsigned long long strtoull PARAMS((const char *, char **, int));
#endif
#ifdef strtoumax
diff --git a/lib/sh/strtrans.c b/lib/sh/strtrans.c
index 48f255f5..b2b1acca 100644
--- a/lib/sh/strtrans.c
+++ b/lib/sh/strtrans.c
@@ -55,12 +55,18 @@ ansicstr (string, len, flags, sawc, rlen)
int c, temp;
char *ret, *r, *s;
unsigned long v;
+ size_t clen;
+ int b, mb_cur_max;
+#if defined (HANDLE_MULTIBYTE)
+ wchar_t wc;
+#endif
if (string == 0 || *string == '\0')
return ((char *)NULL);
+ mb_cur_max = MB_CUR_MAX;
#if defined (HANDLE_MULTIBYTE)
- temp = 4*len + 1;
+ temp = 4*len + 4;
if (temp < 12)
temp = 12; /* ensure enough for eventual u32cesc */
ret = (char *)xmalloc (temp);
@@ -71,7 +77,21 @@ ansicstr (string, len, flags, sawc, rlen)
{
c = *s++;
if (c != '\\' || *s == '\0')
- *r++ = c;
+ {
+ clen = 1;
+#if defined (HANDLE_MULTIBYTE)
+ if ((locale_utf8locale && (c & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 0 && is_basic (c) == 0))
+ {
+ clen = mbrtowc (&wc, s - 1, mb_cur_max, 0);
+ if (MB_INVALIDCH (clen))
+ clen = 1;
+ }
+#endif
+ *r++ = c;
+ for (--clen; clen > 0; clen--)
+ *r++ = *s++;
+ }
else
{
switch (c = *s++)
diff --git a/lib/sh/times.c b/lib/sh/times.c
index 47ddf577..2423078a 100644
--- a/lib/sh/times.c
+++ b/lib/sh/times.c
@@ -1,6 +1,6 @@
/* times.c - times(3) library function */
-/* Copyright (C) 1999 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -30,7 +30,7 @@
# include <sys/resource.h>
#endif /* HAVE_SYS_RESOURCE_H && HAVE_GETRUSAGE */
-extern long get_clk_tck __P((void));
+extern long get_clk_tck PARAMS((void));
#define CONVTCK(r) (r.tv_sec * clk_tck + r.tv_usec / (1000000 / clk_tck))
@@ -58,7 +58,7 @@ times(tms)
tms->tms_cutime = CONVTCK(ru.ru_utime);
tms->tms_cstime = CONVTCK(ru.ru_stime);
- if (gettimeofday(&tv, (struct timezone *) 0) < 0)
+ if (gettimeofday(&tv, NULL) < 0)
return ((clock_t)-1);
rv = (clock_t)(CONVTCK(tv));
#else /* !HAVE_GETRUSAGE */
diff --git a/lib/sh/timeval.c b/lib/sh/timeval.c
index c4b61dc8..f2ca7624 100644
--- a/lib/sh/timeval.c
+++ b/lib/sh/timeval.c
@@ -67,6 +67,32 @@ addtimeval (d, t1, t2)
return d;
}
+struct timeval *
+multimeval (d, m)
+ struct timeval *d;
+ int m;
+{
+ time_t t;
+
+ t = d->tv_usec * m;
+ d->tv_sec = d->tv_sec * m + t / 1000000;
+ d->tv_usec = t % 1000000;
+ return d;
+}
+
+struct timeval *
+divtimeval (d, m)
+ struct timeval *d;
+ int m;
+{
+ time_t t;
+
+ t = d->tv_sec;
+ d->tv_sec = t / m;
+ d->tv_usec = (d->tv_usec + 1000000 * (t % m)) / m;
+ return d;
+}
+
/* Do "cpu = ((user + sys) * 10000) / real;" with timevals.
Barely-tested code from Deven T. Corzine <deven@ties.org>. */
int
@@ -149,4 +175,5 @@ print_timeval (fp, tvp)
fprintf (fp, "%ldm%d%c%03ds", minutes, seconds, locale_decpoint (), seconds_fraction);
}
+
#endif /* HAVE_TIMEVAL */
diff --git a/lib/sh/tmpfile.c b/lib/sh/tmpfile.c
index e41e45bd..ef8b067b 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -54,8 +54,8 @@ extern int errno;
extern pid_t dollar_dollar_pid;
-static char *get_sys_tmpdir __P((void));
-static char *get_tmpdir __P((int));
+static char *get_sys_tmpdir PARAMS((void));
+static char *get_tmpdir PARAMS((int));
static char *sys_tmpdir = (char *)NULL;
static int ntmpfiles;
@@ -146,9 +146,17 @@ sh_mktmpname (nameroot, flags)
tdlen = strlen (tdir);
lroot = nameroot ? nameroot : DEFAULT_NAMEROOT;
+ if (nameroot == 0)
+ flags &= ~MT_TEMPLATE;
+
+ if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX)
+ flags &= ~MT_TEMPLATE;
#ifdef USE_MKTEMP
- sprintf (filename, "%s/%s.XXXXXX", tdir, lroot);
+ if (flags & MT_TEMPLATE)
+ strcpy (filename, nameroot);
+ else
+ sprintf (filename, "%s/%s.XXXXXX", tdir, lroot);
if (mktemp (filename) == 0)
{
free (filename);
@@ -192,9 +200,17 @@ sh_mktmpfd (nameroot, flags, namep)
tdlen = strlen (tdir);
lroot = nameroot ? nameroot : DEFAULT_NAMEROOT;
+ if (nameroot == 0)
+ flags &= ~MT_TEMPLATE;
+
+ if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX)
+ flags &= ~MT_TEMPLATE;
#ifdef USE_MKSTEMP
- sprintf (filename, "%s/%s.XXXXXX", tdir, lroot);
+ if (flags & MT_TEMPLATE)
+ strcpy (filename, nameroot);
+ else
+ sprintf (filename, "%s/%s.XXXXXX", tdir, lroot);
fd = mkstemp (filename);
if (fd < 0 || namep == 0)
{
@@ -245,3 +261,51 @@ sh_mktmpfp (nameroot, flags, namep)
close (fd);
return fp;
}
+
+char *
+sh_mktmpdir (nameroot, flags)
+ char *nameroot;
+ int flags;
+{
+ char *filename, *tdir, *lroot, *dirname;
+ int fd, tdlen;
+
+#ifdef USE_MKDTEMP
+ filename = (char *)xmalloc (PATH_MAX + 1);
+ tdir = get_tmpdir (flags);
+ tdlen = strlen (tdir);
+
+ lroot = nameroot ? nameroot : DEFAULT_NAMEROOT;
+ if (nameroot == 0)
+ flags &= ~MT_TEMPLATE;
+
+ if ((flags & MT_TEMPLATE) && strlen (nameroot) > PATH_MAX)
+ flags &= ~MT_TEMPLATE;
+
+ if (flags & MT_TEMPLATE)
+ strcpy (filename, nameroot);
+ else
+ sprintf (filename, "%s/%s.XXXXXX", tdir, lroot);
+ dirname = mkdtemp (filename);
+ if (dirname == 0)
+ {
+ free (filename);
+ filename = NULL;
+ }
+ return dirname;
+#else /* !USE_MKDTEMP */
+ filename = (char *)NULL;
+ do
+ {
+ filename = sh_mktmpname (nameroot, flags);
+ fd = mkdir (filename, 0700);
+ if (fd == 0)
+ break;
+ free (filename);
+ filename = (char *)NULL;
+ }
+ while (fd < 0 && errno == EEXIST);
+
+ return (filename);
+#endif /* !USE_MKDTEMP */
+}
diff --git a/lib/sh/uconvert.c b/lib/sh/uconvert.c
index 3d656df0..457552eb 100644
--- a/lib/sh/uconvert.c
+++ b/lib/sh/uconvert.c
@@ -1,7 +1,7 @@
/* uconvert - convert string representations of decimal numbers into whole
number/fractional value pairs. */
-/* Copyright (C) 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009,2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -23,16 +23,7 @@
#include "bashtypes.h"
-#if defined (TIME_WITH_SYS_TIME)
-# include <sys/time.h>
-# include <time.h>
-#else
-# if defined (HAVE_SYS_TIME_H)
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
+#include "posixtime.h"
#if defined (HAVE_UNISTD_H)
#include <unistd.h>
@@ -50,6 +41,7 @@
do { \
if (ip) *ip = ipart * mult; \
if (up) *up = upart; \
+ if (ep) *ep = p; \
return (x); \
} while (0)
@@ -61,12 +53,14 @@ static int multiplier[7] = { 1, 100000, 10000, 1000, 100, 10, 1 };
/* Take a decimal number int-part[.[micro-part]] and convert it to the whole
and fractional portions. The fractional portion is returned in
millionths (micro); callers are responsible for multiplying appropriately.
+ EP, if non-null, gets the address of the character where conversion stops.
Return 1 if value converted; 0 if invalid integer for either whole or
fractional parts. */
int
-uconvert(s, ip, up)
+uconvert(s, ip, up, ep)
char *s;
long *ip, *up;
+ char **ep;
{
int n, mult;
long ipart, upart;
@@ -102,7 +96,14 @@ uconvert(s, ip, up)
for (n = 0; n < 6 && p[n]; n++)
{
if (DIGIT(p[n]) == 0)
- RETURN(0);
+ {
+ if (ep)
+ {
+ upart *= multiplier[n];
+ p += n; /* To set EP */
+ }
+ RETURN(0);
+ }
upart = (upart * 10) + (p[n] - '0');
}
@@ -112,5 +113,12 @@ uconvert(s, ip, up)
if (n == 6 && p[6] >= '5' && p[6] <= '9')
upart++; /* round up 1 */
+ if (ep)
+ {
+ p += n;
+ while (DIGIT(*p))
+ p++;
+ }
+
RETURN(1);
}
diff --git a/lib/sh/ufuncs.c b/lib/sh/ufuncs.c
index ad9284cc..4dc4853b 100644
--- a/lib/sh/ufuncs.c
+++ b/lib/sh/ufuncs.c
@@ -1,6 +1,6 @@
/* ufuncs - sleep and alarm functions that understand fractional values */
-/* Copyright (C) 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008,2009-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,16 +22,7 @@
#include "bashtypes.h"
-#if defined (TIME_WITH_SYS_TIME)
-# include <sys/time.h>
-# include <time.h>
-#else
-# if defined (HAVE_SYS_TIME_H)
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
+#include "posixtime.h"
#if defined (HAVE_UNISTD_H)
#include <unistd.h>
@@ -130,7 +121,7 @@ fsleep(sec, usec)
#endif
e = errno;
if (r < 0 && errno == EINTR)
- QUIT; /* just signals, no traps */
+ return -1; /* caller will handle */
errno = e;
}
while (r < 0 && errno == EINTR);
diff --git a/lib/sh/unicode.c b/lib/sh/unicode.c
index fe13c4a0..d95d1e25 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-2016 Free Software Foundation, Inc.
+/* Copyright (C) 2010-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -50,9 +50,9 @@
#endif /* !STREQ */
#if defined (HAVE_LOCALE_CHARSET)
-extern const char *locale_charset __P((void));
+extern const char *locale_charset PARAMS((void));
#else
-extern char *get_locale_var __P((char *));
+extern char *get_locale_var PARAMS((char *));
#endif
extern int locale_utf8locale;
@@ -196,7 +196,7 @@ u32toutf8 (wc, s)
}
else if (wc < 0x080000000)
{
- s[0] = (wc >> 30) | 0xf8;
+ s[0] = (wc >> 30) | 0xfc;
s[1] = ((wc >> 24) & 0x3f) | 0x80;
s[2] = ((wc >> 18) & 0x3f) | 0x80;
s[3] = ((wc >> 12) & 0x3f) | 0x80;
@@ -216,21 +216,21 @@ u32toutf8 (wc, s)
int
u32toutf16 (c, s)
u_bits32_t c;
- unsigned short *s;
+ wchar_t *s;
{
int l;
l = 0;
if (c < 0x0d800 || (c >= 0x0e000 && c <= 0x0ffff))
{
- s[0] = (unsigned short) (c & 0xFFFF);
+ s[0] = (wchar_t) (c & 0xFFFF);
l = 1;
}
else if (c >= 0x10000 && c <= 0x010ffff)
{
c -= 0x010000;
- s[0] = (unsigned short)((c >> 10) + 0xd800);
- s[1] = (unsigned short)((c & 0x3ff) + 0xdc00);
+ s[0] = (wchar_t)((c >> 10) + 0xd800);
+ s[1] = (wchar_t)((c & 0x3ff) + 0xdc00);
l = 2;
}
s[l] = 0;
diff --git a/lib/sh/utf8.c b/lib/sh/utf8.c
index d27fcf54..fed25226 100644
--- a/lib/sh/utf8.c
+++ b/lib/sh/utf8.c
@@ -76,13 +76,13 @@ utf8_mbsnlen(src, srclen, maxlen)
return (count);
}
-/* Adapted from GNU gnulib */
+/* Adapted from GNU gnulib. Handles UTF-8 characters up to 4 bytes long */
int
utf8_mblen (s, n)
const char *s;
size_t n;
{
- unsigned char c, c1;
+ unsigned char c, c1, c2, c3;
if (s == 0)
return (0); /* no shift states */
@@ -97,25 +97,74 @@ utf8_mblen (s, n)
c1 = (unsigned char)s[1];
if (c < 0xe0)
{
- if (n >= 2 && (s[1] ^ 0x80) < 0x40)
+ if (n == 1)
+ return -2;
+
+ /*
+ * c c1
+ *
+ * U+0080..U+07FF C2..DF 80..BF
+ */
+
+ if (n >= 2 && (c1 ^ 0x80) < 0x40) /* 0x80..0xbf */
return 2;
}
else if (c < 0xf0)
{
- if (n >= 3
- && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
+ if (n == 1)
+ return -2;
+
+ /*
+ * c c1 c2
+ *
+ * U+0800..U+0FFF E0 A0..BF 80..BF
+ * U+1000..U+CFFF E1..EC 80..BF 80..BF
+ * U+D000..U+D7FF ED 80..9F 80..BF
+ * U+E000..U+FFFF EE..EF 80..BF 80..BF
+ */
+
+ if ((c1 ^ 0x80) < 0x40
&& (c >= 0xe1 || c1 >= 0xa0)
&& (c != 0xed || c1 < 0xa0))
- return 3;
+ {
+ if (n == 2)
+ return -2; /* incomplete */
+
+ c2 = (unsigned char)s[2];
+ if ((c2 ^ 0x80) < 0x40)
+ return 3;
+ }
}
- else if (c < 0xf8)
+ else if (c <= 0xf4)
{
- if (n >= 4
- && (s[1] ^ 0x80) < 0x40 && (s[2] ^ 0x80) < 0x40
- && (s[3] ^ 0x80) < 0x40
+ if (n == 1)
+ return -2;
+
+ /*
+ * c c1 c2 c3
+ *
+ * U+10000..U+3FFFF F0 90..BF 80..BF 80..BF
+ * U+40000..U+FFFFF F1..F3 80..BF 80..BF 80..BF
+ * U+100000..U+10FFFF F4 80..8F 80..BF 80..BF
+ */
+ if (((c1 ^ 0x80) < 0x40)
&& (c >= 0xf1 || c1 >= 0x90)
&& (c < 0xf4 || (c == 0xf4 && c1 < 0x90)))
- return 4;
+ {
+ if (n == 2)
+ return -2; /* incomplete */
+
+ c2 = (unsigned char)s[2];
+ if ((c2 ^ 0x80) < 0x40)
+ {
+ if (n == 3)
+ return -2;
+
+ c3 = (unsigned char)s[3];
+ if ((c3 ^ 0x80) < 0x40)
+ return 4;
+ }
+ }
}
}
/* invalid or incomplete multibyte character */
diff --git a/lib/sh/winsize.c b/lib/sh/winsize.c
index ab83433a..861c7c89 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-2015 Free Software Foundation, Inc.
+/* Copyright (C) 2005-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -68,9 +68,9 @@ extern int errno;
extern int shell_tty;
#if defined (READLINE)
-extern void rl_set_screen_size __P((int, int));
+extern void rl_set_screen_size PARAMS((int, int));
#endif
-extern void sh_set_lines_and_columns __P((int, int));
+extern void sh_set_lines_and_columns PARAMS((int, int));
void
get_new_window_size (from_sig, rp, cp)
diff --git a/lib/sh/zcatfd.c b/lib/sh/zcatfd.c
index bdbcd910..aa8199fd 100644
--- a/lib/sh/zcatfd.c
+++ b/lib/sh/zcatfd.c
@@ -1,6 +1,6 @@
/* zcatfd - copy contents of file descriptor to another */
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -34,8 +34,12 @@
extern int errno;
#endif
-extern ssize_t zread __P((int, char *, size_t));
-extern int zwrite __P((int, char *, ssize_t));
+#ifndef ZBUFSIZ
+# define ZBUFSIZ 4096
+#endif
+
+extern ssize_t zread PARAMS((int, char *, size_t));
+extern int zwrite PARAMS((int, char *, ssize_t));
/* Dump contents of file descriptor FD to OFD. FN is the filename for
error messages (not used right now). */
@@ -46,7 +50,7 @@ zcatfd (fd, ofd, fn)
{
ssize_t nr;
int rval;
- char lbuf[128];
+ char lbuf[ZBUFSIZ];
rval = 0;
while (1)
diff --git a/lib/sh/zgetline.c b/lib/sh/zgetline.c
index a686ba3d..8ded1442 100644
--- a/lib/sh/zgetline.c
+++ b/lib/sh/zgetline.c
@@ -1,7 +1,7 @@
/* zgetline - read a line of input from a specified file descriptor and return
a pointer to a newly-allocated buffer containing the data. */
-/* Copyright (C) 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2008-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -34,13 +34,13 @@
extern int errno;
#endif
-extern ssize_t zread __P((int, char *, size_t));
-extern ssize_t zreadc __P((int, char *));
-extern ssize_t zreadintr __P((int, char *, size_t));
-extern ssize_t zreadcintr __P((int, char *));
+extern ssize_t zread PARAMS((int, char *, size_t));
+extern ssize_t zreadc PARAMS((int, char *));
+extern ssize_t zreadintr PARAMS((int, char *, size_t));
+extern ssize_t zreadcintr PARAMS((int, char *));
-typedef ssize_t breadfunc_t __P((int, char *, size_t));
-typedef ssize_t creadfunc_t __P((int, char *));
+typedef ssize_t breadfunc_t PARAMS((int, char *, size_t));
+typedef ssize_t creadfunc_t PARAMS((int, char *));
/* Initial memory allocation for automatic growing buffer in zreadlinec */
#define GET_LINE_INITIAL_ALLOCATION 16
diff --git a/lib/sh/zmapfd.c b/lib/sh/zmapfd.c
index e7208921..f9e9ed71 100644
--- a/lib/sh/zmapfd.c
+++ b/lib/sh/zmapfd.c
@@ -1,6 +1,6 @@
/* zmapfd - read contents of file descriptor into a newly-allocated buffer */
-/* Copyright (C) 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,7 +36,11 @@
extern int errno;
#endif
-extern ssize_t zread __P((int, char *, size_t));
+#ifndef ZBUFSIZ
+# define ZBUFSIZ 4096
+#endif
+
+extern ssize_t zread PARAMS((int, char *, size_t));
/* Dump contents of file descriptor FD to *OSTR. FN is the filename for
error messages (not used right now). */
@@ -48,12 +52,12 @@ zmapfd (fd, ostr, fn)
{
ssize_t nr;
int rval;
- char lbuf[128];
+ char lbuf[ZBUFSIZ];
char *result;
int rsize, rind;
rval = 0;
- result = (char *)xmalloc (rsize = 64);
+ result = (char *)xmalloc (rsize = ZBUFSIZ);
rind = 0;
while (1)
@@ -72,7 +76,7 @@ zmapfd (fd, ostr, fn)
return -1;
}
- RESIZE_MALLOCED_BUFFER (result, rind, nr, rsize, 128);
+ RESIZE_MALLOCED_BUFFER (result, rind, nr, rsize, ZBUFSIZ);
memcpy (result+rind, lbuf, nr);
rind += nr;
}
diff --git a/lib/sh/zread.c b/lib/sh/zread.c
index 8b7ecedf..71a06a76 100644
--- a/lib/sh/zread.c
+++ b/lib/sh/zread.c
@@ -1,6 +1,6 @@
/* zread - read data from file descriptor into buffer with retries */
-/* Copyright (C) 1999-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -37,6 +37,10 @@ extern int errno;
# define SEEK_CUR 1
#endif
+#ifndef ZBUFSIZ
+# define ZBUFSIZ 4096
+#endif
+
extern int executing_builtin;
extern void check_signals_and_traps (void);
@@ -55,12 +59,17 @@ zread (fd, buf, len)
check_signals (); /* check for signals before a blocking read */
while ((r = read (fd, buf, len)) < 0 && errno == EINTR)
- /* XXX - bash-5.0 */
- /* We check executing_builtin and run traps here for backwards compatibility */
- if (executing_builtin)
- check_signals_and_traps (); /* XXX - should it be check_signals()? */
- else
- check_signals ();
+ {
+ int t;
+ t = errno;
+ /* XXX - bash-5.0 */
+ /* We check executing_builtin and run traps here for backwards compatibility */
+ if (executing_builtin)
+ check_signals_and_traps (); /* XXX - should it be check_signals()? */
+ else
+ check_signals ();
+ errno = t;
+ }
return r;
}
@@ -112,7 +121,7 @@ zreadintr (fd, buf, len)
in read(2). This does some local buffering to avoid many one-character
calls to read(2), like those the `read' builtin performs. */
-static char lbuf[128];
+static char lbuf[ZBUFSIZ];
static size_t lind, lused;
ssize_t
diff --git a/lib/tilde/tilde.c b/lib/tilde/tilde.c
index 9d0f2961..d678a31a 100644
--- a/lib/tilde/tilde.c
+++ b/lib/tilde/tilde.c
@@ -1,6 +1,6 @@
/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2020 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,10 +57,10 @@ static void *xmalloc (), *xrealloc ();
#if !defined (HAVE_GETPW_DECLS)
# if defined (HAVE_GETPWUID)
-extern struct passwd *getpwuid PARAMS((uid_t));
+extern struct passwd *getpwuid (uid_t);
# endif
# if defined (HAVE_GETPWNAM)
-extern struct passwd *getpwnam PARAMS((const char *));
+extern struct passwd *getpwnam (const char *);
# endif
#endif /* !HAVE_GETPW_DECLS */
@@ -79,8 +79,8 @@ extern struct passwd *getpwnam PARAMS((const char *));
/* If being compiled as part of bash, these will be satisfied from
variables.o. If being compiled as part of readline, they will
be satisfied from shell.o. */
-extern char *sh_get_home_dir PARAMS((void));
-extern char *sh_get_env_value PARAMS((const char *));
+extern char *sh_get_home_dir (void);
+extern char *sh_get_env_value (const char *);
/* The default value of tilde_additional_prefixes. This is set to
whitespace preceding a tilde so that simple programs which do not
@@ -116,10 +116,10 @@ char **tilde_additional_prefixes = (char **)default_prefixes;
`:' and `=~'. */
char **tilde_additional_suffixes = (char **)default_suffixes;
-static int tilde_find_prefix PARAMS((const char *, int *));
-static int tilde_find_suffix PARAMS((const char *));
-static char *isolate_tilde_prefix PARAMS((const char *, int *));
-static char *glue_prefix_and_suffix PARAMS((char *, const char *, int));
+static int tilde_find_prefix (const char *, int *);
+static int tilde_find_suffix (const char *);
+static char *isolate_tilde_prefix (const char *, int *);
+static char *glue_prefix_and_suffix (char *, const char *, int);
/* Find the start of a tilde expansion in STRING, and return the index of
the tilde which starts the expansion. Place the length of the text
diff --git a/locale.c b/locale.c
index d62547f6..17ccc585 100644
--- a/locale.c
+++ b/locale.c
@@ -1,6 +1,6 @@
/* locale.c - Miscellaneous internationalization functions. */
-/* Copyright (C) 1996-2009,2012,2016 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2009,2012,2016,2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -45,7 +45,7 @@ extern int errno;
int locale_utf8locale;
int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */
-int locale_shiftstates;
+int locale_shiftstates = 0;
extern int dump_translatable_strings, dump_po_strings;
@@ -66,10 +66,10 @@ static char *lang;
/* Called to reset all of the locale variables to their appropriate values
if (and only if) LC_ALL has not been assigned a value. */
-static int reset_locale_vars __P((void));
+static int reset_locale_vars PARAMS((void));
-static void locale_setblanks __P((void));
-static int locale_isutf8 __P((char *));
+static void locale_setblanks PARAMS((void));
+static int locale_isutf8 PARAMS((char *));
/* Set the value of default_locale and make the current locale the
system default locale. This should be called very early in main(). */
@@ -80,13 +80,19 @@ set_default_locale ()
default_locale = setlocale (LC_ALL, "");
if (default_locale)
default_locale = savestring (default_locale);
+#else
+ default_locale = savestring ("C");
#endif /* HAVE_SETLOCALE */
bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE);
locale_mb_cur_max = MB_CUR_MAX;
locale_utf8locale = locale_isutf8 (default_locale);
+#if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
+#else
+ local_shiftstates = 0;
+#endif
}
/* Set default values for LC_CTYPE, LC_COLLATE, LC_MESSAGES, LC_NUMERIC and
@@ -107,7 +113,13 @@ set_default_locale_vars ()
locale_setblanks ();
locale_mb_cur_max = MB_CUR_MAX;
locale_utf8locale = locale_isutf8 (lc_all);
+
+# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
+# else
+ local_shiftstates = 0;
+# endif
+
u32reset ();
}
# endif
@@ -211,7 +223,11 @@ set_locale_var (var, value)
/* if LC_ALL == "", reset_locale_vars has already called this */
if (*lc_all && x)
locale_utf8locale = locale_isutf8 (lc_all);
+# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
+# else
+ local_shiftstates = 0;
+# endif
u32reset ();
return r;
#else
@@ -231,7 +247,11 @@ set_locale_var (var, value)
/* if setlocale() returns NULL, the locale is not changed */
if (x)
locale_utf8locale = locale_isutf8 (x);
+#if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
+#else
+ local_shiftstates = 0;
+#endif
u32reset ();
}
# endif
@@ -368,7 +388,11 @@ reset_locale_vars ()
locale_mb_cur_max = MB_CUR_MAX;
if (x)
locale_utf8locale = locale_isutf8 (x);
+# if defined (HANDLE_MULTIBYTE)
locale_shiftstates = mblen ((char *)NULL, 0);
+# else
+ local_shiftstates = 0;
+# endif
u32reset ();
#endif
return 1;
diff --git a/m4/codeset.m4 b/m4/codeset.m4
new file mode 100644
index 00000000..280f556f
--- /dev/null
+++ b/m4/codeset.m4
@@ -0,0 +1,24 @@
+# codeset.m4 serial 5 (gettext-0.18.2)
+dnl Copyright (C) 2000-2002, 2006, 2008-2014, 2016, 2019 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_LANGINFO_CODESET],
+[
+ AC_CACHE_CHECK([for nl_langinfo and CODESET], [am_cv_langinfo_codeset],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <langinfo.h>]],
+ [[char* cs = nl_langinfo(CODESET); return !cs;]])],
+ [am_cv_langinfo_codeset=yes],
+ [am_cv_langinfo_codeset=no])
+ ])
+ if test $am_cv_langinfo_codeset = yes; then
+ AC_DEFINE([HAVE_LANGINFO_CODESET], [1],
+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).])
+ fi
+])
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
new file mode 100644
index 00000000..ec9f2218
--- /dev/null
+++ b/m4/extern-inline.m4
@@ -0,0 +1,114 @@
+dnl 'extern inline' a la ISO C99.
+
+dnl Copyright 2012-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_EXTERN_INLINE],
+[
+ AH_VERBATIM([extern_inline],
+[/* Please see the Gnulib manual for how to use these macros.
+
+ Suppress extern inline with HP-UX cc, as it appears to be broken; see
+ <https://lists.gnu.org/r/bug-texinfo/2013-02/msg00030.html>.
+
+ Suppress extern inline with Sun C in standards-conformance mode, as it
+ mishandles inline functions that call each other. E.g., for 'inline void f
+ (void) { } inline void g (void) { f (); }', c99 incorrectly complains
+ 'reference to static identifier "f" in extern inline function'.
+ This bug was observed with Sun C 5.12 SunOS_i386 2011/11/16.
+
+ Suppress extern inline (with or without __attribute__ ((__gnu_inline__)))
+ on configurations that mistakenly use 'static inline' to implement
+ functions or macros in standard C headers like <ctype.h>. For example,
+ if isdigit is mistakenly implemented via a static inline function,
+ a program containing an extern inline function that calls isdigit
+ may not work since the C standard prohibits extern inline functions
+ from calling static functions (ISO C 99 section 6.7.4.(3).
+ This bug is known to occur on:
+
+ OS X 10.8 and earlier; see:
+ https://lists.gnu.org/r/bug-gnulib/2012-12/msg00023.html
+
+ DragonFly; see
+ http://muscles.dragonflybsd.org/bulk/bleeding-edge-potential/latest-per-pkg/ah-tty-0.3.12.log
+
+ FreeBSD; see:
+ https://lists.gnu.org/r/bug-gnulib/2014-07/msg00104.html
+
+ OS X 10.9 has a macro __header_inline indicating the bug is fixed for C and
+ for clang but remains for g++; see <https://trac.macports.org/ticket/41033>.
+ Assume DragonFly and FreeBSD will be similar.
+
+ GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
+ inline semantics, unless -fgnu89-inline is used. It defines a macro
+ __GNUC_STDC_INLINE__ to indicate this situation or a macro
+ __GNUC_GNU_INLINE__ to indicate the opposite situation.
+ GCC 4.2 with -std=c99 or -std=gnu99 implements the GNU C inline
+ semantics but warns, unless -fgnu89-inline is used:
+ warning: C99 inline functions are not supported; using GNU89
+ warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
+ It defines a macro __GNUC_GNU_INLINE__ to indicate this situation.
+ */
+#if (((defined __APPLE__ && defined __MACH__) \
+ || defined __DragonFly__ || defined __FreeBSD__) \
+ && (defined __header_inline \
+ ? (defined __cplusplus && defined __GNUC_STDC_INLINE__ \
+ && ! defined __clang__) \
+ : ((! defined _DONT_USE_CTYPE_INLINE_ \
+ && (defined __GNUC__ || defined __cplusplus)) \
+ || (defined _FORTIFY_SOURCE && 0 < _FORTIFY_SOURCE \
+ && defined __GNUC__ && ! defined __cplusplus))))
+# define _GL_EXTERN_INLINE_STDHEADER_BUG
+#endif
+#if ((__GNUC__ \
+ ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+ : (199901L <= __STDC_VERSION__ \
+ && !defined __HP_cc \
+ && !defined __PGI \
+ && !(defined __SUNPRO_C && __STDC__))) \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+# define _GL_EXTERN_INLINE_IN_USE
+#elif (2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __STRICT_ANSI__ \
+ && !defined _GL_EXTERN_INLINE_STDHEADER_BUG)
+# if defined __GNUC_GNU_INLINE__ && __GNUC_GNU_INLINE__
+ /* __gnu_inline__ suppresses a GCC 4.2 diagnostic. */
+# define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+# define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+# define _GL_EXTERN_INLINE_IN_USE
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+/* In GCC 4.6 (inclusive) to 5.1 (exclusive),
+ suppress bogus "no previous prototype for 'FOO'"
+ and "no previous declaration for 'FOO'" diagnostics,
+ when FOO is an inline function in the header; see
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113> and
+ <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63877>. */
+#if __GNUC__ == 4 && 6 <= __GNUC_MINOR__
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+# define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+# define _GL_INLINE_HEADER_CONST_PRAGMA \
+ _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+ _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+ _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+ _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif])
+])
diff --git a/m4/fcntl-o.m4 b/m4/fcntl-o.m4
new file mode 100644
index 00000000..6ab3387d
--- /dev/null
+++ b/m4/fcntl-o.m4
@@ -0,0 +1,139 @@
+# fcntl-o.m4 serial 6
+dnl Copyright (C) 2006, 2009-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Written by Paul Eggert.
+
+AC_PREREQ([2.60])
+
+# Test whether the flags O_NOATIME and O_NOFOLLOW actually work.
+# Define HAVE_WORKING_O_NOATIME to 1 if O_NOATIME works, or to 0 otherwise.
+# Define HAVE_WORKING_O_NOFOLLOW to 1 if O_NOFOLLOW works, or to 0 otherwise.
+AC_DEFUN([gl_FCNTL_O_FLAGS],
+[
+ dnl Persuade glibc <fcntl.h> to define O_NOATIME and O_NOFOLLOW.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+ AC_CHECK_HEADERS_ONCE([unistd.h])
+ AC_CHECK_FUNCS_ONCE([symlink])
+ AC_CACHE_CHECK([for working fcntl.h], [gl_cv_header_working_fcntl_h],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <sys/stat.h>
+ #if HAVE_UNISTD_H
+ # include <unistd.h>
+ #else /* on Windows with MSVC */
+ # include <io.h>
+ # include <stdlib.h>
+ # defined sleep(n) _sleep ((n) * 1000)
+ #endif
+ #include <fcntl.h>
+ #ifndef O_NOATIME
+ #define O_NOATIME 0
+ #endif
+ #ifndef O_NOFOLLOW
+ #define O_NOFOLLOW 0
+ #endif
+ static int const constants[] =
+ {
+ O_CREAT, O_EXCL, O_NOCTTY, O_TRUNC, O_APPEND,
+ O_NONBLOCK, O_SYNC, O_ACCMODE, O_RDONLY, O_RDWR, O_WRONLY
+ };
+ ]],
+ [[
+ int result = !constants;
+ #if HAVE_SYMLINK
+ {
+ static char const sym[] = "conftest.sym";
+ if (symlink ("/dev/null", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ if (unlink (sym) != 0 || symlink (".", sym) != 0)
+ result |= 2;
+ else
+ {
+ int fd = open (sym, O_RDONLY | O_NOFOLLOW);
+ if (fd >= 0)
+ {
+ close (fd);
+ result |= 4;
+ }
+ }
+ unlink (sym);
+ }
+ #endif
+ {
+ static char const file[] = "confdefs.h";
+ int fd = open (file, O_RDONLY | O_NOATIME);
+ if (fd < 0)
+ result |= 8;
+ else
+ {
+ struct stat st0;
+ if (fstat (fd, &st0) != 0)
+ result |= 16;
+ else
+ {
+ char c;
+ sleep (1);
+ if (read (fd, &c, 1) != 1)
+ result |= 24;
+ else
+ {
+ if (close (fd) != 0)
+ result |= 32;
+ else
+ {
+ struct stat st1;
+ if (stat (file, &st1) != 0)
+ result |= 40;
+ else
+ if (st0.st_atime != st1.st_atime)
+ result |= 64;
+ }
+ }
+ }
+ }
+ }
+ return result;]])],
+ [gl_cv_header_working_fcntl_h=yes],
+ [case $? in #(
+ 4) gl_cv_header_working_fcntl_h='no (bad O_NOFOLLOW)';; #(
+ 64) gl_cv_header_working_fcntl_h='no (bad O_NOATIME)';; #(
+ 68) gl_cv_header_working_fcntl_h='no (bad O_NOATIME, O_NOFOLLOW)';; #(
+ *) gl_cv_header_working_fcntl_h='no';;
+ esac],
+ [case "$host_os" in
+ # Guess 'no' on native Windows.
+ mingw*) gl_cv_header_working_fcntl_h='no' ;;
+ *) gl_cv_header_working_fcntl_h=cross-compiling ;;
+ esac
+ ])
+ ])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOATIME* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOATIME], [$ac_val],
+ [Define to 1 if O_NOATIME works.])
+
+ case $gl_cv_header_working_fcntl_h in #(
+ *O_NOFOLLOW* | no | cross-compiling) ac_val=0;; #(
+ *) ac_val=1;;
+ esac
+ AC_DEFINE_UNQUOTED([HAVE_WORKING_O_NOFOLLOW], [$ac_val],
+ [Define to 1 if O_NOFOLLOW works.])
+])
diff --git a/m4/gettext.m4 b/m4/gettext.m4
new file mode 100644
index 00000000..fec38045
--- /dev/null
+++ b/m4/gettext.m4
@@ -0,0 +1,419 @@
+# gettext.m4 serial 69 (gettext-0.19.9)
+dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2006, 2008-2010.
+
+dnl Macro to add for using GNU gettext.
+
+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]).
+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The
+dnl default (if it is not specified or empty) is 'no-libtool'.
+dnl INTLSYMBOL should be 'external' for packages with no intl directory,
+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory.
+dnl If INTLSYMBOL is 'use-libtool', then a libtool library
+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static,
+dnl depending on --{enable,disable}-{shared,static} and on the presence of
+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library
+dnl $(top_builddir)/intl/libintl.a will be created.
+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext
+dnl implementations (in libc or libintl) without the ngettext() function
+dnl will be ignored. If NEEDSYMBOL is specified and is
+dnl 'need-formatstring-macros', then GNU gettext implementations that don't
+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored.
+dnl INTLDIR is used to find the intl libraries. If empty,
+dnl the value '$(top_builddir)/intl/' is used.
+dnl
+dnl The result of the configuration is one of three cases:
+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled
+dnl and used.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 2) GNU gettext has been found in the system's C library.
+dnl Catalog format: GNU --> install in $(datadir)
+dnl Catalog extension: .mo after installation, .gmo in source tree
+dnl 3) No internationalization, always use English msgid.
+dnl Catalog format: none
+dnl Catalog extension: none
+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur.
+dnl The use of .gmo is historical (it was needed to avoid overwriting the
+dnl GNU format catalogs when building on a platform with an X/Open gettext),
+dnl but we keep it in order not to force irrelevant filename changes on the
+dnl maintainers.
+dnl
+AC_DEFUN([AM_GNU_GETTEXT],
+[
+ dnl Argument checking.
+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], ,
+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT
+])])])])])
+ ifelse(ifelse([$1], [], [old])[]ifelse([$1], [no-libtool], [old]), [old],
+ [AC_DIAGNOSE([obsolete], [Use of AM_GNU_GETTEXT without [external] argument is deprecated.])])
+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], ,
+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT
+])])])])
+ define([gt_included_intl],
+ ifelse([$1], [external],
+ ifdef([AM_GNU_GETTEXT_][INTL_SUBDIR], [yes], [no]),
+ [yes]))
+ define([gt_libtool_suffix_prefix], ifelse([$1], [use-libtool], [l], []))
+ gt_NEEDS_INIT
+ AM_GNU_GETTEXT_NEED([$2])
+
+ AC_REQUIRE([AM_PO_SUBDIRS])dnl
+ ifelse(gt_included_intl, yes, [
+ AC_REQUIRE([AM_INTL_SUBDIR])dnl
+ ])
+
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ dnl Ideally we would do this search only after the
+ dnl if test "$USE_NLS" = "yes"; then
+ dnl if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT
+ dnl the configure script would need to contain the same shell code
+ dnl again, outside any 'if'. There are two solutions:
+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'.
+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE.
+ dnl Since AC_PROVIDE_IFELSE is not documented, we avoid it.
+ ifelse(gt_included_intl, yes, , [
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+ ])
+
+ dnl Sometimes, on Mac OS X, libintl requires linking with CoreFoundation.
+ gt_INTL_MACOSX
+
+ dnl Set USE_NLS.
+ AC_REQUIRE([AM_NLS])
+
+ ifelse(gt_included_intl, yes, [
+ BUILD_INCLUDED_LIBINTL=no
+ USE_INCLUDED_LIBINTL=no
+ ])
+ LIBINTL=
+ LTLIBINTL=
+ POSUB=
+
+ dnl Add a version number to the cache macros.
+ case " $gt_needs " in
+ *" need-formatstring-macros "*) gt_api_version=3 ;;
+ *" need-ngettext "*) gt_api_version=2 ;;
+ *) gt_api_version=1 ;;
+ esac
+ gt_func_gnugettext_libc="gt_cv_func_gnugettext${gt_api_version}_libc"
+ gt_func_gnugettext_libintl="gt_cv_func_gnugettext${gt_api_version}_libintl"
+
+ dnl If we use NLS figure out what method
+ if test "$USE_NLS" = "yes"; then
+ gt_use_preinstalled_gnugettext=no
+ ifelse(gt_included_intl, yes, [
+ AC_MSG_CHECKING([whether included gettext is requested])
+ AC_ARG_WITH([included-gettext],
+ [ --with-included-gettext use the GNU gettext library included here],
+ nls_cv_force_use_gnu_gettext=$withval,
+ nls_cv_force_use_gnu_gettext=no)
+ AC_MSG_RESULT([$nls_cv_force_use_gnu_gettext])
+
+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext"
+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then
+ ])
+ dnl User does not insist on using GNU NLS library. Figure out what
+ dnl to use. If GNU gettext is available we use this. Else we have
+ dnl to fall back to GNU NLS library.
+
+ if test $gt_api_version -ge 3; then
+ gt_revision_test_code='
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1)
+#endif
+changequote(,)dnl
+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1];
+changequote([,])dnl
+'
+ else
+ gt_revision_test_code=
+ fi
+ if test $gt_api_version -ge 2; then
+ gt_expression_test_code=' + * ngettext ("", "", 0)'
+ else
+ gt_expression_test_code=
+ fi
+
+ AC_CACHE_CHECK([for GNU gettext in libc], [$gt_func_gnugettext_libc],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern int *_nl_domain_bindings;
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_domain_bindings)
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [eval "$gt_func_gnugettext_libc=yes"],
+ [eval "$gt_func_gnugettext_libc=no"])])
+
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" != "yes"; }; then
+ dnl Sometimes libintl requires libiconv, so first search for libiconv.
+ ifelse(gt_included_intl, yes, , [
+ AM_ICONV_LINK
+ ])
+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL
+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv])
+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL
+ dnl even if libiconv doesn't exist.
+ AC_LIB_LINKFLAGS_BODY([intl])
+ AC_CACHE_CHECK([for GNU gettext in libintl],
+ [$gt_func_gnugettext_libintl],
+ [gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ dnl Now see whether libintl exists and does not depend on libiconv.
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [eval "$gt_func_gnugettext_libintl=yes"],
+ [eval "$gt_func_gnugettext_libintl=no"])
+ dnl Now see whether libintl exists and depends on libiconv.
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" != yes; } && test -n "$LIBICONV"; then
+ LIBS="$LIBS $LIBICONV"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <libintl.h>
+#ifndef __GNU_GETTEXT_SUPPORTED_REVISION
+extern int _nl_msg_cat_cntr;
+extern
+#ifdef __cplusplus
+"C"
+#endif
+const char *_nl_expand_alias (const char *);
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION (_nl_msg_cat_cntr + *_nl_expand_alias (""))
+#else
+#define __GNU_GETTEXT_SYMBOL_EXPRESSION 0
+#endif
+$gt_revision_test_code
+ ]],
+ [[
+bindtextdomain ("", "");
+return * gettext ("")$gt_expression_test_code + __GNU_GETTEXT_SYMBOL_EXPRESSION
+ ]])],
+ [LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+ ])
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"])
+ fi
+
+ dnl If an already present or preinstalled GNU gettext() is found,
+ dnl use it. But if this macro is used in GNU gettext, and GNU
+ dnl gettext is already preinstalled in libintl, we update this
+ dnl libintl. (Cf. the install rule in intl/Makefile.in.)
+ if { eval "gt_val=\$$gt_func_gnugettext_libc"; test "$gt_val" = "yes"; } \
+ || { { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; } \
+ && test "$PACKAGE" != gettext-runtime \
+ && test "$PACKAGE" != gettext-tools; }; then
+ gt_use_preinstalled_gnugettext=yes
+ else
+ dnl Reset the values set by searching for libintl.
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then
+ dnl GNU gettext is not found in the C library.
+ dnl Fall back on included GNU gettext library.
+ nls_cv_use_gnu_gettext=yes
+ fi
+ fi
+
+ if test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions used to generate GNU NLS library.
+ BUILD_INCLUDED_LIBINTL=yes
+ USE_INCLUDED_LIBINTL=yes
+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV $LIBTHREAD"
+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV $LTLIBTHREAD"
+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'`
+ fi
+
+ CATOBJEXT=
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Mark actions to use GNU gettext tools.
+ CATOBJEXT=.gmo
+ fi
+ ])
+
+ if test -n "$INTL_MACOSX_LIBS"; then
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ dnl Some extra flags are needed during linking.
+ LIBINTL="$LIBINTL $INTL_MACOSX_LIBS"
+ LTLIBINTL="$LTLIBINTL $INTL_MACOSX_LIBS"
+ fi
+ fi
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes" \
+ || test "$nls_cv_use_gnu_gettext" = "yes"; then
+ AC_DEFINE([ENABLE_NLS], [1],
+ [Define to 1 if translation of program messages to the user's native language
+ is requested.])
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ AC_MSG_CHECKING([whether to use NLS])
+ AC_MSG_RESULT([$USE_NLS])
+ if test "$USE_NLS" = "yes"; then
+ AC_MSG_CHECKING([where the gettext function comes from])
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ gt_source="external libintl"
+ else
+ gt_source="libc"
+ fi
+ else
+ gt_source="included intl directory"
+ fi
+ AC_MSG_RESULT([$gt_source])
+ fi
+
+ if test "$USE_NLS" = "yes"; then
+
+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then
+ if { eval "gt_val=\$$gt_func_gnugettext_libintl"; test "$gt_val" = "yes"; }; then
+ AC_MSG_CHECKING([how to link with libintl])
+ AC_MSG_RESULT([$LIBINTL])
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL])
+ fi
+
+ dnl For backward compatibility. Some packages may be using this.
+ AC_DEFINE([HAVE_GETTEXT], [1],
+ [Define if the GNU gettext() function is already present or preinstalled.])
+ AC_DEFINE([HAVE_DCGETTEXT], [1],
+ [Define if the GNU dcgettext() function is already present or preinstalled.])
+ fi
+
+ dnl We need to process the po/ directory.
+ POSUB=po
+ fi
+
+ ifelse(gt_included_intl, yes, [
+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL
+ dnl to 'yes' because some of the testsuite requires it.
+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then
+ BUILD_INCLUDED_LIBINTL=yes
+ fi
+
+ dnl Make all variables we use known to autoconf.
+ AC_SUBST([BUILD_INCLUDED_LIBINTL])
+ AC_SUBST([USE_INCLUDED_LIBINTL])
+ AC_SUBST([CATOBJEXT])
+
+ dnl For backward compatibility. Some configure.ins may be using this.
+ nls_cv_header_intl=
+ nls_cv_header_libgt=
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ DATADIRNAME=share
+ AC_SUBST([DATADIRNAME])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INSTOBJEXT=.mo
+ AC_SUBST([INSTOBJEXT])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ GENCAT=gencat
+ AC_SUBST([GENCAT])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLOBJS=
+ if test "$USE_INCLUDED_LIBINTL" = yes; then
+ INTLOBJS="\$(GETTOBJS)"
+ fi
+ AC_SUBST([INTLOBJS])
+
+ dnl Enable libtool support if the surrounding package wishes it.
+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix
+ AC_SUBST([INTL_LIBTOOL_SUFFIX_PREFIX])
+ ])
+
+ dnl For backward compatibility. Some Makefiles may be using this.
+ INTLLIBS="$LIBINTL"
+ AC_SUBST([INTLLIBS])
+
+ dnl Make all documented variables known to autoconf.
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ AC_SUBST([POSUB])
+])
+
+
+dnl gt_NEEDS_INIT ensures that the gt_needs variable is initialized.
+m4_define([gt_NEEDS_INIT],
+[
+ m4_divert_text([DEFAULTS], [gt_needs=])
+ m4_define([gt_NEEDS_INIT], [])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_NEED([NEEDSYMBOL])
+AC_DEFUN([AM_GNU_GETTEXT_NEED],
+[
+ m4_divert_text([INIT_PREPARE], [gt_needs="$gt_needs $1"])
+])
+
+
+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_VERSION], [])
+
+
+dnl Usage: AM_GNU_GETTEXT_REQUIRE_VERSION([gettext-version])
+AC_DEFUN([AM_GNU_GETTEXT_REQUIRE_VERSION], [])
diff --git a/m4/glibc2.m4 b/m4/glibc2.m4
new file mode 100644
index 00000000..17a70040
--- /dev/null
+++ b/m4/glibc2.m4
@@ -0,0 +1,31 @@
+# glibc2.m4 serial 3
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2019 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.0 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gt_GLIBC2],
+ [
+ AC_CACHE_CHECK([whether we are using the GNU C Library 2 or newer],
+ [ac_cv_gnu_library_2],
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+ Lucky GNU user
+ #endif
+#endif
+ ],
+ [ac_cv_gnu_library_2=yes],
+ [ac_cv_gnu_library_2=no])
+ ]
+ )
+ AC_SUBST([GLIBC2])
+ GLIBC2="$ac_cv_gnu_library_2"
+ ]
+)
diff --git a/m4/glibc21.m4 b/m4/glibc21.m4
new file mode 100644
index 00000000..0ab0f235
--- /dev/null
+++ b/m4/glibc21.m4
@@ -0,0 +1,34 @@
+# glibc21.m4 serial 5
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2019 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# Test for the GNU C Library, version 2.1 or newer, or uClibc.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+ [
+ AC_CACHE_CHECK([whether we are using the GNU C Library >= 2.1 or uClibc],
+ [ac_cv_gnu_library_2_1],
+ [AC_EGREP_CPP([Lucky],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+#ifdef __UCLIBC__
+ Lucky user
+#endif
+ ],
+ [ac_cv_gnu_library_2_1=yes],
+ [ac_cv_gnu_library_2_1=no])
+ ]
+ )
+ AC_SUBST([GLIBC21])
+ GLIBC21="$ac_cv_gnu_library_2_1"
+ ]
+)
diff --git a/m4/host-cpu-c-abi.m4 b/m4/host-cpu-c-abi.m4
new file mode 100644
index 00000000..4407296d
--- /dev/null
+++ b/m4/host-cpu-c-abi.m4
@@ -0,0 +1,644 @@
+# host-cpu-c-abi.m4 serial 11
+dnl Copyright (C) 2002-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible and Sam Steingold.
+
+dnl Sets the HOST_CPU variable to the canonical name of the CPU.
+dnl Sets the HOST_CPU_C_ABI variable to the canonical name of the CPU with its
+dnl C language ABI (application binary interface).
+dnl Also defines __${HOST_CPU}__ and __${HOST_CPU_C_ABI}__ as C macros in
+dnl config.h.
+dnl
+dnl This canonical name can be used to select a particular assembly language
+dnl source file that will interoperate with C code on the given host.
+dnl
+dnl For example:
+dnl * 'i386' and 'sparc' are different canonical names, because code for i386
+dnl will not run on SPARC CPUs and vice versa. They have different
+dnl instruction sets.
+dnl * 'sparc' and 'sparc64' are different canonical names, because code for
+dnl 'sparc' and code for 'sparc64' cannot be linked together: 'sparc' code
+dnl contains 32-bit instructions, whereas 'sparc64' code contains 64-bit
+dnl instructions. A process on a SPARC CPU can be in 32-bit mode or in 64-bit
+dnl mode, but not both.
+dnl * 'mips' and 'mipsn32' are different canonical names, because they use
+dnl different argument passing and return conventions for C functions, and
+dnl although the instruction set of 'mips' is a large subset of the
+dnl instruction set of 'mipsn32'.
+dnl * 'mipsn32' and 'mips64' are different canonical names, because they use
+dnl different sizes for the C types like 'int' and 'void *', and although
+dnl the instruction sets of 'mipsn32' and 'mips64' are the same.
+dnl * The same canonical name is used for different endiannesses. You can
+dnl determine the endianness through preprocessor symbols:
+dnl - 'arm': test __ARMEL__.
+dnl - 'mips', 'mipsn32', 'mips64': test _MIPSEB vs. _MIPSEL.
+dnl - 'powerpc64': test _BIG_ENDIAN vs. _LITTLE_ENDIAN.
+dnl * The same name 'i386' is used for CPUs of type i386, i486, i586
+dnl (Pentium), AMD K7, Pentium II, Pentium IV, etc., because
+dnl - Instructions that do not exist on all of these CPUs (cmpxchg,
+dnl MMX, SSE, SSE2, 3DNow! etc.) are not frequently used. If your
+dnl assembly language source files use such instructions, you will
+dnl need to make the distinction.
+dnl - Speed of execution of the common instruction set is reasonable across
+dnl the entire family of CPUs. If you have assembly language source files
+dnl that are optimized for particular CPU types (like GNU gmp has), you
+dnl will need to make the distinction.
+dnl See <https://en.wikipedia.org/wiki/X86_instruction_listings>.
+AC_DEFUN([gl_HOST_CPU_C_ABI],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_C_ASM])
+ AC_CACHE_CHECK([host CPU and C ABI], [gl_cv_host_cpu_c_abi],
+ [case "$host_cpu" in
+
+changequote(,)dnl
+ i[4567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=i386
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=x86_64-x32],
+ [gl_cv_host_cpu_c_abi=x86_64])],
+ [gl_cv_host_cpu_c_abi=i386])
+ ;;
+
+changequote(,)dnl
+ alphaev[4-8] | alphaev56 | alphapca5[67] | alphaev6[78] )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi=alpha
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __aarch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __ILP32__ || defined _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=arm64-ilp32],
+ [gl_cv_host_cpu_c_abi=arm64])],
+ [# Don't distinguish little-endian and big-endian arm, since they
+ # don't require different machine code for simple operations and
+ # since the user can distinguish them through the preprocessor
+ # defines __ARMEL__ vs. __ARMEB__.
+ # But distinguish arm which passes floating-point arguments and
+ # return values in integer registers (r0, r1, ...) - this is
+ # gcc -mfloat-abi=soft or gcc -mfloat-abi=softfp - from arm which
+ # passes them in float registers (s0, s1, ...) and double registers
+ # (d0, d1, ...) - this is gcc -mfloat-abi=hard. GCC 4.6 or newer
+ # sets the preprocessor defines __ARM_PCS (for the first case) and
+ # __ARM_PCS_VFP (for the second case), but older GCC does not.
+ echo 'double ddd; void func (double dd) { ddd = dd; }' > conftest.c
+ # Look for a reference to the register d0 in the .s file.
+ AC_TRY_COMMAND(${CC-cc} $CFLAGS $CPPFLAGS $gl_c_asm_opt conftest.c) >/dev/null 2>&1
+ if LC_ALL=C grep 'd0,' conftest.$gl_asmext >/dev/null; then
+ gl_cv_host_cpu_c_abi=armhf
+ else
+ gl_cv_host_cpu_c_abi=arm
+ fi
+ rm -f conftest*
+ ])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=hppa64],
+ [gl_cv_host_cpu_c_abi=hppa])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=ia64-ilp32],
+ [gl_cv_host_cpu_c_abi=ia64])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mips64],
+ [# In the n32 ABI, _ABIN32 is defined, _ABIO32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIN32.
+ # In the 32 ABI, _ABIO32 is defined, _ABIN32 is not defined (but
+ # may later get defined by <sgidefs.h>), and _MIPS_SIM == _ABIO32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (_MIPS_SIM == _ABIN32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=mipsn32],
+ [gl_cv_host_cpu_c_abi=mips])])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# On powerpc64, there are two ABIs on Linux: The AIX compatible
+ # one and the ELFv2 one. The latter defines _CALL_ELF=2.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _CALL_ELF && _CALL_ELF == 2
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=powerpc64-elfv2],
+ [gl_cv_host_cpu_c_abi=powerpc64])
+ ],
+ [gl_cv_host_cpu_c_abi=powerpc])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi=powerpc
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 2 architectures (with variants): rv32* and rv64*.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if __riscv_xlen == 64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [cpu=riscv64],
+ [cpu=riscv32])
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [main_abi=lp64],
+ [main_abi=ilp32])
+ # Float ABIs:
+ # __riscv_float_abi_double:
+ # 'float' and 'double' are passed in floating-point registers.
+ # __riscv_float_abi_single:
+ # 'float' are passed in floating-point registers.
+ # __riscv_float_abi_soft:
+ # No values are passed in floating-point registers.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_double
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=d],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __riscv_float_abi_single
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [float_abi=f],
+ [float_abi=''])
+ ])
+ gl_cv_host_cpu_c_abi="${cpu}-${main_abi}${float_abi}"
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=s390x],
+ [gl_cv_host_cpu_c_abi=s390])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi=sparc64],
+ [gl_cv_host_cpu_c_abi=sparc])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi="$host_cpu"
+ ;;
+ esac
+ ])
+
+ dnl In most cases, $HOST_CPU and $HOST_CPU_C_ABI are the same.
+ HOST_CPU=`echo "$gl_cv_host_cpu_c_abi" | sed -e 's/-.*//'`
+ HOST_CPU_C_ABI="$gl_cv_host_cpu_c_abi"
+ AC_SUBST([HOST_CPU])
+ AC_SUBST([HOST_CPU_C_ABI])
+
+ # This was
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU}__])
+ # AC_DEFINE_UNQUOTED([__${HOST_CPU_C_ABI}__])
+ # earlier, but KAI C++ 3.2d doesn't like this.
+ sed -e 's/-/_/g' >> confdefs.h <<EOF
+#ifndef __${HOST_CPU}__
+#define __${HOST_CPU}__ 1
+#endif
+#ifndef __${HOST_CPU_C_ABI}__
+#define __${HOST_CPU_C_ABI}__ 1
+#endif
+EOF
+ AH_TOP([/* CPU and C ABI indicator */
+#ifndef __i386__
+#undef __i386__
+#endif
+#ifndef __x86_64_x32__
+#undef __x86_64_x32__
+#endif
+#ifndef __x86_64__
+#undef __x86_64__
+#endif
+#ifndef __alpha__
+#undef __alpha__
+#endif
+#ifndef __arm__
+#undef __arm__
+#endif
+#ifndef __armhf__
+#undef __armhf__
+#endif
+#ifndef __arm64_ilp32__
+#undef __arm64_ilp32__
+#endif
+#ifndef __arm64__
+#undef __arm64__
+#endif
+#ifndef __hppa__
+#undef __hppa__
+#endif
+#ifndef __hppa64__
+#undef __hppa64__
+#endif
+#ifndef __ia64_ilp32__
+#undef __ia64_ilp32__
+#endif
+#ifndef __ia64__
+#undef __ia64__
+#endif
+#ifndef __m68k__
+#undef __m68k__
+#endif
+#ifndef __mips__
+#undef __mips__
+#endif
+#ifndef __mipsn32__
+#undef __mipsn32__
+#endif
+#ifndef __mips64__
+#undef __mips64__
+#endif
+#ifndef __powerpc__
+#undef __powerpc__
+#endif
+#ifndef __powerpc64__
+#undef __powerpc64__
+#endif
+#ifndef __powerpc64_elfv2__
+#undef __powerpc64_elfv2__
+#endif
+#ifndef __riscv32__
+#undef __riscv32__
+#endif
+#ifndef __riscv64__
+#undef __riscv64__
+#endif
+#ifndef __riscv32_ilp32__
+#undef __riscv32_ilp32__
+#endif
+#ifndef __riscv32_ilp32f__
+#undef __riscv32_ilp32f__
+#endif
+#ifndef __riscv32_ilp32d__
+#undef __riscv32_ilp32d__
+#endif
+#ifndef __riscv64_ilp32__
+#undef __riscv64_ilp32__
+#endif
+#ifndef __riscv64_ilp32f__
+#undef __riscv64_ilp32f__
+#endif
+#ifndef __riscv64_ilp32d__
+#undef __riscv64_ilp32d__
+#endif
+#ifndef __riscv64_lp64__
+#undef __riscv64_lp64__
+#endif
+#ifndef __riscv64_lp64f__
+#undef __riscv64_lp64f__
+#endif
+#ifndef __riscv64_lp64d__
+#undef __riscv64_lp64d__
+#endif
+#ifndef __s390__
+#undef __s390__
+#endif
+#ifndef __s390x__
+#undef __s390x__
+#endif
+#ifndef __sh__
+#undef __sh__
+#endif
+#ifndef __sparc__
+#undef __sparc__
+#endif
+#ifndef __sparc64__
+#undef __sparc64__
+#endif
+])
+
+])
+
+
+dnl Sets the HOST_CPU_C_ABI_32BIT variable to 'yes' if the C language ABI
+dnl (application binary interface) is a 32-bit one, or to 'no' otherwise.
+dnl This is a simplified variant of gl_HOST_CPU_C_ABI.
+AC_DEFUN([gl_HOST_CPU_C_ABI_32BIT],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_CACHE_CHECK([32-bit host C ABI], [gl_cv_host_cpu_c_abi_32bit],
+ [if test -n "$gl_cv_host_cpu_c_abi"; then
+ case "$gl_cv_host_cpu_c_abi" in
+ i386 | x86_64-x32 | arm | armhf | arm64-ilp32 | hppa | ia64-ilp32 | mips | mipsn32 | powerpc | riscv*-ilp32* | s390 | sparc)
+ gl_cv_host_cpu_c_abi_32bit=yes ;;
+ *)
+ gl_cv_host_cpu_c_abi_32bit=no ;;
+ esac
+ else
+ case "$host_cpu" in
+
+changequote(,)dnl
+ i[4567]86 )
+changequote([,])dnl
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ x86_64 )
+ # On x86_64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - 64-bit instruction set, 64-bit pointers, 64-bit 'long': x86_64.
+ # - 64-bit instruction set, 64-bit pointers, 32-bit 'long': x86_64
+ # with native Windows (mingw, MSVC).
+ # - 64-bit instruction set, 32-bit pointers, 32-bit 'long': x86_64-x32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': i386.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if (defined __x86_64__ || defined __amd64__ \
+ || defined _M_X64 || defined _M_AMD64) \
+ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ arm* | aarch64 )
+ # Assume arm with EABI.
+ # On arm64 systems, the C compiler may be generating code in one of
+ # these ABIs:
+ # - aarch64 instruction set, 64-bit pointers, 64-bit 'long': arm64.
+ # - aarch64 instruction set, 32-bit pointers, 32-bit 'long': arm64-ilp32.
+ # - 32-bit instruction set, 32-bit pointers, 32-bit 'long': arm or armhf.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __aarch64__ && !(defined __ILP32__ || defined _ILP32)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ hppa1.0 | hppa1.1 | hppa2.0* | hppa64 )
+ # On hppa, the C compiler may be generating 32-bit code or 64-bit
+ # code. In the latter case, it defines _LP64 and __LP64__.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ ia64* )
+ # On ia64 on HP-UX, the C compiler may be generating 64-bit code or
+ # 32-bit code. In the latter case, it defines _ILP32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _ILP32
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=yes],
+ [gl_cv_host_cpu_c_abi_32bit=no])
+ ;;
+
+ mips* )
+ # We should also check for (_MIPS_SZPTR == 64), but gcc keeps this
+ # at 32.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined _MIPS_SZLONG && (_MIPS_SZLONG == 64)
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ powerpc* )
+ # Different ABIs are in use on AIX vs. Mac OS X vs. Linux,*BSD.
+ # No need to distinguish them here; the caller may distinguish
+ # them based on the OS.
+ # On powerpc64 systems, the C compiler may still be generating
+ # 32-bit code. And on powerpc-ibm-aix systems, the C compiler may
+ # be generating 64-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ rs6000 )
+ gl_cv_host_cpu_c_abi_32bit=yes
+ ;;
+
+ riscv32 | riscv64 )
+ # There are 6 ABIs: ilp32, ilp32f, ilp32d, lp64, lp64f, lp64d.
+ # Size of 'long' and 'void *':
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ s390* )
+ # On s390x, the C compiler may be generating 64-bit (= s390x) code
+ # or 31-bit (= s390) code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __LP64__ || defined __s390x__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ sparc | sparc64 )
+ # UltraSPARCs running Linux have `uname -m` = "sparc64", but the
+ # C compiler still generates 32-bit code.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_host_cpu_c_abi_32bit=no],
+ [gl_cv_host_cpu_c_abi_32bit=yes])
+ ;;
+
+ *)
+ gl_cv_host_cpu_c_abi_32bit=no
+ ;;
+ esac
+ fi
+ ])
+
+ HOST_CPU_C_ABI_32BIT="$gl_cv_host_cpu_c_abi_32bit"
+])
diff --git a/m4/iconv.m4 b/m4/iconv.m4
new file mode 100644
index 00000000..a285e9da
--- /dev/null
+++ b/m4/iconv.m4
@@ -0,0 +1,288 @@
+# iconv.m4 serial 21
+dnl Copyright (C) 2000-2002, 2007-2014, 2016-2019 Free Software Foundation,
+dnl Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
+[
+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([iconv])
+])
+
+AC_DEFUN([AM_ICONV_LINK],
+[
+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
+ dnl those with the standalone portable GNU libiconv installed).
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
+ dnl accordingly.
+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
+
+ dnl Add $INCICONV to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed libiconv and not disabled its use
+ dnl via --without-libiconv-prefix, he wants to use it. The first
+ dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
+ am_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
+
+ AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_func_iconv=yes])
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+ ]],
+ [[iconv_t cd = iconv_open("","");
+ iconv(cd,NULL,NULL,NULL,NULL);
+ iconv_close(cd);]])],
+ [am_cv_lib_iconv=yes]
+ [am_cv_func_iconv=yes])
+ LIBS="$am_save_LIBS"
+ fi
+ ])
+ if test "$am_cv_func_iconv" = yes; then
+ AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
+ dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
+ dnl Solaris 10.
+ am_save_LIBS="$LIBS"
+ if test $am_cv_lib_iconv = yes; then
+ LIBS="$LIBS $LIBICONV"
+ fi
+ am_cv_func_iconv_works=no
+ for ac_iconv_const in '' 'const'; do
+ AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <iconv.h>
+#include <string.h>
+
+#ifndef ICONV_CONST
+# define ICONV_CONST $ac_iconv_const
+#endif
+ ]],
+ [[int result = 0;
+ /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
+ returns. */
+ {
+ iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
+ if (cd_utf8_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_utf8_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 1;
+ iconv_close (cd_utf8_to_88591);
+ }
+ }
+ /* Test against Solaris 10 bug: Failures are not distinguishable from
+ successful returns. */
+ {
+ iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
+ if (cd_ascii_to_88591 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\263";
+ char buf[10];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_ascii_to_88591,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res == 0)
+ result |= 2;
+ iconv_close (cd_ascii_to_88591);
+ }
+ }
+ /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304";
+ static char buf[2] = { (char)0xDE, (char)0xAD };
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = 1;
+ char *outptr = buf;
+ size_t outbytesleft = 1;
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
+ result |= 4;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#if 0 /* This bug could be worked around by the caller. */
+ /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
+ {
+ iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
+ if (cd_88591_to_utf8 != (iconv_t)(-1))
+ {
+ static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
+ char buf[50];
+ ICONV_CONST char *inptr = input;
+ size_t inbytesleft = strlen (input);
+ char *outptr = buf;
+ size_t outbytesleft = sizeof (buf);
+ size_t res = iconv (cd_88591_to_utf8,
+ &inptr, &inbytesleft,
+ &outptr, &outbytesleft);
+ if ((int)res > 0)
+ result |= 8;
+ iconv_close (cd_88591_to_utf8);
+ }
+ }
+#endif
+ /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
+ provided. */
+ {
+ /* Try standardized names. */
+ iconv_t cd1 = iconv_open ("UTF-8", "EUC-JP");
+ /* Try IRIX, OSF/1 names. */
+ iconv_t cd2 = iconv_open ("UTF-8", "eucJP");
+ /* Try AIX names. */
+ iconv_t cd3 = iconv_open ("UTF-8", "IBM-eucJP");
+ /* Try HP-UX names. */
+ iconv_t cd4 = iconv_open ("utf8", "eucJP");
+ if (cd1 == (iconv_t)(-1) && cd2 == (iconv_t)(-1)
+ && cd3 == (iconv_t)(-1) && cd4 == (iconv_t)(-1))
+ result |= 16;
+ if (cd1 != (iconv_t)(-1))
+ iconv_close (cd1);
+ if (cd2 != (iconv_t)(-1))
+ iconv_close (cd2);
+ if (cd3 != (iconv_t)(-1))
+ iconv_close (cd3);
+ if (cd4 != (iconv_t)(-1))
+ iconv_close (cd4);
+ }
+ return result;
+]])],
+ [am_cv_func_iconv_works=yes], ,
+ [case "$host_os" in
+ aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
+ *) am_cv_func_iconv_works="guessing yes" ;;
+ esac])
+ test "$am_cv_func_iconv_works" = no || break
+ done
+ LIBS="$am_save_LIBS"
+ ])
+ case "$am_cv_func_iconv_works" in
+ *no) am_func_iconv=no am_cv_lib_iconv=no ;;
+ *) am_func_iconv=yes ;;
+ esac
+ else
+ am_func_iconv=no am_cv_lib_iconv=no
+ fi
+ if test "$am_func_iconv" = yes; then
+ AC_DEFINE([HAVE_ICONV], [1],
+ [Define if you have the iconv() function and it works.])
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ AC_MSG_CHECKING([how to link with libiconv])
+ AC_MSG_RESULT([$LIBICONV])
+ else
+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
+ dnl either.
+ CPPFLAGS="$am_save_CPPFLAGS"
+ LIBICONV=
+ LTLIBICONV=
+ fi
+ AC_SUBST([LIBICONV])
+ AC_SUBST([LTLIBICONV])
+])
+
+dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
+dnl avoid warnings like
+dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
+dnl This is tricky because of the way 'aclocal' is implemented:
+dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
+dnl Otherwise aclocal's initial scan pass would miss the macro definition.
+dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
+dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
+dnl warnings.
+m4_define([gl_iconv_AC_DEFUN],
+ m4_version_prereq([2.64],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [m4_ifdef([gl_00GNULIB],
+ [[AC_DEFUN_ONCE(
+ [$1], [$2])]],
+ [[AC_DEFUN(
+ [$1], [$2])]])]))
+gl_iconv_AC_DEFUN([AM_ICONV],
+[
+ AM_ICONV_LINK
+ if test "$am_cv_func_iconv" = yes; then
+ AC_MSG_CHECKING([for iconv declaration])
+ AC_CACHE_VAL([am_cv_proto_iconv], [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stdlib.h>
+#include <iconv.h>
+extern
+#ifdef __cplusplus
+"C"
+#endif
+#if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
+#else
+size_t iconv();
+#endif
+ ]],
+ [[]])],
+ [am_cv_proto_iconv_arg1=""],
+ [am_cv_proto_iconv_arg1="const"])
+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
+ AC_MSG_RESULT([
+ $am_cv_proto_iconv])
+ else
+ dnl When compiling GNU libiconv on a system that does not have iconv yet,
+ dnl pick the POSIX compliant declaration without 'const'.
+ am_cv_proto_iconv_arg1=""
+ fi
+ AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
+ [Define as const if the declaration of iconv() needs const.])
+ dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
+ m4_ifdef([gl_ICONV_H_DEFAULTS],
+ [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
+ if test -n "$am_cv_proto_iconv_arg1"; then
+ ICONV_CONST="const"
+ fi
+ ])
+])
diff --git a/m4/intdiv0.m4 b/m4/intdiv0.m4
new file mode 100644
index 00000000..40dd43b3
--- /dev/null
+++ b/m4/intdiv0.m4
@@ -0,0 +1,87 @@
+# intdiv0.m4 serial 6 (gettext-0.18.2)
+dnl Copyright (C) 2002, 2007-2008, 2010-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gt_INTDIV0],
+[
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE],
+ gt_cv_int_divbyzero_sigfpe,
+ [
+ gt_cv_int_divbyzero_sigfpe=
+changequote(,)dnl
+ case "$host_os" in
+ macos* | darwin[6-9]* | darwin[1-9][0-9]*)
+ # On Mac OS X 10.2 or newer, just assume the same as when cross-
+ # compiling. If we were to perform the real test, 1 Crash Report
+ # dialog window would pop up.
+ case "$host_cpu" in
+ i[34567]86 | x86_64)
+ gt_cv_int_divbyzero_sigfpe="guessing yes" ;;
+ esac
+ ;;
+ esac
+changequote([,])dnl
+ if test -z "$gt_cv_int_divbyzero_sigfpe"; then
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <stdlib.h>
+#include <signal.h>
+
+static void
+sigfpe_handler (int sig)
+{
+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */
+ exit (sig != SIGFPE);
+}
+
+int x = 1;
+int y = 0;
+int z;
+int xnan;
+
+int main ()
+{
+ signal (SIGFPE, sigfpe_handler);
+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */
+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP)
+ signal (SIGTRAP, sigfpe_handler);
+#endif
+/* Linux/SPARC yields signal SIGILL. */
+#if defined (__sparc__) && defined (__linux__)
+ signal (SIGILL, sigfpe_handler);
+#endif
+
+ z = x / y;
+ xnan = y / y;
+ exit (2);
+}
+]])],
+ [gt_cv_int_divbyzero_sigfpe=yes],
+ [gt_cv_int_divbyzero_sigfpe=no],
+ [
+ # Guess based on the CPU.
+changequote(,)dnl
+ case "$host_cpu" in
+ alpha* | i[34567]86 | x86_64 | m68k | s390*)
+ gt_cv_int_divbyzero_sigfpe="guessing yes";;
+ *)
+ gt_cv_int_divbyzero_sigfpe="guessing no";;
+ esac
+changequote([,])dnl
+ ])
+ fi
+ ])
+ case "$gt_cv_int_divbyzero_sigfpe" in
+ *yes) value=1;;
+ *) value=0;;
+ esac
+ AC_DEFINE_UNQUOTED([INTDIV0_RAISES_SIGFPE], [$value],
+ [Define if integer division by zero raises signal SIGFPE.])
+])
diff --git a/m4/intl-thread-locale.m4 b/m4/intl-thread-locale.m4
new file mode 100644
index 00000000..3ecba86a
--- /dev/null
+++ b/m4/intl-thread-locale.m4
@@ -0,0 +1,183 @@
+# intl-thread-locale.m4 serial 4
+dnl Copyright (C) 2015-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Check how to retrieve the name of a per-thread locale (POSIX locale_t).
+dnl Sets gt_nameless_locales.
+AC_DEFUN([gt_INTL_THREAD_LOCALE_NAME],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Persuade Solaris <locale.h> to define 'locale_t'.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ dnl Test whether uselocale() exists and works at all.
+ gt_FUNC_USELOCALE
+
+ dnl On OpenBSD >= 6.2, the locale_t type and the uselocale(), newlocale(),
+ dnl duplocale(), freelocale() functions exist but are effectively useless,
+ dnl because the locale_t value depends only on the LC_CTYPE category of the
+ dnl locale and furthermore contains only one bit of information (it
+ dnl distinguishes the "C" locale from the *.UTF-8 locales). See
+ dnl <https://cvsweb.openbsd.org/src/lib/libc/locale/newlocale.c?rev=1.1&content-type=text/x-cvsweb-markup>.
+ dnl In the setlocale() implementation they have thought about the programs
+ dnl that use the API ("Even though only LC_CTYPE has any effect in the
+ dnl OpenBSD base system, store complete information about the global locale,
+ dnl such that third-party software can access it"), but for uselocale()
+ dnl they did not think about the programs.
+ dnl In this situation, even the HAVE_NAMELESS_LOCALES support does not work.
+ dnl So, define HAVE_FAKE_LOCALES and disable all locale_t support.
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ AC_CHECK_HEADERS_ONCE([xlocale.h])
+ AC_CACHE_CHECK([for fake locale system (OpenBSD)],
+ [gt_cv_locale_fake],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+int main ()
+{
+ locale_t loc1, loc2;
+ if (setlocale (LC_ALL, "de_DE.UTF-8") == NULL) return 1;
+ if (setlocale (LC_ALL, "fr_FR.UTF-8") == NULL) return 1;
+ loc1 = newlocale (LC_ALL_MASK, "de_DE.UTF-8", (locale_t)0);
+ loc2 = newlocale (LC_ALL_MASK, "fr_FR.UTF-8", (locale_t)0);
+ return !(loc1 == loc2);
+}]])],
+ [gt_cv_locale_fake=yes],
+ [gt_cv_locale_fake=no],
+ [dnl Guess the locale system is fake only on OpenBSD.
+ case "$host_os" in
+ openbsd*) gt_cv_locale_fake="guessing yes" ;;
+ *) gt_cv_locale_fake="guessing no" ;;
+ esac
+ ])
+ ])
+ ;;
+ *) gt_cv_locale_fake=no ;;
+ esac
+ case "$gt_cv_locale_fake" in
+ *yes)
+ AC_DEFINE([HAVE_FAKE_LOCALES], [1],
+ [Define if the locale_t type contains insufficient information, as on OpenBSD.])
+ ;;
+ esac
+
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ AC_CACHE_CHECK([for Solaris 11.4 locale system],
+ [gt_cv_locale_solaris114],
+ [case "$host_os" in
+ solaris*)
+ dnl Test whether <locale.h> defines locale_t as a typedef of
+ dnl 'struct _LC_locale_t **' (whereas Illumos defines it as a
+ dnl typedef of 'struct _locale *').
+ dnl Another possible test would be to include <sys/localedef.h>
+ dnl and test whether it defines the _LC_core_data_locale_t type.
+ dnl This type was added in Solaris 11.4.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+ #include <locale.h>
+ struct _LC_locale_t *x;
+ locale_t y;
+ ]],
+ [[*y = x;]])],
+ [gt_cv_locale_solaris114=yes],
+ [gt_cv_locale_solaris114=no])
+ ;;
+ *) gt_cv_locale_solaris114=no ;;
+ esac
+ ])
+ ;;
+ *) gt_cv_locale_solaris114=no ;;
+ esac
+ if test $gt_cv_locale_solaris114 = yes; then
+ AC_DEFINE([HAVE_SOLARIS114_LOCALES], [1],
+ [Define if the locale_t type is as on Solaris 11.4.])
+ fi
+
+ dnl Solaris 12 will maybe provide getlocalename_l. If it does, it will
+ dnl improve the implementation of gl_locale_name_thread(), by removing
+ dnl the use of undocumented structures.
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ AC_CHECK_FUNCS([getlocalename_l])
+ ;;
+ esac
+
+ dnl This code is for future use, in case we some day have to port to a
+ dnl platform where the locale_t type does not provide access to the name of
+ dnl each locale category. This code has the drawback that it requires the
+ dnl gnulib overrides of 'newlocale', 'duplocale', 'freelocale', which is a
+ dnl problem for GNU libunistring. Therefore try hard to avoid enabling this
+ dnl code!
+ gt_nameless_locales=no
+ if false; then
+ gt_nameless_locales=yes
+ AC_DEFINE([HAVE_NAMELESS_LOCALES], [1],
+ [Define if the locale_t type does not contain the name of each locale category.])
+ fi
+])
+
+dnl Tests whether uselocale() exists and is usable.
+dnl Sets gt_cv_func_uselocale_works. Defines HAVE_WORKING_USELOCALE.
+AC_DEFUN([gt_FUNC_USELOCALE],
+[
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
+
+ dnl Persuade Solaris <locale.h> to define 'locale_t'.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ AC_CHECK_FUNCS_ONCE([uselocale])
+
+ dnl On AIX 7.2, the uselocale() function is not documented and leads to
+ dnl crashes in subsequent setlocale() invocations.
+ if test $ac_cv_func_uselocale = yes; then
+ AC_CHECK_HEADERS_ONCE([xlocale.h])
+ AC_CACHE_CHECK([whether uselocale works],
+ [gt_cv_func_uselocale_works],
+ [AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <locale.h>
+#if HAVE_XLOCALE_H
+# include <xlocale.h>
+#endif
+int main ()
+{
+ uselocale (NULL);
+ setlocale (LC_ALL, "en_US.UTF-8");
+ return 0;
+}]])],
+ [gt_cv_func_uselocale_works=yes],
+ [gt_cv_func_uselocale_works=no],
+ [# Guess no on AIX, yes otherwise.
+ case "$host_os" in
+ aix*) gt_cv_func_uselocale_works="guessing no" ;;
+ *) gt_cv_func_uselocale_works="guessing yes" ;;
+ esac
+ ])
+ ])
+ else
+ gt_cv_func_uselocale_works=no
+ fi
+ case "$gt_cv_func_uselocale_works" in
+ *yes)
+ AC_DEFINE([HAVE_WORKING_USELOCALE], [1],
+ [Define if the uselocale function exists any may safely be called.])
+ ;;
+ esac
+])
diff --git a/m4/intl.m4 b/m4/intl.m4
new file mode 100644
index 00000000..b481c505
--- /dev/null
+++ b/m4/intl.m4
@@ -0,0 +1,312 @@
+# intl.m4 serial 34 (gettext-0.19.9)
+dnl Copyright (C) 1995-2014, 2016-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2009.
+
+AC_PREREQ([2.60])
+
+dnl Checks for all prerequisites of the intl subdirectory,
+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS,
+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL.
+AC_DEFUN([AM_INTL_SUBDIR],
+[
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+ AC_REQUIRE([AC_PROG_CC])dnl
+ AC_REQUIRE([AC_CANONICAL_HOST])dnl
+ AC_REQUIRE([gt_GLIBC2])dnl
+ AC_REQUIRE([gl_VISIBILITY])dnl
+ AC_REQUIRE([gt_INTL_SUBDIR_CORE])dnl
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])dnl
+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl
+ AC_REQUIRE([gt_TYPE_WINT_T])dnl
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gt_TYPE_INTMAX_T])
+ AC_REQUIRE([gt_PRINTF_POSIX])
+ AC_REQUIRE([gl_GLIBC21])dnl
+ AC_REQUIRE([gl_XSIZE])dnl
+ AC_REQUIRE([gl_FCNTL_O_FLAGS])dnl
+ AC_REQUIRE([gt_INTL_THREAD_LOCALE_NAME])
+ AC_REQUIRE([gt_INTL_MACOSX])dnl
+ AC_REQUIRE([gl_EXTERN_INLINE])dnl
+ AC_REQUIRE([gt_GL_ATTRIBUTE])dnl
+ AC_REQUIRE([AC_C_FLEXIBLE_ARRAY_MEMBER])dnl
+
+ dnl In projects that use gnulib, use gl_PROG_AR_RANLIB.
+ dnl The '][' hides this use from 'aclocal'.
+ m4_ifdef([g][l_PROG_AR_RANLIB],
+ [AC_REQUIRE([g][l_PROG_AR_RANLIB])],
+ [AC_REQUIRE([AC_PROG_RANLIB])
+ dnl Use Automake-documented default values for AR and ARFLAGS, but prefer
+ dnl ${host}-ar over ar (useful for cross-compiling).
+ AC_CHECK_TOOL([AR], [ar], [ar])
+ if test -z "$ARFLAGS"; then
+ ARFLAGS='cr'
+ fi
+ AC_SUBST([AR])
+ AC_SUBST([ARFLAGS])
+ ])
+
+ dnl Support for automake's --enable-silent-rules.
+ case "$enable_silent_rules" in
+ yes) INTL_DEFAULT_VERBOSITY=0;;
+ no) INTL_DEFAULT_VERBOSITY=1;;
+ *) INTL_DEFAULT_VERBOSITY=1;;
+ esac
+ AC_SUBST([INTL_DEFAULT_VERBOSITY])
+
+ AC_CHECK_TYPE([ptrdiff_t], ,
+ [AC_DEFINE([ptrdiff_t], [long],
+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.])
+ ])
+ AC_CHECK_HEADERS([features.h stddef.h stdlib.h string.h])
+ AC_CHECK_FUNCS([asprintf fwprintf newlocale putenv setenv setlocale \
+ snprintf strnlen uselocale wcslen wcsnlen mbrtowc wcrtomb])
+
+ dnl Use the _snprintf function only if it is declared (because on NetBSD it
+ dnl is defined as a weak alias of snprintf; we prefer to use the latter).
+ AC_CHECK_DECLS([_snprintf, _snwprintf], , , [#include <stdio.h>])
+
+ dnl Use the *_unlocked functions only if they are declared.
+ dnl (because some of them were defined without being declared in Solaris
+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
+ dnl on Solaris 2.5.1 to run on Solaris 2.6).
+ AC_CHECK_DECLS([getc_unlocked], , , [#include <stdio.h>])
+
+ case $gt_cv_func_printf_posix in
+ *yes) HAVE_POSIX_PRINTF=1 ;;
+ *) HAVE_POSIX_PRINTF=0 ;;
+ esac
+ AC_SUBST([HAVE_POSIX_PRINTF])
+ if test "$ac_cv_func_asprintf" = yes; then
+ HAVE_ASPRINTF=1
+ else
+ HAVE_ASPRINTF=0
+ fi
+ AC_SUBST([HAVE_ASPRINTF])
+ if test "$ac_cv_func_snprintf" = yes; then
+ HAVE_SNPRINTF=1
+ else
+ HAVE_SNPRINTF=0
+ fi
+ AC_SUBST([HAVE_SNPRINTF])
+ if test "$ac_cv_func_newlocale" = yes; then
+ HAVE_NEWLOCALE=1
+ else
+ HAVE_NEWLOCALE=0
+ fi
+ AC_SUBST([HAVE_NEWLOCALE])
+ if test "$ac_cv_func_wprintf" = yes; then
+ HAVE_WPRINTF=1
+ else
+ HAVE_WPRINTF=0
+ fi
+ AC_SUBST([HAVE_WPRINTF])
+
+ AM_LANGINFO_CODESET
+ gt_LC_MESSAGES
+
+ if test $gt_nameless_locales = yes; then
+ HAVE_NAMELESS_LOCALES=1
+ else
+ HAVE_NAMELESS_LOCALES=0
+ fi
+ AC_SUBST([HAVE_NAMELESS_LOCALES])
+
+ dnl Compilation on mingw and Cygwin needs special Makefile rules, because
+ dnl 1. when we install a shared library, we must arrange to export
+ dnl auxiliary pointer variables for every exported variable,
+ dnl 2. when we install a shared library and a static library simultaneously,
+ dnl the include file specifies __declspec(dllimport) and therefore we
+ dnl must arrange to define the auxiliary pointer variables for the
+ dnl exported variables _also_ in the static library.
+ if test "$enable_shared" = yes; then
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32dll=yes ;;
+ *) is_woe32dll=no ;;
+ esac
+ else
+ is_woe32dll=no
+ fi
+ WOE32DLL=$is_woe32dll
+ AC_SUBST([WOE32DLL])
+
+ dnl On mingw and Cygwin, we can activate special Makefile rules which add
+ dnl version information to the shared libraries and executables.
+ case "$host_os" in
+ mingw* | cygwin*) is_woe32=yes ;;
+ *) is_woe32=no ;;
+ esac
+ WOE32=$is_woe32
+ AC_SUBST([WOE32])
+ if test $WOE32 = yes; then
+ dnl Check for a program that compiles Windows resource files.
+ AC_CHECK_TOOL([WINDRES], [windres])
+ fi
+
+ dnl Rename some macros and functions used for locking.
+ AH_BOTTOM([
+#define __libc_lock_t gl_lock_t
+#define __libc_lock_define gl_lock_define
+#define __libc_lock_define_initialized gl_lock_define_initialized
+#define __libc_lock_init gl_lock_init
+#define __libc_lock_lock gl_lock_lock
+#define __libc_lock_unlock gl_lock_unlock
+#define __libc_lock_recursive_t gl_recursive_lock_t
+#define __libc_lock_define_recursive gl_recursive_lock_define
+#define __libc_lock_define_initialized_recursive gl_recursive_lock_define_initialized
+#define __libc_lock_init_recursive gl_recursive_lock_init
+#define __libc_lock_lock_recursive gl_recursive_lock_lock
+#define __libc_lock_unlock_recursive gl_recursive_lock_unlock
+#define glthread_in_use libintl_thread_in_use
+#define glthread_lock_init_func libintl_lock_init_func
+#define glthread_lock_lock_func libintl_lock_lock_func
+#define glthread_lock_unlock_func libintl_lock_unlock_func
+#define glthread_lock_destroy_func libintl_lock_destroy_func
+#define glthread_rwlock_init_multithreaded libintl_rwlock_init_multithreaded
+#define glthread_rwlock_init_func libintl_rwlock_init_func
+#define glthread_rwlock_rdlock_multithreaded libintl_rwlock_rdlock_multithreaded
+#define glthread_rwlock_rdlock_func libintl_rwlock_rdlock_func
+#define glthread_rwlock_wrlock_multithreaded libintl_rwlock_wrlock_multithreaded
+#define glthread_rwlock_wrlock_func libintl_rwlock_wrlock_func
+#define glthread_rwlock_unlock_multithreaded libintl_rwlock_unlock_multithreaded
+#define glthread_rwlock_unlock_func libintl_rwlock_unlock_func
+#define glthread_rwlock_destroy_multithreaded libintl_rwlock_destroy_multithreaded
+#define glthread_rwlock_destroy_func libintl_rwlock_destroy_func
+#define glthread_recursive_lock_init_multithreaded libintl_recursive_lock_init_multithreaded
+#define glthread_recursive_lock_init_func libintl_recursive_lock_init_func
+#define glthread_recursive_lock_lock_multithreaded libintl_recursive_lock_lock_multithreaded
+#define glthread_recursive_lock_lock_func libintl_recursive_lock_lock_func
+#define glthread_recursive_lock_unlock_multithreaded libintl_recursive_lock_unlock_multithreaded
+#define glthread_recursive_lock_unlock_func libintl_recursive_lock_unlock_func
+#define glthread_recursive_lock_destroy_multithreaded libintl_recursive_lock_destroy_multithreaded
+#define glthread_recursive_lock_destroy_func libintl_recursive_lock_destroy_func
+#define glthread_once_func libintl_once_func
+#define glthread_once_singlethreaded libintl_once_singlethreaded
+#define glthread_once_multithreaded libintl_once_multithreaded
+])
+])
+
+
+dnl Checks for the core files of the intl subdirectory:
+dnl dcigettext.c
+dnl eval-plural.h
+dnl explodename.c
+dnl finddomain.c
+dnl gettextP.h
+dnl gmo.h
+dnl hash-string.h hash-string.c
+dnl l10nflist.c
+dnl libgnuintl.h.in (except the *printf stuff)
+dnl loadinfo.h
+dnl loadmsgcat.c
+dnl localealias.c
+dnl log.c
+dnl plural-exp.h plural-exp.c
+dnl plural.y
+dnl Used by libglocale.
+AC_DEFUN([gt_INTL_SUBDIR_CORE],
+[
+ AC_REQUIRE([AC_C_INLINE])dnl
+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl
+ AC_REQUIRE([AC_FUNC_MMAP])dnl
+ AC_REQUIRE([gt_INTDIV0])dnl
+ AC_REQUIRE([gl_AC_TYPE_UINTMAX_T])dnl
+ AC_REQUIRE([gt_INTTYPES_PRI])dnl
+ AC_REQUIRE([gl_LOCK])dnl
+
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[int foo (int a) { a = __builtin_expect (a, 10); return a == 10 ? 0 : 1; }]],
+ [[]])],
+ [AC_DEFINE([HAVE_BUILTIN_EXPECT], [1],
+ [Define to 1 if the compiler understands __builtin_expect.])])
+
+ AC_CHECK_HEADERS([argz.h inttypes.h limits.h unistd.h sys/param.h])
+ AC_CHECK_FUNCS([getcwd getegid geteuid getgid getuid mempcpy munmap \
+ stpcpy strcasecmp strdup strtoul tsearch argz_count argz_stringify \
+ argz_next __fsetlocking])
+
+ dnl ADDED FOR BASH
+ AC_CHECK_FUNCS([localeconv])
+
+ dnl Use the *_unlocked functions only if they are declared.
+ dnl (because some of them were defined without being declared in Solaris
+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built
+ dnl on Solaris 2.5.1 to run on Solaris 2.6).
+ AC_CHECK_DECLS([feof_unlocked, fgets_unlocked], , , [#include <stdio.h>])
+
+ AM_ICONV
+
+ dnl intl/plural.c is generated from intl/plural.y. It requires bison,
+ dnl because plural.y uses bison specific features. It requires at least
+ dnl bison-2.7 for %define api.pure.
+ dnl bison is only needed for the maintainer (who touches plural.y). But in
+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put
+ dnl the rule in general Makefile. Now, some people carelessly touch the
+ dnl files or have a broken "make" program, hence the plural.c rule will
+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not
+ dnl present or too old.
+ AC_CHECK_PROGS([INTLBISON], [bison])
+ if test -z "$INTLBISON"; then
+ ac_verc_fail=yes
+ else
+ dnl Found it, now check the version.
+ AC_MSG_CHECKING([version of bison])
+changequote(<<,>>)dnl
+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'`
+ case $ac_prog_version in
+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
+ 2.[7-9]* | [3-9].*)
+changequote([,])dnl
+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
+ esac
+ AC_MSG_RESULT([$ac_prog_version])
+ fi
+ if test $ac_verc_fail = yes; then
+ INTLBISON=:
+ fi
+])
+
+dnl Copies _GL_UNUSED and _GL_ATTRIBUTE_PURE definitions from
+dnl gnulib-common.m4 as a fallback, if the project isn't using Gnulib.
+AC_DEFUN([gt_GL_ATTRIBUTE], [
+ m4_ifndef([gl_[]COMMON],
+ AH_VERBATIM([gt_gl_attribute],
+[/* Define as a marker that can be attached to declarations that might not
+ be used. This helps to reduce warnings, such as from
+ GCC -Wunused-parameter. */
+#ifndef _GL_UNUSED
+# if __GNUC__ >= 3 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)
+# define _GL_UNUSED __attribute__ ((__unused__))
+# else
+# define _GL_UNUSED
+# endif
+#endif
+
+/* The __pure__ attribute was added in gcc 2.96. */
+#ifndef _GL_ATTRIBUTE_PURE
+# if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)
+# define _GL_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define _GL_ATTRIBUTE_PURE /* empty */
+# endif
+#endif
+]))])
diff --git a/m4/intlmacosx.m4 b/m4/intlmacosx.m4
new file mode 100644
index 00000000..7a474270
--- /dev/null
+++ b/m4/intlmacosx.m4
@@ -0,0 +1,72 @@
+# intlmacosx.m4 serial 6 (gettext-0.19.9)
+dnl Copyright (C) 2004-2014, 2016, 2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Checks for special options needed on Mac OS X.
+dnl Defines INTL_MACOSX_LIBS.
+AC_DEFUN([gt_INTL_MACOSX],
+[
+ dnl Check for API introduced in Mac OS X 10.4.
+ AC_CACHE_CHECK([for CFPreferencesCopyAppValue],
+ [gt_cv_func_CFPreferencesCopyAppValue],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <CoreFoundation/CFPreferences.h>]],
+ [[CFPreferencesCopyAppValue(NULL, NULL)]])],
+ [gt_cv_func_CFPreferencesCopyAppValue=yes],
+ [gt_cv_func_CFPreferencesCopyAppValue=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+ AC_DEFINE([HAVE_CFPREFERENCESCOPYAPPVALUE], [1],
+ [Define to 1 if you have the Mac OS X function CFPreferencesCopyAppValue in the CoreFoundation framework.])
+ fi
+ dnl Check for API introduced in Mac OS X 10.5.
+ AC_CACHE_CHECK([for CFLocaleCopyCurrent], [gt_cv_func_CFLocaleCopyCurrent],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <CoreFoundation/CFLocale.h>]],
+ [[CFLocaleCopyCurrent();]])],
+ [gt_cv_func_CFLocaleCopyCurrent=yes],
+ [gt_cv_func_CFLocaleCopyCurrent=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYCURRENT], [1],
+ [Define to 1 if you have the Mac OS X function CFLocaleCopyCurrent in the CoreFoundation framework.])
+ fi
+ AC_CACHE_CHECK([for CFLocaleCopyPreferredLanguages], [gt_cv_func_CFLocaleCopyPreferredLanguages],
+ [gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <CoreFoundation/CFLocale.h>]],
+ [[CFLocaleCopyPreferredLanguages();]])],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=yes],
+ [gt_cv_func_CFLocaleCopyPreferredLanguages=no])
+ LIBS="$gt_save_LIBS"])
+ if test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ AC_DEFINE([HAVE_CFLOCALECOPYPREFERREDLANGUAGES], [1],
+ [Define to 1 if you have the Mac OS X function CFLocaleCopyPreferredLanguages in the CoreFoundation framework.])
+ fi
+ INTL_MACOSX_LIBS=
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes \
+ || test $gt_cv_func_CFLocaleCopyCurrent = yes \
+ || test $gt_cv_func_CFLocaleCopyPreferredLanguages = yes; then
+ INTL_MACOSX_LIBS="-Wl,-framework -Wl,CoreFoundation"
+ fi
+ AC_SUBST([INTL_MACOSX_LIBS])
+])
diff --git a/m4/intmax.m4 b/m4/intmax.m4
new file mode 100644
index 00000000..2f4b450b
--- /dev/null
+++ b/m4/intmax.m4
@@ -0,0 +1,36 @@
+# intmax.m4 serial 6 (gettext-0.18.2)
+dnl Copyright (C) 2002-2005, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether the system has the 'intmax_t' type, but don't attempt to
+dnl find a replacement if it is lacking.
+
+AC_DEFUN([gt_TYPE_INTMAX_T],
+[
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ AC_CACHE_CHECK([for intmax_t], [gt_cv_c_intmax_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <stddef.h>
+#include <stdlib.h>
+#if HAVE_STDINT_H_WITH_UINTMAX
+#include <stdint.h>
+#endif
+#if HAVE_INTTYPES_H_WITH_UINTMAX
+#include <inttypes.h>
+#endif
+ ]],
+ [[intmax_t x = -1;
+ return !x;]])],
+ [gt_cv_c_intmax_t=yes],
+ [gt_cv_c_intmax_t=no])])
+ if test $gt_cv_c_intmax_t = yes; then
+ AC_DEFINE([HAVE_INTMAX_T], [1],
+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.])
+ fi
+])
diff --git a/m4/inttypes-pri.m4 b/m4/inttypes-pri.m4
new file mode 100644
index 00000000..38fe118a
--- /dev/null
+++ b/m4/inttypes-pri.m4
@@ -0,0 +1,42 @@
+# inttypes-pri.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1997-2002, 2006, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.53])
+
+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI*
+# macros to non-string values. This is the case on AIX 4.3.3.
+
+AC_DEFUN([gt_INTTYPES_PRI],
+[
+ AC_CHECK_HEADERS([inttypes.h])
+ if test $ac_cv_header_inttypes_h = yes; then
+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken],
+ [gt_cv_inttypes_pri_broken],
+ [
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+ ]],
+ [[]])],
+ [gt_cv_inttypes_pri_broken=no],
+ [gt_cv_inttypes_pri_broken=yes])
+ ])
+ fi
+ if test "$gt_cv_inttypes_pri_broken" = yes; then
+ AC_DEFINE_UNQUOTED([PRI_MACROS_BROKEN], [1],
+ [Define if <inttypes.h> exists and defines unusable PRI* macros.])
+ PRI_MACROS_BROKEN=1
+ else
+ PRI_MACROS_BROKEN=0
+ fi
+ AC_SUBST([PRI_MACROS_BROKEN])
+])
diff --git a/m4/inttypes.m4 b/m4/inttypes.m4
new file mode 100644
index 00000000..c58a1bec
--- /dev/null
+++ b/m4/inttypes.m4
@@ -0,0 +1,159 @@
+# inttypes.m4 serial 27
+dnl Copyright (C) 2006-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Derek Price, Bruno Haible.
+dnl Test whether <inttypes.h> is supported or must be substituted.
+
+AC_DEFUN([gl_INTTYPES_H],
+[
+ AC_REQUIRE([gl_INTTYPES_INCOMPLETE])
+ gl_INTTYPES_PRI_SCN
+])
+
+AC_DEFUN_ONCE([gl_INTTYPES_INCOMPLETE],
+[
+ AC_REQUIRE([gl_STDINT_H])
+ AC_CHECK_HEADERS_ONCE([inttypes.h])
+
+ dnl Override <inttypes.h> always, so that the portability warnings work.
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ gl_CHECK_NEXT_HEADERS([inttypes.h])
+
+ AC_REQUIRE([gl_MULTIARCH])
+
+ dnl Check for declarations of anything we want to poison if the
+ dnl corresponding gnulib module is not in use.
+ gl_WARN_ON_USE_PREPARE([[#include <inttypes.h>
+ ]], [imaxabs imaxdiv strtoimax strtoumax])
+])
+
+# Ensure that the PRI* and SCN* macros are defined appropriately.
+AC_DEFUN([gl_INTTYPES_PRI_SCN],
+[
+ AC_REQUIRE([gt_INTTYPES_PRI])
+
+ PRIPTR_PREFIX=
+ if test -n "$STDINT_H"; then
+ dnl Using the gnulib <stdint.h>. It always defines intptr_t to 'long'.
+ PRIPTR_PREFIX='"l"'
+ else
+ dnl Using the system's <stdint.h>.
+ for glpfx in '' l ll I64; do
+ case $glpfx in
+ '') gltype1='int';;
+ l) gltype1='long int';;
+ ll) gltype1='long long int';;
+ I64) gltype1='__int64';;
+ esac
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;]])],
+ [PRIPTR_PREFIX='"'$glpfx'"'])
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+ AC_SUBST([PRIPTR_PREFIX])
+
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [INT32_MAX_LT_INTMAX_MAX],
+ [defined INT32_MAX && defined INTMAX_MAX],
+ [INT32_MAX < INTMAX_MAX],
+ [sizeof (int) < sizeof (long long int)])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [INT64_MAX_EQ_LONG_MAX],
+ [defined INT64_MAX],
+ [INT64_MAX == LONG_MAX],
+ [sizeof (long long int) == sizeof (long int)])
+ else
+ INT64_MAX_EQ_LONG_MAX=-1
+ fi
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [UINT32_MAX_LT_UINTMAX_MAX],
+ [defined UINT32_MAX && defined UINTMAX_MAX],
+ [UINT32_MAX < UINTMAX_MAX],
+ [sizeof (unsigned int) < sizeof (unsigned long long int)])
+ if test $APPLE_UNIVERSAL_BUILD = 0; then
+ gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION(
+ [UINT64_MAX_EQ_ULONG_MAX],
+ [defined UINT64_MAX],
+ [UINT64_MAX == ULONG_MAX],
+ [sizeof (unsigned long long int) == sizeof (unsigned long int)])
+ else
+ UINT64_MAX_EQ_ULONG_MAX=-1
+ fi
+])
+
+# Define the symbol $1 to be 1 if the condition is true, 0 otherwise.
+# If $2 is true, the condition is $3; otherwise if long long int is supported
+# approximate the condition with $4; otherwise, assume the condition is false.
+# The condition should work on all C99 platforms; the approximations should be
+# good enough to work on all practical pre-C99 platforms.
+# $2 is evaluated by the C preprocessor, $3 and $4 as compile-time constants.
+AC_DEFUN([gl_INTTYPES_CHECK_LONG_LONG_INT_CONDITION],
+[
+ AC_CACHE_CHECK([whether $3],
+ [gl_cv_test_$1],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[/* Work also in C++ mode. */
+ #define __STDC_LIMIT_MACROS 1
+
+ /* Work if build is not clean. */
+ #define _GL_JUST_INCLUDE_SYSTEM_STDINT_H
+
+ #include <limits.h>
+ #if HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+
+ #if $2
+ #define CONDITION ($3)
+ #elif HAVE_LONG_LONG_INT
+ #define CONDITION ($4)
+ #else
+ #define CONDITION 0
+ #endif
+ int test[CONDITION ? 1 : -1];]])],
+ [gl_cv_test_$1=yes],
+ [gl_cv_test_$1=no])])
+ if test $gl_cv_test_$1 = yes; then
+ $1=1;
+ else
+ $1=0;
+ fi
+ AC_SUBST([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_MODULE_INDICATOR],
+[
+ dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ gl_MODULE_INDICATOR_SET_VARIABLE([$1])
+])
+
+AC_DEFUN([gl_INTTYPES_H_DEFAULTS],
+[
+ GNULIB_IMAXABS=0; AC_SUBST([GNULIB_IMAXABS])
+ GNULIB_IMAXDIV=0; AC_SUBST([GNULIB_IMAXDIV])
+ GNULIB_STRTOIMAX=0; AC_SUBST([GNULIB_STRTOIMAX])
+ GNULIB_STRTOUMAX=0; AC_SUBST([GNULIB_STRTOUMAX])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DECL_IMAXABS=1; AC_SUBST([HAVE_DECL_IMAXABS])
+ HAVE_DECL_IMAXDIV=1; AC_SUBST([HAVE_DECL_IMAXDIV])
+ HAVE_DECL_STRTOIMAX=1; AC_SUBST([HAVE_DECL_STRTOIMAX])
+ HAVE_DECL_STRTOUMAX=1; AC_SUBST([HAVE_DECL_STRTOUMAX])
+ HAVE_IMAXDIV_T=1; AC_SUBST([HAVE_IMAXDIV_T])
+ REPLACE_STRTOIMAX=0; AC_SUBST([REPLACE_STRTOIMAX])
+ REPLACE_STRTOUMAX=0; AC_SUBST([REPLACE_STRTOUMAX])
+ INT32_MAX_LT_INTMAX_MAX=1; AC_SUBST([INT32_MAX_LT_INTMAX_MAX])
+ INT64_MAX_EQ_LONG_MAX='defined _LP64'; AC_SUBST([INT64_MAX_EQ_LONG_MAX])
+ PRI_MACROS_BROKEN=0; AC_SUBST([PRI_MACROS_BROKEN])
+ PRIPTR_PREFIX=__PRIPTR_PREFIX; AC_SUBST([PRIPTR_PREFIX])
+ UINT32_MAX_LT_UINTMAX_MAX=1; AC_SUBST([UINT32_MAX_LT_UINTMAX_MAX])
+ UINT64_MAX_EQ_ULONG_MAX='defined _LP64'; AC_SUBST([UINT64_MAX_EQ_ULONG_MAX])
+])
diff --git a/m4/inttypes_h.m4 b/m4/inttypes_h.m4
new file mode 100644
index 00000000..d20422a4
--- /dev/null
+++ b/m4/inttypes_h.m4
@@ -0,0 +1,29 @@
+# inttypes_h.m4 serial 10
+dnl Copyright (C) 1997-2004, 2006, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_INTTYPES_H],
+[
+ AC_CACHE_CHECK([for inttypes.h], [gl_cv_header_inttypes_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <sys/types.h>
+#include <inttypes.h>
+ ]],
+ [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+ [gl_cv_header_inttypes_h=yes],
+ [gl_cv_header_inttypes_h=no])])
+ if test $gl_cv_header_inttypes_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_INTTYPES_H_WITH_UINTMAX], [1],
+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/lcmessage.m4 b/m4/lcmessage.m4
new file mode 100644
index 00000000..8d32e10f
--- /dev/null
+++ b/m4/lcmessage.m4
@@ -0,0 +1,35 @@
+# lcmessage.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1995-2002, 2004-2005, 2008-2014, 2016, 2019 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995.
+
+# Check whether LC_MESSAGES is available in <locale.h>.
+
+AC_DEFUN([gt_LC_MESSAGES],
+[
+ AC_CACHE_CHECK([for LC_MESSAGES], [gt_cv_val_LC_MESSAGES],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <locale.h>]],
+ [[return LC_MESSAGES]])],
+ [gt_cv_val_LC_MESSAGES=yes],
+ [gt_cv_val_LC_MESSAGES=no])])
+ if test $gt_cv_val_LC_MESSAGES = yes; then
+ AC_DEFINE([HAVE_LC_MESSAGES], [1],
+ [Define if your <locale.h> file defines LC_MESSAGES.])
+ fi
+])
diff --git a/m4/lib-ld.m4 b/m4/lib-ld.m4
new file mode 100644
index 00000000..a1871963
--- /dev/null
+++ b/m4/lib-ld.m4
@@ -0,0 +1,168 @@
+# lib-ld.m4 serial 9
+dnl Copyright (C) 1996-2003, 2009-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl Subroutines of libtool.m4,
+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
+dnl collision with libtool.m4.
+
+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
+AC_DEFUN([AC_LIB_PROG_LD_GNU],
+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+ acl_cv_prog_gnu_ld=yes
+ ;;
+*)
+ acl_cv_prog_gnu_ld=no
+ ;;
+esac])
+with_gnu_ld=$acl_cv_prog_gnu_ld
+])
+
+dnl From libtool-2.4. Sets the variable LD.
+AC_DEFUN([AC_LIB_PROG_LD],
+[AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+AC_ARG_WITH([gnu-ld],
+ [AS_HELP_STRING([--with-gnu-ld],
+ [assume the C compiler uses GNU ld [default=no]])],
+ [test "$withval" = no || with_gnu_ld=yes],
+ [with_gnu_ld=no])dnl
+
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+if test -n "$LD"; then
+ AC_MSG_CHECKING([for ld])
+elif test "$GCC" = yes; then
+ AC_MSG_CHECKING([for ld used by $CC])
+elif test "$with_gnu_ld" = yes; then
+ AC_MSG_CHECKING([for GNU ld])
+else
+ AC_MSG_CHECKING([for non-GNU ld])
+fi
+if test -n "$LD"; then
+ # Let the user override the test with a path.
+ :
+else
+ AC_CACHE_VAL([acl_cv_path_LD],
+ [
+ acl_cv_path_LD= # Final result of this test
+ ac_prog=ld # Program to search in $PATH
+ if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ case $host in
+ *-*-mingw*)
+ # gcc leaves a trailing carriage return which upsets mingw
+ acl_output=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+ *)
+ acl_output=`($CC -print-prog-name=ld) 2>&5` ;;
+ esac
+ case $acl_output in
+ # Accept absolute paths.
+ [[\\/]]* | ?:[[\\/]]*)
+ re_direlt='/[[^/]][[^/]]*/\.\./'
+ # Canonicalize the pathname of ld
+ acl_output=`echo "$acl_output" | sed 's%\\\\%/%g'`
+ while echo "$acl_output" | grep "$re_direlt" > /dev/null 2>&1; do
+ acl_output=`echo $acl_output | sed "s%$re_direlt%/%"`
+ done
+ # Got the pathname. No search in PATH is needed.
+ acl_cv_path_LD="$acl_output"
+ ac_prog=
+ ;;
+ "")
+ # If it fails, then pretend we aren't using GCC.
+ ;;
+ *)
+ # If it is relative, then search for the first ld in PATH.
+ with_gnu_ld=unknown
+ ;;
+ esac
+ fi
+ if test -n "$ac_prog"; then
+ # Search for $ac_prog in $PATH.
+ acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in $PATH; do
+ IFS="$acl_save_ifs"
+ test -z "$ac_dir" && ac_dir=.
+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+ acl_cv_path_LD="$ac_dir/$ac_prog"
+ # Check to see if the program is GNU ld. I'd rather use --version,
+ # but apparently some variants of GNU ld only accept -v.
+ # Break only if it was the GNU/non-GNU ld that we prefer.
+ case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
+ *GNU* | *'with BFD'*)
+ test "$with_gnu_ld" != no && break
+ ;;
+ *)
+ test "$with_gnu_ld" != yes && break
+ ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_ifs"
+ fi
+ case $host in
+ *-*-aix*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __powerpc64__ || defined _ARCH_PPC64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [# The compiler produces 64-bit code. Add option '-b64' so that the
+ # linker groks 64-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -b64 "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -b64" ;;
+ esac
+ ], [])
+ ;;
+ sparc64-*-netbsd*)
+ AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#if defined __sparcv9 || defined __arch64__
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [],
+ [# The compiler produces 32-bit code. Add option '-m elf32_sparc'
+ # so that the linker groks 32-bit object files.
+ case "$acl_cv_path_LD " in
+ *" -m elf32_sparc "*) ;;
+ *) acl_cv_path_LD="$acl_cv_path_LD -m elf32_sparc" ;;
+ esac
+ ])
+ ;;
+ esac
+ ])
+ LD="$acl_cv_path_LD"
+fi
+if test -n "$LD"; then
+ AC_MSG_RESULT([$LD])
+else
+ AC_MSG_RESULT([no])
+ AC_MSG_ERROR([no acceptable ld found in \$PATH])
+fi
+AC_LIB_PROG_LD_GNU
+])
diff --git a/m4/lib-link.m4 b/m4/lib-link.m4
new file mode 100644
index 00000000..0ff10731
--- /dev/null
+++ b/m4/lib-link.m4
@@ -0,0 +1,774 @@
+# lib-link.m4 serial 28
+dnl Copyright (C) 2001-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.61])
+
+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and
+dnl augments the CPPFLAGS variable.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+ ac_cv_lib[]Name[]_libs="$LIB[]NAME"
+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME"
+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME"
+ ac_cv_lib[]Name[]_prefix="$LIB[]NAME[]_PREFIX"
+ ])
+ LIB[]NAME="$ac_cv_lib[]Name[]_libs"
+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs"
+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags"
+ LIB[]NAME[]_PREFIX="$ac_cv_lib[]Name[]_prefix"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the
+ dnl results of this search when this library appears as a dependency.
+ HAVE_LIB[]NAME=yes
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode, [missing-message])
+dnl searches for libname and the libraries corresponding to explicit and
+dnl implicit dependencies, together with the specified include files and
+dnl the ability to compile and link the specified testcode. The missing-message
+dnl defaults to 'no' and may contain additional hints for the user.
+dnl If found, it sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME}
+dnl and LTLIB${NAME} variables and augments the CPPFLAGS variable, and
+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs
+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty.
+dnl Sets and AC_SUBSTs the LIB${NAME}_PREFIX variable to nonempty if libname
+dnl was found in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ AC_REQUIRE([AC_LIB_RPATH])
+ pushdef([Name],[m4_translit([$1],[./+-], [____])])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+
+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME
+ dnl accordingly.
+ AC_LIB_LINKFLAGS_BODY([$1], [$2])
+
+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks,
+ dnl because if the user has installed lib[]Name and not disabled its use
+ dnl via --without-lib[]Name-prefix, he wants to use it.
+ ac_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME)
+
+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [
+ ac_save_LIBS="$LIBS"
+ dnl If $LIB[]NAME contains some -l options, add it to the end of LIBS,
+ dnl because these -l options might require -L options that are present in
+ dnl LIBS. -l options benefit only from the -L options listed before it.
+ dnl Otherwise, add it to the front of LIBS, because it may be a static
+ dnl library that depends on another static library that is present in LIBS.
+ dnl Static libraries benefit only from the static libraries listed after
+ dnl it.
+ case " $LIB[]NAME" in
+ *" -l"*) LIBS="$LIBS $LIB[]NAME" ;;
+ *) LIBS="$LIB[]NAME $LIBS" ;;
+ esac
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[$3]], [[$4]])],
+ [ac_cv_lib[]Name=yes],
+ [ac_cv_lib[]Name='m4_if([$5], [], [no], [[$5]])'])
+ LIBS="$ac_save_LIBS"
+ ])
+ if test "$ac_cv_lib[]Name" = yes; then
+ HAVE_LIB[]NAME=yes
+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the lib][$1 library.])
+ AC_MSG_CHECKING([how to link with lib[]$1])
+ AC_MSG_RESULT([$LIB[]NAME])
+ else
+ HAVE_LIB[]NAME=no
+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need
+ dnl $INC[]NAME either.
+ CPPFLAGS="$ac_save_CPPFLAGS"
+ LIB[]NAME=
+ LTLIB[]NAME=
+ LIB[]NAME[]_PREFIX=
+ fi
+ AC_SUBST([HAVE_LIB]NAME)
+ AC_SUBST([LIB]NAME)
+ AC_SUBST([LTLIB]NAME)
+ AC_SUBST([LIB]NAME[_PREFIX])
+ popdef([NAME])
+ popdef([Name])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+dnl acl_libname_spec,
+dnl acl_library_names_spec,
+dnl acl_hardcode_libdir_flag_spec,
+dnl acl_hardcode_libdir_separator,
+dnl acl_hardcode_direct,
+dnl acl_hardcode_minus_L.
+AC_DEFUN([AC_LIB_RPATH],
+[
+ dnl Complain if config.rpath is missing.
+ AC_REQUIRE_AUX_FILE([config.rpath])
+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS
+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld
+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host
+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir
+ AC_CACHE_CHECK([for shared library run path origin], [acl_cv_rpath], [
+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \
+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh
+ . ./conftest.sh
+ rm -f ./conftest.sh
+ acl_cv_rpath=done
+ ])
+ wl="$acl_cv_wl"
+ acl_libext="$acl_cv_libext"
+ acl_shlibext="$acl_cv_shlibext"
+ acl_libname_spec="$acl_cv_libname_spec"
+ acl_library_names_spec="$acl_cv_library_names_spec"
+ acl_hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec"
+ acl_hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator"
+ acl_hardcode_direct="$acl_cv_hardcode_direct"
+ acl_hardcode_minus_L="$acl_cv_hardcode_minus_L"
+ dnl Determine whether the user wants rpath handling at all.
+ AC_ARG_ENABLE([rpath],
+ [ --disable-rpath do not hardcode runtime library paths],
+ :, enable_rpath=yes)
+])
+
+dnl AC_LIB_FROMPACKAGE(name, package)
+dnl declares that libname comes from the given package. The configure file
+dnl will then not have a --with-libname-prefix option but a
+dnl --with-package-prefix option. Several libraries can come from the same
+dnl package. This declaration must occur before an AC_LIB_LINKFLAGS or similar
+dnl macro call that searches for libname.
+AC_DEFUN([AC_LIB_FROMPACKAGE],
+[
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ define([acl_frompackage_]NAME, [$2])
+ popdef([NAME])
+ pushdef([PACK],[$2])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ define([acl_libsinpackage_]PACKUP,
+ m4_ifdef([acl_libsinpackage_]PACKUP, [m4_defn([acl_libsinpackage_]PACKUP)[, ]],)[lib$1])
+ popdef([PACKUP])
+ popdef([PACK])
+])
+
+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and
+dnl the libraries corresponding to explicit and implicit dependencies.
+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables.
+dnl Also, sets the LIB${NAME}_PREFIX variable to nonempty if libname was found
+dnl in ${LIB${NAME}_PREFIX}/$acl_libdirstem.
+AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
+[
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ pushdef([NAME],[m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ pushdef([PACK],[m4_ifdef([acl_frompackage_]NAME, [acl_frompackage_]NAME, lib[$1])])
+ pushdef([PACKUP],[m4_translit(PACK,[abcdefghijklmnopqrstuvwxyz./+-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ____])])
+ pushdef([PACKLIBS],[m4_ifdef([acl_frompackage_]NAME, [acl_libsinpackage_]PACKUP, lib[$1])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH(PACK[-prefix],
+[[ --with-]]PACK[[-prefix[=DIR] search for ]PACKLIBS[ in DIR/include and DIR/lib
+ --without-]]PACK[[-prefix don't search for ]PACKLIBS[ in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ if test "$acl_libdirstem2" != "$acl_libdirstem" \
+ && test ! -d "$withval/$acl_libdirstem"; then
+ additional_libdir="$withval/$acl_libdirstem2"
+ fi
+ fi
+ fi
+])
+ dnl Search the library and its dependencies in $additional_libdir and
+ dnl $LDFLAGS. Using breadth-first-seach.
+ LIB[]NAME=
+ LTLIB[]NAME=
+ INC[]NAME=
+ LIB[]NAME[]_PREFIX=
+ dnl HAVE_LIB${NAME} is an indicator that LIB${NAME}, LTLIB${NAME} have been
+ dnl computed. So it has to be reset here.
+ HAVE_LIB[]NAME=
+ rpathdirs=
+ ltrpathdirs=
+ names_already_handled=
+ names_next_round='$1 $2'
+ while test -n "$names_next_round"; do
+ names_this_round="$names_next_round"
+ names_next_round=
+ for name in $names_this_round; do
+ already_handled=
+ for n in $names_already_handled; do
+ if test "$n" = "$name"; then
+ already_handled=yes
+ break
+ fi
+ done
+ if test -z "$already_handled"; then
+ names_already_handled="$names_already_handled $name"
+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS
+ dnl or AC_LIB_HAVE_LINKFLAGS call.
+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./+-|ABCDEFGHIJKLMNOPQRSTUVWXYZ____|'`
+ eval value=\"\$HAVE_LIB$uppername\"
+ if test -n "$value"; then
+ if test "$value" = yes; then
+ eval value=\"\$LIB$uppername\"
+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value"
+ eval value=\"\$LTLIB$uppername\"
+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value"
+ else
+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined
+ dnl that this library doesn't exist. So just drop it.
+ :
+ fi
+ else
+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS
+ dnl and the already constructed $LIBNAME/$LTLIBNAME.
+ found_dir=
+ found_la=
+ found_so=
+ found_a=
+ eval libname=\"$acl_libname_spec\" # typically: libname=lib$name
+ if test -n "$acl_shlibext"; then
+ shrext=".$acl_shlibext" # typically: shrext=.so
+ else
+ shrext=
+ fi
+ if test $use_additional = yes; then
+ dir="$additional_libdir"
+ dnl The same code as in the loop below:
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ fi
+ if test "X$found_dir" = "X"; then
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ case "$x" in
+ -L*)
+ dir=`echo "X$x" | sed -e 's/^X-L//'`
+ dnl First look for a shared library.
+ if test -n "$acl_shlibext"; then
+ if test -f "$dir/$libname$shrext"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext"
+ else
+ if test "$acl_library_names_spec" = '$libname$shrext$versuffix'; then
+ ver=`(cd "$dir" && \
+ for f in "$libname$shrext".*; do echo "$f"; done \
+ | sed -e "s,^$libname$shrext\\\\.,," \
+ | sort -t '.' -n -r -k1,1 -k2,2 -k3,3 -k4,4 -k5,5 \
+ | sed 1q ) 2>/dev/null`
+ if test -n "$ver" && test -f "$dir/$libname$shrext.$ver"; then
+ found_dir="$dir"
+ found_so="$dir/$libname$shrext.$ver"
+ fi
+ else
+ eval library_names=\"$acl_library_names_spec\"
+ for f in $library_names; do
+ if test -f "$dir/$f"; then
+ found_dir="$dir"
+ found_so="$dir/$f"
+ break
+ fi
+ done
+ fi
+ fi
+ fi
+ dnl Then look for a static library.
+ if test "X$found_dir" = "X"; then
+ if test -f "$dir/$libname.$acl_libext"; then
+ found_dir="$dir"
+ found_a="$dir/$libname.$acl_libext"
+ fi
+ fi
+ if test "X$found_dir" != "X"; then
+ if test -f "$dir/$libname.la"; then
+ found_la="$dir/$libname.la"
+ fi
+ fi
+ ;;
+ esac
+ if test "X$found_dir" != "X"; then
+ break
+ fi
+ done
+ fi
+ if test "X$found_dir" != "X"; then
+ dnl Found the library.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name"
+ if test "X$found_so" != "X"; then
+ dnl Linking with a shared library. We attempt to hardcode its
+ dnl directory into the executable's runpath, unless it's the
+ dnl standard /usr/lib.
+ if test "$enable_rpath" = no \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem" \
+ || test "X$found_dir" = "X/usr/$acl_libdirstem2"; then
+ dnl No hardcoding is needed.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $found_dir"
+ fi
+ dnl The hardcoding into $LIBNAME is system dependent.
+ if test "$acl_hardcode_direct" = yes; then
+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the
+ dnl resulting binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode DIR into the resulting
+ dnl binary.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $found_dir"
+ fi
+ else
+ dnl Rely on "-L$found_dir".
+ dnl But don't add it if it's already contained in the LDFLAGS
+ dnl or the already constructed $LIBNAME
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$found_dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir"
+ fi
+ if test "$acl_hardcode_minus_L" != no; then
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so"
+ else
+ dnl We cannot use $acl_hardcode_runpath_var and LD_RUN_PATH
+ dnl here, because this doesn't fit in flags passed to the
+ dnl compiler. So give up. No hardcoding. This affects only
+ dnl very old systems.
+ dnl FIXME: Not sure whether we should use
+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so"
+ dnl here.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ fi
+ else
+ if test "X$found_a" != "X"; then
+ dnl Linking with a static library.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a"
+ else
+ dnl We shouldn't come here, but anyway it's good to have a
+ dnl fallback.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name"
+ fi
+ fi
+ dnl Assume the include files are nearby.
+ additional_includedir=
+ case "$found_dir" in
+ */$acl_libdirstem | */$acl_libdirstem/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ */$acl_libdirstem2 | */$acl_libdirstem2/)
+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e "s,/$acl_libdirstem2/"'*$,,'`
+ if test "$name" = '$1'; then
+ LIB[]NAME[]_PREFIX="$basedir"
+ fi
+ additional_includedir="$basedir/include"
+ ;;
+ esac
+ if test "X$additional_includedir" != "X"; then
+ dnl Potentially add $additional_includedir to $INCNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 3. if it's already present in $CPPFLAGS or the already
+ dnl constructed $INCNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ for x in $CPPFLAGS $INC[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $INCNAME.
+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ fi
+ dnl Look for dependencies.
+ if test -n "$found_la"; then
+ dnl Read the .la file. It defines the variables
+ dnl dlname, library_names, old_library, dependency_libs, current,
+ dnl age, revision, installed, dlopen, dlpreopen, libdir.
+ save_libdir="$libdir"
+ case "$found_la" in
+ */* | *\\*) . "$found_la" ;;
+ *) . "./$found_la" ;;
+ esac
+ libdir="$save_libdir"
+ dnl We use only dependency_libs.
+ for dep in $dependency_libs; do
+ case "$dep" in
+ -L*)
+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'`
+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 3. if it's already present in $LDFLAGS or the already
+ dnl constructed $LIBNAME,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem" \
+ && test "X$additional_libdir" != "X/usr/$acl_libdirstem2"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem" \
+ || test "X$additional_libdir" = "X/usr/local/$acl_libdirstem2"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ haveit=
+ for x in $LDFLAGS $LIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LIBNAME.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ haveit=
+ for x in $LDFLAGS $LTLIB[]NAME; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LTLIBNAME.
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ ;;
+ -R*)
+ dir=`echo "X$dep" | sed -e 's/^X-R//'`
+ if test "$enable_rpath" != no; then
+ dnl Potentially add DIR to rpathdirs.
+ dnl The rpathdirs will be appended to $LIBNAME at the end.
+ haveit=
+ for x in $rpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ dnl Potentially add DIR to ltrpathdirs.
+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end.
+ haveit=
+ for x in $ltrpathdirs; do
+ if test "X$x" = "X$dir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ ltrpathdirs="$ltrpathdirs $dir"
+ fi
+ fi
+ ;;
+ -l*)
+ dnl Handle this in the next round.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'`
+ ;;
+ *.la)
+ dnl Handle this in the next round. Throw away the .la's
+ dnl directory; it is already contained in a preceding -L
+ dnl option.
+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'`
+ ;;
+ *)
+ dnl Most likely an immediate library name.
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep"
+ ;;
+ esac
+ done
+ fi
+ else
+ dnl Didn't find the library; assume it is in the system directories
+ dnl known to the linker and runtime loader. (All the system
+ dnl directories known to the linker should also be known to the
+ dnl runtime loader, otherwise the system is severely misconfigured.)
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name"
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name"
+ fi
+ fi
+ fi
+ done
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user must
+ dnl pass all path elements in one option. We can arrange that for a
+ dnl single library, but not when more than one $LIBNAMEs are used.
+ alldirs=
+ for found_dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$found_dir"
+ done
+ dnl Note: acl_hardcode_libdir_flag_spec uses $libdir and $wl.
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for found_dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$found_dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag"
+ done
+ fi
+ fi
+ if test "X$ltrpathdirs" != "X"; then
+ dnl When using libtool, the option that works for both libraries and
+ dnl executables is -R. The -R options are cumulative.
+ for found_dir in $ltrpathdirs; do
+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir"
+ done
+ fi
+ popdef([PACKLIBS])
+ popdef([PACKUP])
+ popdef([PACK])
+ popdef([NAME])
+])
+
+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR,
+dnl unless already present in VAR.
+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes
+dnl contains two or three consecutive elements that belong together.
+AC_DEFUN([AC_LIB_APPENDTOVAR],
+[
+ for element in [$2]; do
+ haveit=
+ for x in $[$1]; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X$element"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ [$1]="${[$1]}${[$1]:+ }$element"
+ fi
+ done
+])
+
+dnl For those cases where a variable contains several -L and -l options
+dnl referring to unknown libraries and directories, this macro determines the
+dnl necessary additional linker options for the runtime path.
+dnl AC_LIB_LINKFLAGS_FROM_LIBS([LDADDVAR], [LIBSVALUE], [USE-LIBTOOL])
+dnl sets LDADDVAR to linker options needed together with LIBSVALUE.
+dnl If USE-LIBTOOL evaluates to non-empty, linking with libtool is assumed,
+dnl otherwise linking without libtool is assumed.
+AC_DEFUN([AC_LIB_LINKFLAGS_FROM_LIBS],
+[
+ AC_REQUIRE([AC_LIB_RPATH])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ $1=
+ if test "$enable_rpath" != no; then
+ if test -n "$acl_hardcode_libdir_flag_spec" && test "$acl_hardcode_minus_L" = no; then
+ dnl Use an explicit option to hardcode directories into the resulting
+ dnl binary.
+ rpathdirs=
+ next=
+ for opt in $2; do
+ if test -n "$next"; then
+ dir="$next"
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next=
+ else
+ case $opt in
+ -L) next=yes ;;
+ -L*) dir=`echo "X$opt" | sed -e 's,^X-L,,'`
+ dnl No need to hardcode the standard /usr/lib.
+ if test "X$dir" != "X/usr/$acl_libdirstem" \
+ && test "X$dir" != "X/usr/$acl_libdirstem2"; then
+ rpathdirs="$rpathdirs $dir"
+ fi
+ next= ;;
+ *) next= ;;
+ esac
+ fi
+ done
+ if test "X$rpathdirs" != "X"; then
+ if test -n ""$3""; then
+ dnl libtool is used for linking. Use -R options.
+ for dir in $rpathdirs; do
+ $1="${$1}${$1:+ }-R$dir"
+ done
+ else
+ dnl The linker is used for linking directly.
+ if test -n "$acl_hardcode_libdir_separator"; then
+ dnl Weird platform: only the last -rpath option counts, the user
+ dnl must pass all path elements in one option.
+ alldirs=
+ for dir in $rpathdirs; do
+ alldirs="${alldirs}${alldirs:+$acl_hardcode_libdir_separator}$dir"
+ done
+ acl_save_libdir="$libdir"
+ libdir="$alldirs"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="$flag"
+ else
+ dnl The -rpath options are cumulative.
+ for dir in $rpathdirs; do
+ acl_save_libdir="$libdir"
+ libdir="$dir"
+ eval flag=\"$acl_hardcode_libdir_flag_spec\"
+ libdir="$acl_save_libdir"
+ $1="${$1}${$1:+ }$flag"
+ done
+ fi
+ fi
+ fi
+ fi
+ fi
+ AC_SUBST([$1])
+])
diff --git a/m4/lib-prefix.m4 b/m4/lib-prefix.m4
new file mode 100644
index 00000000..8adb17bb
--- /dev/null
+++ b/m4/lib-prefix.m4
@@ -0,0 +1,249 @@
+# lib-prefix.m4 serial 14
+dnl Copyright (C) 2001-2005, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed
+dnl to access previously installed libraries. The basic assumption is that
+dnl a user will want packages to use other packages he previously installed
+dnl with the same --prefix option.
+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate
+dnl libraries, but is otherwise very convenient.
+AC_DEFUN([AC_LIB_PREFIX],
+[
+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS])
+ AC_REQUIRE([AC_PROG_CC])
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([AC_LIB_PREPARE_MULTILIB])
+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_ARG_WITH([lib-prefix],
+[[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib
+ --without-lib-prefix don't search for libraries in includedir and libdir]],
+[
+ if test "X$withval" = "Xno"; then
+ use_additional=no
+ else
+ if test "X$withval" = "X"; then
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ else
+ additional_includedir="$withval/include"
+ additional_libdir="$withval/$acl_libdirstem"
+ fi
+ fi
+])
+ if test $use_additional = yes; then
+ dnl Potentially add $additional_includedir to $CPPFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/include,
+ dnl 2. if it's already present in $CPPFLAGS,
+ dnl 3. if it's /usr/local/include and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_includedir" != "X/usr/include"; then
+ haveit=
+ for x in $CPPFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-I$additional_includedir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_includedir" = "X/usr/local/include"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux* | gnu* | k*bsd*-gnu) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_includedir"; then
+ dnl Really add $additional_includedir to $CPPFLAGS.
+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir"
+ fi
+ fi
+ fi
+ fi
+ dnl Potentially add $additional_libdir to $LDFLAGS.
+ dnl But don't add it
+ dnl 1. if it's the standard /usr/lib,
+ dnl 2. if it's already present in $LDFLAGS,
+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux,
+ dnl 4. if it doesn't exist as a directory.
+ if test "X$additional_libdir" != "X/usr/$acl_libdirstem"; then
+ haveit=
+ for x in $LDFLAGS; do
+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"])
+ if test "X$x" = "X-L$additional_libdir"; then
+ haveit=yes
+ break
+ fi
+ done
+ if test -z "$haveit"; then
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; then
+ if test -n "$GCC"; then
+ case $host_os in
+ linux*) haveit=yes;;
+ esac
+ fi
+ fi
+ if test -z "$haveit"; then
+ if test -d "$additional_libdir"; then
+ dnl Really add $additional_libdir to $LDFLAGS.
+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir"
+ fi
+ fi
+ fi
+ fi
+ fi
+])
+
+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix,
+dnl acl_final_exec_prefix, containing the values to which $prefix and
+dnl $exec_prefix will expand at the end of the configure script.
+AC_DEFUN([AC_LIB_PREPARE_PREFIX],
+[
+ dnl Unfortunately, prefix and exec_prefix get only finally determined
+ dnl at the end of configure.
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the
+dnl variables prefix and exec_prefix bound to the values they will have
+dnl at the end of the configure script.
+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX],
+[
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ acl_save_exec_prefix="$exec_prefix"
+ exec_prefix="$acl_final_exec_prefix"
+ $1
+ exec_prefix="$acl_save_exec_prefix"
+ prefix="$acl_save_prefix"
+])
+
+dnl AC_LIB_PREPARE_MULTILIB creates
+dnl - a variable acl_libdirstem, containing the basename of the libdir, either
+dnl "lib" or "lib64" or "lib/64",
+dnl - a variable acl_libdirstem2, as a secondary possible value for
+dnl acl_libdirstem, either the same as acl_libdirstem or "lib/sparcv9" or
+dnl "lib/amd64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64.
+ dnl On glibc systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib64 and 32-bit libraries go under $prefix/lib. We determine
+ dnl the compiler's default mode by looking at the compiler's library search
+ dnl path. If at least one of its elements ends in /lib64 or points to a
+ dnl directory whose absolute pathname ends in /lib64, we assume a 64-bit ABI.
+ dnl Otherwise we use the default, namely "lib".
+ dnl On Solaris systems, the current practice is that on a system supporting
+ dnl 32-bit and 64-bit instruction sets or ABIs, 64-bit libraries go under
+ dnl $prefix/lib/64 (which is a symlink to either $prefix/lib/sparcv9 or
+ dnl $prefix/lib/amd64) and 32-bit libraries go under $prefix/lib.
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([gl_HOST_CPU_C_ABI_32BIT])
+
+ case "$host_os" in
+ solaris*)
+ AC_CACHE_CHECK([for 64-bit host], [gl_cv_solaris_64bit],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_SOURCE(
+ [[#ifdef _LP64
+ int ok;
+ #else
+ error fail
+ #endif
+ ]])],
+ [gl_cv_solaris_64bit=yes],
+ [gl_cv_solaris_64bit=no])
+ ]);;
+ esac
+
+ dnl Allow the user to override the result by setting acl_cv_libdirstems.
+ AC_CACHE_CHECK([for the common suffixes of directories in the library search path],
+ [acl_cv_libdirstems],
+ [acl_libdirstem=lib
+ acl_libdirstem2=
+ case "$host_os" in
+ solaris*)
+ dnl See Solaris 10 Software Developer Collection > Solaris 64-bit Developer's Guide > The Development Environment
+ dnl <https://docs.oracle.com/cd/E19253-01/816-5138/dev-env/index.html>.
+ dnl "Portable Makefiles should refer to any library directories using the 64 symbolic link."
+ dnl But we want to recognize the sparcv9 or amd64 subdirectory also if the
+ dnl symlink is missing, so we set acl_libdirstem2 too.
+ if test $gl_cv_solaris_64bit = yes; then
+ acl_libdirstem=lib/64
+ case "$host_cpu" in
+ sparc*) acl_libdirstem2=lib/sparcv9 ;;
+ i*86 | x86_64) acl_libdirstem2=lib/amd64 ;;
+ esac
+ fi
+ ;;
+ *)
+ dnl If $CC generates code for a 32-bit ABI, the libraries are
+ dnl surely under $prefix/lib, not $prefix/lib64.
+ if test "$HOST_CPU_C_ABI_32BIT" != yes; then
+ dnl The result is a property of the system. However, non-system
+ dnl compilers sometimes have odd library search paths. Therefore
+ dnl prefer asking /usr/bin/gcc, if available, rather than $CC.
+ searchpath=`(if test -f /usr/bin/gcc \
+ && LC_ALL=C /usr/bin/gcc -print-search-dirs >/dev/null 2>/dev/null; then \
+ LC_ALL=C /usr/bin/gcc -print-search-dirs; \
+ else \
+ LC_ALL=C $CC -print-search-dirs; \
+ fi) 2>/dev/null \
+ | sed -n -e 's,^libraries: ,,p' | sed -e 's,^=,,'`
+ if test -n "$searchpath"; then
+ acl_save_IFS="${IFS= }"; IFS=":"
+ for searchdir in $searchpath; do
+ if test -d "$searchdir"; then
+ case "$searchdir" in
+ */lib64/ | */lib64 ) acl_libdirstem=lib64 ;;
+ */../ | */.. )
+ # Better ignore directories of this form. They are misleading.
+ ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+ fi
+ ;;
+ esac
+ test -n "$acl_libdirstem2" || acl_libdirstem2="$acl_libdirstem"
+ acl_cv_libdirstems="$acl_libdirstem,$acl_libdirstem2"
+ ])
+ # Decompose acl_cv_libdirstems into acl_libdirstem and acl_libdirstem2.
+ acl_libdirstem=`echo "$acl_cv_libdirstems" | sed -e 's/,.*//'`
+ acl_libdirstem2=`echo "$acl_cv_libdirstems" | sed -e '/,/s/.*,//'`
+])
diff --git a/m4/lock.m4 b/m4/lock.m4
new file mode 100644
index 00000000..93b76fa4
--- /dev/null
+++ b/m4/lock.m4
@@ -0,0 +1,47 @@
+# lock.m4 serial 14
+dnl Copyright (C) 2005-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_DEFUN([gl_LOCK],
+[
+ AC_REQUIRE([gl_THREADLIB])
+ if test "$gl_threads_api" = posix; then
+ # OSF/1 4.0 and Mac OS X 10.1 lack the pthread_rwlock_t type and the
+ # pthread_rwlock_* functions.
+ has_rwlock=false
+ AC_CHECK_TYPE([pthread_rwlock_t],
+ [has_rwlock=true
+ AC_DEFINE([HAVE_PTHREAD_RWLOCK], [1],
+ [Define if the POSIX multithreading library has read/write locks.])],
+ [],
+ [#include <pthread.h>])
+ if $has_rwlock; then
+ gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER
+ fi
+ # glibc defines PTHREAD_MUTEX_RECURSIVE as enum, not as a macro.
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM(
+ [[#include <pthread.h>]],
+ [[
+#if __FreeBSD__ == 4
+error "No, in FreeBSD 4.0 recursive mutexes actually don't work."
+#elif (defined __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ \
+ && __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1070)
+error "No, in Mac OS X < 10.7 recursive mutexes actually don't work."
+#else
+int x = (int)PTHREAD_MUTEX_RECURSIVE;
+return !x;
+#endif
+ ]])],
+ [AC_DEFINE([HAVE_PTHREAD_MUTEX_RECURSIVE], [1],
+ [Define if the <pthread.h> defines PTHREAD_MUTEX_RECURSIVE.])])
+ fi
+ gl_PREREQ_LOCK
+])
+
+# Prerequisites of lib/glthread/lock.c.
+AC_DEFUN([gl_PREREQ_LOCK], [:])
diff --git a/m4/nls.m4 b/m4/nls.m4
new file mode 100644
index 00000000..b62f6148
--- /dev/null
+++ b/m4/nls.m4
@@ -0,0 +1,32 @@
+# nls.m4 serial 5 (gettext-0.18)
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2014, 2016, 2019 Free Software
+dnl Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.50])
+
+AC_DEFUN([AM_NLS],
+[
+ AC_MSG_CHECKING([whether NLS is requested])
+ dnl Default is enabled NLS
+ AC_ARG_ENABLE([nls],
+ [ --disable-nls do not use Native Language Support],
+ USE_NLS=$enableval, USE_NLS=yes)
+ AC_MSG_RESULT([$USE_NLS])
+ AC_SUBST([USE_NLS])
+])
diff --git a/m4/po.m4 b/m4/po.m4
new file mode 100644
index 00000000..ce72d017
--- /dev/null
+++ b/m4/po.m4
@@ -0,0 +1,441 @@
+# po.m4 serial 24a
+dnl Copyright (C) 1995-2014, 2016, 2018-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003.
+
+AC_PREREQ([2.60])
+
+dnl Checks for all prerequisites of the po subdirectory.
+AC_DEFUN([AM_PO_SUBDIRS],
+[
+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl
+ AC_REQUIRE([AC_PROG_INSTALL])dnl
+ AC_REQUIRE([AC_PROG_MKDIR_P])dnl
+ AC_REQUIRE([AC_PROG_SED])dnl
+ AC_REQUIRE([AM_NLS])dnl
+
+ dnl Release version of the gettext macros. This is used to ensure that
+ dnl the gettext macros and po/Makefile.in.in are in sync.
+ AC_SUBST([GETTEXT_MACRO_VERSION], [0.19])
+
+ dnl Perform the following tests also if --disable-nls has been given,
+ dnl because they are needed for "make dist" to work.
+
+ dnl Search for GNU msgfmt in the PATH.
+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions.
+ dnl The second test excludes FreeBSD msgfmt.
+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt,
+ [$ac_dir/$ac_word --statistics /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ AC_PATH_PROG([GMSGFMT], [gmsgfmt], [$MSGFMT])
+
+ dnl Test whether it is GNU msgfmt >= 0.15.
+changequote(,)dnl
+ case `$MSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) MSGFMT_015=: ;;
+ *) MSGFMT_015=$MSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([MSGFMT_015])
+changequote(,)dnl
+ case `$GMSGFMT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) GMSGFMT_015=: ;;
+ *) GMSGFMT_015=$GMSGFMT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([GMSGFMT_015])
+
+ dnl Search for GNU xgettext 0.12 or newer in the PATH.
+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions.
+ dnl The second test excludes FreeBSD xgettext.
+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext,
+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1 &&
+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)],
+ :)
+ dnl Remove leftover from FreeBSD xgettext call.
+ rm -f messages.po
+
+ dnl Test whether it is GNU xgettext >= 0.15.
+changequote(,)dnl
+ case `$XGETTEXT --version | sed 1q | sed -e 's,^[^0-9]*,,'` in
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-4] | 0.1[0-4].*) XGETTEXT_015=: ;;
+ *) XGETTEXT_015=$XGETTEXT ;;
+ esac
+changequote([,])dnl
+ AC_SUBST([XGETTEXT_015])
+
+ dnl Search for GNU msgmerge 0.11 or newer in the PATH.
+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge,
+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >&]AS_MESSAGE_LOG_FD[ 2>&1], :)
+
+ dnl Support for AM_XGETTEXT_OPTION.
+ test -n "${XGETTEXT_EXTRA_OPTIONS+set}" || XGETTEXT_EXTRA_OPTIONS=
+ AC_SUBST([XGETTEXT_EXTRA_OPTIONS])
+
+ AC_CONFIG_COMMANDS([po-directories], [[
+ for ac_file in $CONFIG_FILES; do
+ # Support "outfile[:infile[:infile...]]"
+ case "$ac_file" in
+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
+ esac
+ # PO directories have a Makefile.in generated from Makefile.in.in.
+ case "$ac_file" in */Makefile.in)
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+ # Treat a directory as a PO directory if and only if it has a
+ # POTFILES.in file. This allows packages to have multiple PO
+ # directories under different names or in different locations.
+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then
+ rm -f "$ac_dir/POTFILES"
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES"
+ gt_tab=`printf '\t'`
+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ${gt_tab}]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES"
+ POMAKEFILEDEPS="POTFILES.in"
+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend
+ # on $ac_dir but don't depend on user-specified configuration
+ # parameters.
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # The set of available languages was given in configure.in.
+ ALL_LINGUAS=$OBSOLETE_ALL_LINGUAS
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ done
+ fi
+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile"
+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile"
+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do
+ if test -f "$f"; then
+ case "$f" in
+ *.orig | *.bak | *~) ;;
+ *) cat "$f" >> "$ac_dir/Makefile" ;;
+ esac
+ fi
+ done
+ fi
+ ;;
+ esac
+ done]],
+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute
+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS.
+ OBSOLETE_ALL_LINGUAS="$ALL_LINGUAS"
+ # Capture the value of LINGUAS because we need it to compute CATALOGS.
+ LINGUAS="${LINGUAS-%UNSET%}"
+ ])
+])
+
+dnl Postprocesses a Makefile in a directory containing PO files.
+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
+[
+ # When this code is run, in config.status, two variables have already been
+ # set:
+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in,
+ # - LINGUAS is the value of the environment variable LINGUAS at configure
+ # time.
+
+changequote(,)dnl
+ # Adjust a relative srcdir.
+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
+ ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
+ # In autoconf-2.13 it is called $ac_given_srcdir.
+ # In autoconf-2.50 it is called $srcdir.
+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir"
+ case "$ac_given_srcdir" in
+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;;
+ /*) top_srcdir="$ac_given_srcdir" ;;
+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;;
+ esac
+
+ # Find a way to echo strings without interpreting backslash.
+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='echo'
+ else
+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then
+ gt_echo='printf %s\n'
+ else
+ echo_func () {
+ cat <<EOT
+$*
+EOT
+ }
+ gt_echo='echo_func'
+ fi
+ fi
+
+ # A sed script that extracts the value of VARIABLE from a Makefile.
+ tab=`printf '\t'`
+ sed_x_variable='
+# Test if the hold space is empty.
+x
+s/P/P/
+x
+ta
+# Yes it was empty. Look if we have the expected variable definition.
+/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=/{
+ # Seen the first line of the variable definition.
+ s/^['"${tab}"' ]*VARIABLE['"${tab}"' ]*=//
+ ba
+}
+bd
+:a
+# Here we are processing a line from the variable definition.
+# Remove comment, more precisely replace it with a space.
+s/#.*$/ /
+# See if the line ends in a backslash.
+tb
+:b
+s/\\$//
+# Print the line, without the trailing backslash.
+p
+tc
+# There was no trailing backslash. The end of the variable definition is
+# reached. Clear the hold space.
+s/^.*$//
+x
+bd
+:c
+# A trailing backslash means that the variable definition continues in the
+# next line. Put a nonempty string into the hold space to indicate this.
+s/^.*$/P/
+x
+:d
+'
+changequote([,])dnl
+
+ # Set POTFILES to the value of the Makefile variable POTFILES.
+ sed_x_POTFILES=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`
+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"`
+ # Compute POTFILES_DEPS as
+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file))
+ POTFILES_DEPS=
+ for file in $POTFILES; do
+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file"
+ done
+ POMAKEFILEDEPS=""
+
+ if test -n "$OBSOLETE_ALL_LINGUAS"; then
+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete"
+ fi
+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then
+ # The LINGUAS file contains the set of available languages.
+ ALL_LINGUAS=`sed -e "/^#/d" -e "s/#.*//" "$ac_given_srcdir/$ac_dir/LINGUAS"`
+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS"
+ else
+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS.
+ sed_x_LINGUAS=`$gt_echo "$sed_x_variable" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`
+ ALL_LINGUAS=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"`
+ fi
+ # Compute POFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po)
+ # Compute UPDATEPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update)
+ # Compute DUMMYPOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop)
+ # Compute GMOFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo)
+ # Compute PROPERTIESFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties)
+ # Compute CLASSFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class)
+ # Compute QMFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm)
+ # Compute MSGFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg)
+ # Compute RESOURCESDLLFILES
+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll)
+ case "$ac_given_srcdir" in
+ .) srcdirpre= ;;
+ *) srcdirpre='$(srcdir)/' ;;
+ esac
+ POFILES=
+ UPDATEPOFILES=
+ DUMMYPOFILES=
+ GMOFILES=
+ PROPERTIESFILES=
+ CLASSFILES=
+ QMFILES=
+ MSGFILES=
+ RESOURCESDLLFILES=
+ for lang in $ALL_LINGUAS; do
+ POFILES="$POFILES $srcdirpre$lang.po"
+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update"
+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop"
+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo"
+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties"
+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class"
+ QMFILES="$QMFILES $srcdirpre$lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ # CATALOGS depends on both $ac_dir and the user's LINGUAS
+ # environment variable.
+ INST_LINGUAS=
+ if test -n "$ALL_LINGUAS"; then
+ for presentlang in $ALL_LINGUAS; do
+ useit=no
+ if test "%UNSET%" != "$LINGUAS"; then
+ desiredlanguages="$LINGUAS"
+ else
+ desiredlanguages="$ALL_LINGUAS"
+ fi
+ for desiredlang in $desiredlanguages; do
+ # Use the presentlang catalog if desiredlang is
+ # a. equal to presentlang, or
+ # b. a variant of presentlang (because in this case,
+ # presentlang can be used as a fallback for messages
+ # which are not translated in the desiredlang catalog).
+ case "$desiredlang" in
+ "$presentlang"*) useit=yes;;
+ esac
+ done
+ if test $useit = yes; then
+ INST_LINGUAS="$INST_LINGUAS $presentlang"
+ fi
+ done
+ fi
+ CATALOGS=
+ JAVACATALOGS=
+ QTCATALOGS=
+ TCLCATALOGS=
+ CSHARPCATALOGS=
+ if test -n "$INST_LINGUAS"; then
+ for lang in $INST_LINGUAS; do
+ CATALOGS="$CATALOGS $lang.gmo"
+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties"
+ QTCATALOGS="$QTCATALOGS $lang.qm"
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg"
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll"
+ done
+ fi
+
+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp"
+ tab=`printf '\t'`
+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang.msg: $lang.po
+${tab}@echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \
+${tab}\$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then
+ # Add dependencies that cannot be formulated as a simple suffix rule.
+ for lang in $ALL_LINGUAS; do
+ frobbedlang=`echo $lang | sed -e 's/_/-/g' -e 's/^sr-CS/sr-SP/' -e 's/@latin$/-Latn/' -e 's/@cyrillic$/-Cyrl/' -e 's/^sr-SP$/sr-SP-Latn/' -e 's/^uz-UZ$/uz-UZ-Latn/'`
+ cat >> "$ac_file.tmp" <<EOF
+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po
+${tab}@echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \
+${tab}\$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; }
+EOF
+ done
+ fi
+ if test -n "$POMAKEFILEDEPS"; then
+ cat >> "$ac_file.tmp" <<EOF
+Makefile: $POMAKEFILEDEPS
+EOF
+ fi
+ mv "$ac_file.tmp" "$ac_file"
+])
+
+dnl Initializes the accumulator used by AM_XGETTEXT_OPTION.
+AC_DEFUN([AM_XGETTEXT_OPTION_INIT],
+[
+ XGETTEXT_EXTRA_OPTIONS=
+])
+
+dnl Registers an option to be passed to xgettext in the po subdirectory.
+AC_DEFUN([AM_XGETTEXT_OPTION],
+[
+ AC_REQUIRE([AM_XGETTEXT_OPTION_INIT])
+ XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS $1"
+])
diff --git a/m4/printf-posix.m4 b/m4/printf-posix.m4
new file mode 100644
index 00000000..2707cf74
--- /dev/null
+++ b/m4/printf-posix.m4
@@ -0,0 +1,48 @@
+# printf-posix.m4 serial 6 (gettext-0.18.2)
+dnl Copyright (C) 2003, 2007, 2009-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether the printf() function supports POSIX/XSI format strings with
+dnl positions.
+
+AC_DEFUN([gt_PRINTF_POSIX],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings],
+ gt_cv_func_printf_posix,
+ [
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <stdio.h>
+#include <string.h>
+/* The string "%2$d %1$d", with dollar characters protected from the shell's
+ dollar expansion (possibly an autoconf bug). */
+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' };
+static char buf[100];
+int main ()
+{
+ sprintf (buf, format, 33, 55);
+ return (strcmp (buf, "55 33") != 0);
+}]])],
+ [gt_cv_func_printf_posix=yes],
+ [gt_cv_func_printf_posix=no],
+ [
+ AC_EGREP_CPP([notposix], [
+#if defined __NetBSD__ || defined __BEOS__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__
+ notposix
+#endif
+ ],
+ [gt_cv_func_printf_posix="guessing no"],
+ [gt_cv_func_printf_posix="guessing yes"])
+ ])
+ ])
+ case $gt_cv_func_printf_posix in
+ *yes)
+ AC_DEFINE([HAVE_POSIX_PRINTF], [1],
+ [Define if your printf() function supports format strings with positions.])
+ ;;
+ esac
+])
diff --git a/m4/progtest.m4 b/m4/progtest.m4
new file mode 100644
index 00000000..5f186b14
--- /dev/null
+++ b/m4/progtest.m4
@@ -0,0 +1,91 @@
+# progtest.m4 serial 7 (gettext-0.18.2)
+dnl Copyright (C) 1996-2003, 2005, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+dnl
+dnl This file can be used in projects which are not available under
+dnl the GNU General Public License or the GNU Library General Public
+dnl License but which still want to provide support for the GNU gettext
+dnl functionality.
+dnl Please note that the actual code of the GNU gettext library is covered
+dnl by the GNU Library General Public License, and the rest of the GNU
+dnl gettext package is covered by the GNU General Public License.
+dnl They are *not* in the public domain.
+
+dnl Authors:
+dnl Ulrich Drepper <drepper@cygnus.com>, 1996.
+
+AC_PREREQ([2.50])
+
+# Search path for a program which passes the given test.
+
+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR,
+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]])
+AC_DEFUN([AM_PATH_PROG_WITH_TEST],
+[
+# Prepare PATH_SEPARATOR.
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ # Determine PATH_SEPARATOR by trying to find /bin/sh in a PATH which
+ # contains only /bin. Note that ksh looks also at the FPATH variable,
+ # so we have to set that as well for the test.
+ PATH_SEPARATOR=:
+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 \
+ || PATH_SEPARATOR=';'
+ }
+fi
+
+# Find out how to test for executable files. Don't use a zero-byte file,
+# as systems may use methods other than mode bits to determine executability.
+cat >conf$$.file <<_ASEOF
+#! /bin/sh
+exit 0
+_ASEOF
+chmod +x conf$$.file
+if test -x conf$$.file >/dev/null 2>&1; then
+ ac_executable_p="test -x"
+else
+ ac_executable_p="test -f"
+fi
+rm -f conf$$.file
+
+# Extract the first word of "$2", so it can be a program name with args.
+set dummy $2; ac_word=[$]2
+AC_MSG_CHECKING([for $ac_word])
+AC_CACHE_VAL([ac_cv_path_$1],
+[case "[$]$1" in
+ [[\\/]]* | ?:[[\\/]]*)
+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path.
+ ;;
+ *)
+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR
+ for ac_dir in ifelse([$5], , $PATH, [$5]); do
+ IFS="$ac_save_IFS"
+ test -z "$ac_dir" && ac_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then
+ echo "$as_me: trying $ac_dir/$ac_word..." >&AS_MESSAGE_LOG_FD
+ if [$3]; then
+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext"
+ break 2
+ fi
+ fi
+ done
+ done
+ IFS="$ac_save_IFS"
+dnl If no 4th arg is given, leave the cache variable unset,
+dnl so AC_PATH_PROGS will keep looking.
+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4"
+])dnl
+ ;;
+esac])dnl
+$1="$ac_cv_path_$1"
+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then
+ AC_MSG_RESULT([$][$1])
+else
+ AC_MSG_RESULT([no])
+fi
+AC_SUBST([$1])dnl
+])
diff --git a/m4/pthread_rwlock_rdlock.m4 b/m4/pthread_rwlock_rdlock.m4
new file mode 100644
index 00000000..3c1d6456
--- /dev/null
+++ b/m4/pthread_rwlock_rdlock.m4
@@ -0,0 +1,165 @@
+# pthread_rwlock_rdlock.m4 serial 2
+dnl Copyright (C) 2017-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Inspired by
+dnl https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_rwlock_rdlock/2-2.c
+dnl by Intel Corporation.
+
+dnl Test whether in a situation where
+dnl - an rwlock is taken by a reader and has a writer waiting,
+dnl - an additional reader requests the lock,
+dnl - the waiting writer and the requesting reader threads have the same
+dnl priority,
+dnl the requesting reader thread gets blocked, so that at some point the
+dnl waiting writer can acquire the lock.
+dnl Without such a guarantee, when there a N readers and each of the readers
+dnl spends more than 1/Nth of the time with the lock held, there is a high
+dnl probability that the waiting writer will not get the lock in a given finite
+dnl time, a phenomenon called "writer starvation".
+dnl Without such a guarantee, applications have a hard time avoiding writer
+dnl starvation.
+dnl
+dnl POSIX:2017 makes this requirement only for implementations that support TPS
+dnl (Thread Priority Scheduling) and only for the scheduling policies SCHED_FIFO
+dnl and SCHED_RR, see
+dnl http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_rwlock_rdlock.html
+dnl but this test verifies the guarantee regardless of TPS and regardless of
+dnl scheduling policy.
+dnl Glibc currently does not provide this guarantee, see
+dnl https://sourceware.org/bugzilla/show_bug.cgi?id=13701
+AC_DEFUN([gl_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER],
+[
+ AC_REQUIRE([gl_THREADLIB_EARLY])
+ AC_CACHE_CHECK([whether pthread_rwlock_rdlock prefers a writer to a reader],
+ [gl_cv_pthread_rwlock_rdlock_prefer_writer],
+ [save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <errno.h>
+#include <pthread.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define SUCCEED() exit (0)
+#define FAILURE() exit (1)
+#define UNEXPECTED(n) (exit (10 + (n)))
+
+/* The main thread creates the waiting writer and the requesting reader threads
+ in the default way; this guarantees that they have the same priority.
+ We can reuse the main thread as first reader thread. */
+
+static pthread_rwlock_t lock;
+static pthread_t reader1;
+static pthread_t writer;
+static pthread_t reader2;
+static pthread_t timer;
+/* Used to pass control from writer to reader2 and from reader2 to timer,
+ as in a relay race.
+ Passing control from one running thread to another running thread
+ is most likely faster than to create the second thread. */
+static pthread_mutex_t baton;
+
+static void *
+timer_func (void *ignored)
+{
+ /* Step 13 (can be before or after step 12):
+ The timer thread takes the baton, then waits a moment to make sure
+ it can tell whether the second reader thread is blocked at step 12. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (13);
+ usleep (100000);
+ /* By the time we get here, it's clear that the second reader thread is
+ blocked at step 12. This is the desired behaviour. */
+ SUCCEED ();
+}
+
+static void *
+reader2_func (void *ignored)
+{
+ int err;
+
+ /* Step 8 (can be before or after step 7):
+ The second reader thread takes the baton, then waits a moment to make sure
+ the writer thread has reached step 7. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (8);
+ usleep (100000);
+ /* Step 9: The second reader thread requests the lock. */
+ err = pthread_rwlock_tryrdlock (&lock);
+ if (err == 0)
+ FAILURE ();
+ else if (err != EBUSY)
+ UNEXPECTED (9);
+ /* Step 10: Launch a timer, to test whether the next call blocks. */
+ if (pthread_create (&timer, NULL, timer_func, NULL))
+ UNEXPECTED (10);
+ /* Step 11: Release the baton. */
+ if (pthread_mutex_unlock (&baton))
+ UNEXPECTED (11);
+ /* Step 12: The second reader thread requests the lock. */
+ err = pthread_rwlock_rdlock (&lock);
+ if (err == 0)
+ FAILURE ();
+ else
+ UNEXPECTED (12);
+}
+
+static void *
+writer_func (void *ignored)
+{
+ /* Step 4: Take the baton, so that the second reader thread does not go ahead
+ too early. */
+ if (pthread_mutex_lock (&baton))
+ UNEXPECTED (4);
+ /* Step 5: Create the second reader thread. */
+ if (pthread_create (&reader2, NULL, reader2_func, NULL))
+ UNEXPECTED (5);
+ /* Step 6: Release the baton. */
+ if (pthread_mutex_unlock (&baton))
+ UNEXPECTED (6);
+ /* Step 7: The writer thread requests the lock. */
+ if (pthread_rwlock_wrlock (&lock))
+ UNEXPECTED (7);
+ return NULL;
+}
+
+int
+main ()
+{
+ reader1 = pthread_self ();
+
+ /* Step 1: The main thread initializes the lock and the baton. */
+ if (pthread_rwlock_init (&lock, NULL))
+ UNEXPECTED (1);
+ if (pthread_mutex_init (&baton, NULL))
+ UNEXPECTED (1);
+ /* Step 2: The main thread acquires the lock as a reader. */
+ if (pthread_rwlock_rdlock (&lock))
+ UNEXPECTED (2);
+ /* Step 3: Create the writer thread. */
+ if (pthread_create (&writer, NULL, writer_func, NULL))
+ UNEXPECTED (3);
+ /* Job done. Go to sleep. */
+ for (;;)
+ {
+ sleep (1);
+ }
+}
+]])],
+ [gl_cv_pthread_rwlock_rdlock_prefer_writer=yes],
+ [gl_cv_pthread_rwlock_rdlock_prefer_writer=no],
+ [gl_cv_pthread_rwlock_rdlock_prefer_writer="guessing yes"])
+ LIBS="$save_LIBS"
+ ])
+ case "$gl_cv_pthread_rwlock_rdlock_prefer_writer" in
+ *yes)
+ AC_DEFINE([HAVE_PTHREAD_RWLOCK_RDLOCK_PREFER_WRITER], [1],
+ [Define if the 'pthread_rwlock_rdlock' function prefers a writer to a reader.])
+ ;;
+ esac
+])
diff --git a/m4/size_max.m4 b/m4/size_max.m4
new file mode 100644
index 00000000..ab79052d
--- /dev/null
+++ b/m4/size_max.m4
@@ -0,0 +1,75 @@
+# size_max.m4 serial 11
+dnl Copyright (C) 2003, 2005-2006, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.61])
+
+AC_DEFUN([gl_SIZE_MAX],
+[
+ AC_CHECK_HEADERS([stdint.h])
+ dnl First test whether the system already has SIZE_MAX.
+ AC_CACHE_CHECK([for SIZE_MAX], [gl_cv_size_max], [
+ gl_cv_size_max=
+ AC_EGREP_CPP([Found it], [
+#include <limits.h>
+#if HAVE_STDINT_H
+#include <stdint.h>
+#endif
+#ifdef SIZE_MAX
+Found it
+#endif
+], [gl_cv_size_max=yes])
+ if test -z "$gl_cv_size_max"; then
+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider
+ dnl than the type 'unsigned long'. Try hard to find a definition that can
+ dnl be used in a preprocessor #if, i.e. doesn't contain a cast.
+ AC_COMPUTE_INT([size_t_bits_minus_1], [sizeof (size_t) * CHAR_BIT - 1],
+ [#include <stddef.h>
+#include <limits.h>], [size_t_bits_minus_1=])
+ AC_COMPUTE_INT([fits_in_uint], [sizeof (size_t) <= sizeof (unsigned int)],
+ [#include <stddef.h>], [fits_in_uint=])
+ if test -n "$size_t_bits_minus_1" && test -n "$fits_in_uint"; then
+ if test $fits_in_uint = 1; then
+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type
+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'.
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ extern size_t foo;
+ extern unsigned long foo;
+ ]],
+ [[]])],
+ [fits_in_uint=0])
+ fi
+ dnl We cannot use 'expr' to simplify this expression, because 'expr'
+ dnl works only with 'long' integers in the host environment, while we
+ dnl might be cross-compiling from a 32-bit platform to a 64-bit platform.
+ if test $fits_in_uint = 1; then
+ gl_cv_size_max="(((1U << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ else
+ gl_cv_size_max="(((1UL << $size_t_bits_minus_1) - 1) * 2 + 1)"
+ fi
+ else
+ dnl Shouldn't happen, but who knows...
+ gl_cv_size_max='((size_t)~(size_t)0)'
+ fi
+ fi
+ ])
+ if test "$gl_cv_size_max" != yes; then
+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$gl_cv_size_max],
+ [Define as the maximum value of type 'size_t', if the system doesn't define it.])
+ fi
+ dnl Don't redefine SIZE_MAX in config.h if config.h is re-included after
+ dnl <stdint.h>. Remember that the #undef in AH_VERBATIM gets replaced with
+ dnl #define by AC_DEFINE_UNQUOTED.
+ AH_VERBATIM([SIZE_MAX],
+[/* Define as the maximum value of type 'size_t', if the system doesn't define
+ it. */
+#ifndef SIZE_MAX
+# undef SIZE_MAX
+#endif])
+])
diff --git a/m4/stdint_h.m4 b/m4/stdint_h.m4
new file mode 100644
index 00000000..6d5f1af0
--- /dev/null
+++ b/m4/stdint_h.m4
@@ -0,0 +1,27 @@
+# stdint_h.m4 serial 9
+dnl Copyright (C) 1997-2004, 2006, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+
+AC_DEFUN([gl_AC_HEADER_STDINT_H],
+[
+ AC_CACHE_CHECK([for stdint.h], [gl_cv_header_stdint_h],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <sys/types.h>
+ #include <stdint.h>]],
+ [[uintmax_t i = (uintmax_t) -1; return !i;]])],
+ [gl_cv_header_stdint_h=yes],
+ [gl_cv_header_stdint_h=no])])
+ if test $gl_cv_header_stdint_h = yes; then
+ AC_DEFINE_UNQUOTED([HAVE_STDINT_H_WITH_UINTMAX], [1],
+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>,
+ and declares uintmax_t. ])
+ fi
+])
diff --git a/m4/threadlib.m4 b/m4/threadlib.m4
new file mode 100644
index 00000000..bfc3bac8
--- /dev/null
+++ b/m4/threadlib.m4
@@ -0,0 +1,393 @@
+# threadlib.m4 serial 16
+dnl Copyright (C) 2005-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+AC_PREREQ([2.60])
+
+dnl gl_THREADLIB
+dnl ------------
+dnl Tests for a multithreading library to be used.
+dnl If the configure.ac contains a definition of the gl_THREADLIB_DEFAULT_NO
+dnl (it must be placed before the invocation of gl_THREADLIB_EARLY!), then the
+dnl default is 'no', otherwise it is system dependent. In both cases, the user
+dnl can change the choice through the options --enable-threads=choice or
+dnl --disable-threads.
+dnl Defines at most one of the macros USE_POSIX_THREADS, USE_SOLARIS_THREADS,
+dnl USE_PTH_THREADS, USE_WINDOWS_THREADS
+dnl Sets the variables LIBTHREAD and LTLIBTHREAD to the linker options for use
+dnl in a Makefile (LIBTHREAD for use without libtool, LTLIBTHREAD for use with
+dnl libtool).
+dnl Sets the variables LIBMULTITHREAD and LTLIBMULTITHREAD similarly, for
+dnl programs that really need multithread functionality. The difference
+dnl between LIBTHREAD and LIBMULTITHREAD is that on platforms supporting weak
+dnl symbols, typically LIBTHREAD is empty whereas LIBMULTITHREAD is not.
+dnl Adds to CPPFLAGS the flag -D_REENTRANT or -D_THREAD_SAFE if needed for
+dnl multithread-safe programs.
+
+AC_DEFUN([gl_THREADLIB_EARLY],
+[
+ AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+])
+
+dnl The guts of gl_THREADLIB_EARLY. Needs to be expanded only once.
+
+AC_DEFUN([gl_THREADLIB_EARLY_BODY],
+[
+ dnl Ordering constraints: This macro modifies CPPFLAGS in a way that
+ dnl influences the result of the autoconf tests that test for *_unlocked
+ dnl declarations, on AIX 5 at least. Therefore it must come early.
+ AC_BEFORE([$0], [gl_FUNC_GLIBC_UNLOCKED_IO])dnl
+ AC_BEFORE([$0], [gl_ARGP])dnl
+
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ dnl _GNU_SOURCE is needed for pthread_rwlock_t on glibc systems.
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+ dnl Check for multithreading.
+ m4_ifdef([gl_THREADLIB_DEFAULT_NO],
+ [m4_divert_text([DEFAULTS], [gl_use_threads_default=no])],
+ [m4_divert_text([DEFAULTS], [gl_use_threads_default=])])
+ AC_ARG_ENABLE([threads],
+AC_HELP_STRING([--enable-threads={posix|solaris|pth|windows}], [specify multithreading API])m4_ifdef([gl_THREADLIB_DEFAULT_NO], [], [
+AC_HELP_STRING([--disable-threads], [build without multithread safety])]),
+ [gl_use_threads=$enableval],
+ [if test -n "$gl_use_threads_default"; then
+ gl_use_threads="$gl_use_threads_default"
+ else
+changequote(,)dnl
+ case "$host_os" in
+ dnl Disable multithreading by default on OSF/1, because it interferes
+ dnl with fork()/exec(): When msgexec is linked with -lpthread, its
+ dnl child process gets an endless segmentation fault inside execvp().
+ dnl Disable multithreading by default on Cygwin 1.5.x, because it has
+ dnl bugs that lead to endless loops or crashes. See
+ dnl <https://cygwin.com/ml/cygwin/2009-08/msg00283.html>.
+ osf*) gl_use_threads=no ;;
+ cygwin*)
+ case `uname -r` in
+ 1.[0-5].*) gl_use_threads=no ;;
+ *) gl_use_threads=yes ;;
+ esac
+ ;;
+ *) gl_use_threads=yes ;;
+ esac
+changequote([,])dnl
+ fi
+ ])
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ # For using <pthread.h>:
+ case "$host_os" in
+ osf*)
+ # On OSF/1, the compiler needs the flag -D_REENTRANT so that it
+ # groks <pthread.h>. cc also understands the flag -pthread, but
+ # we don't use it because 1. gcc-2.95 doesn't understand -pthread,
+ # 2. putting a flag into CPPFLAGS that has an effect on the linker
+ # causes the AC_LINK_IFELSE test below to succeed unexpectedly,
+ # leading to wrong values of LIBTHREAD and LTLIBTHREAD.
+ CPPFLAGS="$CPPFLAGS -D_REENTRANT"
+ ;;
+ esac
+ # Some systems optimize for single-threaded programs by default, and
+ # need special flags to disable these optimizations. For example, the
+ # definition of 'errno' in <errno.h>.
+ case "$host_os" in
+ aix* | freebsd*) CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" ;;
+ solaris*) CPPFLAGS="$CPPFLAGS -D_REENTRANT" ;;
+ esac
+ fi
+])
+
+dnl The guts of gl_THREADLIB. Needs to be expanded only once.
+
+AC_DEFUN([gl_THREADLIB_BODY],
+[
+ AC_REQUIRE([gl_THREADLIB_EARLY_BODY])
+ gl_threads_api=none
+ LIBTHREAD=
+ LTLIBTHREAD=
+ LIBMULTITHREAD=
+ LTLIBMULTITHREAD=
+ if test "$gl_use_threads" != no; then
+ dnl Check whether the compiler and linker support weak declarations.
+ AC_CACHE_CHECK([whether imported symbols can be declared weak],
+ [gl_cv_have_weak],
+ [gl_cv_have_weak=no
+ dnl First, test whether the compiler accepts it syntactically.
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[extern void xyzzy ();
+#pragma weak xyzzy]],
+ [[xyzzy();]])],
+ [gl_cv_have_weak=maybe])
+ if test $gl_cv_have_weak = maybe; then
+ dnl Second, test whether it actually works. On Cygwin 1.7.2, with
+ dnl gcc 4.3, symbols declared weak always evaluate to the address 0.
+ AC_RUN_IFELSE(
+ [AC_LANG_SOURCE([[
+#include <stdio.h>
+#pragma weak fputs
+int main ()
+{
+ return (fputs == NULL);
+}]])],
+ [gl_cv_have_weak=yes],
+ [gl_cv_have_weak=no],
+ [dnl When cross-compiling, assume that only ELF platforms support
+ dnl weak symbols.
+ AC_EGREP_CPP([Extensible Linking Format],
+ [#ifdef __ELF__
+ Extensible Linking Format
+ #endif
+ ],
+ [gl_cv_have_weak="guessing yes"],
+ [gl_cv_have_weak="guessing no"])
+ ])
+ fi
+ dnl But when linking statically, weak symbols don't work.
+ case " $LDFLAGS " in
+ *" -static "*) gl_cv_have_weak=no ;;
+ esac
+ ])
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = posix; then
+ # On OSF/1, the compiler needs the flag -pthread or -D_REENTRANT so that
+ # it groks <pthread.h>. It's added above, in gl_THREADLIB_EARLY_BODY.
+ AC_CHECK_HEADER([pthread.h],
+ [gl_have_pthread_h=yes], [gl_have_pthread_h=no])
+ if test "$gl_have_pthread_h" = yes; then
+ # Other possible tests:
+ # -lpthreads (FSU threads, PCthreads)
+ # -lgthreads
+ gl_have_pthread=
+ # Test whether both pthread_mutex_lock and pthread_mutexattr_init exist
+ # in libc. IRIX 6.5 has the first one in both libc and libpthread, but
+ # the second one only in libpthread, and lock.c needs it.
+ #
+ # If -pthread works, prefer it to -lpthread, since Ubuntu 14.04
+ # needs -pthread for some reason. See:
+ # https://lists.gnu.org/r/bug-gnulib/2014-09/msg00023.html
+ save_LIBS=$LIBS
+ for gl_pthread in '' '-pthread'; do
+ LIBS="$LIBS $gl_pthread"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <pthread.h>
+ pthread_mutex_t m;
+ pthread_mutexattr_t ma;
+ ]],
+ [[pthread_mutex_lock (&m);
+ pthread_mutexattr_init (&ma);]])],
+ [gl_have_pthread=yes
+ LIBTHREAD=$gl_pthread LTLIBTHREAD=$gl_pthread
+ LIBMULTITHREAD=$gl_pthread LTLIBMULTITHREAD=$gl_pthread])
+ LIBS=$save_LIBS
+ test -n "$gl_have_pthread" && break
+ done
+
+ # Test for libpthread by looking for pthread_kill. (Not pthread_self,
+ # since it is defined as a macro on OSF/1.)
+ if test -n "$gl_have_pthread" && test -z "$LIBTHREAD"; then
+ # The program links fine without libpthread. But it may actually
+ # need to link with libpthread in order to create multiple threads.
+ AC_CHECK_LIB([pthread], [pthread_kill],
+ [LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread
+ # On Solaris and HP-UX, most pthread functions exist also in libc.
+ # Therefore pthread_in_use() needs to actually try to create a
+ # thread: pthread_create from libc will fail, whereas
+ # pthread_create will actually create a thread.
+ # On Solaris 10 or newer, this test is no longer needed, because
+ # libc contains the fully functional pthread functions.
+ case "$host_os" in
+ solaris | solaris2.[1-9] | solaris2.[1-9].* | hpux*)
+ AC_DEFINE([PTHREAD_IN_USE_DETECTION_HARD], [1],
+ [Define if the pthread_in_use() detection is hard.])
+ esac
+ ])
+ elif test -z "$gl_have_pthread"; then
+ # Some library is needed. Try libpthread and libc_r.
+ AC_CHECK_LIB([pthread], [pthread_kill],
+ [gl_have_pthread=yes
+ LIBTHREAD=-lpthread LTLIBTHREAD=-lpthread
+ LIBMULTITHREAD=-lpthread LTLIBMULTITHREAD=-lpthread])
+ if test -z "$gl_have_pthread"; then
+ # For FreeBSD 4.
+ AC_CHECK_LIB([c_r], [pthread_kill],
+ [gl_have_pthread=yes
+ LIBTHREAD=-lc_r LTLIBTHREAD=-lc_r
+ LIBMULTITHREAD=-lc_r LTLIBMULTITHREAD=-lc_r])
+ fi
+ fi
+ if test -n "$gl_have_pthread"; then
+ gl_threads_api=posix
+ AC_DEFINE([USE_POSIX_THREADS], [1],
+ [Define if the POSIX multithreading library can be used.])
+ if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+ AC_DEFINE([USE_POSIX_THREADS_WEAK], [1],
+ [Define if references to the POSIX multithreading library should be made weak.])
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ fi
+ fi
+ fi
+ if test -z "$gl_have_pthread"; then
+ if test "$gl_use_threads" = yes || test "$gl_use_threads" = solaris; then
+ gl_have_solaristhread=
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS -lthread"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+#include <thread.h>
+#include <synch.h>
+ ]],
+ [[thr_self();]])],
+ [gl_have_solaristhread=yes])
+ LIBS="$gl_save_LIBS"
+ if test -n "$gl_have_solaristhread"; then
+ gl_threads_api=solaris
+ LIBTHREAD=-lthread
+ LTLIBTHREAD=-lthread
+ LIBMULTITHREAD="$LIBTHREAD"
+ LTLIBMULTITHREAD="$LTLIBTHREAD"
+ AC_DEFINE([USE_SOLARIS_THREADS], [1],
+ [Define if the old Solaris multithreading library can be used.])
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+ AC_DEFINE([USE_SOLARIS_THREADS_WEAK], [1],
+ [Define if references to the old Solaris multithreading library should be made weak.])
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ fi
+ fi
+ if test "$gl_use_threads" = pth; then
+ gl_save_CPPFLAGS="$CPPFLAGS"
+ AC_LIB_LINKFLAGS([pth])
+ gl_have_pth=
+ gl_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBPTH"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM([[#include <pth.h>]], [[pth_self();]])],
+ [gl_have_pth=yes])
+ LIBS="$gl_save_LIBS"
+ if test -n "$gl_have_pth"; then
+ gl_threads_api=pth
+ LIBTHREAD="$LIBPTH"
+ LTLIBTHREAD="$LTLIBPTH"
+ LIBMULTITHREAD="$LIBTHREAD"
+ LTLIBMULTITHREAD="$LTLIBTHREAD"
+ AC_DEFINE([USE_PTH_THREADS], [1],
+ [Define if the GNU Pth multithreading library can be used.])
+ if test -n "$LIBMULTITHREAD" || test -n "$LTLIBMULTITHREAD"; then
+ if case "$gl_cv_have_weak" in *yes) true;; *) false;; esac; then
+ AC_DEFINE([USE_PTH_THREADS_WEAK], [1],
+ [Define if references to the GNU Pth multithreading library should be made weak.])
+ LIBTHREAD=
+ LTLIBTHREAD=
+ fi
+ fi
+ else
+ CPPFLAGS="$gl_save_CPPFLAGS"
+ fi
+ fi
+ if test -z "$gl_have_pthread"; then
+ case "$gl_use_threads" in
+ yes | windows | win32) # The 'win32' is for backward compatibility.
+ if { case "$host_os" in
+ mingw*) true;;
+ *) false;;
+ esac
+ }; then
+ gl_threads_api=windows
+ AC_DEFINE([USE_WINDOWS_THREADS], [1],
+ [Define if the native Windows multithreading API can be used.])
+ fi
+ ;;
+ esac
+ fi
+ fi
+ AC_MSG_CHECKING([for multithread API to use])
+ AC_MSG_RESULT([$gl_threads_api])
+ AC_SUBST([LIBTHREAD])
+ AC_SUBST([LTLIBTHREAD])
+ AC_SUBST([LIBMULTITHREAD])
+ AC_SUBST([LTLIBMULTITHREAD])
+])
+
+AC_DEFUN([gl_THREADLIB],
+[
+ AC_REQUIRE([gl_THREADLIB_EARLY])
+ AC_REQUIRE([gl_THREADLIB_BODY])
+])
+
+
+dnl gl_DISABLE_THREADS
+dnl ------------------
+dnl Sets the gl_THREADLIB default so that threads are not used by default.
+dnl The user can still override it at installation time, by using the
+dnl configure option '--enable-threads'.
+
+AC_DEFUN([gl_DISABLE_THREADS], [
+ m4_divert_text([INIT_PREPARE], [gl_use_threads_default=no])
+])
+
+
+dnl Survey of platforms:
+dnl
+dnl Platform Available Compiler Supports test-lock
+dnl flavours option weak result
+dnl --------------- --------- --------- -------- ---------
+dnl Linux 2.4/glibc posix -lpthread Y OK
+dnl
+dnl GNU Hurd/glibc posix
+dnl
+dnl Ubuntu 14.04 posix -pthread Y OK
+dnl
+dnl FreeBSD 5.3 posix -lc_r Y
+dnl posix -lkse ? Y
+dnl posix -lpthread ? Y
+dnl posix -lthr Y
+dnl
+dnl FreeBSD 5.2 posix -lc_r Y
+dnl posix -lkse Y
+dnl posix -lthr Y
+dnl
+dnl FreeBSD 4.0,4.10 posix -lc_r Y OK
+dnl
+dnl NetBSD 1.6 --
+dnl
+dnl OpenBSD 3.4 posix -lpthread Y OK
+dnl
+dnl Mac OS X 10.[123] posix -lpthread Y OK
+dnl
+dnl Solaris 7,8,9 posix -lpthread Y Sol 7,8: 0.0; Sol 9: OK
+dnl solaris -lthread Y Sol 7,8: 0.0; Sol 9: OK
+dnl
+dnl HP-UX 11 posix -lpthread N (cc) OK
+dnl Y (gcc)
+dnl
+dnl IRIX 6.5 posix -lpthread Y 0.5
+dnl
+dnl AIX 4.3,5.1 posix -lpthread N AIX 4: 0.5; AIX 5: OK
+dnl
+dnl OSF/1 4.0,5.1 posix -pthread (cc) N OK
+dnl -lpthread (gcc) Y
+dnl
+dnl Cygwin posix -lpthread Y OK
+dnl
+dnl Any of the above pth -lpth 0.0
+dnl
+dnl Mingw windows N OK
+dnl
+dnl BeOS 5 --
+dnl
+dnl The test-lock result shows what happens if in test-lock.c EXPLICIT_YIELD is
+dnl turned off:
+dnl OK if all three tests terminate OK,
+dnl 0.5 if the first test terminates OK but the second one loops endlessly,
+dnl 0.0 if the first test already loops endlessly.
diff --git a/m4/uintmax_t.m4 b/m4/uintmax_t.m4
new file mode 100644
index 00000000..2926bea9
--- /dev/null
+++ b/m4/uintmax_t.m4
@@ -0,0 +1,30 @@
+# uintmax_t.m4 serial 12
+dnl Copyright (C) 1997-2004, 2007-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Paul Eggert.
+
+AC_PREREQ([2.13])
+
+# Define uintmax_t to 'unsigned long' or 'unsigned long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+
+AC_DEFUN([gl_AC_TYPE_UINTMAX_T],
+[
+ AC_REQUIRE([gl_AC_HEADER_INTTYPES_H])
+ AC_REQUIRE([gl_AC_HEADER_STDINT_H])
+ if test $gl_cv_header_inttypes_h = no && test $gl_cv_header_stdint_h = no; then
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ test $ac_cv_type_unsigned_long_long_int = yes \
+ && ac_type='unsigned long long' \
+ || ac_type='unsigned long'
+ AC_DEFINE_UNQUOTED([uintmax_t], [$ac_type],
+ [Define to unsigned long or unsigned long long
+ if <stdint.h> and <inttypes.h> don't define.])
+ else
+ AC_DEFINE([HAVE_UINTMAX_T], [1],
+ [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.])
+ fi
+])
diff --git a/m4/ulonglong.m4 b/m4/ulonglong.m4
new file mode 100644
index 00000000..58b5334e
--- /dev/null
+++ b/m4/ulonglong.m4
@@ -0,0 +1,5 @@
+# ulonglong.m4 serial 10
+dnl Copyright (C) 1999-2007, 2009-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
diff --git a/m4/visibility.m4 b/m4/visibility.m4
new file mode 100644
index 00000000..8c266a81
--- /dev/null
+++ b/m4/visibility.m4
@@ -0,0 +1,77 @@
+# visibility.m4 serial 6
+dnl Copyright (C) 2005, 2008, 2010-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+
+dnl Tests whether the compiler supports the command-line option
+dnl -fvisibility=hidden and the function and variable attributes
+dnl __attribute__((__visibility__("hidden"))) and
+dnl __attribute__((__visibility__("default"))).
+dnl Does *not* test for __visibility__("protected") - which has tricky
+dnl semantics (see the 'vismain' test in glibc) and does not exist e.g. on
+dnl Mac OS X.
+dnl Does *not* test for __visibility__("internal") - which has processor
+dnl dependent semantics.
+dnl Does *not* test for #pragma GCC visibility push(hidden) - which is
+dnl "really only recommended for legacy code".
+dnl Set the variable CFLAG_VISIBILITY.
+dnl Defines and sets the variable HAVE_VISIBILITY.
+
+AC_DEFUN([gl_VISIBILITY],
+[
+ AC_REQUIRE([AC_PROG_CC])
+ CFLAG_VISIBILITY=
+ HAVE_VISIBILITY=0
+ if test -n "$GCC"; then
+ dnl First, check whether -Werror can be added to the command line, or
+ dnl whether it leads to an error because of some other option that the
+ dnl user has put into $CC $CFLAGS $CPPFLAGS.
+ AC_CACHE_CHECK([whether the -Werror option is usable],
+ [gl_cv_cc_vis_werror],
+ [gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -Werror"
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[]], [[]])],
+ [gl_cv_cc_vis_werror=yes],
+ [gl_cv_cc_vis_werror=no])
+ CFLAGS="$gl_save_CFLAGS"
+ ])
+ dnl Now check whether visibility declarations are supported.
+ AC_CACHE_CHECK([for simple visibility declarations],
+ [gl_cv_cc_visibility],
+ [gl_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS -fvisibility=hidden"
+ dnl We use the option -Werror and a function dummyfunc, because on some
+ dnl platforms (Cygwin 1.7) the use of -fvisibility triggers a warning
+ dnl "visibility attribute not supported in this configuration; ignored"
+ dnl at the first function definition in every compilation unit, and we
+ dnl don't want to use the option in this case.
+ if test $gl_cv_cc_vis_werror = yes; then
+ CFLAGS="$CFLAGS -Werror"
+ fi
+ AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[extern __attribute__((__visibility__("hidden"))) int hiddenvar;
+ extern __attribute__((__visibility__("default"))) int exportedvar;
+ extern __attribute__((__visibility__("hidden"))) int hiddenfunc (void);
+ extern __attribute__((__visibility__("default"))) int exportedfunc (void);
+ void dummyfunc (void) {}
+ ]],
+ [[]])],
+ [gl_cv_cc_visibility=yes],
+ [gl_cv_cc_visibility=no])
+ CFLAGS="$gl_save_CFLAGS"
+ ])
+ if test $gl_cv_cc_visibility = yes; then
+ CFLAG_VISIBILITY="-fvisibility=hidden"
+ HAVE_VISIBILITY=1
+ fi
+ fi
+ AC_SUBST([CFLAG_VISIBILITY])
+ AC_SUBST([HAVE_VISIBILITY])
+ AC_DEFINE_UNQUOTED([HAVE_VISIBILITY], [$HAVE_VISIBILITY],
+ [Define to 1 or 0, depending whether the compiler supports simple visibility declarations.])
+])
diff --git a/m4/wchar_t.m4 b/m4/wchar_t.m4
new file mode 100644
index 00000000..5db58152
--- /dev/null
+++ b/m4/wchar_t.m4
@@ -0,0 +1,24 @@
+# wchar_t.m4 serial 4 (gettext-0.18.2)
+dnl Copyright (C) 2002-2003, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <stddef.h> has the 'wchar_t' type.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WCHAR_T],
+[
+ AC_CACHE_CHECK([for wchar_t], [gt_cv_c_wchar_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <stddef.h>
+ wchar_t foo = (wchar_t)'\0';]],
+ [[]])],
+ [gt_cv_c_wchar_t=yes],
+ [gt_cv_c_wchar_t=no])])
+ if test $gt_cv_c_wchar_t = yes; then
+ AC_DEFINE([HAVE_WCHAR_T], [1], [Define if you have the 'wchar_t' type.])
+ fi
+])
diff --git a/m4/wint_t.m4 b/m4/wint_t.m4
new file mode 100644
index 00000000..61e8a23d
--- /dev/null
+++ b/m4/wint_t.m4
@@ -0,0 +1,74 @@
+# wint_t.m4 serial 7
+dnl Copyright (C) 2003, 2007-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+dnl From Bruno Haible.
+dnl Test whether <wchar.h> has the 'wint_t' type and whether gnulib's
+dnl <wchar.h> or <wctype.h> would, if present, override 'wint_t'.
+dnl Prerequisite: AC_PROG_CC
+
+AC_DEFUN([gt_TYPE_WINT_T],
+[
+ AC_CACHE_CHECK([for wint_t], [gt_cv_c_wint_t],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be included
+ before <wchar.h>. */
+#include <stddef.h>
+#include <stdio.h>
+#include <time.h>
+#include <wchar.h>
+ wint_t foo = (wchar_t)'\0';]],
+ [[]])],
+ [gt_cv_c_wint_t=yes],
+ [gt_cv_c_wint_t=no])])
+ if test $gt_cv_c_wint_t = yes; then
+ AC_DEFINE([HAVE_WINT_T], [1], [Define if you have the 'wint_t' type.])
+
+ dnl Determine whether gnulib's <wchar.h> or <wctype.h> would, if present,
+ dnl override 'wint_t'.
+ AC_CACHE_CHECK([whether wint_t is too small],
+ [gl_cv_type_wint_t_too_small],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM([[
+/* Tru64 with Desktop Toolkit C has a bug: <stdio.h> must be included before
+ <wchar.h>.
+ BSD/OS 4.0.1 has a bug: <stddef.h>, <stdio.h> and <time.h> must be
+ included before <wchar.h>. */
+#if !(defined __GLIBC__ && !defined __UCLIBC__)
+# include <stddef.h>
+# include <stdio.h>
+# include <time.h>
+#endif
+#include <wchar.h>
+ int verify[sizeof (wint_t) < sizeof (int) ? -1 : 1];
+ ]])],
+ [gl_cv_type_wint_t_too_small=no],
+ [gl_cv_type_wint_t_too_small=yes])])
+ if test $gl_cv_type_wint_t_too_small = yes; then
+ GNULIB_OVERRIDES_WINT_T=1
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ else
+ GNULIB_OVERRIDES_WINT_T=0
+ fi
+ AC_SUBST([GNULIB_OVERRIDES_WINT_T])
+])
+
+dnl Prerequisites of the 'wint_t' override.
+AC_DEFUN([gl_TYPE_WINT_T_PREREQ],
+[
+ AC_CHECK_HEADERS_ONCE([crtdefs.h])
+ if test $ac_cv_header_crtdefs_h = yes; then
+ HAVE_CRTDEFS_H=1
+ else
+ HAVE_CRTDEFS_H=0
+ fi
+ AC_SUBST([HAVE_CRTDEFS_H])
+])
diff --git a/m4/xsize.m4 b/m4/xsize.m4
new file mode 100644
index 00000000..f2898ba1
--- /dev/null
+++ b/m4/xsize.m4
@@ -0,0 +1,12 @@
+# xsize.m4 serial 5
+dnl Copyright (C) 2003-2004, 2008-2019 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_XSIZE],
+[
+ dnl Prerequisites of lib/xsize.h.
+ AC_REQUIRE([gl_SIZE_MAX])
+ AC_CHECK_HEADERS([stdint.h])
+])
diff --git a/mailcheck.c b/mailcheck.c
index c04d0fe2..4a11143c 100644
--- a/mailcheck.c
+++ b/mailcheck.c
@@ -1,6 +1,6 @@
/* mailcheck.c -- The check is in the mail... */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -43,7 +43,7 @@
extern time_t shell_start_time;
-extern int mailstat __P((const char *, struct stat *));
+extern int mailstat PARAMS((const char *, struct stat *));
typedef struct _fileinfo {
char *name;
@@ -66,19 +66,19 @@ static time_t last_time_mail_checked = 0;
/* Non-zero means warn if a mail file has been read since last checked. */
int mail_warning;
-static int find_mail_file __P((char *));
-static void init_mail_file __P((int));
-static void update_mail_file __P((int));
-static int add_mail_file __P((char *, char *));
+static int find_mail_file PARAMS((char *));
+static void init_mail_file PARAMS((int));
+static void update_mail_file PARAMS((int));
+static int add_mail_file PARAMS((char *, char *));
-static FILEINFO *alloc_mail_file __P((char *, char *));
-static void dispose_mail_file __P((FILEINFO *));
+static FILEINFO *alloc_mail_file PARAMS((char *, char *));
+static void dispose_mail_file PARAMS((FILEINFO *));
-static int file_mod_date_changed __P((int));
-static int file_access_date_changed __P((int));
-static int file_has_grown __P((int));
+static int file_mod_date_changed PARAMS((int));
+static int file_access_date_changed PARAMS((int));
+static int file_has_grown PARAMS((int));
-static char *parse_mailpath_spec __P((char *));
+static char *parse_mailpath_spec PARAMS((char *));
/* Returns non-zero if it is time to check mail. */
int
diff --git a/mailcheck.h b/mailcheck.h
index 3ca8440a..e930124c 100644
--- a/mailcheck.h
+++ b/mailcheck.h
@@ -1,6 +1,6 @@
/* mailcheck.h -- variables and function declarations for mail checking. */
-/* Copyright (C) 1987,1991,2001,2003,2005,2006,2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -22,13 +22,13 @@
#define _MAILCHECK_H_
/* Functions from mailcheck.c */
-extern int time_to_check_mail __P((void));
-extern void reset_mail_timer __P((void));
-extern void reset_mail_files __P((void));
-extern void free_mail_files __P((void));
-extern char *make_default_mailpath __P((void));
-extern void remember_mail_dates __P((void));
-extern void init_mail_dates __P((void));
-extern void check_mail __P((void));
+extern int time_to_check_mail PARAMS((void));
+extern void reset_mail_timer PARAMS((void));
+extern void reset_mail_files PARAMS((void));
+extern void free_mail_files PARAMS((void));
+extern char *make_default_mailpath PARAMS((void));
+extern void remember_mail_dates PARAMS((void));
+extern void init_mail_dates PARAMS((void));
+extern void check_mail PARAMS((void));
#endif /* _MAILCHECK_H */
diff --git a/make_cmd.c b/make_cmd.c
index ecbbfd6e..2d7ac960 100644
--- a/make_cmd.c
+++ b/make_cmd.c
@@ -1,7 +1,7 @@
/* make_cmd.c -- Functions for making instances of the various
parser constructs. */
-/* Copyright (C) 1989-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -55,11 +55,11 @@ sh_obj_cache_t wlcache = {0, 0, 0};
#define WDCACHESIZE 128
#define WLCACHESIZE 128
-static COMMAND *make_for_or_select __P((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *, int));
+static COMMAND *make_for_or_select PARAMS((enum command_type, WORD_DESC *, WORD_LIST *, COMMAND *, int));
#if defined (ARITH_FOR_COMMAND)
-static WORD_LIST *make_arith_for_expr __P((char *));
+static WORD_LIST *make_arith_for_expr PARAMS((char *));
#endif
-static COMMAND *make_until_or_while __P((enum command_type, COMMAND *, COMMAND *));
+static COMMAND *make_until_or_while PARAMS((enum command_type, COMMAND *, COMMAND *));
void
cmd_init ()
@@ -235,7 +235,7 @@ make_select_command (name, map_list, action, lineno)
#if defined (SELECT_COMMAND)
return (make_for_or_select (cm_select, name, map_list, action, lineno));
#else
- last_command_exit_value = 2;
+ set_exit_status (2);
return ((COMMAND *)NULL);
#endif
}
@@ -321,7 +321,7 @@ make_arith_for_command (exprs, action, lineno)
free (init);
free (test);
free (step);
- last_command_exit_value = 2;
+ set_exit_status (2);
return ((COMMAND *)NULL);
}
@@ -337,7 +337,7 @@ make_arith_for_command (exprs, action, lineno)
return (make_command (cm_arith_for, (SIMPLE_COM *)temp));
#else
dispose_words (exprs);
- last_command_exit_value = 2;
+ set_exit_status (2);
return ((COMMAND *)NULL);
#endif /* ARITH_FOR_COMMAND */
}
@@ -447,7 +447,7 @@ make_arith_command (exp)
return (command);
#else
- last_command_exit_value = 2;
+ set_exit_status (2);
return ((COMMAND *)NULL);
#endif
}
@@ -490,7 +490,7 @@ make_cond_command (cond_node)
return (command);
#else
- last_command_exit_value = 2;
+ set_exit_status (2);
return ((COMMAND *)NULL);
#endif
}
diff --git a/make_cmd.h b/make_cmd.h
index fcd7766d..bf1fb008 100644
--- a/make_cmd.h
+++ b/make_cmd.h
@@ -1,6 +1,6 @@
/* make_cmd.h -- Declarations of functions found in make_cmd.c */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2009,2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -25,48 +25,48 @@
extern int here_doc_first_line;
-extern void cmd_init __P((void));
+extern void cmd_init PARAMS((void));
-extern WORD_DESC *alloc_word_desc __P((void));
-extern WORD_DESC *make_bare_word __P((const char *));
-extern WORD_DESC *make_word_flags __P((WORD_DESC *, const char *));
-extern WORD_DESC *make_word __P((const char *));
-extern WORD_DESC *make_word_from_token __P((int));
+extern WORD_DESC *alloc_word_desc PARAMS((void));
+extern WORD_DESC *make_bare_word PARAMS((const char *));
+extern WORD_DESC *make_word_flags PARAMS((WORD_DESC *, const char *));
+extern WORD_DESC *make_word PARAMS((const char *));
+extern WORD_DESC *make_word_from_token PARAMS((int));
-extern WORD_LIST *make_word_list __P((WORD_DESC *, WORD_LIST *));
+extern WORD_LIST *make_word_list PARAMS((WORD_DESC *, WORD_LIST *));
#define add_string_to_list(s, l) make_word_list (make_word(s), (l))
-extern COMMAND *make_command __P((enum command_type, SIMPLE_COM *));
-extern COMMAND *command_connect __P((COMMAND *, COMMAND *, int));
-extern COMMAND *make_for_command __P((WORD_DESC *, WORD_LIST *, COMMAND *, int));
-extern COMMAND *make_group_command __P((COMMAND *));
-extern COMMAND *make_case_command __P((WORD_DESC *, PATTERN_LIST *, int));
-extern PATTERN_LIST *make_pattern_list __P((WORD_LIST *, COMMAND *));
-extern COMMAND *make_if_command __P((COMMAND *, COMMAND *, COMMAND *));
-extern COMMAND *make_while_command __P((COMMAND *, COMMAND *));
-extern COMMAND *make_until_command __P((COMMAND *, COMMAND *));
-extern COMMAND *make_bare_simple_command __P((void));
-extern COMMAND *make_simple_command __P((ELEMENT, COMMAND *));
-extern void make_here_document __P((REDIRECT *, int));
-extern REDIRECT *make_redirection __P((REDIRECTEE, enum r_instruction, REDIRECTEE, int));
-extern COMMAND *make_function_def __P((WORD_DESC *, COMMAND *, int, int));
-extern COMMAND *clean_simple_command __P((COMMAND *));
-
-extern COMMAND *make_arith_command __P((WORD_LIST *));
-
-extern COMMAND *make_select_command __P((WORD_DESC *, WORD_LIST *, COMMAND *, int));
+extern COMMAND *make_command PARAMS((enum command_type, SIMPLE_COM *));
+extern COMMAND *command_connect PARAMS((COMMAND *, COMMAND *, int));
+extern COMMAND *make_for_command PARAMS((WORD_DESC *, WORD_LIST *, COMMAND *, int));
+extern COMMAND *make_group_command PARAMS((COMMAND *));
+extern COMMAND *make_case_command PARAMS((WORD_DESC *, PATTERN_LIST *, int));
+extern PATTERN_LIST *make_pattern_list PARAMS((WORD_LIST *, COMMAND *));
+extern COMMAND *make_if_command PARAMS((COMMAND *, COMMAND *, COMMAND *));
+extern COMMAND *make_while_command PARAMS((COMMAND *, COMMAND *));
+extern COMMAND *make_until_command PARAMS((COMMAND *, COMMAND *));
+extern COMMAND *make_bare_simple_command PARAMS((void));
+extern COMMAND *make_simple_command PARAMS((ELEMENT, COMMAND *));
+extern void make_here_document PARAMS((REDIRECT *, int));
+extern REDIRECT *make_redirection PARAMS((REDIRECTEE, enum r_instruction, REDIRECTEE, int));
+extern COMMAND *make_function_def PARAMS((WORD_DESC *, COMMAND *, int, int));
+extern COMMAND *clean_simple_command PARAMS((COMMAND *));
+
+extern COMMAND *make_arith_command PARAMS((WORD_LIST *));
+
+extern COMMAND *make_select_command PARAMS((WORD_DESC *, WORD_LIST *, COMMAND *, int));
#if defined (COND_COMMAND)
-extern COND_COM *make_cond_node __P((int, WORD_DESC *, COND_COM *, COND_COM *));
-extern COMMAND *make_cond_command __P((COND_COM *));
+extern COND_COM *make_cond_node PARAMS((int, WORD_DESC *, COND_COM *, COND_COM *));
+extern COMMAND *make_cond_command PARAMS((COND_COM *));
#endif
-extern COMMAND *make_arith_for_command __P((WORD_LIST *, COMMAND *, int));
+extern COMMAND *make_arith_for_command PARAMS((WORD_LIST *, COMMAND *, int));
-extern COMMAND *make_subshell_command __P((COMMAND *));
-extern COMMAND *make_coproc_command __P((char *, COMMAND *));
+extern COMMAND *make_subshell_command PARAMS((COMMAND *));
+extern COMMAND *make_coproc_command PARAMS((char *, COMMAND *));
-extern COMMAND *connect_async_list __P((COMMAND *, COMMAND *, int));
+extern COMMAND *connect_async_list PARAMS((COMMAND *, COMMAND *, int));
#endif /* !_MAKE_CMD_H */
diff --git a/nojobs.c b/nojobs.c
index 2201a29a..c5fc83d9 100644
--- a/nojobs.c
+++ b/nojobs.c
@@ -3,7 +3,7 @@
/* This file works under BSD, System V, minix, and Posix systems. It does
not implement job control. */
-/* Copyright (C) 1987-2011 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -51,7 +51,7 @@
#include "builtins/builtext.h" /* for wait_builtin */
#include "builtins/common.h"
-#define DEFAULT_CHILD_MAX 32
+#define DEFAULT_CHILD_MAX 4096
#if defined (_POSIX_VERSION) || !defined (HAVE_KILLPG)
# define killpg(pg, sig) kill(-(pg),(sig))
@@ -74,16 +74,13 @@
extern int errno;
#endif /* !errno */
-#if defined (HAVE_POSIX_SIGNALS)
-extern sigset_t top_level_mask;
-#endif
-
-extern void set_original_signal __P((int, SigHandler *));
+extern void set_original_signal PARAMS((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 */
+static int queue_sigchld; /* dummy declaration */
+int waiting_for_child;
/* Call this when you start making children. */
int already_making_children = 0;
@@ -124,32 +121,32 @@ static int wait_sigint_received;
static long child_max = -1L;
-static void alloc_pid_list __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));
-static int find_termsig_by_pid __P((pid_t));
-static int get_termsig __P((WAIT));
-static void set_pid_status __P((pid_t, WAIT));
-static void set_pid_flags __P((pid_t, int));
-static void unset_pid_flags __P((pid_t, int));
-static int get_pid_flags __P((pid_t));
-static void add_pid __P((pid_t, int));
-static void mark_dead_jobs_as_notified __P((int));
-
-static sighandler wait_sigint_handler __P((int));
-static char *j_strsignal __P((int));
+static void alloc_pid_list PARAMS((void));
+static int find_proc_slot PARAMS((pid_t));
+static int find_index_by_pid PARAMS((pid_t));
+static int find_status_by_pid PARAMS((pid_t));
+static int process_exit_status PARAMS((WAIT));
+static int find_termsig_by_pid PARAMS((pid_t));
+static int get_termsig PARAMS((WAIT));
+static void set_pid_status PARAMS((pid_t, WAIT));
+static void set_pid_flags PARAMS((pid_t, int));
+static void unset_pid_flags PARAMS((pid_t, int));
+static int get_pid_flags PARAMS((pid_t));
+static void add_pid PARAMS((pid_t, int));
+static void mark_dead_jobs_as_notified PARAMS((int));
+
+static sighandler wait_sigint_handler PARAMS((int));
+static char *j_strsignal PARAMS((int));
#if defined (HAVE_WAITPID)
-static void reap_zombie_children __P((void));
+static void reap_zombie_children PARAMS((void));
#endif
#if !defined (HAVE_SIGINTERRUPT) && defined (HAVE_POSIX_SIGNALS)
-static int siginterrupt __P((int, int));
+static int siginterrupt PARAMS((int, int));
#endif
-static void restore_sigint_handler __P((void));
+static void restore_sigint_handler PARAMS((void));
/* Allocate new, or grow existing PID_LIST. */
static void
@@ -493,17 +490,19 @@ siginterrupt (sig, flag)
anything else with it. ASYNC_P says what to do with the tty. If
non-zero, then don't give it away. */
pid_t
-make_child (command, async_p)
+make_child (command, flags)
char *command;
- int async_p;
+ int flags;
{
pid_t pid;
- int forksleep;
+ int async_p, forksleep;
+ sigset_t set, oset;
/* Discard saved memory. */
if (command)
free (command);
+ async_p = (flags & FORK_ASYNC);
start_pipeline ();
#if defined (BUFFERED_INPUT)
@@ -515,16 +514,22 @@ make_child (command, async_p)
sync_buffered_stream (default_buffered_input);
#endif /* BUFFERED_INPUT */
- /* XXX - block SIGTERM here and unblock in child after fork resets the
- set of pending signals? */
- RESET_SIGTERM;
+ /* Block SIGTERM here and unblock in child after fork resets the
+ set of pending signals */
+ if (interactive_shell)
+ {
+ sigemptyset (&set);
+ sigaddset (&set, SIGTERM);
+ sigemptyset (&oset);
+ sigprocmask (SIG_BLOCK, &set, &oset);
+ set_signal_handler (SIGTERM, SIG_DFL);
+ }
/* Create the child, handle severe errors. Retry on EAGAIN. */
forksleep = 1;
while ((pid = fork ()) < 0 && errno == EAGAIN && forksleep < FORKSLEEP_MAX)
{
sys_error ("fork: retry");
- RESET_SIGTERM;
#if defined (HAVE_WAITPID)
/* Posix systems with a non-blocking waitpid () system call available
@@ -540,7 +545,11 @@ make_child (command, async_p)
}
if (pid != 0)
- RESET_SIGTERM;
+ if (interactive_shell)
+ {
+ set_signal_handler (SIGTERM, SIG_IGN);
+ sigprocmask (SIG_SETMASK, &oset, (sigset_t *)NULL);
+ }
if (pid < 0)
{
@@ -557,10 +566,8 @@ make_child (command, async_p)
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);
-#endif
+ restore_sigmask ();
#if 0
/* Ignore INT and QUIT in asynchronous children. */
@@ -691,6 +698,7 @@ wait_for_single_pid (pid, flags)
siginterrupt (SIGINT, 0);
QUIT;
+ CHECK_WAIT_INTR;
return (got_pid > 0 ? process_exit_status (status) : -1);
}
@@ -698,7 +706,8 @@ wait_for_single_pid (pid, flags)
/* Wait for all of the shell's children to exit. Called by the `wait'
builtin. */
void
-wait_for_background_pids ()
+wait_for_background_pids (ps)
+ struct procstat *ps;
{
pid_t got_pid;
WAIT status;
@@ -711,8 +720,20 @@ wait_for_background_pids ()
siginterrupt (SIGINT, 1);
/* Wait for ECHILD */
+ waiting_for_child = 1;
while ((got_pid = WAITPID (-1, &status, 0)) != -1)
- set_pid_status (got_pid, status);
+ {
+ waiting_for_child = 0;
+ set_pid_status (got_pid, status);
+ if (ps)
+ {
+ ps->pid = got_pid;
+ ps->status = process_exit_status (status);
+ }
+ waiting_for_child = 1;
+ CHECK_WAIT_INTR;
+ }
+ waiting_for_child = 0;
if (errno != EINTR && errno != ECHILD)
{
@@ -722,6 +743,7 @@ wait_for_background_pids ()
siginterrupt (SIGINT, 0);
QUIT;
+ CHECK_WAIT_INTR;
mark_dead_jobs_as_notified (1);
cleanup_dead_jobs ();
@@ -763,20 +785,11 @@ wait_sigint_handler (sig)
{
last_command_exit_value = 128+SIGINT;
restore_sigint_handler ();
- interrupt_immediately = 0;
trap_handler (SIGINT); /* set pending_traps[SIGINT] */
wait_signal_received = SIGINT;
SIGRETURN (0);
}
- if (interrupt_immediately)
- {
- last_command_exit_value = EXECUTION_FAILURE;
- restore_sigint_handler ();
- ADDINTERRUPT;
- QUIT;
- }
-
wait_sigint_received = 1;
SIGRETURN (0);
@@ -801,8 +814,9 @@ j_strsignal (s)
/* Wait for pid (one of our children) to terminate. This is called only
by the execution code in execute_cmd.c. */
int
-wait_for (pid)
+wait_for (pid, flags)
pid_t pid;
+ int flags;
{
int return_val, pstatus;
pid_t got_pid;
@@ -826,8 +840,11 @@ wait_for (pid)
if (interactive_shell == 0)
old_sigint_handler = set_signal_handler (SIGINT, wait_sigint_handler);
+ waiting_for_child = 1;
+ CHECK_WAIT_INTR;
while ((got_pid = WAITPID (-1, &status, 0)) != pid) /* XXX was pid now -1 */
{
+ waiting_for_child = 0;
CHECK_TERMSIG;
CHECK_WAIT_INTR;
if (got_pid < 0 && errno == ECHILD)
@@ -843,7 +860,9 @@ wait_for (pid)
programming_error ("wait_for(%ld): %s", (long)pid, strerror(errno));
else if (got_pid > 0)
set_pid_status (got_pid, status);
+ waiting_for_child = 1;
}
+ waiting_for_child = 0;
if (got_pid > 0)
set_pid_status (got_pid, status);
@@ -1008,9 +1027,10 @@ without_job_control ()
}
int
-get_job_by_pid (pid, block)
+get_job_by_pid (pid, block, ignore)
pid_t pid;
int block;
+ PROCESS **ignore;
{
int i;
diff --git a/parse.y b/parse.y
index 07e6e3e4..df1231da 100644
--- a/parse.y
+++ b/parse.y
@@ -1,6 +1,6 @@
/* parse.y - Yacc grammar for bash. */
-/* Copyright (C) 1989-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -71,7 +71,7 @@
#if defined (JOB_CONTROL)
# include "jobs.h"
#else
-extern int cleanup_dead_jobs __P((void));
+extern int cleanup_dead_jobs PARAMS((void));
#endif /* JOB_CONTROL */
#if defined (ALIAS)
@@ -131,90 +131,90 @@ extern int errno;
/* **************************************************************** */
#ifdef DEBUG
-static void debug_parser __P((int));
+static void debug_parser PARAMS((int));
#endif
-static int yy_getc __P((void));
-static int yy_ungetc __P((int));
+static int yy_getc PARAMS((void));
+static int yy_ungetc PARAMS((int));
#if defined (READLINE)
-static int yy_readline_get __P((void));
-static int yy_readline_unget __P((int));
+static int yy_readline_get PARAMS((void));
+static int yy_readline_unget PARAMS((int));
#endif
-static int yy_string_get __P((void));
-static int yy_string_unget __P((int));
-static void rewind_input_string __P((void));
-static int yy_stream_get __P((void));
-static int yy_stream_unget __P((int));
+static int yy_string_get PARAMS((void));
+static int yy_string_unget PARAMS((int));
+static void rewind_input_string PARAMS((void));
+static int yy_stream_get PARAMS((void));
+static int yy_stream_unget PARAMS((int));
-static int shell_getc __P((int));
-static void shell_ungetc __P((int));
-static void discard_until __P((int));
+static int shell_getc PARAMS((int));
+static void shell_ungetc PARAMS((int));
+static void discard_until PARAMS((int));
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
-static void push_string __P((char *, int, alias_t *));
-static void pop_string __P((void));
-static void free_string_list __P((void));
+static void push_string PARAMS((char *, int, alias_t *));
+static void pop_string PARAMS((void));
+static void free_string_list PARAMS((void));
#endif
-static char *read_a_line __P((int));
+static char *read_a_line PARAMS((int));
-static int reserved_word_acceptable __P((int));
-static int yylex __P((void));
+static int reserved_word_acceptable PARAMS((int));
+static int yylex PARAMS((void));
-static void push_heredoc __P((REDIRECT *));
-static char *mk_alexpansion __P((char *));
-static int alias_expand_token __P((char *));
-static int time_command_acceptable __P((void));
-static int special_case_tokens __P((char *));
-static int read_token __P((int));
-static char *parse_matched_pair __P((int, int, int, int *, int));
-static char *parse_comsub __P((int, int, int, int *, int));
+static void push_heredoc PARAMS((REDIRECT *));
+static char *mk_alexpansion PARAMS((char *));
+static int alias_expand_token PARAMS((char *));
+static int time_command_acceptable PARAMS((void));
+static int special_case_tokens PARAMS((char *));
+static int read_token PARAMS((int));
+static char *parse_matched_pair PARAMS((int, int, int, int *, int));
+static char *parse_comsub PARAMS((int, int, int, int *, int));
#if defined (ARRAY_VARS)
-static char *parse_compound_assignment __P((int *));
+static char *parse_compound_assignment PARAMS((int *));
#endif
#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND)
-static int parse_dparen __P((int));
-static int parse_arith_cmd __P((char **, int));
+static int parse_dparen PARAMS((int));
+static int parse_arith_cmd PARAMS((char **, int));
#endif
#if defined (COND_COMMAND)
-static void cond_error __P((void));
-static COND_COM *cond_expr __P((void));
-static COND_COM *cond_or __P((void));
-static COND_COM *cond_and __P((void));
-static COND_COM *cond_term __P((void));
-static int cond_skip_newlines __P((void));
-static COMMAND *parse_cond_command __P((void));
+static void cond_error PARAMS((void));
+static COND_COM *cond_expr PARAMS((void));
+static COND_COM *cond_or PARAMS((void));
+static COND_COM *cond_and PARAMS((void));
+static COND_COM *cond_term PARAMS((void));
+static int cond_skip_newlines PARAMS((void));
+static COMMAND *parse_cond_command PARAMS((void));
#endif
#if defined (ARRAY_VARS)
-static int token_is_assignment __P((char *, int));
-static int token_is_ident __P((char *, int));
+static int token_is_assignment PARAMS((char *, int));
+static int token_is_ident PARAMS((char *, int));
#endif
-static int read_token_word __P((int));
-static void discard_parser_constructs __P((int));
+static int read_token_word PARAMS((int));
+static void discard_parser_constructs PARAMS((int));
-static char *error_token_from_token __P((int));
-static char *error_token_from_text __P((void));
-static void print_offending_line __P((void));
-static void report_syntax_error __P((char *));
+static char *error_token_from_token PARAMS((int));
+static char *error_token_from_text PARAMS((void));
+static void print_offending_line PARAMS((void));
+static void report_syntax_error PARAMS((char *));
-static void handle_eof_input_unit __P((void));
-static void prompt_again __P((void));
+static void handle_eof_input_unit PARAMS((void));
+static void prompt_again PARAMS((void));
#if 0
-static void reset_readline_prompt __P((void));
+static void reset_readline_prompt PARAMS((void));
#endif
-static void print_prompt __P((void));
+static void print_prompt PARAMS((void));
#if defined (HANDLE_MULTIBYTE)
-static void set_line_mbstate __P((void));
+static void set_line_mbstate PARAMS((void));
static char *shell_input_line_property = NULL;
static size_t shell_input_line_propsize = 0;
#else
# define set_line_mbstate()
#endif
-extern int yyerror __P((const char *));
+extern int yyerror PARAMS((const char *));
#ifdef DEBUG
extern int yydebug;
@@ -420,9 +420,9 @@ inputunit: simple_list simple_list_terminator
global_command = (COMMAND *)NULL;
if (last_command_exit_value == 0)
last_command_exit_value = EX_BADUSAGE; /* force error return */
- handle_eof_input_unit ();
if (interactive && parse_and_execute_level == 0)
{
+ handle_eof_input_unit ();
YYACCEPT;
}
else
@@ -926,12 +926,12 @@ case_command: CASE WORD newline_list IN newline_list ESAC
function_def: WORD '(' ')' newline_list function_body
{ $$ = make_function_def ($1, $5, function_dstart, function_bstart); }
-
| FUNCTION WORD '(' ')' newline_list function_body
{ $$ = make_function_def ($2, $6, function_dstart, function_bstart); }
-
- | FUNCTION WORD newline_list function_body
- { $$ = make_function_def ($2, $4, function_dstart, function_bstart); }
+ | FUNCTION WORD function_body
+ { $$ = make_function_def ($2, $3, function_dstart, function_bstart); }
+ | FUNCTION WORD '\n' newline_list function_body
+ { $$ = make_function_def ($2, $5, function_dstart, function_bstart); }
;
function_body: shell_command
@@ -1314,6 +1314,8 @@ timespec: TIME
{ $$ = CMD_TIME_PIPELINE; }
| TIME TIMEOPT
{ $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+ | TIME TIMEIGN
+ { $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
| TIME TIMEOPT TIMEIGN
{ $$ = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
;
@@ -1479,7 +1481,6 @@ yy_readline_get ()
old_sigint = IMPOSSIBLE_TRAP_HANDLER;
if (signal_is_ignored (SIGINT) == 0)
{
- /* interrupt_immediately++; */
old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
}
@@ -1490,7 +1491,6 @@ yy_readline_get ()
CHECK_TERMSIG;
if (signal_is_ignored (SIGINT) == 0)
{
- /* interrupt_immediately--; */
if (old_sigint != IMPOSSIBLE_TRAP_HANDLER)
set_signal_handler (SIGINT, old_sigint);
}
@@ -1546,6 +1546,16 @@ with_input_from_stdin ()
}
}
+/* Will we be collecting another input line and printing a prompt? This uses
+ different conditions than SHOULD_PROMPT(), since readline allows a user to
+ embed a newline in the middle of the line it collects, which the parser
+ will interpret as a line break and command delimiter. */
+int
+parser_will_prompt ()
+{
+ return (current_readline_line == 0 || current_readline_line[current_readline_line_index] == 0);
+}
+
#else /* !READLINE */
void
@@ -1634,9 +1644,9 @@ rewind_input_string ()
/* These two functions used to test the value of the HAVE_RESTARTABLE_SYSCALLS
define, and just use getc/ungetc if it was defined, but since bash
- installs its signal handlers without the SA_RESTART flag, some signals
- (like SIGCHLD, SIGWINCH, etc.) received during a read(2) will not cause
- the read to be restarted. We need to restart it ourselves. */
+ installs most of its signal handlers without the SA_RESTART flag, some
+ signals received during a read(2) will not cause the read to be restarted.
+ We will need to restart it ourselves. */
static int
yy_stream_get ()
@@ -1829,6 +1839,7 @@ restore_token_state (ts)
#define PSH_ALIAS 0x01
#define PSH_DPAREN 0x02
#define PSH_SOURCE 0x04
+#define PSH_ARRAY 0x08
typedef struct string_saver {
struct string_saver *next;
@@ -2260,6 +2271,8 @@ static struct dstack temp_dstack = { (char *)NULL, 0, 0 };
shell_ungetc when we're at the start of a line. */
static int eol_ungetc_lookahead = 0;
+static int unquoted_backslash = 0;
+
static int
shell_getc (remove_quoted_newline)
int remove_quoted_newline;
@@ -2313,7 +2326,7 @@ shell_getc (remove_quoted_newline)
i = truncating = 0;
shell_input_line_terminator = 0;
- /* If the shell is interatctive, but not currently printing a prompt
+ /* If the shell is interactive, but not currently printing a prompt
(interactive_shell && interactive == 0), we don't want to print
notifies or cleanup the jobs -- we want to defer it until we do
print the next prompt. */
@@ -2520,15 +2533,36 @@ shell_getc (remove_quoted_newline)
shell_input_line[shell_input_line_len] = '\n';
shell_input_line[shell_input_line_len + 1] = '\0';
- set_line_mbstate ();
+#if 0
+ set_line_mbstate (); /* XXX - this is wasteful */
+#else
+# if defined (HANDLE_MULTIBYTE)
+ /* This is kind of an abstraction violation, but there's no need to
+ go through the entire shell_input_line again with a call to
+ set_line_mbstate(). */
+ if (shell_input_line_len + 2 > shell_input_line_propsize)
+ {
+ shell_input_line_propsize = shell_input_line_len + 2;
+ shell_input_line_property = (char *)xrealloc (shell_input_line_property,
+ shell_input_line_propsize);
+ }
+ shell_input_line_property[shell_input_line_len] = 1;
+# endif
+#endif
}
}
next_alias_char:
+ if (shell_input_line_index == 0)
+ unquoted_backslash = 0;
+
uc = shell_input_line[shell_input_line_index];
if (uc)
- shell_input_line_index++;
+ {
+ unquoted_backslash = unquoted_backslash == 0 && uc == '\\';
+ shell_input_line_index++;
+ }
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
/* If UC is NULL, we have reached the end of the current input string. If
@@ -2561,6 +2595,7 @@ next_alias_char:
shell_input_line_index > 0 &&
shellblank (shell_input_line[shell_input_line_index-1]) == 0 &&
shell_input_line[shell_input_line_index-1] != '\n' &&
+ unquoted_backslash == 0 &&
shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
(current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
{
@@ -2586,6 +2621,7 @@ pop_alias:
if (SHOULD_PROMPT ())
prompt_again ();
line_number++;
+
/* What do we do here if we're expanding an alias whose definition
includes an escaped newline? If that's the last character in the
alias expansion, we just pop the pushed string list (recall that
@@ -3020,7 +3056,7 @@ time_command_acceptable ()
`}' is recognized if there is an unclosed `{' present.
`-p' is returned as TIMEOPT if the last read token was TIME.
- `--' is returned as TIMEIGN if the last read token was TIMEOPT.
+ `--' is returned as TIMEIGN if the last read token was TIME or TIMEOPT.
']]' is returned as COND_END if the parser is currently parsing
a conditional expression ((parser_state & PST_CONDEXPR) != 0)
@@ -3136,6 +3172,9 @@ special_case_tokens (tokstr)
/* Handle -p after `time'. */
if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2])
return (TIMEOPT);
+ /* Handle -- after `time'. */
+ if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2])
+ return (TIMEIGN);
/* Handle -- after `time -p'. */
if (last_read_token == TIMEOPT && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2])
return (TIMEIGN);
@@ -3430,7 +3469,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
#if defined (PROCESS_SUBSTITUTION)
/* Check for the constructs which introduce process substitution.
Shells running in `posix mode' don't do process substitution. */
- if MBTEST(posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) /*)*/
+ if MBTEST((character != '>' && character != '<') || peek_char != '(') /*)*/
#endif /* PROCESS_SUBSTITUTION */
return (character);
}
@@ -3867,7 +3906,7 @@ parse_comsub (qc, open, close, lenp, flags)
int *lenp, flags;
{
int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
- int nestlen, ttranslen, start_lineno;
+ int nestlen, ttranslen, start_lineno, orig_histexp;
char *ret, *nestret, *ttrans, *heredelim;
int retind, retsize, rflags, hdlen;
@@ -3881,6 +3920,9 @@ parse_comsub (qc, open, close, lenp, flags)
/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/
count = 1;
tflags = LEX_RESWDOK;
+#if defined (BANG_HISTORY)
+ orig_histexp = history_expansion_inhibited;
+#endif
if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0)
tflags |= LEX_CKCASE;
@@ -3907,6 +3949,9 @@ comsub_readchar:
if (ch == EOF)
{
eof_error:
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
free (ret);
FREE (heredelim);
parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
@@ -3925,6 +3970,9 @@ eof_error:
{
tflags &= ~LEX_HEREDELIM;
tflags |= LEX_INHEREDOC;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
lex_firstind = retind + 1;
}
else if (tflags & LEX_INHEREDOC)
@@ -3940,6 +3988,9 @@ eof_error:
free (heredelim);
heredelim = 0;
lex_firstind = -1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
}
else
lex_firstind = retind + 1;
@@ -3950,8 +4001,9 @@ eof_error:
if (ch == '\n' && SHOULD_PROMPT ())
prompt_again ();
- /* XXX -- possibly allow here doc to be delimited by ending right
- paren. */
+ /* XXX -- we currently allow here doc to be delimited by ending right
+ paren in default mode and posix mode. To change posix mode, change
+ the #if 1 to #if 0 below */
if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
{
int tind;
@@ -3959,13 +4011,23 @@ eof_error:
tind = lex_firstind;
while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
tind++;
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
+#if 1
+ if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
+#else
+ /* Posix-mode shells require the newline after the here-document
+ delimiter. */
+ if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) &&
+ posixly_correct == 0)
+#endif
{
tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/
free (heredelim);
heredelim = 0;
lex_firstind = -1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
}
}
@@ -4076,6 +4138,9 @@ eof_error:
tflags |= LEX_INHEREDOC;
tflags &= ~LEX_HEREDELIM;
lex_firstind = retind + 1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
}
#endif
else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch))
@@ -4095,6 +4160,9 @@ eof_error:
tflags |= LEX_INHEREDOC;
tflags &= ~LEX_HEREDELIM;
lex_firstind = retind + 1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
}
else
lex_firstind = -1;
@@ -4365,6 +4433,9 @@ eof_error:
tflags &= ~LEX_WASDOL;
}
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
FREE (heredelim);
ret[retind] = '\0';
if (lenp)
@@ -4383,7 +4454,7 @@ xparse_dolparen (base, string, indp, flags)
{
sh_parser_state_t ps;
sh_input_line_state_t ls;
- int orig_ind, nc, sflags, orig_eof_token;
+ int orig_ind, nc, sflags, orig_eof_token, start_lineno;
char *ret, *ep, *ostring;
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
STRING_SAVER *saved_pushed_strings;
@@ -4392,6 +4463,7 @@ xparse_dolparen (base, string, indp, flags)
/*debug_parser(1);*/
orig_ind = *indp;
ostring = string;
+ start_lineno = line_number;
if (*string == 0)
{
@@ -4403,7 +4475,7 @@ xparse_dolparen (base, string, indp, flags)
return ret;
}
-/*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
+/*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
if (flags & SX_NOLONGJMP)
sflags |= SEVAL_NOLONGJMP;
@@ -4427,12 +4499,14 @@ xparse_dolparen (base, string, indp, flags)
if (current_token == shell_eof_token)
yyclearin; /* might want to clear lookahead token unconditionally */
- shell_eof_token = orig_eof_token;
- restore_parser_state (&ps);
reset_parser ();
- /* reset_parser clears shell_input_line and associated variables */
+ /* reset_parser() clears shell_input_line and associated variables, including
+ parser_state, so we want to reset things, then restore what we need. */
restore_input_line_state (&ls);
+ shell_eof_token = orig_eof_token;
+ restore_parser_state (&ps);
+
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
pushed_string_list = saved_pushed_strings;
#endif
@@ -4445,6 +4519,8 @@ xparse_dolparen (base, string, indp, flags)
if (nc < 0)
{
clear_shell_input_line (); /* XXX */
+ if (bash_input.type != st_string) /* paranoia */
+ parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN);
jump_to_top_level (-nc); /* XXX */
}
@@ -4459,13 +4535,14 @@ xparse_dolparen (base, string, indp, flags)
if (ep[-1] != '\n')
itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep);
#endif
+
while (ep > ostring && ep[-1] == '\n') ep--;
}
nc = ep - ostring;
*indp = ep - base - 1;
- /*(*/
+ /*((*/
#if DEBUG
if (base[*indp] != ')')
itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
@@ -4473,6 +4550,13 @@ xparse_dolparen (base, string, indp, flags)
itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
#endif
+ if (base[*indp] != ')')
+ {
+ /*(*/
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
+ jump_to_top_level (DISCARD);
+ }
+
if (flags & SX_NOALLOC)
return (char *)NULL;
@@ -6233,7 +6317,8 @@ report_syntax_error (message)
parser_error (line_number, "%s", message);
if (interactive && EOF_Reached)
EOF_Reached = 0;
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -6254,7 +6339,8 @@ report_syntax_error (message)
if (interactive == 0)
print_offending_line ();
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -6285,7 +6371,8 @@ report_syntax_error (message)
EOF_Reached = 0;
}
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
}
/* ??? Needed function. ??? We have to be able to discard the constructs
@@ -6352,6 +6439,9 @@ handle_eof_input_unit ()
/* In this case EOF should exit the shell. Do it now. */
reset_parser ();
+
+ last_shell_builtin = this_shell_builtin;
+ this_shell_builtin = exit_builtin;
exit_builtin ((WORD_LIST *)NULL);
}
else
@@ -6383,7 +6473,7 @@ parse_string_to_word_list (s, flags, whom)
WORD_LIST *wl;
int tok, orig_current_token, orig_line_number, orig_input_terminator;
int orig_line_count;
- int old_echo_input, old_expand_aliases;
+ int old_echo_input, old_expand_aliases, ea;
#if defined (HISTORY)
int old_remember_on_history, old_history_expansion_inhibited;
#endif
@@ -6403,6 +6493,10 @@ parse_string_to_word_list (s, flags, whom)
old_expand_aliases = expand_aliases;
push_stream (1);
+#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
+ if (ea = expanding_alias ())
+ parser_save_alias ();
+#endif
last_read_token = WORD; /* WORD to allow reserved words here */
current_command_line_count = 0;
echo_input_at_read = expand_aliases = 0;
@@ -6437,6 +6531,11 @@ parse_string_to_word_list (s, flags, whom)
last_read_token = '\n';
pop_stream ();
+#if 0 /* TAG: bash-5.2 */
+ if (ea)
+ parser_restore_alias ();
+#endif
+
#if defined (HISTORY)
remember_on_history = old_remember_on_history;
# if defined (BANG_HISTORY)
@@ -6455,7 +6554,7 @@ parse_string_to_word_list (s, flags, whom)
if (wl == &parse_string_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
else
@@ -6519,7 +6618,7 @@ parse_compound_assignment (retlenp)
if (wl == &parse_string_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
last_read_token = '\n'; /* XXX */
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
@@ -6678,10 +6777,20 @@ save_input_line_state (ls)
ls->input_line_len = shell_input_line_len;
ls->input_line_index = shell_input_line_index;
+#if defined (HANDLE_MULTIBYTE)
+ ls->input_property = shell_input_line_property;
+ ls->input_propsize = shell_input_line_propsize;
+#endif
+
/* force reallocation */
shell_input_line = 0;
shell_input_line_size = shell_input_line_len = shell_input_line_index = 0;
+#if defined (HANDLE_MULTIBYTE)
+ shell_input_line_property = 0;
+ shell_input_line_propsize = 0;
+#endif
+
return ls;
}
@@ -6695,7 +6804,15 @@ restore_input_line_state (ls)
shell_input_line_len = ls->input_line_len;
shell_input_line_index = ls->input_line_index;
+#if defined (HANDLE_MULTIBYTE)
+ FREE (shell_input_line_property);
+ shell_input_line_property = ls->input_property;
+ shell_input_line_propsize = ls->input_propsize;
+#endif
+
+#if 0
set_line_mbstate ();
+#endif
}
/************************************************
@@ -6716,10 +6833,11 @@ set_line_mbstate ()
size_t i, previ, len;
mbstate_t mbs, prevs;
size_t mbclen;
+ int ilen;
if (shell_input_line == NULL)
return;
- len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */
+ len = STRLEN (shell_input_line); /* XXX - shell_input_line_len ? */
if (len == 0)
return;
if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1)
@@ -6734,12 +6852,21 @@ set_line_mbstate ()
shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize);
}
+ if (locale_mb_cur_max == 1)
+ {
+ memset (shell_input_line_property, 1, len);
+ return;
+ }
+
/* XXX - use whether or not we are in a UTF-8 locale to avoid calls to
mbrlen */
- memset (&prevs, '\0', sizeof (mbstate_t));
+ if (locale_utf8locale == 0)
+ memset (&prevs, '\0', sizeof (mbstate_t));
+
for (i = previ = 0; i < len; i++)
{
- mbs = prevs;
+ if (locale_utf8locale == 0)
+ mbs = prevs;
c = shell_input_line[i];
if (c == EOF)
@@ -6750,10 +6877,20 @@ set_line_mbstate ()
break;
}
- /* I'd love to take more advantage of UTF-8's properties in a UTF-8
- locale, but mbrlen changes the mbstate_t on every call even when
- presented with single-byte characters. */
- mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
+ if (locale_utf8locale)
+ {
+ if ((unsigned char)shell_input_line[previ] < 128) /* i != previ */
+ mbclen = 1;
+ else
+ {
+ ilen = utf8_mblen (shell_input_line + previ, i - previ + 1);
+ mbclen = (ilen == -1) ? (size_t)-1
+ : ((ilen == -2) ? (size_t)-2 : (size_t)ilen);
+ }
+ }
+ else
+ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
+
if (mbclen == 1 || mbclen == (size_t)-1)
{
mbclen = 1;
@@ -6765,11 +6902,11 @@ set_line_mbstate ()
{
mbclen = 0;
previ = i + 1;
- prevs = mbs;
+ if (locale_utf8locale == 0)
+ prevs = mbs;
}
else
{
- /* XXX - what to do if mbrlen returns 0? (null wide character) */
size_t j;
for (j = i; j < len; j++)
shell_input_line_property[j] = 1;
diff --git a/parser-built b/parser-built
index 86c8e505..41bdea08 100644
--- a/parser-built
+++ b/parser-built
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.6.4. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,6 +31,10 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
#ifndef YY_YY_Y_TAB_H_INCLUDED
# define YY_YY_Y_TAB_H_INCLUDED
/* Debug traces. */
@@ -40,61 +45,69 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#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
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ IF = 258, /* IF */
+ THEN = 259, /* THEN */
+ ELSE = 260, /* ELSE */
+ ELIF = 261, /* ELIF */
+ FI = 262, /* FI */
+ CASE = 263, /* CASE */
+ ESAC = 264, /* ESAC */
+ FOR = 265, /* FOR */
+ SELECT = 266, /* SELECT */
+ WHILE = 267, /* WHILE */
+ UNTIL = 268, /* UNTIL */
+ DO = 269, /* DO */
+ DONE = 270, /* DONE */
+ FUNCTION = 271, /* FUNCTION */
+ COPROC = 272, /* COPROC */
+ COND_START = 273, /* COND_START */
+ COND_END = 274, /* COND_END */
+ COND_ERROR = 275, /* COND_ERROR */
+ IN = 276, /* IN */
+ BANG = 277, /* BANG */
+ TIME = 278, /* TIME */
+ TIMEOPT = 279, /* TIMEOPT */
+ TIMEIGN = 280, /* TIMEIGN */
+ WORD = 281, /* WORD */
+ ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */
+ REDIR_WORD = 283, /* REDIR_WORD */
+ NUMBER = 284, /* NUMBER */
+ ARITH_CMD = 285, /* ARITH_CMD */
+ ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */
+ COND_CMD = 287, /* COND_CMD */
+ AND_AND = 288, /* AND_AND */
+ OR_OR = 289, /* OR_OR */
+ GREATER_GREATER = 290, /* GREATER_GREATER */
+ LESS_LESS = 291, /* LESS_LESS */
+ LESS_AND = 292, /* LESS_AND */
+ LESS_LESS_LESS = 293, /* LESS_LESS_LESS */
+ GREATER_AND = 294, /* GREATER_AND */
+ SEMI_SEMI = 295, /* SEMI_SEMI */
+ SEMI_AND = 296, /* SEMI_AND */
+ SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */
+ LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */
+ AND_GREATER = 299, /* AND_GREATER */
+ AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */
+ LESS_GREATER = 301, /* LESS_GREATER */
+ GREATER_BAR = 302, /* GREATER_BAR */
+ BAR_AND = 303, /* BAR_AND */
+ yacc_EOF = 304 /* yacc_EOF */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define IF 258
#define THEN 259
#define ELSE 260
@@ -145,10 +158,9 @@ extern int yydebug;
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910 */
+#line 328 "/Users/chet/src/bash/src/parse.y"
WORD_DESC *word; /* the word that we read. */
int number; /* the number that we read. */
@@ -158,9 +170,9 @@ union YYSTYPE
ELEMENT element;
PATTERN_LIST *pattern;
-#line 162 "y.tab.h" /* yacc.c:1910 */
-};
+#line 174 "y.tab.h"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
diff --git a/parser.h b/parser.h
index 6d08915d..59bddaca 100644
--- a/parser.h
+++ b/parser.h
@@ -1,7 +1,7 @@
/* parser.h -- Everything you wanted to know about the parser, but were
afraid to ask. */
-/* Copyright (C) 1995-2010 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/patchlevel.h b/patchlevel.h
index f0ee56e4..1cd7c96c 100644
--- a/patchlevel.h
+++ b/patchlevel.h
@@ -25,6 +25,6 @@
regexp `^#define[ ]*PATCHLEVEL', since that's what support/mkversion.sh
looks for to find the patch level (for the sccs version string). */
-#define PATCHLEVEL 18
+#define PATCHLEVEL 0
#endif /* _PATCHLEVEL_H_ */
diff --git a/pathexp.c b/pathexp.c
index c1bf2d89..6e7ef283 100644
--- a/pathexp.c
+++ b/pathexp.c
@@ -1,6 +1,6 @@
/* pathexp.c -- The shell interface to the globbing library. */
-/* Copyright (C) 1995-2014 Free Software Foundation, Inc.
+/* Copyright (C) 1995-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -38,13 +38,13 @@
#include <glob/strmatch.h>
-static int glob_name_is_acceptable __P((const char *));
-static void ignore_globbed_names __P((char **, sh_ignore_func_t *));
-static char *split_ignorespec __P((char *, int *));
+static int glob_name_is_acceptable PARAMS((const char *));
+static void ignore_globbed_names PARAMS((char **, sh_ignore_func_t *));
+static char *split_ignorespec PARAMS((char *, int *));
#if defined (USE_POSIX_GLOB_LIBRARY)
# include <glob.h>
-typedef int posix_glob_errfunc_t __P((const char *, int));
+typedef int posix_glob_errfunc_t PARAMS((const char *, int));
#else
# include <glob/glob.h>
#endif
@@ -58,7 +58,10 @@ int extended_glob = EXTGLOB_DEFAULT;
/* Control enabling special handling of `**' */
int glob_star = 0;
-/* Return nonzero if STRING has any unquoted special globbing chars in it. */
+/* Return nonzero if STRING has any unquoted special globbing chars in it.
+ This is supposed to be called when pathname expansion is performed, so
+ it implements the rules in Posix 2.13.3, specifically that an unquoted
+ slash cannot appear in a bracket expression. */
int
unquoted_glob_pattern_p (string)
register char *string;
@@ -85,10 +88,14 @@ unquoted_glob_pattern_p (string)
continue;
case ']':
- if (open)
+ if (open) /* XXX - if --open == 0? */
return (1);
continue;
+ case '/':
+ if (open)
+ open = 0;
+
case '+':
case '@':
case '!':
@@ -97,8 +104,8 @@ unquoted_glob_pattern_p (string)
continue;
/* A pattern can't end with a backslash, but a backslash in the pattern
- can be removed by the matching engine, so we have to run it through
- globbing. */
+ can be special to the matching engine, so we note it in case we
+ need it later. */
case '\\':
if (*string != '\0' && *string != '/')
{
@@ -106,6 +113,11 @@ unquoted_glob_pattern_p (string)
string++;
continue;
}
+ else if (open && *string == '/')
+ {
+ string++; /* quoted slashes in bracket expressions are ok */
+ continue;
+ }
else if (*string == 0)
return (0);
@@ -125,7 +137,11 @@ unquoted_glob_pattern_p (string)
#endif
}
+#if 0
return (bsquote ? 2 : 0);
+#else
+ return (0);
+#endif
}
/* Return 1 if C is a character that is `special' in a POSIX ERE and needs to
@@ -227,6 +243,7 @@ quote_string_for_globbing (pathname, qflags)
}
else if (pathname[i] == CTLESC)
{
+convert_to_backslash:
if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
continue;
/* What to do if preceding char is backslash? */
@@ -328,7 +345,7 @@ quote_string_for_globbing (pathname, qflags)
else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP) == 0)
{
/* XXX - if not quoting regexp, use backslash as quote char. Should
- we just pass it through without treating it as special? That is
+ We just pass it through without treating it as special? That is
what ksh93 seems to do. */
/* If we want to pass through backslash unaltered, comment out these
@@ -342,6 +359,16 @@ quote_string_for_globbing (pathname, qflags)
even when the first CTLESC is preceded by a backslash. */
if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC && (pathname[i+1] == CTLESC || pathname[i+1] == CTLNUL))
i++; /* skip over the CTLESC */
+ else if ((qflags & QGLOB_CTLESC) && pathname[i] == CTLESC)
+ /* A little more general: if there is an unquoted backslash in the
+ pattern and we are handling quoted characters in the pattern,
+ convert the CTLESC to backslash and add the next character on
+ the theory that the backslash will quote the next character
+ but it would be inconsistent not to replace the CTLESC with
+ another backslash here. We can't tell at this point whether the
+ CTLESC comes from a backslash or other form of quoting in the
+ original pattern. */
+ goto convert_to_backslash;
}
else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP))
last_was_backslash = 1;
@@ -381,8 +408,9 @@ quote_globbing_chars (string)
/* Call the glob library to do globbing on PATHNAME. */
char **
-shell_glob_filename (pathname)
+shell_glob_filename (pathname, qflags)
const char *pathname;
+ int qflags;
{
#if defined (USE_POSIX_GLOB_LIBRARY)
register int i;
@@ -390,7 +418,7 @@ shell_glob_filename (pathname)
glob_t filenames;
int glob_flags;
- temp = quote_string_for_globbing (pathname, QGLOB_FILENAME);
+ temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags);
filenames.gl_offs = 0;
@@ -420,7 +448,7 @@ shell_glob_filename (pathname)
if (should_ignore_glob_matches ())
ignore_glob_matches (results);
if (results && results[0])
- strvec_sort (results);
+ strvec_sort (results, 1); /* posix sort */
else
{
FREE (results);
@@ -433,11 +461,11 @@ shell_glob_filename (pathname)
#else /* !USE_POSIX_GLOB_LIBRARY */
char *temp, **results;
- int gflags;
+ int gflags, quoted_pattern;
noglob_dot_filenames = glob_dot_filenames == 0;
- temp = quote_string_for_globbing (pathname, QGLOB_FILENAME);
+ temp = quote_string_for_globbing (pathname, QGLOB_FILENAME|qflags);
gflags = glob_star ? GX_GLOBSTAR : 0;
results = glob_filename (temp, gflags);
free (temp);
@@ -447,7 +475,7 @@ shell_glob_filename (pathname)
if (should_ignore_glob_matches ())
ignore_glob_matches (results);
if (results && results[0])
- strvec_sort (results);
+ strvec_sort (results, 1); /* posix sort */
else
{
FREE (results);
@@ -500,10 +528,18 @@ glob_name_is_acceptable (name)
const char *name;
{
struct ign *p;
+ char *n;
int flags;
- /* . and .. are never matched */
- if (name[0] == '.' && (name[1] == '\0' || (name[1] == '.' && name[2] == '\0')))
+ /* . and .. are never matched. We extend this to the terminal component of a
+ pathname. */
+ n = strrchr (name, '/');
+ if (n == 0 || n[1] == 0)
+ n = (char *)name;
+ else
+ n++;
+
+ if (n[0] == '.' && (n[1] == '\0' || (n[1] == '.' && n[2] == '\0')))
return (0);
flags = FNM_PATHNAME | FNMATCH_EXTFLAG | FNMATCH_NOCASEGLOB;
diff --git a/pathexp.h b/pathexp.h
index adef8b2a..7ed0d2ad 100644
--- a/pathexp.h
+++ b/pathexp.h
@@ -1,6 +1,6 @@
/* pathexp.h -- The shell interface to the globbing library. */
-/* Copyright (C) 1987-2015 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,7 +52,7 @@ extern int extended_glob;
extern int glob_star;
extern int match_ignore_case; /* doesn't really belong here */
-extern int unquoted_glob_pattern_p __P((char *));
+extern int unquoted_glob_pattern_p PARAMS((char *));
/* PATHNAME can contain characters prefixed by CTLESC; this indicates
that the character is to be quoted. We quote it here in the style
@@ -64,13 +64,15 @@ extern int unquoted_glob_pattern_p __P((char *));
pattern while executing a case statement), flags should include
QGLOB_CVTNULL. If flags includes QGLOB_FILENAME, appropriate quoting
to match a filename should be performed. */
-extern char *quote_string_for_globbing __P((const char *, int));
+extern char *quote_string_for_globbing PARAMS((const char *, int));
-extern int glob_char_p __P((const char *));
-extern char *quote_globbing_chars __P((const char *));
+extern int glob_char_p PARAMS((const char *));
+extern char *quote_globbing_chars PARAMS((const char *));
-/* Call the glob library to do globbing on PATHNAME. */
-extern char **shell_glob_filename __P((const char *));
+/* Call the glob library to do globbing on PATHNAME. FLAGS is additional
+ flags to pass to QUOTE_STRING_FOR_GLOBBING, mostly having to do with
+ whether or not we've already performed quote removal. */
+extern char **shell_glob_filename PARAMS((const char *, int));
/* Filename completion ignore. Used to implement the "fignore" facility of
tcsh, GLOBIGNORE (like ksh-93 FIGNORE), and EXECIGNORE.
@@ -86,7 +88,7 @@ struct ign {
int len, flags;
};
-typedef int sh_iv_item_func_t __P((struct ign *));
+typedef int sh_iv_item_func_t PARAMS((struct ign *));
struct ignorevar {
char *varname; /* FIGNORE, GLOBIGNORE, or EXECIGNORE */
@@ -96,10 +98,10 @@ struct ignorevar {
sh_iv_item_func_t *item_func; /* Called when each item is parsed from $`varname' */
};
-extern void setup_ignore_patterns __P((struct ignorevar *));
+extern void setup_ignore_patterns PARAMS((struct ignorevar *));
-extern void setup_glob_ignore __P((char *));
-extern int should_ignore_glob_matches __P((void));
-extern void ignore_glob_matches __P((char **));
+extern void setup_glob_ignore PARAMS((char *));
+extern int should_ignore_glob_matches PARAMS((void));
+extern void ignore_glob_matches PARAMS((char **));
#endif
diff --git a/pcomplete.c b/pcomplete.c
index 5014c21a..fe1a0320 100644
--- a/pcomplete.c
+++ b/pcomplete.c
@@ -1,6 +1,6 @@
/* pcomplete.c - functions to generate lists of matches for programmable completion. */
-/* Copyright (C) 1999-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -37,7 +37,7 @@
# include <varargs.h>
#endif
-#include <sys/time.h>
+#include "posixtime.h"
#include <stdio.h>
#include "bashansi.h"
@@ -79,7 +79,7 @@
typedef SHELL_VAR **SVFUNC ();
#ifndef HAVE_STRPBRK
-extern char *strpbrk __P((char *, char *));
+extern char *strpbrk PARAMS((char *, char *));
#endif
extern STRING_INT_ALIST word_token_alist[];
@@ -91,59 +91,59 @@ static void debug_printf (const char *, ...) __attribute__((__format__ (printf,
#endif
#endif /* DEBUG */
-static int it_init_joblist __P((ITEMLIST *, int));
-
-static int it_init_aliases __P((ITEMLIST *));
-static int it_init_arrayvars __P((ITEMLIST *));
-static int it_init_bindings __P((ITEMLIST *));
-static int it_init_builtins __P((ITEMLIST *));
-static int it_init_disabled __P((ITEMLIST *));
-static int it_init_enabled __P((ITEMLIST *));
-static int it_init_exported __P((ITEMLIST *));
-static int it_init_functions __P((ITEMLIST *));
-static int it_init_helptopics __P((ITEMLIST *));
-static int it_init_hostnames __P((ITEMLIST *));
-static int it_init_jobs __P((ITEMLIST *));
-static int it_init_running __P((ITEMLIST *));
-static int it_init_stopped __P((ITEMLIST *));
-static int it_init_keywords __P((ITEMLIST *));
-static int it_init_signals __P((ITEMLIST *));
-static int it_init_variables __P((ITEMLIST *));
-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 *, const char *));
-
-static void init_itemlist_from_varlist __P((ITEMLIST *, SVFUNC *));
-
-static STRINGLIST *gen_matches_from_itemlist __P((ITEMLIST *, const char *));
-static STRINGLIST *gen_action_completions __P((COMPSPEC *, const char *));
-static STRINGLIST *gen_globpat_matches __P((COMPSPEC *, const char *));
-static STRINGLIST *gen_wordlist_matches __P((COMPSPEC *, const char *));
-static STRINGLIST *gen_shell_function_matches __P((COMPSPEC *, const char *,
+static int it_init_joblist PARAMS((ITEMLIST *, int));
+
+static int it_init_aliases PARAMS((ITEMLIST *));
+static int it_init_arrayvars PARAMS((ITEMLIST *));
+static int it_init_bindings PARAMS((ITEMLIST *));
+static int it_init_builtins PARAMS((ITEMLIST *));
+static int it_init_disabled PARAMS((ITEMLIST *));
+static int it_init_enabled PARAMS((ITEMLIST *));
+static int it_init_exported PARAMS((ITEMLIST *));
+static int it_init_functions PARAMS((ITEMLIST *));
+static int it_init_helptopics PARAMS((ITEMLIST *));
+static int it_init_hostnames PARAMS((ITEMLIST *));
+static int it_init_jobs PARAMS((ITEMLIST *));
+static int it_init_running PARAMS((ITEMLIST *));
+static int it_init_stopped PARAMS((ITEMLIST *));
+static int it_init_keywords PARAMS((ITEMLIST *));
+static int it_init_signals PARAMS((ITEMLIST *));
+static int it_init_variables PARAMS((ITEMLIST *));
+static int it_init_setopts PARAMS((ITEMLIST *));
+static int it_init_shopts PARAMS((ITEMLIST *));
+
+static int shouldexp_filterpat PARAMS((char *));
+static char *preproc_filterpat PARAMS((char *, const char *));
+
+static void init_itemlist_from_varlist PARAMS((ITEMLIST *, SVFUNC *));
+
+static STRINGLIST *gen_matches_from_itemlist PARAMS((ITEMLIST *, const char *));
+static STRINGLIST *gen_action_completions PARAMS((COMPSPEC *, const char *));
+static STRINGLIST *gen_globpat_matches PARAMS((COMPSPEC *, const char *));
+static STRINGLIST *gen_wordlist_matches PARAMS((COMPSPEC *, const char *));
+static STRINGLIST *gen_shell_function_matches PARAMS((COMPSPEC *, const char *,
const char *,
char *, int, WORD_LIST *,
int, int, int *));
-static STRINGLIST *gen_command_matches __P((COMPSPEC *, const char *,
+static STRINGLIST *gen_command_matches PARAMS((COMPSPEC *, const char *,
const char *,
char *, int, WORD_LIST *,
int, int));
-static STRINGLIST *gen_progcomp_completions __P((const char *, const char *,
+static STRINGLIST *gen_progcomp_completions PARAMS((const char *, const char *,
const char *,
int, int, int *, int *,
COMPSPEC **));
-static char *pcomp_filename_completion_function __P((const char *, int));
+static char *pcomp_filename_completion_function PARAMS((const char *, int));
#if defined (ARRAY_VARS)
-static SHELL_VAR *bind_comp_words __P((WORD_LIST *));
+static SHELL_VAR *bind_comp_words PARAMS((WORD_LIST *));
#endif
-static void bind_compfunc_variables __P((char *, int, WORD_LIST *, int, int));
-static void unbind_compfunc_variables __P((int));
-static WORD_LIST *build_arg_list __P((char *, const char *, const char *, WORD_LIST *, int));
-static WORD_LIST *command_line_to_word_list __P((char *, int, int, int *, int *));
+static void bind_compfunc_variables PARAMS((char *, int, WORD_LIST *, int, int));
+static void unbind_compfunc_variables PARAMS((int));
+static WORD_LIST *build_arg_list PARAMS((char *, const char *, const char *, WORD_LIST *, int));
+static WORD_LIST *command_line_to_word_list PARAMS((char *, int, int, int *, int *));
#ifdef DEBUG
static int progcomp_debug = 0;
@@ -1184,7 +1184,7 @@ gen_shell_function_matches (cs, cmd, text, line, ind, lwords, nw, cw, foundp)
/* XXX - should we filter the list of completions so only those matching
TEXT are returned? Right now, we do not. */
sl = strlist_create (0);
- sl->list = array_to_argv (a);
+ sl->list = array_to_argv (a, 0);
sl->list_len = sl->list_size = array_num_elements (a);
}
diff --git a/pcomplete.h b/pcomplete.h
index 38932ac2..2a68e6a3 100644
--- a/pcomplete.h
+++ b/pcomplete.h
@@ -1,7 +1,7 @@
/* pcomplete.h - structure definitions and other stuff for programmable
completion. */
-/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -87,7 +87,7 @@ typedef struct compspec {
completions. */
typedef struct _list_of_items {
int flags;
- int (*list_getter) __P((struct _list_of_items *)); /* function to call to get the list */
+ int (*list_getter) PARAMS((struct _list_of_items *)); /* function to call to get the list */
STRINGLIST *slist;
@@ -147,31 +147,31 @@ extern COMPSPEC *pcomp_curcs;
extern const char *pcomp_curcmd;
/* Functions from pcomplib.c */
-extern COMPSPEC *compspec_create __P((void));
-extern void compspec_dispose __P((COMPSPEC *));
-extern COMPSPEC *compspec_copy __P((COMPSPEC *));
+extern COMPSPEC *compspec_create PARAMS((void));
+extern void compspec_dispose PARAMS((COMPSPEC *));
+extern COMPSPEC *compspec_copy PARAMS((COMPSPEC *));
-extern void progcomp_create __P((void));
-extern void progcomp_flush __P((void));
-extern void progcomp_dispose __P((void));
+extern void progcomp_create PARAMS((void));
+extern void progcomp_flush PARAMS((void));
+extern void progcomp_dispose PARAMS((void));
-extern int progcomp_size __P((void));
+extern int progcomp_size PARAMS((void));
-extern int progcomp_insert __P((char *, COMPSPEC *));
-extern int progcomp_remove __P((char *));
+extern int progcomp_insert PARAMS((char *, COMPSPEC *));
+extern int progcomp_remove PARAMS((char *));
-extern COMPSPEC *progcomp_search __P((const char *));
+extern COMPSPEC *progcomp_search PARAMS((const char *));
-extern void progcomp_walk __P((hash_wfunc *));
+extern void progcomp_walk PARAMS((hash_wfunc *));
/* Functions from pcomplete.c */
-extern void set_itemlist_dirty __P((ITEMLIST *));
+extern void set_itemlist_dirty PARAMS((ITEMLIST *));
-extern STRINGLIST *completions_to_stringlist __P((char **));
+extern STRINGLIST *completions_to_stringlist PARAMS((char **));
-extern STRINGLIST *gen_compspec_completions __P((COMPSPEC *, const char *, const char *, int, int, int *));
-extern char **programmable_completions __P((const char *, const char *, int, int, int *));
+extern STRINGLIST *gen_compspec_completions PARAMS((COMPSPEC *, const char *, const char *, int, int, int *));
+extern char **programmable_completions PARAMS((const char *, const char *, int, int, int *));
-extern void pcomp_set_readline_variables __P((int, int));
-extern void pcomp_set_compspec_options __P((COMPSPEC *, int, int));
+extern void pcomp_set_readline_variables PARAMS((int, int));
+extern void pcomp_set_compspec_options PARAMS((COMPSPEC *, int, int));
#endif /* _PCOMPLETE_H_ */
diff --git a/pcomplib.c b/pcomplib.c
index 70c7a17a..075fce73 100644
--- a/pcomplib.c
+++ b/pcomplib.c
@@ -1,6 +1,6 @@
/* pcomplib.c - library functions for programmable completion. */
-/* Copyright (C) 1999-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -43,7 +43,7 @@
HASH_TABLE *prog_completes = (HASH_TABLE *)NULL;
-static void free_progcomp __P((PTR_T));
+static void free_progcomp PARAMS((PTR_T));
COMPSPEC *
compspec_create ()
diff --git a/po/LINGUAS b/po/LINGUAS
index 442297c7..27165b3b 100644
--- a/po/LINGUAS
+++ b/po/LINGUAS
@@ -1,2 +1,2 @@
# Set of available languages.
-en@quot en@boldquot af bg ca cs da de el eo es et fi fr ga gl hr hu id it ja lt nb nl pl pt 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 ko lt nb nl pl pt pt_BR ro ru sk sl sr sv tr uk vi zh_CN zh_TW
diff --git a/po/Makefile.in.in b/po/Makefile.in.in
index 5217a12e..6f0abed1 100644
--- a/po/Makefile.in.in
+++ b/po/Makefile.in.in
@@ -32,7 +32,7 @@ gettextsrcdir = $(datadir)/gettext/po
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
-MKINSTALLDIRS = @MKINSTALLDIRS@
+MKINSTALLDIRS = $(top_srcdir)/support/mkinstalldirs
mkinstalldirs = $(SHELL) $(MKINSTALLDIRS)
GMSGFMT = @GMSGFMT@
diff --git a/po/af.gmo b/po/af.gmo
index df481e21..28fbbfb6 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index ff63c22c..c3506814 100644
--- a/po/af.po
+++ b/po/af.po
@@ -6,87 +6,92 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 2.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2004-03-17 13:48+0200\n"
"Last-Translator: Petri Jooste <rkwjpj@puk.ac.za>\n"
"Language-Team: Afrikaans <i18n@af.org.za>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
#, fuzzy
msgid "bad array subscript"
msgstr "Os/2 Biskaart Skikking"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr ""
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr ""
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: kan nie %s skep nie"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr ""
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "%s: bevel nie gevind nie"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr ""
@@ -105,22 +110,22 @@ msgstr ""
msgid "%s: cannot read: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, fuzzy, c-format
msgid "`%s': unknown function name"
msgstr "%s: leesalleen-funksie"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr ""
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr ""
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, fuzzy, c-format
msgid "`%s': cannot unbind"
msgstr "%s: bevel nie gevind nie"
@@ -137,24 +142,29 @@ msgstr ""
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr ""
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
#, fuzzy
msgid "too many arguments"
msgstr "te veel parameters"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "boonste lêergids."
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr ""
@@ -173,7 +183,7 @@ msgstr ""
msgid "%s: usage: "
msgstr ""
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, fuzzy, c-format
msgid "%s: option requires an argument"
msgstr "%s: option `%s' requires an argument\n"
@@ -188,7 +198,7 @@ msgstr ""
msgid "%s: not found"
msgstr "%s: bevel nie gevind nie"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, fuzzy, c-format
msgid "%s: invalid option"
msgstr "%s: illegal option -- %c\n"
@@ -198,7 +208,7 @@ msgstr "%s: illegal option -- %c\n"
msgid "%s: invalid option name"
msgstr "%s: illegal option -- %c\n"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, fuzzy, c-format
msgid "`%s': not a valid identifier"
msgstr "Die datum is nie geldige!"
@@ -213,7 +223,7 @@ msgstr "Die sein nommer wat was gevang het"
msgid "invalid hex number"
msgstr "Die sein nommer wat was gevang het"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
#, fuzzy
msgid "invalid number"
msgstr "Die sein nommer wat was gevang het"
@@ -292,73 +302,83 @@ msgstr ""
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, fuzzy, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dubbelsinnige herroetering"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, fuzzy, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: kan nie %s skep nie"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, fuzzy, c-format
+msgid "%s: cannot unset"
+msgstr "%s: kan nie %s skep nie"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr ""
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr ""
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr ""
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr ""
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr ""
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: leesalleen-funksie"
@@ -373,7 +393,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -387,27 +407,32 @@ msgstr ""
msgid "cannot open shared object %s: %s"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr ""
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr ""
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr ""
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, fuzzy, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: is 'n gids"
@@ -422,12 +447,12 @@ msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
msgid "%s: file is too large"
msgstr ""
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, fuzzy, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: kan nie %s skep nie"
@@ -451,16 +476,17 @@ msgstr ""
msgid "There are running jobs.\n"
msgstr ""
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
#, fuzzy
msgid "no command found"
msgstr "%s: bevel nie gevind nie"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr ""
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, fuzzy, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: kan nie %s skep nie"
@@ -488,12 +514,12 @@ 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:266
+#: builtins/hash.def:267
#, fuzzy, c-format
msgid "hits\tcommand\n"
msgstr "Bevelreël"
@@ -504,6 +530,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] ""
msgstr[1] ""
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -527,21 +559,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr ""
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr ""
-#: builtins/history.def:442
+#: builtins/history.def:451
#, fuzzy, c-format
msgid "%s: history expansion failed"
msgstr "%s: heelgetal-uitdrukking is verwag\n"
@@ -565,7 +597,7 @@ msgstr ""
msgid "Unknown error"
msgstr "Onbekende fout %d"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
#, fuzzy
msgid "expression expected"
msgstr "Bools uitdrukking verwag"
@@ -575,12 +607,12 @@ msgstr "Bools uitdrukking verwag"
msgid "%s: not an indexed array"
msgstr ""
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
@@ -608,36 +640,36 @@ msgstr ""
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr ""
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr ""
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -735,12 +767,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:733
+#: builtins/read.def:755
#, fuzzy, c-format
msgid "read error: %d: %s"
msgstr "pypfout: %s"
@@ -749,21 +781,11 @@ msgstr "pypfout: %s"
msgid "can only `return' from a function or sourced script"
msgstr ""
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:904
-#, fuzzy, c-format
-msgid "%s: cannot unset"
-msgstr "%s: kan nie %s skep nie"
-
-#: builtins/set.def:925 variables.c:3813
-#, fuzzy, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: kan nie %s skep nie"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, fuzzy, c-format
msgid "%s: not an array variable"
msgstr "Veranderlike boom"
@@ -778,7 +800,7 @@ msgstr "%s: leesalleen-funksie"
msgid "%s: cannot export"
msgstr "%s: kan nie %s skep nie"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
#, fuzzy
msgid "shift count"
msgstr "Shift"
@@ -787,7 +809,7 @@ msgstr "Shift"
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -845,27 +867,27 @@ msgstr ""
msgid "%s is hashed (%s)\n"
msgstr ""
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr ""
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, fuzzy, c-format
msgid "`%c': bad command"
msgstr "%s: illegal option -- %c\n"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, fuzzy, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan nie %s skep nie"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
#, fuzzy
msgid "limit"
msgstr "Filter beperk:"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, fuzzy, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan nie %s skep nie"
@@ -930,77 +952,76 @@ msgstr "Spring na:"
msgid "%s: unbound variable"
msgstr "Veranderlike boom"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
#, fuzzy
msgid "pipe error"
msgstr "pypfout: %s"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: bevel nie gevind nie"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, fuzzy, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: is 'n gids"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan nie 'n binêre lêer uitvoer nie"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr ""
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, fuzzy, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan nie fd %d na fd 0 dupliseer nie: %s"
@@ -1028,68 +1049,72 @@ msgstr ""
msgid "syntax error in variable assignment"
msgstr "Sintaks fout in patroon"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
#, fuzzy
msgid "division by 0"
msgstr "devisie by nul."
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:645
+#: expr.c:646
#, fuzzy
msgid "`:' expected for conditional expression"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr ""
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1055
+#: expr.c:1056
#, fuzzy
msgid "missing `)'"
msgstr "Ontbrekende '>'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
#, fuzzy
msgid "syntax error: operand expected"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr ""
-#: expr.c:1510
+#: expr.c:1513
#, fuzzy, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
"Hierdie is die fout boodskap van %1:\n"
"%2"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr ""
-#: expr.c:1588
+#: expr.c:1582
+msgid "invalid integer constant"
+msgstr ""
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "waarde te groot vir basis"
-#: expr.c:1637
+#: expr.c:1647
#, fuzzy, c-format
msgid "%s: expression error\n"
msgstr "Pypfout.\n"
-#: general.c:69
+#: general.c:70
#, fuzzy
msgid "getcwd: cannot access parent directories"
msgstr "Kan nie die program uitvoer nie:"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1104,204 +1129,222 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr ""
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:1084
+#: jobs.c:906
#, c-format
-msgid "forked pid %d appears in running job %d"
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1203
+#: jobs.c:959
#, c-format
-msgid "deleting stopped job %d with process group %ld"
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1307
+#: jobs.c:1283
#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
+msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1310
+#: jobs.c:1402
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr ""
+
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1639
+#: jobs.c:1850
#, fuzzy, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "E108: Geen veranderlike: \"%s\""
-#: jobs.c:1654
+#: jobs.c:1865
#, fuzzy, c-format
msgid "Signal %d"
msgstr "Sein kwaliteit:"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Klaar"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
#, fuzzy
msgid "Stopped"
msgstr "Op gehou"
-#: jobs.c:1677
+#: jobs.c:1888
#, fuzzy, c-format
msgid "Stopped(%s)"
msgstr "Op gehou"
-#: jobs.c:1681
+#: jobs.c:1892
#, fuzzy
msgid "Running"
msgstr "aktief"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Klaar(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Verlaat %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Onbekende status"
-#: jobs.c:1790
+#: jobs.c:2001
#, fuzzy, c-format
msgid "(core dumped) "
msgstr "Kern Ontwikkelaar"
-#: jobs.c:1809
+#: jobs.c:2020
#, fuzzy, c-format
msgid " (wd: %s)"
msgstr "Aktiveer nou dadelik"
-#: jobs.c:2037
+#: jobs.c:2259
#, fuzzy, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "Fout in die skryf van %s"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr ""
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: kan nie %s skep nie"
+
+#: jobs.c:3571
#, fuzzy, c-format
msgid "%s: job has terminated"
msgstr "Die bediener beëindig Die verbinding."
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr ""
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr ""
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, fuzzy, c-format
msgid " (core dumped)"
msgstr "Kern Ontwikkelaar"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, fuzzy, c-format
msgid "(wd now: %s)\n"
msgstr "Aktiveer nou dadelik"
-#: jobs.c:4191
+#: jobs.c:4391
#, fuzzy
msgid "initialize_job_control: getpgrp failed"
msgstr "Inisialisering van OpenGL het misluk."
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4273
+#: jobs.c:4473
#, fuzzy
msgid "initialize_job_control: setpgid"
msgstr "Inisialisering van OpenGL het misluk."
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "geen taakbeheer in hierdie dop nie"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "onbekend"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1343,22 +1386,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1408,114 +1451,114 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4615
+#: parse.y:4705
#, fuzzy
msgid "syntax error in conditional expression"
msgstr "Sintaks fout in patroon"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr ""
-#: parse.y:4697
+#: parse.y:4787
#, fuzzy
msgid "expected `)'"
msgstr "')' is verwag\n"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4775
+#: parse.y:4865
#, fuzzy, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: parse.y:4779
+#: parse.y:4869
#, fuzzy
msgid "conditional binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4816
+#: parse.y:4906
#, fuzzy, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:4819
+#: parse.y:4909
#, fuzzy, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:4823
+#: parse.y:4913
#, fuzzy, c-format
msgid "unexpected token %d in conditional command"
msgstr "Soek die lêer vir 'n uitdrukking"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6263
+#: parse.y:6355
#, fuzzy, c-format
msgid "syntax error near `%s'"
msgstr "Sintaks fout in patroon"
-#: parse.y:6273
+#: parse.y:6365
#, fuzzy
msgid "syntax error: unexpected end of file"
msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "sintaksfout"
-#: parse.y:6335
+#: parse.y:6428
#, fuzzy, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gebruik Kaart na Los Tronk"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1558,456 +1601,451 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr ""
-#: redir.c:174
+#: redir.c:204
#, fuzzy, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: dubbelsinnige herroetering"
-#: redir.c:178
+#: redir.c:208
#, fuzzy, c-format
msgid "%s: cannot overwrite existing file"
msgstr "Jy het gespesifiseer 'n bestaande lêer"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr ""
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
#, fuzzy
msgid "redirection error: cannot duplicate fd"
msgstr "Pypfout.\n"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr ""
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr ""
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, fuzzy, c-format
msgid "%c%c: invalid option"
msgstr "%s: illegal option -- %c\n"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: is 'n gids"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ek het nie 'n naam nie!"
-#: shell.c:1980
+#: shell.c:2035
#, fuzzy, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "bedryfstelselkernweergawe"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-#: shell.c:1983
+#: shell.c:2038
#, fuzzy
msgid "GNU long options:\n"
msgstr "Gnu C Saamsteller Opsies"
-#: shell.c:1987
+#: shell.c:2042
#, fuzzy
msgid "Shell options:\n"
msgstr "opneem opsies"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
-#: shell.c:2007
+#: shell.c:2062
#, fuzzy, c-format
msgid "\t-%s or -o option\n"
msgstr ""
"Gebruik so: %s LÊER \n"
" of: %s OPSIE\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr ""
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Foutiewe sein"
-#: siglist.c:51
+#: siglist.c:50
#, fuzzy
msgid "Hangup"
msgstr "Ophang"
-#: siglist.c:55
+#: siglist.c:54
#, fuzzy
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:59
+#: siglist.c:58
#, fuzzy
msgid "Quit"
msgstr "Verlaat"
-#: siglist.c:63
+#: siglist.c:62
#, fuzzy
msgid "Illegal instruction"
msgstr "Sigill (onwettige instruksie)"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:75
+#: siglist.c:74
#, fuzzy
msgid "ABORT instruction"
msgstr "Verwerking Instruksie"
-#: siglist.c:79
+#: siglist.c:78
#, fuzzy
msgid "EMT instruction"
msgstr "Verwerking Instruksie"
-#: siglist.c:83
+#: siglist.c:82
#, fuzzy
msgid "Floating point exception"
msgstr "wisselpuntgetaluitsondering"
-#: siglist.c:87
+#: siglist.c:86
#, fuzzy
msgid "Killed"
msgstr "Doodgemaak proses."
-#: siglist.c:91
+#: siglist.c:90
#, fuzzy
msgid "Bus error"
msgstr "Pypfout.\n"
-#: siglist.c:95
+#: siglist.c:94
#, fuzzy
msgid "Segmentation fault"
msgstr "Sigsegv (segmentasie oortreding)"
-#: siglist.c:99
+#: siglist.c:98
#, fuzzy
msgid "Bad system call"
msgstr "fork-stelselroep het gefaal"
-#: siglist.c:103
+#: siglist.c:102
#, fuzzy
msgid "Broken pipe"
msgstr "Sigpipe (gebroke pyp)"
-#: siglist.c:107
+#: siglist.c:106
#, fuzzy
msgid "Alarm clock"
msgstr "wêreld horlosie"
-#: siglist.c:111
+#: siglist.c:110
#, fuzzy
msgid "Terminated"
msgstr ""
"\n"
"Bevel beëindig\n"
-#: siglist.c:115
+#: siglist.c:114
#, fuzzy
msgid "Urgent IO condition"
msgstr "Ooreenstem enige kondisie"
-#: siglist.c:119
+#: siglist.c:118
#, fuzzy
msgid "Stopped (signal)"
msgstr "Sein kwaliteit:"
-#: siglist.c:127
+#: siglist.c:126
#, fuzzy
msgid "Continue"
msgstr "Gaan voort"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr ""
-#: siglist.c:139
+#: siglist.c:138
#, fuzzy
msgid "Stopped (tty input)"
msgstr "Sigttin (tty invoer)"
-#: siglist.c:143
+#: siglist.c:142
#, fuzzy
msgid "Stopped (tty output)"
msgstr "Sigttou (tty uitset)"
-#: siglist.c:147
+#: siglist.c:146
#, fuzzy
msgid "I/O ready"
msgstr "Gereed."
-#: siglist.c:151
+#: siglist.c:150
#, fuzzy
msgid "CPU limit"
msgstr "Filter beperk:"
-#: siglist.c:155
+#: siglist.c:154
#, fuzzy
msgid "File limit"
msgstr "Filter beperk:"
-#: siglist.c:159
+#: siglist.c:158
#, fuzzy
msgid "Alarm (virtual)"
msgstr "virtuele werkskerms"
-#: siglist.c:163
+#: siglist.c:162
#, fuzzy
msgid "Alarm (profile)"
msgstr "Vee profiel uit..."
-#: siglist.c:167
+#: siglist.c:166
#, fuzzy
msgid "Window changed"
msgstr "Lêer Het verander"
-#: siglist.c:171
+#: siglist.c:170
#, fuzzy
msgid "Record lock"
msgstr "Sluit Lêers"
-#: siglist.c:175
+#: siglist.c:174
#, fuzzy
msgid "User signal 1"
msgstr "Gebruiker Sein 1"
-#: siglist.c:179
+#: siglist.c:178
#, fuzzy
msgid "User signal 2"
msgstr "Gebruiker Sein 1"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:187
+#: siglist.c:186
#, fuzzy
msgid "power failure imminent"
msgstr "Vaaling na Uitpak"
-#: siglist.c:191
+#: siglist.c:190
#, fuzzy
msgid "system crash imminent"
msgstr "Die Kde Omval Handteerder"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:199
+#: siglist.c:198
#, fuzzy
msgid "programming error"
msgstr "Pypfout.\n"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr ""
-#: siglist.c:223
-#, fuzzy
-msgid "Unknown Signal #"
-msgstr "Sein kwaliteit:"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, fuzzy, c-format
msgid "Unknown Signal #%d"
msgstr "Sein kwaliteit:"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, fuzzy, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "--Geen reëls in buffer--"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
#, fuzzy
msgid "cannot make pipe for process substitution"
msgstr "Woord Substitusie"
-#: subst.c:5851
+#: subst.c:5985
#, fuzzy
msgid "cannot make child for process substitution"
msgstr "Woord Substitusie"
-#: subst.c:5920
+#: subst.c:6059
#, fuzzy, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:5922
+#: subst.c:6061
#, fuzzy, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:5945
+#: subst.c:6084
#, fuzzy, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Kan nie oopmaak vir skrip-afvoer nie: \""
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "--Geen reëls in buffer--"
-#: subst.c:6190
+#: subst.c:6353
#, fuzzy
msgid "cannot make pipe for command substitution"
msgstr "Woord Substitusie"
-#: subst.c:6233
+#: subst.c:6397
#, fuzzy
msgid "cannot make child for command substitution"
msgstr "Woord Substitusie"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr ""
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "Veranderlike boom"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr ""
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr ""
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, fuzzy, c-format
msgid "%s: substring expression < 0"
msgstr "ongeldige uitdrukking"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, fuzzy, c-format
msgid "%s: bad substitution"
msgstr "Woord Substitusie"
-#: subst.c:9082
+#: subst.c:9390
#, fuzzy, c-format
msgid "$%s: cannot assign in this way"
msgstr "Kan nie soek 'n handtekening in hierdie boodskap!"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "--Geen reëls in buffer--"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr ""
@@ -2032,119 +2070,124 @@ msgstr "')' is verwag\n"
msgid "`)' expected, found %s"
msgstr "')' is verwag, maar %s gevind\n"
-#: test.c:282 test.c:750 test.c:753
-#, fuzzy, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unitêre operator is verwag\n"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, fuzzy, c-format
msgid "%s: binary operator expected"
msgstr "%s: binêre operator is verwag\n"
-#: test.c:875
+#: test.c:756 test.c:759
+#, fuzzy, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unitêre operator is verwag\n"
+
+#: test.c:881
#, fuzzy
msgid "missing `]'"
msgstr "Ontbrekende '>'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Onverwagte einde van lêer tydens inlees van hulpbron."
+
+#: trap.c:220
#, fuzzy
msgid "invalid signal number"
msgstr "Die sein nommer wat was gevang het"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr ""
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr ""
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr ""
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr ""
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr ""
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr ""
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr ""
#: version.c:47 version2.c:47
@@ -2239,12 +2282,12 @@ msgstr "Gebruik so: %s [OPSIE] [BEVEL [ARG]...]\n"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "E418: Ongeldige waarde: %s"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "E418: Ongeldige waarde: %s"
#: builtins.c:82
@@ -2273,11 +2316,12 @@ msgid "eval [arg ...]"
msgstr "Ontfouting %1 (met arg %2 %3)"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
-msgstr ""
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
+msgstr "Kom ons begin!"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr ""
#: builtins.c:100
@@ -2421,7 +2465,7 @@ msgstr "Belmetode"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "Konfigureer Eggo"
#: builtins.c:181
@@ -2521,14 +2565,14 @@ msgstr ""
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
#: 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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
#: builtins.c:239
@@ -2791,6 +2835,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2818,14 +2864,14 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2840,7 +2886,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2880,7 +2926,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2893,7 +2939,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2920,7 +2966,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2932,7 +2978,7 @@ msgid ""
" Returns exit status of command or success if command is null."
msgstr ""
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2965,15 +3011,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -2996,7 +3042,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3004,7 +3050,7 @@ msgid ""
" is that of the last command executed."
msgstr ""
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3013,7 +3059,7 @@ msgid ""
" in a login shell."
msgstr ""
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3043,7 +3089,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3055,7 +3101,7 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3069,7 +3115,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3093,7 +3139,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3115,7 +3161,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3150,7 +3196,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3174,7 +3220,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3191,7 +3237,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3214,7 +3260,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3259,7 +3305,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3311,7 +3357,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3323,7 +3369,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3409,7 +3455,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3431,7 +3477,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3450,7 +3496,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3471,7 +3517,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3482,7 +3528,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3496,7 +3542,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3510,7 +3556,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3593,7 +3639,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3601,7 +3647,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3613,7 +3659,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3657,7 +3703,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3687,7 +3733,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3718,6 +3764,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3736,7 +3783,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3754,7 +3801,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3765,18 +3812,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3791,7 +3848,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3804,7 +3861,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3821,7 +3878,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3841,7 +3898,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3857,7 +3914,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3868,7 +3925,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3889,7 +3946,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -3900,7 +3957,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -3911,7 +3968,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3924,7 +3981,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -3938,7 +3995,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3949,7 +4006,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3963,18 +4020,18 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4002,7 +4059,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4056,7 +4113,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4087,7 +4144,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4114,7 +4171,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4143,7 +4200,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4163,7 +4220,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4180,8 +4237,8 @@ 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"
@@ -4202,7 +4259,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4224,7 +4281,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4233,7 +4290,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4246,7 +4303,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4278,7 +4335,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4320,13 +4377,17 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#, fuzzy
+#~ msgid "Unknown Signal #"
+#~ msgstr "Sein kwaliteit:"
+
#~ msgid "Missing `}'"
#~ msgstr "Ontbrekende `}'"
diff --git a/po/bash.pot b/po/bash.pot
index 2c9c7780..fb895a27 100644
--- a/po/bash.pot
+++ b/po/bash.pot
@@ -8,85 +8,91 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\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:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr ""
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr ""
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr ""
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr ""
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr ""
-#: braces.c:331
+#: bashline.c:4555
+#, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr ""
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr ""
@@ -105,22 +111,22 @@ msgstr ""
msgid "%s: cannot read: %s"
msgstr ""
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr ""
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr ""
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr ""
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr ""
@@ -137,22 +143,27 @@ msgstr ""
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr ""
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr ""
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr ""
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr ""
@@ -171,7 +182,7 @@ msgstr ""
msgid "%s: usage: "
msgstr ""
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr ""
@@ -186,7 +197,7 @@ msgstr ""
msgid "%s: not found"
msgstr ""
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr ""
@@ -196,7 +207,7 @@ msgstr ""
msgid "%s: invalid option name"
msgstr ""
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr ""
@@ -209,7 +220,7 @@ msgstr ""
msgid "invalid hex number"
msgstr ""
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr ""
@@ -285,73 +296,83 @@ msgstr ""
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr ""
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr ""
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr ""
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr ""
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr ""
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr ""
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr ""
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr ""
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr ""
@@ -366,7 +387,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr ""
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -380,27 +401,32 @@ msgstr ""
msgid "cannot open shared object %s: %s"
msgstr ""
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr ""
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr ""
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr ""
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr ""
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr ""
@@ -415,12 +441,12 @@ msgstr ""
msgid "%s: file is too large"
msgstr ""
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr ""
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr ""
@@ -444,15 +470,16 @@ msgstr ""
msgid "There are running jobs.\n"
msgstr ""
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr ""
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr ""
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr ""
@@ -480,12 +507,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr ""
@@ -496,6 +523,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] ""
msgstr[1] ""
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -519,21 +552,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr ""
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr ""
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr ""
@@ -556,7 +589,7 @@ msgstr ""
msgid "Unknown error"
msgstr ""
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr ""
@@ -565,12 +598,12 @@ msgstr ""
msgid "%s: not an indexed array"
msgstr ""
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
@@ -598,36 +631,36 @@ msgstr ""
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr ""
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr ""
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -723,12 +756,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr ""
@@ -737,21 +770,11 @@ msgstr ""
msgid "can only `return' from a function or sourced script"
msgstr ""
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr ""
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr ""
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr ""
@@ -766,7 +789,7 @@ msgstr ""
msgid "%s: cannot export"
msgstr ""
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr ""
@@ -774,7 +797,7 @@ msgstr ""
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -831,26 +854,26 @@ msgstr ""
msgid "%s is hashed (%s)\n"
msgstr ""
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr ""
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr ""
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr ""
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr ""
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr ""
@@ -910,76 +933,75 @@ msgstr ""
msgid "%s: unbound variable"
msgstr ""
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr ""
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr ""
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr ""
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr ""
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr ""
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1004,61 +1026,65 @@ msgstr ""
msgid "syntax error in variable assignment"
msgstr ""
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr ""
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr ""
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr ""
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr ""
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr ""
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr ""
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr ""
-#: expr.c:1588
+#: expr.c:1582
+msgid "invalid integer constant"
+msgstr ""
+
+#: expr.c:1598
msgid "value too great for base"
msgstr ""
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr ""
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr ""
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1073,200 +1099,218 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr ""
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:1084
+#: jobs.c:906
#, c-format
-msgid "forked pid %d appears in running job %d"
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1203
+#: jobs.c:959
#, c-format
-msgid "deleting stopped job %d with process group %ld"
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1307
+#: jobs.c:1283
#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
+msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1310
+#: jobs.c:1402
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr ""
+
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr ""
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr ""
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr ""
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr ""
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr ""
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr ""
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr ""
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr ""
-#: jobs.c:3362
+#: jobs.c:3564
+#, c-format
+msgid "%s: no current jobs"
+msgstr ""
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr ""
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr ""
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr ""
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr ""
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr ""
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1308,22 +1352,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1369,110 +1413,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr ""
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr ""
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr ""
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr ""
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr ""
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr ""
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr ""
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1515,412 +1559,408 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr ""
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr ""
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr ""
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr ""
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr ""
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr ""
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr ""
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr ""
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr ""
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr ""
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr ""
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr ""
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr ""
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr ""
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr ""
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr ""
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr ""
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr ""
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr ""
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr ""
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr ""
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr ""
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr ""
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr ""
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr ""
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr ""
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr ""
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr ""
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr ""
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr ""
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr ""
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr ""
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr ""
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr ""
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr ""
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr ""
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr ""
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr ""
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr ""
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr ""
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr ""
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr ""
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr ""
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr ""
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr ""
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr ""
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr ""
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr ""
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr ""
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr ""
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr ""
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr ""
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr ""
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr ""
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr ""
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr ""
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr ""
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr ""
@@ -1943,117 +1983,122 @@ msgstr ""
msgid "`)' expected, found %s"
msgstr ""
-#: test.c:282 test.c:750 test.c:753
+#: test.c:466 test.c:799
#, c-format
-msgid "%s: unary operator expected"
+msgid "%s: binary operator expected"
msgstr ""
-#: test.c:469 test.c:793
+#: test.c:756 test.c:759
#, c-format
-msgid "%s: binary operator expected"
+msgid "%s: unary operator expected"
msgstr ""
-#: test.c:875
+#: test.c:881
msgid "missing `]'"
msgstr ""
-#: trap.c:216
+#: test.c:899
+#, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr ""
+
+#: trap.c:220
msgid "invalid signal number"
msgstr ""
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr ""
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr ""
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr ""
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr ""
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr ""
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr ""
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr ""
#: version.c:47 version2.c:47
@@ -2138,11 +2183,11 @@ msgid "command [-pVv] command [arg ...]"
msgstr ""
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr ""
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr ""
#: builtins.c:82
@@ -2166,11 +2211,11 @@ msgid "eval [arg ...]"
msgstr ""
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+msgid "getopts optstring name [arg ...]"
msgstr ""
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr ""
#: builtins.c:100
@@ -2292,7 +2337,7 @@ msgid "umask [-p] [-S] [mode]"
msgstr ""
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr ""
#: builtins.c:181
@@ -2384,14 +2429,14 @@ msgstr ""
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
#: 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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
#: builtins.c:239
@@ -2653,6 +2698,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2680,14 +2727,14 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2702,7 +2749,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2742,7 +2789,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2755,7 +2802,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2782,7 +2829,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2794,7 +2841,7 @@ msgid ""
" Returns exit status of command or success if command is null."
msgstr ""
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2827,15 +2874,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -2858,7 +2905,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -2866,7 +2913,7 @@ msgid ""
" is that of the last command executed."
msgstr ""
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -2875,7 +2922,7 @@ msgid ""
" in a login shell."
msgstr ""
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -2905,7 +2952,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -2917,7 +2964,7 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -2931,7 +2978,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -2955,7 +3002,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -2977,7 +3024,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3012,7 +3059,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3036,7 +3083,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3053,7 +3100,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3076,7 +3123,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3121,7 +3168,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3173,7 +3220,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3185,7 +3232,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3271,7 +3318,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3293,7 +3340,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3312,7 +3359,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3333,7 +3380,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3344,7 +3391,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3358,7 +3405,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3372,7 +3419,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3455,7 +3502,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3463,7 +3510,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3475,7 +3522,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3519,7 +3566,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3549,7 +3596,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3580,6 +3627,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3598,7 +3646,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3616,7 +3664,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3627,18 +3675,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3653,7 +3711,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3666,7 +3724,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3683,7 +3741,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3703,7 +3761,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3719,7 +3777,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3730,7 +3788,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3751,7 +3809,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -3762,7 +3820,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -3773,7 +3831,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3786,7 +3844,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -3800,7 +3858,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3811,7 +3869,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3825,18 +3883,18 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3864,7 +3922,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -3918,7 +3976,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -3949,7 +4007,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -3976,7 +4034,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4005,7 +4063,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4025,7 +4083,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4042,8 +4100,8 @@ 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"
@@ -4064,7 +4122,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4086,7 +4144,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4095,7 +4153,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4108,7 +4166,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4140,7 +4198,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4182,7 +4240,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/bg.gmo b/po/bg.gmo
index 43887faf..fc647414 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index f531870e..0398655a 100644
--- a/po/bg.po
+++ b/po/bg.po
@@ -1,99 +1,104 @@
# Bulgarian translation of bash po-file.
-# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015, 2016.
+# Alexander Shopov <ash@kambanaria.org>, 2007, 2010, 2012, 2013, 2014, 2015, 2016, 2018, 2020.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-09-28 08:49+0200\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-03-27 19:47+0100\n"
"Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
"Language-Team: Bulgarian <dict@ludost.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "грешен Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð° маÑив"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: изтриване на атрибута за указател от променливата"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: маÑивът не може да бъде преобразуван към речник"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: грешно име на ключ в речник"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не може да Ñе приÑвоÑва на нецифров индекÑ"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: при приÑвоÑване към речник Ñ‚Ñ€Ñбва да Ñе използва индекÑ"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не може да Ñе Ñъздаде: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"изпълнение на команда на Ð®Ð½Ð¸ÐºÑ Ð¾Ñ‚ bash: не може да Ñе открие подредбата на\n"
"функциите на клавишите за командата"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: първиÑÑ‚ непразен знак не е „\"“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "в %2$s липÑва затварÑщ знак „%1$c“"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: разделителÑÑ‚ „:“ липÑва"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: не може да Ñе премахне приÑвоÑване"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за %d "
+"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за %u "
"елемента"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
"замеÑтване на изразите Ñ Ñ„Ð¸Ð³ÑƒÑ€Ð½Ð¸ Ñкоби: не може да Ñе задели памет за „%s“"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: грешно име на Ñиноним"
@@ -112,22 +117,22 @@ msgstr "„%s“: грешно име на подредбата на функцÐ
msgid "%s: cannot read: %s"
msgstr "%s: не може да Ñе прочете: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: име на непозната функциÑ"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s не е зададена на никой клавиш.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s може да Ñе извика чрез "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: не може да Ñе премахне приÑвоÑване"
@@ -141,28 +146,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "валидно Ñамо за циклите Ñ â€žfor“, „while“ и „until“"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Връща контекÑта на текущото извикване на функциÑ.\n"
+"Връщане на контекÑта на текущото извикване на подпрограма.\n"
" \n"
-" Без ИЗРÐЗ връща "
+" Без ИЗРÐЗ връща „$line $filename“. С ИЗРÐЗ връща\n"
+" „$line $subroutine $filename“. Допълнителната Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð¾Ð¶Ðµ да Ñе\n"
+" използва за получаване на Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° ÑÑŠÑтоÑнието на Ñтека.\n"
+" \n"
+" СтойноÑтта на ИЗРÐЗа показва за колко рамки ÑпрÑмо текущата да Ñе "
+"изведе\n"
+" информациÑ. Ðай-горната рамка е 0.\n"
+" \n"
+" Изходен код:\n"
+" Връща 0, оÑвен ако обвивката изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð° в обвивката "
+"или\n"
+" ИЗРÐЗът е грешен."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "Променливата „HOME“ не е зададена"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "прекалено много аргументи"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "нулева директориÑ"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "Променливата „OLDPWD“ не е зададена"
@@ -181,7 +203,7 @@ msgstr "предупреждение: "
msgid "%s: usage: "
msgstr "%s: употреба: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: опциÑта изиÑква аргумент"
@@ -196,7 +218,7 @@ msgstr "%s: изиÑква Ñе чиÑлов аргумент"
msgid "%s: not found"
msgstr "%s: не е открит"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: грешна опциÑ"
@@ -206,7 +228,7 @@ msgstr "%s: грешна опциÑ"
msgid "%s: invalid option name"
msgstr "%s: грешно име на опциÑ"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: грешен идентификатор"
@@ -219,7 +241,7 @@ msgstr "грешно оÑмично чиÑло"
msgid "invalid hex number"
msgstr "грешно шеÑтнайÑетично чиÑло"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "грешно чиÑло"
@@ -295,73 +317,83 @@ msgstr "грешка при задаване на атрибутите на те
msgid "error getting terminal attributes: %s"
msgstr "грешка при получаване на атрибутите на терминала: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: грешка при получаване на текущата директориÑ: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: нееднозначно указана задача"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "помощта не е включена в тази верÑиÑ"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: не може да Ñе премахне"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: грешно име на дейÑтвие"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: не е указано допиÑване"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "предупреждение: опциÑта „-F“ може да не работи Ñпоред очакваниÑта ви"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "предупреждение: опциÑта „-C“ може да не работи Ñпоред очакваниÑта ви"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "в момента не Ñе изпълнÑва Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° допиÑване"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "може да Ñе използва Ñамо във функциÑ"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: променливата-указател не може да е маÑив"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: променливата-указател не може да Ñочи към Ñебе Ñи"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: цикъл в променливите-указатели"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: неправилно име за променлива-указател"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "„-f“ не може да Ñе използва за Ñъздаването на функции"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð° Ñамо за четене"
@@ -376,7 +408,7 @@ msgstr "%s: ÑÑŠÑтавното приÑвоÑване на маÑив чрез
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: променливите за маÑиви не могат да Ñе унищожават така"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: речник не може да Ñе преобразува в маÑив"
@@ -390,27 +422,32 @@ msgstr "липÑва възможноÑÑ‚ за динамично зарежда
msgid "cannot open shared object %s: %s"
msgstr "ÑподелениÑÑ‚ обект „%s“ не може да бъде зареден: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "„%s“ не може да Ñе открие в ÑÐ¿Ð¾Ð´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ð±ÐµÐºÑ‚ %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: не е зареден динамично"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "зареждащата Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“ върна грешка (%d): не е зареден"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: не е зареден динамично"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не може да Ñе изтрие: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: е директориÑ"
@@ -425,12 +462,12 @@ msgstr "%s: не е обикновен файл"
msgid "%s: file is too large"
msgstr "%s: файлът е прекалено голÑм"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: не може да Ñе изпълни: %s"
@@ -454,15 +491,16 @@ msgstr "Има Ñпрени задачи.\n"
msgid "There are running jobs.\n"
msgstr "Има изпълнÑвани задачи.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "не е открита команда"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "указване на иÑториÑта"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: не може да Ñе отвори временен файл: %s"
@@ -490,12 +528,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "Ñъвпад.\tкоманда\n"
@@ -506,6 +544,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Команди на обвивката, които напаÑват на ключовата дума „"
msgstr[1] "Команди на обвивката, които напаÑват на ключовите думи „"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -540,21 +584,21 @@ msgstr ""
"Знакът звездичка „*“ до името на команда означава, че Ñ‚Ñ Ðµ изключена.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "не може да Ñе ползва едновременно повече от една от опциите „-anrw“"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð² иÑториÑта"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: грешна дата Ñ Ð²Ñ€ÐµÐ¼Ðµ"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: неуÑпешно замеÑтване чрез иÑториÑта"
@@ -577,7 +621,7 @@ msgstr "%s: аргументите Ñ‚Ñ€Ñбва да Ñа идентификат
msgid "Unknown error"
msgstr "ÐеизвеÑтна грешка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "очаква Ñе израз"
@@ -586,12 +630,12 @@ msgstr "очаква Ñе израз"
msgid "%s: not an indexed array"
msgstr "%s: не е маÑив"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: грешно указване на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: грешен файлов деÑкриптор: %s"
@@ -619,36 +663,36 @@ msgstr "празно име на променлива за маÑив"
msgid "array variable support required"
msgstr "изиÑква Ñе поддръжка на променливи за маÑиви"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: липÑва форматиращ знак"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: грешен формат на времето"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: грешен форматиращ знак"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "предупреждение: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "неуÑпешен анализ на форма̀та: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "липÑва шеÑтнадеÑетична цифра за \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "липÑва цифра за Уникод за \\%c"
@@ -700,7 +744,7 @@ msgstr ""
"Извежда ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва чрез\n"
" командата „pushd“. Можете да вадите директории от ÑпиÑъка Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n"
" „popd“.\n"
-"\n"
+" \n"
" Опции:\n"
" -c изчиÑтва Ñтека на директориите като изтрива вÑички елементи.\n"
" -l кара командата „dirs“ да извежда пълните имена на директориите,\n"
@@ -708,12 +752,12 @@ msgstr ""
" -p поредово отпечатване на Ñтека на директориите.\n"
" -v поредово отпечатване на Ñтека на директориите заедно Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° в\n"
" Ñтека.\n"
-"\n"
+" \n"
" Ðргументи: \n"
" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата "
"„dirs“,\n"
" когато е Ñтартирана без опции. Брои Ñе от 0.\n"
-"\n"
+" \n"
" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата "
"„dirs“,\n"
" когато е Ñтартирана без опции. Брои Ñе от 0."
@@ -750,7 +794,7 @@ msgstr ""
" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ добавÑнето "
"на\n"
" директории към Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n"
-"\n"
+" \n"
" Ðргументи:\n"
" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от "
"лÑвата\n"
@@ -763,7 +807,7 @@ msgstr ""
" Ñтрана на ÑпиÑъка, отпечатан от командата „dirs“ като Ñе почва от "
"0)\n"
" да е най-отгоре.\n"
-"\n"
+" \n"
" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð  най-отгоре в Ñтека на директориите, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ "
"новата\n"
" текуща работна директориÑ.\n"
@@ -793,30 +837,30 @@ msgstr ""
"Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ "
"в\n"
" Ñтека и влиза в новата поÑледна директориÑ.\n"
-"\n"
+" \n"
" Опции:\n"
" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ махането "
"на\n"
" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ñ‚ Ñтека — Ñамо той Ñе променÑ.\n"
-"\n"
+" \n"
" Ðргументи:\n"
" +N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка отпечатан от\n"
" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“ премахва\n"
" първата директориÑ, „popd +1“ - втората.\n"
-"\n"
+" \n"
" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка отпечатан "
"от\n"
" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“ премахва\n"
" поÑледната директориÑ, „popd -1“ - предпоÑледната.\n"
-"\n"
+" \n"
" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: грешно указване на изтичането на времето"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "грешка при четене: %d: %s"
@@ -826,22 +870,12 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"„return“ е възможен Ñамо от Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ изпълнен в текущата обвивка Ñкрипт"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
"не може едновременно да Ñе премахват задаваниÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸ променлива"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: не може да Ñе премахне"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: не може да Ñе премахне: %s е Ñамо за четене"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: не е променлива за маÑив"
@@ -856,7 +890,7 @@ msgstr "%s: не е функциÑ"
msgid "%s: cannot export"
msgstr "%s: не може да Ñе изнеÑе"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "брой на премеÑтваниÑта"
@@ -865,7 +899,7 @@ msgid "cannot set and unset shell options simultaneously"
msgstr ""
"не може едновременно да Ñе задават и да Ñе премахват опции на обвивката"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: грешно име на Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° обвивката"
@@ -922,26 +956,26 @@ msgstr "%s е %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s е хеширан (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: грешен аргумент за ограничение"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c“: грешна команда"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ограничението не може да бъде получено: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ограничение"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ограничението не може да бъде променено: %s"
@@ -1001,79 +1035,78 @@ msgstr "грешен преход"
msgid "%s: unbound variable"
msgstr "%s: променлива без ÑтойноÑÑ‚"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
"\aвремето за изчакване на вход изтече: Ñледва автоматично излизане от "
"ÑиÑтемата\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "ÑтандартниÑÑ‚ вход не може да бъде пренаÑочен от „/dev/null“: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "в променливата $TIMEFORMAT: „%c“: грешен форматиращ знак"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: копроцеÑÑŠÑ‚ [%d:%s] вÑе още ÑъщеÑтвува"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "грешка в програмен канал"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: превишено е макÑималното ниво на влагане на код (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: превишено е макÑималното ниво на влагане на функции (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
"%s: ограничение: в имената на командите не може да приÑÑŠÑтва знакът „/“"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: командата не е открита"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: лош интерпретатор"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: двоичниÑÑ‚ файл не може да бъде изпълнен: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“ е вградена команда в обвивката"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "файловиÑÑ‚ деÑкриптор %d не може да Ñе дублира като деÑкриптор %d"
@@ -1095,65 +1128,69 @@ msgid "attempted assignment to non-variable"
msgstr "опит за приÑвоÑване на ÑтойноÑÑ‚ на нещо, което не е променлива"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "Ñинтактична грешка в израз"
+msgstr "Ñинтактична грешка при приÑвоÑване на променлива"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "деление на 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "програмна грешка: неправилна лекÑема за приÑвоÑване на израз"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "за уÑловен израз Ñе изиÑква „:“"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "Ñтепента е по-малка от 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "очаква Ñе идентификатор Ñлед предварително увеличаване или намалÑване"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "липÑва „)“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "Ñинтактична грешка: очаква Ñе оператор"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "Ñинтактична грешка: грешен аритметичен оператор"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (грешната лекÑема е „%s“)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "грешна аритметична оÑнова на бройна ÑиÑтема"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: грешен номер на ред"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "ÑтойноÑтта е прекалено голÑма за оÑновата"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: грешка в израза\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: нÑма доÑтъп до родителÑките директории"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не може да Ñе изчиÑти режимът без забавÑне на Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d"
@@ -1171,169 +1208,180 @@ msgstr ""
"запазване на входа на bash: вече ÑъщеÑтвува буфер за Ð½Ð¾Ð²Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² деÑкриптор "
"%d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
"Ñтартиране на програмен канал: не може да Ñе комуникира Ñ Ð²Ð¾Ð´Ð°Ñ‡Ð° на канала\n"
"(pgrp pipe)"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "ÑтартираниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ %d е в изпълнÑваната задача %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "изтриване на ÑпрÑната задача %d в групата процеÑи %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е в Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е отбелÑзан като още жив"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr ""
"опиÑателен идентификатор на процеÑ: %ld: нÑма такъв идентификатор на процеÑ"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Завършен"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "СпрÑн"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "СпрÑн (%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "ИзпълнÑван"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Завършен (%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Изход %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ðепознато ÑÑŠÑтоÑние"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(паметта е разтоварена)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "дъщерниÑÑ‚ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñмени групата при изпълнение (от %ld на %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "изчакване: процеÑÑŠÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld не е дъщерен на тази обвивка"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "изчакване: липÑват данни за Ð¿Ñ€Ð¾Ñ†ÐµÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "изчакване на задача: задачата %d е ÑпрÑна"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: нÑма такава задача"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: задачата е приключила"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: задача %d вече е във фонов режим"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"изчакване на дъщерен процеÑ: включване на незабавното излизане от функциÑта\n"
"чрез WNOHANG, за да Ñе избегне недефиниран блок"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: ред %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (паметта е разтоварена)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ðµ: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: неуÑпешно изпълнение на getpgrp"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: диÑциплина на линиÑта"
+msgstr ""
+"Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: нÑма управление на задачите във фонов "
+"режим"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: диÑциплина на линиÑта"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr ""
"Ð¸Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° контрола на задачите: задаване на група при изпълнение "
"(setpgid)"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "групата на процеÑите на терминала не може да бъде зададена (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "в тази обвивка нÑма управление на задачите"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "заделÑне на памет: грешно предположение: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1342,46 +1390,60 @@ msgstr ""
"\r\n"
"заделÑне на памет: %s:%d: предположението е отпечатано\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "непознат"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
"заделÑне на памет: блок в ÑпиÑъка ÑÑŠÑ Ñвободни блокове е зает или неподходÑщ"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr ""
"изчиÑтване на памет: извикано е Ñ Ð±Ð»Ð¾ÐºÐ¾Ð² аргумент, който вече е изчиÑтен"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "изчиÑтване на памет: извикано е Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блоков аргумент"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n"
"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+"изчиÑтване на памет: открито е отрицателно препълване Ñ mh_nbytes извън\n"
+"допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
"изчиÑтване на памет: къÑовете на началната и крайната облаÑти Ñе различават"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "презаделÑне: извикано е Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ Ñ Ð½ÐµÐ·Ð°Ð´ÐµÐ»ÐµÐ½ блок"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n"
"диапазон"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"презаделÑне: открито е отрицателно препълване Ñ mh_nbytes извън допуÑтимиÑ\n"
+"диапазон"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "презаделÑне: къÑовете на началната и крайната облаÑти Ñе различават"
@@ -1424,22 +1486,22 @@ msgstr "%s: неправилно указан мрежов път"
msgid "network operations not supported"
msgstr "не Ñе поддържат мрежови операции"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: локалът не може да бъде Ñменен (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: локалът не може да бъде Ñменен (%s): %s"
@@ -1479,8 +1541,8 @@ msgstr "вътрешен документ Ñ â€ž<<“: неправилен ви
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-"вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а Ñ‚Ñ€Ñбва да е „%"
-"s“)"
+"вътрешниÑÑ‚ документ на ред %d е отделен ÑÑŠÑ Ð·Ð½Ð°Ðº за нов ред (а Ñ‚Ñ€Ñбва да е "
+"„%s“)"
#: make_cmd.c:756
#, c-format
@@ -1488,7 +1550,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"пренаÑочване: инÑтрукциÑта за пренаÑочване „%d“ е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1497,104 +1559,104 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) надвишава SIZE_MAX (%lu): редът е "
"отрÑзан"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "превишен е макÑималниÑÑ‚ брой възможни вътрешни документи"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
"неочакван знак за край на файл „EOF“, а Ñе очакваше ÑъответÑтващ знак „%c“"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "неочакван знак за край на файл „EOF“, а Ñе очакваше „]]“"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Ñинтактична грешка в уÑловен израз: неочаквана лекÑема „%s“"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "Ñинтактична грешка в уÑловен израз"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочаквана лекÑема „%s“, а Ñе очакваше знакът „)“"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "очакваше Ñе „)“"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочакван аргумент „%s“ за унарен уÑловен оператор"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "неочакван аргумент за унарен уÑловен оператор"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочаквана лекÑема „%s“, очакваше Ñе бинарен уÑловен оператор"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "очакваше Ñе бинарен уÑловен оператор"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочакван аргумент „%s“ за бинарен уÑловен оператор"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "неочакван аргумент за бинарен уÑловен оператор"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочаквана лекÑема „%c“ в уÑловна команда"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочаквана лекÑема „%s“ в уÑловна команда"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочаквана лекÑема %d в уÑловна команда"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Ñинтактична грешка в близоÑÑ‚ до неочакваната лекÑема „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "Ñинтактична грешка в близоÑÑ‚ до „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "Ñинтактична грешка: неочакван край на файл"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "Ñинтактична грешка"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Използвайте „%s“, за да излезете от обвивката.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "неочакван знак за край на файл „EOF“, очакваше Ñе знакът „)“"
@@ -1638,94 +1700,94 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "отпечатване: „%c“: неправилен форматиращ знак"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "файловиÑÑ‚ деÑкриптор е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: двуÑмиÑлено пренаÑочване"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не може да Ñе презапише ÑъщеÑтвуващ файл"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: поради ограничение изходът не може да Ñе пренаÑочи"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не може да Ñе Ñъздаде временен файл за вътрешен документ: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: на променлива не може да Ñе приÑвои файлов деÑкриптор"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
"„/dev/(tcp|udp)/host/port“ не Ñе поддържат, ако нÑма поддръжка на мрежа"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "грешка при пренаÑочване: файловиÑÑ‚ деÑкриптор не може да бъде дублиран"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "не е открита директориÑта „/tmp“. Създайте Ñ!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "„/tmp“ Ñ‚Ñ€Ñбва да е директориÑ"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "режимът за краÑив изход Ñе игнорира при интерактивна работа"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: неправилна опциÑ"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
"идентификаторът на потребител на процеÑа не може да Ñе зададе да е %d,\n"
"ефективниÑÑ‚ идентификатор на потребител на процеÑа е %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
"идентификаторът на група на процеÑа не може да Ñе зададе да е %d,\n"
"ефективниÑÑ‚ идентификатор на група на процеÑа е %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "режимът на изчиÑтване на грешки е недоÑтъпен, защото е изключен"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: е директориÑ"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ðе може да Ñе получи името на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1734,318 +1796,314 @@ msgstr ""
"Употреба: %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ]…\n"
" %s [дълга Ð¾Ð¿Ñ†Ð¸Ñ Ð½Ð° GNU] [опциÑ] файл-Ñкрипт…\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Дълги опции на GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Опции на обвивката:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
" -ilrsD или -c команда, или -O къÑа_Ð¾Ð¿Ñ†Ð¸Ñ (Ñамо при Ñтартиране)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr " -%s или -o опциÑ\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° опциите на обвивката въведете „%s -c \"help set\"“.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вградените в обвивката команди въведете „%s -c "
"help“.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "За да докладвате грешки, използвайте командата „bashbug“.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Интернет Ñтраница на bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Обща помощ за програмите на GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "маÑка за обработката на Ñигнали: %d: грешна операциÑ"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Фалшив Ñигнал"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "ПрекъÑване на връзката"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "ПрекъÑване"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Спиране"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Ðеправилна инÑтрукциÑ"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Капан за авариен изход чрез BPT"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð·Ð° прекратÑване"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Капан Ñ EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Изключение от плаваща запетаÑ"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Убит"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Грешка в шината"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Грешка в разделÑнето"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Грешно ÑиÑтемно извикване"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "ПрекъÑнат програмен канал"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Ðларма"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Прекратен"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Спешно вх./изх. ÑÑŠÑтоÑние"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "СпрÑн (Ñигнал)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Продължаване"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Смърт или Ñпиране на дъщерен процеÑ"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Спиране (вход от tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Спиране (изход към tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "ГотовноÑÑ‚ за вх./изх."
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Ограничение на процеÑора"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Ограничение на файловете"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Ðларма (виртуална)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Ðларма (по профил)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
-msgstr "Прозорецът е преоразмерен"
+msgstr "Преоразмерен прозорец"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Заключен запиÑ"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "ПотребителÑки Ñигнал 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "ПотребителÑки Ñигнал 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Идват данни по конзола HFT"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "ПредÑтои Ñпиране на захранването"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "ПредÑтои забиване на ÑиÑтемата"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "ПремеÑтване на процеÑа на друг процеÑор"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "Програмна грешка"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Дадено право за управление чрез конзола HFT"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Отнето право за управление чрез конзола HFT"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Завършена звукова поредица през HFT"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "ЗаÑвка за информациÑ"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ðепознат Ñигнал #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðепознат Ñигнал #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "лошо замеÑтване: липÑва затварÑщ знак „%s“ в %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: на член от маÑив не може да Ñе приÑвои ÑпиÑък"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на процеÑи"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на процеÑи"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за четене"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "именуваниÑÑ‚ програмен канал %s не може да Ñе отвори за запиÑ"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
"именуваниÑÑ‚ програмен канал %s не може да Ñе\n"
"дублира като Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "замеÑтване на команди: знакът „null“ във входа е преÑкочен"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "не може да Ñе Ñъздаде програмен канал за замеÑтване на команди"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "не може да Ñе Ñъздаде дъщерен Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð·Ð° замеÑтване на команди"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "замеÑтване на команди: каналът не може да Ñе дублира като fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: неправилно име за променлива-указател"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: грешно непрÑко замеÑтване"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: грешно име на променлива"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: аргументът е „null“ или не е зададен"
+msgstr "%s: аргументът не е зададен"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: аргументът е „null“ или не е зададен"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: изразът от подниза е < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: лошо замеÑтване"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не може да Ñе задава по този начин"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2053,12 +2111,12 @@ msgstr ""
"бъдещите верÑии на обвивката ще използват изчиÑлÑване като аритметично\n"
"замеÑтване"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "лошо замеÑтване: липÑва затварÑщ знак „`“ в %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "нÑма Ñъвпадение: %s"
@@ -2081,37 +2139,42 @@ msgstr "очаква Ñе „)“"
msgid "`)' expected, found %s"
msgstr "очаква Ñе „)“, а е получено %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: очаква Ñе унарен оператор"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очаква Ñе бинарен оператор"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: очаква Ñе унарен оператор"
+
+#: test.c:881
msgid "missing `]'"
msgstr "липÑва „]“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Ñинтактична грешка: неочакван знак „;“"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "неправилен номер на Ñигнал"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: превишено е макÑималното ниво на влагане на „eval“ (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
"Ñтартиране на предÑтоÑщите прихващаниÑ: неправилна ÑтойноÑÑ‚ в\n"
"trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2119,97 +2182,97 @@ msgstr ""
"Ñтартиране на предÑтоÑщите прихващаниÑ: обработката на Ñигнали е SIG_DFL.\n"
"%d (%s) е преизпратен на текущата обвивка"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "обработка на прихващаниÑ: неправилен Ñигнал %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "грешка при внаÑÑнето на дефинициÑта на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð° „%s“"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "нивото на обвивката (%d) е прекалено голÑмо. Задава Ñе да е 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
"Ñъздаване на локална променлива: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата "
"облаÑÑ‚\n"
"на видимоÑÑ‚"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: на тази променлива не може да Ñе приÑвои ÑтойноÑÑ‚"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: приÑвоÑване на чиÑло на променлива-указател"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
"вÑички локални променливи: липÑва контекÑÑ‚ на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð² текущата облаÑÑ‚ на\n"
"видимоÑÑ‚"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s: аргументът за низа за изнаÑÑне не Ñ‚Ñ€Ñбва да е „null“"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "неправилен знак на Ð¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ %d в низа за изнаÑÑне за %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "липÑва „=“ в низа за изнаÑÑне за %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"изваждане на контекÑÑ‚ на променливи: в началото на Ñтруктурата за променливи "
"на\n"
"обвивката (shell_variables) е нещо, което не е контекÑÑ‚ на функциÑ"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr ""
"изваждане на контекÑÑ‚ на променливи: липÑва контекÑÑ‚ за глобални променливи\n"
"(global_variables)"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"изваждане на облаÑÑ‚: в началото на Ñтруктурата за променливи на обвивката\n"
"(shell_variables) е нещо, което не е временна облаÑÑ‚ в обкръжението"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s не може да Ñе отвори като ФÐЙЛ"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: грешен файлов деÑкриптор за файла за траÑиране"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: е извън допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð´Ð¸Ð°Ð¿Ð°Ð·Ð¾Ð½"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "ÐвторÑки права (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "ÐвторÑки права © 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2300,11 +2363,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [ÐРГУМЕÐТ…]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [ИМЕ[=СТОЙÐОСТ]…]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] ИМЕ[=СТОЙÐОСТ]…"
#: builtins.c:82
@@ -2328,11 +2393,13 @@ msgid "eval [arg ...]"
msgstr "eval [ÐРГУМЕÐТ…]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts ÐИЗ_С_ОПЦИИ ИМЕ [ÐРГУМЕÐТ]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a ИМЕ] [КОМÐÐДР[ÐРГУМЕÐТИ…]] [ПРЕÐÐСОЧВÐÐЕ…]"
#: builtins.c:100
@@ -2466,8 +2533,8 @@ msgstr "umask [-p] [-S] [ÐœÐСКÐ]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [ИД…]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [ИД…]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2561,26 +2628,26 @@ msgstr "printf [-v ПРОМЕÐЛИВÐ] ФОРМÐТ [ÐРГУМЕÐТИ]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ]\n"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ОПЦИЯ] [-A ДЕЙСТВИЕ]\n"
" [-G ШÐБЛОÐ] [-W ДУМИ] [-F ФУÐКЦИЯ] [-C КОМÐÐДÐ] [-X ФИЛТЪР]\n"
" [-P ПРЕДСТÐВКÐ] [-S ÐÐСТÐВКÐ] [ИМЕ…]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o ОПЦИЯ] [-DE] [ИМЕ…]"
+msgstr "compopt [-o|+o ОПЦИЯ] [-DEI] [ИМЕ…]"
#: builtins.c:242
msgid ""
@@ -2591,13 +2658,12 @@ msgstr ""
" [-u ФÐЙЛ_ДЕСКР] [-C ФУÐКЦИЯ] [-c КВÐÐТ] [ÐœÐСИВ]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t] [-u ФÐЙЛ_ДЕСКР]\n"
-" [-C ФУÐКЦИЯ] [-c КВÐÐТ] [ÐœÐСИВ]"
+"readarray [-d РÐЗДЕЛИТЕЛ] [-n БРОЙ] [-O ÐÐЧÐЛО] [-s БРОЙ] [-t]\n"
+" [-u ФÐЙЛ_ДЕСКР] [-C ФУÐКЦИЯ] [-c КВÐÐТ] [ÐœÐСИВ]"
#: builtins.c:256
msgid ""
@@ -2619,17 +2685,17 @@ msgid ""
" defined."
msgstr ""
"Дефиниране или извеждане на Ñиноними.\n"
-"\n"
+" \n"
" „alias“ без аргументи или Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-p“ отпечатва ÑпиÑъка ÑÑŠÑ\n"
" Ñинонимите във формат „ИМЕ=СТОЙÐОСТ“ на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
-"\n"
+" \n"
" Ð’ противен Ñлучай за вÑÑко ИМЕ, за което е зададена ÑтойноÑÑ‚, Ñе\n"
" дефинира Ñиноним. Интервал в ÐºÑ€Ð°Ñ Ð½Ð° СТОЙÐОСТ-та предизвиква Ñинонимно\n"
" замеÑтване на Ñледващата дума при замеÑтването на Ñинонима.\n"
-"\n"
+" \n"
" Опции:\n"
" -p Извежда вÑички Ñиноними във формат за поÑледващо използване\n"
-"\n"
+" \n"
" Изходен код:\n"
" alias връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n"
" не е дефиниран Ñиноним."
@@ -2644,10 +2710,10 @@ msgid ""
" Return success unless a NAME is not an existing alias."
msgstr ""
"Премахване на ИМЕната от ÑпиÑъка Ñ Ð´ÐµÑ„Ð¸Ð½Ð¸Ñ€Ð°Ð½Ð¸Ñ‚Ðµ Ñиноними.\n"
-"\n"
+" \n"
" Опции:\n"
" -a премахване на вÑички Ñиноними.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща 0, оÑвен в Ñлучаите, когато Ñе зададе ИМЕ, за което\n"
" не е дефиниран Ñиноним."
@@ -2694,13 +2760,13 @@ msgid ""
" bind returns 0 unless an unrecognized option is given or an error occurs."
msgstr ""
"Задаване на клавишни комбинации и променливи на readline.\n"
-"\n"
+" \n"
" ПриÑвоÑване на поÑледователноÑÑ‚ от клавиши на Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¸Ð»Ð¸ Ð¼Ð°ÐºÑ€Ð¾Ñ Ð¾Ñ‚\n"
" readline или задаване на променлива на readline. СинтакÑиÑÑŠÑ‚ Ñ\n"
" аргументи без опции е еквивалентен на този във файла „~/.inputrc“, но\n"
" Ñ‚Ñ€Ñбва да Ñе подаде като единÑтвен аргумент. Ðапр:\n"
" bind '\"\\C-x\\C-r\": re-read-init-file'.\n"
-"\n"
+" \n"
" Опции:\n"
" -m ПОДРЕДБР\n"
" Използване на ПОДРЕДБÐта като подредба на функциите на "
@@ -2740,7 +2806,7 @@ msgstr ""
" -X Извеждане на клавишните комбинации зададени Ñ â€ž-x“ и Ñвързаните Ñ "
"Ñ‚ÑÑ…\n"
" команди във форма, коÑто може да Ñе ползва и за вход\n"
-"\n"
+" \n"
" Изходен код:\n"
" bind връща 0, оÑвен когато е зададена непозната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне "
"грешка."
@@ -2775,18 +2841,17 @@ msgid ""
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
"Продължаване на цикъл чрез „for“, „while“ или „until“.\n"
-"\n"
+" \n"
" Продължаване ÑÑŠÑ Ñледващата Ð¸Ñ‚ÐµÑ€Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ цикъл, организиран Ñ â€žfor“, "
"„while“\n"
" или „until“. Ðко е зададен БРОЙ, Ñе продължава ÑÑŠÑ Ñледващата "
"итерациÑ\n"
" на Ð¾Ð±Ñ…Ð²Ð°Ñ‰Ð°Ñ‰Ð¸Ñ Ñ†Ð¸ÐºÑŠÐ» зададен Ñ Ñ‚Ð¾Ð·Ð¸ БРОЙ.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е зададен БРОЙ, който е по-малък от 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2800,13 +2865,13 @@ msgid ""
" not a shell builtin."
msgstr ""
"Изпълнение на вградени команди.\n"
-"\n"
+" \n"
" Изпълнение на ВГРÐДЕÐÐта_КОМÐÐÐ”Ð Ñ ÐРГУМЕÐТи, без да Ñе Ñ‚ÑŠÑ€Ñи нормална\n"
" команда. Това е полезно в Ñлучаите, когато иÑкате да Ñъздадете "
"вградена\n"
" команда като Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, но във функциÑта иÑкате да изпълните\n"
" вградената команда.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на ВГРÐДЕÐÐта_КОМÐÐДРили лъжа, ако извиканата \n"
" ВГРÐДЕÐÐ_КОМÐÐДРвÑъщноÑÑ‚ не е вградена команда."
@@ -2886,23 +2951,23 @@ msgid ""
" -P is used; non-zero otherwise."
msgstr ""
"СмÑна на работната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° обвивката.\n"
-"\n"
+" \n"
" СмÑна на текущата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð´Ð° е ДИРЕКТОРИЯ. Променливата „HOME“ е\n"
" Ñтандартната директориÑ.\n"
-"\n"
+" \n"
" Променливата „CDPATH“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¿ÑŠÑ‚Ñ Ð·Ð° Ñ‚ÑŠÑ€Ñене на директории, които "
"могат да\n"
" Ñъдържат ДИРЕКТОРИЯта. Директориите в „CDPATH“ Ñа разделени Ñ â€ž:“. \n"
" ЛипÑващо име на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ð²Ð° текущата директориÑ, Ñ‚.е. „.“. Ðко "
"името\n"
" на ДИРЕКТОРИЯта започва Ñ Ð½Ð°ÐºÐ»Ð¾Ð½ÐµÐ½Ð° черта „/“, „CDPATH“ не Ñе ползва.\n"
-"\n"
+" \n"
" Ðко директориÑта не е открита, но е зададена опциÑта на обвивката\n"
" „cdable_vars“, то думата Ñе пробва като име на променлива. Ðко "
"променливата\n"
" има ÑтойноÑÑ‚, то директориÑта Ñе ÑÐ¼ÐµÐ½Ñ ÐºÑŠÐ¼ ÑтойноÑтта на тази "
"променлива.\n"
-" \n"
+" \n"
" Опции:\n"
" -L налага Ñледването на Ñимволните връзки. Символните връзки в\n"
" ДИРЕКТОРИЯта Ñе обработват Ñлед указателите към горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ "
@@ -2918,15 +2983,15 @@ msgstr ""
" -@ на ÑиÑтемите Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на разширени атрибути файлът Ñе "
"предÑтавÑ\n"
" като директориÑ, в коÑто Ñа атрибутите.\n"
-"\n"
-" Стандартно Ñимволните връзки Ñе Ñледват, вÑе едно е зададена опциÑта „-"
+" \n"
+" Стандартно Ñимволните връзки Ñе Ñледват, вÑе едно е зададена опциÑта „-"
"L“\n"
-"\n"
-" Изходен код:\n"
-" Връща 0 при ÑмÑна на директориÑта. Когато е зададена опциÑта „-P“, 0 "
+" \n"
+" Изходен код:\n"
+" Връща 0 при ÑмÑна на директориÑта. Когато е зададена опциÑта „-P“, 0 "
"Ñе\n"
-" връща при уÑпешно задаване на променливата „PWD„. Във вÑички оÑтанали\n"
-" Ñлучаи изходът е ненулев."
+" връща при уÑпешно задаване на променливата „PWD„. Във вÑички оÑтанали\n"
+" Ñлучаи изходът е ненулев."
#: builtins.c:425
msgid ""
@@ -3049,6 +3114,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3123,7 +3190,7 @@ msgstr ""
"задаването\n"
" на ÑтойноÑÑ‚ на променлива."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3133,7 +3200,7 @@ msgstr ""
" \n"
" Синоним на „declare“. Виж „help declare“."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3162,8 +3229,7 @@ msgstr ""
"на\n"
" ÑтойноÑÑ‚ на променлива, или в момента не Ñе изпълнÑва функциÑ."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3203,17 +3269,17 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
"Извеждане на аргументите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
-"\n"
+" \n"
" Извеждане на ÐРГУМЕÐТите на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´ разделени Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð²Ð°Ð»Ð¸ и\n"
" поÑледвани от нов ред.\n"
-"\n"
+" \n"
" Опции:\n"
" -n не Ñе извежда знак за нов ред.\n"
" -e включва Ñе интерпретирането на знаците, изброени по-долу, "
"екранирани\n"
" Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð° наклонена черта — „\\“\n"
" -Е изрично Ñе Ñпира интерпретирането на долните знаци\n"
-"\n"
+" \n"
" „echo“ поддържа Ñледните екранирани знаци:\n"
" \\a ÑиÑтемен звънец\n"
" \\b триене назад\n"
@@ -3227,18 +3293,23 @@ msgstr ""
" \\v вертикална табулациÑ\n"
" \\\\ обратно наклонена черта\n"
" \\0nnn\n"
-" знакът Ñ ÐºÐ¾Ð´ в ASCII NNN (в оÑмична бройна ÑиÑтема). NNN може да "
-"Ñе\n"
-" ÑÑŠÑтои от 1 до 3 оÑмични цифри.\n"
+" знакът Ñ ÐºÐ¾Ð´ в ASCII NNN (в оÑмична бройна ÑиÑтема).\n"
+" NNN може да Ñе ÑÑŠÑтои от 1 до 3 оÑмични цифри.\n"
" \\xHH\n"
-" знакът Ñ ÐºÐ¾Ð´ в ASCII HH (в шеÑтнайÑетична бройна ÑиÑтема). HH "
-"може\n"
-" да Ñе ÑÑŠÑтои от 1 до 2 шеÑтнайÑетични цифри.\n"
-"\n"
+" знакът Ñ ÐºÐ¾Ð´ в ASCII HH (в шеÑтнайÑетична бройна ÑиÑтема).\n"
+" HH може да Ñе ÑÑŠÑтои от 1 до 2 шеÑтнайÑетични цифри.\n"
+" \\uHHHH\n"
+" знакът Ñ ÐºÐ¾Ð´ в Unicode HHHH (в шеÑтнайÑетична бройна ÑиÑтема).\n"
+" HHHH може да Ñе ÑÑŠÑтои от 1 до 4 шеÑтнайÑетични цифри.\n"
+" \\UHHHHHHHH\n"
+" знакът Ñ ÐºÐ¾Ð´ в Unicode HHHHHHHH (в шеÑтнайÑетична бройна "
+"ÑиÑтема).\n"
+" HHHHHHHH може да Ñе ÑÑŠÑтои от 1 до 8 шеÑтнайÑетични цифри.\n"
+" \n"
" Изходен код:\n"
" Връща 0, оÑвен ако не възникне грешка при извеждането."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3261,7 +3332,7 @@ msgstr ""
" Изходен код:\n"
" Връща 0, оÑвен ако възникне грешка при извеждането."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3322,7 +3393,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако ИМЕто не е на вградена команда или не възникне грешка."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3341,7 +3412,8 @@ msgstr ""
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на командата или код за уÑпех, ако командата е нулева."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3374,15 +3446,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
"Ðнализиране на опциите и аргументите.\n"
-"\n"
+" \n"
" getopts Ñе използва от процедурите на обвивката за анализа на "
"позиционните\n"
" аргументи и опции.\n"
@@ -3430,13 +3502,13 @@ msgstr ""
" „getopts“ по принцип анализира позиционните аргументи ($0 — $9), но ако "
"Ñа\n"
" дадени повече аргументи, те биват анализирани вмеÑто това.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща 0 при откриването на опциÑ. Връща друга ÑтойноÑÑ‚ при Ñтигането "
"на\n"
" поÑледната Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ при възникването на грешка."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3459,26 +3531,26 @@ msgid ""
"occurs."
msgstr ""
"ЗамеÑтване на обвивката Ñ Ð´Ð°Ð´ÐµÐ½Ð°Ñ‚Ð° команда.\n"
-"\n"
+" \n"
" ИзпълнÑване на КОМÐÐДÐта, като Ñ‚Ñ Ð·Ð°Ð¼ÐµÑтва текущата обвивка. "
"ÐРГУМЕÐТите\n"
" Ñе подават на КОМÐÐДÐта. Ðко не е дадена КОМÐÐДÐ, пренаÑочваниÑта Ñе\n"
" извършват в текущата обвивка.\n"
-"\n"
+" \n"
" Опции:\n"
" -a ИМЕ ИМЕ-то Ñе подава като Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n"
" -c изпълнÑване на КОМÐÐДÐта в празна Ñреда\n"
" -l поÑтавÑне на тире в Ð½ÑƒÐ»ÐµÐ²Ð¸Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚ на КОМÐÐДÐта\n"
-"\n"
+" \n"
" Ðко КОМÐÐДÐта не може да бъде изпълнена, Ñ‚Ñ€Ñбва да ÑъщеÑтвува "
"неинтерактивна\n"
" обвивка, оÑвен ако не е зададена опциÑта на обвивката „execfail“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен когато КОМÐÐДÐта не е открита или възникне грешка при\n"
" пренаÑочването."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3491,7 +3563,7 @@ msgstr ""
"код\n"
" е този на поÑледната изпълнена команда."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3505,7 +3577,7 @@ msgstr ""
"изпълнена\n"
" в обвивка, коÑто не е входна."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3535,7 +3607,7 @@ msgid ""
"occurs."
msgstr ""
"Извеждане и/или изпълнение на команди от иÑториÑта.\n"
-"\n"
+" \n"
" fc Ñе използва за изброÑването или редактирането и повторното изпълнение "
"на\n"
" команди от ÑпиÑъка на иÑториÑта.\n"
@@ -3563,12 +3635,12 @@ msgstr ""
" „r cc“, ще Ñе изпълни поÑледната команда, коÑто започва Ñ â€žcc“, а "
"когато\n"
" Ñе въведе Ñамо „r“, ще Ñе изпълни поÑледната команда.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща 0 или изхода от поÑледната команда, който не е 0 в Ñлучай на "
"грешка."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3580,15 +3652,15 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
"Задаване на задача да е текуща.\n"
-"\n"
+" \n"
" Изважда ЗÐДÐЧРот фонов режим и Ñ Ð¿Ñ€Ð°Ð²Ð¸ текуща задача. Ðко липÑва\n"
" аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред обвивката.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Изходът от командата, коÑто е зададена да е текуща или грешка, ако при\n"
" поÑтавÑнето на задачата от фонов към текущ режим възникне такава."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3602,15 +3674,15 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
"ПоÑтавÑне на задачи във фонов режим.\n"
-"\n"
+" \n"
" ПоÑÑ‚Ð°Ð²Ñ Ð²ÑÑка ЗÐДÐЧРвъв фонов режим, вÑе едно е била Ñтартирана Ñ â€ž&“.\n"
" Ðко липÑва аргумент ЗÐДÐЧÐ, Ñе използва текущата задача Ñпоред "
"обвивката.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако управлението на задачи е изключено или възникне грешка."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3634,11 +3706,11 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
"ЗапомнÑне или извеждане на меÑтоположениÑта на програми.\n"
-"\n"
+" \n"
" ОпределÑне и запомнÑне на пълното име Ñ Ð¿ÑŠÑ‚Ñ Ð½Ð° вÑÑко ИМЕ. Ðко не Ñа "
"дадени\n"
" аргументи, Ñе извежда Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° вÑички запомнени команди.\n"
-"\n"
+" \n"
" Опции:\n"
" -d ЗабравÑне на запомненото меÑтоположение на вÑички ИМЕна\n"
" -l Извеждане във формат за преизползване като вход\n"
@@ -3653,12 +3725,11 @@ msgstr ""
" ИМЕ Ð’ÑÑко име Ñе Ñ‚ÑŠÑ€Ñи в Ð¿ÑŠÑ‚Ñ Ð·Ð° изпълнение „PATH“ и при намирането "
"му\n"
" Ñе Ð´Ð¾Ð±Ð°Ð²Ñ Ð² ÑпиÑъка ÑÑŠÑ Ð·Ð°Ð¿Ð¾Ð¼Ð½ÐµÐ½Ð¸ команди.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако ИМЕто не бъде открито или е дадена неправилна опциÑ."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3702,8 +3773,7 @@ msgstr ""
" 0, оÑвен ако Ð½Ð¸ÐºÐ¾Ñ Ð²Ð³Ñ€Ð°Ð´ÐµÐ½Ð° команда не Ñъвпада Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° или е дадена\n"
" неправилна опциÑ."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3738,16 +3808,17 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
"Извеждане и управление на ÑпиÑъка на иÑториÑта.\n"
-"\n"
+" \n"
" Отпечатване на ÑпиÑъка на иÑториÑта Ñ Ð½Ð¾Ð¼ÐµÑ€Ð° на ред. Редовете, които "
"Ñа\n"
" отбелÑзани ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „*“, Ñа били променени. Ðргументът N указва да Ñе\n"
" извеждат Ñамо N на брой реда.\n"
-"\n"
+" \n"
" Опции:\n"
" -c изчиÑтване на ÑпиÑъка, като Ñе изтриват вÑички елементи от него.\n"
" -d ПОЗИЦИЯ\n"
" изтрива елемента в иÑториÑта намиращ Ñе поÑочената ПОЗИЦИЯ.\n"
+" Отрицателните позиции Ñе броÑÑ‚ от ÐºÑ€Ð°Ñ Ð½Ð° иÑториÑта\n"
" -a Ð´Ð¾Ð±Ð°Ð²Ñ Ð¸ÑториÑта от текущата ÑеÑÐ¸Ñ ÐºÑŠÐ¼ файла Ñ Ð¸ÑториÑта.\n"
" -n прочитане на непрочетените редове от файла Ñ Ð¸ÑториÑта и добавÑне "
"към\n"
@@ -3778,7 +3849,7 @@ msgstr ""
" Изходен код:\n"
" 0. Ðко възникне грешка или е подадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð²Ñ€ÑŠÑ‰Ð° грешка."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3802,10 +3873,10 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
"Извежда ÑÑŠÑтоÑнието на задачите.\n"
-"\n"
+" \n"
" Извежда ÑпиÑък Ñ Ð°ÐºÑ‚Ð¸Ð²Ð½Ð¸Ñ‚Ðµ задачи. ЗÐДÐЧÐта ограничава информациÑта до\n"
" Ñебе Ñи. Без опции Ñе отпечатва ÑÑŠÑтоÑнието на вÑички активни задачи.\n"
-"\n"
+" \n"
" Опции:\n"
" -l включва и идентификатора на процеÑите заедно ÑÑŠÑ Ñтандартната\n"
" информациÑ.\n"
@@ -3814,18 +3885,17 @@ msgstr ""
" -p извежда Ñамо идентификаторите на процеÑите.\n"
" -r ограничаване на изхода Ñамо до изпълнÑваните задачи.\n"
" -s ограничаване на изхода Ñамо до Ñпрените задачи.\n"
-"\n"
-" Ðко е зададена опциÑта „-x“, КОМÐÐДÐта Ñе изпълнÑва, Ñлед като вÑички\n"
-" ЗÐДÐЧи, които Ñе поÑвÑват като ÐРГУМЕÐТи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° "
+" \n"
+" Ðко е зададена опциÑта „-x“, КОМÐÐДÐта Ñе изпълнÑва, Ñлед като вÑички\n"
+" ЗÐДÐЧи, които Ñе поÑвÑват като ÐРГУМЕÐТи, Ñе заменÑÑ‚ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð° "
"на\n"
-" водача на групата процеÑи.\n"
-"\n"
-" Изходен код:\n"
-" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникни грешка. Ðко "
-"Ñе\n"
-" ползва „-x“, връща изходното ÑÑŠÑтоÑние на КОМÐÐДÐта."
+" водача на групата процеÑи.\n"
+" \n"
+" Изходен код:\n"
+" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникни грешка. Ðко Ñе\n"
+" ползва „-x“, връща изходното ÑÑŠÑтоÑние на КОМÐÐДÐта."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3856,7 +3926,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ неÑъщеÑтвуваща ЗÐДÐЧÐ."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3879,11 +3949,11 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
"Изпращане на Ñигнал към задача.\n"
-"\n"
+" \n"
" Изпращане на СИГÐÐЛа на процеÑа Ñ Ñ‚Ð°ÐºÑŠÐ² ИДЕÐТИФИКÐТОР_ÐÐ_ПРОЦЕС (или\n"
" задачата Ñ Ñ‚Ð°ÐºÑŠÐ² ИДЕÐТИФИКÐТОР_ÐÐ_ЗÐДÐЧÐ). Ðко Ñигнал Ñ Ñ‚Ð°ÐºÐ¾Ð²Ð° име или\n"
" номер не ÑъщеÑтвува, Ñе използва SIGTERM.\n"
-"\n"
+" \n"
" Опции:\n"
" -s СИГÐÐЛ\n"
" СИГÐÐЛ Ñе интерпретира като име на Ñигнал\n"
@@ -3894,7 +3964,7 @@ msgstr ""
"имена\n"
" да Ñе изброÑÑ‚.\n"
" -L Ñиноним на „-l“\n"
-"\n"
+" \n"
" „kill“ е команда вградена в обвивката поради две причини: позволÑва да "
"Ñе\n"
" използват и идентификатори на задачи оÑвен идентификатори на процеÑи, а "
@@ -3902,11 +3972,11 @@ msgstr ""
" ако Ñте пуÑнали макÑимално Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð·Ð° Ð²Ð°Ñ Ð±Ñ€Ð¾Ð¹ процеÑи, нÑма да ви "
"Ñе\n"
" налага да пуÑнете още един процеÑ, за да убиете друг.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0. Ðко възникне грешка или е подадена неправилна опциÑ, връща грешка."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3951,7 +4021,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
"ИзчиÑлÑване на аритметичен израз.\n"
-"\n"
+" \n"
" Ð’Ñеки ÐРГУМЕÐТ е аритметичен израз, който Ñе бъде изчиÑлен. "
"ИзчиÑлениÑта\n"
" Ñе извършват в аритметика Ñ Ñ†ÐµÐ»Ð¾Ñ‡Ð¸Ñлени ÑтойноÑти Ñ Ð¿Ð¾ÑтоÑнна широчина\n"
@@ -3994,8 +4064,7 @@ msgstr ""
" Ðко поÑледниÑÑ‚ ÐРГУМЕÐТ Ñе изчиÑлÑва като 0, „let“ връща 1. Ð’ противен\n"
" Ñлучай — връща 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -4047,7 +4116,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
"Изчитане на ред от ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ и разделÑнето му по полета.\n"
-"\n"
+" \n"
" От ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð²Ñ…Ð¾Ð´ или от Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¸Ñ Ð´ÐµÑкриптор ФД, ако е използвана "
"опциÑта\n"
" „-u“, Ñе прочита един ред. Редът Ñе Ñ€Ð°Ð·Ð´ÐµÐ»Ñ Ð½Ð° полета — думи. Първата "
@@ -4056,10 +4125,10 @@ msgstr ""
" поÑледното ИМЕ Ñе приÑвоÑват оÑтаващите думи. Като разделители на думи "
"Ñе\n"
" използват Ñамо знаците указани в променливата „IFS“.\n"
-"\n"
+" \n"
" Ðко не Ñа дадени ИМЕна, прочетениÑÑ‚ ред Ñе запазва в променливата "
"„REPLY“.\n"
-"\n"
+" \n"
" Опции:\n"
" -a прочетените думи Ñе приÑвоÑват поÑледователно на елементите на "
"ÐœÐСИВа,\n"
@@ -4068,8 +4137,7 @@ msgstr ""
" четенето продължава до прочитането на Ð¿ÑŠÑ€Ð²Ð¸Ñ Ð·Ð½Ð°Ðº, който приÑÑŠÑтва "
"в\n"
" променливата „DELIM“, а не до минаването на нов ред.\n"
-" -e за четене на реда Ñе използва readline, когато обвивката е\n"
-" интерактивна.\n"
+" -e за четене на реда Ñе използва readline\n"
" -i ТЕКСТ\n"
" за първоначален текÑÑ‚ в readline Ñе ползва ТЕКСТ\n"
" -n БРОЙ_ЗÐÐЦИ\n"
@@ -4099,7 +4167,7 @@ msgstr ""
" да чете данни и връща код 0, Ñамо ако от ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² "
"деÑкриптор\n"
" могат да Ñе прочетат данни.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако не Ñе Ñрещне знак за край на файл EOF, изтече време повече "
"от\n"
@@ -4107,7 +4175,7 @@ msgstr ""
" грешка при задаване на ÑтойноÑÑ‚ на променлива или е зададен неправилен\n"
" файлов деÑкриптор като аргумент на -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4119,18 +4187,18 @@ msgid ""
" 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"
+" поÑледно изпълнената команда във функциÑта или Ñкрипта.\n"
+" \n"
+" Изходен код:\n"
+" Връща ЦИФРОВиÑ_КОД или грешка, ако обвивката в момента не изпълнÑва "
"функциÑ\n"
-" или Ñкрипт."
+" или Ñкрипт."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4216,10 +4284,10 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
"Задаване или изтриване на позиционни параметри и опции на обвивката.\n"
-"\n"
+" \n"
" ПромÑна на ÑтойноÑтите на позиционните параметри и опции на обвивката,\n"
" Извеждане на имената и ÑтойноÑтите на променливите на обвивката.\n"
-"\n"
+" \n"
" Опции:\n"
" -a ОтбелÑзване на променливите, които Ñа Ñъздадени или променени, да\n"
" бъдат изнеÑени.\n"
@@ -4315,11 +4383,11 @@ msgstr ""
"„n“ (получават\n"
" Ñе Ñ â€ž$1“, „$2“,… „${n}“). Ðко не Ñа зададени ÐРГументи, Ñе извеждат\n"
" вÑички променливи на Ñредата.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако не е зададена неправилна опциÑ."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4361,7 +4429,7 @@ msgstr ""
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е Ñамо за\n"
" четене."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4398,7 +4466,7 @@ msgstr ""
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е "
"неправилно."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4440,7 +4508,7 @@ msgstr ""
" 0, оÑвен ако е зададена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ нÑкое от ИМЕната е "
"неправилно."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4451,16 +4519,16 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
"ИзмеÑтване на позиционните параметри.\n"
-"\n"
+" \n"
" Преименуване на позиционните параметри „БРОЙ+1“, „БРОЙ+2“… на 1, 2…. "
"Така\n"
" те Ñтават доÑтъпни не като ${БРОЙ+1}…, като „$1“…. Ðко не е зададена\n"
" ÑтойноÑÑ‚ БРОЙ, Ñе използва 1.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако БРОÑÑ‚ е отрицателно или по-голÑмо от ÑтойноÑтта „$#“."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4474,20 +4542,20 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
"ИзпълнÑване на команди от файл в текущата обвивка\n"
-"\n"
+" \n"
" Изчитане и изпълнение на командите от ФÐЙЛа и изход. Директориите "
"опиÑани в\n"
" променливата „PATH“ Ñе използват за изпълнението на командите от ФÐЙЛа. "
"Ðко\n"
" Ñа зададени ÐРГУМЕÐТИ, те Ñе превръщат в позиционни аргументи при\n"
" изпълнението на ФÐЙЛа.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща ÑÑŠÑтоÑнието на поÑледно изпълнената команда във ФÐЙЛа. Ðко той "
"не\n"
" може да бъде открит, изходът е грешка."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4513,7 +4581,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако не възникне грешка или управлението на задачи е изключено."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4596,7 +4664,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
"ИзчиÑлÑване на уÑловен израз.\n"
-"\n"
+" \n"
" Изход Ñ ÐºÐ¾Ð´ 0 (иÑтина) или 1 (лъжа) в завиÑимоÑÑ‚ от ÑтойноÑтта на "
"ИЗРÐЗа.\n"
" Изразите могат да бъдат унарни или бинарни. Унарните най-чеÑто Ñе "
@@ -4607,7 +4675,7 @@ msgstr ""
" \n"
" Поведението на теÑтовете завиÑи от Ð±Ñ€Ð¾Ñ Ð½Ð° аргументите. За цÑлоÑтно\n"
" опиÑание прочетете Ñтраниците от ръководÑтвото на bash.\n"
-"\n"
+" \n"
" Файлови оператори:\n"
" \n"
" -a ФÐЙЛ ИÑтина, ако ФÐЙЛът ÑъщеÑтвува.\n"
@@ -4683,7 +4751,7 @@ msgstr ""
" 0, ако ИЗРÐЗът е верен. Грешка, когато ИЗРÐЗът е неверен или е даден\n"
" неправилен аргумент."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4691,14 +4759,14 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
"ИзчиÑлÑване на уÑловен израз.\n"
-"\n"
+" \n"
" Това е Ñиноним на вградената команда „test“, но поÑледниÑÑ‚ аргумент "
"Ñ‚Ñ€Ñбва\n"
" задължително да е знакът „]“, който да ÑъответÑтва на отварÑщата "
"квадратна\n"
" Ñкоба „[“."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4718,7 +4786,7 @@ msgstr ""
" Изходен код:\n"
" Винаги 0."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4762,11 +4830,11 @@ msgid ""
"given."
msgstr ""
"Прихващане на Ñигналите и другите ÑъбитиÑ.\n"
-"\n"
+" \n"
" Дефинира и задейÑтва функции за обработка, когато обвивката получи "
"Ñигнал\n"
" или възникне друго Ñъбитие.\n"
-"\n"
+" \n"
" Командата ÐРГУМЕÐТ ще бъде прочетена и изпълнена, когато обвивката "
"получи\n"
" УКÐЗÐÐиÑ_СИГÐÐЛ(и). Ðко ÐРГУМЕÐТът липÑва (и Ñе подава единичен\n"
@@ -4774,7 +4842,7 @@ msgstr ""
"първоначалната\n"
" Ñи ÑтойноÑÑ‚. Ðко ÐРГУМЕÐТът е нулевиÑÑ‚ низ, вÑеки УКÐЗÐÐ_СИГÐÐЛ Ñе\n"
" пренебрегва от обвивката и командите, които Ñе Ñтартират през неÑ.\n"
-"\n"
+" \n"
" Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „EXIT (0)“, то командата ÐРГУМЕÐТ Ñе изпълнÑва "
"от\n"
" обвивката при изход. Ðко УКÐЗÐÐиÑÑ‚_СИГÐÐЛ е „DEBUG“, ÐРГУМЕÐТът Ñе\n"
@@ -4785,7 +4853,7 @@ msgstr ""
"е\n"
" „ERR“, ÐРГУМЕÐТът Ñе изпълнÑва Ñлед вÑÑка грешка, коÑто би предизвикала\n"
" изход от обвивката при Ñтартирането Ñ Ñ Ð¾Ð¿Ñ†Ð¸Ñта „-e“.\n"
-"\n"
+" \n"
" Ðко не Ñа дадени аргументи, Ñе отпечатват командите приÑвоени на вÑички\n"
" прихващаниÑ.\n"
" \n"
@@ -4793,7 +4861,7 @@ msgstr ""
" -l отпечатва ÑпиÑъка Ñ Ð¸Ð¼ÐµÐ½Ð°Ñ‚Ð° на Ñигналите и ÑъответÑтващите им "
"номера.\n"
" -p извеждат Ñе командите Ñвързани Ñ Ð²Ñеки УКÐЗÐÐ_СИГÐÐЛ.\n"
-"\n"
+" \n"
" Ð’Ñеки УКÐЗÐÐ_СИГÐÐЛ е или име на Ñигнал от файла „signal.h“ или номер "
"на\n"
" Ñигнал.\n"
@@ -4802,11 +4870,11 @@ msgstr ""
" „SIG“ не е задължителна.\n"
" Сигнал може да бъде изпратен на обвивката Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „kill -signal $"
"$“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е зададен неправилен Ñигнал или опциÑ."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4867,7 +4935,8 @@ msgstr ""
" 0, ако вÑички подадени ИМЕна Ñа открити, неуÑпех, ако нÑкое от Ñ‚ÑÑ… "
"липÑва."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4898,6 +4967,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4916,12 +4986,12 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"ПромÑна на реÑурÑите на обвивката.\n"
-"\n"
+" \n"
" Командата оÑъщеÑтвÑва контрол върху реÑурÑите, които Ñа доÑтъпни на\n"
" процеÑите Ñтартирани през обвивката върху ÑиÑтемите, които поддържат "
"такова\n"
" управление.\n"
-"\n"
+" \n"
" Опции:\n"
" -S използване на „мекото“ ограничение на реÑурÑ\n"
" -H използване на „твърдото“ ограничение на реÑурÑ\n"
@@ -4950,7 +5020,7 @@ msgstr ""
" -T макÑималниÑÑ‚ брой нишки\n"
" \n"
" Ðе вÑички Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ñа налични на вÑички платформи.\n"
-"\n"
+" \n"
" Ðко е зададено ОГРÐÐИЧЕÐИЕ, то това е новата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ "
"реÑурÑ.\n"
" Специалните ÑтойноÑти „soft“, „hard“ и „unlimited“ означават текущите "
@@ -4959,16 +5029,16 @@ msgstr ""
" текущата ÑтойноÑÑ‚ на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ñ€ÐµÑурÑ. Ðко не е зададена опциÑ, Ñе "
"приема,\n"
" че е зададена „-f“.\n"
-"\n"
+" \n"
" СтойноÑтите Ñа в блокове от по 1024 байта, Ñ Ð¸Ð·ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ðµ на:\n"
" ⃠опциÑта „-t“, при коÑто ÑтойноÑтта е в Ñекунди;\n"
" ⃠опциÑта „-p“, при коÑто блоковете Ñа от по 512 байта;\n"
" ⃠опциÑта „-u“, при коÑто ÑтойноÑтта е точниÑÑ‚ брой процеÑи.<\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако не възникни грешка или е дадена неправилна опциÑ."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -5004,7 +5074,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако ÐœÐСКÐта или нÑÐºÐ¾Ñ Ð¾Ñ‚ зададените опции Ñа неправилни."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -5016,15 +5086,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Изчакване на завършването задача и връщане на Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n"
" \n"
@@ -5035,16 +5115,20 @@ msgstr ""
" изходниÑÑ‚ код е 0. Ðко ИДентификаторът е указател на задача, Ñе "
"изчакват\n"
" вÑички процеÑи в конвейера на задачата.\n"
-"\n"
-" Ðко е зададена опциÑта „-n“ Ñе изчаква ÐºÑ€Ð°Ñ Ð½Ð° работата на Ñледващата "
-"задача\n"
-" и Ñе връща Ð½ÐµÐ¹Ð½Ð¸Ñ ÐºÐ¾Ð´.\n"
+" \n"
+" Ðко е зададена опциÑта „-n“, Ñе изчаква ÐºÑ€Ð°Ñ Ð½Ð° работата на Ñледващата\n"
+" задача и Ñе връща Ð½ÐµÐ¹Ð½Ð¸Ñ ÐºÐ¾Ð´.\n"
+" \n"
+" Ðко е зададена опциÑта „-n“ и управлението на задачите е включено, Ñе\n"
+" изчаква завършването на процеÑа/задачата Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ‚Ðµ ИДентификатори "
+"вмеÑто\n"
+" ÑмÑната на ÑÑŠÑтоÑнието им.\n"
" \n"
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледната задача или процеÑ. Ðко е зададена\n"
" неправилна опциÑ, връща грешка."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -5059,19 +5143,19 @@ msgid ""
" option is given."
msgstr ""
"Изчакване на ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð¸ докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´.\n"
-"\n"
+" \n"
" Изчакване на вÑички указани процеÑи и докладване за Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. Ðко "
"не е\n"
" зададен ИДентификатор_ПРоцeÑ, вÑички текущо активни дъщерни процеÑи Ñе\n"
" изчакват и изходниÑÑ‚ код е 0. ИДентификатор_ПРоцeÑ Ñ‚Ñ€Ñбва да "
"ÑъответÑтва на\n"
" нÑкой процеÑ.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Ð˜Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на процеÑа Ñ Ð¿Ð¾ÑÐ»ÐµÐ´Ð½Ð¸Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€. Грешка, ако е даден\n"
" неправилен идентификатор или е дадена неправилна опциÑ."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5084,7 +5168,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда за вÑеки член в ÑпиÑък от елементи\n"
-"\n"
+" \n"
" Цикълът „for“ изпълнÑва поÑледователноÑÑ‚ от команди за вÑеки член в "
"ÑпиÑък\n"
" от елементи. Ðко блокът „в ДУМИ…“ не приÑÑŠÑтва, използва Ñе „in \"$@"
@@ -5092,11 +5176,11 @@ msgstr ""
" За вÑеки елемент в ДУМИте, ИМЕто Ñе задава да е елементът и Ñе "
"изпълнÑват\n"
" КОМÐÐДИте.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5122,11 +5206,11 @@ msgstr ""
" ИЗРÐЗ_1, ИЗРÐЗ_2, и ИЗРÐЗ_3 Ñа аритметични изрази. Ð’Ñеки изпуÑнат израз "
"Ñе\n"
" изчиÑлÑва да е 1.\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5146,7 +5230,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Избор на думи от ÑпиÑък и изпълнение на команди.\n"
-"\n"
+" \n"
" ДУМИте биват замеÑтвани, което води до Ñъздаването на ÑпиÑък Ñ Ð´ÑƒÐ¼Ð¸.\n"
" Ðаборът от замеÑтените думи бива отпечатан на изхода за Ñтандартната\n"
" грешка, като вÑÑка от Ñ‚ÑÑ… Ñе предшеÑтва от номер. Ðко клаузата „in "
@@ -5164,11 +5248,11 @@ msgstr ""
" на ИМЕ. ПрочетениÑÑ‚ ред Ñе запазва в променливата REPLY. КОМÐÐДИте Ñе\n"
" изпълнÑват Ñлед вÑеки избор до изпълнÑването на команда за прекъÑване\n"
" (break).\n"
-"\n"
+" \n"
" Изходен код:\n"
" Връща Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на поÑледно изпълнената команда."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5184,21 +5268,21 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
"Отпечатване на времето за изпълнение на програмен канал.\n"
-"\n"
+" \n"
" Изпълнение на ПРОГРÐÐœÐиÑ_КÐÐÐЛ и отпечатване на обобщение за реалното,\n"
" потребителÑкото и ÑиÑтемно процеÑорни времена, които изпълнението на\n"
" ПРОГРÐÐœÐиÑ_КÐÐÐЛ отнема.\n"
-"\n"
+" \n"
" Опции:\n"
" -p: извеждане на ÑтатиÑтиката за времето във формат POSIX\n"
-"\n"
+" \n"
" СтойноÑтта на променливата на Ñредата „TIMEFORMAT“ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ\n"
" формат.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на ПРОГРÐÐœÐиÑ_КÐÐÐЛ."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5209,15 +5293,15 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команди на базата на напаÑване по шаблон.\n"
-"\n"
+" \n"
" Избирателно Ñе изпълнÑват КОМÐÐДИ на база ДУМÐ, коÑто напаÑва на "
"ШÐБЛОÐ.\n"
" Шаблоните Ñе разделÑÑ‚ ÑÑŠÑ Ð·Ð½Ð°ÐºÐ° „|“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5238,7 +5322,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда на базата на уÑловие.\n"
-"\n"
+" \n"
" Първо Ñе изпълнÑват командите в блока „if КОМÐÐДИ“. Ðко изходниÑÑ‚ код е "
"0,\n"
" то Ñе изпълнÑва блокът „then КОМÐÐДИ“. Ð’ противен Ñлучай поÑледователно "
@@ -5254,11 +5338,11 @@ msgstr ""
" от цÑлата конÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ðµ този на поÑледната изпълнена команда или е 0, "
"ако\n"
" никое теÑтово уÑловие, не Ñе е оценило като иÑтина.<\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5269,14 +5353,14 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда докато определен теÑÑ‚ е уÑпешен.\n"
-"\n"
+" \n"
" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n"
" „while“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който е 0.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5287,14 +5371,14 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на команда докато определен теÑÑ‚ е неуÑпешен.\n"
-"\n"
+" \n"
" ЗамеÑтване и изпълнение на КОМÐÐДИте докато поÑледната команда в блока\n"
" „until“ е Ñ Ð¸Ð·Ñ…Ð¾Ð´ÐµÐ½ код, който не е 0.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5318,7 +5402,7 @@ msgstr ""
" Изходен код:\n"
" ИзходниÑÑ‚ код е 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5344,7 +5428,7 @@ msgstr ""
" Изходен код:\n"
" 0, оÑвен ако ИМЕто не е Ñамо за четене."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5355,15 +5439,15 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
"Изпълнение на група от команди.\n"
-"\n"
+" \n"
" ИзпълнÑване на цÑл набор от команди в група. Това е един от начините да "
"Ñе\n"
" пренаÑочи цÑл набор от команди.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този на поÑледно изпълнената команда."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5377,35 +5461,36 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
"ВъзобновÑване на заден фон на изпълнението на задача\n"
-"\n"
+" \n"
" Еквивалентно на аргумента ЗÐДÐЧРна командата „fg“. ВъзобновÑва ÑпрÑна\n"
" задача или такава на заден фон. ЗÐДÐЧÐта може да указва или име, или\n"
" номер на задача. Ðко Ñлед ЗÐДÐЧÐта Ñе въведе знакът „&“, задачата\n"
" Ñе изпълнÑва във фонов режим, вÑе едно е била подадена като аргумент\n"
" на командата „bg“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" ИзходниÑÑ‚ код е този възобновената задача."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
"ИзчиÑлÑване на аритметичен израз\n"
-"\n"
+" \n"
" ИЗРÐЗът Ñе изчиÑлÑва Ñпоред правилата на аритметичното оценÑване.\n"
" Еквивалентно на „let ИЗРÐЗ“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 1, ако резултатът на ИЗРÐЗа е 0. Ð’ противен Ñлучай — 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5433,7 +5518,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
"Изпълнение на команда-уÑловие\n"
-"\n"
+" \n"
" Връща ÑÑŠÑтоÑние 0 или 1 в завиÑимоÑÑ‚ от оценката на уÑÐ»Ð¾Ð²Ð½Ð¸Ñ Ð˜Ð—Ð ÐЗ.\n"
" Изразите Ñа ÑÑŠÑтавени от Ñъщите примитиви, както вградената команда "
"„test“\n"
@@ -5454,14 +5539,14 @@ msgstr ""
"ползва\n"
" операторът „=~“, изразът от дÑÑната му Ñтрана Ñе тълкува като регулÑрен\n"
" израз.\n"
-"\n"
+" \n"
" Операторите „&&“ и „||“ не оценÑÑ‚ ИЗРÐЗ_2, ако ИЗРÐЗ_1 е доÑтатъчен за\n"
" определÑне на ÑтойноÑтта на израза.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0 или едно Ñпоред ÑтойноÑтта на ИЗРÐЗа."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5515,7 +5600,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
"ЧеÑто използване промени на обвивката\n"
-"\n"
+" \n"
" BASH_VERSION Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° верÑиÑта на bash\n"
" CDPATH СпиÑък Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸ разделени Ñ Ð´Ð²Ð¾ÐµÑ‚Ð¾Ñ‡Ð¸Ðµ, които да Ñе\n"
" Ñ‚ÑŠÑ€ÑÑÑ‚ като аргументи за командата „cd“\n"
@@ -5587,7 +5672,7 @@ msgstr ""
"кои\n"
" команди да не Ñе запазват в иÑториÑта\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5618,41 +5703,41 @@ msgid ""
" change fails."
msgstr ""
"ДобавÑне на директории в Ñтека.\n"
-"\n"
+" \n"
" Ð”Ð¾Ð±Ð°Ð²Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð² Ñтека на директориите или превърта Ñтека\n"
" като най-горна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ñтава текущата директориÑ. Без\n"
" аргументи ÑÐ¼ÐµÐ½Ñ Ð½Ð°Ð¹-горните две директории.\n"
-"\n"
+" \n"
" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането "
"на\n"
" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n"
-"\n"
+" \n"
" Ðргументи:\n"
" +N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от "
"лÑвата \n"
" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от "
"0)\n"
" да е най-отгоре.\n"
-"\n"
+" \n"
" -N Превърта Ñтека, така че N-тата Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ (като Ñе брои от "
"дÑÑната\n"
" Ñтрана на ÑпиÑъка, изведен от командата „dirs“ като Ñе почва от "
"0)\n"
" да е най-отгоре.\n"
-"\n"
-"\n"
+" \n"
+" \n"
" dir Ð”Ð¾Ð±Ð°Ð²Ñ Ð”Ð˜Ð ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñта най-отгоре в Ñтека, като Ñ Ð¿Ñ€Ð°Ð²Ð¸ новата "
"текуща\n"
" работна директориÑ.\n"
-"\n"
+" \n"
" Можете да изведете Ñтека на директориÑта Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине "
"към\n"
" Ñъответната директориÑ."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5679,34 +5764,34 @@ msgid ""
" change fails."
msgstr ""
"Изваждане на директории от Ñтека.\n"
-"\n"
+" \n"
" Маха директории от Ñтека Ñ Ñ‚ÑÑ…. Без аргументи премахва поÑледната "
"директориÑ\n"
" в Ñтека и влиза в новата поÑледна директориÑ.\n"
-"\n"
+" \n"
" Опции:\n"
" -n подтиÑкане на нормалното преминаване към Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð¸ изваждането "
"на\n"
" Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ÐºÑŠÐ¼ Ñтека, така че Ñе Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ñамо той.\n"
-"\n"
-" Ðргументи:\n"
+" \n"
+" Ðргументи:\n"
" \n"
" +N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отлÑво в ÑпиÑъка изведен от\n"
" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd +0“ премахва\n"
" първата директориÑ, „popd +1“ - втората.\n"
-"\n"
+" \n"
" -N премахва N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ като Ñе брои отдÑÑно в ÑпиÑъка изведен от\n"
" командата „dirs“, като Ñе брои от 0. Ðапр.: „popd -0“ премахва\n"
" поÑледната директориÑ, „popd -1“ - предпоÑледната.\n"
-"\n"
+" \n"
" Стекът Ñ Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ð¸Ñ‚Ðµ Ñе визуализира Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð° „dirs“.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е подаден неправилен аргумент или не може да Ñе премине "
"към\n"
" Ñъответната директориÑ."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5735,7 +5820,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"Извеждане на Ñтека на директориите.\n"
-"\n"
+" \n"
" Отпечатва ÑпиÑъка Ñ Ñ‚ÐµÐºÑƒÑ‰Ð¾ запомнените директории. СпиÑъкът Ñе попълва "
"чрез\n"
" командата „pushd“. Можете да вадите директории от Ñтека Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°Ñ‚Ð°\n"
@@ -5748,7 +5833,7 @@ msgstr ""
" домашната Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð° („/homes/pesho/bin“, а не „~/bin“)\n"
" -p поредово отпечатване без Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n"
" -v поредово отпечатване заедно Ñ Ð¿Ð¾Ñ€ÐµÐ´Ð½Ð¸Ñ Ð½Ð¾Ð¼ÐµÑ€ в Ñтека\n"
-"\n"
+" \n"
" Ðргументи: \n"
" +N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отлÑво в ÑпиÑъка отпечатан от командата "
"„dirs“,\n"
@@ -5756,12 +5841,11 @@ msgstr ""
" -N извежда N-Ñ‚Ð¸Ñ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ‚ отдÑÑно в ÑпиÑъка отпечатан от командата "
"„dirs“,\n"
" когато е Ñтартирана без опции. Брои Ñе от 0.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5784,9 +5868,10 @@ msgstr ""
" \n"
" Превключване на ÑÑŠÑтоÑнието на вÑÑка от дадените ОПЦИи на обвивката. "
"Ðко не\n"
-" не Ñа зададени аргументи-ОПЦИи, Ñе извежда ÑпиÑък от вÑички опции, като "
-"Ñе\n"
-" указва за вÑÑка дали и включена или не.\n"
+" не Ñа зададени аргументи, Ñе извежда ÑпиÑък от Ñ Ð´Ð°Ð´ÐµÐ½Ð¸Ñ‚Ðµ ОПЦИи или "
+"вÑички,\n"
+" ако не Ñа дадени такива, като Ñе указва за вÑÑка дали и включена или "
+"не.\n"
" \n"
" Опции:\n"
" -o ограничаване на опциите до определените за използване ÑÑŠÑ â€žset -"
@@ -5801,7 +5886,7 @@ msgstr ""
"изключена\n"
" ОПЦИЯ."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5818,8 +5903,8 @@ 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"
@@ -5840,12 +5925,12 @@ msgid ""
" error occurs."
msgstr ""
"Форматиране и отпечатване на ÐРГУМЕÐТИте Ñпоред управлението на ФОРМÐТа.\n"
-"\n"
+" \n"
" Опции:\n"
" -v ПРОМЕÐЛИВРизходът Ñе поÑÑ‚Ð°Ð²Ñ Ð² ПРОМЕÐЛИВÐта на обвивката, вмеÑто "
"да\n"
" Ñе извежда на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´.\n"
-"\n"
+" \n"
" ФОРМÐТът е поÑледователноÑÑ‚ от знаци, коÑто Ñъдържа три вида обекти:\n"
" ⃠обикновени знаци, които биват отпечатани директно на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ "
"изход;\n"
@@ -5853,7 +5938,7 @@ msgstr ""
" отпечатани на ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ð¸Ð·Ñ…Ð¾Ð´;\n"
" ⃠форматиращи знакови поÑледователноÑти, вÑÑка от които предизвиква\n"
" отпечатването на Ñледващ аргумент.\n"
-"\n"
+" \n"
" ОÑвен Ñтандартните Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¸Ñ€Ð°Ð½Ð¸Ñ Ð¾Ð¿Ð¸Ñани в ръководÑтвото на printf(1), "
"printf\n"
" приема и Ñледните инÑтрукции:\n"
@@ -5864,18 +5949,17 @@ msgstr ""
" %(fmt) отпечатване на низа при третиране на аргумента като дата и "
"време\n"
" Ñпоред strftime(3)\n"
-"\n"
-" Форматът Ñе преизползва до приемането на вÑички аргументи. Ðко има "
-"по-\n"
-" малко аргументи от поÑочените във формата, поведението на "
-"допълнителните е\n"
-" вÑе една е подаден за аргумент нулева ÑтойноÑÑ‚ или празен низ.\n"
-"\n"
-" Изходен код:\n"
-" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при\n"
-" извеждането на резултата или при приÑвоÑването на ÑтойноÑтта."
+" \n"
+" Форматът Ñе преизползва до приемането на вÑички аргументи. Ðко има по-\n"
+" малко аргументи от поÑочените във форма̀та, поведението на допълнителните "
+"е\n"
+" вÑе едно за аргумент да Ñа подадени нулева ÑтойноÑÑ‚ или празен низ.\n"
+" \n"
+" Изходен код:\n"
+" 0, оÑвен ако не е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка при\n"
+" извеждането на резултата или при приÑвоÑването на ÑтойноÑтта."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5898,7 +5982,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5908,7 +5992,7 @@ msgid ""
msgstr ""
"Указване на начина на автоматичното допиÑване на аргументите от Readline.\n"
" \n"
-" За вÑÑко ИМЕ Ñе извежда начина за допиÑване на аргументите. Ðко не Ñа\n"
+" За вÑÑко ИМЕ Ñе извежда начинът за допиÑване на аргументите. Ðко не Ñа\n"
" дадени никакви опции, Ñе извеждат текущите инÑтрукции за автоматично\n"
" допиÑване във формат, който може да Ñе използва за вход.\n"
" \n"
@@ -5916,7 +6000,7 @@ msgstr ""
" -p Извеждане на текущите инÑтрукции за автоматично допиÑване във "
"формат,\n"
" който може да Ñе използва за вход\n"
-" -r Премахване на инÑтрукциите за автоматично допиÑване на вÑÑко ИМЕ,"
+" -r Премахване на инÑтрукциите за автоматично допиÑване на вÑÑко ИМЕ, "
"а\n"
" когато такова не е указано — вÑички инÑтрукции\n"
" -D Прилагане на допиÑваниÑта и дейÑтвиÑта като Ñтандартните за "
@@ -5924,17 +6008,20 @@ msgstr ""
" без никакви Ñпецифични инÑтрукции\n"
" -E Прилагане на допиÑваниÑта и дейÑтвиÑта като тези на „празната“\n"
" команда — когато вÑе още нищо не е напиÑано на ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´\n"
+" -I Прилагане на допиÑваниÑта и дейÑтвиÑта към първата дума "
+"(обикновено\n"
+" това е командата)\n"
" \n"
" При извършване на автоматично допиÑване, дейÑтвиÑта Ñе прилагат в реда "
"на\n"
" опциите Ñ Ð³Ð»Ð°Ð²Ð½Ð° буква дадени по-горе. ОпциÑта „-D“ е Ñ Ð¿Ð¾-виÑок "
"приоритет\n"
-" от „-E“.\n"
+" от „-E“, коÑто има по-виÑок приоритет от „-I“.\n"
" \n"
" Изходен код:\n"
" 0, оÑвен когато е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5947,16 +6034,15 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"Извеждане на възможните допиÑваниÑ.\n"
-"\n"
+" \n"
" Целта е да Ñе ползва в рамките Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð° обвивката, коÑто генерира\n"
" възможните допиÑваниÑ. Ðко е зададен незадължителниÑÑ‚ аргумент ДУМÐ,\n"
" генерират Ñе напаÑваниÑта Ñ Ð½ÐµÐ³Ð¾.\n"
-"\n"
+" \n"
" Изходен код:\n"
" 0, оÑвен ако е дадена неправилна Ð¾Ð¿Ñ†Ð¸Ñ Ð¸Ð»Ð¸ възникне грешка."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5995,11 +6081,11 @@ msgstr ""
" изпълнÑваното допиÑване.\n"
" \n"
" Опции:\n"
-" \t-o ОПЦИЯ\n"
-" Задаване ОПЦИЯта за допиÑване за вÑÑко зададено ИМЕ\n"
-" \t-D Задаване на опциите за „Ñтандартното“ допиÑване на команда\n"
-" \t-E Задаване на опциите за допиÑването на „празната“ команда\n"
-" \n"
+" -o ОПЦИЯ\n"
+" Задаване ОПЦИЯта за допиÑване за вÑÑко зададено ИМЕ\n"
+" -D Задаване на опциите за „Ñтандартното“ допиÑване на команда\n"
+" -E Задаване на опциите за допиÑването на „празната“ команда\n"
+" -I Задаване на опциите за допиÑването на първата дума\n"
" Използването на „+o“ вмеÑто „-o“ изключва дадената опциÑ.\n"
" \n"
" Ðргументи:\n"
@@ -6018,7 +6104,7 @@ msgstr ""
"ИМЕто\n"
" за автоматично допиÑване."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -6102,7 +6188,7 @@ msgstr ""
"променлива\n"
" Ñамо за четене или не е индекÑиран маÑив."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6111,3 +6197,18 @@ msgstr ""
"Прочитане на редове от файл и поÑтавÑне в променлива – маÑив.\n"
" \n"
" Синоним на „mapfile“."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Връща контекÑта на текущото извикване на функциÑ.\n"
+#~ " \n"
+#~ " Без ИЗРÐЗ връща "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "добавÑне на процеÑ: процеÑÑŠÑ‚ %5ld (%s) е в Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ðепознат Ñигнал #"
diff --git a/po/ca.gmo b/po/ca.gmo
index fef2319c..0b94a7a0 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 17222add..f1cadd2b 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -8,88 +8,93 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2017-01-10 20:11+0100\n"
"Last-Translator: Ernest Adrogué Calveras <eadrogue@gmx.net>\n"
"Language-Team: Catalan <ca@dodds.net>\n"
+"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ca\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "subíndex erroni"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: s'elimina l'atribut «nameref»"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: no és possible convertir un vector indexat en associatiu"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: clau de vector associatiu no vàlida"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: no es pot assignar a un índex no-numèric"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: l'assignació en vectors associatius requereix un subíndex"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: no es pot crear: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: el primer caràcter no-blanc no és «\"»"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "falta un caràcter de tancament «%c» a %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un caràcter «:» de separació"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "«%s»: no es pot desvincular"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansió de claus: no es pot assignar memòria per a %s"
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "expansió de claus: ha fallat l'assignació de memòria per a %d elements"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansió de claus: ha fallat l'assignació de memòria per a «%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: el nom de l'àlies no és valid"
@@ -108,22 +113,22 @@ msgstr "«%s»: el nom del mapa de tecles no és vàlid"
msgid "%s: cannot read: %s"
msgstr "%s: no es pot llegir: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "«%s»: nom de funció desconegut"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s no està vinculat a cap tecla.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s pot ser invocat via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "«%s»: no es pot desvincular"
@@ -136,27 +141,45 @@ msgstr "nombre d'iteracions"
msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "només té sentit en una iteració de tipus «for», «while» o «until»"
-# això forma part de la descripció de caller que està a un altre lloc
+# help caller
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
+"Retorna el context de la subrutina actual.\n"
+"\n"
+" Sense EXPR, torna \"$línia $nomfitxer\". Amb EXPR, torna \"$línia\n"
+" $subrutina $nomfitxer\"; aquesta informació addicional es pot utilitzar\n"
+" per a proporcionar un traçat de la pila.\n"
+"\n"
+" El valor de EXPR indica quants «frames» retrocedir des de l'actual; el\n"
+" «frame» superior és el 0.\n"
+"\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/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "la variable HOME no està definida"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "sobren arguments"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "directori nul"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "la variable OLDPWD no està definida"
@@ -175,7 +198,7 @@ msgstr "atenció: "
msgid "%s: usage: "
msgstr "%s: sintaxi: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: l'opció requereix un argument"
@@ -190,7 +213,7 @@ msgstr "%s: falta un argument numèric"
msgid "%s: not found"
msgstr "%s: no s'ha trobat"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: l'opció no és vàlida"
@@ -200,7 +223,7 @@ msgstr "%s: l'opció no és vàlida"
msgid "%s: invalid option name"
msgstr "%s: el nom de l'opció no és vàlid"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: no és un identificador vàlid"
@@ -213,7 +236,7 @@ msgstr "nombre octal no vàlid"
msgid "invalid hex number"
msgstr "nombre hexadecimal no vàlid"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "nombre no vàlid"
@@ -290,73 +313,84 @@ msgstr "error en establir els atributs del terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "error en obtenir els atributs del terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error en obtenir el directori actual: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: l'especificació de feina és ambigua"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "aquesta versió no té ajuda disponible"
-#: builtins/complete.def:281
+# unset UID
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: no es pot suprimir: %s de només lectura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: no es pot suprimir"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nom d'acció no vàlid"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no hi ha especificació de compleció"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "atenció: l'opció -F pot no funcionar com us espereu"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "atenció: l'opció -C pot no funcionar com us espereu"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "no s'està executant una funció de compleció"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "només es pot utilitzar en una funció"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: una variable referència no pot ser un vector"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: no es permeten autoreferències en variables referència"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referència circular"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: la variable referència conté un nom de variable no vàlid"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "no és possible usar «-f» per convertir en funció"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funció de només lectura"
@@ -372,7 +406,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: no és possible destruir variables vector d'aquesta manera"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: no és possible convertir un vector associatiu en indexat"
@@ -386,27 +420,32 @@ msgstr "no es poden carregar biblioteques dinàmicament"
msgid "cannot open shared object %s: %s"
msgstr "no es pot obrir l'objecte compartit %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "no s'ha trobat %s a l'objecte compartit %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: no s'ha carregat dinàmicament"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "l'intent de carregar %s ha fallat (%d): no carregat"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: no s'ha carregat dinàmicament"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: no es pot eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: és un directori"
@@ -421,12 +460,12 @@ msgstr "%s: no és un fitxer ordinari"
msgid "%s: file is too large"
msgstr "%s: el fitxer és massa gran"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: no es poden executar fitxers binaris"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: no es pot executar: %s"
@@ -450,15 +489,16 @@ msgstr "Hi ha feines aturades.\n"
msgid "There are running jobs.\n"
msgstr "Hi ha feines en funcionament.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "no s'ha trobat cap ordre"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "especificació d'historial"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: no es pot obrir el fitxer temporal: %s"
@@ -487,13 +527,13 @@ msgstr "%s: l'opció requereix un argument -- %c\n"
msgid "hashing disabled"
msgstr "el «hashing» està deshabilitat"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: la taula «hash» és buida\n"
# hash (sense arguments)
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "vegades\tordre\n"
@@ -504,11 +544,18 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Ordres de l'intèrpret coincidents amb '"
msgstr[1] "Ordres de l'intèrpret coincidents amb '"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
-msgstr "no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»."
+msgstr ""
+"no hi ha ajuda sobre «%s». Proveu «help help», «man -k %s» o «info %s»."
#: builtins/help.def:224
#, c-format
@@ -535,21 +582,21 @@ msgstr ""
"Un asterisc (*) 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 "no és possible usar més d'una opció d'entre -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posició a l'historial"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: la marca horària no és vàlida"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: ha fallat l'expansió de l'historial"
@@ -572,7 +619,7 @@ msgstr "%s: els arguments han de ser ids de processos o feines"
msgid "Unknown error"
msgstr "Error desconegut"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "s'esperava una expressió"
@@ -581,12 +628,12 @@ msgstr "s'esperava una expressió"
msgid "%s: not an indexed array"
msgstr "%s: no és un vector indexat"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: l'especificació de descriptor de fitxer no és vàlida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: el descriptor de fitxer no és vàlid: %s"
@@ -614,36 +661,36 @@ msgstr "nom de variable vector en blanc"
msgid "array variable support required"
msgstr "fa falta suport per a variables vector"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: falta un caràcter de format"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: l'especificació de format de temps no és vàlida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: el caràcter de format no és vàlid"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "atenció: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problema en interpretar el format: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "falta un dígit hexadecimal a \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta un dígit Unicode a \\%c"
@@ -808,12 +855,12 @@ msgstr ""
" Podeu veure el contingut de la pila de directoris amb l'ordre «dirs»."
# read -t -5
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: el límit de temps no és vàlid"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "error de lectura: %d: %s"
@@ -823,22 +870,11 @@ msgid "can only `return' from a function or sourced script"
msgstr "només es permet fer «return» des d'una funció o script"
# unset -f -v foo
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "no és possible suprimir una funció i una variable alhora"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: no es pot suprimir"
-
-# unset UID
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: no es pot suprimir: %s de només lectura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: no és una variable vector"
@@ -854,7 +890,7 @@ msgid "%s: cannot export"
msgstr "%s: no es pot exportar"
# shift -4
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "nombre de «shifts»"
@@ -863,7 +899,7 @@ msgid "cannot set and unset shell options simultaneously"
msgstr "no es poden activar i desactivar opcions de forma simultània"
# shopt -s foo
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: l'opció de l'intèrpret no és vàlida"
@@ -923,26 +959,26 @@ msgstr "%s és %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s és a la taula «hash» (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: el límit no és vàlid"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "«%c»: ordre errònia"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: no es pot obtenir el límit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "límit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: no es pot modificar el límit: %s"
@@ -1006,79 +1042,78 @@ msgid "%s: unbound variable"
msgstr "%s: variable no definida"
# SIGALRM
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atemps esgotat mentre s'esperaven dades: autodesconnexió\n"
# error intern
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "no s'ha pogut redirigir l'entrada estàndard des de /dev/null: %s"
# error intern
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: el caràcter de format no és vàlid"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: el coprocés [%d:%s] encara existeix"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "error de canonada"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: excedit el nombre màxim d'imbricacions per a «source» (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: excedit el nombre màxim de funcions imbricades (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricció: no podeu especificar «/» en noms d'ordres"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: no s'ha trobat l'ordre"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: intèrpret erroni"
# error intern
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: no es pot executar el fitxer binari: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: és una ordre interna especial"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no s'ha pogut duplicar l'fd %d com a fd %d"
@@ -1104,63 +1139,68 @@ msgstr "intent d'assignació a una no-variable"
msgid "syntax error in variable assignment"
msgstr "error de sintaxi a l'expressió"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "divisió per 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: el component «expassign» és erroni"
# echo $((4 > 5 ? 0))
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "falta un caràcter «:» a l'expressió condicional"
# echo $((4 ** -1))
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponent menor que 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "fa falta un identificador després del pre-increment o pre-decrement"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "falta un caràcter «)»"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "error de sintaxi: s'esperava un operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "error de sintaxi: l'operador aritmètic no és vàlid"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (l'element erroni és «%s»)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "la base aritmètica no és vàlida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: el nombre de línies no és vàlid"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "el valor de la base és massa gran"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expressió errònia\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: els directoris superiors són inaccessibles"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "no s'ha pogut restablir el mode «nodelay» per a l'fd %d"
@@ -1175,204 +1215,224 @@ msgstr "error en crear un fd nou a partir de l'fd %d"
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: ja existia un «buffer» per al nou fd %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp de la canonada"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "el pid bifurcat %d apareix a la feina en execució %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "s'elimina la feina aturada %d amb grup de procés %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: procés %5ld (%s) a the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: el pid %5ld (%s) està marcat com a viu"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no existeix tal pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Senyal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Fet"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Aturat"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Aturat(%s)"
# ha de tenir menys de 10 caràcters o no queda alineat
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Funcionant"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Fet(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Sortida %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Estat desconegut"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(s'ha bolcat la memòria)"
# wd = working directory
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (dt: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid (de %ld a %ld) per al procés inferior"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: el pid %ld no és un fill d'aquest intèrpret"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No es té constància del procés %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: la feina %d està aturada"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: no existeix tal feina"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: la feina ha acabat"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: la feina %d ja es troba en segon pla"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: s'activa «WNOHANG» per a evitar un bloqueig indefinit"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s línia %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (s'ha bolcat la memòria)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dt ara: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp ha fallat"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: disciplina de línia"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina de línia"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "no s'ha pogut establir el grup de procés del terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "aquesta sessió no té control de feines"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserció fallida: %s\n"
# error intern i el \r provoca warnings
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "desconegut"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloc abatussat a la llista de disponibles"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: cridat amb un argument de bloc ja alliberat"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: cridat amb un argument bloc no assignat"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detectat; mh_nbytes fora del domini"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underflow detectat; mh_nbytes fora del domini"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: les mides inicial i final del fragment difereixen"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: cridat amb un argument de bloc no assignat"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detectat: mh_nbytes fora del domini"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underflow detectat: mh_nbytes fora del domini"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: les mides inicial i final del fragment difereixen"
@@ -1414,22 +1474,22 @@ msgstr "%s: la ubicació remota no és vàlida"
msgid "network operations not supported"
msgstr "les operacions de xarxa no estan suportades"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: no s'ha pogut canviar el local (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: no s'ha pogut canviar el local (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: no s'ha pogut canviar el local (%s): %s"
@@ -1475,7 +1535,7 @@ msgstr "document literal a la línia %d delimitat per EOF (volia «%s»)"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrucció de redirecció «%d» fora del domini"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1484,105 +1544,105 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) excedeix «SIZE_MAX» (%lu): línia "
"truncada"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "excedit el nombre màxim de documents literals"
# "echo $(echo" en un script
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperat mentre es cercava «%c»"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperat mentre es cercava «]]»"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "error de sintaxi a l'expressió condicional: element «%s» inesperat"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "error de sintaxi a l'expressió condicional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "element «%s» inesperat, s'esperava «)»"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "s'esperava «)»"
# [[ -d ]]
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argument «%s» inesperat a un operador unari condicional"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argument inesperat a un operador unari condicional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "element «%s» inesperat, s'esperava un operador binari condicional"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "s'esperava un operador binari condicional"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argument inesperat «%s» a un operador binari condicional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argument inesperat a un operador binari condicional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "element «%c» inesperat en una ordre condicional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "element «%s» inesperat en una ordre condicional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "element %d inesperat en una ordre condicional"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error de sintaxi a prop de l'element inesperat «%s»"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "error de sintaxi a prop de «%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "error de sintaxi: final de fitxer inesperat"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "error de sintaxi"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Useu \"%s\" per a abandonar l'intèrpret.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperat mentre es cercava un «)»"
@@ -1625,91 +1685,91 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: el caràcter de format no és vàlid"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descriptor de fitxer fora del domini"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirecció ambigua"
# opció noclobber
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: no es pot escriure sobre un fitxer existent"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricció: no podeu redirigir la sortida"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "no s'ha pogut crear el fitxer temporal per a un document literal: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: no és possible assignar un fd a una variable"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port no està suportat si no hi ha xarxa"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "error de redirecció: no es pot duplicar l'fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "no s'ha trobat el directori /tmp, sis-plau creeu-lo!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp ha de ser un nom de directori vàlid"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: l'opció no és vàlida"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "no s'ha pogut establir l'uid com a %d: uid effectiu %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "no s'ha pogut establir el gid com a %d: gid effectiu %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "no es pot iniciar el depurador; mode de depuració desactivat"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: És un directori"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "No teniu nom!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versió %s-(%s)\n"
#
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1718,328 +1778,324 @@ msgstr ""
"Sintaxi: %s [opció GNU llarga] [opció] ...\n"
" %s [opció GNU llarga] [opció] fitxer-script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Opcions GNU llargues:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opcions de l'intèrpret:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD, o -c ordre, o bé -O opció_intèrpret\t(només invocació)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s, o bé -o opció\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Feu «%s -c \"help set\"» per a informació sobre les opcions de l'intèrpret.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Feu «%s -c help» per a obtenir informació sobre les ordres internes.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Feu servir l'ordre «bashbug» per a informar de «bugs».\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "pàgina web de bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Ajuda general per a programari GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: l'operació no és vàlida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Senyal no fiable"
# Senyals POSIX
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Desconnexió"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrupció"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Sortida"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instrucció il·legal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Traçat/trampa BPT"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instrucció «ABORT»"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instrucció «EMT»"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Excepció de coma flotant"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Mort"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Error de bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Violació de segment"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Crida de sistema errònia"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Canonada trencada"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarma"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Finalitzat"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Estat E/S urgent"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Aturat (senyal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continua"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Procés inferior mort o aturat"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Aturat (entrada tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Aturat (sortida tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "E/S a punt"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Limitació de CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Limitació de fitxers"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarma (perfil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Canvi de finestra"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Bloqueig de registre"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Senyal d'usuari 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Senyal d'usuari 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Dades HFT d'entrada pendents"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "fallada imminent de l'alimentació"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "fallada imminent del sistema"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migració del procés a una altra CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "error de programació"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "mode de monitoratge HFT concedit"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "mode de monitoratge HFT retractat"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "seqüència d'àudio HFT completada"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Petició d'informació"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Senyal Desconegut #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Senyal Desconegut #%d"
# missatge similar a subst.c:75XX
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substitució errònia: falta un «%s» a %s"
# foo[1]=(1 2 3)
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: no és possible assignar llistes a l'element d'un vector"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "no s'ha pogut crear la canonada per a la substitució de procés"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "no s'ha pogut crear el fill per a la substitució de procés"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "no s'ha pogut obrir la canonada %s per a lectura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "no s'ha pogut obrir la canonada %s per a escriptura"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "no s'ha pogut duplicar la canonada %s com a fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "substitució d'ordre: s'ignora un octet nul en l'entrada"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "no s'ha pogut crear la canonada per a la substitució d'ordre"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "no s'ha pogut crear un fill per a la substitució d'ordre"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: no s'ha pogut duplicar la canonada com a fd 1"
# buscar context
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: el nom de la variable referenciada no és vàlid"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansió indirecta no vàlida"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nom de variable no vàlid"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: paràmetre nul o no definit"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: paràmetre nul o no definit"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressió de subcadena < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitució errònia"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: no és possible assignar d'aquesta manera"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr "en futures versions de bash s'avaluarà com a substitució aritmètica"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "subtitució errònia: falta un caràcter «`» final a %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "cap coincidència: %s"
@@ -2062,129 +2118,134 @@ msgstr "s'esperava «)»"
msgid "`)' expected, found %s"
msgstr "s'esperava «)», s'ha trobat %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: s'esperava un operador unari"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: s'esperava un operador binari"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: s'esperava un operador unari"
+
+#: test.c:881
msgid "missing `]'"
msgstr "falta un «]»"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "error de sintaxi: «;» inesperat"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "el número de senyal no és vàlid"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: excedit el nombre màxim d'avaluacions imbricades (%d)"
# internal warning
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor incorrecte a trap_list[%d]: %p"
# internal warning
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: senyal erroni %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error en importar la definició de funció de «%s»"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "el nivell de l'intèrpret (%d) és massa elevat, es restableix a 1"
# error intern
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: no és possible assignar un valor a la variable"
# buscar context
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assignació numèrica a una variable referència"
# error intern
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "el paràmetre «exportstr» de la variable %s és nul"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "el caràcter %d en el paràmetre «exportstr» de %s no és vàlid"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "falta un «=» en el paràmetre «exportstr» de %s"
# error intern
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
# error intern
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr ""
# error intern
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
# error intern
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: no s'ha pogut obrir com a FITXER"
# error intern
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: el valor de compatibilitat és fora del domini"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2276,11 +2337,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] ordre [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valor] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valor] ..."
#: builtins.c:82
@@ -2304,11 +2367,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts cadena nom [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nom] [ordre [arguments ...]] [redirecció ...]"
#: builtins.c:100
@@ -2436,7 +2501,7 @@ msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
#: builtins.c:181
@@ -2530,16 +2595,17 @@ msgstr "printf [-v var] format [arguments]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"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:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o opció] [-A acció] [-G patró] [-W paraules]\n"
"[-F funció] [-C ordre] [-X filtre] [-P prefix] [-S sufix] [paraula]"
@@ -2844,7 +2910,8 @@ msgstr ""
" punts (:). Un nom de directori nul s'interpreta com al directori\n"
" actual. Si DIR comença amb una barra, aleshores no s'usa CDPATH.\n"
"\n"
-" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» està\n"
+" Si no es troba el directori, i l'opció de l'intèrpret «cdable_vars» "
+"està\n"
" activada, aleshores la paraula s'interpreta com a un nom de variable.\n"
" Si la variable especificada té algun valor, aquest valor s'usa en lloc\n"
" de DIR.\n"
@@ -2990,6 +3057,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3047,13 +3116,15 @@ msgstr ""
" aritmèticament (vegeu l'ordre «let») quan s'assigna un valor a la\n"
" variable.\n"
"\n"
-" Quan s'usa en una funció, «declare» converteix NOMs en variables locals,\n"
-" igual que l'ordre «local». L'opció «-g» inhabilita aquest comportament.\n"
+" Quan s'usa en una funció, «declare» converteix NOMs en variables "
+"locals,\n"
+" igual que l'ordre «local». L'opció «-g» inhabilita aquest "
+"comportament.\n"
"\n"
" Estat de sortida:\n"
" Torna èxit, excepte si rep una opció invàlida o es produeix un error."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3064,7 +3135,7 @@ msgstr ""
" Sinònim de «declare». Vegeu «help declare»."
# help local
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3093,7 +3164,7 @@ msgstr ""
" 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:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3143,7 +3214,8 @@ msgstr ""
" -e activa la interpretació de seqüències d'escapada\n"
" -E desactiva la interpretació de seqüències d'escapada\n"
"\n"
-" «echo» interpreta els següents caràcters escapats amb una barra inversa:\n"
+" «echo» interpreta els següents caràcters escapats amb una barra "
+"inversa:\n"
" \\a alerta (campana)\n"
" \\b retrocés\n"
" \\c suprimeix tota sortida ulterior\n"
@@ -3164,7 +3236,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, tret que es produeixi un error d'escriptura."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3187,7 +3259,7 @@ msgstr ""
" Torna èxit, tret que es produeixi un error d'escriptura."
# help enable
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3241,7 +3313,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si NOM no és una ordre interna o té lloc un error."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3261,7 +3333,8 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'ordre, o èxit si l'ordre és nul·la."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3294,8 +3367,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3343,7 +3416,7 @@ msgstr ""
"les\n"
" opcions o si es produeix un error."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3384,7 +3457,7 @@ msgstr ""
" Torna èxit, tret que ORDRE no es trobi o es produeixi un error de\n"
" redirecció."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3396,7 +3469,7 @@ msgstr ""
" 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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3411,7 +3484,7 @@ msgstr ""
" no s'està executant en una sessió d'entrada."
# help fc (hi ha un bug a la cadena original)
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3455,7 +3528,8 @@ msgstr ""
" -n\tomet els números de línia a l'hora de mostrar la llista\n"
" -r\tinverteix l'ordre de les línies (més recents primer)\n"
"\n"
-" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa després\n"
+" Amb el format «fc -s [pat=sub ...] [ordre]», ORDRE es re-executa "
+"després\n"
" d'haver fet la substitució PAT=SUB.\n"
"\n"
" Un àlies útil és r='fc -s', de manera que «r cc» executa l'última ordre\n"
@@ -3466,7 +3540,7 @@ msgstr ""
"es\n"
" produeix un error."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3488,7 +3562,7 @@ msgstr ""
"un\n"
" error."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3512,7 +3586,7 @@ msgstr ""
" produeix un error."
# help hash
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3557,7 +3631,7 @@ msgstr ""
" Torna èxit, excepte si NOM no es troba o passeu una opció invàlida."
# help help
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3596,7 +3670,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si PATRÓ no es troba o passeu una opció invàlida."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3664,7 +3738,7 @@ msgstr ""
" Estat de sortida: \n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3712,7 +3786,7 @@ msgstr ""
" Si utilitzeu -x, torna l'estat de sortida d'ORDRE."
# help disown
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3743,7 +3817,7 @@ msgstr ""
" Torna èxit, excepte si passeu una opció o FEINA invàlida."
# help kill
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3788,7 +3862,7 @@ msgstr ""
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
# help let
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3875,7 +3949,7 @@ msgstr ""
" Estat de sortida:\n"
" Si l'avaluació de l'últim ARG és 0, let torna 1; altrament torna 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3980,7 +4054,7 @@ msgstr ""
" descriptor de fitxer invàlid amb l'opció -u."
# help return
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3993,14 +4067,15 @@ msgid ""
msgstr ""
"Torna des d'una funció de l'intèrpret.\n"
"\n"
-" Provoca que una funció o script executat amb «source» torni amb el valor\n"
+" Provoca que una funció o script executat amb «source» torni amb el "
+"valor\n"
" de retorn especificat per N. Si s'omet N, l'estat de retorn és aquell\n"
" de l'última ordre executada dins la funció o script.\n"
"\n"
" Estat de sortida:\n"
" Torna N, o fallada si l'intèrpret no està executant cap funció o script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4170,7 +4245,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si especifiqueu una opció no vàlida."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4211,7 +4286,7 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM és una\n"
" variable o funció de només lectura."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4247,7 +4322,7 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
" vàlid."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4287,7 +4362,7 @@ msgstr ""
" Torna èxit, excepte si especifiqueu una opció no vàlida o NOM no és\n"
" vàlid."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4306,7 +4381,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si N és negatiu o més gran que $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4330,7 +4405,7 @@ msgstr ""
" Torna l'estat de l'última ordre a FITXER executada; falla si FITXER no\n"
" es pot llegir."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4355,7 +4430,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si no hi ha control de feines o es produeix un error."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4517,7 +4592,7 @@ msgstr ""
" Torna èxit si EXPR s'avalua com a cert; falla si EXPR s'avalua com a\n"
" fals o si especifiqueu un argument no vàlid."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4530,7 +4605,7 @@ msgstr ""
" l'últim argument ha de ser un signe «]» que tanqui el «[» inicial."
# help times
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4550,7 +4625,7 @@ msgstr ""
" Estat de sortida:\n"
" Sempre reïx."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4629,7 +4704,7 @@ msgstr ""
" Torna èxit, excepte si algun SENYAL no és vàlid o especifiqueu una\n"
" ordre no vàlida."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4685,7 +4760,8 @@ msgstr ""
" Torna èxit si es troben tots els NOMs; falla si n'hi ha algun que no es\n"
" pot trobar."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4716,6 +4792,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4768,7 +4845,8 @@ msgstr ""
"\n"
" Si especifiqueu un LÃMIT, aquest s'utilitza com a nou valor per al\n"
" recurs indicat; els valors especials de LÃMIT són «soft», «hard» i\n"
-" «unlimited», que signifiquen límit tou actual, límit dur actual, i sense\n"
+" «unlimited», que signifiquen límit tou actual, límit dur actual, i "
+"sense\n"
" límit, respectivament. En cas contrari, es mostra el valor actual per\n"
" al recurs especificat. Si no especifiqueu cap opció, se suposa -f.\n"
"\n"
@@ -4781,7 +4859,7 @@ msgstr ""
" Torna èxit, tret que especifiqueu una opció invàlida o es produeixi un\n"
" error."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4815,7 +4893,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si MODE no és vàlid o passeu una opció no vàlida."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4827,15 +4905,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Espera la finalització de feines i en retorna l'estat de sortida.\n"
"\n"
@@ -4851,7 +4939,7 @@ msgstr ""
"passeu\n"
" una opció no vàlida."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4876,7 +4964,7 @@ msgstr ""
" Torna l'estat de sortida de l'últim PID; falla si PID no és vàlid o es\n"
" passa una opció no vàlida."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4892,13 +4980,14 @@ msgstr ""
"\n"
" Els bucles «for» executen una seqüència d'ordres per a cada un dels\n"
" elements d'una llista. Si «in PARAULES ...;» s'omet, aleshores se\n"
-" suposa «in \"$@\"». Per a cada element de la llista PARAULES, l'element\n"
+" suposa «in \"$@\"». Per a cada element de la llista PARAULES, "
+"l'element\n"
" s'assigna a NOM, i les ORDRES s'executen.\n"
"\n"
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4930,7 +5019,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4953,7 +5042,8 @@ msgstr ""
"\n"
" Les PARAULES s'expandeixen i generen una llista de paraules. Les\n"
" paraules expandides s'envien a la sortida d'errors estàndard, cada una\n"
-" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@\"».\n"
+" precedida per un número. Si «in PARAULES» s'omet, se suposa «in \"$@"
+"\"».\n"
" Llavors, es mostra l'introductor PS3 i es llegeix una línia a l'entrada\n"
" estàndard. Si la línia correspon amb el número d'alguna de les "
"paraules\n"
@@ -4968,7 +5058,7 @@ msgstr ""
" Torna l'estat de sortida de l'última ordre executada."
# help time
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4998,7 +5088,7 @@ msgstr ""
" Estat de sortida:\n"
" L'estat de sortida és l'estat de sortida de la CANONADA."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5017,7 +5107,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5052,7 +5142,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de l'última ordre executada."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5070,7 +5160,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de l'última ordre executada."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5089,7 +5179,7 @@ msgstr ""
" Torna l'estat de l'última ordre executada."
# help coproc
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5112,7 +5202,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida d'ORDRE."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5136,7 +5226,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si NOM és de només lectura."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5154,7 +5244,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna l'estat de sortida de l'última ordre executada."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5169,7 +5259,8 @@ msgid ""
msgstr ""
"Reprèn una feina i la porta al primer pla.\n"
"\n"
-" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn una\n"
+" Equivalent a utilitzar FEINA com a argument en l'ordre «fg». Reprèn "
+"una\n"
" feina aturada o en segon pla. FEINA pot ser el nom d'una feina, o el\n"
" número d'una feina. Si es troba un «&» després de FEINA, llavors la\n"
" feina s'envia en un segon pla, com si l'especificació de feina\n"
@@ -5179,12 +5270,13 @@ msgstr ""
" Torna l'estat de sortida de la feina represa."
# help '(('
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5198,7 +5290,7 @@ msgstr ""
" Si el resultat de l'avaluació és 0, torna 1; altrament torna 0."
# help '[['
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5240,7 +5332,8 @@ msgstr ""
" Quan s'utilitzen els operadors «==» o «!=», el component de la dreta\n"
" s'interpreta com a un patró i es comprova si coincideix amb la cadena "
"de\n"
-" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el component\n"
+" l'esquerra de l'operador. Quan s'utilitza l'operador «=~», el "
+"component\n"
" de la dreta de l'operador s'interpreta com a expressió regular i es\n"
" comprova si coincideix amb la cadena de l'esquerra de l'operador.\n"
"\n"
@@ -5250,7 +5343,7 @@ msgstr ""
" Estat de sortida:\n"
" 0 o 1, depenent del valor d'EXPRESSIÓ."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5363,7 +5456,7 @@ msgstr ""
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5425,7 +5518,7 @@ msgstr ""
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5480,7 +5573,7 @@ msgstr ""
# si modifiqueu aquesta cadena cal actualitzar la còpia que es troba més
# enrere en aquest fitxer
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5511,7 +5604,8 @@ msgstr ""
"Mostra la pila de directoris.\n"
"\n"
" Mostra la llista actual de directoris recordats. Els directoris són\n"
-" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la llista\n"
+" afegits a la llista mitjançant l'ordre «pushd»; podeu recórrer la "
+"llista\n"
" de directoris cap enrere amb l'ordre «popd».\n"
"\n"
" Opcions:\n"
@@ -5535,7 +5629,7 @@ msgstr ""
" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
" error."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5571,7 +5665,7 @@ msgstr ""
" Torna èxit si OPCIÓ està activada; falla si especifiqueu una opció\n"
" invàlida o OPCIÓ està desactivada."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5588,8 +5682,8 @@ 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"
@@ -5639,7 +5733,7 @@ msgstr ""
" Retorna èxit, excepte si es rep una opció invàlida o es produeix un\n"
" error d'assignació o d'escriptura."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5662,7 +5756,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5692,7 +5786,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5714,7 +5808,7 @@ msgstr ""
" Estat de sortida:\n"
" Torna èxit, excepte si passeu una opció invàlida o es produeix un error."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5776,7 +5870,7 @@ msgstr ""
" definida cap especificació de compleció."
# help readarray
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5854,7 +5948,7 @@ msgstr ""
" Torna èxit, excepte si passeu una opció no vàlida o VECTOR és de només\n"
" lectura o no és una variable vector."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5865,6 +5959,16 @@ msgstr ""
" Un sinònim de «mapfile»."
#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: procés %5ld (%s) a the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Senyal Desconegut #"
+
+#, fuzzy
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2013 Free Software Foundation, Inc."
@@ -5879,6 +5983,3 @@ msgstr ""
#~ msgid "times"
#~ msgstr "times"
-
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
diff --git a/po/cs.gmo b/po/cs.gmo
index 2bbe0095..8058f0bb 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 20b90a42..52abc0ad 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -2,7 +2,7 @@
# Copyright (C) 2008 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Petr Pisar <petr.pisar@atlas.cz>, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
-# Petr Pisar <petr.pisar@atlas.cz>, 2015, 2016, 2018.
+# Petr Pisar <petr.pisar@atlas.cz>, 2015, 2016, 2018, 2019.
#
# alias → alias
# subscript → podskript
@@ -12,90 +12,95 @@
# Názvy signálů a stavů procesu by měly souhlasit se signal(7).
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-11-29 19:52+01:00\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-10-29 19:12+01:00\n"
"Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n"
"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "chybný podskript pole"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: odstraňuje se atribut odkazu na název"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: Äíslované pole nezle pÅ™evést na pole asociativní"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: neplatný klÃ­Ä asociativního pole"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: pÅ™es neÄíselný indexu nelze dosadit"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nelze vytvořit: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: první nebílý znak není „\"“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "ne zavírající „%c“ v %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: chybí dvojteÄkový oddÄ›lovaÄ"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: nelze zrušit vazbu"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "závorková expanze: nelze alokovat paměť pro %s"
# TODO: pluralize
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "závorková expanze: alokace paměti pro %u prvků selhala"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "závorková expanze: alokace paměti pro „%s“ selhala"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: chybný název aliasu"
@@ -114,22 +119,22 @@ msgstr "„%s“: chybný název klávesové mapy"
msgid "%s: cannot read: %s"
msgstr "%s: nelze Äíst: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: neznámé jméno funkce"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s lze vyvolat přes "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: nelze zrušit vazbu"
@@ -143,28 +148,42 @@ 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:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Vrátí kontext aktuálního volání podprogramu.\n"
+"Vrátí kontext aktuálního podprogramu.\n"
" \n"
-" Bez VÃRAZU vrátí "
+" Bez VÃRAZU vrátí „$řádek $název_souboru“. S VÃRAZEM vrátí\n"
+" „$řádek $podprogram $název_souboru“; tuto zvláštní informaci lze\n"
+" využít pro výpis zásobníku volání.\n"
+" \n"
+" Hodnota VÃRAZU urÄuje, kolik rámců volání se má zpÄ›tnÄ› projít od toho\n"
+" souÄasného; vrcholový rámec má Äíslo 0.\n"
+" \n"
+" Návratový kód:\n"
+" Vrací 0, pokud shell provádí shellovou funkci a VÃRAZ je platný."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "není nestavena HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "příliš mnoho argumentů"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "adresář s prázdným názvem"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "není nastaveno OLDPWD"
@@ -183,7 +202,7 @@ msgstr "varování: "
msgid "%s: usage: "
msgstr "%s: užití: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: pÅ™epínaÄ vyžaduje argument"
@@ -198,7 +217,7 @@ msgstr "%s: vyžadován Äíselný argument"
msgid "%s: not found"
msgstr "%s: nenalezeno"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: chybný pÅ™epínaÄ"
@@ -208,7 +227,7 @@ msgstr "%s: chybný pÅ™epínaÄ"
msgid "%s: invalid option name"
msgstr "%s: chybný název pÅ™epínaÄe"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: není platným identifikátorem"
@@ -221,7 +240,7 @@ msgstr "neplatné osmiÄkové Äíslo"
msgid "invalid hex number"
msgstr "chybné Å¡estnáctkové Äíslo"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "chybné Äíslo"
@@ -297,73 +316,83 @@ msgstr "chyba při nastavování vlastností terminálu: %s"
msgid "error getting terminal attributes: %s"
msgstr "chyba při získávání vlastností terminálu: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: nejednoznaÄné urÄení úlohy"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "k této verzi není dostupná nápověda"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nelze zrušit"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: neplatný název akce"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: žádné doplňování neurÄeno"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "doplňovací funkce se právě nevykonává"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "může být použito jen ve funkci"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: proměnná s odkazem nemůže být polem"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, 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:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: kruhový odkaz na název"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, 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:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "„-f“ nezle použít na výrobu funkce"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkce jen pro Ätení"
@@ -378,7 +407,7 @@ msgstr "%s: přiřazení do složeného pole uzavřeného v uvozovkách je zast
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: takto nelze likvidovat pole"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: asociativní pole nelze pÅ™evést na Äíslované pole"
@@ -392,27 +421,32 @@ msgstr "dynamické nahrávání není dostupné"
msgid "cannot open shared object %s: %s"
msgstr "sdílený objekt %s nelze otevřít: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: není dynamicky nahráno"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: není dynamicky nahráno"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nelze smazat: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: je adresářem"
@@ -427,12 +461,12 @@ msgstr "%s: není obyÄejný soubor"
msgid "%s: file is too large"
msgstr "%s: soubor je příliš velký"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: binární soubor nelze spustit"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nelze provést: %s"
@@ -458,15 +492,16 @@ msgstr "Jsou zde pozastavené úlohy.\n"
msgid "There are running jobs.\n"
msgstr "Jsou zde běžící úlohy.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "žádný příkaz nenalezen"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "urÄení historie"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: doÄasný soubor nelze otevřít: %s"
@@ -494,12 +529,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "zásahů\tpříkaz\n"
@@ -511,6 +546,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -544,21 +585,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "místo v historii"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neplatný Äasový údaj"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expanze historie selhala"
@@ -581,7 +622,7 @@ msgstr "%s: argumenty musí být proces nebo identifikátor úlohy"
msgid "Unknown error"
msgstr "Neznámá chyba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "oÄekáván výraz"
@@ -590,12 +631,12 @@ msgstr "oÄekáván výraz"
msgid "%s: not an indexed array"
msgstr "%s: není (proměnnou typu) indexované pole"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: chybné urÄení deskriptoru souboru"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neplatný deskriptor souboru: %s"
@@ -623,36 +664,36 @@ msgstr "prázdný název proměnné typu pole"
msgid "array variable support required"
msgstr "je vyžadována podpora proměnných typu pole"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: postrádám formátovací znak"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: chybné urÄení Äasového limitu"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: neplatný formátovací znak"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "varování: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "potíže s rozebráním formátovacího řetězce: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "u \\x chybí Å¡estnáctková Äíslovka"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "u \\%c chybí unikódová Äíslovka"
@@ -804,12 +845,12 @@ msgstr ""
" \n"
" Zásobník adresářů si můžete prohlédnout příkazem „dirs“."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: chybné urÄení Äasového limitu"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "chyba Ätení: %d: %s"
@@ -818,21 +859,11 @@ msgstr "chyba Ätení: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "„return“ lze provést jen z funkce nebo skriptu naÄteného pÅ™es „source“"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "funkci i promÄ›nnou nelze ruÅ¡it souÄasnÄ›"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nelze zrušit"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nelze zruÅ¡it: %s jen pro Ätení"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: není (proměnnou typu) pole"
@@ -847,7 +878,7 @@ msgstr "%s: není funkcí"
msgid "%s: cannot export"
msgstr "%s: nelze exportovat"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "poÄet shiftů"
@@ -855,7 +886,7 @@ msgstr "poÄet shiftů"
msgid "cannot set and unset shell options simultaneously"
msgstr "pÅ™epínaÄ shellu nelze zároveň nastavit a zruÅ¡it"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: chybný název pÅ™epínaÄe shellu"
@@ -912,26 +943,26 @@ msgstr "%s je %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s je zahashován (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: chybný argument s limitou"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c“: chybný příkaz"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: limit nelze zjistit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: limit nelze změnit: %s"
@@ -991,76 +1022,75 @@ msgstr "chybný skok"
msgid "%s: unbound variable"
msgstr "%s: nevázaná proměnná"
-#: eval.c:245
-#, c-format
+#: eval.c:242
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:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: chybný formátovací znak"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: koproces [%d:%s] stále existuje"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "chyba v rouře"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, 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:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: omezeno: v názvu příkazu nesmí být „/“"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: příkaz nenalezen"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: chybný interpretr"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binární soubor nelze spustit: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“: je zvláštní vestavěný příkaz shellu"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "deskriptor souboru %d nelze duplikovat na deskriptor %d"
@@ -1085,61 +1115,66 @@ msgstr "pokus o přiřazení do ne-proměnné"
msgid "syntax error in variable assignment"
msgstr "syntaktická chyba v přiřazení do proměnné"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "dělení nulou"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "chyba: chybný expassing token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "v podmínÄ›ném výrazu oÄekávána „:“"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "mocnitel menší než 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po pÅ™ednostním zvýšení nebo snížení oÄekáván identifikátor"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "postrádám „)“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntaktická chyba: oÄekáván operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaktická chyba: chybný aritmetický operátor"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (chybný token je „%s“)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "chybný aritmetický základ"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: chybný poÄet řádků"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "hodnot je pro základ příliš velká"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: chyba výrazu\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: rodiÄovské adresáře nejsou přístupné"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "na deskriptoru %d nelze resetovat režim nodelay"
@@ -1154,163 +1189,173 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp roury"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forknutý PID %d se objevil v běžící úloze %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "mažu pozastavenou úlohu %d se skupinou procesů %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: proces %5ld (%s) do the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: žádný takový PID"
-#: jobs.c:1654
+#: jobs.c:1865
#, 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:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "DokonÄena"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Pozastavena"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Pozastavena (%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Běží"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "DokonÄena (%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "UkonÄena %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Stav neznámý"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped [obraz paměti uložen]) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (cwd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid na potomku (z %ld na %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: PID %ld není potomkem tohoto shellu"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Žádný záznam o procesu %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: úloha %d je pozastavena"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: žádná taková úloha"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: úloha skonÄila"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: úloha %d je již na pozadí"
-#: jobs.c:3597
+#: jobs.c:3806
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:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: řádek %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped [obraz paměti uložen])"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(cwd nyní: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp selhalo"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: správa úloh nefunguje na pozadí"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplína linky"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nelze nastavit skupinu procesů terminálu (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "žádná správa úloh v tomto shellu"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: předpoklad nesplněn: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1319,39 +1364,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: zbabraný předpoklad\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "není známo"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok v seznamu uvolněných zbit"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: zavoláno s argumentem již uvolněného bloku"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: zavoláno s argumentem nenaalokovaného bloku"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: velikosti poÄáteÄního a koncového kusu se liší"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: zavoláno s argumentem nenaalokovaného bloku"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: zjiÅ¡tÄ›no podteÄení, mh_nbytes mimo rozsah"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: velikosti poÄáteÄního a koncového kusu se liší"
@@ -1393,22 +1448,22 @@ msgstr "%s: chybné urÄení síťové cesty"
msgid "network operations not supported"
msgstr "síťové operace nejsou podporovány"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: národní prostředí nelze změnit (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: národní prostředí nelze změnit (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: národní prostředí nelze změnit (%s): %s"
@@ -1454,7 +1509,7 @@ msgstr "„here“ dokument na řádku %d ukonÄen koncem souboru (požadováno
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrukce přesměrování „%d“ mimo rozsah"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1463,106 +1518,106 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) přesahuje SIZE_MAX (%lu): řádek "
"zkrácen"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maximální poÄet here dokumentů pÅ™ekroÄen"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, 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:4606
+#: parse.y:4696
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:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "chyba syntaxe ve výrazu podmínky"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄekávaný token „%s“, oÄekávána „)“"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "oÄekávána „)“"
-#: parse.y:4725
+#: parse.y:4815
#, 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:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄekávaný argument u podmínkového unárního operátoru"
-#: parse.y:4775
+#: parse.y:4865
#, 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:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "oÄekáván podmínkový binární operátor"
-#: parse.y:4801
+#: parse.y:4891
#, 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:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄekávaný argument u podmínkového binárního operátoru"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄekávaný token „%c“ v podmínkovém příkazu"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄekávaný token „%s“ v podmínkovém příkazu"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄekávaný token %d v podmínkovém příkazu"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "chyba syntaxe poblíž neoÄekávaného tokenu „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "chyba syntaxe poblíž „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "chyba syntaxe: nenadálý konec souboru"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "chyba syntaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Shell lze ukonÄit příkazem „%s“.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "nenadálý konec souboru při hledání odpovídající „)“"
@@ -1593,7 +1648,7 @@ msgstr "xtrace_set: %d: neplatný deskriptor souboru"
#: print_cmd.c:380
msgid "xtrace_set: NULL file pointer"
-msgstr "xtrace_set: nullový ukazatel na souboru"
+msgstr "xtrace_set: nullový ukazatel na soubor"
# fd, fp a fileno jsou identifikátory v kódu
#: print_cmd.c:384
@@ -1606,89 +1661,89 @@ msgstr "xtrace: fd (%d) != fileno fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: chybný formátovací znak"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "deskriptor souboru mimo rozsah"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: nejednoznaÄné pÅ™esmÄ›rování"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: existující soubor nelze přepsat"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: omezeno: výstup nelze přesměrovat"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "pro „here“ dokument nelze vytvoÅ™it doÄasný soubor: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: deskriptor souboru nelze přiřadit do proměnné"
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "chyba přesměrování: deskriptor souboru nelze duplikovat"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "nelze nalézt /tmp, vytvořte jej, prosím!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp musí být platným názvem pro adresář"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "v interaktivních shellech se režim krásného výpisu nepoužije"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: chybný pÅ™epínaÄ"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "UID nelze nastavit na %d: efektivní UID je %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "GID nelze nastavit na %d: efektivní GID je %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "debuger nelze spustit, ladicí režim zakázán"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Je adresářem"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nemám žádné jméno!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, verze %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1697,320 +1752,316 @@ 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:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Dlouhé GNU pÅ™epínaÄe:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "PÅ™epínaÄe shellu:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s nebo -o pÅ™epínaÄ\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Chyby nahlásíte příkazem „bashbug“.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Domovská stránka bashe: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Obecný návod na použití softwaru GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neplatná operace"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Falešný signál"
# PÅ™eklady názvů signálů pÅ™evzaty (s mírnými úpravami) z Äeské pÅ™ekladu
# manuálové stránky signal(7).
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Linka terminálu zavěšena"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Přerušení"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "UkonÄení"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Neplatná instrukce"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Přerušení při ladění"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "UkonÄení funkcí abort()"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instrukce EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Výjimka pÅ™i práci s pohyblivou řádovou Äárkou"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Zabit"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Chyba sběrnice"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Chyba segmentace"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Špatné volání systému"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Z roury nikdo neÄte"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Signál ÄasovaÄe"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "UkonÄit"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Čekají urgentní I/O data"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Pozastaveno (signálem)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "PokraÄovat"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Potomek byl pozastaven nebo zemřel"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Pozastaveno (vstupem TTY)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Pozastaveno (výstupem na TTY)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O je připraveno"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Dosažen limit procesorového Äasu"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Dosažen limit velikosti souboru"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "ÄŒasovaÄ (virtuální)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "ÄŒasovaÄ (profilovací)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Změna okna"
# XXX: SIGLOST
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Zámek záznamu"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Uživatelský signal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Uživatelský signál 2"
# FIXME: HFT znamená High Frequency Timer? Zkontrolovat i další výskyty
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "vstupní data HFT Äekají"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "hrozí selhání napájení"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "hrozí selhání systému"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "přesunout proces na jiný procesor"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "chyba programování"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Režim HFT sledování přidělen"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Režim HFT sledování odebrán"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT zvuková posloupnost byla dokonÄena"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Požadavek o informaci"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Neznámé Äíslo signálu"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznámý signál Ä. %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "chybná substituce: v %2$s chybí uzavírací „%1$s“"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: seznam nelze přiřadit do prvku pole"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "nelze vyrobit rouru za úÄelem substituce procesu"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "nelze vytvoÅ™it potomka za úÄelem substituce procesu"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "pojmenovanou rouru %s nelze otevřít pro Ätení"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "pojmenovanou rouru %s nelze otevřít pro zápis"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "pojmenovanou rouru %s nelze zdvojit jako deskriptor %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "substituce příkazu: nulový bajt ve vstupu ignorován"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "nelze vytvořit rouru pro substituci příkazu"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "nelze vytvořit potomka pro substituci příkazu"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: rouru nelze zdvojit jako deskriptor 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: neplatný název proměnné pro odkaz na název"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: chybná nepřímá expanze"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: chybný název proměnné"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametr nenastaven"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametr null nebo nenastaven"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: výraz podřetězce < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: chybná substituce"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: takto nelze přiřazovat"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2018,12 +2069,12 @@ msgstr ""
"budoucá verze tohoto shellu budou vynucovat vyhodnocení jako aritmetickou "
"substituci"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "chybná substituce: v %s chybí uzavírací „`“"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "žádná shoda: %s"
@@ -2046,120 +2097,126 @@ msgstr "oÄekávána „)“"
msgid "`)' expected, found %s"
msgstr "oÄekávána „)“, nalezeno %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: oÄekáván unární operátor"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oÄekáván binární operátor"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oÄekáván unární operátor"
+
+#: test.c:881
msgid "missing `]'"
msgstr "postrádám „]“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "chyba syntaxe: neoÄekávaný „;“"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "neplatné Äíslo signálu"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-"obsluha signálů: maximální úroveň zanoÅ™ení obsluhy signálů byla pÅ™ekroÄena (%"
-"d)"
+"obsluha signálů: maximální úroveň zanoÅ™ení obsluhy signálů byla pÅ™ekroÄena "
+"(%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: chybný signál %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "chyba při importu definice „%s“"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "úroveň shellu (%d) příliš vysoká, resetuji na 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: žádný kontext funkce v aktuálním rozsahu"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: hodnotu nelze do proměnné přiřadit"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: pÅ™iÅ™azení Äísla odkazu na název"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: žádný kontext funkce v aktuálním rozsahu"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s: má nullový exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neplatný znak %d v exportstr pro %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "v exportstr pro %s chybí „=“"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: hlava shell_variables není kontextem funkce"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: chybí kontext global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nelze otevřít jako SOUBOR"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neplatná hodnota pro deskriptor trasovacího souboru"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: hodnota kompatibility je mimo rozsah"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright © 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright © 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2248,11 +2305,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] příkaz [argument…]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [název[=hodnota]…]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] název[=hodnota]…"
#: builtins.c:82
@@ -2276,11 +2335,13 @@ msgid "eval [arg ...]"
msgstr "eval [argument…]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring name [argument]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a název] [příkaz [argument…]] [přesměrování…]"
#: builtins.c:100
@@ -2408,7 +2469,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mód]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id…]"
#: builtins.c:181
@@ -2501,9 +2563,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v proměnná] formát [argumenty]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o pÅ™epínaÄ] [-A akce] [-G globvzor] "
@@ -2511,9 +2574,10 @@ msgstr ""
"přípona] [název…]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
"seznam_slov] [-F funkce] [-C příkaz] [-X filtrvzor] [-P předpona] [-S "
@@ -2950,6 +3014,7 @@ msgstr ""
" Vrací návratový kód PŘÃKAZU, nebo selže, nebyl–li příkaz nalezen."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2962,6 +3027,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3025,7 +3092,7 @@ 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:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3035,7 +3102,7 @@ msgstr ""
" \n"
" Synonymum pro „declare“. Vizte „help declare“."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3063,8 +3130,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:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3131,11 +3197,15 @@ msgstr ""
" 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"
+" \\uHHHH unikódový znak, jehož šestnáctková hodnota je HHHH.\n"
+" HHHH smí být jedna až ÄtyÅ™i Å¡estnáctkové Äíslice\n"
+" \\UHHHHHHHH unikódový znak, jehož šestnáctková hodnota je HHHHHHHH.\n"
+" HHHHHHHH smí být jedna až osm Å¡estnáctkových Äíslic.\n"
" \n"
" Návratový kód:\n"
" Vrací úspěch, nedojde-li k chybě zápisu na výstup."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3156,7 +3226,7 @@ msgstr ""
" \n"
" Vrací úspěch, nedojte-li k chybě zápisu na výstup."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3210,7 +3280,7 @@ msgstr ""
" Vrací úspÄ›ch, je-li NÃZEV vestavÄ›ným příkazem shellu a nevyskytne-li\n"
" se chyba."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3228,7 +3298,8 @@ 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:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3261,8 +3332,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3311,7 +3382,7 @@ msgstr ""
"dojde\n"
" na konec pÅ™epínaÄů nebo nastane-li chyba."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3352,7 +3423,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:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3364,7 +3435,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3377,7 +3448,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3430,7 +3501,7 @@ msgstr ""
" Vrátí úspěch nebo kód provedeného příkazu. Nenulový kód, vyskytne-li se\n"
" chyba."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3451,7 +3522,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:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3473,7 +3544,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:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3518,7 +3589,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud byl NÃZEV nalezen a nebyl-li zadán neplatný pÅ™epínaÄ."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3558,7 +3629,7 @@ msgstr ""
" Návratový kód:\n"
" Vrací úspÄ›ch, pokud byl nalezen VZOREK a nebyl zadán neplatný pÅ™epínaÄ."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3626,7 +3697,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:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3671,7 +3742,7 @@ msgstr ""
"chyba.\n"
" Byl-ly použit pÅ™epínaÄ -x, vrátí návratový kód PŘÃKAZU."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3701,7 +3772,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo ÚLOHA."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3745,7 +3816,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:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3832,7 +3903,7 @@ msgstr ""
" Pokud poslední ARGUMENT je vyhodnocen na 0, let vrátí 1. Jinak je\n"
" navrácena 0."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3936,7 +4007,7 @@ msgstr ""
"souboru\n"
" jako argument -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3958,7 +4029,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vrátí N, nebo selže, pokud shell neprovádí funkci nebo skript."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4131,7 +4202,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspěch, pokud nebyl zadán neplatný argument."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4172,7 +4243,7 @@ msgstr ""
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a JMÉNO není jen pro\n"
" Ätení."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4207,7 +4278,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4247,7 +4318,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ nebo NÃZEV."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4265,7 +4336,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspěch, pokud N není záporný a není větší než $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4289,7 +4360,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:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4313,7 +4384,7 @@ msgstr ""
" Návratový kód:\n"
" Vrací úspěch, pokud je správa úloh zapnuta a nevyskytla se chyba."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4483,7 +4554,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4495,7 +4566,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4515,7 +4586,7 @@ msgstr ""
" Návratový kód:\n"
" Vždy uspěje."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4599,7 +4670,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud SIGSPEC a zadané pÅ™epínaÄe jsou platné."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4655,7 +4726,8 @@ msgstr ""
" Vrátí úspÄ›ch, pokud vÅ¡echny NÃZVY byly nalezeny. Selže, pokud nÄ›které\n"
" nalezeny nebyly."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4686,6 +4758,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4750,7 +4823,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vrací úspÄ›ch, pokud nebyl zadán neplatný pÅ™epínaÄ a nevyskytla se chyba."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4783,7 +4856,8 @@ msgstr ""
" Návratový kód\n"
" Vrátí úspÄ›ch, pokud nebyl zadán neplatný MÓD nebo pÅ™epínaÄ."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4794,15 +4868,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"PoÄká na dokonÄení úlohy a vrátí její návratový kód.\n"
" \n"
@@ -4823,7 +4907,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:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4847,7 +4931,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:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4871,7 +4955,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4900,7 +4984,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy vykonaného příkazu."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4942,7 +5026,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy prováděného příkazu."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4973,7 +5057,7 @@ msgstr ""
" Návratový kód:\n"
" Návratová hodnota je návratová hodnota KOLONY."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4991,7 +5075,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5026,7 +5110,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5045,7 +5129,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5063,7 +5147,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy provedeného příkazu."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5085,7 +5169,7 @@ msgstr ""
" Návratový kód:\n"
" Příkaz coproc vrací návratový kód 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5110,7 +5194,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí úspÄ›ch, pokud NÃZEV není jen pro Ätení."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5127,7 +5211,7 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód naposledy spuštěného příkazu."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5152,12 +5236,13 @@ msgstr ""
" Návratový kód:\n"
" Vrátí kód obnovené úlohy."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5174,7 +5259,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:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5226,7 +5311,7 @@ msgstr ""
" Návratový kód:\n"
" 0 nebo 1 podle hodnoty VÃRAZU."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5331,7 +5416,7 @@ msgstr ""
" \t\trozlišení, které příkazy by měly být uloženy do seznamu\n"
" \t\thistorie.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5388,7 +5473,7 @@ msgstr ""
" Vrátí úspěch, pokud nebyl zadán neplatný argument a změna adresáře\n"
" neselhala."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5438,7 +5523,7 @@ msgstr ""
" Vrátí úspěch, pokud nebyl zadán neplatný argument nebo neselhala změna\n"
" adresáře."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5489,7 +5574,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:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5526,7 +5611,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:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5543,8 +5628,8 @@ 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"
@@ -5599,7 +5684,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:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5622,7 +5707,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5657,7 +5742,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:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5678,7 +5763,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:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5738,7 +5823,7 @@ msgstr ""
"definováno\n"
" pravidlo doplňování."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5816,7 +5901,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:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5826,6 +5911,25 @@ msgstr ""
" \n"
" Synonymum pro „mapfile“."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright © 2018 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Vrátí kontext aktuálního volání podprogramu.\n"
+#~ " \n"
+#~ " Bez VÃRAZU vrátí "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: proces %5ld (%s) do the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Neznámé Äíslo signálu"
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "Copyright © 2014 Free Software Foundation, Inc."
@@ -5841,9 +5945,6 @@ msgstr ""
#~ 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"
diff --git a/po/da.gmo b/po/da.gmo
index a4b044e6..44572c77 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index d39234d4..09b2cf64 100644
--- a/po/da.po
+++ b/po/da.po
@@ -12,91 +12,96 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2011-03-18 01:36+0100\n"
"Last-Translator: Kenneth Nielsen <k.nielsen81@gmail.com>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\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-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
# Den er jeg altså ikke helt sikker på
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "ugyldigt arrayindeks"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: kan ikke konvertere indekseret til associativt array"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: ugyldig nøgle til associativt array"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: kan ikke tildele til ikkenumerisk indeks"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: kan ikke oprette %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: kan ikke finde tastetildeling for kommando"
-#: bashline.c:4254
+#: bashline.c:4459
#, 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:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "ingen afsluttende \"%c\" i %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: manglende kolonseparator"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "\"%s\": kan ikke løsne"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
@@ -115,22 +120,22 @@ msgstr "\"%s\": ugyldigt tastetildelingsnavn"
msgid "%s: cannot read: %s"
msgstr "%s: kan ikke læse: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "\"%s\": ukendt funktionsnavn"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s kan kaldes via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "\"%s\": kan ikke løsne"
@@ -144,29 +149,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "kun meningsfuld i en \"for\"-, \"while\"- eller \"until\"-løkke"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Returnerer konteksten af det nuværende underrutinekald.\n"
+"\n"
+" Uden UDTRYK returneres \"$line $filename\". Med UDTRYK returneres\n"
+" \"$line $subroutine $filename\". Den ekstra information\n"
+" kan bruges til at give at stakspor.\n"
+"\n"
+" Værdien af UDTRYK angiver hvor mange kalderammer der skal gås tilbage\n"
+" fra den nuværende. Toprammen er ramme 0.\n"
" \n"
-" NÃ¥r UDTRYK udelades returneres "
+" Afslutningsstatus:\n"
+" Returnerer 0 med mindre skallen ikke eksekverer en skalfunktion eller "
+"hvis\n"
+" UDTRYK er ugyldigt."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME ikke indstillet"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "for mange argumenter"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "ingen anden mappe"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD ikke indstillet"
@@ -185,7 +206,7 @@ msgstr "advarsel: "
msgid "%s: usage: "
msgstr "%s: brug: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tilvalg kræver et argument"
@@ -200,7 +221,7 @@ msgstr "%s: numerisk argument påkrævet"
msgid "%s: not found"
msgstr "%s: ikke fundet"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: ugyldigt tilvalg"
@@ -210,7 +231,7 @@ msgstr "%s: ugyldigt tilvalg"
msgid "%s: invalid option name"
msgstr "%s: ugyldigt tilvalgsnavn"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": ikke et gyldigt identificeringsnavn"
@@ -223,7 +244,7 @@ msgstr "ugyldigt oktaltal"
msgid "invalid hex number"
msgstr "ugyldigt heksadecimalt tal"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "ugyldigt tal"
@@ -299,73 +320,83 @@ msgstr "fejl ved indstilling af terminalattribut: %s"
msgid "error getting terminal attributes: %s"
msgstr "fejl ved indhentning af terminalattribut: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: tvetydig job-spec"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: kan ikke fjerne: skrivebeskyttet %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: kan ikke fjerne"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: ugyldigt handlingsnavn"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen fuldførselsspecifikation"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "ikke i gang med at eksekvere fuldførelsesfunktion"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "kan kun bruges i en funktion"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "kan ikke bruge \"-f\" til at lave funktioner"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: skrivebeskyttet funktion"
@@ -380,7 +411,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: kan ikke destruere arrayvariabel på denne måde"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: kan ikke konvertere associativt til indekseret array"
@@ -394,27 +425,32 @@ msgstr "dynamisk indlæsning ikke tilgængelig"
msgid "cannot open shared object %s: %s"
msgstr "kan ikke åbne delt objekt %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kan ikke finde %s i delt objekt %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: ikke dynamisk indlæst"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ikke dynamisk indlæst"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan ikke slette: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: er en mappe"
@@ -429,12 +465,12 @@ msgstr "%s: ikke en regulær fil"
msgid "%s: file is too large"
msgstr "%s: fil er for stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan ikke eksekvere binær fil"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: kan ikke eksekvere: %s"
@@ -458,15 +494,16 @@ msgstr "Der er stoppede job.\n"
msgid "There are running jobs.\n"
msgstr "Der er kørende job.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "ingen kommando fundet"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "historikspecifikation"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: kan ikke åbne midl. fil: %s"
@@ -494,12 +531,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "hits\tkommando\n"
@@ -512,6 +549,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Skalkommandoer som matcher nøgleordet \""
msgstr[1] "Skal-kommandoer som matcher nøgleordene \""
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -547,21 +590,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "historikposition"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ugyldigt tilvalgsnavn"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historikudvidelse fejlede"
@@ -584,7 +627,7 @@ msgstr "%s: argumenter skal være processer eller job-id'er"
msgid "Unknown error"
msgstr "Ukendt fejl"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "forventede et udtryk"
@@ -593,12 +636,12 @@ msgstr "forventede et udtryk"
msgid "%s: not an indexed array"
msgstr "%s: ikke en arrayvariabel"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ugyldig filbeskrivelsesspecifikation"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ugyldig filbeskrivelse: %s"
@@ -627,36 +670,36 @@ msgstr "tomt arrayvariabelnavn"
msgid "array variable support required"
msgstr "understøttelse af arrayvariabel påkrævet"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "\"%s\": manglende formattegn"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: ugyldig specifikation af tidsudløb"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": ugyldigt formattegn"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "advarsel: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "manglende heksciffer for \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "manglende heksciffer for \\x"
@@ -810,12 +853,12 @@ msgstr ""
" \n"
"Den indbyggede funktion \"dirs\" viser mappestakken."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ugyldig specifikation af tidsudløb"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "læsefejl: %d: %s"
@@ -824,21 +867,11 @@ msgstr "læsefejl: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "kan kun udføre \"return\" fra en funktion eller indlæst skript"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "kan ikke fjerne en funktion og en variabel samtidig"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: kan ikke fjerne"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: kan ikke fjerne: skrivebeskyttet %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ikke en arrayvariabel"
@@ -853,7 +886,7 @@ msgstr "%s: ikke en funktion"
msgid "%s: cannot export"
msgstr "%s: kan ikke fjerne"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "skifttæller"
@@ -861,7 +894,7 @@ msgstr "skifttæller"
msgid "cannot set and unset shell options simultaneously"
msgstr "kan ikke indstille og fjerne skaltilvalg samtidig"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ugyldigt navn for skaltilvalg"
@@ -918,26 +951,26 @@ msgstr "%s er %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s er hashet (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: ugyldigt grænseargument"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "\"%c\": ugyldig kommando"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan ikke indhente grænse: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "grænse"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan ikke modificere grænse: %s"
@@ -997,71 +1030,70 @@ msgstr "dårligt hop"
msgid "%s: unbound variable"
msgstr "%s: ubundet variabel"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atidsudløb mens der ventedes på input: auto-logud\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "kan ikke videresende standardinput fra /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: \"%c\": ugyldigt formateringstegn"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "datakanalfejl (pipe error)"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: begrænset: kan ikke specificere \"/\" i kommandonavne"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: kommando ikke fundet"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: dårlig fortolker"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan ikke eksekvere binær fil"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s er indbygget i skallen\n"
@@ -1075,7 +1107,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:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan ikke duplikere fd %d til fd %d"
@@ -1101,63 +1133,69 @@ msgstr "forsøgte tildeling til ikke-variabel"
msgid "syntax error in variable assignment"
msgstr "syntaksfejl i udtryk"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "division med 0"
# denne her streng er dårlig på så mange måder at det fatter man slet ikke. Skal bug oversætter og hvad er expassign. Jeg laver et bud og har fejlmeldt den
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: dårligt expassign-udtryk"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "\":\" forventet for betingede udtryk"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponent mindre end 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifikator forventet efter præforøgelse eller -formindskelse"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "manglende \")\""
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntaksfejl: operand forventet"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaksfejl: ugyldig aritmetisk operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (fejlelement er \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "ugyldig aritmetisk grundtal"
-#: expr.c:1588
+# -c Specify the number of lines read between each call to callback.
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: ugyldigt antal linjer"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "værdi for stor til grundtal"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: fejl i udtryk\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: kan ikke tilgå overliggende mapper"
# Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
@@ -1173,163 +1211,172 @@ msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: buffer eksisterer allerede til ny fd %d"
# ??
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-datakanal (pipe)"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forgrenet pid %d figurerer i kørende job %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "sletter stoppet job %d med procesgruppe %ld"
-# ??
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: proces %5ld (%s) i the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ingen process med det pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Færdig"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stoppet"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppet(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Kører"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Færdig(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Afslut %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ukendt status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(smed kerne) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "underproces setpgid (%ld til %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen optegnelse af proces %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d er stoppet"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: intet sådant job"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job er afbrudt"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d er allerede i baggrunden"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: linje %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (smed kerne)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd nu: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp fejlede"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "kan ikke indstille terminal-procesgruppe (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "ingen jobkontrol i denne skal"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: forfejlet hævdelse: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1338,39 +1385,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: hævdelse forkludret\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "ukendt"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok i fri liste tværet ud"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: kaldt med blokargument som allerede er fri"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: kaldt med ikke-allokeret blokargument"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underløb detekteret, mh_nbytes uden for interval"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: størrelse på start- og slut-bid afviger"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: kaldt med ikke-allokeret blokargument"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underløb detekteret, mh_nbytes uden for interval"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underløb detekteret, mh_nbytes uden for interval"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: størrelse på start- og slut-bid afviger"
@@ -1412,22 +1469,22 @@ msgstr "%s: dårlig specifikation for netværkssti"
msgid "network operations not supported"
msgstr "netværksoperation ikke understøttet"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
-#: locale.c:274
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: kan ikke allokere %lu bytes"
@@ -1474,115 +1531,115 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_direction: videresendelsesinstruktion \"%d\" uden for interval"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "uventet EOF mens der ledtes efter samhørende \"%c\""
-#: parse.y:4606
+#: parse.y:4696
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:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaksfejl i betingelsesudtryk: uventet element \"%s\""
-#: parse.y:4615
+#: parse.y:4705
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:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "uventet element \"%s\", forventede \")\""
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "forventede \")\""
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "uventet argument \"%s\" til unær betingelsesoperator"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "uventet argument til unær betingelsesoperator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "uventet udtryk \"%s\", ventede binær betingelsesoperator"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "ventedet binær betingelsesoperator"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "uventet argument \"%s\" til binær betingelsesoperator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "uventet argument til binær betingelsesoperator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "uventet udtryk \"%c\" i betingelseskommando"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "uventet udtryk \"%s\" i betingelseskommando"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "uventet udtryk \"%d\" i betingelseskommando"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaksfejl nær uventet udtryk \"%s\""
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaksfejl nær \"%s\""
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntaksfejl: uventet slutning på fil"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntaksfejl"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Brug \"%s\" for at forlade skallen.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "uventet EOF mens der ledtes efter samhørende \")\""
@@ -1625,91 +1682,91 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": ugyldigt formateringstegn"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "fil-deskriptor uden for interval"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: tvetydig videresendelse"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: kan ikke overskrive eksisterende fil"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: begrænset: kan ikke videresende output"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "kan ikke danne midlertidig fil til here-dokument: %s"
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "videresendelsesfejl: kan ikke duplikere fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "kan ikke finde /tmp, opret venligst mappen!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp skal være et gyldigt mappenavn"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ugyldigt tilvalg"
# Har ladet nodelay stå, idet jeg gætter på at det er et navn
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "kan ikke nulstille \"nodelay\"-tilstand for fd %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: er en mappe"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Jeg har ikke noget navn!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1718,331 +1775,327 @@ msgstr ""
"Brug:\t%s [langt GNU-tilvalg] [tilvalg] ...\n"
"\t%s [langt GNU-tilvalg] [tilvalg] skript-fil ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Lange GNU-tilvalg:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Skal-tilvalg:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\tTilvalg -%s eller -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Brug kommandoen \"bashbug\" til at rapportere fejl.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ugyldig handling"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Falsk signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Læg på"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Afbryd"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Afslut"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Ugyldig instruktion"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT-spor/fang"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT-instruktion"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT-instruktion"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Kommatalsundtagelse"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Slået ihjel"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus-fejl"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmenteringsfejl"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Ugyldigt systemkald"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Ødelagt datakanal"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarmklokke"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Afsluttet"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Presserende IO-forhold"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stoppet (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Fortsæt"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Død eller stop af underproces"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stoppet (tty-input)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stoppet (tty-output)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O klar"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-grænse"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Filgrænse"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtuel)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Vindue ændret"
# I fejlrapport for at få meningen
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Optag lås"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Brugersignal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Brugersignal 2"
# Fejlrapport
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT-inputdata afventer"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "strømsvigt nært forestående"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "systemnedbrud nært forestående"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "flyt proces til en anden CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programmeringsfejl"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-skærmtilstand tildelt"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-skærmtilstand trukket tilbage"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-lydsekvens er afsluttet"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informationsforespørgsel"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ukendt signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ukendt signal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "dårlig udskiftning: ingen lukkende \"%s\" i %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "kan ikke lave datakanal (pipe) til procesudskiftning"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "kan ikke danne underproces til procesudskiftning"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "kan ikke åbne navngiven datakanal (pipe) %s til læsning"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "kan ikke åbne navngiven datakanal (pipe) %s til skrivning"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "kan ikke duplikere navngiven datakanal (pipe) %s som %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "kan ikke danne datakanal (pipe) til kommandoudskiftning"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "kan ikke danne underproces til kommandoudskiftning"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: kan ikke duplikere datakanal (pipe) som fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%d: ugyldig filbeskrivelse: %s"
# -c Specify the number of lines read between each call to callback.
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ugyldigt antal linjer"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "\"%s\": ugyldigt tastetildelingsnavn"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter null eller ikke indstillet"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null eller ikke indstillet"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: understreng-udtryk < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: dårlig udskiftning"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: kan ikke tildele på denne måde"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "dårlig udskiftning: ingen lukkende \"`\" i %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "intet match: %s"
@@ -2065,35 +2118,40 @@ msgstr "\")\" forventet"
msgid "`)' expected, found %s"
msgstr "\")\" forventet, fandt %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unær operator forventet"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binær operator forventet"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unær operator forventet"
+
+#: test.c:881
msgid "missing `]'"
msgstr "manglende \"]\""
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntaksfejl: \";\" uventet"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "ugyldigt signalnummer"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2101,85 +2159,85 @@ msgstr ""
"run_pending_traps: signalhåndtering er SIG_DFL, gensender %d (%s) til mig "
"selv"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: ugyldigt signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fejl under importering af funktionsdefinition for \"%s\""
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skalniveau (%d) for højt, genindstiller til 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funktionskontekst ved nuværende navneområde"
-#: variables.c:2674
+#: variables.c:2693
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: kan ikke tildele liste til arrayelementer"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funktionskontekst ved nuværende navneområde"
-#: variables.c:4698
+#: variables.c:4771
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parameter null eller ikke indstillet"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ugyldigt tegn %d i exportstr for %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "intet \"=\" i exportstr for %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ingen global_variables-kontekst"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: kan ikke åbne: %s"
-#: variables.c:6277
+#: variables.c:6392
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: ugyldig filbeskrivelse: %s"
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s udenfor rækkevidde"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2274,12 +2332,12 @@ msgstr "command [-pVv] kommando [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFilrtux] [-p] [navn[=værdi] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFilrtux] [-p] navn[=værdi] ..."
#: builtins.c:82
@@ -2303,11 +2361,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts tilvalgsstreng navn [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a navn] [kommando [argumenter ...]] [videresendelse ...]"
#: builtins.c:100
@@ -2445,7 +2505,7 @@ msgstr "umask [-p] [-S] [tilstand]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2541,7 +2601,7 @@ msgstr "printf [-v var] format [argumenter]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-o valgmuligheder] [-A handling] [-G "
@@ -2551,8 +2611,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -3006,6 +3066,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3069,7 +3131,7 @@ msgstr ""
"hvis\n"
" der opstår en fejl."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3080,7 +3142,7 @@ msgstr ""
" \n"
" Forældet. Læs i \"help declare\"."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -3109,7 +3171,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:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3179,7 +3241,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre der opstår en skrivefejl."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3201,7 +3263,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre der opstår en skrivefejl."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3256,7 +3318,7 @@ msgstr ""
" Returnerer succes med mindre NAVN ikke er en skal-indbygget eller hvis\n"
" der opstår en fejl."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3278,7 +3340,8 @@ msgstr ""
"er\n"
" null."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3311,8 +3374,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3358,7 +3421,7 @@ msgstr ""
" Returnerer succes hvis et tilvalg findes, fejler hvis afslutningen\n"
" af tilvalgene nås eller hvis der opstår en fejl."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3402,7 +3465,7 @@ msgstr ""
"der\n"
" opstår en omdirigeringsfejl."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3414,7 +3477,7 @@ msgstr ""
" Afslut skallen med status N. Hvis N udelades vil afslutningsstatus\n"
" blive den samme som sidst eksekverede kommando."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3428,7 +3491,7 @@ msgstr ""
"hvis\n"
" den ikke eksekveres i en logindskal."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3489,7 +3552,7 @@ msgstr ""
"hvis\n"
" der opstod en fejl."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3512,7 +3575,7 @@ msgstr ""
"der\n"
" opstår fejl."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3537,7 +3600,7 @@ msgstr ""
"hvis\n"
" der opstår en fejl."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3582,7 +3645,7 @@ msgstr ""
"angives\n"
" et ugyldig tilvalg."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3624,7 +3687,7 @@ msgstr ""
" Returnerer succes med mindre MØNSTER ikke kan findes, eller hvis der\n"
" angives et ugyldigt tilvalg."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3694,7 +3757,7 @@ msgstr ""
"hvis\n"
" der opstår en fejl."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3744,7 +3807,7 @@ msgstr ""
"der\n"
" opstår en fejl. Hvis -x bruges returneres afslutningsstatus for KOMMANDO."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3776,7 +3839,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre et ugyldigt tilvalg eller JOBSPEC angives."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3824,7 +3887,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:947
+#: builtins.c:949
#, fuzzy
msgid ""
"Evaluate arithmetic expressions.\n"
@@ -3911,7 +3974,7 @@ msgstr ""
" Hvis det sidste ARG evalueres til 0, vil \"let\" returnere 1, ellers\n"
" returneres 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -4008,7 +4071,7 @@ msgstr ""
"indtræffer,\n"
" eller hvis en ugyldig fildeskriptor gives som argument til -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4033,7 +4096,7 @@ msgstr ""
"en\n"
" funktion eller et skript."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4218,7 +4281,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre der angives et ugyldigt tilvalg."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4260,7 +4323,7 @@ msgstr ""
"et\n"
" givent navn er skrivebeskyttet."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4296,7 +4359,7 @@ msgstr ""
" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
" NAVN er ugyldig."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4336,7 +4399,7 @@ msgstr ""
" Returnerer succes med mindre der angives et ugyldigt tilvalg eller hvis\n"
" NAVN er ugyldigt."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4355,7 +4418,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre N er negativ eller større end $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4381,7 +4444,7 @@ msgstr ""
"hvis\n"
" FILNAVN ikke kan læses."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4408,7 +4471,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4570,7 +4633,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4583,7 +4646,7 @@ msgstr ""
"sidste\n"
" argument skal være \"]\", for at den passer til den åbnende \"[\"."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4603,7 +4666,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Lykkes altid."
-#: builtins.c:1362
+#: builtins.c:1364
#, fuzzy
msgid ""
"Trap signals and other events.\n"
@@ -4684,7 +4747,7 @@ msgstr ""
"angivet\n"
" et ugyldigt tilvalg."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4747,7 +4810,7 @@ msgstr ""
"enkelt\n"
" ikke findes."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4779,6 +4842,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4843,7 +4907,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4881,7 +4945,7 @@ msgstr ""
"ugyldigt\n"
" tilvalg angives."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4893,15 +4957,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Vent på færdiggørelse af job og returner afslutningsstatus.\n"
" \n"
@@ -4918,7 +4992,7 @@ msgstr ""
"angives\n"
" et ugyldigt tilvalg."
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4944,7 +5018,7 @@ msgstr ""
" Returnerer statussen for ID, fejler hvis ID er ugyldig eller hvis der\n"
" angives et ugyldigt tilvalg."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4969,7 +5043,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen for den sidst eksekverede kommando."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4999,7 +5073,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer afslutningsstatussen for den sidst eksekverede kommando."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5037,7 +5111,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5066,7 +5140,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Afslutningsstatus er afslutningsstatus for DATAKANAL."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5085,7 +5159,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5124,7 +5198,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5142,7 +5216,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5160,7 +5234,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5184,7 +5258,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer afslutningsstatussen for KOMMANDO."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5208,7 +5282,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer succes med mindre NAVN er skrivebeskyttet."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5226,7 +5300,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen fra den sidst eksekverede kommando."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5253,12 +5327,13 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer statussen af det genoptagede job."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5272,7 +5347,7 @@ msgstr ""
" Afslutningsstatus:\n"
" Returnerer 1 hvis udtrykket evalueres til 0, ellers returneres 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5327,7 +5402,7 @@ msgstr ""
" Afslutningsstatus:\n"
" 0 eller 1 afhængigt af udtrykkets værdi."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5440,7 +5515,7 @@ msgstr ""
" HISTIGNORE\tEn kolonsepareret liste af mønstre som bliver brugt til at\n"
" \t\tbestemme hvilke kommandoer der skal gemmes i historikken.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5500,7 +5575,7 @@ msgstr ""
"hvis\n"
" mappeskiftet mislykkes."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5555,7 +5630,7 @@ msgstr ""
"hvis\n"
" mappeskiftet mislykkes."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5610,7 +5685,7 @@ msgstr ""
"der\n"
" opstår en fejl."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5651,7 +5726,7 @@ msgstr ""
"et\n"
" ugyldigt tilvalg eller hvis INDSTNAVN er deaktiveret."
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5669,8 +5744,8 @@ 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"
@@ -5718,7 +5793,7 @@ msgstr ""
"hvis\n"
" der opstår en skrive- eller tildelingsfejl."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5741,7 +5816,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5770,7 +5845,7 @@ msgstr ""
"hvis\n"
" der opstår en fejl."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5795,7 +5870,7 @@ msgstr ""
" der opstår en fejl."
# Fejlrapport
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5858,7 +5933,7 @@ msgstr ""
"hvis\n"
" der ikke er defineret en fuldførselsspecifikation for NAVN."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5937,7 +6012,7 @@ msgstr ""
"hvis\n"
" ARRAY er skrivebeskyttet."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5948,9 +6023,25 @@ msgstr ""
" Et synonym for \"mapfile\"."
#, fuzzy
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
#~ msgstr "Ophavsret (C) 2009 Free Software Foundation, Inc."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Returnerer konteksten af det nuværende underrutinekald.\n"
+#~ " \n"
+#~ " NÃ¥r UDTRYK udelades returneres "
+
+# ??
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: proces %5ld (%s) i the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ukendt signal #"
+
#, fuzzy
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/de.gmo b/po/de.gmo
index 402eb9fe..7a31bc58 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index c5c5794c..64d676fe 100644
--- a/po/de.po
+++ b/po/de.po
@@ -1,101 +1,105 @@
-# German language file for GNU Bash 4.4
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# qerman language file for GNU Bash 5.0
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Nils Naumann <nau@gmx.net>, 1996-2018.
+# Roland Illig <roland.illig@gmx.de> 2019
+# Nils Naumann <nau@gmx.net>, 1996-2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-01 23:58+0100\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-10-21 20:58+0200\n"
"Last-Translator: Nils Naumann <nau@gmx.net>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\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"
+"Content-Transfer-Encoding: 8bit\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "Falscher Feldbezeichner."
+msgstr "Falscher Feldindex."
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: Entferne das Nameref Attribut."
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
"%s: Das indizierte Array kann in kein assoziatives Array umgewandelt werden."
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: Ungültiger Schlüssel für das assoziative Array."
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: Das Zuweisen auf ein nicht-numerischen Index ist nicht möglich."
+msgstr "%s: Das Zuweisen auf einen nicht-numerischen Index ist nicht möglich."
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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."
+"%s: %s: Ein Feldindex wird zum Zuweisen eines assoziativen Arrays benötigt."
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: Kann die Datei %s nicht erzeugen."
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr " %s: Das erste Zeichen ist nicht `\\'."
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "fehlende schließende `%c' in %s."
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: Fehlender Doppelpunkt."
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "»%s«: Bindung kann nicht gelöst werden."
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen."
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr ""
-"Klammererweiterung: Für %u Elemente konnte kein Speicher zuweisen werden."
+msgstr "Klammererweiterung: Konnte keinen Speicher für %u Elemente zuweisen."
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen."
+msgstr "Klammererweiterung: Konnte keinen Speicher für »%s« zuweisen."
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
-msgstr "`%s': Ungültiger Alias Name."
+msgstr "»%s«: Ungültiger Aliasname."
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
@@ -104,62 +108,81 @@ msgstr "Zeileneditierung ist nicht aktiviert."
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr "`%s': Ungültiger KEYMAP-Name."
+msgstr "»%s«: Ungültiger Tastenzuordnungs-Name."
#: builtins/bind.def:252
#, c-format
msgid "%s: cannot read: %s"
msgstr "%s: Nicht lesbar: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "%s: Unbekannter Funktionsname."
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s kann aufgerufen werden durch "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
-msgstr "`%s': Bindung kann nicht gelöst werden."
+msgstr "»%s«: Bindung kann nicht gelöst werden."
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
-msgstr "Schleifen Zähler"
+msgstr "Schleifenzähler"
#: builtins/break.def:139
msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll."
+msgstr "nur in einer for-, while- oder until-Schleife sinnvoll."
-# Problem mit Extraktion des Strings
+# caller
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
+"Gibt Informationen zum aktuellen Subroutinenaufruf aus.\n"
+"\n"
+" Ohne Argument wird die Zeilennummer und der Dateiname angezeigt. Mit\n"
+" Argument werden Zeilennummer, Subroutinenname und Dateiname ausgegeben.\n"
+" Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n"
+"\n"
+" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n"
+" wobei 0 der aktuelle Funktionsaufruf ist.\n"
+"\n"
+" Rückgabewert:\n"
+" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
+"Argument\n"
+" ungültig ist, sonst 0."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME ist nicht zugewiesen."
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "Zu viele Argumente."
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "NULL Verzeichnis"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD ist nicht zugewiesen."
@@ -179,7 +202,7 @@ msgstr "Warnung: "
msgid "%s: usage: "
msgstr "%s: Aufruf: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: Die Option erfordert ein Argument."
@@ -194,20 +217,20 @@ msgstr "%s: Ein numerischer Parameter ist erforderlich."
msgid "%s: not found"
msgstr "%s: Nicht gefunden."
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
-msgstr "%s: Ungültige Option"
+msgstr "%s: Ungültige Option."
#: builtins/common.c:223
#, c-format
msgid "%s: invalid option name"
msgstr "%s: Ungültiger Optionsname."
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
-msgstr "`%s': Ist kein gültiger Bezeichner."
+msgstr "»%s«: Ist kein gültiger Bezeichner."
#: builtins/common.c:240
msgid "invalid octal number"
@@ -217,7 +240,7 @@ msgstr "Ungültige Oktalzahl."
msgid "invalid hex number"
msgstr "Ungültige hexadezimale Zahl."
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "Ungültige Zahl."
@@ -229,7 +252,7 @@ msgstr "%s: Ungültige Signalbezeichnung."
#: builtins/common.c:259
#, c-format
msgid "`%s': not a pid or valid job spec"
-msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung."
+msgstr "»%s«: Ist keine gültige Prozess-ID oder Jobbezeichnung."
#: builtins/common.c:266 error.c:510
#, c-format
@@ -258,25 +281,25 @@ msgstr "%s: Kein solcher Job."
#: builtins/common.c:292
#, c-format
msgid "%s: no job control"
-msgstr "%s: Keine Job Steuerung in dieser Shell."
+msgstr "%s: Keine Jobsteuerung in dieser Shell."
#: builtins/common.c:294
msgid "no job control"
-msgstr "Keine Job Steuerung in dieser Shell."
+msgstr "Keine Jobsteuerung in dieser Shell."
#: builtins/common.c:304
#, c-format
msgid "%s: restricted"
-msgstr "%s: gesperrt"
+msgstr "%s: eingeschränkt"
#: builtins/common.c:306
msgid "restricted"
-msgstr "gesperrt"
+msgstr "eingeschränkt"
#: builtins/common.c:314
#, c-format
msgid "%s: not a shell builtin"
-msgstr "%s: Ist kein Shell Kommando."
+msgstr "%s: Ist kein eingebautes Shellkommando."
#: builtins/common.c:323
#, c-format
@@ -293,73 +316,83 @@ msgstr "Fehler beim Setzen der Terminalattribute: %s"
msgid "error getting terminal attributes: %s"
msgstr "Fehler beim Ermitteln der Terminalattribute: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s: Mehrdeutige Job Bezeichnung."
+msgstr "%s: Mehrdeutige Jobbezeichnung."
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "In dieser Version ist keine Hilfe verfügbar."
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: »unset« nicht möglich: %s ist schreibgeschützt"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: »unset« nicht möglich."
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
-msgstr "%s: Ungültige Methode."
+msgstr "%s: Ungültiger Aktionsname."
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: Keine Komplettierung angegeben."
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
-msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern."
+msgstr "Warnung: Die Option -F könnte unerwartete Ergebnisse liefern."
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
-msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern."
+msgstr "Warnung: Die Option -C könnte unerwartete Ergebnisse liefern."
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt."
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
-msgstr "kann nur innerhalb einer Funktion benutzt werden."
+msgstr "Kann nur innerhalb einer Funktion benutzt werden."
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: Zirkularbezug auf indirekte Variable."
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
-msgstr "`%s': Ungültiger Name für indirekte Variablenreferenz."
+msgstr "»%s«: Ungültiger Name für indirekte Variablenreferenz."
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
-msgstr "Mit `-f' können keine Funktionen erzeugt werden."
+msgstr "Mit »-f« können keine Funktionen erzeugt werden."
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: Schreibgeschützte Funktion."
@@ -374,7 +407,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen."
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -387,29 +420,35 @@ msgstr "Dynamisches Laden ist nicht verfügbar."
#: builtins/enable.def:343
#, c-format
msgid "cannot open shared object %s: %s"
-msgstr "Kann die dynamische Bibiliothek nicht laden %s: %s"
+msgstr "Kann die dynamische Bibliothek nicht laden %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
-msgstr "Kann %s nicht in der dynamischen Bibiliothek finden %s: %s"
+msgstr "Kann %s nicht in der dynamischen Bibliothek finden %s: %s"
+
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: Ist nicht dynamisch geladen."
-#: builtins/enable.def:387
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
-msgstr "Laden der Funktion %s lieferte ein Fehler (%d): Nicht geladen."
+msgstr ""
+"Die Ladefunktion von %s lieferte einen Fehler (%d), daher nicht geladen."
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: Ist nicht dynamisch geladen."
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: Kann nicht löschen: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: ist ein Verzeichnis."
@@ -424,12 +463,12 @@ msgstr "%s: Ist keine normale Datei."
msgid "%s: file is too large"
msgstr "%s: Die Datei ist zu groß."
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: Kann die Datei nicht ausführen."
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: Kann nicht ausführen: %s"
@@ -441,7 +480,7 @@ msgstr "Abgemeldet\n"
#: builtins/exit.def:89
msgid "not login shell: use `exit'"
-msgstr "Keine Login Shell: Mit `exit' abmelden!"
+msgstr "Keine Loginshell: Mit »exit« abmelden!"
#: builtins/exit.def:121
#, c-format
@@ -453,18 +492,19 @@ msgstr "Es gibt noch angehaltene Prozesse.\n"
msgid "There are running jobs.\n"
msgstr "Es gibt noch laufende Prozesse.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "Kein Kommando gefunden."
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr ""
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
-msgstr "%s: Kann die tempräre Datei nicht öffnen: %s"
+msgstr "%s: Kann die temporäre Datei nicht öffnen: %s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
@@ -489,29 +529,36 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "Treffer\tBefehl\n"
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00022.html
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell Kommandos auf die das Schlüsselwort zutrifft `"
+msgstr[0] "Shellkommando, auf das das Schlüsselwort zutrifft `"
msgstr[1] "Shell Kommandos auf die die Schlüsselwörter zutreffen `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' "
-"oder `info %s'."
+"Kein passendes Hilfethema für »%s«. Probieren Sie »help help«, »man -k %s« "
+"oder »info %s«."
#: builtins/help.def:224
#, c-format
@@ -529,30 +576,32 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"Die Shell Kommandos sind intern definiert. Mit `help' kann eine Liste\n"
-"angesehen werden. Durch `help Name' wird eine Beschreibung der\n"
-"Funktion `Name' angezeigt. Die Dokumentation ist mit `info bash'\n"
-"einsehbar. Detaillierte Beschreibungen der Shellkommandos sind mit\n"
-"`man -k' oder `info' abrufbar.\n"
+"Diese Shellkommandos sind intern definiert. Geben Sie »help« ein, um diese\n"
+"Liste zu sehen. Geben Sie »help Name« ein, um die Beschreibung der Funktion\n"
+"»Name« zu sehen. Geben Sie »info bash« ein, um die vollständige "
+"Dokumentation\n"
+"zu sehen. Geben Sie »man -k« oder »info« ein, um detaillierte "
+"Beschreibungen\n"
+"der Shellkommandos zu sehen.\n"
"\n"
"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."
+msgstr "Es darf höchstens eine Option aus -anrw angegeben werden."
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "Kommandostapelposition."
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: Ungültiger Zeitstempel."
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: Kommandoersetzung gescheitert."
@@ -569,13 +618,13 @@ msgstr "Keine weiteren Optionen mit `-x' erlaubt."
#: builtins/kill.def:211
#, c-format
msgid "%s: arguments must be process or job IDs"
-msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein."
+msgstr "%s: Die Argumente müssen Prozess- oder Job-IDs sein."
#: builtins/kill.def:274
msgid "Unknown error"
msgstr "Unbekannter Fehler."
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "Ausdruck erwartet."
@@ -584,15 +633,15 @@ msgstr "Ausdruck erwartet."
msgid "%s: not an indexed array"
msgstr "%s: Ist kein indiziertes Array."
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
-msgstr "%s: Ungültige Datei-Deskriptor Angabe."
+msgstr "%s: Ungültige Dateideskriptor-Angabe."
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
-msgstr "%d: Ungültiger Datei-Deskriptor: %s"
+msgstr "%d: Ungültiger Dateideskriptor: %s"
#: builtins/mapfile.def:288 builtins/mapfile.def:326
#, c-format
@@ -602,7 +651,7 @@ msgstr "%s: Ungültige Zeilenanzahlangabe."
#: builtins/mapfile.def:299
#, c-format
msgid "%s: invalid array origin"
-msgstr "%s: Ungültiger Zeilenindex für den Array Beginn."
+msgstr "%s: Ungültiger Arrayanfang."
#: builtins/mapfile.def:316
#, c-format
@@ -611,45 +660,46 @@ msgstr ""
#: builtins/mapfile.def:349
msgid "empty array variable name"
-msgstr "Fehlender Name für die Array Variable."
+msgstr "Fehlender Name für die Arrayvariable."
#: builtins/mapfile.def:370
msgid "array variable support required"
-msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden."
+msgstr ""
+"Die Unterstützung für Arrayvariablen ist in dieser Shell nicht vorhanden."
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
-msgstr "`%s': Fehlendes Formatierungszeichen."
+msgstr "»%s«: Fehlendes Formatierungszeichen."
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
-msgstr "`%c': Ungültige Zeitformatangabe."
+msgstr "»%c«: Ungültige Zeitformatangabe."
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
-msgstr "`%c': Ungültiges Formatierungszeichen."
+msgstr "»%c«: Ungültiges Formatierungszeichen."
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "Warnung: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "Formatleseproblem: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "Fehlende hexadezimale Ziffer nach \\x."
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
-msgstr "Fehlendes Unicode Zeichen für \\%c."
+msgstr "Fehlende Unicode-Ziffer für \\%c."
#: builtins/pushd.def:199
msgid "no other directory"
@@ -696,8 +746,8 @@ msgid ""
"\tdirs when invoked without options, starting with zero."
msgstr ""
"Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an. Durch\n"
-" das »pushd« Kommando werden die Verzeichnisse auf den Stapel gelegt\n"
-" und können durch das »popd« Kommando wieder vom Stapel entfernt\n"
+" das Kommando »pushd« werden die Verzeichnisse auf den Stapel gelegt\n"
+" und können durch das Kommando »popd« wieder vom Stapel entfernt\n"
" werden.\n"
"\n"
" Optionen:\n"
@@ -738,8 +788,8 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"Legt ein Verzeichniseintrag auf den Verzeichnisstapel ab oder rotiert\n"
-"den Stapel so, dass das aktuelle Verzeichnis oben liegt. Ohne Argumente\n"
+"Legt einen Verzeichniseintrag auf den Verzeichnisstapel ab oder rotiert\n"
+"den Stapel so, dass das aktuelle Verzeichnis oben liegt. Ohne Argumente\n"
"werden die beiden oberen Einträge vertauscht.\n"
"\n"
" Optionen: \n"
@@ -748,17 +798,17 @@ msgstr ""
"\n"
" Argumente:\n"
" +N\tRotiert den Verzeichnisstapel, dass das N-te Verzeichnis\n"
-"\tvon links, das von `dirs' angezeigt wird, nach oben kommt. Die Zählung\n"
+"\tvon links, das von »dirs« angezeigt wird, nach oben kommt. Die Zählung\n"
"\tbeginnt dabei mit Null.\n"
"\n"
" -N\tRotiert den Verzeichnisstapel, dass das N-te Verzeichnis\n"
-"\tvon rechts, das von `dirs' angezeigt wird, nach oben kommt. Die \n"
+"\tvon rechts, das von »dirs« angezeigt wird, nach oben kommt. Die \n"
"\tZählung beginnt dabei mit Null.\n"
"\n"
" dir\tLegt DIR auf den Verzeichnisstapel und wechselt in dieses\n"
" Verzeichnis.\n"
" \n"
-" Das `dirs' Kommando zeigt den Verueichnisstapel an."
+" Das Kommando »dirs« Kommando zeigt den Verzeichnisstapel an."
#: builtins/pushd.def:748
msgid ""
@@ -780,8 +830,8 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"Erntfernt Einträge vom Stapel. Ohne Argumente wird der oberste Eintrag\n"
-" gelöscht und anschließend in das das neue oben liegede Verzeichnis\n"
+"Entfernt Einträge vom Stapel. Ohne Argumente wird der oberste Eintrag\n"
+" gelöscht und anschließend in das das neue oben liegende Verzeichnis\n"
" gewechselt.\n"
" \n"
" Optionen:\n"
@@ -791,22 +841,22 @@ msgstr ""
" Argumente:\n"
" +N\tEntfernt den N-ten Eintrag von links, der von `dirs'\n"
"\tangezeigt wird. Dabei beginnt die Zählung von Null. So\n"
-"\tentfernt z.B. `popd +0' den ersten und `popd +1' den zweiten\n"
+"\tentfernt z.B. »popd +0« den ersten und »popd +1« den zweiten\n"
"\tEintrag.\n"
" \n"
" -N\tEntfernt den N-ten Eintrag von rechts, der von `dirs'\n"
"\tangezeigt wird. Dabei beginnt die Zählung von Null. So\n"
-"\tentfernt z.B. `popd -0' den letzten und `popd +1' den vorletzten\n"
+"\tentfernt z.B. »popd -0« den letzten und »popd +1« den vorletzten\n"
"\tEintrag.\n"
" \n"
-" Das `dirs' Kommando zeigt den Verzeichnisstapel an."
+" Das Kommando »dirs« zeigt den Verzeichnisstapel an."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: Ungültige Wartezeitangebe."
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "Lesefehler: %d: %s"
@@ -817,22 +867,12 @@ msgstr ""
"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten "
"Skript möglich."
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-"Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich."
-
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: `unset' nicht möglich."
+"Gleichzeitiges »unset« einer Funktion und einer Variable ist nicht möglich."
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ist keine Feldvariable."
@@ -845,20 +885,20 @@ msgstr "%s: Ist keine Funktion."
#: builtins/setattr.def:194
#, c-format
msgid "%s: cannot export"
-msgstr "%s: exportieren nicht möglich."
+msgstr "%s: Exportieren nicht möglich."
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
-msgstr "Verschiebezähler"
+msgstr "Verschiebeanzahl"
#: builtins/shopt.def:310
msgid "cannot set and unset shell options simultaneously"
-msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren."
+msgstr "Kann nicht Shelloptionen gleichzeitig aktivieren und deaktivieren."
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
-msgstr "%s: Ungültiger Shell Optionen Name."
+msgstr "%s: Ungültiger Name für Shelloption."
#: builtins/source.def:128
msgid "filename argument required"
@@ -881,7 +921,7 @@ msgstr "Kann die Loginshell nicht unterbrechen."
#: builtins/type.def:235
#, c-format
msgid "%s is aliased to `%s'\n"
-msgstr "%s ist ein Alias von `%s'.\n"
+msgstr "%s ist ein Alias von »%s«.\n"
#: builtins/type.def:256
#, c-format
@@ -911,28 +951,28 @@ msgstr "%s ist %s\n"
#: builtins/type.def:343
#, c-format
msgid "%s is hashed (%s)\n"
-msgstr ""
+msgstr "%s ist gehasht (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: Ungültiges Grenzwertargument."
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': Falsches Kommando."
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: Kann die nicht Grenze setzen: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "Grenze"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: Kann die Grenze nicht ändern: %s"
@@ -993,76 +1033,75 @@ msgstr "Falscher Sprung"
msgid "%s: unbound variable"
msgstr "%s ist nicht gesetzt."
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
-msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen."
+msgstr "TIMEFORMAT: »%c«: Ungültiges Formatzeichen."
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "Pipe-Fehler"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
-msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)"
+msgstr "%s: Maximale Quellcode-Schachtelungstiefe überschritten (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
-msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)"
+msgstr "%s: maximale Schachtelungstiefe für Funktionen überschritten (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig."
+msgstr "%s: eingeschränkt: `/' ist in Kommandonamen unzulässig."
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: Kommando nicht gefunden."
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: Defekter Interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: Kann die Binärdatei nicht ausführen: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
-msgstr "`%s' ist eine spezielle eingebaute Funktion."
+msgstr "»%s« ist eine spezielle eingebaute Funktion."
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "Kann fd %d nicht auf fd %d verdoppeln."
@@ -1081,76 +1120,81 @@ msgstr "Syntaxfehler im Ausdruck."
#: expr.c:521
msgid "attempted assignment to non-variable"
-msgstr "Versuchte Zuweisung zu keiner Variablen."
+msgstr "Versuchte Zuweisung zu etwas, das keine Variable ist."
#: expr.c:530
msgid "syntax error in variable assignment"
msgstr "Syntaxfehler in der Variablenzuweisung."
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "Division durch 0."
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "Fehler: Falscher Zuweisungsoperator."
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
-msgstr "`:' für ein bedingten Ausdruck erwaret."
+msgstr "»:« für ein bedingten Ausdruck erwartet."
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "Der Exponent ist kleiner als 0."
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet."
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
-msgstr "Fehlende `)'"
+msgstr "Fehlende »)«"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
-msgstr "Syntax Fehler: Operator erwartet."
+msgstr "Syntaxfehler: Operator erwartet."
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "Syntaxfehler: Ungültiger arithmetischer Operator."
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")."
+msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \"%s\")."
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "Ungültige Basis."
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: Ungültige Zeilenanzahlangabe."
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "Der Wert ist für die aktuelle Basis zu groß."
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: Fehler im Ausdruck.\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
-msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen."
+msgstr "getcwd: Kann auf die übergeordneten Verzeichnisse nicht zugreifen."
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr "Konnte den No-Delay Modus für fd %d nicht wieder herstellen."
+msgstr "Konnte den No-Delay-Modus für fd %d nicht wiederherstellen."
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "Kann keinen neuen Filedeskriptor für die Eingabe von fd %d zuweisen."
+msgstr "Kann keinen neuen Dateideskriptor für die Eingabe von fd %d zuweisen."
# Debug Ausgabe
#: input.c:274
@@ -1158,211 +1202,232 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d."
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld."
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr ""
-
-#: jobs.c:1310
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00024.html
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
# Programmierfehler
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: Prozessnummer existiert nicht."
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Fertig"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Angehalten"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Angehalten(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Läuft"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Fertig(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Unbekannter Status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(Speicherabzug geschrieben) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
-msgstr " (wd: %s)"
+msgstr " (Verz.: %s)"
# interner Fehler
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet."
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: Der Job %d ist gestoppt."
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: Kein solcher Job."
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: Der Job ist beendet."
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: Der Job %d läuft bereits im Hintergrund."
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
# Debug Ausgabe
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: Zeile %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (Speicherabzug geschrieben)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n"
# interner Fehler
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_jobs: getpgrp war nicht erfolgreich."
+msgstr "initialize_job_control: getpgrp war nicht erfolgreich."
# interner Fehler
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: Keine Jobsteuerung im Hintergrund."
# interner Fehler
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
# interner Fehler
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)."
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
-msgstr "Keine Job Steuerung in dieser Shell."
+msgstr "Keine Jobsteuerung in dieser Shell."
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
-msgstr "malloc: Speicherzusicherung gescheitert: %s.\n"
+msgstr "malloc: Zusicherung gescheitert: %s.\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-"\\r\n"
-"malloc: %s:%d: Speicherzusicherung verpfuscht\\r\n"
+"\r\n"
+"malloc: %s:%d: Zusicherung verpfuscht\\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "Unbekannt"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
-msgstr ""
-"Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben."
+msgstr "Malloc: Ein internet Speicherbereich (free list) wurde überschrieben."
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
-msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen."
+msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen."
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen."
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich."
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen."
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs."
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<"
@@ -1409,25 +1474,25 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe."
msgid "network operations not supported"
msgstr "Der Netzwerkbetrieb ist nicht unterstützt."
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
-msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)."
+msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s)."
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
-msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s"
+msgstr "setlocale: LC_ALL: Kann die Regionseinstellungen nicht ändern (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
-msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)."
+msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s)."
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
-msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s"
+msgstr "setlocale: %s: Kann die Regionseinstellungen nicht ändern (%s): %s"
# Du oder Sie?
#: mailcheck.c:439
@@ -1454,7 +1519,7 @@ msgstr "Syntax Fehler: unerwartetes `;'."
#: make_cmd.c:320
#, c-format
msgid "syntax error: `((%s))'"
-msgstr "Syntax Fehler: `((%s))'."
+msgstr "Syntaxfehler: »((%s))«."
# interner Fehler
#: make_cmd.c:572
@@ -1467,125 +1532,125 @@ msgstr "make_here_document: Falscher Befehlstyp %d."
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')."
+"(erwartet wird »%s«)."
#: make_cmd.c:756
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "Dateiende beim Suchen nach `%c' erreicht."
+msgstr "Dateiende beim Suchen nach »%c« erreicht."
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
-msgstr "Dateiende beim Suchen nach `]]' erreicht."
+msgstr "Dateiende beim Suchen nach »]]« erreicht."
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'."
+msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Symbol »%s«."
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
-msgstr "Syntaxfehler im bedingen Ausdruck."
+msgstr "Syntaxfehler im bedingten Ausdruck."
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
-msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'"
+msgstr "Unerwartetes Zeichen: »%s« anstatt von »)«"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
-msgstr "`)' erwartet."
+msgstr "»)« erwartet."
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
+msgstr "Syntaxfehler beim unerwarteten Symbol »%s«"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
-msgstr "Syntaxfehler beim unerwarteten Wort `%s'"
+msgstr "Syntaxfehler bei »%s«"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
-msgstr "Syntax Fehler: Unerwartetes Dateiende."
+msgstr "Syntaxfehler: Unerwartetes Dateiende."
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
-msgstr "Syntax Fehler"
+msgstr "Syntaxfehler"
# Du oder Sie?
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Benutze \"%s\" um die Shell zu verlassen.\n"
+msgstr "Verwenden Sie »%s«, um die Shell zu verlassen.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
-msgstr "Dateiende beim Suchen nach passender `)' erreicht."
+msgstr "Dateiende beim Suchen nach zugehöriger »)« erreicht."
#: pcomplete.c:1132
#, c-format
msgid "completion: function `%s' not found"
-msgstr "completion: Funktion `%s' nicht gefunden."
+msgstr "completion: Funktion »%s« nicht gefunden."
#: pcomplete.c:1722
#, c-format
@@ -1600,12 +1665,12 @@ msgstr ""
#: print_cmd.c:302
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr "print_command: Falsches Verbindungszeichen `%d'."
+msgstr "print_command: Falsches Verbindungszeichen »%d«."
#: print_cmd.c:375
#, c-format
msgid "xtrace_set: %d: invalid file descriptor"
-msgstr "xtrace_set: %d: Ungültige Dateibeschreibung."
+msgstr "xtrace_set: %d: Ungültiger Dateideskriptor."
#: print_cmd.c:380
msgid "xtrace_set: NULL file pointer"
@@ -1619,408 +1684,410 @@ msgstr ""
#: print_cmd.c:1540
#, c-format
msgid "cprintf: `%c': invalid format character"
-msgstr "cprintf: `%c': Ungültiges Formatsymbol."
+msgstr "cprintf: »%c«: Ungültiges Formatsymbol."
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
-msgstr ""
+msgstr "Dateideskriptor außerhalb des gültigen Bereichs."
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: Mehrdeutige Umlenkung."
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: Kann existierende Datei nicht überschreiben."
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
-msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden."
+msgstr "%s: eingeschränkt: Die Ausgabe darf nicht umgeleitet werden."
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
-msgstr "Kann die temporäre Datei für das Hier Dokument nicht anlegen: %s"
+msgstr "Kann die temporäre Datei für das Hier-Dokument nicht anlegen: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: Kann fd keiner Variable zuweisen."
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
-msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt"
+msgstr ""
+"Dateinamen der Form /dev/(tcp|udp)/host/port werden ohne Netzwerk nicht "
+"unterstützt"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
-msgstr ""
+msgstr "Umleitungsfehler: Verdoppeln des Dateibezeichners nicht möglich."
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
-msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen."
+msgstr "Konnte das Verzeichnis »/tmp« nicht finden, bitte anlegen."
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
-msgstr "/tmp muss ein gültiger Verzeichnisname sein."
+msgstr "/tmp muss ein Verzeichnis sein."
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "Der hübsche Druckmodus wird in interaktiven Schells ignoriert."
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: Ungültige Option"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
-msgstr "Konnte nicht die uid in %d ändern: Die geltende uid ist %d"
+msgstr "Konnte die UID nicht in %d ändern: Die effektive UID ist %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
-msgstr "Konnte nicht die gid in %d ändern: Die geltende gid ist %d"
+msgstr "Konnte die GID nicht in %d ändern: Die effektive GID ist %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt."
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Ist ein Verzeichnis."
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ich habe keinen Benutzernamen!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, Version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-"Aufruf:\t%s [Lange GNU Option] [Option] ...\n"
-"\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n"
+"Aufruf:\t%s [Lange GNU-Option] [Option] ...\n"
+"\t%s [Lange GNU-Option] [Option] Script-Datei ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
-msgstr "Lange GNU Optionen:\n"
+msgstr "Lange GNU-Optionen:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Shell-Optionen:\n"
-#: shell.c:1988
+#: shell.c:2043
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"
+msgstr "\t-ilrsD oder -c Kommando oder -O shopt_option\t\t(Nur Aufruf)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s oder Option -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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"
+msgstr ""
+"Geben Sie »%s -c \"help set\"« ein, um mehr über Shell-Optionen zu "
+"erfahren.\n"
-#: shell.c:2014
+#: shell.c:2069
#, 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"
+msgstr ""
+"Geben Sie »%s -c help« ein, um mehr über eingebaute Shellkommandos zu "
+"erfahren.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n"
+msgstr "Mit dem Kommando »bashbug« Kommando können Sie Fehler melden.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
-msgstr "Bash Homepage: <http://www.gnu.org/software/bash>\n"
+msgstr "Bash-Homepage: <https://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-msgstr "Allgemeine Hilfe für GNU Software: <http://www.gnu.org/gethelp/>\n"
+msgstr "Allgemeine Hilfe für GNU-Software: <https://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: Ungültige Operation"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Falsches Signal."
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Aufgelegt"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Unterbrochen (Interrupt)"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Quit"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Ungültige Anweisung."
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Verfolgen/anhalten abfangen (Trace/breakpoint trap)"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Abbruchkommando"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT abfangen (EMT trap)"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Gleitkommafehler"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Abgebrochen (Killed)"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus-Fehler"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Adressierungsfehler"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Falscher Systemaufruf"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Unterbrochene Pipe"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Wecker"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Abgebrochen (Terminated)"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Dringende IO-Bedingung"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Angehalten (Signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Prozessbearbeitung wieder aufgenommen."
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Kindprozess abgebrochen oder gestoppt."
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Angehalten (Terminaleingabe)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Angehalten (Terminalausgabe)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "E/A fertig"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Rechenzeitgrenze"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Grenze für Dateigröße"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (Virtuell)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (Profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
-msgstr "Fenster geändert."
+msgstr "Fenster geändert"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
-msgstr "Datei blockiert."
+msgstr "Datei blockiert"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Nutzersignal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Nutzersignal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
-msgstr "HFT Eingabedaten ausstehend."
+msgstr "HFT Eingabedaten ausstehend"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
-msgstr "Spannungsausfall steht bevor."
+msgstr "Spannungsausfall steht bevor"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
-msgstr "Systemausfall steht bevor."
+msgstr "Systemausfall steht bevor"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
-msgstr "Verlege den Prozess auf einen anderen Prozessor."
+msgstr "Verlege den Prozess auf einen anderen Prozessor"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "Programmierfehler"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
-msgstr "HFT-Monitormodus erlaubt."
+msgstr "HFT-Monitormodus erlaubt"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
-msgstr "HFT-Monitormodus abgeschaltet."
+msgstr "HFT-Monitormodus abgeschaltet"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
-msgstr "HFT-Tonfolge beendet."
+msgstr "HFT-Tonfolge beendet"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informationsanforderung"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Unbekannte Signalnummer."
-
-#: siglist.c:225
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unbekanntes Signal Nr.: %d."
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten."
+msgstr "Falsche Ersetzung: Kein schließendes »%s« in »%s« enthalten."
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: Kann einem Feldelement keine Liste zuweisen."
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "Kann keine Pipe für die Prozessersetzung erzeugen."
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen."
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "Kann nicht die benannte Pipe %s zum lesen öffnen."
+msgstr "Kann nicht die benannte Pipe %s zum Lesen öffnen."
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
-msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen."
+msgstr "Kann nicht die benannte Pipe %s zum Schreiben öffnen."
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "Kann die benannte Pipe %s nicht auf fd %d."
+msgstr "Kann die benannte Pipe %s nicht auf fd %d duplizieren."
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
-msgstr "Kommansosubstitution: NULL byte in der Eingabe ignoriert."
+msgstr "Kommandoersetzung: NULL-Byte in der Eingabe ignoriert."
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "Kann keine Pipes für Kommandoersetzung erzeugen."
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen."
# interner Fehler
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "Kommandosubstitution: Kann Pipe nicht als fd 1 duplizieren."
+msgstr "command_substitute: Kann Pipe nicht als Dateideskriptor 1 duplizieren."
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
-msgstr ""
+msgstr "%s: Ungültiger Variablenname für Namensreferenz."
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s: Ungültige indirekte Expansion"
+msgstr "%s: Ungültige indirekte Expansion."
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
-msgstr "`%s': Ungültiger Variablenname."
+msgstr "%s: Ungültiger Variablenname."
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: Der Parameter ist nicht gesetzt."
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
-msgstr "%s: Parameter ist Null oder nicht gesetzt."
+msgstr "%s: Parameter ist leer oder nicht gesetzt."
# interner Fehler
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: Teilstring-Ausdruck < 0."
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: Falsche Substitution."
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: Kann so nicht zuweisen."
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2028,12 +2095,12 @@ msgstr ""
"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer "
"Ersetzungen erzwingen."
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s."
+msgstr "Falsche Ersetzung: Kein schließendes »`« in %s."
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "Keine Entsprechung: %s"
@@ -2049,125 +2116,142 @@ msgstr "%s: Ganzzahliger Ausdruck erwartet."
#: test.c:265
msgid "`)' expected"
-msgstr "`)' erwartet."
+msgstr "»)« erwartet."
#: test.c:267
#, c-format
msgid "`)' expected, found %s"
-msgstr "`)' erwartet, %s gefunden."
-
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: Einstelliger (unärer) Operator erwartet."
+msgstr "»)« erwartet, %s gefunden."
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: Zweistelliger (binärer) Operator erwartet."
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: Einstelliger (unärer) Operator erwartet."
+
+#: test.c:881
msgid "missing `]'"
-msgstr "Fehlende `]'"
+msgstr "Fehlende »]«"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Syntax Fehler: unerwartetes `;'."
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "Ungültige Signalnummer."
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "trap handler: Maximale trap handler Ebene überschritten (%d)"
+msgstr "Traphandler: Maximale Traphandler-Ebene überschritten (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
# Programmierfehler
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Falsches Signal %d."
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
-msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'."
+msgstr "Fehler beim Importieren der Funktionsdefinition für »%s«."
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr "Der Shell Level (%d) ist zu hoch und wird auf 1 zurückgesetzt."
+msgstr "Der Shell-Level (%d) ist zu hoch und wird auf 1 zurückgesetzt."
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
-msgstr ""
+msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
-msgstr "%s: Der Variable könnte kein Wert zugewiesen sein."
+msgstr "%s: Der Variable darf kein Wert zugewiesen werden."
-#: variables.c:3453
+# Interner Fehler
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
-msgstr ""
+msgstr "%s: assigning integer to name reference"
-#: variables.c:4365
+# Interner Fehler
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
-msgstr ""
+msgstr "all_local_variables: no function context at current scope"
-#: variables.c:4698
+# Interner Fehler
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
-msgstr ""
+msgstr "%s has null exportstr"
-#: variables.c:4703 variables.c:4712
+# Interner Fehler
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
-msgstr ""
+msgstr "invalid character %d in exportstr for %s"
-#: variables.c:4718
+# Interner Fehler
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
-msgstr ""
+msgstr "no `=' in exportstr for %s"
-#: variables.c:5243
+# Interner Fehler
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
-msgstr ""
+msgstr "pop_var_context: head of shell_variables not a function context"
-#: variables.c:5256
+# Interner Fehler
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
-msgstr ""
+msgstr "pop_var_context: no global_variables context"
-#: variables.c:5336
+# Interner Fehler
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr ""
+msgstr "pop_scope: head of shell_variables not a temporary environment scope"
-#: variables.c:6272
+# Interner Fehler
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
-msgstr "%s: %s: Kann nicht als Datei geöffnet werden."
+msgstr "%s: %s: cannot open as FILE"
-#: variables.c:6277
+# Interner Fehler
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
-msgstr ""
+msgstr "%s: %s: invalid value for trace file descriptor"
-#: variables.c:6322
+# Interner Fehler
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
-msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches."
+msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2185,7 +2269,7 @@ 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 "Dies ist freie Software. Sie darf verändert und verteilt werden."
+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."
@@ -2194,22 +2278,22 @@ msgstr "Es wird keine Garantie gewährt, soweit das Gesetz es zulässt."
#: xmalloc.c:93
#, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)."
+msgstr "%s: Konnte keine %lu Bytes reservieren (%lu bytes reserviert)."
#: xmalloc.c:95
#, c-format
msgid "%s: cannot allocate %lu bytes"
-msgstr "%s: Konnte nicht %lu Bytes reservieren."
+msgstr "%s: Konnte keine %lu Bytes reservieren."
#: xmalloc.c:165
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)."
+msgstr "%s: %s:%d: Konnte keine %lu Bytes reservieren (%lu bytes reserviert)."
#: xmalloc.c:167
#, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes"
-msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren."
+msgstr "%s: %s:%d: Konnte keine %lu Bytes reservieren."
#: builtins.c:45
msgid "alias [-p] [name[=value] ... ]"
@@ -2224,9 +2308,9 @@ msgid ""
"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
msgstr ""
-"bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u\n"
-"Name] [-r Tastenfolge] [-x Tastenfolge:Shell Kommando] [Tastenfolge:readline-"
-"Funktion oder -Kommando]"
+"bind [-lpsvPSVX] [-m Tastaturtabelle] [-f Dateiname] [-q Name] [-u Name]\n"
+"\t[-r Tastenfolge] [-x Tastenfolge:Shell Kommando]\n"
+"\t[Tastenfolge:readline-Funktion oder -Kommando]"
#: builtins.c:56
msgid "break [n]"
@@ -2257,12 +2341,14 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] Kommando [Argument ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrntux] [-p] [Name[=Wert] ...]"
#
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] Name[=Wert] ..."
#: builtins.c:82
@@ -2285,12 +2371,16 @@ msgstr "enable [-a] [-dnps] [-f Dateiname] [Name ...]"
msgid "eval [arg ...]"
msgstr "eval [Argument ...]"
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts Optionen Variable [Argumente]"
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00026.html
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a Name] [Kommando [Argumente ...]] [Umleitung ...]"
#: builtins.c:100
@@ -2420,7 +2510,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [Modus]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id ...]"
#: builtins.c:181
@@ -2429,7 +2520,7 @@ msgstr "wait [pid ...]"
#: builtins.c:184
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for Name [in Wortliste ... ] ; do Kommandos; done"
+msgstr "for Name [in Wort ... ] ; do Kommandos; done"
#: builtins.c:186
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
@@ -2437,7 +2528,7 @@ msgstr "for (( Ausdr1; Ausdr2; Ausdr3 )); do Kommandos; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select Name [in Wortliste ... ;] do Kommandos; done"
+msgstr "select Name [in Wort ... ;] do Kommandos; done"
#: builtins.c:190
msgid "time [-p] pipeline"
@@ -2489,7 +2580,7 @@ msgstr "[[ Ausdruck ]]"
#: builtins.c:212
msgid "variables - Names and meanings of some shell variables"
-msgstr "variables - Namen und Bedeutung einiger Shell Variablen"
+msgstr "variables - Namen und Bedeutung einiger Shellvariablen"
#: builtins.c:215
msgid "pushd [-n] [+N | -N | dir]"
@@ -2511,24 +2602,30 @@ msgstr "shopt [-pqsu] [-o] [Optionsname ...]"
msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] Format [Argumente]"
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o Option] [-A Aktion]\n"
" [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando]\n"
" [-X Filtermuster] [-P Prefix] [-S Suffix] [Name ...]"
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00027.html
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o Option] [-A Aktion] [-G Suchmuster] [-W "
-"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S "
-"Suffix] [Wort]"
+"Wortliste]\n"
+" [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S "
+"Suffix]\n"
+" [Wort]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
@@ -2539,8 +2636,8 @@ 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]"
+"mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd]\n"
+" [-C Callback] [-c Menge] [Feldvariable]"
#: builtins.c:244
msgid ""
@@ -2571,20 +2668,20 @@ msgid ""
" defined."
msgstr ""
"Definiert Aliase oder zeigt sie an.\n"
-" \n"
+"\n"
" Ohne Argumente wird die Liste der Aliase (Synonyme) in der Form\n"
-" `alias Name=Wert' auf die Standardausgabe ausgegeben.\n"
+" »alias Name=Wert« auf die Standardausgabe ausgegeben.\n"
"\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"
+" 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"
+"\n"
" Rückgabewert:\n"
-" Meldet Erfolg, außer wenn `Name' angegeben worden ist, für den\n"
+" Meldet Erfolg, außer wenn ein »Name« angegeben worden ist, für den\n"
" kein Alias definiert wurde."
# unalias
@@ -2597,11 +2694,11 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
-"Entferne jeden angegebenen Namen von der Aliasliste.\n"
-" \n"
+"Entfernt jeden angegebenen Namen von der Aliasliste.\n"
+"\n"
" Optionen:\n"
-" -a\tEnferne alle Alias Definitionen.\n"
-" \n"
+" -a\tEnfernt alle Alias-Definitionen.\n"
+"\n"
" Gibt immer Erfolg zurück, außer wenn der Alias nicht existiert."
# bind
@@ -2713,11 +2810,11 @@ msgid ""
" Exit Status:\n"
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
-"Beendet for, while oder until Schleifen.\n"
+"Verlässt for-, while- oder until-Schleifen.\n"
"\n"
-" Break beendet eine »for«, »while« oder »until« Schleife. Wenn\n"
-" »n« angegeben ist, werden entsprechend viele geschachtelte\n"
-" Schleifen beendet.\n"
+" Break beendet eine »for«-, »while«- oder »until«- Schleife. Wenn »n«\n"
+" angegeben ist, werden entsprechend viele geschachtelte Schleifen "
+"beendet.\n"
"\n"
" Rückgabewert:\n"
" Der Rückgabewert ist 0, außer »n« ist nicht größer oder gleich 1."
@@ -2734,11 +2831,11 @@ msgid ""
" The exit status is 0 unless N is not greater than or equal to 1."
msgstr ""
"Springt zum Schleifenanfang von for, while, oder until Schleifen.\n"
-" \n"
+"\n"
" Springt zum Schleifenanfang der aktuellen »for«, »while« oder »until«\n"
" Schleife. Wenn »n« angegeben ist, wird zum Beginn der »n«-ten\n"
" übergeordneten Schleife gesprungen.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Der Rückgabewert ist 0, außer wenn »n« nicht größer oder gleich 1 ist."
@@ -2759,8 +2856,8 @@ msgstr ""
"Führt ein in der Shell definiertes Kommando aus.\n"
"\n"
" Führt ein in der Shell definiertes Kommando ohne vorherige\n"
-" Befehlssuche aus. Dies ist dann nützlich, wenn das Kommando als\n"
-" Shell Funktion reimplementiert werden soll, aber das Kommando\n"
+" Befehlssuche aus. Dies ist dann nützlich, wenn das Kommando als\n"
+" Shell-Funktion reimplementiert werden soll, aber das Kommando\n"
" innerhalb der neuen Funktion aufgerufen wird.\n"
"\n"
" Rückgabewert: \n"
@@ -2783,16 +2880,15 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
-"Gibt Informationen zum aktuellen Subrutinenaufruf aus.\n"
-" \n"
-" Ohne Argument wird die Zeilennummer und der Dateeiname angezeigt. Mit\n"
-" Argument werden Zeilennummer, Subroutinnenname und Dateiname "
-"ausgegeben.\n"
-" Mit diesen Informationen kann ein Stack Trace erzeugt werden.\n"
-" \n"
+"Gibt Informationen zum aktuellen Subroutinenaufruf aus.\n"
+"\n"
+" Ohne Argument wird die Zeilennummer und der Dateiname angezeigt. Mit\n"
+" Argument werden Zeilennummer, Subroutinenname und Dateiname ausgegeben.\n"
+" Mit diesen Informationen kann ein Stacktrace erzeugt werden.\n"
+"\n"
" Das Argument gibt die angezeigte Position im Funktionsaufrufstapel an,\n"
" wobei 0 der aktuelle Funktionsaufruf ist.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das "
"Argument\n"
@@ -2845,45 +2941,44 @@ msgid ""
msgstr ""
"Wechselt das Arbeitsverzeichnis.\n"
"\n"
-" Wechselt in das angegebene Arbeitsverzeichnis. Ohne Angabe eines\n"
-" Verzeichnisses wird in das in der HOME Variable definierte\n"
+" Wechselt in das angegebene Arbeitsverzeichnis. Ohne Angabe eines\n"
+" Verzeichnisses wird in das in der Variable HOME definierte\n"
" Verzeichnis gewechselt.\n"
"\n"
" Die Variable CDPATH definiert den Suchpfad, in dem nach dem\n"
-" angegebeben Verzeichnisnamen gesucht wird. Mehrere Pfade werden\n"
+" angegebenen 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"
+" dem aktuellen Verzeichnis. Mit einem vollständigen Pfadnamen wird\n"
" CDPATH nicht benutzt.\n"
"\n"
" Wird kein entsprechendes Verzeichnis gefunden und die Shelloption\n"
-" `cdable_vars' ist gesetzt, dann wird der `Wert' als Variable\n"
-" interpretiert. Dessen Inhalt wird dann als Verzeichnisname\n"
+" »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, dass symbolischen Verweisen gefolgt wird.\n"
+" -L Erzwingt, dass symbolischen Links gefolgt wird.\n"
" Symbolische Links im aktuellen Verzeichnis werden nach\n"
" dem übergeordneten Verzeichnis aufgelöst.\n"
-" -P\tSymbolische Verweise werden ignoriert. Symbolische\n"
+" -P Symbolische Links werden ignoriert. Symbolische\n"
" Links im aktuellen Verzeichnis werden vor dem\n"
" übergeordneten Verzeichnis aufgelöst.\n"
-" -e\tWenn mit der »-P« das aktuelle Arbeitsverzeichnis\n"
-" nicht ermittelt werden kann, wird mit einem\n"
-" Rückgabwert ungleich 0 abgebrochen.\n"
-" -@ Wenn es das System unterstützt, wird eine Datei mit\n"
+" -e Wenn mit der Option »-P« das aktuelle Arbeitsverzeichnis\n"
+" nicht ermittelt werden kann, wird mit einem Rückgabewert\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"
-" Standardmäßig wird symbolischen Verweisen gefolgt (Option -L).\n"
+" Standardmäßig wird symbolischen Links gefolgt (Option -L).\n"
" Das übergeordnete Verzeichnis wird ermittelt, indem der\n"
-" Dateiname am letzten Schrägstrich gekürzt wird oder es wird der\n"
+" Dateiname am letzten Schrägstrich gekürzt wird, oder es wird der\n"
" Anfang von DIR verwendet.\n"
"\n"
" Rückgabewert:\n"
-"\n"
" Der Rückgabewert ist 0, wenn das Verzeichnis erfolgreich\n"
-" gewechselt wurde, oder wenn die -P Option angegeben und $PWD\n"
-" erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0."
+" gewechselt wurde, oder wenn die Option -P angegeben und $PWD\n"
+" erfolgreich gesetzt werden konnte. Sonst ist er ungleich 0."
# pwd
#: builtins.c:425
@@ -2902,17 +2997,18 @@ msgid ""
" cannot be read."
msgstr ""
"Gibt den Namen des aktuellen Arbeitsverzeichnisses aus.\n"
-" \n"
+"\n"
" Optionen:\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"
+" -L Gibt den Inhalt der Variable $PWD aus, wenn sie das "
+"aktuelle\n"
+" Arbeitsverzeichnis enthält.\n"
+" -P Gibt den physischen Verzeichnispfad aus, ohne symbolische\n"
+" Links.\n"
+"\n"
" Standardmäßig wird immer die Option »-L« gesetzt.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
-" Ist 0 außer wenn eine ungültige Option angegeben oder das aktuelle\n"
+" Ist 0, außer wenn eine ungültige Option angegeben oder das aktuelle\n"
" Verzeichnis nicht lesbar ist."
# colon
@@ -2979,19 +3075,19 @@ msgstr ""
"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos "
"an.\n"
"\n"
-" Führt das Kommando mit den angegebeneb Argumenten aus, ohne\n"
+" Führt das Kommando mit den angegebenen Argumenten aus, ohne\n"
" Shell-Funktion nachzuschlagen oder zeigt Informationen über die\n"
" Kommandos an. Dadurch können auch dann Kommandos ausgeführt\n"
" werden, wenn eine Shell-Funktion gleichen Namens existiert.\n"
-" \n"
+"\n"
" Optionen:\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"
-" -V\tEine ausführlichere Beschreibung jedes Kommandos ausgeben.\n"
-" \n"
+" -p Es wird ein Standardwert für PATH verwendet, der "
+"garantiert,\n"
+" dass alle Standard-Dienstprogramme gefunden werden.\n"
+" -v Beschreibung des Kommandos ausgeben.\n"
+" Ähnlich dem eingebauten Kommando »type«.\n"
+" -V Eine ausführlichere Beschreibung jedes Kommandos ausgeben.\n"
+"\n"
" Rückgabewert:\n"
" Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, "
"wenn\n"
@@ -2999,6 +3095,7 @@ msgstr ""
# declare
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3011,6 +3108,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3038,47 +3137,47 @@ msgid ""
" assignment error occurs."
msgstr ""
"Setzt Variablenwerte und deren Attribute.\n"
-" \n"
-" Deklariert Variablen und weist ihnen Attribute zu. Wenn keine\n"
-" Namen angegeben sind, werden die Attribute und Werte aller\n"
-" Variablen ausgegeben.\n"
+"\n"
+" Deklariert Variablen und weist ihnen Attribute zu. Wenn keine Namen\n"
+" angegeben sind, werden die Attribute und Werte aller Variablen "
+"ausgegeben.\n"
" \n"
" Optionen:\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 globale Varieblen innerhalb einer\n"
+" -f Schränkt Aktionen oder Anzeigen auf Funktionsnamen\n"
+" und Definitionen ein.\n"
+" -F Zeigt nur Funktionsnamen an (inklusive Zeilennummer\n"
+" und Quelldatei beim Debuggen).\n"
+" -g Deklariert globale Varieblen innerhalb einer\n"
" Shellfunktion; wird ansonsten ignoriert.\n"
-" -p\tZeigt die Attribute und Werte jeder angegebenen\n"
+" -p Zeigt die Attribute und Werte jeder angegebenen\n"
" Variable an.\n"
-" \n"
+"\n"
" Attribute setzen:\n"
" -a\tDeklariert ein indiziertes Feld (wenn unterstützt).\n"
" -A\tDeklariert ein assoziatives Feld (wenn unterstützt).\n"
-" -i\tDeklariert eine Integer Variable.\n"
+" -i\tDeklariert eine ganzzahlige 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"
+" -t\tWeist das Attribut »trace« zu.\n"
" -u\tKonvertiert die Variablennamen in Großbuchstaben.\n"
-" -x\tExportiert die Variablen über die aktuelle Shell\n"
+" -x\tExportiert die Variablen über die aktuelle Shell-\n"
" Umgebung hinaus.\n"
-" \n"
-" Das Voranstellen von »+« anstelle von »-« schaltet die gegebenen\n"
+"\n"
+" Das Voranstellen von »+« anstelle von »-« schaltet die angegebenen\n"
" Attribute ab.\n"
-" \n"
-" Für Integer Variablen werden bei der Zuweisung arithmetische\n"
-" Berechnungen durchgeführt (siehe `help let').\n"
-" \n"
+"\n"
+" Für ganzzahlige Variablen werden bei der Zuweisung arithmetische\n"
+" Berechnungen durchgeführt (siehe »help let«).\n"
+"\n"
" Innerhalb einer Funktion werden lokale Variablen erzeugt. Die\n"
" Option »-g« unterdrückt dieses Verhalten.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Gibt »Erfolg« zurück, außer eine ungültige Option wurde angegeben,\n"
" oder ein Fehler trat auf."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3086,9 +3185,9 @@ msgid ""
msgstr ""
"Setzt Variablen Werte und Eigenschaften\n"
"\n"
-" Synonym für `declare'. Siehe `help declare'."
+" Synonym für »declare«. Siehe »help declare«."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3103,22 +3202,21 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
"Definiert lokale Variablen.\n"
-" \n"
-" Erzeugt eine lokale Variable NAME und weist ihr den Wert VALUE zu.\n"
-" OPTION kann eine beliebige von `declare' akzeptierte Option sein.\n"
+"\n"
+" Erzeugt eine lokale Variable Name und weist ihr den Wert Wert zu.\n"
+" Option kann eine beliebige von »declare« akzeptierte Option sein.\n"
"\n"
" Lokale Variablen können nur innerhalb einer Funktion benutzt\n"
" werden. Sie sind nur in der sie erzeugenden Funktion und ihren\n"
" Kindern sichtbar.\n"
-" \n"
+"\n"
" Rückgabewert: \n"
" Liefert 0 außer bei Angabe einer ungültigen Option, einer\n"
" fehlerhaften Variablenzuweisung oder dem Aufruf außerhalb einer\n"
" Funktion."
# echo
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3158,36 +3256,36 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
"Ausgabe der Argumente auf die Standardausgabe.\n"
-" \n"
+"\n"
" Zeigt die Argumente auf der Standardausgabe gefolgt von einem\n"
" Zeilenumbruch an.\n"
-" \n"
+"\n"
" Optionen:\n"
" -n\tKeinen Zeilenumbruch anfügen\n"
" -e\tInterpretation der folgenden Escape-Sequenzen zulassen\n"
" -E\tKeine Interpretation der Escape-Sequenzen.\n"
-" \n"
+"\n"
" »echo« interpretiert die folgenden Escape-Sequenzen:\n"
-" \\a\tAlarm (Glocke)\n"
+" \a\tAlarm (Glocke)\n"
" \\b\tRücktaste (Backspace)\n"
" \\c\tweitere Ausgabe unterdrücken\n"
" \\e\tEscape-Zeichen\n"
-" \\E Escape Zeichen\n"
+" \\E\tEscape-Zeichen\n"
" \\f\tSeitenvorschub\n"
" \\n\tZeilenvorschub\n"
" \\r\tWagenrücklauf\n"
" \\t\tHorizontaler Tabulator\n"
" \\v\tVertikaler Tabulator\n"
-" \\\\ umgekehrter Schrägstrich (Backslash)\n"
+" \\\\tumgekehrter Schrägstrich (Backslash)\n"
" \\0nnn\tZeichen mit dem ASCII-Code »NNN« (oktal). »NNN« kann null\n"
" \t\tbis drei oktale Ziffern haben.\n"
" \\xHH\tAcht-Bit-Zeichen mit dem Wert »HH« (hexadezimal). »HH«\n"
-" \t\tkann ein oder zwei hexadezimale Ziffern haben.\n"
-" \n"
+" \t\tkann eine oder zwei hexadezimale Ziffern haben.\n"
+"\n"
" Rückgabewert:\n"
" Gibt »Erfolg« zurück, außer ein Ausgabefehler tritt auf."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3200,18 +3298,18 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
"Ausgabe der Argumente auf die Standardausgabe.\n"
-" \n"
-" Zeigt die Argumente auf der Standardausgabe von einem\n"
-" Zeilenumbruch gefolgt an.\n"
-" \n"
+"\n"
+" Zeigt die Argumente auf der Standardausgabe an, gefolgt von einem\n"
+" Zeilenumbruch.\n"
+"\n"
" Option:\n"
" -n\tkeinen Zeilenumbruch anfügen.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Gibt »Erfolg« zurück, außer nach einem Schreibfehler."
# enable
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3238,36 +3336,36 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
"Eingebaute Shell-Kommandos aktivieren und deaktivieren.\n"
-" \n"
+"\n"
" Aktiviert und deaktiviert eingebaute Shell-Kommandos. Die Deaktivierung\n"
" erlaubt Ihnen, eigene Kommandos mit demselben Namen wie die eingebauten\n"
" Kommandos zu nutzen, ohne den kompletten Pfad angeben zu müssen.\n"
-" \n"
+"\n"
" Optionen:\n"
" -a\tGibt eine Liste der eingebauten Kommandos aus inklusive der\n"
-" \t\tInformation, ob sie aktiv sind oder nicht.\n"
+" \tInformation, ob sie aktiv sind oder nicht.\n"
"\n"
" -n\tdeaktiviert jedes angegebene Kommando oder gibt eine\n"
-" Liste der deaktivierten eingebauten Kommandos aus.\n"
+" \tListe der deaktivierten eingebauten Kommandos aus.\n"
" -p\tGibt eine Liste der eingebauten Kommandos in einem\n"
-" \t\twiederverwendbaren Format aus.\n"
+" \twiederverwendbaren Format aus.\n"
" -s\tGibt nur die Namen der »speziellen« in POSIX eingebauten\n"
-" \t\tKommandos aus.\n"
-" \n"
+" \tKommandos aus.\n"
+"\n"
" Optionen zum Beeinflussen des dynamischen Ladens:\n"
-" -f\tLade eingebautes Kommando aus der angegebenen Datei.\n"
+" -f\tLädt ein eingebautes Kommando aus der angegebenen Datei.\n"
" -d\tEntfernt ein mit »-f« geladenes Kommando.\n"
-" \n"
-" Ohne Optionen wird jedes angegebe Kommando aktiviert.\n"
-" \n"
+"\n"
+" Ohne Optionen wird jedes angegebene Kommando aktiviert.\n"
+"\n"
" Um das unter $PATH liegende Kommando »test« anstelle der eingebauten\n"
" Version zu nutzen, geben Sie »enable -n test« ein.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
-" Gibt »Erfolg« zurück, außer NAME ist kein eingebautes Kommando \n"
+" Gibt »Erfolg« zurück, außer Name ist kein eingebautes Kommando\n"
" oder ein Fehler tritt auf."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3278,17 +3376,18 @@ msgid ""
" Exit Status:\n"
" Returns exit status of command or success if command is null."
msgstr ""
-"Führe die Argumente als Shell Kommando aus.\n"
-" \n"
+"Führt die Argumente als Shellkommando aus.\n"
+"\n"
" Fügt die Argumente zu einer Zeichenkette zusammen und verwendet\n"
" das Ergebnis als Eingebe in eine Shell, welche die enthaltenen\n"
" Kommandos ausführt.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
-" Der Status des Kommandoe oder Erfolg wenn das Kommando leer war."
+" Der Status des Kommandos oder Erfolg, wenn das Kommando leer war."
# getopts
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3321,55 +3420,56 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-"Analysieren von Optionsargumenten.\n"
-" \n"
+"Verarbeitet Optionsargumente.\n"
+"\n"
" Getopts wird von Shell-Prozeduren verwendet, um die\n"
" Kommandozeilenoptionen auszuwerten.\n"
-" \n"
-" \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n"
+"\n"
+" \"Optionen\" enthält die auszuwertenden Buchstaben. Ein Doppelpunkt\n"
" nach dem Buchstaben zeigt an, dass ein Argument erwartet wird,\n"
" welches durch ein Leerzeichen von der Option getrennt ist.\n"
-" \n"
+"\n"
" Bei jedem Aufruf von »getopts« wird die nächste Option der\n"
" $Variable zugewiesen. Diese wird angelegt, falls sie noch\n"
-" nicht existiert. Weiterhin wird der Indes Index des nächsten zu\n"
+" nicht existiert. Weiterhin wird der Index des nächsten zu\n"
" verarbeitenden Arguments der Shell-Variablen OPTIND\n"
" zugewiesen. OPTIND wird bei jedem Aufruf einer Shell oder eines\n"
-" Shell-Skripts mit 1 initialisiert. Wenn eine Option ein Argument\n"
+" Shell-Skripts mit 1 initialisiert. Wenn eine Option ein Argument\n"
" benötigt, wird dieses OPTARG zugewiesen.\n"
-" \n"
-" Für Fehlermeldungen gibt es zwei Varianten. Wenn das erste\n"
+"\n"
+" Für Fehlermeldungen gibt es zwei Varianten. Wenn das erste\n"
" Zeichen des Optionsstrings ein Doppelpunkt ist, wird der stille\n"
" Fehlermodus von »getopts« verwendet. In diesem Modus wird keine\n"
" Fehlermeldung ausgegeben. Wenn eine ungültige Option erkannt wird,\n"
" wird das gefundene Optionenzeichen OPTARG zugewiesen. Wenn ein\n"
" benötigtes Argument fehlt, wird ein »:« der Variable zugewiesen\n"
-" und OPTARG auf das gefundene Optionenzeichen gesetzt. Im anderen\n"
+" und OPTARG auf das gefundene Optionenzeichen gesetzt. Im anderen\n"
" Fehlermodus wird ein »?« der Variable zugewiesen, OPTARG geleert\n"
" und eine Fehlermeldung ausgegeben.\n"
-" \n"
-" Wenn die Shell-Variable OPTERR den Wert »0« hat, werden durch getopts \n"
-" keine Fehlermeldungen ausgegeben, auch wenn das erste Zeichen \n"
+"\n"
+" Wenn die Shell-Variable OPTERR den Wert »0« hat, werden durch getopts\n"
+" keine Fehlermeldungen ausgegeben, auch wenn das erste Zeichen\n"
" von OPTSTRING kein Doppelpunkt ist. OPTERR hat den Vorgabewert »1«.\n"
-" \n"
-" Getopts analysiert normalerweise die von der Position abhängigen\n"
-" Parameter ($0 - $9). Aber wenn mehr Argumente angegeben sind,\n"
-" werden stattdessen diese analysiert.\n"
-" \n"
+"\n"
+" Wenn im Aufruf von »getops« die »Argumente« angegeben sind, werden "
+"diese\n"
+" verarbeitet. Ansonsten werden die von der Position abhängigen\n"
+" Parameter ($1, $2, etc.) verarbeitet.\n"
+"\n"
" Rückgabewert:\n"
" Gibt »Erfolg« zurück wenn eine Option gefunden wird und\n"
" »gescheitert«, wenn das Ende der Optionen erreicht oder ein Fehler\n"
" aufgetreten ist."
# exec
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3392,26 +3492,26 @@ msgid ""
"occurs."
msgstr ""
"Ersetzt die Shell durch das angegebene Kommando.\n"
-" \n"
-" Führt das angebebene Kommando einschließlich dessen Optionen an\n"
+"\n"
+" Führt das angegebene 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"
+"\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 in das nullte Argument für das Kommando.\n"
-" \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"
" gesetzt.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Gibt »Erfolg« zurück, außer das Kommando wurde nicht gefunden oder\n"
" ein Weiterleitungsfehler trat auf."
# exit
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3420,12 +3520,12 @@ msgid ""
msgstr ""
"Beendet die aktuelle Shell.\n"
"\n"
-" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht "
-"angegeben ist,\n"
-" wird der Rückgabewert des letzten ausgeführten Kommandos übernommen."
+" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht "
+"angegeben\n"
+" ist, wird der Rückgabewert des letzten ausgeführten Kommandos übernommen."
# logout
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3433,14 +3533,14 @@ msgid ""
"executed\n"
" in a login shell."
msgstr ""
-" Beendet eine Login-Shell.\n"
-" \n"
-" Beendet eine Login-Shell mit dem Rückgabewert »n«. Wenn logout\n"
+"Beendet eine Login-Shell.\n"
+"\n"
+" Beendet eine Login-Shell mit dem Rückgabewert »n«. Wenn logout\n"
" nicht von einer Login-Shell aus ausgeführt wurde, wird ein Fehler\n"
" zurückgegeben."
# fc
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3470,7 +3570,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3482,15 +3582,15 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
"Bringt einen Job in den Vordergrund.\n"
-" \n"
-" Bringt den mit JOB_SPEC bezeichneten Prozess als aktuellen Job\n"
-" in den Vordergrund. Wenn JOB_SPEC nicht angegeben ist, wird\n"
-" der zuletzt angehaltene Job verwendet.\n"
-" \n"
-" Rückgabewert:\n"
-" Status des in den Vordergrund geholten Jobs oder Fehler."
-
-#: builtins.c:777
+"\n"
+" Bringt den mit JOB_SPEC bezeichneten Prozess als aktuellen Job in den\n"
+" Vordergrund. Wenn JOB_SPEC nicht angegeben ist, wird der zuletzt\n"
+" angehaltene Job verwendet.\n"
+"\n"
+" Rückgabewert:\n"
+" Status des in den Vordergrund geholten Jobs oder Fehler."
+
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3504,15 +3604,15 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
"Bringt einen Job in den Hintergrund.\n"
-" \n"
-" Bringt den mit JOB_SPEC bezeichneten Job in den Hintergrund,\n"
-" als ob er mit »&« gestartet wurde.\n"
-" \n"
-" Rückgabewert:\n"
-" Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n"
-" oder ein Fehler auftritt."
-
-#: builtins.c:791
+"\n"
+" Bringt den mit JOB_SPEC bezeichneten Job in den Hintergrund,\n"
+" als ob er mit »&« gestartet wurde.\n"
+"\n"
+" Rückgabewert:\n"
+" Immer Erfolg, außer wenn die Jobsteuerung nicht verfügbar ist\n"
+" oder ein Fehler auftritt."
+
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3537,7 +3637,7 @@ msgid ""
msgstr ""
# help
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3559,26 +3659,26 @@ msgid ""
"given."
msgstr ""
"Informationen zu eingebauten Kommandos.\n"
-" \n"
-" Zeigt kurze Informationen zu eingebauten Kommandos an. Wenn ein\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"
+" allen Kommandos mit zutreffendem Muster angezeigt. Sonst wird die\n"
" Liste der Hilfethemen ausgegeben.\n"
-" \n"
+"\n"
" Optionen:\n"
" -d\tKurzbeschreibung für jedes Thema\n"
-" -m\tAnzeige im Manpage Format.\n"
+" -m\tAnzeige im Manpage-Format.\n"
" -s\tGibt eine kurze Zusammenfassung für jedes angegebene\n"
-" angegebene Thema aus\n"
-" \n"
+" \tangegebene Thema aus\n"
+"\n"
" Argumente:\n"
" Muster\tDas gesuchte Hilfetheme\n"
-" \n"
-" Rückgabestautus:\n"
+"\n"
+" Rückgabestatus:\n"
" Erfolg, außer wenn das Muster nicht gefunden oder eine ungültige Option\n"
" angegeben wurde."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3613,7 +3713,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3637,7 +3737,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3654,7 +3754,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3677,7 +3777,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3722,7 +3822,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3774,7 +3874,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3786,7 +3886,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3872,7 +3972,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3894,7 +3994,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3913,7 +4013,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3934,7 +4034,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3945,7 +4045,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3959,7 +4059,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3973,7 +4073,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4057,21 +4157,21 @@ msgid ""
msgstr ""
# [
-#: builtins.c:1341
+#: builtins.c:1343
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 ""
-"Wertet einen bedingen Ausdruck aus.\n"
-" \n"
-" Dieses Kommando entspricht dem »test« Kommando. Jedoch muss das\n"
+"Wertet einen bedingten Ausdruck aus.\n"
+"\n"
+" Dieses Kommando entspricht dem Kommando »test«. Jedoch muss das\n"
" letzte Argument ein »]« sein, welches die öffnende Klammer »[«\n"
" schließt."
# times
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4083,14 +4183,14 @@ msgid ""
" Always succeeds."
msgstr ""
"Zeigt den Zeitverbrauch an.\n"
-" \n"
-" Gibt den kumulierte Nutzer- und Sysemzeitverbrauch der Shell und\n"
+"\n"
+" Gibt den kumulierte Nutzer- und Systemzeitverbrauch der Shell und\n"
" aller von ihr gestarteten Prozesse aus.\n"
-" \n"
+"\n"
" Rückgabewert:\n"
" Immer 0."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4134,7 +4234,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4164,7 +4264,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4195,6 +4295,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4213,7 +4314,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4231,7 +4332,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4242,18 +4343,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4268,7 +4379,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4281,7 +4392,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4298,7 +4409,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4318,7 +4429,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4334,7 +4445,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4345,7 +4456,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4366,7 +4477,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4377,7 +4488,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4388,7 +4499,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4401,7 +4512,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4415,7 +4526,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4426,7 +4537,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4441,27 +4552,28 @@ msgid ""
msgstr ""
# (( ))
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
"Wertet arithmetische Ausdrücke aus.\n"
"\n"
-" Der Ausdruck wird nach den Regeln für arithmetische\n"
-" Berechnungen ausgewertet. Diese Schreibweise entspricht \"let\n"
-" Ausdruck\".\n"
+" Der Ausdruck wird nach den Regeln für arithmetische Berechnungen\n"
+" ausgewertet. Diese Schreibweise entspricht »let Ausdruck«.\n"
"\n"
-" Rückgabewert: \n"
-" Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n"
-" ergibt, sonst »0«."
+" Rückgabewert: \n"
+" Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n"
+" ergibt, sonst »0«."
-#: builtins.c:1728
+# [[
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4488,9 +4600,31 @@ msgid ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
+"Erweiterte Vergleiche.\n"
+" \n"
+" Der Status 0 oder 1 wird abhängig vom Vergleichsergebnis zurückgegeben.\n"
+" Es werden die gleichen Ausdrücke wie in der »test« Funktion "
+"unterstützt,\n"
+" die mit folgenden Operatoren verbunden werden können:\n"
+" \n"
+" ( AUSDRUCK )\tErgibt den Wert des AUSDRUCKs\n"
+" ! Ausdruck\t\tNegiert den AUSDRUCK\n"
+" AUSDR1 && AUSDR2\tUnd Verknüpfung der Ausdrücke\n"
+" AUSDR1 || AUSDR2\tOder Verknüpfung der Ausdrücke\n"
+" \n"
+" Die `==' und `!=' Operatoren ermöglichen einen Mustervergleich mit dem\n"
+" rechten Ausdruck als Muster.\n"
+" Der `=~' Operator führt einen Vergleich mit dem regulären Ausdruck\n"
+" in der rechten Seite aus.\n"
+" \n"
+" Die && und || Operatoren werten AUSDR2 nur aus, wenn nicht bereits\n"
+" AUSDR1 das gesamte Ergebnis bestimt.\n"
+" \n"
+" Rückgabewert:\n"
+" 0 oder 1 abhängig vom Wert des AUSDRUCKs."
# variable_help
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4546,13 +4680,13 @@ msgstr ""
" BASH_VERSION\tVersionsnummer der Bash.\n"
" CDPATH\tEine durch Doppelpunkte getrennte Liste von\n"
" Verzeichnissen, die durchsucht werden, wenn das\n"
-" Argument von `cd' nicht im aktuellen Verzeichnis\n"
+" Argument von »cd« nicht im aktuellen Verzeichnis\n"
" gefunden wird.\n"
" GLOBIGNORE Eine durch Doppelpunkte getrennte Liste von\n"
" Dateinamenmustern, die für die Dateinamensergänzung\n"
" ignoriert werden.\n"
" HISTFILE\tDatei, die den Kommandozeilenspeicher enthält.\n"
-" HISTFILESIZE\tMaximale Zeilenanzahl, dieser Datei.\n"
+" HISTFILESIZE\tMaximale Zeilenanzahl dieser Datei.\n"
" HISTSIZE\tMaximale Anzahl von Zeilen, auf die der\n"
" Historymechanismus der Shell zurückgreifen kann.\n"
" HOME\tHeimatverzeichnis des aktuellen Benutzers.\n"
@@ -4561,11 +4695,11 @@ msgstr ""
" IGNOREEOF\tLegt die Reaktion der Shell auf ein EOF-Zeichen fest.\n"
" Wenn die Variable eine ganze Zahl enthält, wird diese\n"
" Anzahl EOF Zeichen (Ctrl-D) abgewartet, bis die Shell\n"
-" verlassen wird. Der Vorgabewert ist 10. Ist IGNOREEOF\n"
+" verlassen wird. Der Vorgabewert ist 10. Ist IGNOREEOF\n"
" nicht gesetzt, signalisiert EOF das Ende der Eingabe.\n"
" MACHTYPE Eine Zeichenkette die das aktuell laufende System "
"beschreibt.\n"
-" MAILCHECK\tZeit in s, nach der nach E-Mail gesehen wird.\n"
+" MAILCHECK\tZeit in Sekunden, nach der nach E-Mails gesehen wird.\n"
" MAILPATH\tEine durch Doppelpunkt getrennte Liste von Dateinamen,\n"
" die nach E-Mail durchsucht werden.\n"
" OSTYPE\tUnix Version, auf der die Bash gegenwärtig läuft.\n"
@@ -4579,30 +4713,30 @@ msgstr ""
" Eingabeaufforderung enthält.\n"
" PWD Der vollständige aktuelle Verzeichnisname.\n"
" SHELLOPTS Durch Doppelpunkt getrennte Liste der aktiven\n"
-" Shell Optionen.\n"
+" Shell-Optionen.\n"
" TERM\tName des aktuellen Terminaltyps.\n"
" auto_resume Ein Wert ungleich Null bewirkt, dass ein einzelnes\n"
" Kommando auf einer Zeile zunächst in der Liste\n"
" gegenwärtig gestoppter Jobs gesucht und dieser in den\n"
-" Vordergrund geholt wird. `exact' bewirkt, dass das\n"
+" Vordergrund geholt wird. »exact« bewirkt, dass das\n"
" Kommando genau dem Kommando in der Liste der\n"
" gestoppten Jobs entsprechen muss. Wenn die Variable den\n"
-" Wert `substring' enthält, muss das Kommando einem\n"
+" Wert »substring« enthält, muss das Kommando einem\n"
" Substring der Jobbezeichnung entsprechen. Bei einem\n"
" anderen Wert müssen die ersten Zeichen übereinstimmen.\n"
-" histchars Zeichen, die die Befehlswiederholung und die\n"
-" Schnellersetzung steuern. An erster Stelle steht\n"
-" das Befehlswiederholungszeichen (normalerweise\n"
-" `!'); an zweiter das `Schnell-Ersetzen-Zeichen'\n"
-" (normalerweise `^'). Das dritte Zeichen ist das\n"
-" `Kommentarzeichen' (normalerweise `#').\n"
-" HISTIGNORE Eine durch Doppelpunkt getrennte Liste von\n"
-" Mustern, welche die in der\n"
-" Befehlswiederholungsliste zu speichernden\n"
-" Kommandos angibt.\n"
+" histchars Zeichen, die die Befehlswiederholung und die\n"
+" Schnellersetzung steuern. An erster Stelle steht\n"
+" das Befehlswiederholungszeichen (normalerweise\n"
+" `!'); an zweiter das `Schnell-Ersetzen-Zeichen'\n"
+" (normalerweise `^'). Das dritte Zeichen ist das\n"
+" `Kommentarzeichen' (normalerweise `#').\n"
+" HISTIGNORE Eine durch Doppelpunkt getrennte Liste von\n"
+" Mustern, welche die in der\n"
+" Befehlswiederholungsliste zu speichernden\n"
+" Kommandos angibt.\n"
# pushd
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4658,7 +4792,7 @@ msgstr ""
" wurde oder der Verzeichniswechsel nicht erfolgreich war."
# popd
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4712,7 +4846,7 @@ msgstr ""
" wurde oder der Verzeichniswechsel nicht erfolgreich war."
# dirs
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4766,7 +4900,7 @@ msgstr ""
" Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n"
" ein Fehler auftritt."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4785,27 +4919,27 @@ msgid ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
msgstr ""
-"Setzt oder löscht Shell Optionen.\n"
+"Setzt oder löscht Shell-Optionen.\n"
"\n"
-" Ändert die in `Optionsname' genannten Shell Optionen. Ohne\n"
-" Argumente wird eine Liste der Shell Optionen un deren Stati\n"
+" Ändert die in »Optionsnamen« genannten Shell-Optionen. Ohne\n"
+" Argumente wird eine Liste der Shell-Optionen und deren Status\n"
" ausgegeben.\n"
"\n"
" Optionen:\n"
" -o Beschränkt die Optionsmanen auf die, welche mit \n"
-" `set -o' definiert werden müssen.\n"
-" -p Gibt alle Shelloptionen und deren Stati aus. \n"
+" »set -o« definiert werden müssen.\n"
+" -p Gibt alle Shelloptionen und deren Status aus.\n"
" -q Unterdrückt Ausgaben.\n"
-" -s Setzt jede Option in `Optionsname.'\n"
-" -u Deaktiviert jede Option in `Optionsname'.\n"
+" -s Setzt jede Option in »Optionsname.«\n"
+" -u Deaktiviert jede Option in »Optionsname«.\n"
"\n"
" Rückgabewert:\n"
-" Gibt Erfolg zurück, wenn eine Option gesetzt worden ist. Wenn\n"
+" Gibt Erfolg zurück, wenn eine Option gesetzt worden ist. Wenn\n"
" eine ungültige Option angegeben wurde oder eine Option deaktiviert\n"
-" worden ist, wird Fehler zurückgegeben."
+" worden ist, wird ein Fehler zurückgegeben."
# printf
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4822,8 +4956,8 @@ 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"
@@ -4844,41 +4978,41 @@ msgid ""
" error occurs."
msgstr ""
"Formatierte Ausgabe der ARGUMENTE.\n"
-" \n"
+"\n"
" Optionen:\n"
" -v var\tDie formatierte Ausgabe ver Variable var zuweisen statt\n"
-" \t\tsie an die Standardausgebe zu senden.\n"
-" \n"
-" Die FORMAT Zeichenkette kann einfache Zeichen enthalten, die unverändert "
-"an\n"
-" die Standardausgabe geschickt werden. Escape-Sequenzen werden "
+" \tsie an die Standardausgebe zu senden.\n"
+"\n"
+" Die FORMAT-Zeichenkette kann einfache Zeichen enthalten, die "
+"unverändert\n"
+" an die Standardausgabe geschickt werden. Escape-Sequenzen werden "
"umgewandelt\n"
" und an die Standardausgabe geschickt sowie Formatanweisungen, welche "
"das \n"
" nachfolgende ARGUMENT auswerten und ausgeben.\n"
-" \n"
+"\n"
" Gegenüber der in printf(1) beschriebenen Standardverion werden "
"zusätzliche\n"
" Formatanweisungen ausgewertet:\n"
-" \n"
+"\n"
" %b\tWertet Escape-Sequenzen des zugehörigen Arguments aus.\n"
" %q\tBettet das Argument so ein, dass es als Shelleingabe\n"
" verwendet werden kann.\n"
" %(fmt)T\tAusgabe der aus FMT entstehende Datum-Zeit Zeichenkette, "
"dass\n"
-" \t sie als Zeichenkette für strftime(3) verwendet werden kann.\n"
-" \n"
-" Die Formatangebe wird wiederverwendet bis alle Argmente ausgewertet "
-"sind.\n"
-" Wenn weniger Argumente als Formatangaben vorhanden sind, werden für die\n"
-" Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n"
-" \n"
+" sie als Zeichenkette für strftime(3) verwendet werden kann.\n"
+"\n"
+" Die Formatangabe wird wiederverwendet, bis alle Argumente ausgewertet\n"
+" sind. Wenn weniger Argumente als Formatangaben vorhanden sind, werden "
+"für\n"
+" die Argumente Nullwerte bzw. leere Zeichenketten eingesetzt.\n"
+"\n"
" Rücgabewert:\n"
" Gibt Erfolg zurück, außer es wird eine ungültige Option angegeben oder "
"ein\n"
" Aus- bzw. Zuweisungsfehler auftritt."
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4900,7 +5034,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4910,7 +5044,7 @@ msgid ""
msgstr ""
# compgen
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4923,15 +5057,16 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
"Zeigt mögliche Komplettierungen.\n"
-" \n"
-" Wird Shell Funktionen benutzt, um mögliche Komplettierungen anzuzeigen.\n"
+"\n"
+" Wird in Shellfunktionen benutzt, um mögliche Komplettierungen "
+"anzuzeigen.\n"
" Wenn das optionale Wort-Argument angegeben ist, werden Komplettierungen\n"
" für dieses Wort erzeugt.\n"
" \n"
" Rückgabewert:\n"
" Falsche Optionen oder Fehler führen zu Rückgabewerten ungleich Null."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4963,7 +5098,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5006,12 +5141,16 @@ msgid ""
msgstr ""
# readarray
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
-"Liest Zeilen einer Datei in eine Array Variable.\n"
+"Liest Zeilen einer Datei in eine Array-Variable.\n"
"\n"
-" Ist ein Synonym für `mapfile'."
+" Ist ein Synonym für »mapfile«."
+
+# https://lists.gnu.org/archive/html/bug-bash/2019-09/msg00025.html
+#~ msgid "Unknown Signal #"
+#~ msgstr "Unbekannte Signalnummer"
diff --git a/po/el.gmo b/po/el.gmo
index 6134898b..97304da9 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index 5eae34ab..ed9fb5b4 100644
--- a/po/el.po
+++ b/po/el.po
@@ -7,88 +7,93 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2017-06-21 17:08+0300\n"
"Last-Translator: Lefteris Dimitroulakis <ledimitro@gmail.com>\n"
"Language-Team: Greek <team@lists.gnome.gr>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 1.5\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "κακός δείκτης πίνακα"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: αφαίÏεση του χαÏακτηÏÎ¹ÏƒÏ„Î¹ÎºÎ¿Ï nameref "
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: αδυναμία μετατÏοπής indexed πίνακα σε associative πίνακα "
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: μη έγκυÏο κλειδί associative πίνακα "
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: αδυναμία εκχώÏησης σε μη αÏιθμητικό δείκτη "
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: αδυναμία δημιουÏγίας: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: δεν μποÏÏŽ να βÏω keymap για εντολή"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ο Ï€Ïώτος μη-λευκό διάστημα χαÏακτήÏας δεν είναι «\"» "
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "όχι «%c» κλεισήματος σε %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: απουσιάζει διαχωÏιστής δίστιγμο "
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "«%s»: αδυναμία αποσÏνδεσης"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %s "
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για %d στοιχεία "
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: αδυναμία εκχώÏησης μνήμης για «%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: μη έγκυÏο ψευδώνημο"
@@ -107,22 +112,22 @@ msgstr "«%s»: μη έγκυÏο όνομα keymap"
msgid "%s: cannot read: %s"
msgstr "%s: αδυναμία ανάγνωσης: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "«%s»: άγνωστο όνομα συνάÏτησης"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s δεν έχει συνδεθεί με κανένα πλήκτÏο.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s μποÏεί να κληθεί μέσω "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "«%s»: αδυναμία αποσÏνδεσης"
@@ -139,25 +144,27 @@ msgstr "έχει μόνο νόημα σε ένα βÏόχο «for», «while»,
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
-msgstr ""
-"ΕπιστÏέφει το context της κλήσης της Ï„Ïέχουσας υποÏουτίνας.\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"
-" ΧωÏίς EXPR, επιστÏέφει "
+" The value of EXPR indicates how many call frames to go back before the\n"
+" current one; the top frame is frame 0."
+msgstr ""
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME δεν έχει οÏιστεί"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "πάÏα πολλά οÏίσματα"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "κατάλογος nul"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD δεν έχει οÏιστεί"
@@ -176,7 +183,7 @@ msgstr "Ï€Ïοειδοποίηση: "
msgid "%s: usage: "
msgstr "%s: χÏήση: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: η επιλογή απαιτεί ÏŒÏισμα"
@@ -191,7 +198,7 @@ msgstr "%s: απαιτείται αÏιθμητικό ÏŒÏισμα"
msgid "%s: not found"
msgstr "%s: δεν βÏέθηκε"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: μη έγκυÏη επιλογή"
@@ -201,7 +208,7 @@ msgstr "%s: μη έγκυÏη επιλογή"
msgid "%s: invalid option name"
msgstr "%s: μη έγκυÏο όνομα επιλογής"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: μή έγκυÏο αναγνωÏιστικό "
@@ -214,7 +221,7 @@ msgstr "μη έγκυÏος οκταδικός αÏιθμός"
msgid "invalid hex number"
msgstr "μη έγκυÏος εξαδικός αÏιθμός"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "μη έγκυÏος αÏιθμός"
@@ -290,74 +297,84 @@ msgstr "σφάλμα κατά τον οÏισμό των χαÏακτηÏιστÎ
msgid "error getting terminal attributes: %s"
msgstr "σφάλμα κατά την λήψη των χαÏακτηÏιστικών τεÏματικοÏ: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: σφάλμα κατά την ανάκτηση Ï„Ïέχοντος καταλόγου: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ασαφείς Ï€ÏοδιαγÏαφές εÏγασίας"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "βοήθεια μη διαθέσιμη σ' αυτήν την έκδοση "
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: αδυναμία «unset»"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: μη έγκυÏο όνομα ενέÏγειας"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: δεν υπάÏχει Ï€ÏοδιαγÏαφή συμπλήÏωσης"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "Ï€Ïοειδοποίηση: η επιλογή -F μποÏεί να μη δουλέψει όπως πεÏιμένεις"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "Ï€Ïοειδοποίηση: η επιλογή -C ίσως δεν δουλέψει όπως αναμένετε"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "η λειτουÏγία συμπλήÏωσης δεν εκτελείται επί του παÏόντος "
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "μποÏεί να χÏησιμοποιηθεί μόνο μέσα σε συνάÏτηση"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: η μεταβλητή αναφοÏάς δεν μποÏεί να είναι πίνακας "
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref αυτοαναφοÏά μεταβλητής δεν επιτÏέπεται "
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: κυκλική αναφοÏά ονόματος "
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: μη έγκυÏο όνομα μεταβλητής για όνομα αναφοÏάς "
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr ""
"η επιλογή «-f» δεν μποÏεί να χÏησιμοποιηθεί για τη δημιουÏγία συναÏτήσεων"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: συνάÏτηση μόνο για ανάγνωση"
@@ -372,7 +389,7 @@ msgstr "%s: η σÏνθετη εκχώÏηση πίνακα αποÏÏίφθηκ
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: αδυναμία καταστÏοφής μεταβλητής πίνακα κατ' αυτόν τον Ï„Ïόπο "
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: αδυναμία μετατÏοπής associative πίνακα σε indexed πίνακα "
@@ -386,27 +403,32 @@ msgstr "δυναμική φόÏτωση μη διαθέσημη"
msgid "cannot open shared object %s: %s"
msgstr "αδυναμία ανοίγματος κοινόχÏηστου αντικειμένου %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "αδυναμία εÏÏεσης %s στο κοινόχÏηστο αντικείμενο %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: δεν φοÏτώθηκε δυναμικά"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "Η συνάÏτηση φοÏτώματος του %s επιστÏέφει λάθος (%d): δεν φοÏτώθηκε "
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: δεν φοÏτώθηκε δυναμικά"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: αδυναμία διαγÏαφής: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: είναι κατάλογος"
@@ -421,12 +443,12 @@ msgstr "%s: όχι κανονικό αÏχείο"
msgid "%s: file is too large"
msgstr "%s: αÏχείο Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: αδυναμία εκτέλεσης: %s"
@@ -450,15 +472,16 @@ msgstr "ΥπάÏχουν σταματημένες εÏγασίες.\n"
msgid "There are running jobs.\n"
msgstr "ΥπάÏχουν εÏγασίες που Ï„Ïέχουν.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "δεν βÏέθηκε εντολή"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "history specification"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: αδυναμία ανοίγματος Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου: %s"
@@ -486,12 +509,12 @@ msgstr "%s: η επιλογή απαιτεί ένα ÏŒÏισμα -- %c\n"
msgid "hashing disabled"
msgstr "hashing απενεÏγοποιημένο "
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: πίνακας hash κενός\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "hits\tcommand\n"
@@ -502,13 +525,19 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Εντολές κελÏφους που ταιÏιάζουν στη λέξη-κλειδί `"
msgstr[1] "Εντολές κελÏφους που ταιÏιάζουν στις λέξεις-κλειδί"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή «info %"
-"s»."
+"ουδεμία βοήθεια ταιÏιάζει με «%s». Δοκιμάστε «help help» ή «man -k %s» ή "
+"«info %s»."
#: builtins/help.def:224
#, c-format
@@ -536,21 +565,21 @@ msgstr ""
"απενεÏγοποιημένη.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "δεν μποÏÏŽ να χÏησιμοποιήσω πεÏισσότεÏες της μιας από τις -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "θέση στο ιστοÏικό"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: μη έγκυÏη χÏονοσήμανση"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr ""
@@ -573,7 +602,7 @@ msgstr "%s: οÏίσματα Ï€Ïέπει να είναι ID διεÏγασιώÎ
msgid "Unknown error"
msgstr "Άγνωστο σφάλμα"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "αναμενόταν έκφÏαση"
@@ -582,12 +611,12 @@ msgstr "αναμενόταν έκφÏαση"
msgid "%s: not an indexed array"
msgstr "%s: μη δικτοδοτημένος πίνακας"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή πεÏιγÏαφέα αÏχείου"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: μη έγκυÏος πεÏιγÏαφέας αÏχείου: %s"
@@ -615,36 +644,36 @@ msgstr "όνομα μεταβλητής πίνακα κενό "
msgid "array variable support required"
msgstr "απαιτείται υποστήÏιξη μεταβλητής πίνακος"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: απουσία χαÏακτήÏα φοÏμαÏίσματος "
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: μη έγκυÏη Ï€ÏοδιαγÏαφή για φοÏμά χÏόνου"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: μη έγκυÏος χαÏακτήÏας φοÏμαÏίσματος"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "Ï€Ïοειδοποίηση: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "Ï€Ïόβλημα ανάλυσης του format: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "απουσία hex ψηφίου για \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "απουσία ψηφίου unicode για \\%c"
@@ -740,12 +769,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: μη έγκυÏη Ï€ÏοδιαγÏαφή timeout "
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "σφάλμα ανάγνωσης: %d: %s"
@@ -754,21 +783,11 @@ msgstr "σφάλμα ανάγνωσης: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "«επιστÏοφή» είναι μόνο δυνατή από συνάÏτηση ή sourced script "
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "«unset» δεν μποÏεί να εφαÏμοστεί συγχÏόνως σε συνάÏτηση και μεταβλητή"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: αδυναμία «unset»"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: αδυναμία unset: %s μόνο για ανάγνωση"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: δεν είναι μεταβλητή πίνακα"
@@ -783,7 +802,7 @@ msgstr "%s: δεν είναι συνάÏτηση"
msgid "%s: cannot export"
msgstr "%s: αδυναμία εξαγωγής"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "αÏιθμός του « shift »"
@@ -793,7 +812,7 @@ msgstr ""
"οι επιλογές κελÏφους δεν είναι δυνατόν συγχÏόνως να ενεÏγοποιηθοÏν και "
"απενεÏγοποιηθοÏν"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: μη έγκυÏο όνομα επιλογής"
@@ -850,26 +869,26 @@ msgstr "%s είναι %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s is hashed (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: μη έγκυÏο ÏŒÏισμα οÏίου"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "«%c»: λάθος διαταγή"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: αδÏνατον να πάÏω το ÏŒÏιο: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ÏŒÏιο"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: αδυναμία μεταβολής οÏίου: %s"
@@ -929,76 +948,75 @@ msgstr "κακό άλμα"
msgid "%s: unbound variable"
msgstr "%s: μεταβλητή χωÏίς σÏνδεση "
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aη αναμονή για δεδομένα έληξε: αυτόματη αποσÏνδεση\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "αδυναμία ανακατεÏθυνσης τυπικής εισόδου από /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: μη έγκυÏος χαÏακτήÏας μοÏφοποίησης"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] υφίσταται ακόμη "
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) "
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: μέγιστο επίπεδο φωλιάσματος source ξεπεÏάστηκε (%d) "
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: μέγιστο επίπεδο φωλιάσματος συνάÏτησης ξεπεÏάστηκε (%d) "
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: πεÏιοÏισμός: δεν μποÏεί να πεÏιέχεται «/» σε όνομα εντολής"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: εντολή δεν βÏέθηκε"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: κακός interpreter "
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: αδυναμία εκτέλεσης Î´Ï…Î±Î´Î¹ÎºÎ¿Ï Î±Ïχείου: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: είναι ειδικό builtin"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "αδυναμία αντιγÏαφής του fd %d στον fd %d"
@@ -1024,61 +1042,66 @@ msgstr "απόπειÏα ανάθεσης σε μη-μεταβλητή"
msgid "syntax error in variable assignment"
msgstr "συντακτικό σφάλμα στην έκφÏαση"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "διαίÏεση διά 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: κακό σÏμβολο για expassign "
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "«:» αναμενόταν για μια έκφÏαση υπό συνθήκη"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "εκθέτης μικÏότεÏος του 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "αναγνωÏιστικό αναμενόταν μετά από pre-increment ή pre-decrement "
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "λείπει «)»"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntax error: αναμενόταν τελεστέος"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: μη έγκυÏος αÏιθμητικός τελεστής"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (το λανθασμένο σÏμβολο είναι \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "μη έγκυÏη αÏιθμητική βάση"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: μη έγκυÏος αÏιθμός γÏαμμής"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "τιμή Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î· για βάση"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: σφάλμα έκφÏασης\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: αδυναμία Ï€Ïόσβασης στο γονικό κατάλογο"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "αδυναμία επανάταξης nodelay mode για fd %d"
@@ -1094,202 +1117,222 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: ο buffer υπάÏχει ήδη για νέο fd %d "
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "η διεÏγασία κλώνος %d εμφανίζεται στην εÏγασία που Ï„Ïέχει %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "διαγÏαφή σταματημένης εγασίας %d με ομάδα %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: διεÏγασία %5ld (%s) στη the_pipeline "
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) μαÏκαÏισμένη ως ακόμα ζωντανή "
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: δεν υπάÏχει τέτοιο pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Σήμα %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Done"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "σταματημένο"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "σταματημένο(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "υπό εκτέλεση"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Έξοδος %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Άγνωστη κατάσταση"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: διεÏγασία %ld δεν αποτελεί θυγατÏική Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… κελÏφους"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Δεν υπάÏχουν στοιχεία για διεÏγασία %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: η εÏγασία %d είναι σταματημένη"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: δεν υπάÏχει τέτοια εÏγασία"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: η εÏγασία τεÏματίστηκε"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: εÏγασία %d ήδη στο παÏασκήνιο"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"waitchld: ενεÏγοποίηση WNOHANG ώστε ν' αποφευχθεί οÏιστικό μπλοκάÏισμα "
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: γÏαμμή %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(Ï„ÏŽÏα wd: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: αποτυχία getpgrp"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "αδυναμία ÏÏθμισης της ομάδας της διεÏγασίας του τεÏÎ¼Î±Ï„Î¹ÎºÎ¿Ï (%d) "
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "δεν υπάÏχει job control σ'αυτό το κέλυφος"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: αποτυχημένη assertion: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "άγνωστο"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: κλήθηκε με ÏŒÏισμα ήδη ελευθεÏωμένο μπλοκ "
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ "
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου "
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου "
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: τα μεγέθη των κομματιών στην αÏχή και το τέλος διαφέÏουν "
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: κλήθηκε με ÏŒÏισμα ένα μη εκχωÏημένο μπλοκ "
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: εντοπίστηκε αÏνητική υπεÏχείληση, mh_nbytes εκτός οÏίου"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: μεγέθη κομματιών σ' αÏχή και τέλος διαφέÏουν "
@@ -1331,22 +1374,22 @@ msgstr "%s: κακιά Ï€ÏοδιαγÏαφή διαδÏομής δικτÏου
msgid "network operations not supported"
msgstr "μη υποστηÏιζόμενες δικτιακές υπηÏεσίες"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: αδυναμία μεταβολής locale (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: αδυναμία μεταβολής locale (%s): %s"
@@ -1393,7 +1436,7 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: η οδηγία της ανακατεÏθυνσης «%d» εκτός οÏίων"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1402,103 +1445,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) υπεÏβαίνει το SIZE_MAX (%lu): γÏαμμή "
"κόπηκε "
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "ο μέγιστος αÏιθμός here-document ξεπεÏάστηκε "
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "μη αναμενόμενο EOF κατά την αναζήτηση «%c»"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "μη αναμενόμενο EOF ενώ έψαχνα για «]]»"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: μη αναμενόμενο σÏμβολο «%s»"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "συντακτικό σφάλμα σ' έκφÏαση υπό συνθήκη "
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "μη αναμενόμενο σÏμβολο «%s», αναμενόταν «)»"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "αναμενόταν «)»"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "απÏοσδόκητο ÏŒÏισμα «%s» στον υπό αίÏεση μοναδιαίο τελεστή "
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "απÏοσδόκητο ÏŒÏισμα για τον μοναδιαίο τελεστή "
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "απÏοσδόκητο σÏμβολο «%s» βÏέθηκε αντί για δυαδικό τελεστή υπό αίÏεση "
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "αναμενόταν δυαδικός τελεστής υπό αίÏεση "
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "απÏοσδόκητο ÏŒÏισμα «%s» για δυαδικό τελεστή υπό αίÏεση "
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "απÏοσδόκητο ÏŒÏισμα για δυαδικό τελεστή υπό αίÏεση "
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "απÏοσδόκητο σÏμβολο «%c» σε εντολή υπό αίÏεση "
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "απÏοσδόκητο σÏμβολο «%s» σε εντολή υπό αίÏεση "
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "απÏοσδόκητο σÏμβολο %d σε εντολή υπό αίÏεση "
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "συντακτικό σφάλμα κοντά στο μη αναμενόμενο σÏμβολο «%s»"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "συντακτικό σφάλμα κοντά σε «%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntax error: μη αναμενόμενο τέλος αÏχείου"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "συντακτικό σφάλμα"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "ΧÏήση «%s» για έξοδο από το κέλυφος.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "μη αναμενόμενο EOF ενώ έψαχνα «)»"
@@ -1541,89 +1584,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: μη έγκυÏη μοÏφή χαÏακτήÏα"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "πεÏιγÏαφέας αÏχείου εκτός οÏίων"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ασαφής ανακατεÏθυνση"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: αδυναμία εγγÏαφής πάνω σε υπάÏχον αÏχείο"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: αδυναμία ανακατεÏθυνσης εξόδου"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "αδυναμία δημιουÏγίας Ï€ÏοσωÏÎ¹Î½Î¿Ï Î±Ïχείου για here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: αδυναμία ανάθεσης fd σε μεταβλητή"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port δεν υποστηÏίζεται χωÏίς δικτÏωση"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr ""
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "δεν μπόÏεσα να βÏω /tmp, παÏακαλώ να τον δημιουÏγήσετε!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp Ï€Ïέπει να είναι ένα έγκυÏο όνομα αÏχείου"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: μη έγκυÏη επιλογή"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "αδυναμία ÏÏθμισης uid σε %d: effective uid %d "
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "αδυναμί ÏÏθμισης gid σε %d: effective gid %d "
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "αδυναμία εκκίνησης του debugger, debugging απενεÏγοποιημένο "
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: είναι κατάλογος"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Δεν έχω όνομα!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, έκδοση %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1632,318 +1675,314 @@ msgstr ""
"ΧÏήση:\t%s [μακÏά επιλογή GNU] [επιλογή] ...\n"
"\t%s [μακÏά επιλογή GNU] [επιλοη] script-file ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "ΜακÏές επιλογές GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Επιλογές κελÏφους:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ή -c εντολή ή -O shopt_option\t\t(invocation only)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ή επιλογή -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"ΠληκτÏολόγησε «%s -c \"help set\"» για πληÏοφοÏίες επί των επιλογών "
"κελÏφους.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"ΠληκτÏολόγησε «%s -c help» για πεÏισσότεÏες πληÏοφοÏίες σχετικά με τις "
"ενσωματομένες στο κέλυφος εντολές.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "ΧÏησιμοποίησε την εντολή «bashbug» για αναφοÏά σφαλμάτων.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "σελίδα του bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Γενική βοήθεια για την χÏήση του Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï GNU: <http://www.gnu.org/gethelp/"
">\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: μη έγκυÏη λειτουÏγία"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "ΨεÏτικο σήματος "
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Διακοπή"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Quit"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Μη έγκυÏη οδηγία"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "οδηγία ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "οδηγία EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "ΕξαίÏεση κινητής υποδιαστολής"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Killed"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Σφάλμα κατάτμησης"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Κακή κλήση συστήματος "
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Σπασμένη σωλήνα"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Ρολόι συναγεÏμοÏ"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "τεÏματισμός"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Επείγουσα κατάσταση IO"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Σταματημένο (σήμα)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Συνέχεια"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Σταματημένο (είσοδος tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Σταματημένο (έξοδος tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "ÏŒÏιο CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "ÎŒÏιο αÏχείου"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "ΠαÏάθυÏο άλλαξε"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr ""
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Σήμα χÏήστη 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Σήμα χÏήστη 2 "
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Δεδομένα εισόδου HFT στην αναμονή"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "επικείμενη έλλειψη ÏεÏματος"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "επικείμενη πτώση συστήματος"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "μετανάστευση διεÏγασίας σε άλλη CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "Ï€ÏογÏαμματιστικό σφάλμα"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Αίτηση για πληÏοφοÏίες"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Άγνωστο σήμα #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Άγνωστο σήμα #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "κακή αντικατάσταση: όχι «%s» που κλείνει στο %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: αδυναμία εκχώÏησης λίστας σε στοιχείο του πίνακα "
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση διεÏγασίας "
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση διεÏγασίας "
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "αδυναμία ανοίγματοε επώνυμης σωλήνας %s Ï€Ïος ανάγνωση"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "αδυναμία ανοίγματος επώνυμης σωλήνας %s Ï€Ïος εγγÏαφή"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "αδυναμία αναπαÏαγωγής named pipe %s ως fd %d "
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "αντικατάσταση εντολής: null byte αγνοήθηκε στην είσοδο "
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "αδυναμία δημιουÏγίας σωλήνα για αντικατάσταση εντολής "
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "αδυναμία δημιουÏγίας θυγατÏικής για αντικατάσταση εντολής "
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: αδυναμία αναπαÏαγωγής σωλήνα ως fd 1 "
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: μη έγκυÏο όνομα μεταβλητής ως όνομα αναφοÏάς "
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: μη έγκυÏη έμμεση επέκταση "
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: μη έγκυÏο όνομα μεταβλητής"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: παÏάμετÏος κενή ή δεν έχει οÏιστεί"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: έκφÏαση αÏνητική < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: κακή αντικατάσταση"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: αδÏνατη ανάθεση κατ' αυτόν τον Ï„Ïόπο"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -1951,12 +1990,12 @@ msgstr ""
"μελλοντικές εκδόσεις του κελÏφους θα επιβάλουν την αποτίμηση ως μια "
"αÏιθμητική αντικατάσταση"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "κακή αντικατάσταση: δεν υπάÏχει «`» που κλείνει στο %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "χωÏίς ταίÏιασμα: %s"
@@ -1979,35 +2018,40 @@ msgstr "αναμενόταν «)»"
msgid "`)' expected, found %s"
msgstr "σναμενόταν «)», βÏέθηκε %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: αναμενόταν μοναδιαίος τελεστής "
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: αναμενόταν δυαδικός τελεστής"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: αναμενόταν μοναδιαίος τελεστής "
+
+#: test.c:881
msgid "missing `]'"
msgstr "αποÏσα «]»"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "συντακτικό σφάλμα: δεν αναμενόταν «;»"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "μη έγκυÏος αÏιθμός σήματος"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: μέγιστο επίπεδο φωλιάσματος eval ξεπεÏάστηκε (%d) "
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: κακή τιμή στην trap_list[%d]: %p "
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2015,84 +2059,84 @@ msgstr ""
"run_pending_traps: ο διαχειÏιστής σήματος είναι ο SIG_DFL, στέλνει %d (%s) "
"σε μένα "
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: κακό σήμα %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "σφάλμα κατά την εισαγωγή του οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Î·Ï‚ συνάÏτησης «%s»"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "επίπεδο κελÏφους (%d) Ï€Î¿Î»Ï Ï…ÏˆÎ·Î»ÏŒ, επαναφοÏά στο 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: η μεταβλητή δεν μποÏεί να δεχτεί τιμή "
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s έχει κενό exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ο χαÏακτήÏας %d δεν έίναι έγκυÏος στην exportstr για %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "απουσία «=» στην exportstr για %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: αδυναμία ανοίγματος ως ΑΡΧΕΙΟ"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: μη έγκυÏη τιμή για trace file descriptor"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: τιμή συμβατότητας εκτός οÏίου "
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2181,11 +2225,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2209,11 +2255,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring name [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
#: builtins.c:100
@@ -2342,7 +2390,7 @@ msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
#: builtins.c:181
@@ -2437,7 +2485,7 @@ msgstr "printf [-v var] format [οÏίσματα]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
@@ -2445,9 +2493,10 @@ msgstr ""
"suffix] [name ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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]"
@@ -2756,6 +2805,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2783,7 +2834,7 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2793,7 +2844,7 @@ msgstr ""
" \n"
" Συνώνημο με «declare». Βλέπε «help declare»."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2808,7 +2859,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -2879,7 +2930,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει επιτυχία εκτός αν συμβεί λάθος εγγÏαφής. "
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2901,7 +2952,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει επιτυχία εκτός αν συμβεί σφάλμα. "
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2928,7 +2979,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2949,7 +3000,7 @@ msgstr ""
" ΕπιστÏέφει τον ίδιο κωδικό εξόδου με την εντολή ή επιτυχία αν ή εντολή "
"είναι κενή. "
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2982,15 +3033,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3013,7 +3064,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3026,7 +3077,7 @@ msgstr ""
"εξόδου\n"
" είναι αυτή της τελευταίας εκτελεσμένης εντολής."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3040,7 +3091,7 @@ msgstr ""
"αν δεν εκτελείται\n"
" σ' ένα κέλυφος σÏνδεσης. "
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3070,7 +3121,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3092,7 +3143,7 @@ msgstr ""
" Η κατάσταση της εÏγασίας που μπήκε στο Ï€Ïοσκήνιο, ή κωδικός αποτυχίας "
"στην πεÏίπτωση σφάλματος."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3116,7 +3167,7 @@ msgstr ""
" ΕπιστÏέφεται επιτυχία εκτός αν δεν έχει ενεÏγοποιηθεί job control ή έχει "
"συμβεί σφάλμα."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3140,7 +3191,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3162,7 +3213,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3197,7 +3248,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3221,7 +3272,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3254,7 +3305,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει επιτυχία εκτός αν έχει δοθεί μη έγκυÏη επιλογή ή JOBSPEC."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3277,7 +3328,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3322,7 +3373,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3374,7 +3425,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3386,7 +3437,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3472,7 +3523,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3494,7 +3545,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3513,7 +3564,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3534,7 +3585,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3552,7 +3603,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει επιτυχία εκτός αν N είναι αÏνητικός ή μαγαλÏτεÏο; από $#. "
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3566,7 +3617,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3580,7 +3631,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3755,7 +3806,7 @@ msgstr ""
"αποτιμάται σε\n"
" ψευδές ή αν δίδεται ένα μη έγκυÏο ÏŒÏισμα."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3767,7 +3818,7 @@ msgstr ""
" Συνώνυμο με το «test» builtin, αλλά το τελευταίο ÏŒÏισμα Ï€Ïέπει\n"
"να είναι ένα «]», ώστε να κλείνει το αντίστοιχο «[»."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3787,7 +3838,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" Πάντα επιτυχία."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3831,7 +3882,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3861,7 +3912,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3892,6 +3943,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3910,7 +3962,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3928,7 +3980,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3939,18 +3991,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3965,7 +4027,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3988,7 +4050,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει την κατάσταση της τελευταίας εκτελεσμένης εντολής."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4018,7 +4080,7 @@ msgstr ""
" Κατάσταση εξόδου:\n"
" ΕπιστÏέφει τη κατάσταση της τελευταίας εκτελεσμένης εντολής."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4038,7 +4100,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4054,7 +4116,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4065,7 +4127,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4086,7 +4148,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4097,7 +4159,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4108,7 +4170,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4121,7 +4183,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4135,7 +4197,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4146,7 +4208,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4160,12 +4222,13 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4178,7 +4241,7 @@ msgstr ""
" Κωδικός εξόδου:\n"
" ΕπιστÏέφει 1 αν η ΕΚΦΡΑΣΗ αποτιμάται σε 0, αλλιώς επιστÏέφει 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4206,7 +4269,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4260,7 +4323,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4291,7 +4354,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4318,7 +4381,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4347,7 +4410,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4367,7 +4430,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4384,8 +4447,8 @@ 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"
@@ -4406,7 +4469,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4428,7 +4491,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4437,7 +4500,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4450,7 +4513,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4482,7 +4545,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4524,7 +4587,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -4533,3 +4596,18 @@ msgstr ""
"Διαβάζει γÏαμμές από αÏχείο σε μεταβλητή Ï„Ïπου πίνακα.\n"
" \n"
" Συνώνημο του «mapfile»."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "ΕπιστÏέφει το context της κλήσης της Ï„Ïέχουσας υποÏουτίνας.\n"
+#~ " \n"
+#~ " ΧωÏίς EXPR, επιστÏέφει "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: διεÏγασία %5ld (%s) στη the_pipeline "
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Άγνωστο σήμα #"
diff --git a/po/en@boldquot.gmo b/po/en@boldquot.gmo
index d38d399a..15cd5f1f 100644
--- a/po/en@boldquot.gmo
+++ b/po/en@boldquot.gmo
Binary files differ
diff --git a/po/en@boldquot.po b/po/en@boldquot.po
index 6a77f8b0..edfa3c7d 100644
--- a/po/en@boldquot.po
+++ b/po/en@boldquot.po
@@ -1,7 +1,7 @@
# English translations for GNU bash package.
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the GNU bash package.
-# Automatically generated, 2018.
+# Automatically generated, 2020.
#
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
@@ -30,87 +30,93 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 5.0-rc1\n"
+"Project-Id-Version: GNU bash 5.1-rc3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-11-28 12:51-0500\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
+"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "bad array subscript"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removing nameref attribute"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: cannot convert indexed to associative array"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: invalid associative array key"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: cannot assign to non-numeric index"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: must use subscript when assigning associative array"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: cannot create: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: cannot find keymap for command"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: first non-whitespace character is not ‘\"’"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "no closing ‘%c’ in %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: missing colon separator"
-#: braces.c:331
+#: bashline.c:4555
+#, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "‘%s’: cannot unbind in command keymap"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace expansion: cannot allocate memory for %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "brace expansion: failed to allocate memory for %u elements"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for ‘%s’"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "‘%s’: invalid alias name"
@@ -129,22 +135,22 @@ msgstr "‘%s’: invalid keymap name"
msgid "%s: cannot read: %s"
msgstr "%s: cannot read: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "‘%s’: unknown function name"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s can be invoked via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "‘%s’: cannot unbind"
@@ -161,25 +167,36 @@ msgstr "only meaningful in a ‘for’, ‘while’, or ‘u
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME not set"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "too many arguments"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null directory"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD not set"
@@ -198,7 +215,7 @@ msgstr "warning: "
msgid "%s: usage: "
msgstr "%s: usage: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: option requires an argument"
@@ -213,7 +230,7 @@ msgstr "%s: numeric argument required"
msgid "%s: not found"
msgstr "%s: not found"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: invalid option"
@@ -223,7 +240,7 @@ msgstr "%s: invalid option"
msgid "%s: invalid option name"
msgstr "%s: invalid option name"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "‘%s’: not a valid identifier"
@@ -236,7 +253,7 @@ msgstr "invalid octal number"
msgid "invalid hex number"
msgstr "invalid hex number"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "invalid number"
@@ -312,73 +329,83 @@ msgstr "error setting terminal attributes: %s"
msgid "error getting terminal attributes: %s"
msgstr "error getting terminal attributes: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error retrieving current directory: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ambiguous job spec"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "help not available in this version"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: cannot unset: readonly %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: cannot unset"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: invalid action name"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no completion specification"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "warning: -F option may not work as you expect"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "warning: -C option may not work as you expect"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "not currently executing completion function"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "can only be used in a function"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "‘%s’: invalid variable name for name reference"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "cannot use ‘-f’ to make functions"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: readonly function"
@@ -393,7 +420,7 @@ msgstr "%s: quoted compound array assignment deprecated"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: cannot destroy array variables in this way"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: cannot convert associative to indexed array"
@@ -407,27 +434,32 @@ msgstr "dynamic loading not available"
msgid "cannot open shared object %s: %s"
msgstr "cannot open shared object %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "cannot find %s in shared object %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: dynamic builtin already loaded"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: not dynamically loaded"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: cannot delete: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: is a directory"
@@ -442,12 +474,12 @@ msgstr "%s: not a regular file"
msgid "%s: file is too large"
msgstr "%s: file is too large"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: cannot execute binary file"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: cannot execute: %s"
@@ -471,15 +503,16 @@ msgstr "There are stopped jobs.\n"
msgid "There are running jobs.\n"
msgstr "There are running jobs.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "no command found"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "history specification"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: cannot open temp file: %s"
@@ -507,12 +540,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "hits\tcommand\n"
@@ -523,6 +556,14 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Shell commands matching keyword `"
msgstr[1] "Shell commands matching keywords `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+"'\n"
+"\n"
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -557,21 +598,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "history position"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: invalid timestamp"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: history expansion failed"
@@ -594,7 +635,7 @@ msgstr "%s: arguments must be process or job IDs"
msgid "Unknown error"
msgstr "Unknown error"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "expression expected"
@@ -603,12 +644,12 @@ msgstr "expression expected"
msgid "%s: not an indexed array"
msgstr "%s: not an indexed array"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: invalid file descriptor specification"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid file descriptor: %s"
@@ -636,36 +677,36 @@ msgstr "empty array variable name"
msgid "array variable support required"
msgstr "array variable support required"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "‘%s’: missing format character"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "‘%c’: invalid time format specification"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "‘%c’: invalid format character"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "warning: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "missing hex digit for \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "missing unicode digit for \\%c"
@@ -811,23 +852,23 @@ 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"
-"[0m’\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"
-"[0m’\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."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: invalid timeout specification"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "read error: %d: %s"
@@ -836,21 +877,11 @@ msgstr "read error: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "can only ‘return’ from a function or sourced script"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "cannot simultaneously unset a function and a variable"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: cannot unset"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: cannot unset: readonly %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: not an array variable"
@@ -865,7 +896,7 @@ msgstr "%s: not a function"
msgid "%s: cannot export"
msgstr "%s: cannot export"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift count"
@@ -873,7 +904,7 @@ msgstr "shift count"
msgid "cannot set and unset shell options simultaneously"
msgstr "cannot set and unset shell options simultaneously"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: invalid shell option name"
@@ -930,26 +961,26 @@ msgstr "%s is %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s is hashed (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: invalid limit argument"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "‘%c’: bad command"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: cannot get limit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: cannot modify limit: %s"
@@ -1009,76 +1040,75 @@ msgstr "bad jump"
msgid "%s: unbound variable"
msgstr "%s: unbound variable"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atimed out waiting for input: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "cannot redirect standard input from /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: ‘%c’: invalid format character"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] still exists"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum eval nesting level exceeded (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum source nesting level exceeded (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricted: cannot specify ‘/’ in command names"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: command not found"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bad interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: cannot execute binary file: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "‘%s’: is a special builtin"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "cannot duplicate fd %d to fd %d"
@@ -1103,61 +1133,65 @@ msgstr "attempted assignment to non-variable"
msgid "syntax error in variable assignment"
msgstr "syntax error in variable assignment"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "division by 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: bad expassign token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "‘:’ expected for conditional expression"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponent less than 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifier expected after pre-increment or pre-decrement"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "missing ‘)’"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntax error: operand expected"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: invalid arithmetic operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token is “%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "invalid arithmetic base"
-#: expr.c:1588
+#: expr.c:1582
+msgid "invalid integer constant"
+msgstr "invalid integer constant"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "value too great for base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expression error\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: cannot access parent directories"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "cannot reset nodelay mode for fd %d"
@@ -1172,161 +1206,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d appears in running job %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "deleting stopped job %d with process group %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: process %5ld (%s) in the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no such pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Done"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stopped"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stopped(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Running"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Unknown status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No record of process %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d is stopped"
-#: jobs.c:3362
+#: jobs.c:3564
+#, c-format
+msgid "%s: no current jobs"
+msgstr "%s: no current jobs"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job has terminated"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d already in background"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: line %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp failed"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: no job control in background"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "cannot set terminal process group (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "no job control in this shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: failed assertion: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1335,39 +1379,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "unknown"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: block on free list clobbered"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: called with already freed block argument"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: called with unallocated block argument"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underflow detected; magic8 corrupted"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: start and end chunk sizes differ"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: called with unallocated block argument"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underflow detected; magic8 corrupted"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start and end chunk sizes differ"
@@ -1409,22 +1461,22 @@ msgstr "%s: bad network path specification"
msgid "network operations not supported"
msgstr "network operations not supported"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: cannot change locale (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: cannot change locale (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1470,7 +1522,7 @@ msgstr "here-document at line %d delimited by end-of-file (wanted ‘%sâ
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: redirection instruction ‘%d’ out of range"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1479,103 +1531,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maximum here-document count exceeded"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "unexpected EOF while looking for matching ‘%c’"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "unexpected EOF while looking for ‘]]’"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: unexpected token ‘%s’"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntax error in conditional expression"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "unexpected token ‘%s’, expected ‘)’"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "expected ‘)’"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "unexpected argument ‘%s’ to conditional unary operator"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "unexpected argument to conditional unary operator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "unexpected token ‘%s’, conditional binary operator expected"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "conditional binary operator expected"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "unexpected argument ‘%s’ to conditional binary operator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "unexpected argument to conditional binary operator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "unexpected token ‘%c’ in conditional command"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "unexpected token ‘%s’ in conditional command"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "unexpected token %d in conditional command"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error near unexpected token ‘%s’"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error near ‘%s’"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntax error: unexpected end of file"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use “%s†to leave the shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "unexpected EOF while looking for matching ‘)’"
@@ -1618,89 +1670,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: ‘%c’: invalid format character"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "file descriptor out of range"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: cannot overwrite existing file"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: cannot redirect output"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "cannot create temp file for here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: cannot assign fd to variable"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port not supported without networking"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: cannot duplicate fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "could not find /tmp, please create!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp must be a valid directory name"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pretty-printing mode ignored in interactive shells"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: invalid option"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "cannot set uid to %d: effective uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "cannot set gid to %d: effective gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "cannot start debugger; debugging mode disabled"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Is a directory"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "I have no name!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1709,315 +1761,311 @@ msgstr ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU long options:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Shell options:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o option\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use the ‘bashbug’ command to report bugs.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: invalid operation"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Bogus signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Quit"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Illegal instruction"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT instruction"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT instruction"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Killed"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmentation fault"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Bad system call"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Broken pipe"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Urgent IO condition"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stopped (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continue"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stopped (tty input)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stopped (tty output)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "File limit"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Window changed"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Record lock"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "User signal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "User signal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT input data pending"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "power failure imminent"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "system crash imminent"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrate process to another CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programming error"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT monitor mode granted"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mode retracted"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT sound sequence has completed"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Information request"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Unknown Signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unknown Signal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "bad substitution: no closing ‘%s’ in %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: cannot assign list to array member"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "cannot make pipe for process substitution"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "cannot make child for process substitution"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "cannot open named pipe %s for reading"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "cannot open named pipe %s for writing"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "cannot duplicate named pipe %s as fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "command substitution: ignored null byte in input"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "cannot make pipe for command substitution"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "cannot make child for command substitution"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: cannot duplicate pipe as fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: invalid variable name for name reference"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: invalid indirect expansion"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: invalid variable name"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter not set"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null or not set"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: bad substitution"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: cannot assign in this way"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2025,12 +2073,12 @@ msgstr ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "bad substitution: no closing “`†in %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "no match: %s"
@@ -2053,119 +2101,124 @@ msgstr "‘)’ expected"
msgid "`)' expected, found %s"
msgstr "‘)’ expected, found %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unary operator expected"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binary operator expected"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unary operator expected"
+
+#: test.c:881
msgid "missing `]'"
msgstr "missing ‘]’"
-#: trap.c:216
+#: test.c:899
+#, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntax error: ‘%s’ unexpected"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "invalid signal number"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: maximum trap handler level exceeded (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: bad signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error importing function definition for ‘%s’"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell level (%d) too high, resetting to 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable may not be assigned value"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assigning integer to name reference"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no function context at current scope"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s has null exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "invalid character %d in exportstr for %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no ‘=’ in exportstr for %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: cannot open as FILE"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: invalid value for trace file descriptor"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2253,12 +2306,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2281,12 +2334,12 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
-msgstr "getopts optstring name [arg]"
+msgid "getopts optstring name [arg ...]"
+msgstr "getopts optstring name [arg ...]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
+msgstr "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2413,8 +2466,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [-p var] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2507,20 +2560,20 @@ msgstr "printf [-v var] format [arguments]"
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
#: 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]"
+"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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
@@ -2967,6 +3020,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3004,6 +3059,8 @@ msgstr ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3031,7 +3088,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or a variable\n"
" assignment error occurs."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3041,7 +3098,7 @@ msgstr ""
" \n"
" A synonym for ‘declare’. See ‘help declare’."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3067,7 +3124,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:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3143,7 +3200,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless a write error occurs."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3165,7 +3222,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless a write error occurs."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3215,7 +3272,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3235,7 +3292,7 @@ msgstr ""
" Exit Status:\n"
" Returns exit status of command or success if command is null."
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3268,8 +3325,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3309,14 +3366,14 @@ msgstr ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3358,7 +3415,7 @@ msgstr ""
" Returns success unless COMMAND is not found or a redirection error "
"occurs."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3370,7 +3427,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3384,7 +3441,7 @@ msgstr ""
"executed\n"
" in a login shell."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3432,8 +3489,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"
-"[0m’\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"
@@ -3442,7 +3499,7 @@ msgstr ""
" Returns success or status of executed command; non-zero if an error "
"occurs."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3462,7 +3519,7 @@ msgstr ""
" Exit Status:\n"
" Status of command placed in foreground, or failure if an error occurs."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3486,7 +3543,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3530,7 +3587,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is not found or an invalid option is given."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3570,7 +3627,7 @@ msgstr ""
" Returns success unless PATTERN is not found or an invalid option is "
"given."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3637,7 +3694,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3681,7 +3738,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:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3711,7 +3768,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3753,7 +3810,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3839,7 +3896,7 @@ msgstr ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3939,7 +3996,7 @@ msgstr ""
"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3959,7 +4016,7 @@ msgstr ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4127,7 +4184,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4167,7 +4224,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4201,7 +4258,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4239,7 +4296,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4257,7 +4314,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4281,7 +4338,7 @@ msgstr ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4305,7 +4362,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4467,7 +4524,7 @@ msgstr ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4480,7 +4537,7 @@ msgstr ""
"must\n"
" be a literal ‘]’, to match the opening ‘[’."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4500,7 +4557,7 @@ msgstr ""
" Exit Status:\n"
" Always succeeds."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4585,7 +4642,7 @@ msgstr ""
" Returns success unless a SIGSPEC is invalid or an invalid option is "
"given."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4629,8 +4686,8 @@ msgstr ""
" \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"
-"[0m’,\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"
@@ -4643,7 +4700,7 @@ msgstr ""
" Returns success if all of the NAMEs are found; fails if any are not "
"found."
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4674,6 +4731,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4720,6 +4778,7 @@ msgstr ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4738,7 +4797,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4770,7 +4829,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4781,15 +4840,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4800,17 +4869,27 @@ msgstr ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4836,7 +4915,7 @@ msgstr ""
"invalid\n"
" option is given."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4860,7 +4939,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4890,7 +4969,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4913,8 +4992,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 “$@"
-"[0m‒\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"
@@ -4927,7 +5006,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4955,7 +5034,7 @@ msgstr ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4973,7 +5052,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5011,7 +5090,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5029,7 +5108,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5047,7 +5126,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5069,7 +5148,7 @@ msgstr ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5093,7 +5172,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is readonly."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5111,7 +5190,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5136,12 +5215,12 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the resumed job."
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5149,12 +5228,12 @@ msgstr ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to “let EXPRESSIONâ€.\n"
+" evaluation. Equivalent to ‘let “EXPRESSION‒.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5208,7 +5287,7 @@ msgstr ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5312,7 +5391,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:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5370,7 +5449,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5407,13 +5486,13 @@ msgstr ""
" \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"
-"[0m’\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"
-"[0m’\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"
@@ -5422,7 +5501,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5477,7 +5556,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5513,7 +5592,7 @@ msgstr ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5530,8 +5609,8 @@ 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"
@@ -5566,8 +5645,8 @@ 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"
@@ -5587,7 +5666,7 @@ msgstr ""
"assignment\n"
" error occurs."
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5609,7 +5688,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5637,7 +5716,7 @@ msgstr ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5645,7 +5724,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5667,7 +5746,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5728,7 +5807,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5808,7 +5887,7 @@ msgstr ""
"or\n"
" not an indexed array."
-#: builtins.c:2073
+#: builtins.c:2083
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 346cf495..749c3a70 100644
--- a/po/en@quot.gmo
+++ b/po/en@quot.gmo
Binary files differ
diff --git a/po/en@quot.po b/po/en@quot.po
index ad3600f8..5d978b23 100644
--- a/po/en@quot.po
+++ b/po/en@quot.po
@@ -1,7 +1,7 @@
# English translations for GNU bash package.
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the GNU bash package.
-# Automatically generated, 2018.
+# Automatically generated, 2020.
#
# All this catalog "translates" are quotation characters.
# The msgids must be ASCII and therefore cannot contain real quotation
@@ -27,87 +27,93 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 5.0-rc1\n"
+"Project-Id-Version: GNU bash 5.1-rc3\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-11-28 12:51-0500\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
+"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "bad array subscript"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removing nameref attribute"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: cannot convert indexed to associative array"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: invalid associative array key"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: cannot assign to non-numeric index"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: must use subscript when assigning associative array"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: cannot create: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: cannot find keymap for command"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: first non-whitespace character is not ‘\"’"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "no closing ‘%c’ in %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: missing colon separator"
-#: braces.c:331
+#: bashline.c:4555
+#, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "‘%s’: cannot unbind in command keymap"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace expansion: cannot allocate memory for %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "brace expansion: failed to allocate memory for %u elements"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for ‘%s’"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "‘%s’: invalid alias name"
@@ -126,22 +132,22 @@ msgstr "‘%s’: invalid keymap name"
msgid "%s: cannot read: %s"
msgstr "%s: cannot read: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "‘%s’: unknown function name"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s can be invoked via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "‘%s’: cannot unbind"
@@ -158,25 +164,35 @@ msgstr "only meaningful in a ‘for’, ‘while’, or ‘until’ loop"
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME not set"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "too many arguments"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null directory"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD not set"
@@ -195,7 +211,7 @@ msgstr "warning: "
msgid "%s: usage: "
msgstr "%s: usage: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: option requires an argument"
@@ -210,7 +226,7 @@ msgstr "%s: numeric argument required"
msgid "%s: not found"
msgstr "%s: not found"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: invalid option"
@@ -220,7 +236,7 @@ msgstr "%s: invalid option"
msgid "%s: invalid option name"
msgstr "%s: invalid option name"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "‘%s’: not a valid identifier"
@@ -233,7 +249,7 @@ msgstr "invalid octal number"
msgid "invalid hex number"
msgstr "invalid hex number"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "invalid number"
@@ -309,73 +325,83 @@ msgstr "error setting terminal attributes: %s"
msgid "error getting terminal attributes: %s"
msgstr "error getting terminal attributes: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error retrieving current directory: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ambiguous job spec"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "help not available in this version"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: cannot unset: readonly %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: cannot unset"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: invalid action name"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no completion specification"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "warning: -F option may not work as you expect"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "warning: -C option may not work as you expect"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "not currently executing completion function"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "can only be used in a function"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "‘%s’: invalid variable name for name reference"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "cannot use ‘-f’ to make functions"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: readonly function"
@@ -390,7 +416,7 @@ msgstr "%s: quoted compound array assignment deprecated"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: cannot destroy array variables in this way"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: cannot convert associative to indexed array"
@@ -404,27 +430,32 @@ msgstr "dynamic loading not available"
msgid "cannot open shared object %s: %s"
msgstr "cannot open shared object %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "cannot find %s in shared object %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: dynamic builtin already loaded"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: not dynamically loaded"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: cannot delete: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: is a directory"
@@ -439,12 +470,12 @@ msgstr "%s: not a regular file"
msgid "%s: file is too large"
msgstr "%s: file is too large"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: cannot execute binary file"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: cannot execute: %s"
@@ -468,15 +499,16 @@ msgstr "There are stopped jobs.\n"
msgid "There are running jobs.\n"
msgstr "There are running jobs.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "no command found"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "history specification"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: cannot open temp file: %s"
@@ -504,12 +536,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "hits\tcommand\n"
@@ -520,6 +552,14 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Shell commands matching keyword `"
msgstr[1] "Shell commands matching keywords `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+"'\n"
+"\n"
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -551,21 +591,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "history position"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: invalid timestamp"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: history expansion failed"
@@ -588,7 +628,7 @@ msgstr "%s: arguments must be process or job IDs"
msgid "Unknown error"
msgstr "Unknown error"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "expression expected"
@@ -597,12 +637,12 @@ msgstr "expression expected"
msgid "%s: not an indexed array"
msgstr "%s: not an indexed array"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: invalid file descriptor specification"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid file descriptor: %s"
@@ -630,36 +670,36 @@ msgstr "empty array variable name"
msgid "array variable support required"
msgstr "array variable support required"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "‘%s’: missing format character"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "‘%c’: invalid time format specification"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "‘%c’: invalid format character"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "warning: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "missing hex digit for \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "missing unicode digit for \\%c"
@@ -813,12 +853,12 @@ msgstr ""
" \n"
" The ‘dirs’ builtin displays the directory stack."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: invalid timeout specification"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "read error: %d: %s"
@@ -827,21 +867,11 @@ msgstr "read error: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "can only ‘return’ from a function or sourced script"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "cannot simultaneously unset a function and a variable"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: cannot unset"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: cannot unset: readonly %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: not an array variable"
@@ -856,7 +886,7 @@ msgstr "%s: not a function"
msgid "%s: cannot export"
msgstr "%s: cannot export"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift count"
@@ -864,7 +894,7 @@ msgstr "shift count"
msgid "cannot set and unset shell options simultaneously"
msgstr "cannot set and unset shell options simultaneously"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: invalid shell option name"
@@ -921,26 +951,26 @@ msgstr "%s is %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s is hashed (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: invalid limit argument"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "‘%c’: bad command"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: cannot get limit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: cannot modify limit: %s"
@@ -1000,76 +1030,75 @@ msgstr "bad jump"
msgid "%s: unbound variable"
msgstr "%s: unbound variable"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atimed out waiting for input: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "cannot redirect standard input from /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: ‘%c’: invalid format character"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] still exists"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum eval nesting level exceeded (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum source nesting level exceeded (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restricted: cannot specify ‘/’ in command names"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: command not found"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bad interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: cannot execute binary file: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "‘%s’: is a special builtin"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "cannot duplicate fd %d to fd %d"
@@ -1094,61 +1123,65 @@ msgstr "attempted assignment to non-variable"
msgid "syntax error in variable assignment"
msgstr "syntax error in variable assignment"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "division by 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: bad expassign token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "‘:’ expected for conditional expression"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponent less than 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifier expected after pre-increment or pre-decrement"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "missing ‘)’"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntax error: operand expected"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: invalid arithmetic operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token is “%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "invalid arithmetic base"
-#: expr.c:1588
+#: expr.c:1582
+msgid "invalid integer constant"
+msgstr "invalid integer constant"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "value too great for base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expression error\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: cannot access parent directories"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "cannot reset nodelay mode for fd %d"
@@ -1163,161 +1196,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d appears in running job %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "deleting stopped job %d with process group %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: process %5ld (%s) in the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no such pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Done"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stopped"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stopped(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Running"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Done(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Unknown status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "child setpgid (%ld to %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No record of process %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: job %d is stopped"
-#: jobs.c:3362
+#: jobs.c:3564
+#, c-format
+msgid "%s: no current jobs"
+msgstr "%s: no current jobs"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: job has terminated"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: job %d already in background"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: turning on WNOHANG to avoid indefinite block"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: line %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp failed"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: no job control in background"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "cannot set terminal process group (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "no job control in this shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: failed assertion: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1326,39 +1369,47 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "unknown"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: block on free list clobbered"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: called with already freed block argument"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: called with unallocated block argument"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underflow detected; magic8 corrupted"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: start and end chunk sizes differ"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: called with unallocated block argument"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow detected; mh_nbytes out of range"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underflow detected; magic8 corrupted"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start and end chunk sizes differ"
@@ -1400,22 +1451,22 @@ msgstr "%s: bad network path specification"
msgid "network operations not supported"
msgstr "network operations not supported"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: cannot change locale (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: cannot change locale (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: cannot change locale (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: cannot change locale (%s): %s"
@@ -1461,7 +1512,7 @@ msgstr "here-document at line %d delimited by end-of-file (wanted ‘%s’)"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: redirection instruction ‘%d’ out of range"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1470,103 +1521,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maximum here-document count exceeded"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "unexpected EOF while looking for matching ‘%c’"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "unexpected EOF while looking for ‘]]’"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error in conditional expression: unexpected token ‘%s’"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntax error in conditional expression"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "unexpected token ‘%s’, expected ‘)’"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "expected ‘)’"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "unexpected argument ‘%s’ to conditional unary operator"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "unexpected argument to conditional unary operator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "unexpected token ‘%s’, conditional binary operator expected"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "conditional binary operator expected"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "unexpected argument ‘%s’ to conditional binary operator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "unexpected argument to conditional binary operator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "unexpected token ‘%c’ in conditional command"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "unexpected token ‘%s’ in conditional command"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "unexpected token %d in conditional command"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error near unexpected token ‘%s’"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error near ‘%s’"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntax error: unexpected end of file"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use “%s†to leave the shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "unexpected EOF while looking for matching ‘)’"
@@ -1609,89 +1660,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: ‘%c’: invalid format character"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "file descriptor out of range"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: cannot overwrite existing file"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: cannot redirect output"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "cannot create temp file for here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: cannot assign fd to variable"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port not supported without networking"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: cannot duplicate fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "could not find /tmp, please create!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp must be a valid directory name"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "pretty-printing mode ignored in interactive shells"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: invalid option"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "cannot set uid to %d: effective uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "cannot set gid to %d: effective gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "cannot start debugger; debugging mode disabled"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Is a directory"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "I have no name!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1700,312 +1751,308 @@ msgstr ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU long options:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Shell options:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o option\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use the ‘bashbug’ command to report bugs.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash home page: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: invalid operation"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Bogus signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrupt"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Quit"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Illegal instruction"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT instruction"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT instruction"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Killed"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmentation fault"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Bad system call"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Broken pipe"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Urgent IO condition"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stopped (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continue"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Child death or stop"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stopped (tty input)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stopped (tty output)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O ready"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "File limit"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Window changed"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Record lock"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "User signal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "User signal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT input data pending"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "power failure imminent"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "system crash imminent"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrate process to another CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programming error"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT monitor mode granted"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mode retracted"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT sound sequence has completed"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Information request"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Unknown Signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Unknown Signal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "bad substitution: no closing ‘%s’ in %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: cannot assign list to array member"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "cannot make pipe for process substitution"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "cannot make child for process substitution"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "cannot open named pipe %s for reading"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "cannot open named pipe %s for writing"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "cannot duplicate named pipe %s as fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "command substitution: ignored null byte in input"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "cannot make pipe for command substitution"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "cannot make child for command substitution"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: cannot duplicate pipe as fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: invalid variable name for name reference"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: invalid indirect expansion"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: invalid variable name"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter not set"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter null or not set"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: bad substitution"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: cannot assign in this way"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2013,12 +2060,12 @@ msgstr ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "bad substitution: no closing “`†in %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "no match: %s"
@@ -2041,119 +2088,124 @@ msgstr "‘)’ expected"
msgid "`)' expected, found %s"
msgstr "‘)’ expected, found %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unary operator expected"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binary operator expected"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unary operator expected"
+
+#: test.c:881
msgid "missing `]'"
msgstr "missing ‘]’"
-#: trap.c:216
+#: test.c:899
+#, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntax error: ‘%s’ unexpected"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "invalid signal number"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: maximum trap handler level exceeded (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: bad signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error importing function definition for ‘%s’"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell level (%d) too high, resetting to 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: no function context at current scope"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable may not be assigned value"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: assigning integer to name reference"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: no function context at current scope"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s has null exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "invalid character %d in exportstr for %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no ‘=’ in exportstr for %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no global_variables context"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: cannot open as FILE"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: invalid value for trace file descriptor"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibility value out of range"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2020 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2241,12 +2293,12 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
-msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgstr "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
-msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgstr "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
#: builtins.c:82
msgid "local [option] name[=value] ..."
@@ -2269,12 +2321,12 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
-msgstr "getopts optstring name [arg]"
+msgid "getopts optstring name [arg ...]"
+msgstr "getopts optstring name [arg ...]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
+msgstr "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2401,8 +2453,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [-p var] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2495,20 +2547,20 @@ msgstr "printf [-v var] format [arguments]"
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
#: 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]"
+"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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
#: builtins.c:239
msgid "compopt [-o|+o option] [-DEI] [name ...]"
@@ -2951,6 +3003,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2988,6 +3042,8 @@ msgstr ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3014,7 +3070,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or a variable\n"
" assignment error occurs."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3024,7 +3080,7 @@ msgstr ""
" \n"
" A synonym for ‘declare’. See ‘help declare’."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3050,7 +3106,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:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3126,7 +3182,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless a write error occurs."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3148,7 +3204,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless a write error occurs."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3198,7 +3254,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3218,7 +3274,7 @@ msgstr ""
" Exit Status:\n"
" Returns exit status of command or success if command is null."
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3251,8 +3307,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3289,14 +3345,14 @@ msgstr ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3338,7 +3394,7 @@ msgstr ""
" Returns success unless COMMAND is not found or a redirection error "
"occurs."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3350,7 +3406,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3364,7 +3420,7 @@ msgstr ""
"executed\n"
" in a login shell."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3420,7 +3476,7 @@ msgstr ""
" Returns success or status of executed command; non-zero if an error "
"occurs."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3440,7 +3496,7 @@ msgstr ""
" Exit Status:\n"
" Status of command placed in foreground, or failure if an error occurs."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3464,7 +3520,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3508,7 +3564,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is not found or an invalid option is given."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3548,7 +3604,7 @@ msgstr ""
" Returns success unless PATTERN is not found or an invalid option is "
"given."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3614,7 +3670,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3658,7 +3714,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:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3688,7 +3744,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3730,7 +3786,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or an error occurs."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3816,7 +3872,7 @@ msgstr ""
" Exit Status:\n"
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3916,7 +3972,7 @@ msgstr ""
"occurs,\n"
" or an invalid file descriptor is supplied as the argument to -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3936,7 +3992,7 @@ msgstr ""
" Exit Status:\n"
" Returns N, or failure if the shell is not executing a function or script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4104,7 +4160,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4144,7 +4200,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or a NAME is read-only."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4178,7 +4234,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4216,7 +4272,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is given or NAME is invalid."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4234,7 +4290,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless N is negative or greater than $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4258,7 +4314,7 @@ msgstr ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4282,7 +4338,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4444,7 +4500,7 @@ msgstr ""
" Returns success if EXPR evaluates to true; fails if EXPR evaluates to\n"
" false or an invalid argument is given."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4456,7 +4512,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4476,7 +4532,7 @@ msgstr ""
" Exit Status:\n"
" Always succeeds."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4560,7 +4616,7 @@ msgstr ""
" Returns success unless a SIGSPEC is invalid or an invalid option is "
"given."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4616,7 +4672,7 @@ msgstr ""
" Returns success if all of the NAMEs are found; fails if any are not "
"found."
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4647,6 +4703,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4693,6 +4750,7 @@ msgstr ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4710,7 +4768,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4742,7 +4800,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless MODE is invalid or an invalid option is given."
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4753,15 +4811,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4772,17 +4840,27 @@ msgstr ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4808,7 +4886,7 @@ msgstr ""
"invalid\n"
" option is given."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4830,7 +4908,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4860,7 +4938,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4896,7 +4974,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4924,7 +5002,7 @@ msgstr ""
" Exit Status:\n"
" The return status is the return status of PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4942,7 +5020,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4980,7 +5058,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4998,7 +5076,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5016,7 +5094,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5038,7 +5116,7 @@ msgstr ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5062,7 +5140,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless NAME is readonly."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5080,7 +5158,7 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the last command executed."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5104,12 +5182,12 @@ msgstr ""
" Exit Status:\n"
" Returns the status of the resumed job."
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5117,12 +5195,12 @@ msgstr ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to “let EXPRESSIONâ€.\n"
+" evaluation. Equivalent to ‘let “EXPRESSIONâ€â€™.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5174,7 +5252,7 @@ msgstr ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5278,7 +5356,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:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5336,7 +5414,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5386,7 +5464,7 @@ msgstr ""
" Returns success unless an invalid argument is supplied or the directory\n"
" change fails."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5440,7 +5518,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5476,7 +5554,7 @@ msgstr ""
" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
" given or OPTNAME is disabled."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5493,8 +5571,8 @@ 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"
@@ -5529,8 +5607,8 @@ 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"
@@ -5550,7 +5628,7 @@ msgstr ""
"assignment\n"
" error occurs."
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5572,7 +5650,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5600,7 +5678,7 @@ msgstr ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5608,7 +5686,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5630,7 +5708,7 @@ msgstr ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5690,7 +5768,7 @@ msgstr ""
" Returns success unless an invalid option is supplied or NAME does not\n"
" have a completion specification defined."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5770,7 +5848,7 @@ msgstr ""
"or\n"
" not an indexed array."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
diff --git a/po/eo.gmo b/po/eo.gmo
index a3fa5502..4efbdee3 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index e6e6a0e2..d47e83aa 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 <sergio.pokrovskij@gmail.com>, 1998, ... 2016.
+# Sergio Pokrovskij <sergio.pokrovskij@gmail.com>, 1998, ... 2019.
#
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4/builtins"); -*-
-# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/4.4/bash-4.4"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/5.0/bash-5.0/builtins"); -*-
+# -*- eval: (po-consider-source-path "~/Documents/Eo/Work/i18n/5.0/bash-5.0"); -*-
# Stilaj notoj:
# La angulaj citiloj limigas «plurajn vortojn»,
# 99-66 estas la citiloj de „unuvortaĵo‟
@@ -28,93 +28,98 @@
# unset malvalorizi (variablon); malaktivigi, malÅalti (opcion, nomon)
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 4.4\n"
+"Project-Id-Version: GNU bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2016-09-22 23:59+0700\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-09 16:32+0700\n"
"Last-Translator: Sergio Pokrovskij <sergio.pokrovskij@gmail.com>\n"
"Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "Misa tabel-indico"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: ne plu nomreferenco (la atributo nameref forigitas)"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: Maleblas konverti entjerindican tabelon en asocitabelon"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: Misa asocitabela Ålosilo"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: Valorizato havu nombran indicon"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: Valorizante per asocitabelo uzu indicon"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: Ne prosperis krei: %s"
# XXX: internal_error
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: Mankas klavartabelo por komando"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: La unua ne-blankspaca signo ne estas „\"‟"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "Mankas ferma „%c‟ en %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: Mankas disiga dupunkto"
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "%s: Ne eblas malligi"
+
# XXX: internal_error
-#: braces.c:331
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "vinkulmalvolvo: Maleblas memorhavigo por %s"
# XXX: internal_error
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %d elementoj"
+msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %u elementoj"
# XXX: internal_error
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "vinkulmalvolvo: Fiaskis memorhavigo por %s"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "%s: MaltaÅ­gas por uzi kiel alinomon"
@@ -133,22 +138,22 @@ msgstr "„%s‟: Misa nomo por klavartabelo"
msgid "%s: cannot read: %s"
msgstr "%s: Ne eblas legi: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "%s: Nekonata funkcinomo"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s malhavas klavligon\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s vokeblas per "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "%s: Ne eblas malligi"
@@ -161,29 +166,46 @@ msgstr "iteracinombrilo"
msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "Sencas nur en iteracio „for‟, „while‟ aŭ „until‟"
+# caller [expr] =>
+# caller [ESPRIMO]
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Liveras la kuntekston de la kuranta procedurvoko.\n"
+"Liveru la kuntekston de la kuranta procedurvoko\n"
"\n"
-" Sen ESPR liveras "
+" Se ESPRIMO malestas, liveru «$line $filename». Se ESPRIMO\n"
+" ĉeestas, liveru «$line $subroutine $filename»; ĉi tiu krominformo\n"
+" uzeblas por vidigi la vok-stakon.\n"
+"\n"
+" La valoro de ESPRIMO indikas, kiom da vokkadroj retroiri disde la\n"
+" kuranta; la pinta kadro havas la numeron 0.\n"
+"\n"
+" Elirstato:\n"
+" Äœi estas 0, kondiĉe ke la Åelo plenumas Åelfunkcion kaj la ESPRIMO\n"
+" estas valida."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME malhavas valoron"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "Tro multe da argumentoj"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "NUL-dosierujo"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD malhavas valoron"
@@ -202,7 +224,7 @@ msgstr "Averto: "
msgid "%s: usage: "
msgstr "%s: Uzmaniero: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: La opcio bezonas argumenton"
@@ -217,7 +239,7 @@ msgstr "%s: Necesas nombra argumento"
msgid "%s: not found"
msgstr "%s: Ne trovita"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: Misa opcio"
@@ -227,7 +249,7 @@ msgstr "%s: Misa opcio"
msgid "%s: invalid option name"
msgstr "%s: Misa opcinomo"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s‟ ne estas taŭga nomo"
@@ -240,7 +262,7 @@ msgstr "Misa okuma nombro"
msgid "invalid hex number"
msgstr "Misa 16uma nombro"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "Misa nombro"
@@ -316,73 +338,83 @@ msgstr "Eraro ĉe agordado de terminalaj atributoj: %s"
msgid "error getting terminal attributes: %s"
msgstr "Eraro ĉe akiro de terminalaj atributoj: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Ambigua laborindiko"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "helpilo mankas en ĉi tiu versio"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: Malaktivigo fiaskis: nurlega %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: Malaktivigo fiaskis"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: Misa nomo de ago"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: Kompletigo ne estas specifita"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "Ni ne estas en plenumado de kompletiga funkcio"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "Uzeblas nur ene de funkcio"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: Referenca variablo ne povas esti tabelo"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: Nomreferenca variablo ne referencu sin mem"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: Cikla nomreferenco"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: Misa variablonomo por nomreferenco"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "„-f‟ ne estas uzebla por fari funkciojn"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: Nurlega funkcio"
@@ -397,7 +429,7 @@ msgstr "%s: Tutopa tabelvalorizo citila estas evitinda"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: Ĉi tiel ne eblas neniigi tabelvariablojn"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: Ne eblas konverti asocitabelon en entjerindican tabelon"
@@ -411,27 +443,32 @@ msgstr "Rultempa Åargo ne disponeblas"
msgid "cannot open shared object %s: %s"
msgstr "Ne malfermiÄis dinamika biblioteko %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "Mankas %s en la dinamika biblioteko%s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: Ne Åargita dinamike"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: Ne Åargita dinamike"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: Ne eblas forigi: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s estas dosierujo"
@@ -446,12 +483,12 @@ msgstr "%s: Ne ordinara dosiero"
msgid "%s: file is too large"
msgstr "%s: Tro granda dosiero"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: Neplenumebla duuma dosiero"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: Maleblas plenumi: %s"
@@ -475,15 +512,16 @@ msgstr "Restas haltigitaj laboroj.\n"
msgid "There are running jobs.\n"
msgstr "Restas rulataj laboroj.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "Komando ne trovita"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "Historia indiko"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: Ne malfermiÄis labordosiero: %s"
@@ -511,12 +549,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "Trafoj\tKomando\n"
@@ -528,6 +566,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -560,21 +604,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "pozicio en la historio"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: MaltaÅ­ga tempomarko"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: Historia malvolvo fiaskis"
@@ -597,7 +641,7 @@ msgstr "%s: Argumento estu proceznumero aÅ­ laborindiko"
msgid "Unknown error"
msgstr "Nekonata eraro"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "Mankas esprimo"
@@ -606,12 +650,12 @@ msgstr "Mankas esprimo"
msgid "%s: not an indexed array"
msgstr "%s: Äi ne estas entjerindica tabelo"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: Misa indiko de dosiernumero"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: Misa dosiernumero: %s"
@@ -640,37 +684,37 @@ msgstr "Mankas nomo de tabelvariablo"
msgid "array variable support required"
msgstr "necesas subteno de tabelvariabloj"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s‟: Mankas formata signo"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "%c: Misa tempoformato"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c‟: Misa signo formata"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "Averto: %s: %s"
# XXX: internal_error
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "Miso ĉe analizado de formato: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "Mankas 16uma cifero por \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "Post „%c‟ mankas unikoda cifero"
@@ -825,12 +869,12 @@ msgstr ""
"\n"
" Vi povas vidigi la stakon da dosierujoj per la komando „dirs‟."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: Misa indiko de atendotempo"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "Lega (read) eraro: %d: %s"
@@ -840,21 +884,11 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"„return‟ sencas nur en funkcio aŭ punkte vokita („.‟, „source‟) skripto"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "Ne eblas samtempe malaktivigi funkcion kaj variablon"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: Malaktivigo fiaskis"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: Malaktivigo fiaskis: nurlega %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ne tabela variablo"
@@ -869,7 +903,7 @@ msgstr "%s: Ne funkcio"
msgid "%s: cannot export"
msgstr "%s: Ne eblas eksporti"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "Nombrilo de „shift‟"
@@ -877,7 +911,7 @@ msgstr "Nombrilo de „shift‟"
msgid "cannot set and unset shell options simultaneously"
msgstr "Maleblas samtempe Åalti kaj malÅalti Åelan opcion"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: Misa nomo de Åela opcio"
@@ -934,26 +968,26 @@ msgstr "„%s‟ estas „%s‟\n"
msgid "%s is hashed (%s)\n"
msgstr "„%s‟ estas metita en hakettabelon (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: MaltaÅ­ga argumento por limo"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c‟: Misa komando"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: Fiaskis provo legi limon: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limo"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: Malprosperis ÅanÄi limon: %s"
@@ -1015,79 +1049,78 @@ msgstr "Misa salto"
msgid "%s: unbound variable"
msgstr "%s: Neligita variablo"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aTro longe sen enigo: AÅ­tomata seancofino\n"
# XXX: internal error:
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c‟: Misa formatsigno"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: la kunprocezo [%d:%s] ankoraÅ­ ekzistas"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "Eraro en dukto"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: La ingado de „source“oj superis sian maksimumon (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: La ingado de funkcioj superis sian maksimumon (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: Malpermesitas uzi „/‟ en komandonomoj"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: Komando ne trovita"
# XXX: internal error:
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: Misa interpretilo"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: Neplenumebla duuma dosiero: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s‟ estas primitiva komando speciala"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "Ne eblas kunnomumi al dosiernumero %d la dosiernumeron %d"
@@ -1109,65 +1142,69 @@ msgid "attempted assignment to non-variable"
msgstr "Provo valorizi ne-variablon"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "Sintaksa eraro en esprimo"
+msgstr "Sintaksa eraro en valorizo de variablo"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "Divido per 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "CIMO: Misa operacisigno en kombinita valorizsimbolo"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "„:‟ mankas kondiĉa esprimo"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "Negativa eksponento"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "Post antaÅ­kremento aperu nomo de variablo"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "Mankas „)‟"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "Sintaksa eraro: Mankas operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "Sintaksa eraro: Misa operacisimbolo aritmetika"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (misa simbolo estas „%s‟)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "MaltaÅ­ga bazo nombrosistema"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: Misa lininombro"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "Tro granda valoro por bazo de nombrosistemo"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: Misa esprimo\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getwd: Ne eblas atingi patrajn dosierujojn"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "Ne eblas reÅalti senprokrastan reÄimon por dosiernumero %d"
@@ -1183,166 +1220,174 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: procezgrupo dukto"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Forke farita proceznumero %d aperas en rulata laboro %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, 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:1307
-#, 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:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marked as still alive"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: Ne estas tia proceznumero (%ld)!"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signalo %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Farite"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Haltigita"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Haltigita(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Rulata"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Farite(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Eliro %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Nekonata stato"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(nekropsio elÅutita)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (labordosierujo: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "provo atribui (setpgid) procezgrupon %2$ld de la procezido %1$ld"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Malestas informoj pri procezo %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: La laboro %d estas haltigita"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: Ne estas tia laboro"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: La laboro finiÄis"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: La laboro %d jam estas fona"
# XXX: internal warning:
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: WNOHANG iÄas Åaltita por eviti nedifintan pendiÄon"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: linio %dª: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr "(nekropsio elÅutita)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(nun labordosierujo estas: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp fiaskis"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: liniaranÄo"
+msgstr "initialize_job_control: laborregado ne funkcias en la fono"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: liniaranÄo"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ne prosperis atribui grupon (%d) de terminala procezo"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "Ĉi tiu Åelo ne disponigas laborregadon"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: Malveras la aserto: %s\n"
# XXX: debug?
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1352,47 +1397,59 @@ msgstr ""
"malloc: %s:%d: aserto sufokita\r\n"
# XXX: internal error
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "nekonata"
# XXX: debug?
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: Skribdifektita bloko en malokupa listo (free list)"
# XXX: debug?
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: La argumento montras blokon jam malokupitan"
# XXX: debug?
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: La argumento ne montras generitan memoron"
# XXX: debug?
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo"
# XXX: debug?
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: Okazis maltroo; mh_nbytes estas ekster sia variejo"
+
+# XXX: debug?
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
# XXX: debug?
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: La argumento ne montras generitan memoron"
# XXX: debug?
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo"
# XXX: debug?
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: Okazis maltroo; mh_nbytes estas ekster sia variejo"
+
+# XXX: debug?
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: La ĉapa kaj vosta longoj de memorpeco ne estas egalaj"
@@ -1442,25 +1499,25 @@ msgid "network operations not supported"
msgstr "Reta funkciado ne disponeblas"
# XXX: internal warning:
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s)"
# XXX: internal warning:
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: Maleblas ÅanÄi lokaĵaron (%s): %s"
# XXX: fatal_error
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s)"
# XXX: fatal_error
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ne eblas ÅanÄi la lokaĵaron (%s): %s"
@@ -1509,7 +1566,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: Alidirektada komando „%d‟ ekster sia variejo"
# internal_warning():
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1518,103 +1575,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) superas SIZE_MAX (%lu): la linio "
"tranĉita"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "La nombro de tuj-documentoj superis sian maksimumon"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "Neatendita dosierfino dum serĉo de responda „%c‟"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "Neatendita dosierfino dum serĉo de „]]‟"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Sintaksa eraro en kondiĉa esprimo: Neatendita simbolo „%s‟"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "Sintaksa eraro en kondiĉa esprimo"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "Nekonvena simbolo „%s‟ anstataŭ „)‟"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "Mankas „)‟"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "La argumento „%s‟ ne konvenas por unuloka kondiĉa operacisimbolo"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "Maltaŭga argumento por unuloka kondiĉa operacisimbolo"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "Misa simbolo „%s‟ anstataŭ duloka kondiĉa operacisigno"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "ĉi tie devas esti duloka kondiĉa operacisigno"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "La argumento „%s‟ ne konvenas por duloka kondiĉa operacisimbolo"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "<maltaŭga argumento por duloka kondiĉa operacisimbolo"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Misa simbolo „%c‟ en kondiĉa komando"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Misa simbolo „%s‟ en kondiĉa komando"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "Misa simbolo „%d‟ en kondiĉa komando"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Sintaksa eraro apud neatendita simbolo „%s‟"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "Sintaksa eraro apud „%s‟"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "Sintaksa eraro: Neatendita dosierfino"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "Sintaksa eraro"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Uzu «%s» por eliri el la Åelo.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "Neatendita dosierfino dum serĉo de responda „)‟"
@@ -1663,95 +1720,95 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c‟: Misa formatsigno"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "Ekstervarieja dosiernumero"
# XXX: internal_error
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: Ambigua alidirektado"
# XXX: internal_error
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: Maleblas surskribi ekzistantan dosieron"
# XXX: internal_error
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: Limigita Åelo: malpermesitas alidirekti eligon"
# XXX: internal_error
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "Malprosperis krei labordosieron por tuj-dokumento: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: Maleblas konservi la dosiernumeron en la variablo"
# XXX: internal_warning
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "«/dev/(tcp|udp)/host/port» ne disponeblas ekster retumado"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "Alidirektada eraro: Fiaskis kunnomumo al dosiernumero"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "Mankas «/tmp», bv krei Äin!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "«/tmp» devas esti valida dosierujo"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "La reÄimo de struktura tekstaranÄo ne funkcias en dialogaj Åeloj"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: Misa opcio"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "Ne eblas ÅanÄi UID-on al %d: la efektiva UID estas %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "Ne eblas ÅanÄi GID-on al %d: la efektiva GID estas %d"
# XXX: internal_warning
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "Maleblas lanĉi erarserĉilon: la erarserĉa reÄimo malÅaltitas."
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s : ĉi tio estas dosierujo"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Mi ne havas nomon!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNUa «bash», versio %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1760,368 +1817,364 @@ msgstr ""
"Uzo:\t%s [GNUa opcio longforma] [opcio] ...\n"
"\t%s [GNUa opcio longforma] [opcio] SKRIPTODOSIERO ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNUaj opcioj longformaj:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Åœelaj opcioj:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD aŭ -c KOMANDO aŭ -O SHOPT_OPCIO\t\t(nur ĉe voko)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s aÅ­ -o opcio\n"
# bash --help
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Por pluaj informoj pri la opcioj tajpu: «%s -c \"help set\"»\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Por scii pli pri la primitivaj Åelkomandoj tajpu: „%s -c help‟\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Por raporti pri eraroj uzu la komandon „bashbug‟\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
"La hejmpaÄo de BaÅo (anglalingva): <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Äœenerala helpilo pri uzo de GNUa programaro: <http://www.gnu.org/gethelp/>\n"
# XXX: internal_error
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: Misa operacio"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Åœtopsignalo"
# Hangup detected on controlling terminal or death of controlling
# process
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Malkonekto"
# Interrupt from keyboard
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrompo"
# Quit from keyboard
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Klavara eliro"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Miskomando"
# SIGTRAP 5 Core Trace/breakpoint trap
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Spurada kontrolpunkto"
# Abort signal from abort(3)
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Komando ABORT"
# SIGEMT is not specified in POSIX 1003.1-2001, but neverthless appears
# on most other Unices, where its default action is typically to termi-
# nate the process with a core dump.
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT-komando"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Glitpunkta escepto"
# SIGKILL 9 Term Kill signal
# Nek kaptebla nek ignorebla (malkiel ABORT)
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Murdu"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus-eraro"
# SIGSEGV 11 Core Invalid memory reference
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Adreseraro"
# SIGSYS 12,-,12 Core Bad argument to routine (SVID)
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Misa sistemvoko"
# SIGPIPE 13 Term Broken pipe: write to pipe with no readers
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Rompita dukto"
# SIGALRM 14 Term Timer signal from alarm(2)
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "VekhorloÄo"
# SIGTERM 15 Term Termination signal
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "FiniÄu"
# SIGURG 16,23,21 Ign Urgent condition on socket (4.2 BSD)
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "UrÄa stato eneliga"
# SIGSTOP 17,19,23 Stop Stop process
# Nek kaptebla nek ignorebla (samkiel SIGKILL)
# Haltu (poste eblos plu iri, vd SIGCONT)
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Haltu (signalo)"
# SIGCONT 19,18,25 Continue if stopped
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Pluen"
# SIGCHLD 20,17,18 Ign Child stopped or terminated
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Procezido mortis aÅ­ haltis"
# SIGTTIN 21,21,26 Stop tty input for background process
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Haltu (pro terminalenigo)"
# SIGTTOU 22,22,27 Stop tty output for background process
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Haltu (pro terminaleligo)"
# SIGIO 23,29,22 Term I/O now possible (4.2 BSD)
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "Eneligo pretas"
# SIGXCPU 24,24,30 Core CPU time limit exceeded (4.2 BSD)
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Ĉefprocesora tempolimo"
# SIGXFSZ 25,25,31 Core File size limit exceeded (4.2 BSD)
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Dosiera longolimo"
# SIGVTALRM 26,26,28 Term Virtual alarm clock (4.2 BSD)
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Vekilo (virtuala)"
# SIGPROF 27,27,29 Term Profiling timer expired
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Vekilo (profilada)"
# SIGWINCH 28,28,20 Ign Window resize signal (4.3 BSD, Sun)
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Fenestro ÅanÄiÄis"
# SIGLOST -,-,- Term File lock lost
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "DosierÅloso"
# SIGUSR1 30,10,16 Term User-defined signal 1
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Uzulsignalo 1ª"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Uzulsignalo 2ª"
# Harbor File Transfer:
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Pendas HFT-enigo"
# SIGPWR 29,30,19 Term Power failure (System V)
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "Energiprovizo paneontas"
# SIGDANGER
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "La sistemo estas kraÅonta"
# SIGMIGRATE:
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "La procezo iru al alia ĉefprocesoro"
# SIGPRE
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "Programeraro"
# SIGGRANT (monopola??)
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-monitorreÄimo jesigita"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-monitorreÄimo forprenita"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-sonsekvenco finiÄis"
# SIGINFO 29,-,- A synonym for SIGPWR
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informmendo"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Nekonata signalnumero"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nekonata signalo n-ro %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Misa anstataŭigo: Mankas ferma „%s‟ en %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: Maleblas valorizi tabelanon per listo"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "Ne prosperis fari dukton por proceza anstataÅ­igo"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "Ne prosperis krei idon por proceza anstataÅ­igo"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "Ne prosperis malfermi nomitan dukton %s porlegan"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "Ne prosperis malfermi nomitan dukton %s por skribado"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "Ne prosperis kunnomumi nomhavan dukton %s kiel dosiernumeron %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "Komanda anstataŭigo: nul-bajto en enigaĵo, ignorita"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "Ne prosperis fari dukton por komanda anstataÅ­igo"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "Ne prosperis krei procezidon por komanda anstataÅ­igo"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: Ne prosperis kunnomumi la dosiernumeron 1 al dukto"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: Misa variablonomo por nomreferenco"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: Misa malvolvo malrekta"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: MaltaÅ­ga variablonomo"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: Parametro estas NUL aÅ­ malaktiva"
+msgstr "%s: Parametro estas malaktiva"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: Parametro estas NUL aÅ­ malaktiva"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: subĉeno-esprimo < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: Misa anstataÅ­igo"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ĉi tiel ne valorizebla"
# XXX: internal warning:
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
"Ontaj versioj de la Åelo plenumos komputon kiel aritmetikan anstataÅ­igon"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Misa anstataŭigo: Mankas ferma „`‟ en %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "Nenio kongrua: %s"
@@ -2144,134 +2197,140 @@ msgstr "Mankas „)‟"
msgid "`)' expected, found %s"
msgstr "AnstataÅ­ „)‟ troviÄas %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: Tie devas esti unuloka operacisigno"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: Tie devas esti duloka operacisigno"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: Tie devas esti unuloka operacisigno"
+
+#: test.c:881
msgid "missing `]'"
msgstr "Mankas „]‟"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Sintaksa eraro: Neatendita „;‟"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "Misa signalnumero"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: La ingado de „eval“oj superis sian maksimumon (%d)"
+msgstr ""
+"trap handler: La nivelo de kaptilotraktiloj superis sian maksimumon (%d)"
# XXX: internal_warning
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Misa signalnumero %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "Eraro ĉe importo de funkcidifino por „%s‟"
# XXX: internal_warning
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "%d estas tro granda Åelnivelo; mallevita Äis 1"
# XXX: internal_error
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: Malestas funkcia kunteksto en ĉi-regiono"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: Variablo ne valorizebla"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: Nomreferenco valorizata per entjero"
# XXX: internal_error
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "«exportstr» de %s estas NUL"
# XXX: internal_error
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, 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:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Mankas „=‟ en eksporta signoĉeno por „%s‟"
# XXX: internal_error
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: Mankas kunteksto de „global_variables‟"
# XXX: internal_error
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: Ne malfermeblas kiel DOSIERO"
# XXX: internal_error
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s kongruo-nivelo estas ekster sia variejo"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 ĉe «Free Software Foundation, Inc.»"
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 ĉe «Free Software Foundation, Inc.»"
#: version.c:47 version2.c:47
msgid ""
@@ -2362,11 +2421,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] KOMANDO [ARG ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [NOMO[=VALORO] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] NOMO[=VALORO] ..."
#: builtins.c:82
@@ -2390,11 +2451,13 @@ msgid "eval [arg ...]"
msgstr "eval [ARG ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts OPCIĈENO NOMO [ARG]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...]"
#: builtins.c:100
@@ -2529,8 +2592,8 @@ msgstr "umask [-p] [-S] [REÄœIMO]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [IND ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [IND ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2626,43 +2689,42 @@ msgstr "printf [-v VAR] FORMATO [ARGUMENTOJ]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBÅœAB]\n"
-" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB]\n"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n"
+" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n"
" [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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"
+"compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO]\n"
+" [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]\n"
" [-P PREFIKSO] [-S SUFIKSO] [VORTO]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o OPCIO] [-DE] [NOMO ...]"
+msgstr "compopt [-o|+o OPCIO] [-DEI] [NOMO ...]"
#: builtins.c:242
msgid ""
"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"mapfile [-d DISIG] [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n"
+"mapfile [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t] [-u DN]\n"
" [-C RETROVOKO] [-c KVANTO] [TABELO]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN]\n"
-" [-C RETROVOKO] [-c KVANTO] [TABELO]"
+"readarray [-d DISIG] [-n KIOM] [-O ORIGINO] [-s KIOM] [-t]\n"
+" [-u DN] [-C RETROVOKO] [-c KVANTO] [TABELO]"
# alias:
#: builtins.c:256
@@ -2837,7 +2899,6 @@ msgstr ""
# builtin [shell-builtin [arg ...]]
# builtin [ÅœELAÄ´O [ARG ...]]
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -3092,6 +3153,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3135,11 +3198,11 @@ msgstr ""
" -a\tla NOMOj estu entjerindicaj tabeloj (se realigite)\n"
" -A\tla NOMOj estu asocitabeloj (se realigite)\n"
" -i\thavigu al la variabloj NOMOj la atributon „integer‟ (entjera)\n"
-" -l\tminuskligu la NOMOjn ĉe valorizo\n"
+" -l\tminuskligu la valoron de ĉiu NOMO ĉe valorizo\n"
" -n NOMO estu referenco al variablo nomata per Äia valoro\n"
" -r\tla variabloj NOMOj estu nurlegaj\n"
" -t\thavigu al la NOMOj la atributon „trace‟ (spurata)\n"
-" -u\tmajuskligu la NOMOjn ĉe valorizo\n"
+" -u\tmajuskligu la valoron de ĉiu NOMO ĉe valorizo\n"
" -x\teksportu la variablojn NOMOj\n"
"\n"
" La uzo de „+‟ anstataÅ­ „-‟ malÅaltas la koncernan attributon.\n"
@@ -3155,7 +3218,7 @@ msgstr ""
"variablo."
# typeset [-aAfFgilrtux] [-p] name[=value] ...
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3167,7 +3230,7 @@ msgstr ""
# local [option] name[=value] ...
# local [OPCIO] NOMO[=VALORO] ...
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3194,8 +3257,7 @@ msgstr ""
" Åelo ne estas plenumanta funkcion."
# echo:
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3261,12 +3323,18 @@ msgstr ""
"\t\tpovas enteni 0, 1, 2 aÅ­ 3 okumajn ciferojn\n"
"\t\\xHH\tla signo kies 8-bita kodono estas HH (16-ume). HH\n"
"\t\tpovas enteni unu aÅ­ du 16-umajn ciferojn\n"
+" \\uHHHH la Unikoda signo kies kodono estas la 16-uma\n"
+" nombro HHHH. HHHH povas enteni de unu Äis kvar\n"
+" 16-umajn ciferojn.\n"
+" \\UHHHHHHHH la Unikoda signo kies kodono estas la 16-uma\n"
+" nombro HHHHHHHH. HHHHHHHH povas enteni de unu Äis\n"
+" ok 16-umajn ciferojn.\n"
"\n"
" Elirstato:\n"
" Sukcesa, krom se okazas elig-eraro."
# echo [-n] [ARG ...]
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3290,7 +3358,7 @@ msgstr ""
# enable [-a] [-dnps] [-f filename] [name ...]
# enable [-a] [-dnps] [-f DOSIERNOMO] [NOMO ...]
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3342,7 +3410,7 @@ msgstr ""
" eraro."
# eval [ARG ...]
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3363,7 +3431,8 @@ msgstr ""
# getopts optstring name [arg] =>
# getopts OPCIĈENO NOMO [ARG]
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3396,8 +3465,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3443,7 +3512,7 @@ msgstr ""
# exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
# exec [-cl] [-a NOMO] [KOMANDO [ARGUMENTOJ ...]] [ALIDIREKTADO ...]
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3485,7 +3554,7 @@ msgstr ""
" alirektado."
# exit [n]
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3498,7 +3567,7 @@ msgstr ""
" estas tiu de la plej ĵuse plenumita komando."
# logout [N]
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3515,7 +3584,7 @@ msgstr ""
# fc -s [pat=rep] [command] =>
# fc [-e REDAKTILO] [-lnr] [UNUA] [LASTA] aÅ­
# fc -s [ÅœABLONO=ANST] [KOMANDO]
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3570,7 +3639,7 @@ msgstr ""
" eraro."
# fg [job_spec] => fg [LABORINDIKO]
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3591,7 +3660,7 @@ msgstr ""
" Tiu de la dialogigita komando; aÅ­ malsukceso, se okazis eraro."
# bg [job_spec] => bg [LABORINDIKO]
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3615,7 +3684,7 @@ msgstr ""
" eraro."
# hash [-lr] [-p VOJNOMO] [-dt] [NOMO ...]
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3661,8 +3730,7 @@ msgstr ""
# help [-ds] [pattern ...]
# help [-ds] [ÅœABLONO ...]
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3707,8 +3775,7 @@ msgstr ""
# history [-c] [-d POZICIO] [n] aÅ­
# history -awr [DOSIERNOMO] aÅ­
# history -ps ARG [ARG...]
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3750,8 +3817,9 @@ msgstr ""
"\n"
" Opcioj:\n"
" -c forviÅu la tutan historion (forigu ĉiujn erojn el la listo)\n"
-" -d POZICIO forviÅu la linion kies numero estas POZICIO\n"
-"\n"
+" -d POZICIO forviÅu la linion kies numero estas POZICIO. Por\n"
+" POZICIO negativa la numerado iras reen ekde la fino de la\n"
+" historio \n"
" -a aldonu la historiliniojn de la kuranta seanco al la\n"
" historidosiero\n"
" -n legu ĉiujn ankoraŭ ne legitajn liniojn el la historidosiero\n"
@@ -3782,7 +3850,7 @@ msgstr ""
# jobs -x command [args] =>
# jobs [-lnprs] [LABORINDIKO ...] aÅ­
# jobs -x KOMANDO [ARGS]
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3828,7 +3896,7 @@ msgstr ""
" Ĉe „-x‟, la elirstato de la KOMANDO."
# disown [-h] [-ar] [jobspec ...]
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3864,7 +3932,7 @@ msgstr ""
# kill -l [sigspec] =>
# kill [-s SIGSNOM | -n SIGNUM | -SIGNOM] PN | LABORINDIKO ... aÅ­
# kill -l [SIGNOM]
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3910,7 +3978,7 @@ msgstr ""
# let arg [arg ...]
# let ARG [ARG ...]
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -4000,8 +4068,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:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -4069,7 +4136,7 @@ msgstr ""
"\t\tTABELO, komencante ekde la indico 0\n"
" -d DISIG\tlegu Äis la unua signo de la disigilo DISIG (anstataÅ­\n"
"\t\tlegi Äis linifino)\n"
-" -e\t\tuzu Readline por akiri la linion en dialoga Åelo\n"
+" -e\t\tuzu Readline por akiri la linion\n"
" -i TEKSTO\tuzu TEKSTOn kiel komencan tekston por Readline\n"
" -n NSIGN\tĉesu leginte NSIGN da signoj (anstataÅ­ legi Äis\n"
"\t\tlinifino), krom se disigilo aperas pli frue\n"
@@ -4096,7 +4163,7 @@ msgstr ""
# return [n]
# return [N]
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4118,7 +4185,7 @@ msgstr ""
# set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
# set [-abefhkmnptuvxBCHP] [-o OPCINOMO] [--] [ARG ...]
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4289,7 +4356,7 @@ msgstr ""
# unset [-f] [-v] [name ...]
# unset [-f] [-v] [NOMO ...]
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4330,7 +4397,7 @@ msgstr ""
# export [-fn] [name[=value] ...] or export -p
# export [-fn] [NOMO[=VALORO] ...] aÅ­ export -p
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4366,7 +4433,7 @@ msgstr ""
# readonly [-aAf] [name[=value] ...] or readonly -p
# readonly [-aAf] [NOMO[=VALORO] ...] aÅ­ readonly -p
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4405,7 +4472,7 @@ msgstr ""
" Sukceso, krom se aperas nevalida nomo aÅ­ misa opcio."
# shift [n]
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4422,7 +4489,7 @@ msgstr ""
# source filename [arguments]
# source DOSIERNOMO [ARGUMENTOJ]
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4447,7 +4514,7 @@ msgstr ""
" DOSIERNOMO ne legeblas."
# suspend [-f]
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4473,7 +4540,7 @@ msgstr ""
# test [expr]
# test [ESPRIMO]
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4630,7 +4697,7 @@ msgstr ""
" argumento."
# [ arg... ]
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4640,7 +4707,7 @@ msgstr ""
"Ĉi tiu estas sinonimo de la primitivo „test‟; tamen la lasta\n"
" argumento devas esti „]‟ fermanta la esprimon komencitan per „[‟."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4661,7 +4728,7 @@ msgstr ""
# trap [-lp] [[arg] signal_spec ...]
# trap [-lp] [[ARG] SIGNALINDIKO ...]
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4740,7 +4807,7 @@ msgstr ""
# type [-afptP] name [name ...]
# type [-afptP] NOMO [NOMO ...]
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4798,7 +4865,8 @@ msgstr ""
# ulimit [-SHacdefilmnpqrstuvx] [limit]
# ulimit [-SHacdefilmnpqrstuvx] [LIMO]
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4829,6 +4897,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4894,7 +4963,7 @@ msgstr ""
# umask [-p] [-S] [mode]
# umask [-p] [-S] [REÄœIMO]
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4927,9 +4996,9 @@ msgstr ""
" Elirstato:\n"
" Sukceso, krom se REÄœIMO estas nevalida aÅ­ aperas misa opcio."
-# wait [-n] [id ...]
-# wait [-n] [IND ...]
-#: builtins.c:1499
+# wait [-fn] [id ...]
+# wait [-fn] [IND ...]
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4941,15 +5010,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Atendu ke laboroj finiÄu, kaj liveru elirstaton.\n"
"\n"
@@ -4959,16 +5038,19 @@ msgstr ""
" elirstaton 0. Se IND estas laborindiko, atendu ĉiujn procezojn en\n"
" la dukto de la laboro.\n"
"\n"
-" Kun la opcio „-n“: atendi finiÄon de la sekva laboro kaj liveru\n"
+" Kun la opcio „-n“: atendu finiÄon de la sekva laboro kaj liveru\n"
" Äian elirstaton.\n"
"\n"
+" Kun la opcio „-f“: se la laborregado estas Åaltita, atendu finiÄon\n"
+" de la donita IND (anstataÅ­ atendi ke Äi ÅanÄu la staton)\n"
+"\n"
" Elirstato:\n"
" Tiu de la lasta IND; malsukceso, se IND estas nevalida aÅ­ se\n"
" renkontiÄas nevalida opcio.<"
# wait [pid ...]
# wait [PN ...]
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4994,7 +5076,7 @@ msgstr ""
# for NAME [in WORDS ... ] ; do COMMANDS; done
# for NOMO [in VORTOJ ... ] ; do KOMANDOJ; done
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5018,7 +5100,7 @@ msgstr ""
# for (( exp1; exp2; exp3 )); do COMMANDS; done
# for (( ESPR1; ESPR2; ESPR3 )); do KOMANDOJ; done
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5050,7 +5132,7 @@ msgstr ""
# select NAME [in WORDS ... ;] do COMMANDS; done
# select NONO [in VORTOJ ... ;] do KOMANDOJ; done
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5087,7 +5169,7 @@ msgstr ""
# time [-p] PIPELINE
# time [-p] DUKTO
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5118,7 +5200,7 @@ msgstr ""
# case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac
# case VORTO in [ÅœABLONO [| ÅœABLONO]...) KOMANDOJ ;;]... esac
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5140,7 +5222,7 @@ msgstr ""
# [ else COMMANDS; ] fi
# if KOMANDOJ; then KOMANDOJ;[ elif KOMANDOJ; then KOMANDOJ; ]...
# [ else KOMANDOJ; ] fi
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5172,7 +5254,7 @@ msgstr ""
# while COMMANDS; do COMMANDS; done
# while KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5192,7 +5274,7 @@ msgstr ""
# until COMMANDS; do COMMANDS; done
# until KOMANDOJ; do KOMANDOJ; done
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5212,7 +5294,7 @@ msgstr ""
# coproc [NAME] command [redirections]
# coproc [NOMO] KOMANDO [ALIDIREKTADOJ]
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5236,7 +5318,7 @@ msgstr ""
# function name { COMMANDS ; } or name () { COMMANDS ; }
# function NOMO { KOMANDOJ ; } aÅ­ NOMO () { KOMANDOJ ; }
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5261,7 +5343,7 @@ msgstr ""
# grouping_braces: { COMMANDS ; }
# { KOMANDOJ ; }
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5281,7 +5363,7 @@ msgstr ""
# job_spec [&]
# LABORINDIKO [&]
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5306,12 +5388,13 @@ msgstr ""
# (( expression ))
# (( ESPRIMO ))
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5326,7 +5409,7 @@ msgstr ""
# [[ expression ]]
# [[ ESPRIMO ]]
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5377,7 +5460,7 @@ msgstr ""
# help var
# variables - Names and meanings of some shell variables
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5484,7 +5567,7 @@ msgstr ""
# pushd [-n] [+N | -N | dir]
# pushd [-n] [+N | -N | DOSIERUJO]
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5543,7 +5626,7 @@ msgstr ""
" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas."
# popd [-n] [+N | -N]
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5592,7 +5675,7 @@ msgstr ""
" Sukceso, krom se aperas misa argumento aÅ­ se cd malsukcesas."
# dirs [-clpv] [+N] [-N]
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5646,8 +5729,7 @@ msgstr ""
# shopt [-pqsu] [-o] [optname ...]
# shopt [-pqsu] [-o] [OPCINOMO ...]
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5668,8 +5750,9 @@ msgid ""
msgstr ""
"Åœaltu kaj malÅaltu Åelajn opciojn\n"
"\n"
-" ÅœanÄu la staton de ĉiu el la OPCINOMOj. Sen opciaj argumentoj,\n"
-" listigu ĉiujn Åelajn opciojn, indikante pri ĉiu el ili, ĉu Äi\n"
+" ÅœanÄu la staton de ĉiu el la OPCINOMOj. Sen opciaj argumentoj,\n"
+" listigu ĉiujn doniajn OPCINOMOjn -- aÅ­ ĉiujn Åelajn opciojn se\n"
+" neniu OPCINOMO estas donita, -- indikante pri ĉiu el ili, ĉu Äi\n"
" estas Åaltita.\n"
"\n"
" Opcioj:\n"
@@ -5685,7 +5768,7 @@ msgstr ""
# printf [-v var] format [arguments]
# printf [-v VAR] FORMATO [ARGUMENTOJ]
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5702,8 +5785,8 @@ 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"
@@ -5749,10 +5832,10 @@ msgstr ""
" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro pri skribo aÅ­\n"
" valorizo."
-# complete [-abcdefgjksuv] [-pr] [-DE] [-o OPCIO] [-A AGO] [-G GLOBÅœAB]
-# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB]
+# complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIO] [-A AGO] [-G ÅœABLONO]
+# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]
# [-P PREFIKSO] [-S SUFIKSO] [NOMO ...]
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5775,7 +5858,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5797,9 +5880,13 @@ msgstr ""
" komandoj sen specifa kompletigo-difino\n"
" -E apliku la indikitajn kompletigojn kaj agojn al vakuaj (Empty)\n"
" komandoj (la kompletigoj provotaj en vakua komandolinio)\n"
+" -I apliku la kompletigojn kaj agojn al la unua (kutime, la\n"
+" komanda) vorto\n"
"\n"
" Ĉe provo kompletigi la agoj aplikiÄas laÅ­ la ordo de majusklaj\n"
-" opcioj en la ĉi-supre listo. La opcio -D superregas la opcion -E.\n"
+" opcioj en la ĉi-supra listo. Se pluraj opcioj estas donitaj, la\n"
+" opcio „-D“ antaŭas la opcion „-E“, kaj ili ambaŭ antaŭas la\n"
+" opcion „-I“.\n"
"\n"
" Elirstato:\n"
" Sukceso, krom se misa opcio estas donita, aÅ­ eraro okazis."
@@ -5807,10 +5894,10 @@ msgstr ""
# compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat]
# [-W wordlist] [-P prefix] [-S suffix] [-X filterpat]
# [-F function] [-C command] [word]
-# compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G GLOBÅœAB]
-# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTROÅœAB]
+# compgen [-abcdefgjksuv] [-o OPCIO] [-A AGO] [-G ÅœABLONO]
+# [-W VORTLISTO] [-F FUNKCIO] [-C KOMANDO] [-X FILTRILO]
# [-P PREFIKSO] [-S SUFIKSO] [VORTO]
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5831,8 +5918,7 @@ msgstr ""
" Sukceso, krom se aperas misa opcio aÅ­ okazas eraro."
# compopt [-o|+o OPCIO] [-DE] [NOMO ...]
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5873,7 +5959,8 @@ msgstr ""
" Opcioj:\n"
" -o OPCIO Ŝaltu kompletigan OPCIOn por ĉiu NOMO\n"
" -D ÅœanÄu opciojn por la DefaÅ­lta komandokompletigo\n"
-" -E ÅœanÄu opciojn por la vakua (Empty) komandokompletigo.\n"
+" -E ÅœanÄu opciojn por la vakua (Empty) komandokompletigo\n"
+" -I ÅœanÄu la kompletigajn opciojn por la unua vorto.\n"
"\n"
" Uzante «+o» anstataÅ­ «-o» oni malÅaltas la indikitan OPCIOn.\n"
"\n"
@@ -5892,7 +5979,7 @@ msgstr ""
# [-c quantum] [array]
# mapfile [-n NOMBRILO] [-O ORIGINO] [-s NOMBRILO] [-t] [-u DN] [-C RETROVOKO]
# [-c KVANTO] [TABELO]
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5941,11 +6028,11 @@ msgstr ""
"\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"
+" -n KIOM Kopiu maksimume KIOMon da linioj. Se KIOM\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"
+" -s KIOM Ignoru KIOMon da unuaj linioj\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"
@@ -5969,7 +6056,7 @@ msgstr ""
# readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback]
# [-c quantum] [array]
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5978,3 +6065,19 @@ msgstr ""
"Legu liniojn el dosiero en tabelvariablon.\n"
"\n"
" Sinonimo de „mapfile‟."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Liveras la kuntekston de la kuranta procedurvoko.\n"
+#~ "\n"
+#~ " Sen ESPR liveras "
+
+# ifdef DEBUG ... internal_warning():
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: process %5ld (%s) in the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Nekonata signalnumero"
diff --git a/po/es.gmo b/po/es.gmo
index 7c7ec144..455535b3 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index 891d82ba..55c5cabb 100644
--- a/po/es.po
+++ b/po/es.po
@@ -1,97 +1,102 @@
# Mensajes en español para GNU bash
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2018, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Cristian Othón Martínez Vera <cfuga@cfuga.mx>, 2000 - 2011.
# Francisco Javier Serrador <fserrador@gmail.com>
-# Antonio Ceballos Roa <aceballos@gmail.com>, 2018
+# Antonio Ceballos Roa <aceballos@gmail.com>, 2018, 2019
#
msgid ""
msgstr ""
-"Project-Id-Version: GNU bash 4.4\n"
+"Project-Id-Version: GNU bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-06-04 22:22+0200\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-08-18 10:08+0200\n"
"Last-Translator: Antonio Ceballos Roa <aceballos@gmail.com>\n"
"Language-Team: Spanish <es@tp.org.es>\n"
+"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: es\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "subíndice de matriz incorrecto"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: se elimina el atributo nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: no se puede convertir la matriz indexada en asociativa"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: clave de matriz asociativa no válida"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, 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:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: no se puede crear: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, 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:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "no hay un `%c' que cierre en %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un «:» separador"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': no se puede borrar la asignación"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansión de llaves: no se puede asignar memoria a %s"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "expansión de llaves: fallo al asignar memoria a %d elementos"
+msgstr "expansión de llaves: fallo al asignar memoria a %u elementos"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansión de llaves: fallo al asignar memoria a «%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nombre de alias inválido"
@@ -110,22 +115,22 @@ msgstr "`%s': nombre de combinación de teclas inválido"
msgid "%s: cannot read: %s"
msgstr "%s: no se puede leer: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': nombre de función desconocido"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s se puede invocar vía "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': no se puede borrar la asignación"
@@ -139,28 +144,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "solo tiene significado en un bucle `for', `while', o `until'"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Devuelve el contexto de la llamada a subrutina actual.\n"
" \n"
-" Sin EXPR, devuelve "
+" Sin EXPR, devuelve \"$linea $nombrefichero\". Con EXPR, devuelve\n"
+" \"$linea $subrutina $nombrefichero\"; esta información adicional\n"
+" se puede usar para proporcionar un volcado de pila.\n"
+" \n"
+" El valor de EXPR indica cuántos marcos de llamada hay que retroceder\n"
+" antes del actual; el marco superior es el marco 0.\n"
+" \n"
+" Estado de Salida:\n"
+" Devuelve 0 a menos que el shell no esté ejecutando una función de shell\n"
+" o EXPR sea inválida."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME no está definido"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "demasiados argumentos"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "directorio nulo"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD no está establecido"
@@ -179,7 +199,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: modo de empleo: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: la opción requiere un argumento"
@@ -194,7 +214,7 @@ msgstr "%s: se requiere un argumento numérico"
msgid "%s: not found"
msgstr "%s: no encontrado"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: opción inválida"
@@ -204,7 +224,7 @@ msgstr "%s: opción inválida"
msgid "%s: invalid option name"
msgstr "%s: nombre de opción inválido"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': no es un identificador válido"
@@ -217,7 +237,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número hexadecimal inválido"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "número inválido"
@@ -293,75 +313,85 @@ msgstr "error al establecer los atributos de la terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "error al obtener los atributos de la terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificación de trabajo ambigua"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "ayuda no disponible en esta versión"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: no se puede borrar: %s es de solo lectura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: no se puede borrar"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nombre de acción inválido"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: no hay especificación para completado"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
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:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "sólo se puede usar dentro de una función"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referencia variable no puede ser una matriz"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: no se permiten las autoreferencias a variables nameref"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referencia de nombre circular"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': nombre variable inválido para referencia de nombre"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "no se puede usar `-f' para hacer funciones"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: función de sólo lectura"
@@ -376,7 +406,7 @@ msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: no se pueden destruir variables de matriz de esta forma"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: no se puede convertir una matriz asociativa a indexada"
@@ -390,28 +420,33 @@ msgstr "la carga dinámica no está disponible"
msgid "cannot open shared object %s: %s"
msgstr "no se puede abrir el objeto compartido %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: no cargado dinámicamente"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
"función de carga para %s devuelve fallo (%d): no se ha efectuado la carga"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: no cargado dinámicamente"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: no se puede borrar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: es un directorio"
@@ -428,12 +463,12 @@ msgstr "%s: el fichero es demasiado grande"
# file=fichero. archive=archivo. Si no, es imposible traducir tar. sv
# De acuerdo. Corregido en todo el fichero. cfuga
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: no se puede ejecutar el fichero binario"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: no se puede ejecutar: %s"
@@ -457,15 +492,16 @@ msgstr "Hay trabajos detenidos.\n"
msgid "There are running jobs.\n"
msgstr "Hay trabajos en ejecución.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "no se ha encontrado ninguna orden"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "especificación de historia"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: no se puede abrir el fichero temporal: %s"
@@ -493,12 +529,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "coinc\torden\n"
@@ -509,13 +545,19 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Órdenes de shell que coinciden con la palabra clave`"
msgstr[1] "Órdenes de shell que coinciden con las palabras claves`"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, 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:224
#, c-format
@@ -543,21 +585,21 @@ msgstr ""
"Un asterisco (*) junto a un nombre significa que la orden está desactivada.\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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posición en la historia"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: marca de tiempo inválida"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: falló la expansión de la historia"
@@ -580,7 +622,7 @@ msgstr "%s: los argumentos deben ser IDs de procesos o trabajos"
msgid "Unknown error"
msgstr "Error desconocido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "se esperaba una expresión"
@@ -589,12 +631,12 @@ msgstr "se esperaba una expresión"
msgid "%s: not an indexed array"
msgstr "%s: no es una matriz indexada"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificación de descriptor de fichero inválida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descriptor de fichero inválido: %s"
@@ -622,36 +664,36 @@ msgstr "nombre de variable matriz vacío"
msgid "array variable support required"
msgstr "se requiere el soporte de variable de matriz"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': falta el carácter de formato"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificación de formato de tiempo inválida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': carácter de formato inválido"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problema con el análisis del formato: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "falta el dígito hexadecimal para \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta el dígito unicode para \\%c"
@@ -807,12 +849,12 @@ msgstr ""
" \n"
" La orden interna `dirs' muestra la pila de directorios."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificación del tiempo de expiración inválida"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "error de lectura: %d: %s"
@@ -822,21 +864,11 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"sólo se puede usar `return' desde una función o un script leído con `source'"
-#: builtins/set.def:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: no se puede borrar"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: no se puede borrar: %s es de solo lectura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: no es una variable de matriz"
@@ -851,7 +883,7 @@ msgstr "%s: no es una función"
msgid "%s: cannot export"
msgstr "%s: no se puede exportar"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "contador de desplazamiento"
@@ -859,7 +891,7 @@ msgstr "contador de desplazamiento"
msgid "cannot set and unset shell options simultaneously"
msgstr "no se pueden activar y desactivar opciones del shell simultáneamente"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nombre de opción de shell inválido"
@@ -916,26 +948,26 @@ msgstr "%s is %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s está asociado (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: límite de argumento inválido"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': orden incorrecta"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: no se puede obtener el límite: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "límite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: no se puede modificar el límite: %s"
@@ -995,78 +1027,77 @@ msgstr "salto erróneo"
msgid "%s: unbound variable"
msgstr "%s: variable sin asignar"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': carácter de formato inválido"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] aún existe"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "error de tubería"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: orden no encontrada"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, 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:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: no se puede ejecutar fichero binario: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': es una orden interna especial"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no se puede duplicar el df %d al df %d"
@@ -1088,29 +1119,28 @@ msgid "attempted assignment to non-variable"
msgstr "se intentó asignar a algo que no es una variable"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "error sintáctico en la expresión"
+msgstr "error sintáctico en asignación de variable"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "división por 0"
# token en bison fue traducido como terminal. ¿Lo traducimos igual aquí
# o lo dejamos como 'unidad' o 'elemento'? cfuga
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "defecto: elemento de asignación de expresión erróneo"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "se esperaba `:' para la expresión condicional"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponente menor que 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"se esperaba un identificador después del pre-incremento o pre-decremento"
@@ -1118,41 +1148,46 @@ msgstr ""
# falta , singular em+
# mmmh, puede faltar más de un paréntesis cfuga
# tiene razón Enrique, es singular. cfuga
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "falta un `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "error sintáctico: se esperaba un operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "error sintáctico: operador aritmético inválido"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (el elemento de error es \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: cuenta de líneas inválida"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valor demasiado grande para la base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: error de expresión\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: no se puede acceder a los directorios padre"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "no se puede reestablecer el modo nodelay para el df %d"
@@ -1173,163 +1208,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: tubería de pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "borrando el trabajo detenido %d con grupo de proceso %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: el proceso %5ld (%s) en the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: no existe tal pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Señal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Hecho"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Detenido"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Detenido(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Ejecutando"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Hecho(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Salida %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Estado desconocido"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(`core' generado) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (da: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid hijo (%ld a %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: No hay un registro del proceso %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: el trabajo %d está detenido"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: no existe ese trabajo"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: el trabajo ha terminado"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: el trabajo %d ya está en segundo plano"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: línea %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (`core' generado)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir ahora: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_jobs_control: falló getpgrp"
+msgstr "initialize_job_control: falló getpgrp"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_jobs_control: disciplina de línea"
+msgstr "initialize_job_control: no hay control de trabajos en segundo plano"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
-msgstr "initialize_jobs_control: disciplina de línea"
+msgstr "initialize_job_control: disciplina de línea"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
-msgstr "initialize_jobs_control: setpgid"
+msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "no se puede establecer el grupo de proceso de terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "no hay control de trabajos en este shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: falló la aserción: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1338,42 +1382,54 @@ msgstr ""
"\r\n"
"malloc: %s:%d: aserción arruinada\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "desconocido"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloque en la lista libre sobreescrito"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: se llamó con un argumento de bloque previamente liberado"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: se llamó con un argumento de bloque sin asignar"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
"free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+"free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
"free: los tamaños de los fragmentos del inicio y del final son diferentes"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: se llamó con un argumento de bloque sin asignar"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes"
@@ -1415,22 +1471,22 @@ msgstr "%s: especificación de ruta de red errónea"
msgid "network operations not supported"
msgstr "no hay soporte para operaciones de red"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: no se puede cambiar el local (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: no se puede cambiar el local (%s): %s"
@@ -1479,7 +1535,7 @@ 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:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1488,75 +1544,75 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) excede TAMAÑO_MAX (%lu): línea "
"truncada"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "número máximo de documentos en «here--document» excedido"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado mientras se buscaba un `%c' coincidente"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado mientras se buscaba `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "error sintáctico en la expresión condicional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "elemento inesperado `%s', se esperaba `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "se esperaba `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para el operador unario condicional"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para el operador unario condicional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "elemento inesperado `%s', se esperaba un operador binario condicional"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "se esperaba un operador binario condicional"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para el operador binario condicional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para el operador binario condicional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "elemento inesperado `%c' en la orden condicional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "elemento inesperado `%s' en la orden condicional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "elemento inesperado %d en la orden condicional"
@@ -1567,12 +1623,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:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error sintáctico cerca del elemento inesperado `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "error sintáctico cerca de `%s'"
@@ -1581,20 +1637,20 @@ msgstr "error sintáctico cerca de `%s'"
# no se esperaba el final de la línea em+
# Ojo, que end of file es fin de fichero, no de línea. sv
# Se hicieron ambos cambios. cfuga
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "error sintáctico: no se esperaba el final del fichero"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "error sintáctico"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Utilice \"%s\" para dejar el shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperado mientras se buscaba un `)' coincidente"
@@ -1637,75 +1693,75 @@ msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': carácter de formato inválido"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descriptor de fichero fuera de rango"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamiento ambiguo"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: no se puede sobreescribir un fichero existente"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restringido: no se puede redirigir la salida"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: no se puede asignar el fd a la variable"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "error de redirección: no se puede duplicar el df"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "¡no se puede encontrar /tmp, crear por favor!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp debe ser un nombre de directorio válido"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "modo de impresión bonita desactivado en shells interactivos"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opción inválida"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "no se puede establecer el uid %d: uid efectivo %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "no se puede establecer gid a %d: gid efectivo %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "no puede ejecutar el depurador; modo depurado desactivado"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: es un directorio"
@@ -1713,11 +1769,11 @@ msgstr "%s: es un directorio"
# Yo pondría "no tengo ningún nombre". sv
# Revisé el código fuente de bash. Es un mensaje de error cuando no se
# encuentra el nombre del usuario que ejecuta el shell. cfuga
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "¡No tengo nombre de usuario!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versión %s-(%s)\n"
@@ -1727,7 +1783,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:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1736,102 +1792,102 @@ msgstr ""
"Modo de empleo:\t%s [opción GNU larga] [opción] ...\n"
"\t%s [opción GNU larga] [opción] fichero de shell ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Opciones GNU largas:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opciones del shell:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD o -c orden o -O opción_shopt\t\t(sólo invocación)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s o -o opción\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Utilice la orden `bashbug' para reportar defectos.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "página inicial bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Ayuda general utilizando software GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operación inválida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Señal ambigua"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Colgar"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrumpir"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Salir"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instrucción ilegal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT rastreo/captura"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "instrucción ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "instrucción EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Matado"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Error del bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Violación de segmento"
@@ -1839,86 +1895,86 @@ msgstr "Violación de segmento"
# Es una llamada a una función del sistema em+
# De acuerdo, pero lo que está mal es la forma de invocar la
# llamada a la función del sistema, no la llamada en sí cfuga
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Llamada al sistema errónea"
# (pipe) no, por favor. Esto ya está traducido en libc, así que a estas
# alturas, la gente ya debería saber qué es eso de la tubería. sv
# De acuerdo. cfuga
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Tubería rota"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Temporizador"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condición de E/S urgente"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Detenido (señal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continúa"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "El proceso hijo ha muerto o está parado"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Detenido (entrada por terminal)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Detenido (salida por terminal)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "E/S listas"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Límite de CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Límite de ficheros"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarma (entorno)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Ventana cambiada"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Bloqueo de registro"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Señal de usuario 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Señal de usuario 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "entrada de datos HFT pendiente"
@@ -1926,137 +1982,133 @@ msgstr "entrada de datos HFT pendiente"
# Suscribo lo anterior. falla suena muy raro.
# Yo lo pondría además al revés: fallo de energía inminente. sv
# Me gusta como lo sugieres. Cambio hecho. cfuga
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "fallo de energía inminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "caída del sistema inminente"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrando el proceso a otra CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "error de programación"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "el modo monitor HFT ha sido concedido"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "el modo monitor HTF ha sido retirado"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "la secuencia de sonido HFT ha sido completada"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Solicitud de información"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Señal Desconocida #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Señal Desconocida #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, 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:3231
+#: subst.c:3281
#, 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:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "no se puede crear la tubería para la sustitución del proceso"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "no se puede crear un proceso hijo para la sustitución del proceso"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "no se puede abrir la tubería llamada %s para lectura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "no se puede abrir la tubería llamada %s para escritura"
-#: subst.c:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "sustitución de orden: se ignora byte nulo en la entrada"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "no se puede crear la tubería para la sustitución de la orden"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "no se puede crear un proceso hijo para la sustitución de la orden"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: no se puede duplicar la tubería como df 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nombre de variable inválido para referencia de nombre"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansión indirecta inválida"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nombre de variable inválido"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: parámetro nulo o no establecido"
+msgstr "%s: parámetro no establecido"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parámetro nulo o no establecido"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expresión de subcadena < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: sustitución errónea"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: no se puede asignar de esta forma"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2064,12 +2116,12 @@ msgstr ""
"versiones futuras del intérprete obligarán la evaluación como una "
"sustitución aritmética"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sustitución errónea: no hay una \"`\" que cierre en %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "no hay coincidencia: %s"
@@ -2092,16 +2144,16 @@ msgstr "`)' esperado"
msgid "`)' expected, found %s"
msgstr "se esperaba `)', se encontró %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: se esperaba un operador unario"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: se esperaba un operador binario"
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: se esperaba un operador unario"
+
# Singular em+
# Puede faltar más de un ] cfuga
# Cierto, pero al menos uno seguro que falta.
@@ -2109,25 +2161,32 @@ 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:875
+#: test.c:881
msgid "missing `]'"
msgstr "falta un `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "error sintáctico: `;' inesperado"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "número de señal inválido"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)"
+msgstr ""
+"manejador de capturas: se ha excedido el nivel máximo de manejadores de "
+"capturas (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2135,87 +2194,87 @@ msgstr ""
"run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí "
"mismo"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: señal errónea %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error al importar la definición de la función para `%s'"
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variable quizá no es valor asignado"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: asignando entero a nombre referencia"
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s tiene exportstr nulo"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter inválido %d en exportstr para %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "no hay `=' en exportstr para %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: no es un contexto global_variables"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: no se puede abrir como FICHERO"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidad fuera del rango"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2304,11 +2363,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] orden [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrtux] [-p] [nombre[=valor] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] nombre[=valor] ..."
#: builtins.c:82
@@ -2332,11 +2393,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts cadena_opciones nombre [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nombre] [orden [argumentos ...]] [redirección ...]"
#: builtins.c:100
@@ -2470,8 +2533,8 @@ msgstr "umask [-p] [-S] [modo]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2565,26 +2628,26 @@ msgstr "printf [-v var] formato [argumentos]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o opción] [-A acción] [-G patglob] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opción] [-A acción] [-G patglob] [-"
"W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S "
"sufijo] [nombre ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o opción] [-DE] [nombre ...]"
+msgstr "compopt [-o|+o opción] [-DEI] [nombre ...]"
#: builtins.c:242
msgid ""
@@ -2595,13 +2658,12 @@ msgstr ""
"llamada] [-c quantum] [matriz]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c "
-"quantum] [matriz]"
+"readarray [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C "
+"llamada] [-c quantum] [matriz]"
# Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv
# Lo mismo de antes: el alias es expandido -> el alias se expande. sv
@@ -2781,7 +2843,6 @@ msgstr ""
" El estado de salida es 0 a menos que N no sea mayor o igual a 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -3038,6 +3099,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3082,10 +3145,10 @@ msgstr ""
" -a\testablece NOMBREs como matrices indexadas (si se admiten)\n"
" -A\testablece NOMBREs como matrices asociativas (si se admiten)\n"
" -i\testablece NOMBREs con el atributo `integer'\n"
-" -l\tconvierte NOMBREs a minúsculas en la asignación\n"
+" -l\tconvierte el valor de cada NOMBRE a minúsculas en la asignación\n"
" -r\tcrea NOMBREs como de sólo lectura\n"
" -t\tcrea NOMBREs con el atributo `trace'\n"
-" -u\tconvierte NOMBREs a mayúsculas en la asignación\n"
+" -u\tconvierte el valor de cada NOMBRE a mayúsculas en la asignación\n"
" -x\tcrea NOMBREs para exportar\n"
" \n"
" Si se usa `+' en lugar de `-', se desactiva el atributo dado.\n"
@@ -3101,7 +3164,7 @@ msgstr ""
" Devuelve correcto a menos que se dé una opción inválida o\n"
" suceda un error de asignación de variable."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3111,7 +3174,7 @@ msgstr ""
" \n"
" Sinónimo de `declare'. Vea `help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3137,8 +3200,7 @@ msgstr ""
" Devuelve correcto a menos que se dé una opción inválida, suceda\n"
" un error de asignación, o el shell no esté ejecutando una función."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3207,11 +3269,16 @@ msgstr ""
" \t\tde 0 a 3 dígitos octales\n"
" \\xHH\tel de ocho bits cuyo valor es HH (hexadecimal). HH\n"
" \t\tpuede ser de uno o dos dígitos hexadecimales\n"
+" \\uHHHH\tcarácter Unicode cuyo valor es el valor hexadecimal HHHH.\n"
+" \t\tHHHH puede tener de uno a cuatro dígitos hexadecimales.\n"
+" \\UHHHHHHHH carácter Unicode cuyo valor es el valor hexadecimal "
+"HHHHHHHH.\n"
+" \t\tHHHHHHHH puede tener de uno a ocho dígitos hexadecimales.\n"
" \n"
" Estado de Salida:\n"
" Devuelve correcto a menos que suceda un error de escritura."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3233,7 +3300,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que suceda un error de escritura."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3289,7 +3356,7 @@ msgstr ""
" Devuelve correcto a menos que NOMBRE no sea una orden interna del shell\n"
" o suceda un error."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3314,7 +3381,8 @@ msgstr ""
# en una de dos formas -> en una de las dos formas siguientes em+
# dar argumentos -> especificar em+
# De acuerdo. cfuga
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3347,8 +3415,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3394,7 +3462,7 @@ msgstr ""
" Devuelve correcto si se encuentra una opción; falla si se encuentra\n"
" el final de las opciones o sucede un error."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3435,7 +3503,7 @@ msgstr ""
" Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n"
" error de redirección."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3448,7 +3516,7 @@ msgstr ""
"salida\n"
" es el mismo de la última orden ejecutada."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3461,7 +3529,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3517,7 +3585,7 @@ msgstr ""
"error,\n"
" es diferente de cero."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3539,7 +3607,7 @@ msgstr ""
" El estado de la orden ubicada en primer plano, o falla si sucede un "
"error."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3562,7 +3630,7 @@ msgstr ""
" Devuelve correcto a menos que el control de trabajos no esté activado o\n"
" suceda un error."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3607,8 +3675,7 @@ msgstr ""
" Devuelve correcto a menos que no se encuentre NOMBRE o se proporcione\n"
" una opción inválida."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3649,8 +3716,7 @@ msgstr ""
" Devuelve correcto a menos que no se encuentre PATRÓN o se proporcione\n"
" una opción inválida."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3692,7 +3758,9 @@ msgstr ""
" \n"
" Opciones:\n"
" -c\tborra la lista de historia eliminando todas las entradas\n"
-" -d despl\tborra la entrada de la historia en la posición DESPL\n"
+" -d despl\tborra la entrada de la historia en la posición DESPL. Los\n"
+" \t\tdesplazamientos negativos se cuentan hacia atrás desde el final de\n"
+" \t\tla lista de historia\n"
" \n"
" -a\tagrega las líneas de historia de esta sesión al fichero de "
"historia\n"
@@ -3720,7 +3788,7 @@ msgstr ""
" Devuelve correcto a no ser que se dé una opción inválida u ocurra un "
"error."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3765,7 +3833,7 @@ msgstr ""
" Devuelve correcto a menos que se dé una opción inválida o suceda un\n"
" error. Si se usa -x, devuelve el estado de salida de la ORDEN."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3796,7 +3864,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcionen una opción o\n"
" un IDTRABAJO inválida."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3848,7 +3916,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:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3935,8 +4003,7 @@ msgstr ""
" Si el último ARGumento se evalúa como 0, ‘let’ devuelve 1; de\n"
" otra forma, ‘let’ devuelve 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -4005,7 +4072,7 @@ msgstr ""
" \t\tla variable matricial MATRIZ, empezando en cero\n"
" -d delim\tcontinúa hasta que se lea el primer carácter de DELIM,\n"
" \t\ten lugar de línea nueva\n"
-" -e\tusa Readline para obtener la línea en un shell interactivo\n"
+" -e\tusa Readline para obtener la línea\n"
" -i texto\tEmplea el TEXTO como el texto inicial para Readline\n"
" -n ncars\tregresa tras leer NCARS caracteres en lugar de\n"
" \t\tesperar una línea nueva, pero honra a un delimitador si\n"
@@ -4032,7 +4099,7 @@ msgstr ""
" línea, el tiempo de lectura se agote, o se proporcione un descriptor\n"
" de fichero inválido como el argumento de -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4054,7 +4121,7 @@ msgstr ""
" Devuelve N, o falla si el shell no está ejecutando una función o un "
"script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4233,7 +4300,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que se proporcione una opción inválida."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4273,7 +4340,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" un NOMBRE sea de sólo lectura."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4309,7 +4376,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o que\n"
" NOMBRE sea inválido."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4350,7 +4417,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" el NOMBRE sea inválido."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4368,7 +4435,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que N sea negativo o mayor que $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4393,7 +4460,7 @@ msgstr ""
" Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n"
" no se puede leer el FICHERO."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4419,7 +4486,7 @@ msgstr ""
" Devuelve correcto a menos que no esté activo el control de trabajos o\n"
" suceda un error."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4586,7 +4653,7 @@ msgstr ""
" Devuelve correcto si EXPR evalúa a verdadero; falla si EXPR evalúa a\n"
" falso o se proporciona un argumento inválido."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4598,7 +4665,7 @@ msgstr ""
" Este es un sinónimo para la orden interna \"test\", pero el último\n"
" argumento debe ser un `]' literal, que concuerde con el `[' inicial."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4618,7 +4685,7 @@ msgstr ""
" Estado de Salida:\n"
" Siempre correcto."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4701,7 +4768,7 @@ msgstr ""
# No he visto que este fichero incluya la posibilidad de traducir las
# palabras que muestra `type -t'. Por esta razón, se dejan en inglés. cfuga
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4757,7 +4824,8 @@ msgstr ""
" Devuelve correcto si se encuentran todos los NOMBREs; falla si alguno\n"
" no se encuentra."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4788,6 +4856,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4856,7 +4925,7 @@ msgstr ""
"suceda\n"
" un error."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4890,7 +4959,7 @@ msgstr ""
" Devuelve correcto a menos que el MODO sea inválido o se proporcione\n"
" una opción inválida."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4902,15 +4971,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Espera la terminación del trabajo y devuelve el estado de salida.\n"
" \n"
@@ -4921,11 +5000,20 @@ msgstr ""
" y el estado de devolución es cero. Si ID es una especificación de\n"
" trabajo, espera a todos los procesos en la cola de trabajos.\n"
" \n"
+" Si se proporciona la opción -n, espera a que termine el siguiente "
+"trabajo\n"
+" y devuelve su estado de salida.\n"
+" \n"
+" Si se proporciona la opción -f y el control de trabajos está activado,\n"
+" espera a que termine el ID especificado, en vez de esperar a que cambie "
+"de\n"
+" estado.\n"
+" \n"
" Estado de Salida:\n"
" Devuelve el estado de ID; falla si ID es inválido o se proporciona una\n"
" opción inválida."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4951,7 +5039,7 @@ msgstr ""
"proporciona\n"
" una opción inválida."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4973,7 +5061,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5003,7 +5091,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5040,7 +5128,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5067,7 +5155,7 @@ msgstr ""
" Estado de Salida:\n"
" El estado de devolución es el estado de devolución de la TUBERÃA."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5085,7 +5173,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5120,7 +5208,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5138,7 +5226,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5156,7 +5244,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5179,7 +5267,7 @@ msgstr ""
" Estado de Salida:\n"
" La orden «coproc» devuelve un estado de salida de 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5202,7 +5290,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve correcto a menos que NOMBRE sea de sólo lectura."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5220,7 +5308,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado de la última orden ejecutada."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5245,12 +5333,13 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve el estado del trabajo reiniciado."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5263,7 +5352,7 @@ msgstr ""
" Estado de Salida:\n"
" Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5316,7 +5405,7 @@ msgstr ""
" Estado de Salida:\n"
" 0 o 1 dependiendo del valor de la EXPRESIÓN."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5431,7 +5520,7 @@ msgstr ""
" \t\tutilizados para decidir qué órdenes se deben guardar en\n"
" \t\tel listado histórico.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5492,7 +5581,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione un argumento\n"
" inválido o falle el cambio de directorio."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5546,7 +5635,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione un\n"
" argumento inválido o falle el cambio de directorio."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5601,8 +5690,7 @@ msgstr ""
" Devuelve correcto, a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5624,8 +5712,10 @@ msgstr ""
"Activa y desactiva opciones de shell.\n"
" \n"
" Cambia la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n"
-" alguna opción como argumento, muestra todas las opciones de shell con\n"
-" una indicación si está activa o no.\n"
+" ninguna opción como argumento, muestra cada NOMBRE_OPCIÓN\n"
+" proporcionado o todas las opciones de shell si no se especifica\n"
+" ningún NOMBRE_OPCIÓN, con una indicación de si está activa o no\n"
+" cada una.\n"
" \n"
" Opciones:\n"
" -o\trestringe NOMBRE_OPCIÓN a aquellos definidos con `set -o'\n"
@@ -5638,7 +5728,7 @@ msgstr ""
" Devuelve correcto si se activa NOMBRE_OPCIÓN; falla si se proporciona\n"
" una opción inválida o NOMBRE_OPCIÓN está desactivado."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5655,8 +5745,8 @@ 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"
@@ -5710,7 +5800,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error de escritura o de asignación."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5733,7 +5823,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5758,16 +5848,22 @@ msgstr ""
" \t\tsin ninguna especificación de completado definida\n"
" -E\taplica los completados y acciones para órdenes \"vacías\" --\n"
" \t\tcuando se intenta completar en una línea en blanco\n"
+" -I\taplica los completados a acciones a la palabra incial "
+"(habitualmente\n"
+" \t\tla orden)\n"
" \n"
" Cuando se intenta el completado, las acciones se aplican en el orden\n"
-" en que se listan las opciones de letra mayúscula antes indicadas. La\n"
-" opción -D tiene precedencia sobre -E.\n"
+" en que se listan las opciones de letra mayúscula antes indicadas. Si "
+"se\n"
+" proporcionan varias opciones, la opción -D tiene precedencia sobre -E "
+"y,\n"
+" ambas, sobre -I.\n"
" \n"
" Estado de Salida:\n"
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5789,8 +5885,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" suceda un error."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5832,6 +5927,7 @@ msgstr ""
" \t-o opción\tEstablece la opción de completado OPCIÓN para cada NOMBRE\n"
" \t-D\t\tCambia las opciones para el completado de orden \"por defecto\"\n"
" \t-E\t\tCambia las opciones para el completado de orden \"vacía\"\n"
+" \t-I\t\tCambia las opciones para el completado en la palabra inicial\n"
" \n"
" Si se usa `+o' en lugar de `-o', desactiva la opción especificada.\n"
" \n"
@@ -5847,7 +5943,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" NOMBRE no tenga una especificación de completado definida."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5902,7 +5998,7 @@ msgstr ""
" -O origen\tComienza a asignar a MATRIZ en el índice ORIGEN. El\n"
" \t\t\tíndice por defecto es 0.\n"
" -s cuenta\tDescarta las primeras CUENTA líneas leídas.\n"
-" -t\tBorra el DELIM final de cada línea leída (nuea línea por "
+" -t\tBorra el DELIM final de cada línea leída (nueva línea por "
"defecto).\n"
" -u df\tLee líneas del descriptor de fichero DF en lugar de la\n"
" \t\t\tentrada estándar.\n"
@@ -5924,7 +6020,7 @@ msgstr ""
" Devuelve correcto a menos que se proporcione una opción inválida o\n"
" la MATRIZ sea de sólo lectura o no sea una matriz indexada."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5933,3 +6029,18 @@ msgstr ""
"Lee líneas de un fichero en una variable de matriz.\n"
" \n"
" Sinónimo de `mapfile'."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Devuelve el contexto de la llamada a subrutina actual.\n"
+#~ " \n"
+#~ " Sin EXPR, devuelve "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: el proceso %5ld (%s) en the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Señal Desconocida #"
diff --git a/po/et.gmo b/po/et.gmo
index 018c11f3..c0181254 100644
--- a/po/et.gmo
+++ b/po/et.gmo
Binary files differ
diff --git a/po/et.po b/po/et.po
index ccd3c7a9..58f0e27e 100644
--- a/po/et.po
+++ b/po/et.po
@@ -6,86 +6,91 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 3.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2006-11-11 16:38+0200\n"
"Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
"Language-Team: Estonian <et@li.org>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "vigane massiivi indeks"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, fuzzy, c-format
msgid "%s: invalid associative array key"
msgstr "%s: vigane tegevuse nimi"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: mitte-numbrilisele indeksile ei saa omistada"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ei saa luua: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: esimine mitte-tühemik sümbol pole `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "sulgev `%c' puudub %s sees"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: puudub eraldav koolon"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': ei saa lahti siduda"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "%s: vigane tegevuse nimi"
@@ -104,22 +109,22 @@ msgstr ""
msgid "%s: cannot read: %s"
msgstr "%s: ei saa lugeda: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': tundmatu funktsiooni nimi"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s saab kasutada läbi "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': ei saa lahti siduda"
@@ -133,27 +138,31 @@ 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:136
-#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
-msgstr "Tagastab jooksva alamprotseduuri konteksti."
+" 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."
+msgstr ""
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME pole seatud"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "liiga palju argumente"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "teist kataloogi pole"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD pole seatud"
@@ -172,7 +181,7 @@ msgstr "%s: hoiatus: "
msgid "%s: usage: "
msgstr "%s: hoiatus: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: võti nõuab argumenti"
@@ -187,7 +196,7 @@ msgstr "%s: nõutakse numbrilist argumenti"
msgid "%s: not found"
msgstr "%s: ei leitud"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: vigane võti"
@@ -197,7 +206,7 @@ msgstr "%s: vigane võti"
msgid "%s: invalid option name"
msgstr "%s: vigane võtme nimi"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': ei ole lubatud identifikaator"
@@ -212,7 +221,7 @@ msgstr "vigane signaali number"
msgid "invalid hex number"
msgstr "vigane number"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "vigane number"
@@ -288,73 +297,83 @@ msgstr ""
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: segane töö"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: ei saa eemaldada"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: vigane tegevuse nimi"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "saab kasutada ainult funktsioonis"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "võtit `-f' ei saa funktsiooni loomiseks kasutada"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funktsioon ei ole muudetav"
@@ -369,7 +388,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: masiivi muutujaid ei saa nii kustutada"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -383,27 +402,32 @@ msgstr "dünaamilist laadimist et saa kasutada"
msgid "cannot open shared object %s: %s"
msgstr "jagatud objekti %s ei saa avada: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "%s puudub jagatud objektis %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: pole dünaamiliselt laetud"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: pole dünaamiliselt laetud"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ei saa kustutada: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: on kataloog"
@@ -418,12 +442,12 @@ msgstr "%s: ei ole tavaline fail"
msgid "%s: file is too large"
msgstr "%s: fail on liiga suur"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kahendfaili ei õnnestu käivitada"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: ei saa käivitada: %s"
@@ -447,15 +471,16 @@ msgstr "Teil on peatatud töid.\n"
msgid "There are running jobs.\n"
msgstr "Teil on peatatud töid.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "käsku ei ole"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr ""
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: ajutist faili ei saa avada: %s"
@@ -483,12 +508,12 @@ msgstr "%s: võti nõuab argumenti -- %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:266
+#: builtins/hash.def:267
#, fuzzy, c-format
msgid "hits\tcommand\n"
msgstr "viimane käsklus: %s\n"
@@ -499,6 +524,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] ""
msgstr[1] ""
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -522,21 +553,21 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr ""
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: vigane võtme nimi"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr ""
@@ -559,7 +590,7 @@ msgstr ""
msgid "Unknown error"
msgstr "Tundmatu viga"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "oodati avaldist"
@@ -568,12 +599,12 @@ msgstr "oodati avaldist"
msgid "%s: not an indexed array"
msgstr "%s: pole massiiv"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
@@ -602,36 +633,36 @@ msgstr "%s: pole massiiv"
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: vigane signaali spetsifikatsioon"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, fuzzy, c-format
msgid "warning: %s: %s"
msgstr "%s: hoiatus: "
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
@@ -727,12 +758,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "viga lugemisel: %d: %s"
@@ -741,21 +772,11 @@ msgstr "viga lugemisel: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr ""
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: ei saa eemaldada"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: ei saa eemaldada: %s on ainult lugemiseks"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: pole massiiv"
@@ -770,7 +791,7 @@ msgstr "%s: ei ole funktsioon"
msgid "%s: cannot export"
msgstr "%s: ei saa eemaldada"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift arv"
@@ -778,7 +799,7 @@ msgstr "shift arv"
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -835,26 +856,26 @@ msgstr "%s on %s\n"
msgid "%s is hashed (%s)\n"
msgstr ""
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr ""
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': halb käsklus"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ei õnnestu lugeda piirangut: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr ""
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ei õnnestu muuta piirangut: %s"
@@ -914,77 +935,76 @@ msgstr ""
msgid "%s: unbound variable"
msgstr "%s: sidumata muutuja"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
#, fuzzy
msgid "pipe error"
msgstr "kirjutamise viga: %s"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: piiratud: käskudes ei saa kasutada sümboleid `/'"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: käsku ei ole"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: halb interpretaator"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kahendfaili ei õnnestu käivitada"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s on shelli sisekäsk\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1010,61 +1030,66 @@ msgstr "üritati omistada mitte-muutujale"
msgid "syntax error in variable assignment"
msgstr "süntaksi viga avaldises"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "nulliga jagamine"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr ""
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr ""
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponent on väiksem kui 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "puudub `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "süntaksi viga: oodati operandi"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "süntaksi viga: vigane aritmeetiline operaator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "vigane aritmeetiline baas"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: vigane võti"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "väärtus on baasiks liiga suur"
-#: expr.c:1637
+#: expr.c:1647
#, fuzzy, c-format
msgid "%s: expression error\n"
msgstr "%s: oodati täisarvude avaldist"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: vanemkataloogidele ei ole juurdepääsu"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1079,201 +1104,219 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr ""
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:1084
+#: jobs.c:906
#, c-format
-msgid "forked pid %d appears in running job %d"
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1203
+#: jobs.c:959
#, c-format
-msgid "deleting stopped job %d with process group %ld"
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
+#, c-format
+msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1307
+#: jobs.c:1402
#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
+msgid "deleting stopped job %d with process group %ld"
msgstr ""
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid puudub"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr ""
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr ""
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr ""
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr ""
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr ""
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr ""
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: töö %d on peatatud"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: sellist tööd pole"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: töö on lõpetatud"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: töö %d on juba taustal"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, fuzzy, c-format
msgid "%s: line %d: "
msgstr "%s: hoiatus: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr ""
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
#, fuzzy
msgid "unknown"
msgstr "%s: tundmatu masin"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1315,22 +1358,22 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1376,110 +1419,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr ""
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "süntaksi viga tingimuslikus avaldises"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "ootamatu märk `%s', oodati `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "oodati `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr ""
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr ""
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr ""
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr ""
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr ""
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "süntaksi viga kohal `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "süntaksi viga: ootamatu faililõpp"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "süntaksi viga"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Käsuinterpretaatorist väljumiseks kasutage \"%s\".\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
@@ -1522,89 +1565,89 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "faili deskriptor on piiridest väljas"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: segane ümbersuunamine"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: fail on olemas, ei kirjuta üle"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: piiratud: väljundit ei saa ümber suunata"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr ""
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "$%s: sedasi ei saa omistada"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "viga ümbersuunamisel: fd duplikaadi loomine ei õnnestu"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "/tmp puudub, palun looge see!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp peab olema kataloogi nimi"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: vigane võti"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: on kataloog"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Mul ei ole nime!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr ""
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1613,325 +1656,321 @@ msgstr ""
"Kasuta:\t%s [GNU pikk võti] [võti] ...\n"
"\t%s [GNU pikk võti] [võti] skript-fail ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU pikad võtmed:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Käsuinterpretaatori võtmed:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s või -o võti\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Vigadest teatamiseks kasutage käsku `bashbug'.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: vigane operatsioon"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr ""
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr ""
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr ""
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr ""
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr ""
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr ""
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr ""
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr ""
-#: siglist.c:91
+#: siglist.c:90
#, fuzzy
msgid "Bus error"
msgstr "süntaksi viga"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr ""
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr ""
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr ""
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr ""
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr ""
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr ""
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr ""
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr ""
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr ""
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr ""
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr ""
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr ""
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr ""
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr ""
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr ""
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr ""
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr ""
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr ""
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr ""
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr ""
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr ""
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr ""
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr ""
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr ""
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr ""
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr ""
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr ""
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: vigane võti"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: vigane tegevuse nimi"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameeter on null või pole seatud"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameeter on null või pole seatud"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr ""
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: halb asendus"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: sedasi ei saa omistada"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sulgev `%c' puudub %s sees"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "ei leitud: %s"
@@ -1954,119 +1993,124 @@ msgstr "oodati `)'"
msgid "`)' expected, found %s"
msgstr "oodati `)', saadi %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: eeldati unaarset operaatorit"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: eeldati binaarset operaatorit"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: eeldati unaarset operaatorit"
+
+#: test.c:881
msgid "missing `]'"
msgstr "puudub `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "süntaksi viga: ootamatu `;'"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "vigane signaali number"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: vigane signaal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr ""
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: praegune skoop pole funktsiooni kontekst"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: praegune skoop pole funktsiooni kontekst"
-#: variables.c:4698
+#: variables.c:4771
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parameeter on null või pole seatud"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: pole global_variables kontekst"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6272
+#: variables.c:6387
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: ei saa avada: %s"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s on piiridest väljas"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Autoriõigus © 2006 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
@@ -2151,11 +2195,11 @@ msgid "command [-pVv] command [arg ...]"
msgstr ""
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr ""
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr ""
#: builtins.c:82
@@ -2179,11 +2223,11 @@ msgid "eval [arg ...]"
msgstr ""
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+msgid "getopts optstring name [arg ...]"
msgstr ""
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr ""
#: builtins.c:100
@@ -2307,7 +2351,7 @@ msgid "umask [-p] [-S] [mode]"
msgstr ""
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr ""
#: builtins.c:181
@@ -2401,14 +2445,14 @@ msgstr ""
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
#: 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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
#: builtins.c:239
@@ -2670,6 +2714,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2697,14 +2743,14 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2719,7 +2765,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2759,7 +2805,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2772,7 +2818,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2799,7 +2845,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2811,7 +2857,7 @@ msgid ""
" Returns exit status of command or success if command is null."
msgstr ""
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2844,15 +2890,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -2875,7 +2921,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -2883,7 +2929,7 @@ msgid ""
" is that of the last command executed."
msgstr ""
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -2892,7 +2938,7 @@ msgid ""
" in a login shell."
msgstr ""
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -2922,7 +2968,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -2934,7 +2980,7 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -2948,7 +2994,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -2972,7 +3018,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -2994,7 +3040,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3029,7 +3075,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3053,7 +3099,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3070,7 +3116,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3093,7 +3139,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3138,7 +3184,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3190,7 +3236,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3202,7 +3248,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3288,7 +3334,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3310,7 +3356,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3329,7 +3375,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3350,7 +3396,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3361,7 +3407,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3375,7 +3421,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3389,7 +3435,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3472,7 +3518,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3480,7 +3526,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3492,7 +3538,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3536,7 +3582,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3566,7 +3612,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3597,6 +3643,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3615,7 +3662,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3633,7 +3680,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3644,18 +3691,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3670,7 +3727,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3683,7 +3740,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3700,7 +3757,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3720,7 +3777,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3736,7 +3793,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3747,7 +3804,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3768,7 +3825,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -3779,7 +3836,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -3790,7 +3847,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3803,7 +3860,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -3817,7 +3874,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3828,7 +3885,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3842,18 +3899,18 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3881,7 +3938,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -3935,7 +3992,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -3966,7 +4023,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -3993,7 +4050,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4022,7 +4079,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4042,7 +4099,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4059,8 +4116,8 @@ 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"
@@ -4081,7 +4138,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4103,7 +4160,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4112,7 +4169,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4125,7 +4182,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4157,7 +4214,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4199,13 +4256,20 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr "Tagastab jooksva alamprotseduuri konteksti."
+
#~ msgid " "
#~ msgstr " "
diff --git a/po/fi.gmo b/po/fi.gmo
index 88502dd2..31ddbe45 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 5fffd5e0..6d13f2d3 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -9,90 +9,95 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2009-05-09 15:13+0300\n"
"Last-Translator: Pekka Niemi <pekka.niemi@iki.fi>\n"
"Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Lokalize 0.3\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "virheellinen taulukkoindeksi"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: indeksoitua taulukkoa ei voi muuttaa assosiatiiviseksi"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: virheellinen assosiatiivinen indeksi"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ei voida sijoittaa epänumeeriseen indeksiin"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ei voida luoda: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: komennolle ei löydy näppäinkarttaa"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ensimmäinen ei-tyhjä merkki ei ole â€\"â€"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "ei loppumerkkiä â€%c†rivissä %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: puuttuva kaksoispiste-erotin"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "â€%sâ€: ei voida irrottaa"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "â€%sâ€: virheellinen näppäinkartan nimi"
@@ -111,22 +116,22 @@ msgstr "â€%sâ€: virheellinen näppäinkartan nimi"
msgid "%s: cannot read: %s"
msgstr "%s: ei voida lukea: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "â€%sâ€: tuntematon funktio"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s voidaan käynnistää näppäinkomennolla "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "â€%sâ€: ei voida irrottaa"
@@ -140,29 +145,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "voidaan käyttää vain â€forâ€-, â€whileâ€- tai â€untilâ€-silmukoissa"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Palauttaa nykyisen alirutiinikutsun kontekstin.\n"
+"Palauta tämänhetkisen alirutiinikutsun konteksti.\n"
" \n"
-" Ilman LAUSEKETTA palauttaa"
+" Ilman parametria, palauttaa â€$line $filenameâ€. Parametrilla palauttaa \n"
+" â€$line $subroutine $filenameâ€; saatua lisätietoa voidaan käyttää "
+"kutsupinon\n"
+" kuvaamiseksi.\n"
+" \n"
+" Parametrin arvo määrää, montako kutsukehystä taaksepäin siirrytään; \n"
+" ylin kehys on numero 0.\n"
+" \n"
+" Paluuarvo:\n"
+" Palauttaa 0 ellei komentotulkki ole funktion ulkopuolella tai parametri\n"
+" on virheellinen."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME-ympäristömuuttujaa ei ole asetettu"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "liian monta argumenttia"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "ei toista hakemistoa"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD-ympäristömuuttujaa ei ole asetettu"
@@ -181,7 +202,7 @@ msgstr "varoitus: "
msgid "%s: usage: "
msgstr "%s: käyttö: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: valitsin vaatii argumentin"
@@ -196,7 +217,7 @@ msgstr "%s: vaaditaan numeerinen argumentti"
msgid "%s: not found"
msgstr "%s: ei löytynyt"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: virheellinen valitsin"
@@ -206,7 +227,7 @@ msgstr "%s: virheellinen valitsin"
msgid "%s: invalid option name"
msgstr "%s: virheellinen valitsimen nimi"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "â€%sâ€: virheellinen tunniste"
@@ -219,7 +240,7 @@ msgstr "virheellinen oktaaliluku"
msgid "invalid hex number"
msgstr "virheellinen heksadesimaaliluku"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "virheellinen luku"
@@ -295,73 +316,83 @@ msgstr "pääteasetuksia asetettaessa tapahtui virhe: %s"
msgid "error getting terminal attributes: %s"
msgstr "pääteasetuksia luettaessa tapahtui virhe: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: nykyhakemistoa luettaessa tapahtui virhe: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: ei ole yksiselitteinen työtunniste"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: ei voida poistaa: kirjoitussuojattu %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: ei voida poistaa"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: virheellinen toiminnon nimi"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ei lavennusmääritystä"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "varoitus: -F -valitsin ei ehkä toimi odotetusti"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "varoitus: -C -valitsin ei ehkä toimi odotetusti"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "tällä hetkellä komennon lavennusfunktiota ei suoriteta"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "voidaan käyttää ainoastaan funktiossa"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "â€-fâ€:ää ei voida käyttää funktioiden luomiseen"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: kirjoitussuojattu funktio"
@@ -376,7 +407,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: taulukkomuuttujia ei voi tuhota näin"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: assosiatiivista taulukkoa ei voi muuttaa indeksoiduksi"
@@ -390,27 +421,32 @@ msgstr "dynaaminen lataus ei ole käytettävissä"
msgid "cannot open shared object %s: %s"
msgstr "jaettua objektia %s ei voida avata: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kohdetta %s ei löydy jaetusta objektista %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: ei dynaamisesti ladattu"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ei dynaamisesti ladattu"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ei voida poistaa: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: on hakemisto"
@@ -425,12 +461,12 @@ msgstr "%s: ei tavallinen tiedosto"
msgid "%s: file is too large"
msgstr "%s: tiedosto on liian iso"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: binääritiedostoa ei voida suorittaa"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: ei voida suorittaa: %s"
@@ -454,15 +490,16 @@ msgstr "Töitä on pysäytettynä.\n"
msgid "There are running jobs.\n"
msgstr "Töitä on ajossa.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "ei löytynyt komentoa"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "komentohistoriamääritys"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: väliaikaistiedostoa ei voitu avata: %s"
@@ -490,12 +527,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "osumia\tkomento\n"
@@ -506,6 +543,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Sopivat komennot avainsanaan `"
msgstr[1] "Sopivat komennot avainsanoihin `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -540,21 +583,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "sijainti komentohistoriassa"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: virheellinen valitsimen nimi"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historiaviittaus epäonnistui"
@@ -577,7 +620,7 @@ msgstr "%s: argumenttien pitää olla prosessi- tai työtunnisteita"
msgid "Unknown error"
msgstr "Tuntematon virhe"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "odotettiin lauseketta"
@@ -586,12 +629,12 @@ msgstr "odotettiin lauseketta"
msgid "%s: not an indexed array"
msgstr "%s: ei ole taulukkomuuttuja"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: virheellinen tiedostokahvamääritys"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: virheellinen tiedostokahva: %s"
@@ -619,36 +662,36 @@ msgstr "tyhjä taulukkomuuttujan nimi"
msgid "array variable support required"
msgstr "vaaditaan tukea taulukkomuuttujille"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "â€%sâ€: puuttuva muotoilumerkki"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: virheellinen aikakatkaisumääritys"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "â€%câ€: virheellinen muotoilumerkki"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "varoitus: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "\\x:stä puuttuu heksadesimaalinumero"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "\\x:stä puuttuu heksadesimaalinumero"
@@ -796,12 +839,12 @@ msgstr ""
" \n"
" Sisäänrakennettu â€dirsâ€-komento näyttää hakemistopinon sisällön."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: virheellinen aikakatkaisumääritys"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "lukuvirhe: %d: %s"
@@ -810,21 +853,11 @@ msgstr "lukuvirhe: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "â€return†on käytettävissä vain funktiossa tai ladatussa skriptissä"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "funktiota ja muuttujaa ei voi poistaa yhtä aikaa"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: ei voida poistaa"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: ei voida poistaa: kirjoitussuojattu %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ei ole taulukkomuuttuja"
@@ -839,7 +872,7 @@ msgstr "%s: ei ole funktio"
msgid "%s: cannot export"
msgstr "%s: ei voida poistaa"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "siirtolaskuri"
@@ -849,7 +882,7 @@ msgstr ""
"komentotulkin valitsimia ei voida laittaa päällä ja ottaa pois päältä "
"samanaikaisesti"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: virheellinen komentotulkin valitsimen nimi"
@@ -906,26 +939,26 @@ msgstr "%s on %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s on hajautettu (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: virheellinen rajoitusargumentti"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "â€%câ€: virheellinen komento"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: rajoitusta ei saada: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "rajoitus"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: rajoitusta ei voida muokata: %s"
@@ -985,76 +1018,75 @@ msgstr "virheellinen hyppy"
msgid "%s: unbound variable"
msgstr "%s: sitomaton muuttuja"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aaikakatkaisu: automaattinen uloskirjautuminen\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "syötettä ei voida lukea tiedostosta /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "AJAN MUOTOMÄÄRITYS: â€%câ€: virheellinen muotoilumerkki"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "putkitusvirhe"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: rajoitettu: komentojen nimissä ei voi käyttää â€/â€-merkkiä"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: komentoa ei löydy"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: virheellinen tulkki"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binääritiedostoa ei voida suorittaa"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s on komentotulkin sisäänrakennettu komento\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "tiedostokahvaa %d ei voida kopioida kahvaksi %d"
@@ -1080,61 +1112,66 @@ msgstr "yritettiin sijoittaa objektiin, joka ei ole muuttuja"
msgid "syntax error in variable assignment"
msgstr "lauseoppivirhe lausekkeessa"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "jako nollalla"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bugi: virheellinen sijoitusavainsana"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "â€:â€:ttä odotettiin ehdolliseen lausekkeeseen"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponentti on pienempi kuin 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "odotettiin muuttujaa ++:n tai --:n jälkeen"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "puuttuva â€)â€"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "lauseoppivirhe: odotettiin operandia"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "lauseoppivirhe: virheellinen aritmetiikkaoperaattori"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (virheellinen avainsana on â€%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "virheellinen lukujärjestelmä"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: virheellinen rivimäärä"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "liian iso luku lukujärjestelmälle"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: virhe lausekkeessa\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ylempiin hakemistoihin ei päästä"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
@@ -1149,162 +1186,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-putki"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "haarautettu prosessi-id %d on ajossa olevalla työllä %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "poistetaan pysäytetty työ %d prosessiryhmästä %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: prosessi %5ld (%s) putkijonossa"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: prosessi %5ld (%s) on merkattu vielä toimivaksi"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: prosessitunnusta ei löydy."
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signaali %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Valmis"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Pysäytetty"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Pysäytetty(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Ajossa"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Valmis(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Poistui %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Tuntematon tila"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(luotiin core-tiedosto)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (työhakemisto: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "lapsiprosessin setpgid (%ld => %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Prosessista %ld ei ole tietoja"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: työ %d on pysäytetty"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: työtä ei löydy"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: työ on lopetettu"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: työ %d on jo taustalla"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: rivi %d:"
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (luotiin core-tiedosto)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(työhakemisto nyt: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp epäonnistui"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: vuonhallinta"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: vuonhallinta"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "päätteen prosessiryhmää ei voitu asettaa (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "tällä komentotulkilla ei ole työnohjausta"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: varmistus epäonnistui: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1313,39 +1360,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: varmistus epäonnistui\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "tuntematon"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: vapaitten listan lohko ylikirjoittui"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: kutsuttiin argumenttina jo vapautettu lohko"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: kutsuttuun argumenttina varaamaton lohko"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: alku- ja loppulohkojen koot eroavat"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: kutsuargumentti on varaamaton lohko"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: havaittiin alivuoto; mh_nbytes rajojen ulkopuolella"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: alku- ja loppulohkojen koot eroavat"
@@ -1387,22 +1444,22 @@ msgstr "%s: virheellinen verkkopolkumääritys"
msgid "network operations not supported"
msgstr "verkko-operaatioita ei ole tuettu"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
-#: locale.c:274
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: ei voida varata %lu tavua"
@@ -1449,111 +1506,111 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: uudelleenohjaus â€%d†rajojen ulkopuolella"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "odottamaton EOF (tiedostonloppu) odotettaessa sulkevaa â€%câ€"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "odottamaton EOF odotettaessa â€]]â€"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "lauseoppivirhe ehdollisessa lausekkeessa: odottamaton avainsana â€%sâ€"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "lauseoppivirhe ehdollisessa lausekkeessa"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "odottamaton avainsana â€%sâ€, odotettiin â€)â€"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "odototettiin â€)â€"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "odottamaton argumentti â€%s†ehdolliselle unaariselle operaattorille"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "odottamaton argumentti ehdolliselle unaariselle operaattorille"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
"odottamaton avainsana â€%sâ€, odotettiin ehdollista binääristä operaattoria"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "odotettiin ehdollista binääristä operaattoria"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "odottamaton argumentti â€%s†ehdolliselle binääriselle operaattorille"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "odottamaton argumentti ehdolliselle binääriselle operaattorille"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "odottamaton avainsana â€%c†ehdollisessa komennossa"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "odottamaton avainsana â€%s†ehdollisessa komennossa"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "odottamaton avainsana %d ehdollisessa komennossa"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "lauseoppivirhe lähellä odottamatonta avainsanaa â€%sâ€"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "lauseoppivirhe lähellä â€%sâ€"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "lauseoppivirhe: odottamaton tiedostonloppu"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "lauseoppivirhe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Kirjoita â€%s†poistuaksesi komentotulkista.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "Odottamaton EOF odotettaessa vastaavaa â€)â€"
@@ -1596,89 +1653,89 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: â€%câ€: virheellinen muotoilumerkki"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "tiedostokahva rajojen ulkopuolella"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: epämääräinen uudelleenohjaus"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: olemassa olevan tiedoston päälle ei voida kirjoittaa"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: rajoitettu: tulostusta ei voida uudelleenohjata"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "here-dokumentille ei voida luoda väliaikaistiedostoa: %s"
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port-muotoa ei tueta ilman tietoliikennettä"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "virhe uudelleenohjauksessa: tiedostokahvaa ei voida kopioida"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "/tmp-hakemistoa ei löytynyt, luo se!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp:n pitää olla kelvollinen hakemiston nimi"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: virheellinen valitsin"
-#: shell.c:1299
+#: shell.c:1319
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
-#: shell.c:1306
+#: shell.c:1330
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nodelay-tilaa ei voida asettaa tiedostokahvalle %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: on hakemisto"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Minulla ei ole nimeä!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versio %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1687,330 +1744,326 @@ msgstr ""
"Käyttö:\t%s[GNU:n pitkä valitsin] [valitsin] ...\n"
"\t%s [GNU:n pitkä valitsin] [valitsin] komentotiedosto ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU:n pitkät valitsimet:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Komentotulkin valitsimet:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s tai -o -valitsin\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Raportoi virheet komennolla â€bashbugâ€.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: virheellinen operaatio"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Väärä signaali"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Linjankatkaisu"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Keskeytys"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Lopetettu"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Virheellinen käsky"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Jäljitys/katkaisupisteansa"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT-käsky"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT-käsky"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Liukulukupoikkeus"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Tapettu"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Väylävirhe"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Muistialueen ylitys"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Virheellinen järjestelmäkutsu"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Katkennut putki"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Herätyskello"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Päätetty"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Kiireellinen I/O-ehto"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Pysäytetty (signaali)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Jatka"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Lapsiprosessin kuolema tai pysähtyminen"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Pysäytetty (päätteen syöte)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Pysäytetty (päätteen tuloste)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O on valmis"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-rajoitus"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Tiedostorajoitus"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Hälytys (virtuaalinen)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Hälytys (profiili)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Ikkuna vaihtunut"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Tietuelukko"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Käyttäjän määrittelemä signaali 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Käyttäjän määrittelemä signaali 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT-syöte odottaa"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "sähkökatko lähellä"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "järjestelmän kaatuminen lähellä"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "siirrä prosessi toiselle CPU:lle"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "ohjelmointivirhe"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-monitorointitila käytössä"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-monitorointitila peruttu"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-äänisekvenssi on valmistunut"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informaatiopyyntö"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Tuntematon signaali #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Tuntematon signaali #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "virheellinen korvaus: ei sulkevaa â€%s†jonossa %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: listaa ei voida sijoittaa taulukon alkioon"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "putkea ei voida luoda prosessin korvaamista varten"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "lapsiprosessia ei voida luoda prosessin korvaamista varten"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nimettyä putkea %s ei voida avata lukemista varten"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nimettyä putkea %s ei voida avata kirjoitusta varten"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nimettyä putkea %s ei voida kopioida tiedostokahvaksi %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "putkea ei voida luoda komennon korvaamista varten"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "ei voida luoda lapsiprosessia komennon korvaamista varten"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: putkea ei voida kopioida tiedostokahvaksi 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: virheellinen rivimäärä"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: virheellinen toiminnon nimi"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: alimerkkijonolauseke < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: virheellinen korvaus"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ei voida asettaa näin"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "virheellinen korvaus: ei sulkevaa â€`†jonossa %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "ei osumia: %s"
@@ -2033,35 +2086,40 @@ msgstr "odotettiin â€)â€"
msgid "`)' expected, found %s"
msgstr "odotettiin â€)â€, löydettiin %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: odotettiin unaarista operaattoria"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: odotettiin binääristä operaattoria"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: odotettiin unaarista operaattoria"
+
+#: test.c:881
msgid "missing `]'"
msgstr "puuttuva â€]â€"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "lauseoppivirhe: odottamaton â€;â€"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "virheellinen signaalinumero"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2069,86 +2127,86 @@ msgstr ""
"run_pending_traps: signaalikäsittelijä on SIG_DFL, lähetän %d (%s) uudelleen "
"itselleni"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: virheellinen signaali %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "virhe tuotaessa â€%sâ€:n funktiomääritystä"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "komentotulkkitaso (%d) liian korkea, palautetaan 1:ksi"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ei funktiokontekstia nykytilassa"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ei funktiokontekstia nykytilassa"
-#: variables.c:4698
+#: variables.c:4771
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parametria ei ole tai sitä ei ole asetettu"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "virheellinen merkki %d %s:n exportstr:ssä"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "ei =:ä kohteen %s exportstr:ssä"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variablesin alku ei ole funktiokonteksti"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ei global_variables-kontekstia"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: ei voida avata: %s"
-#: variables.c:6277
+#: variables.c:6392
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: virheellinen tiedostokahva: %s"
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s rajojen ulkopuolella"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright © 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2243,12 +2301,12 @@ msgstr "command [-pVv] komento [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFilrtux] [-p] [niemi[=arvo] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFilrtux] [-p] nimi[=arvo] ..."
#: builtins.c:82
@@ -2272,11 +2330,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts valitsinmerkit nimi [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nimi] [komento [argumentit ...]] [uudelleenohjaus ...]"
#: builtins.c:100
@@ -2413,7 +2473,7 @@ msgstr "umask [-p] [-S] [tila]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2509,7 +2569,7 @@ msgstr "printf [-v muuttuja] muoto [argumentit]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-o valitsin] [-A toimenpide] [-G "
@@ -2519,8 +2579,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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] [-"
@@ -2965,6 +3025,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3027,7 +3089,7 @@ msgstr ""
"tule \n"
" virhetilannetta."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3038,7 +3100,7 @@ msgstr ""
" \n"
" Vanhentunut. Katso â€help declareâ€."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -3066,7 +3128,7 @@ msgstr ""
" Palauttaa onnistuneen, ellei ole annettu virheellistä valitsinta,\n"
" tapahtuu virhe tai komentotulkki ei ole suorittamassa funktiota."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3135,7 +3197,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistuneen ellei tapahdu virhettä."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3157,7 +3219,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistuneen ellei tapahdu virhettä."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3211,7 +3273,7 @@ msgstr ""
"sisäänrakennettu\n"
" komento tai tapahtuu virhe."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3230,7 +3292,8 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa komennon paluuarvon tai onnistuneen jos komento on tyhjä."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3263,8 +3326,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3310,7 +3373,7 @@ msgstr ""
"valitsimet\n"
" loppuvat tai tapahtuu virhe."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3353,7 +3416,7 @@ msgstr ""
"uudelleenohjauksessa\n"
" tapahtuu virhe."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3365,7 +3428,7 @@ msgstr ""
" Poistuu komentotulkista paluuarvolla N. Jos N:ää ei anneta, paluuarvo\n"
" on viimeisen komennon paluuarvo."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3378,7 +3441,7 @@ msgstr ""
" Poistuu sisäänkirjautumiskomentotulkista paluuarvolla N. Palauttaa\n"
" virheen jos ei olla sisäänkirjautumiskomentotulkissa."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3432,7 +3495,7 @@ msgstr ""
" Palauttaa onnistuneen tai suoritetun komennon paluuarvon; nollasta\n"
" poikkeava virhetilanteessa."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3453,7 +3516,7 @@ msgstr ""
" Paluuarvo:\n"
" Edustalle tuodun työn paluuarvo, tai epäonnistuminen virhetilanteessa."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3479,7 +3542,7 @@ msgstr ""
"tapahtuu\n"
" virhe."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3525,7 +3588,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos NIMEÄ ei löydy tai on annettu "
"virheellinen valitsin."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3567,7 +3630,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos MALLINETTA ei löydy tai valitsin on\n"
" virheellinen."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3634,7 +3697,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin "
"tai tapahtuu virhe."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3679,7 +3742,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n"
" tapahtuu virhe. Jos -x:ää on käytetty, palauttaa KOMENNON paluuarvon."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3712,7 +3775,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos jokin valitsin tai TYÖTUNNISTE on "
"virheellinen."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3756,7 +3819,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai "
"tapahtuu virhe."
-#: builtins.c:947
+#: builtins.c:949
#, fuzzy
msgid ""
"Evaluate arithmetic expressions.\n"
@@ -3845,7 +3908,7 @@ msgstr ""
" Jos viimeinen ARGUMENTTI evaluoituu nollaksi, let palauttaa 1, muussa\n"
" tapauksessa 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3936,7 +3999,7 @@ msgstr ""
" Paluuarvo on nolla, ellei törmätä tiedoston loppumiseen, aikarajan\n"
" ylitykseen tai mikäli -u:lle annetaan virheellinen tiedostokahva."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3960,7 +4023,7 @@ msgstr ""
"suorittamassa\n"
" funktiota tai skriptiä."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4131,7 +4194,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistumisen ellei ole annettu virheellistä valitsinta."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4170,7 +4233,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on kirjoitussuojattu."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4204,7 +4267,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on virheellinen."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4243,7 +4306,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai NIMI on virheellinen."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4262,7 +4325,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa onnistuneen ellei N ole negatiivinen tai suurempi kuin $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4287,7 +4350,7 @@ msgstr ""
"epäonnistuu\n"
" mikäli TIEDOSTOA ei voida lukea."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4314,7 +4377,7 @@ msgstr ""
"tapahtuu\n"
" virhe."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4477,7 +4540,7 @@ msgstr ""
" Palauttaa onnistumisen jos LAUSEKE evaluoituu todeksi; epäonnistuu jos\n"
" LAUSEKE evaluoituu vääräksi tai on annettu virheellinen argumentti."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4489,7 +4552,7 @@ msgstr ""
" Tämä on sisäänrakennetun â€testâ€-komennon synonyymi, mutta viimeisen\n"
" argumentin pitää olla â€]â€, joka sulkee avaavan â€[â€:n."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4509,7 +4572,7 @@ msgstr ""
" Paluuarvo:\n"
" Onnistuu aina."
-#: builtins.c:1362
+#: builtins.c:1364
#, fuzzy
msgid ""
"Trap signals and other events.\n"
@@ -4591,7 +4654,7 @@ msgstr ""
"annettu\n"
" virheellinen valitsin."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4648,7 +4711,7 @@ msgstr ""
" Palauttaa onnistuneen mikäli kaikki NIMET löytyivät, muussa tapauksessa\n"
" epäonnistuu."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4680,6 +4743,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4739,7 +4803,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai tapahtuu virhe."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4774,7 +4838,7 @@ msgstr ""
" Palauttaa onnistuneen ellei TILA ole virheellinen tai on annettu \n"
" virheellinen valitsin."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4786,15 +4850,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Odottaa työn valmistumista ja palauttaa paluuarvon.\n"
" \n"
@@ -4810,7 +4884,7 @@ msgstr ""
" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
" virheellinen valitsin."
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4836,7 +4910,7 @@ msgstr ""
" Palauttaa ID:n tilan; epäonnistuu jos ID on virheellinen tai on annettu\n"
" virheellinen valitsin."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4858,7 +4932,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4890,7 +4964,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4927,7 +5001,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4956,7 +5030,7 @@ msgstr ""
" Paluuarvo:\n"
" KOMENTOKETJUN paluuarvo."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4975,7 +5049,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5009,7 +5083,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5027,7 +5101,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen komennon paluuarvo."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5045,7 +5119,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5068,7 +5142,7 @@ msgstr ""
" Paluuarvo:\n"
" KOMENNON paluuarvo."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5091,7 +5165,7 @@ msgstr ""
" Paluuarvo:\n"
" Onnistuu, ellei NIMI ole kirjoitussuojattu."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5110,7 +5184,7 @@ msgstr ""
" Paluuarvo:\n"
" Viimeisen suoritetun komennon paluuarvo."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5136,12 +5210,13 @@ msgstr ""
" Paluuarvo:\n"
" Työn tila."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5154,7 +5229,7 @@ msgstr ""
" Paluuarvo:\n"
" Palauttaa 1, jos LAUSEKKEEN arvo on 0; muuten palauttaa 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5208,7 +5283,7 @@ msgstr ""
" Paluuarvo:\n"
" 0 tai 1 riippuen LAUSEKKEEN arvosta."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5311,7 +5386,7 @@ msgstr ""
" HISTIGNORE\tKaksoispistein eroteltu lista mallineista, joita käytetään\n"
" \t\tpäätettäessä komentojen tallentamisesta historialistaan.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5370,7 +5445,7 @@ msgstr ""
"tai\n"
" hakemiston vaihtaminen epäonnistuu."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5418,7 +5493,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen argumentti tai\n"
" hakemiston vaihto epäonnistuu."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5473,7 +5548,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin\n"
" tai tapahtuu virhe."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5511,7 +5586,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:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5529,8 +5604,8 @@ 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"
@@ -5571,7 +5646,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" tapahtuu kirjoitus- tai sijoitusvirhe."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5594,7 +5669,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5623,7 +5698,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai \n"
" tapahtuu virhe."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5646,7 +5721,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" tapahtuu virhe."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5701,7 +5776,7 @@ msgstr ""
" Palauttaa onnistuneen paitsi jos on annettu virheellinen valitsin tai\n"
" NIMELLE ei ole määritetty täydennysmääritystä."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5775,7 +5850,7 @@ msgstr ""
" tai TAULUKKO on kirjoitussuojattu."
# Changed " characters into â€...
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5785,6 +5860,21 @@ msgstr ""
" \n"
" â€mapfileâ€:n synonyymi."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Palauttaa nykyisen alirutiinikutsun kontekstin.\n"
+#~ " \n"
+#~ " Ilman LAUSEKETTA palauttaa"
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: prosessi %5ld (%s) putkijonossa"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Tuntematon signaali #"
+
#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
#~ msgstr "xrealloc: ei voida uudelleenvarata %lu tavua (varattiin %lu tavua)"
diff --git a/po/fr.gmo b/po/fr.gmo
index 3277a354..2e08b788 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index dea194b0..a386f6e0 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,98 +1,103 @@
# Messages français pour GNU concernant bash.
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Michel Robitaille <robitail@IRO.UMontreal.CA>, 2004
# Christophe Combelles <ccomb@free.fr>, 2008, 2009, 2010, 2011
-# Frédéric Marchal <fmarchal@perso.be>, 2018
+# Frédéric Marchal <fmarchal@perso.be>, 2019
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.0-beta2\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-01 19:00+0100\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-10 20:44+0100\n"
"Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
"Language-Team: French <traduc@traduc.org>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n >= 2);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "mauvais indice de tableau"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: retire l'attribut nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s : impossible de convertir un tableau indexé en associatif"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s : clé non valable pour le tableau associatif"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s : impossible d'assigner à un index non numérique"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s : impossible de créer : %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s : le premier caractère non vide n'est pas « \" »"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "pas de « %c » de fermeture dans %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s : virgule de séparation manquante"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "« %s » : impossible à délier"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansion des accolades : impossible d'allouer la mémoire pour %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
"expansion des accolades : échec lors de l'allocation mémoire pour %u éléments"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansion des accolades : échec de l'allocation mémoire pour « %s »"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "« %s » : nom d'alias non valable"
@@ -111,22 +116,22 @@ msgstr "« %s » : nom du mappage clavier invalide"
msgid "%s: cannot read: %s"
msgstr "%s : impossible de lire : %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "« %s » : nom de fonction inconnu"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s peut être appelé via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "« %s » : impossible à délier"
@@ -140,28 +145,46 @@ 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:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Renvoie le contexte de l'appel de sous-routine actuel.\n"
" \n"
-" Sans EXPR, renvoie"
+" Sans EXPR, renvoie « $ligne $nomfichier ». Avec EXPR,\n"
+" renvoie « $ligne $sousroutine $nomfichier »; ces informations "
+"supplémentaires\n"
+" peuvent être utilisées pour fournir une trace de la pile.\n"
+" \n"
+" La valeur de EXPR indique le nombre de cadres d'appels duquel il faut "
+"revenir en arrière\n"
+" avant le cadre actuel ; le cadre supérieur est le cadre 0.\n"
+" \n"
+" Code de sortie :\n"
+" Renvoie 0 à moins que le shell ne soit pas en train d'exécuter une "
+"fonction ou que EXPR\n"
+" ne soit pas valable."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "« HOME » non défini"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "trop d'arguments"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "répertoire nul"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "« OLDPWD » non défini"
@@ -180,7 +203,7 @@ msgstr "avertissement :"
msgid "%s: usage: "
msgstr "%s : utilisation :"
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s : l'option nécessite un argument"
@@ -195,7 +218,7 @@ msgstr "%s : argument numérique nécessaire"
msgid "%s: not found"
msgstr "%s : non trouvé"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s : option non valable"
@@ -205,7 +228,7 @@ msgstr "%s : option non valable"
msgid "%s: invalid option name"
msgstr "%s : nom d'option non valable"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "« %s » : identifiant non valable"
@@ -218,7 +241,7 @@ msgstr "nombre octal non valable"
msgid "invalid hex number"
msgstr "nombre hexadécimal non valable"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "nombre non valable"
@@ -231,7 +254,8 @@ msgstr "%s : indication de signal non valable"
#, 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:266 error.c:510
#, c-format
@@ -295,77 +319,87 @@ msgstr "erreur lors de la définition de l'attribut du terminal : %s"
msgid "error getting terminal attributes: %s"
msgstr "erreur lors de la récupération de l'attribut du terminal : %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s : spécification de tâche ambiguë"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "l'aide n'est pas disponible dans cette version"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s : « unset » impossible : %s est en lecture seule"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s : « unset » impossible"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s : nom d'action non valable"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s : pas d'indication de complètement"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "fonction de complétion actuellement non en cours d'exécution"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "utilisable seulement dans une fonction"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s : la variable de référence ne peut pas être un tableau"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s : références bouclées sur la même variable interdites"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s : référence de nom circulaire"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, 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:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "« -f » ne peut pas être utilisé pour fabriquer des fonctions"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s : fonction en lecture seule"
@@ -381,7 +415,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s : impossible de détruire des variables tableaux de cette façon"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s : impossible de convertir un tableau indexé en tableau associatif"
@@ -395,27 +429,32 @@ msgstr "chargement dynamique non disponible"
msgid "cannot open shared object %s: %s"
msgstr "impossible d'ouvrir l'objet partagé %s : %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s : non chargé dynamiquement"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s : non chargé dynamiquement"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s : impossible d'effacer : %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s : ceci est un répertoire"
@@ -430,12 +469,12 @@ msgstr "%s : ceci n'est pas un fichier régulier"
msgid "%s: file is too large"
msgstr "%s : le fichier est trop grand"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s : ne peut exécuter le fichier binaire"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s : impossible d'exécuter : %s"
@@ -459,15 +498,16 @@ msgstr "Il y a des tâches stoppées.\n"
msgid "There are running jobs.\n"
msgstr "Il y a des tâches en cours d'exécution.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "aucune commande trouvée"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "indication d'historique"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s : impossible d'ouvrir le fichier temporaire : %s"
@@ -495,12 +535,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "occurrences\tcommande\n"
@@ -511,13 +551,19 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, 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:224
#, c-format
@@ -537,7 +583,8 @@ 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"
@@ -545,21 +592,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "position dans l'historique"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s : horodatage non valable"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s : l'expansion de l'historique a échoué"
@@ -583,7 +630,7 @@ msgstr ""
msgid "Unknown error"
msgstr "Erreur inconnue"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "une expression est attendue"
@@ -592,12 +639,12 @@ msgstr "une expression est attendue"
msgid "%s: not an indexed array"
msgstr "%s : n'est pas un tableau indexé"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s : spécification de descripteur de fichier non valable"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d : descripteur de fichier non valable : %s"
@@ -625,36 +672,36 @@ msgstr "nom de variable tableau vide"
msgid "array variable support required"
msgstr "nécessité de prise en charge des variables tableaux"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "« %s » : caractère de format manquant"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "« %c » : spécification de format d'heure incorrecte"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "« %c » : caractère de format non permis"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "avertissement : %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problème d'analyse du format : %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "chiffre hexadécimal manquant pour \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "chiffre unicode manquant pour \\%c"
@@ -758,10 +805,12 @@ msgstr ""
" \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 "
"nouveau\n"
@@ -808,12 +857,12 @@ msgstr ""
" \n"
" Vous pouvez voir la pile des répertoires avec la commande « dirs »."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s : spécification de délai d'expiration non valable"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "erreur de lecture : %d : %s"
@@ -821,26 +870,16 @@ msgstr "erreur de lecture : %d : %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
msgstr ""
-"« return » n'est possible que depuis une fonction ou depuis un script exécuté "
-"par « source »"
+"« return » n'est possible que depuis une fonction ou depuis un script "
+"exécuté par « source »"
-#: builtins/set.def:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s : « unset » impossible"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s : « unset » impossible : %s est en lecture seule"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s : n'est pas une variable tableau"
@@ -855,7 +894,7 @@ msgstr "%s : n'est pas une fonction"
msgid "%s: cannot export"
msgstr "%s : impossible d'exporter"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "nombre de « shift »"
@@ -865,7 +904,7 @@ msgstr ""
"les options du shell ne peuvent pas être simultanément activées et "
"désactivées"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s : nom d'option du shell non valable"
@@ -922,26 +961,26 @@ msgstr "%s est %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s est haché (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s : argument de limite non valable"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "« %c » : mauvaise commande"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s : impossible d'obtenir la limite : %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s : impossible de modifier la limite : %s"
@@ -1001,80 +1040,79 @@ msgstr "mauvais saut"
msgid "%s: unbound variable"
msgstr "%s : variable sans liaison"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aattente de données expirée : déconnexion automatique\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT : « %c » : caractère de format non valable"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] existe encore"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "erreur de tube"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, 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:5340
+#: execute_cmd.c:5467
#, 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:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s : commande introuvable"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s : %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s : %s : mauvais interpréteur"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s : impossible d'exécuter le fichier binaire : %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "« %s » : est une primitive spéciale"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossible de dupliquer le fd %d vers le fd %d"
@@ -1099,61 +1137,66 @@ msgstr "tentative d'affectation à une non-variable"
msgid "syntax error in variable assignment"
msgstr "erreur de syntaxe dans l'affectation d'une variable"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "division par 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bogue : mauvais symbole pour expassign"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "« : » attendu pour une expression conditionnelle"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exposant négatif"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identifiant attendu après un pré-incrément ou un pré-décrément"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "« ) » manquante"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "erreur de syntaxe : opérande attendu"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "erreur de syntaxe : opérateur arithmétique non valable"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s : %s (le symbole erroné est « %s »)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base arithmétique non valable"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s : nombre de lignes non valable"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valeur trop grande pour la base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s : erreur d'expression\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd : ne peut accéder aux répertoires parents"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossible de réinitialiser le mode « nodelay » pour le fd %d"
@@ -1170,161 +1213,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline : pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, 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:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process : processus %5ld (%s) dans le_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process : pid %5ld (%s) signalé toujours en vie"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid : %ld : n° de processus inexistant"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Fini"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stoppé"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppé(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "En cours d'exécution"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Fini(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Termine %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "État inconnu"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd : %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "fils setpgid (%ld à %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait : le processus n°%ld n'est pas un fils de ce shell"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for : Aucun enregistrement du processus n°%ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job : la tâche %d est stoppée"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s : tâche inexistante"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s : la tâche s'est terminée"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s : la tâche %d est déjà en arrière plan"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld : activation de WNOHANG pour éviter un blocage définitif"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s : ligne %d : "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(maintenant, wd : %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control : getpgrp a échoué"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control : pas de contrôle de tâche en tâche de fond"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control : discipline de ligne"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control : setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossible de régler le groupe de processus du terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "pas de contrôle de tâche dans ce shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc : échec de l'assertion : %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1333,39 +1386,49 @@ msgstr ""
"\r\n"
"malloc : %s:%d : assertion manquée\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "inconnu"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc : bloc écrasé sur liste libre"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free : appelé avec un bloc déjà libéré comme argument"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free : appelé avec un bloc non alloué comme argument"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free : débordement négatif détecté ; « mh_nbytes » est hors plage"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free : les tailles de fragment au début et à la fin sont différentes"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc : appelé avec un bloc non alloué comme argument"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc : débordement négatif détecté ; « mh_nbytes » est hors plage"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
"realloc : les tailles de fragment au début et à la fin sont différentes"
@@ -1408,23 +1471,23 @@ msgstr "%s : mauvaise spécification de chemin réseau"
msgid "network operations not supported"
msgstr "opérations sur le réseau non prises en charge"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale : LC_ALL : impossible de changer le paramètre de langue (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
"setlocale : LC_ALL : impossible de changer le paramètre de langue (%s) : %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale : %s : impossible de changer le paramètre de langue (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
@@ -1465,15 +1528,15 @@ msgstr "make_here_document : le type d'instruction %d est incorrect"
#, 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:756
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection : l'instruction de redirection « %d » est hors plage"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1482,106 +1545,106 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) dépasse SIZE_MAX (%lu): ligne "
"tronquée"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "nombre maximum de documents en ligne (« here-document ») dépassé"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr ""
"fin de fichier (EOF) prématurée lors de la recherche du « %c » correspondant"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "fin de fichier (EOF) prématurée lors de la recherche de « ]] »"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
"erreur de syntaxe dans une expression conditionnelle : symbole « %s » "
"inattendu"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "erreur de syntaxe dans une expression conditionnelle"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "symbole inattendu « %s » au lieu de « ) »"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "« ) » attendu"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argument inattendu « %s » pour l'opérateur conditionnel à un argument"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argument inattendu pour l'opérateur conditionnel à un argument"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "symbole « %s » trouvé à la place d'un opérateur binaire conditionnel"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "opérateur binaire conditionnel attendu"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argument « %s » inattendu pour l'opérateur binaire conditionnel"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argument inattendu pour l'opérateur binaire conditionnel"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "symbole « %c » inattendu dans la commande conditionnelle"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "symbole « %s » inattendu dans la commande conditionnelle"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "symbole « %d » inattendu dans la commande conditionnelle"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erreur de syntaxe près du symbole inattendu « %s »"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "erreur de syntaxe près de « %s »"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "erreur de syntaxe : fin de fichier prématurée"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "erreur de syntaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Utilisez « %s » pour quitter le shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr ""
"fin de fichier (EOF) prématurée lors de la recherche d'une « ) » "
@@ -1626,91 +1689,91 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf : « %c » : caractère de format invalide"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descripteur de fichier hors plage"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s : redirection ambiguë"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s : impossible d'écraser le fichier existant"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s : restreint : impossible de rediriger la sortie"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s : impossible d'affecter le descripteur de fichier à la variable"
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr ""
"erreur de redirection : impossible de dupliquer le descripteur de fichier"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "« /tmp » introuvable, veuillez le créer !"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "« /tmp » doit être un nom de répertoire valable"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "le mode d'affichage amélioré est ignoré dans les shells interactifs"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c : option non valable"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossible de changer le uid en %d : uid effectif %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossible de changer le gid en %d: gid effectif %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "impossible de démarrer le débogueur: mode déboguage désactivé"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s : Ceci est un répertoire"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Je n'ai pas de nom !"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1719,318 +1782,314 @@ msgstr ""
"Utilisation :\t%s [option longue GNU] [option] ...\n"
"\t%s [option longue GNU] [option] fichier-script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Options longues GNU :\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Options du shell :\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ou -c commande ou -O shopt_option\t\t(invocation seulement)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o option\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Utilisez la commande « bashbug » pour faire un rapport de bogue.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "page d'accueil de bash : <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Aide générale sur l'utilisation de logiciels GNU : <http://www.gnu.org/"
"gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask : %d : opération non valable"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Signal falsifié"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Raccroche"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interrompt"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Quitte"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instruction incorrecte"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "trace/trap BPT"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instruction ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instruction EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Exception en virgule flottante"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Tué"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Erreur de bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Erreur de segmentation"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Mauvais appel système"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Tube brisé"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Horloge d'alarme"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminé"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condition d'E/S urgente"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stoppé (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continue"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Mort ou arrêt du fils"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stoppé (entrée tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stoppé (sortie tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "E/S prête"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Limite CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Limite fichier"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarme (virtuelle)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarme (profile)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Fenêtre changée"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Verrou d'enregistrement"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Signal utilisateur 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Signal utilisateur 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "données d'entrée HFT en attente"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "coupure d'alimentation imminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "panne système imminente"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migration processus vers un autre CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "erreur de programmation"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Mode de surveillance HFT accordé"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Mode de surveillance HFT rétracté"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Séquence de son HFT terminée"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Demande d'information"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "N° de signal inconnu"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Signal n°%d inconnu"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Mauvaise substitution : pas de « %s » de fermeture dans %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s : impossible d'affecter une liste à un élément de tableau"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "impossible de fabriquer un tube pour une substitution de processus"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "impossible de fabriquer un fils pour une substitution de processus"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossible d'ouvrir le tube nommé « %s » en lecture"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossible d'ouvrir le tube nommé « %s » en écriture"
-#: subst.c:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "substitution de commande: octet nul ignoré en entrée"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "impossible de fabriquer un tube pour une substitution de commande"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr ""
"impossible de fabriquer un processus fils pour une substitution de commande"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute : impossible de dupliquer le tube vers le fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s : nom de variable invalide pour une référence de nom"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s : expansion indirecte invalide"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nom de variable invalide"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s : paramètre non défini"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s : paramètre vide ou non défini"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s : expression de sous-chaîne négative"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s : mauvaise substitution"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s : affectation impossible de cette façon"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2038,12 +2097,12 @@ msgstr ""
"les versions futures du shell forceront l'évaluation comme une substitution "
"arithmétique"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "mauvais remplacement : pas de « ` » de fermeture dans %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "pas de correspondance : %s"
@@ -2066,37 +2125,42 @@ msgstr "« ) » attendue"
msgid "`)' expected, found %s"
msgstr "« ) » attendue au lieu de %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s : opérateur unaire attendu"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s : opérateur binaire attendu"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s : opérateur unaire attendu"
+
+#: test.c:881
msgid "missing `]'"
msgstr "« ] » manquant"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "erreur de syntaxe : « ; » non attendu"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "numéro de signal non valable"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
"gestionnaire trap : dépassement de la profondeur maximum du gestionnaire "
"« trap » (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2104,92 +2168,93 @@ msgstr ""
"run_pending_traps : le gestionnaire de signal est SIG_DFL, renvoi de %d (%s) "
"à moi-même"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler : mauvais signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erreur lors de l'importation de la définition de fonction pour « %s »"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "niveau de shell trop élevé (%d), initialisation à 1"
-#: variables.c:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s : la variable ne peut se voir assigner une valeur"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s : assigne un entier à la référence de nom"
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s a un « exportstr » nul"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "caractère %d non valable dans « exportstr » pour %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "pas de « = » dans « exportstr » pour %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context : aucun contexte à « global_variables »"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s : %s : impossible d'ouvrir comme FILE"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s : %s : valeur de compatibilité hors plage"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2280,11 +2345,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] commande [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [nom[=valeur] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] nom[=valeur] ..."
#: builtins.c:82
@@ -2308,11 +2375,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts chaineopts nom [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nom] [commande [arguments ...]] [redirection ...]"
#: builtins.c:100
@@ -2441,7 +2510,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id ...]"
#: builtins.c:181
@@ -2533,9 +2603,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [arguments]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G "
@@ -2543,9 +2614,10 @@ msgstr ""
"P prefixe] [-S suffixe] [nom ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o option] [-A action] [-G motif_glob] [-W "
"liste_mots] [-F fonction] [-C commande] [-X motif_filtre] [-P prefixe] [-S "
@@ -2669,8 +2741,8 @@ 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 une macro, "
-"ou définit une\n"
+" 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 "
@@ -2681,8 +2753,10 @@ msgstr ""
" -m keymap Utilise KEYMAP comme mappage clavier pendant la\n"
" durée de cette commande. Des noms de mappage "
"valables\n"
-" sont « emacs », « emacs-standard », « emacs-meta », \n"
-" « emacs-ctlx », « vi », « vi-move », « vi-command » et\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"
@@ -3015,6 +3089,7 @@ msgstr ""
"COMMANDE est introuvable."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3027,6 +3102,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3084,8 +3161,8 @@ msgstr ""
" \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"
+" 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"
@@ -3099,7 +3176,7 @@ msgstr ""
"ou qu'une\n"
" erreur survienne lors de l'assignation d'une variable."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3109,7 +3186,7 @@ msgstr ""
" \n"
" Un synonyme de « déclare ». Consultez « help declare »."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3142,8 +3219,7 @@ msgstr ""
"shell\n"
" n'exécute pas une fonction."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3211,14 +3287,18 @@ msgstr ""
" \\0nnn\tle caractère dont le code ASCII est NNN (en octal). NNN peut "
"être\n"
" \t\tlong de 0 à 3 chiffres octaux\n"
-" \\xHH\tle caractère sur 8 bits dont la valeur est HH (hexadecimal). "
+" \\xHH\tle caractère sur 8 bits dont la valeur est HH (hexadécimal). "
"HH\n"
-" \t\tpeut être long de 1 ou 2 chiffres hexadécimaux\n"
+" \t\tpeut être composé de 1 ou 2 chiffres hexadécimaux\n"
+" \t\tHHHH peut être composé de un à quatre chiffres hexadécimaux.\n"
+" \\UHHHHHHHH le caractère Unicode dont la valeur est la valeur "
+"hexadécimale\n"
+" \t\tHHHHHHHH. HHHHHHHH peut avoir un à huit chiffres hexadécimaux.\n"
" \n"
" Code de sortie :\n"
" Renvoie le code de succès à moins qu'une erreur d'écriture survienne."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3240,7 +3320,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de succès à moins qu'une erreur d'écriture survienne."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3280,7 +3360,8 @@ 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 "
@@ -3297,7 +3378,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:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3318,7 +3399,8 @@ msgstr ""
" Renvoie le même code de sortie que la commande, ou le code de succès si "
"la commande est vide."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3351,8 +3433,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3388,13 +3470,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\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 » "
@@ -3412,7 +3495,7 @@ msgstr ""
"la fin des options\n"
" est rencontrée ou si une erreur survient."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3455,7 +3538,7 @@ msgstr ""
"ou\n"
" qu'une erreur de redirection ne survienne."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3467,7 +3550,7 @@ msgstr ""
" Termine le shell avec le code de retour « N ». Si N est omis, le code\n"
" de retour est celui de la dernière commande exécutée."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3481,7 +3564,7 @@ msgstr ""
"erreur\n"
" s'il n'est pas exécuté dans un shell de connexion."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3533,8 +3616,8 @@ msgstr ""
" 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"
@@ -3542,7 +3625,7 @@ msgstr ""
"autre\n"
" chose que 0 si une erreur survient."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3563,7 +3646,7 @@ msgstr ""
" Celui de la commande placée au premier plan ou le code d'échec si une "
"erreur survient."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3578,8 +3661,8 @@ 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"
@@ -3588,7 +3671,7 @@ msgstr ""
"activé\n"
" ou qu'une erreur ne survienne."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3634,7 +3717,7 @@ msgstr ""
" 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:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3675,7 +3758,7 @@ msgstr ""
"qu'une\n"
" option non valable ne soit donnée."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3752,7 +3835,7 @@ msgstr ""
"ou\n"
" qu'une erreur ne survienne."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3802,7 +3885,7 @@ msgstr ""
"de\n"
" la COMMANDE est renvoyé."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3834,7 +3917,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option ou un JOBSPEC non\n"
" valable ne soit donné."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3886,7 +3969,7 @@ msgstr ""
"ou qu'une\n"
" erreur ne survienne."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3975,7 +4058,7 @@ msgstr ""
" Code de sortie :\n"
" Si le dernier ARG est évalué à 0, « let » renvoie 1, sinon 0 est renvoyé."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -4089,7 +4172,7 @@ msgstr ""
" ou qu'un descripteur de fichier non valable ne soit fourni comme "
"argument à « -u »."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4111,7 +4194,7 @@ msgstr ""
" Renvoie N ou le code d'échec si le shell n'est pas en train d'exécuter\n"
" une fonction ou un script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4290,12 +4373,12 @@ msgstr ""
"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"
@@ -4304,7 +4387,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit "
"donnée."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4346,7 +4429,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" donnée ou que NOM soit en lecture seule."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4383,7 +4466,7 @@ msgstr ""
"données\n"
" ou que NOM ne soit pas valable."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4425,7 +4508,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" donnée ou que NOM ne soit pas valable."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4444,7 +4527,7 @@ msgstr ""
" Code de retour :\n"
" Renvoie le code de succès à moins que N soit négatif ou supérieur à $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4472,7 +4555,7 @@ msgstr ""
"code\n"
" d'échec si NOMFICHIER ne peut pas être lu."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4500,7 +4583,7 @@ msgstr ""
"activé\n"
" ou qu'une erreur survienne."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4672,7 +4755,7 @@ msgstr ""
"fausse ou si\n"
" un argument non valable est donné."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4684,7 +4767,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4703,7 +4786,7 @@ msgstr ""
" Code de retour :\n"
" Toujours le code de succès."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4788,7 +4871,7 @@ msgstr ""
"qu'une\n"
" option non valable ne soit donnée."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4838,8 +4921,8 @@ msgstr ""
"rien\n"
" \t\tn'est renvoyé.\n"
" -t\taffiche un mot unique parmi « alias », « keyword »,\n"
-" \t\t« function », « builtin », « file » or « », si NOM est respectivement un "
-"alias,\n"
+" \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"
" \t\tun fichier du disque ou un nom inconnu\n"
@@ -4852,7 +4935,8 @@ msgstr ""
"si l'un\n"
" d'entre eux n'est pas trouvé."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4883,6 +4967,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4944,8 +5029,8 @@ 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\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"
@@ -4955,7 +5040,7 @@ msgstr ""
"fournie ou\n"
" qu'une erreur ne survienne."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4980,8 +5065,8 @@ msgstr ""
" \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, affiche sous une forme réutilisable en entrée\n"
@@ -4993,7 +5078,8 @@ msgstr ""
"qu'une\n"
" option non valable ne soit donnée."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -5004,15 +5090,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Attend la fin d'une tâche et renvoie le code de retour.\n"
" \n"
@@ -5039,7 +5135,7 @@ msgstr ""
"valable\n"
" ou en cas d'option non valable."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -5067,7 +5163,7 @@ msgstr ""
"valable ou\n"
" si une option non valable est donnée."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5083,14 +5179,15 @@ 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:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5121,7 +5218,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5157,7 +5254,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5188,7 +5285,7 @@ msgstr ""
" Code de sortie :\n"
" Le code de retour est celui du PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5208,7 +5305,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5246,7 +5343,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5265,7 +5362,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5284,7 +5381,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5307,7 +5404,7 @@ msgstr ""
" Code de retour :\n"
" La commande coproc renvoie le code de sortie 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5333,7 +5430,7 @@ msgstr ""
" Code de retour :\n"
" Renvoie le code de succès à moins que NOM ne soit en lecture seule."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5351,7 +5448,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la dernière commande exécutée."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5369,7 +5466,8 @@ 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"
@@ -5377,12 +5475,13 @@ msgstr ""
" Code de sortie :\n"
" Renvoie le code de la commande reprise."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5395,7 +5494,7 @@ msgstr ""
" Code de sortie :\n"
" Renvoie 1 si EXPRESSION est évaluée à 0, sinon renvoie 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5436,8 +5535,8 @@ 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\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 "
@@ -5450,7 +5549,7 @@ msgstr ""
" Code de sortie :\n"
" 0 ou 1 selon la valeur de l'EXPRESSION."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5520,8 +5619,8 @@ msgstr ""
" HOSTNAME\tLe nom de la machine actuelle.\n"
" 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"
@@ -5575,7 +5674,7 @@ msgstr ""
" \t\tdécider quelles commandes doivent être conservées dans la liste "
"d'historique.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5638,7 +5737,7 @@ msgstr ""
"fourni\n"
" ou que le changement de répertoire n'échoue."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5690,7 +5789,7 @@ msgstr ""
"donné\n"
" ou que le changement de répertoire n'échoue."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5749,7 +5848,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" fournie ou qu'une erreur ne survienne."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5790,7 +5889,7 @@ msgstr ""
"valable\n"
" est donnée ou si NOMOPT est inactive."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5807,8 +5906,8 @@ 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"
@@ -5868,7 +5967,7 @@ msgstr ""
"donnée ou qu'une\n"
" erreur d'écriture ou d'affectation ne survienne."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5891,7 +5990,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5925,8 +6024,8 @@ msgstr ""
"l'ordre\n"
" dans lequel les options en majuscule ci-dessus sont listées. Si "
"plusieurs\n"
-" options sont fournies, l'option « -D » est prioritaire sur -E et les deux "
-"sont\n"
+" options sont fournies, l'option « -D » est prioritaire sur -E et les "
+"deux sont\n"
" prioritaires sur -I.\n"
" \n"
" Code de retour :\n"
@@ -5934,7 +6033,7 @@ msgstr ""
"fournie ou\n"
" qu'une erreur ne survienne."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5956,7 +6055,7 @@ msgstr ""
" Renvoie le code de succès à moins qu'une option non valable ne soit\n"
" fournie ou qu'une erreur ne survienne."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -6010,8 +6109,8 @@ 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\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-"
@@ -6023,7 +6122,7 @@ msgstr ""
"fournie\n"
" ou que NOM n'ait aucun réglage d'auto-complètement."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -6106,7 +6205,7 @@ msgstr ""
"donnée ou que\n"
" le TABLEAU soit en lecture seule ou ne soit pas un tableau indexé."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6116,6 +6215,24 @@ msgstr ""
" \n"
" Synonyme de « mapfile »."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Renvoie le contexte de l'appel de sous-routine actuel.\n"
+#~ " \n"
+#~ " Sans EXPR, renvoie"
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process : processus %5ld (%s) dans le_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "N° de signal inconnu"
+
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2014 Free Software Foundation, Inc."
@@ -6131,9 +6248,6 @@ msgstr ""
#~ 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"
@@ -6218,8 +6332,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,"
@@ -6227,8 +6341,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."
@@ -6236,7 +6350,8 @@ 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"
@@ -6296,7 +6411,8 @@ 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."
@@ -6412,12 +6528,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."
@@ -6528,12 +6644,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 "
@@ -6594,10 +6710,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é. "
@@ -6634,14 +6750,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 ""
@@ -6693,8 +6809,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"
@@ -6704,16 +6820,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 "
@@ -6761,7 +6877,8 @@ 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 "
@@ -6787,8 +6904,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."
@@ -6851,8 +6968,10 @@ 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"
@@ -6865,8 +6984,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 d7712dee..70423c34 100644
--- a/po/ga.gmo
+++ b/po/ga.gmo
Binary files differ
diff --git a/po/ga.po b/po/ga.po
index 0254a01d..36f1b274 100644
--- a/po/ga.po
+++ b/po/ga.po
@@ -2,98 +2,103 @@
# Copyright (C) 2017 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
-# Séamus Ó Ciardhuáin <sociardhuain@gmail.com>, 2009, 2017, 2018.
+# Séamus Ó Ciardhuáin <sociardhuain@gmail.com>, 2009, 2017, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-06 21:34+0000\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-16 21:05+0000\n"
"Last-Translator: Séamus Ó Ciardhuáin <sociardhuain@gmail.com>\n"
"Language-Team: Irish <gaeilge-gnulinux@lists.sourceforge.net>\n"
+"Language: ga\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ga\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
"(n>6 && n<11) ? 3 : 4;\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "droch-fhoscript eagair"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: aitreabúid nameref (tagairt athróga) á baint"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, 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:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil."
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ní féidir cruthú: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: ní \" an chéad charachtar nach spás bán é."
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "Níl '%c' dúnta i %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: deighilteoir idirstaid ar iarraidh"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "'%s': ní féidir dícheangail"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %u eilimint"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "'%s': ainm neamhbhailí ar mhapa eochrach"
@@ -112,22 +117,22 @@ msgstr "'%s': ainm neamhbhailí ar mhapa eochrach "
msgid "%s: cannot read: %s"
msgstr "%s: ní féidir léamh: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "'%s': ainm feidhme neamhaithnid"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "Is féidir %s a ghlaoigh trí "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "'%s': ní féidir dícheangail"
@@ -141,28 +146,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n"
" \n"
-" Gan SLONN, aischuirtear "
+" Gan SLONN, aischuirtear '$líne $ainm_comhaid'. Le SLONN, aischuirtear\n"
+" '$líne $foghnáthamh $ainm_comhaid'; is féidir lorg cruaiche a sholáthar "
+"leis an\n"
+" fhaisnéis bhreise seo.\n"
+" \n"
+" Taispeánann an luach atá ag SLONN líon na bhfrámaí glaoigh le dul siar\n"
+" roimh an ceann reatha; fráma 0 an ceann atá ar barr.\n"
+" \n"
+" Stádas Scortha:\n"
+" Aischuirtear 0 ach sa chás nach bhfuil an bhlaosc ag rith feidhme "
+"blaoisce, nó\n"
+" sa chás go bhfuil SLONN neamhbhailí."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "Níl HOME socruithe"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "An iomarca argóintí"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "comhadlann neamhnitheach"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "Níl OLDPWD socruithe"
@@ -181,7 +203,7 @@ msgstr "rabhadh: "
msgid "%s: usage: "
msgstr "%s: úsáid: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tá argóint riachtanach don rogha"
@@ -196,7 +218,7 @@ msgstr "%s: argóint uimhriúil de dhíth"
msgid "%s: not found"
msgstr "%s: gan aimsiú"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: rogha neamhbhailí"
@@ -206,7 +228,7 @@ msgstr "%s: rogha neamhbhailí"
msgid "%s: invalid option name"
msgstr "%s: ainm neamhbhailí rogha"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "'%s': ní aitheantóir bailí é"
@@ -219,7 +241,7 @@ msgstr "uimhir ochtnártha neamhbhailí"
msgid "invalid hex number"
msgstr "uimhir heicsidheachúlach neamhbhailí"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "uimhir neamhbhailí"
@@ -295,76 +317,86 @@ msgstr "earráid agus airíonna teirminéil á socrú: %s"
msgid "error getting terminal attributes: %s"
msgstr "earráid agus airíonna teirminéil á fáil: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: sonrú taisc athbhríoch"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "Níl cabhair ar fáil sa leagan seo."
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: ní féidir díshocrú: %s inléite amháin"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: ní féidir díshocrú"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: ainm neamhbhailí gnímh"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: níl sonrú iomlánaithe ann."
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "Inúsáidte i bhfeidhmeanna amháin. "
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
"%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: tagairt ainm ciorclach"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: feidhm inléite amháin"
@@ -379,7 +411,7 @@ msgstr "%s: cáintear sannadh na gcomheagar athfhriotail"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ní féidir athróga eagair a scrios mar seo."
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -394,29 +426,34 @@ msgstr "Níl luchtú dinimiciúil ar fáil"
msgid "cannot open shared object %s: %s"
msgstr "Ní féidir an réad comhroinnte %s a oscailt: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: níl sé luchtaithe go dinimiciúil"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
"Theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor "
"luchtáladh é"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: níl sé luchtaithe go dinimiciúil"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ní féidir scrios: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: is comhadlann é"
@@ -431,12 +468,12 @@ msgstr "%s: ní gnáthchomhad é"
msgid "%s: file is too large"
msgstr "%s: tá an comhad ró-mhór"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ní féidir comhad dénártha a rith"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: ní féidir rith: %s"
@@ -460,15 +497,16 @@ msgstr "Tá tascanna stoptha ann.\n"
msgid "There are running jobs.\n"
msgstr "Tá tascanna ag rith.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "Níor aimsíodh ordú"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "Sonrú staire"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: ní féidir comhad sealadach a oscailt: %s"
@@ -496,12 +534,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "amais\tordú\n"
@@ -515,6 +553,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -548,21 +592,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "suíomh staire"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: stampa ama neamhbhailí"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: theip ar fhairsingiú staire."
@@ -585,7 +629,7 @@ msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc"
msgid "Unknown error"
msgstr "Earráid neamhaithnid"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "Ag súil le slonn"
@@ -594,12 +638,12 @@ msgstr "Ag súil le slonn"
msgid "%s: not an indexed array"
msgstr "%s: ní eagar innéacsaithe é"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: sonrú neamhbhailí tuairisceora comhaid"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: tuairisceoir comhaid neamhbhailí: %s"
@@ -627,36 +671,36 @@ msgstr "ainm folamh athróga eagair"
msgid "array variable support required"
msgstr "tacaíocht le hathróga eagair de dhíth"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "'%s': carachtar formáide ar iarraidh."
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "'%c': sonrú neamhbhailí formáide ama"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "'%c': carachtar formáide neamhbhailí."
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "rabhadh: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "fadhb i bpársáil formáide: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "digit Unicode ar iarraidh le haghaidh \\%c"
@@ -817,12 +861,12 @@ msgstr ""
" \n"
" Taispeánann an t-ordú ionsuite \"dirs\" cruach na gcomhadlann."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: sonrú neamhbhailí teorann ama"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "Earráid léite: %d: %s"
@@ -832,21 +876,11 @@ 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:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: ní féidir díshocrú"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: ní féidir díshocrú: %s inléite amháin"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ní athróg eagair é"
@@ -861,7 +895,7 @@ msgstr "%s: ní feidhm é."
msgid "%s: cannot export"
msgstr "%s: ní féidir easpórtáil"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "comhaireamh iomlaoide"
@@ -869,7 +903,7 @@ msgstr "comhaireamh iomlaoide"
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:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ainm neamhbhailí ar rogha blaoisce"
@@ -926,26 +960,26 @@ msgstr "Tá %s %s\n"
msgid "%s is hashed (%s)\n"
msgstr "Tá %s haiseáilte (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: argóint teorann neamhbhailí"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "'%c': droch-ordú"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ní féidir teorainn a fháil: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "teorainn"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ní féidir teorainn a athrú: %s"
@@ -1005,76 +1039,75 @@ msgstr "drochléim"
msgid "%s: unbound variable"
msgstr "%s: athróg neamhcheangailte"
-#: eval.c:245
-#, c-format
+#: eval.c:242
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:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "FORMÃID_AMA: '%c': carachtar formáide neamhbhaií."
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "earráid phíopa"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: srianta: ní féidir \"/\" a shonrú in ainmneacha ordaithe"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: níor aimsíodh an t-ordú"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: drochléirmhínitheoir"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ní féidir comhad dénártha a rith: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "Is ordú ionsuite speisialta é '%s'"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr ""
@@ -1100,61 +1133,66 @@ msgstr "Deineadh iarracht sannadh go rud nach athróg é."
msgid "syntax error in variable assignment"
msgstr "Earráid chomhréire i sannadh athróige."
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "Roinnt ar 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "Fabht: droch-chomhartha expassign"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "Bhíothas ag súil le \":\" le haghaidh sloinn choinníollaigh."
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "Easpónant níos lú ná 0."
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "Ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "\")\" ar iarraidh"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann."
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "Earráid chomhréire: oibreoir neamhbhailí uimhríochta"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (comhartha earráide '%s')"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "Bonnuimhir uimhríochtúil neamhbhailí."
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: comhaireamh neamhbhailí línte"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "Tá an luach rómhór don bhonnuimhir."
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: earráid sloinn\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain."
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1175,161 +1213,171 @@ msgstr ""
"save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid "
"nua %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp píopa"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios."
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: próiseas %5ld (%s) sa phíblíne"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann."
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Comhartha %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Déanta"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stoptha"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stoptha(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Ag Rith"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Déanta(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Scoir %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Stádas neamhaithnid"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(cuimhne dumpáilte)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (comhadlann oibre: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid macphróisis (%ld go %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: níl taifead den phróiseas %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: tá an tasc %d stoptha."
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: níl a léithéid de tasc ann."
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: tá an tasc críochnaithe."
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: tá an tasc %d sa chúlra cheana."
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: líne %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (cuimhne dumpáilte)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(comhadlann oibre anois: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: theip ar getpgrp"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: níl rialú jabanna ar fáil sa chúlra"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: araíonacht líne"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "Níl rialú tascanna sa bhlaosc seo."
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: dearbhú teipthe: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1338,39 +1386,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: dearbhú ina phraiseach\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "neamhaithnid"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloc ar an liosta saor scriosta"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: glaoite le argóint bhloic á saoradh cheana"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: glaoite le argóint bhloic nár leithdháileadh"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: gannsreabhadh; tá mh_nbytes as raon"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: ní ionann méid na smután túis agus deiridh"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: ní ionann méideanna na smután túis agus deiridh"
@@ -1413,22 +1471,22 @@ msgstr "%s: drochshonrú conaire líonra"
msgid "network operations not supported"
msgstr "Ní thacaítear le oibríochtaí líonra."
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ní féidir an logchaighdeán a athrú (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s"
@@ -1476,115 +1534,115 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: ordú atreoraithe \"%d\" as raon."
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX (%"
-"lu): líne giorraithe"
+"shell_getc: tá méid an líne ionchuir blaoisce (%zu) níos mó ná SIZE_MAX "
+"(%lu): líne giorraithe"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "Imithe thar uasfhad na cáipéise-anseo"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, 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:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "Deireadh comhaid gan súil leis agus \"]]\" á lorg."
-#: parse.y:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "Earráid chomhréire i slonn coinníollach."
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "Comhartha '%s' gan súil leis; ag súil le ')'."
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "Ag súil le \")\""
-#: parse.y:4725
+#: parse.y:4815
#, 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:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ."
-#: parse.y:4775
+#: parse.y:4865
#, 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:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha."
-#: parse.y:4801
+#: parse.y:4891
#, 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:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach."
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "Comhartha '%c' gan súil leis in ordú coinníollach."
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "Comhartha \"%s\" gan súil leis in ordú coinníollach."
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "Comhartha %d gan súil leis in ordú coinníollach."
-#: parse.y:6245
+#: parse.y:6336
#, 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:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "Earráid chomhréire in aice '%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "Earráid chomhréire: deireadh comhaid gan súil leis."
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "Earráid chomhréire"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Úsáid '%s' le scoir den mblaosc.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil."
@@ -1627,94 +1685,95 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: '%c': carachtar formáide neamhbhailí"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "tuairisceoir comhaid as raon"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: atreorú athbhríoch"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh."
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: srianta: ní féidir aschur a atreorú."
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg."
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt."
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí."
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
+"Tabharfar neamhaird ar an mód deaphriontála i mblaoscanna idirghníomhacha."
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: rogha neamhbhailí"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir "
"éifeachtach %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir "
"éifeachtach %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
"Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe."
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: is comhadlann é"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Níl ainm orm!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, leagan %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1723,318 +1782,314 @@ msgstr ""
"Úsáid:\t%s [rogha fada GNU] [rogha] ...\n"
"\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Roghanna fada GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Roghanna blaoisce:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD nó -c ordú nó -O rogha_shopt\t\t(glaoch amháin)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s nó -o rogha\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Úsáid an t-ordú 'bashbug' le tuarascáil a sheoladh faoi fhabht.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "leathanach baile bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Cabhair ghinearálta le bogearraí GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: oibríocht neamhbhailí"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Droch-chomhartha"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Crochadh"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Idirbhriseadh"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Scoir"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Treoir mídhleathach"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Rianú/gaistiú brisphointe"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Treoir ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Treoir EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Eisceacht snámhphointe"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Maraithe"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Earráid bhus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Fabht deighilte"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Droch-ghlaoch córais"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Píopa briste"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Clog aláraim"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Críochnaithe"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Staid phráinneach I/A"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stoptha (comhartha)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Lean ar aghaidh"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Bás macphróisis nó stopadh"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stoptha (ionchur teirminéil)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stoptha (aschur teirminéil)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/A ullamh"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Teorainn LAP"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Teorainn chomhad"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Aláram (fíorúil)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Aláram (próifíl)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Fuinneog athraithe"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Glas taifid"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Comhartha úsáideora 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Comhartha úsáideora 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "sonraí ionchuir HFT ar feitheamh"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "teip chumhachta ar tí tarlú"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "cliseadh córais ar tí tarlú"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "bog próiseas go LAP eile"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "earráid ríomhchláraithe"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "mód monatóireachta HFT ceadaithe"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "mód monatóireachta HFT cealaithe"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "seicheamh fuaime HFT críochnaithe"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Iarratas faisnéise"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Comhartha neamhaithnid #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Comhartha neamhaithnid #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Drochionadú: níl '%s' dúnta i %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: ní féidir liosta a shannadh go ball eagair."
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis."
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis."
-#: subst.c:5920
+#: subst.c:6059
#, 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:5922
+#: subst.c:6061
#, 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:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe."
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe."
-#: subst.c:6259
+#: subst.c:6423
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:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: fairsingiú neamhbhailí indíreach"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ainm neamhbhailí athróige"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: paraiméadar gan socrú."
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: paraiméadar neamhnitheach nó gan socrú."
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: slonn fotheaghráin < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: drochionadú"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ní féidir sannadh mar seo."
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2042,12 +2097,12 @@ msgstr ""
"i leaganacha den bhlaosc amach anseo, beidh luachálú mar ionadú uimhríochta "
"éigeantach"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "drochionadú: níl '`' dúnta i %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "gan meaitseáil: %s"
@@ -2070,35 +2125,40 @@ msgstr "Ag súil le ')'"
msgid "`)' expected, found %s"
msgstr "Ag súil le ')', ach fuarthas %s."
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: ag súil le hoibreoir aonártha."
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: ag súil le hoibreoir dénártha."
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: ag súil le hoibreoir aonártha."
+
+#: test.c:881
msgid "missing `]'"
msgstr "']' ar iarraidh"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Earráid chomhréire: ';' gan súil leis."
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "Uimhir chomhartha neamhbhailí"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: imithe thar uasleibhéal na láimhseálaithe gaistí (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2106,84 +2166,85 @@ msgstr ""
"run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á "
"athsheoladh chugam féin."
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: droch-chomhartha %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil."
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: ní féidir luach a shannadh ar an athróg"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: slánuimhir a sannadh go tagairt ainm"
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "Tá teaghrán easpórtála neamhnitheach ag %s"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, 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:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s."
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: níl comhthéacs global_variables ann"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: luach comhoiriúnachta as raon"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Cóipcheart © 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Cóipcheart © 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2274,11 +2335,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] ORDÚ [ARGÓINT ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [AINM[=LUACH] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] AINM[=LUACH] ..."
#: builtins.c:82
@@ -2302,11 +2365,13 @@ msgid "eval [arg ...]"
msgstr "eval [argóint ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts teaghrán_roghanna ainm [argóint]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a AINM] [ORDÚ [ARGÓINTà ...]] [ATREORÚ ...]"
#: builtins.c:100
@@ -2436,7 +2501,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [MÓD]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [AITHEANTAS ...]"
#: builtins.c:181
@@ -2528,9 +2594,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v athróg] formáid [argóintí]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o ROGHA] [-A GNÃOMH] [-G PATRÚN] [-W "
@@ -2538,9 +2605,10 @@ msgstr ""
"IARMHÃR] [AINM ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2943,6 +3011,7 @@ msgstr ""
"ORDÚ."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2955,6 +3024,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3023,7 +3094,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó go\n"
" dtarlaíonn earráid shannta."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3033,7 +3104,7 @@ msgstr ""
" \n"
" Comhchiallach le \"declare\". Feic \"help declare\"."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3063,8 +3134,7 @@ msgstr ""
"dtarlaíonn earráid,\n"
" nó go bhfuil an bhlaosc ag rith feidhme."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3103,7 +3173,7 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
-"Scríobh na hargóintí ar an ngnáthaschur.\n"
+"Scríobhann \"echo\" na hargóintí ar an ngnáthaschur.\n"
" \n"
" Taispeántar na hARGÓINTà ar an ngnáthaschur le carachtair spáis eatarthu "
"agus\n"
@@ -3127,15 +3197,21 @@ msgstr ""
" \\\\\tcúlslais\n"
" \\0nnn\tan carachtar leis an gcód ASCII NNN (ochtnártha). Is féidir le "
"NNN\n"
-" \tbheith 0 go 3 digit ochtnártha ar fhad\n"
+" \t\tbheith 0 go 3 digit ochtnártha ar fhad\n"
" \\xHH\tan carachtar ocht ngiotán leis an luach HH (heicsidheachúlach). "
"Is\n"
-" \tféidir le HH bheith 1 nó 2 digit heicsidheachúlach ar fhad.\n"
+" \t\tféidir le HH bheith 1 nó 2 digit heicsidheachúlach ar fhad.\n"
+" \\uHHHH\tan carachtar Unicode leis an luach heicsidheachúlach HHHH.\n"
+" \t\tIs féidir le HHHH bheith ó 1 go 8 digit heicsidheachúlach ar fhad.\n"
+" \\UHHHHHHHHan carachtar Unicode leis an luach heicsidheachúlach "
+"HHHHHHHH.\n"
+" \t\tIs féidir le HHHHHHHH bheith ó 1 go 8 digit heicsidheachúlach ar "
+"fhad.\n"
" \n"
" Stádas Scortha:\n"
" Aischuirtear rath ach i gcás earráide scríofa."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3157,7 +3233,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear rath ach i gcás earráide scríofa."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3184,7 +3260,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3204,7 +3280,7 @@ msgstr ""
" Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach "
"é."
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3237,15 +3313,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3287,7 +3363,7 @@ msgstr ""
" Aischuirtear rath ach sa chás nach bhfaightear ORDÚ nó go dtarlaíonn\n"
" earráid atreoraithe."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3299,7 +3375,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3312,7 +3388,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3364,10 +3440,11 @@ msgstr ""
"is deireanaí\n"
" a thosaíonn le 'cc', agus ath-ritheann 'r' an t-ordú is deireanaí.\n"
" \n"
-" Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; "
-"neamh-nialas má tharlaíonn earráid."
+" Stádas Scortha:\n"
+" Aischuirtear rath nó stádas an ordaithe rite; neamh-nialas má tharlaíonn "
+"earráid."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3389,7 +3466,7 @@ msgstr ""
" Aischuirtear stádas an ordaithe a cuireadh sa tulra, nó teip má "
"tharlaíonn earráid."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3413,7 +3490,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtarlaíonn earráid nó nach bhfuil\n"
" rialú tascanna cumasaithe."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3459,7 +3536,7 @@ msgstr ""
" Aischuirtear rath ach sa chás nach n-aimsítear AINM, nó go bhfuil\n"
" rogha neamhbhailí ann."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3501,7 +3578,7 @@ msgstr ""
" Aischuirtear rath ach sa chás nach n-aimsítear PATRÚN nó go dtugtar\n"
" rogha neamhbhailí."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3536,7 +3613,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3583,7 +3660,7 @@ msgstr ""
"dtarlaíonn earráid.\n"
" Má úsáidtear -x, aischuirtear an stádas scortha ó ORDÚ. "
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3615,7 +3692,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó "
"SONRÚ_TAISC neamhbhailí."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3666,7 +3743,7 @@ msgstr ""
" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla "
"earráid."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3711,7 +3788,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3763,7 +3840,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3785,7 +3862,7 @@ msgstr ""
" Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme "
"nó scripte."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3871,7 +3948,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3893,7 +3970,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3929,7 +4006,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil "
"AINM neamhbhailí."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3950,7 +4027,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3968,7 +4045,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear rath ach sa chás go bhfuil N diúltach, nó níos mó ná $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3993,7 +4070,7 @@ msgstr ""
"AINM_COMHAID.\n"
" Teipeann air sa chás nach féidir AINM_CHOMHAID a léamh."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4020,7 +4097,7 @@ msgstr ""
" Aischuirtear rath ach sa chás nach bhfuil rialú tascanna cumasaithe,\n"
" nó go dtarlaíonn earráid."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4103,7 +4180,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4116,7 +4193,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4136,7 +4213,7 @@ msgstr ""
" Stádas Scortha:\n"
" Éiríonn leis i gcónaí."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4180,7 +4257,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4210,7 +4287,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4241,6 +4318,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4259,7 +4337,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4293,7 +4371,8 @@ msgstr ""
" Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n"
" nó go sonraítear rogha neamhbhailí."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4304,15 +4383,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Fanann \"wait\" go gcríochnaíonn tasc agus aischuireann a stádas scortha.\n"
" \n"
@@ -4339,7 +4428,7 @@ msgstr ""
"tá\n"
" AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4366,7 +4455,7 @@ msgstr ""
" ordú má tá AITHEANTAS_PRÓISIS neamhbhailí nó má shonraítear\n"
" rogha neamhbhailí."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4388,7 +4477,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4419,7 +4508,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4439,7 +4528,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4468,7 +4557,7 @@ msgstr ""
" Stádas Scortha:\n"
" Is é stadas aischuir PÃBLÃNE an stádas aischuir ó \"time\"."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4486,7 +4575,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4506,8 +4595,22 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
+"Ritheann \"if\" orduithe de réir na sloinn choinníllocha.\n"
+" \n"
+" Ritear an liosta \"if ORDUITHE\". Má tá stádas scortha de náid aige,\n"
+" ritear an liosta \"then ORDUITHE\". Le stádais eile, ritear gach liosta\n"
+" \"elif ORDUITHE\" ceann ar cheann, agus má tá stádas scortha de náid ag\n"
+" ceann acu ritear an liosta \"then ORDUITHE\" cuí agus ansin tá deireadh\n"
+" leis an ordú \"if\".\n"
+" I gcásanna eile, ritear an liosta \"else ORDUITHE\", más ann dó.\n"
+" Is é stádas an chomhstruchtúir iomláin stádas scortha an ordaithe\n"
+" dheireanaigh a ritheadh, nó náid sa chás nach raibh coinníoll\n"
+" ar bith fíor.\n"
+" \n"
+" Stádas Scortha:\n"
+" Aischuirtear stádas scortha an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4525,7 +4628,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe deireanach a ritheadh."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4543,7 +4646,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe deireanach a ritheadh."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4565,7 +4668,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuireann an t-ordú \"coproc\" stádas scortha de 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4589,7 +4692,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear rath mura bhfuil AINM inléite amháin."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4607,7 +4710,7 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an ordaithe dheireanaigh a ritheadh."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4630,12 +4733,13 @@ msgstr ""
" Stádas Scortha:\n"
" Aischuirtear stádas an taisc atosaithe."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4650,7 +4754,7 @@ msgstr ""
" Aischuirtear 1 más 0 an luach atá ag SLONN; aischuirtear 0 i gcásanna "
"eile."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4678,7 +4782,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4731,8 +4835,60 @@ msgid ""
" HISTIGNORE\tA colon-separated list of patterns used to decide which\n"
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-
-#: builtins.c:1811
+"Ainmneacha na n-athróg coitianta agus a n-úsáid. \n"
+" BASH_VERSION\tEolas maidir le leagan an Bash seo.\n"
+" CDPATH\tLiosta deighilte le hidirstaid de chomhadlanna ina dhéanfar\n"
+" \t\tcuardach ar chomhadlanna a shonraítear mar argóintí do \"cd\".\n"
+" GLOBIGNORE\tLiosta deighilte le hidirstaid de phatrúin a dhéanann cur\n"
+" \t\tsíos ar ainmneacha na gcomhad a thabharfar neamhaird orthu.\n"
+" HISTFILE\tAinm an chomhaid ina bhfuil stair do chuid orduithe.\n"
+" HISTFILESIZE\tUasmhéid na línte don chomhad staire.\n"
+" HISTSIZE\tUasmhéid na línte staire atá ar fáil do bhlaosc atá ag rith.\n"
+" HOME\tConair iomlán do chomhadlann logála isteach.\n"
+" HOSTNAME\tAinm an ríomhaire reatha.\n"
+" HOSTTYPE\tCineál an LAP ar a bhfuil an Bash seo ag rith.\n"
+" IGNOREEOF\tRialaíonn sé seo cad a dhéanfaidh an bhlaosc nuair\n"
+" \t\ta fhaigheann sí carachtar EOF mar an t-aon ionchur.\n"
+" \t\tMá tá sé socraithe, glactar leis a luach mar líon na\n"
+" \t\tgcarachtar EOF atá ceadaithe i ndiaidh a chéile ar líne folamh\n"
+" \t\tsula scoirfidh an bhlaosc (10 mar réamhshocrú). Mura\n"
+" \t\tbhfuil sé socruithe, cialaíonn EOF deireadh an ionchuir.\n"
+" MACHTYPE\tTeaghrán ina bhfuil cur síos ar an gcóras ar a bhfuil\n"
+" \t\tan Bash seo ag rith.\n"
+" MAILCHECK\tCé chomh minic, i soicind, a chuardaíonn Bash ríomhphost "
+"nua.\n"
+" MAILPATH\tLiosta deighilte le hidirstaid de chomhadainmneacha a\n"
+" \t\tsheiceálann Bash le haghaidh ríomhphost nua.\n"
+" OSTYPE\tLeagan Unix ar a bhfuil an bhlaosc seo ag rith.\n"
+" PATH\tLiosta deighilte le hidirstaid de chomhadlanna a chuardaíonn Bash\n"
+" \t\tagus orduithe á lorg aige.\n"
+" PROMPT_COMMAND\tOrdú atá le rith roimh priontáil gach phríomhleide.\n"
+" PS1\t\tTeaghrán na príomhleide.\n"
+" PS2\t\tTeaghrán na leide tánaistí.\n"
+" PWD\t\tConair iomlán na comhadlainne reatha.\n"
+" SHELLOPTS\tLiosta deighilte le hidirstaid de na roghanna blaoisce\n"
+" \t\tatá cumasaithe.\n"
+" TERM\tCineál an teirminéil reatha.\n"
+" TIMEFORMAT\tAn fhormáid aschuir le haghaidh na staitisticí ama a\n"
+" \t\tthaispeánann an focal coimeádta \"time\".\n"
+" auto_resume\tCialaíonn neamhnialais go gcuardaítear focal ordaithe\n"
+" \t\tatá ar líne leis féin sa liosta reatha de tascanna stoptha\n"
+" \t\tar dtús. Más ann dó, cuirtear an tasc sin sa tulra.\n"
+" \t\tCialaíonn luach de \"exact\" go bhfuil meaitseáil dhíreach le\n"
+" \t\thordú sa liosta reatha de tascanna stoptha riachtanach.\n"
+" \t\tCialaíonn luach de \"substring\" go bhfuil meaitseáil le\n"
+" \t\tfo-theaghrán den tasc riachtanach.\n"
+" \t\tCialaíonn luach ar bith eile go gaithfidh an t-ordu bheith\n"
+" \t\tina réimír de tasc stoptha.\n"
+" histchars\tNa carachtair a rialaíonn fairsingiú staire agus\n"
+" \t\tionadú mear. Is é an chéad charactar an ceann le haghaidh\n"
+" \t\tfairsingiú staire, \"!\" de ghnáth. Is é an dara charactar an\n"
+" \t\tceann le haghaidh ionadú mear, \"^\" de ghnáth. Is é an triú\n"
+" \t\tceann an carachtar \"nóta tráchta staire\", \"#\" de ghnáth.\n"
+" HISTIGNORE\tLiosta deighilte le hidirstaid de phatrúin a shonraíonn\n"
+" \t\tna horduithe a chuirfear leis an liosta staire.\n"
+
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4791,7 +4947,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
" go dteipeann ar an athrú comhadlainne."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4847,7 +5003,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go sonraítear argóint neamhbhailí, nó\n"
" go dteipeann ar an athrú comhadlainne."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4904,7 +5060,7 @@ msgstr ""
" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla "
"earráid."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4943,7 +5099,7 @@ msgstr ""
"thugtar\n"
" rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4960,8 +5116,8 @@ 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"
@@ -4982,7 +5138,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5004,7 +5160,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5013,7 +5169,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5036,7 +5192,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go "
"dtarlaíonn earráid."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5068,7 +5224,8 @@ msgid ""
" have a completion specification defined."
msgstr ""
"Athraíonn nó taispeánann \"compopt\" na roghanna iomlánaithe.\n"
-" Athraítear na roghanna iomlánaithe le haghaidh gach AINM,\n"
+" \n"
+" Athraítear na roghanna iomlánaithe le haghaidh gach AINM,\n"
" nó gan AINMneacha taispeántar an t-iomlánú atá á dhéanamh faoi láthair.\n"
" Gan ROGHA ar bith, taispeántar na hiomlánaithe le haghaidh gach AINM\n"
" nó an mionsonrú iomlánaithe reatha.\n"
@@ -5095,7 +5252,7 @@ msgstr ""
" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí, nó nach\n"
" bhfuil sonrú iomlánaithe ann le haghaih AINM."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5183,7 +5340,7 @@ msgstr ""
"bhfuil\n"
" EAGAR inléite amháin, nó nach eagar innéacsaithe é EAGAR."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5193,8 +5350,23 @@ msgstr ""
" \n"
" Comhchiallach le \"mapfile\"."
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Cóipcheart © 2012 Free Software Foundation, Inc."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n"
+#~ " \n"
+#~ " Gan SLONN, aischuirtear "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: próiseas %5ld (%s) sa phíblíne"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Comhartha neamhaithnid #"
+
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "Cóipcheart © 2018 Free Software Foundation, Inc."
#~ msgid ":"
#~ msgstr ":"
diff --git a/po/gl.gmo b/po/gl.gmo
index feaa792d..36e79c59 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 081e0a38..ae284189 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -13,89 +13,94 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2012-02-23 14:38+0100\n"
"Last-Translator: Leandro Regueiro <leandro.regueiro@gmail.com>\n"
"Language-Team: Galician <proxecto@trasno.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "subíndice de matriz incorrecto"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: non é posíbel converter a matriz de indizada a asociativa"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: índice de matriz asociativa non válido"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, 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:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: non foi posíbel crear: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: o primeiro carácter que non é espazo en branco non é `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "no hai un `%c' que peche en %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: falta un `:' separador"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "%s: non se pode borrar a asignación"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nome de alias non válido"
@@ -114,22 +119,22 @@ msgstr "`%s': nome de combinación de teclas non válido"
msgid "%s: cannot read: %s"
msgstr "%s: non se pode leer: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': nome de función descoñecido"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s pódese invocar a través de "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "%s: non se pode borrar a asignación"
@@ -143,29 +148,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "só ten significado nun ciclo `for', `while' ou `until'"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Devolve o contexto da chamada a subrutina actual.\n"
" \n"
-" Sen EXPR, devovle "
+" Sen EXPR, devolve \"$liña $nomeficheiro\". Con EXPR, devolve\n"
+" \"$liña $subrutina $nomeficheiro\"; esta información adicional\n"
+" pódese usar para fornecer un volcado de pila.\n"
+" \n"
+" O valor de EXPR indica cantos marcos de chamada se debe retroceder\n"
+" antes do actual; o marco inicial é o marco 0.\n"
+" \n"
+" Estado de Saída:\n"
+" Devolve 0 a menos que o shell non estea executando unha función de "
+"shell\n"
+" ou EXPR sexa non válida."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME non está definido"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "demasiados argumentos"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "non hai outro directorio"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD non está definido"
@@ -184,7 +205,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opción require un argumento"
@@ -199,7 +220,7 @@ msgstr "%s: requírese un argumento numérico"
msgid "%s: not found"
msgstr "%s: non se atopou"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: opción non válida"
@@ -209,7 +230,7 @@ msgstr "%s: opción non válida"
msgid "%s: invalid option name"
msgstr "%s: nome de opción non válido"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': non é un identificador válido"
@@ -222,7 +243,7 @@ msgstr "número octal non válido"
msgid "invalid hex number"
msgstr "número hexadecimal non válido"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "número non válido"
@@ -298,73 +319,83 @@ msgstr "erro ao estabelecer os atributos da terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "erro ao obtener os atributos da terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificación de traballo ambigüa"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: non é posíbel borrar: %s é de só lectura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: non é posíbel borrar"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nome de acción non válido"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: non hai completado de especificación"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "non se está executando a función de completado"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "só se pode usar dentro dunha función"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': nome de alias non válido"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "non se pode use `-f' para facer funcións"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: función de só lectura"
@@ -379,7 +410,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: non é posíbel destruír variábeis de matriz desta forma"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: non é posíbel converter unha matriz asociativa a indizada"
@@ -393,27 +424,32 @@ msgstr "a carga dinámica non está dispoñíbel"
msgid "cannot open shared object %s: %s"
msgstr "non é posíbel abrir o obxecto compartido %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: non foi cargado dinamicamente"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: non foi cargado dinamicamente"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: non foi posíbel eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: é un directorio"
@@ -428,12 +464,12 @@ msgstr "%s: non é un ficheiro regular"
msgid "%s: file is too large"
msgstr "%s: o ficheiro é demasiado grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: non é posíbel executar o ficheiro binario"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: non foi posíbel executar: %s"
@@ -457,15 +493,16 @@ msgstr "Hai traballos pendentes.\n"
msgid "There are running jobs.\n"
msgstr "Hay traballos en execución.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "non foi posíbel atopar a orde"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "especificación de historial"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: non é posíbel abrir o ficheiro temporal: %s"
@@ -493,12 +530,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "coinc\torde\n"
@@ -509,13 +546,19 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, 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:224
#, c-format
@@ -543,21 +586,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posición no historial"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nome de opción non válido"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: fallou a expansión do historial"
@@ -580,7 +623,7 @@ msgstr "%s: os argumentos deben ser procesos ou IDs de traballos"
msgid "Unknown error"
msgstr "Erro descoñecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "agardábase unha expresión"
@@ -589,12 +632,12 @@ msgstr "agardábase unha expresión"
msgid "%s: not an indexed array"
msgstr "%s: non é unha matriz indizada"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificación de descritor de ficheiro non válida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de ficheiro non válido: %s"
@@ -622,36 +665,36 @@ msgstr "nome de variábel de matriz baleiro"
msgid "array variable support required"
msgstr "requírese a compatibilidade de variábel de matriz"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': falta o carácter de formato"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificación de formato de tempo non válida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': carácter de formato non válido"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "falta o díxito hexadecimal para \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "falta o díxito unicode para \\%c"
@@ -803,12 +846,12 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a pila de directorios."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificación de tempo de expiración non válida"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "erro de lectura: %d: %s"
@@ -817,21 +860,11 @@ msgstr "erro de lectura: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "só se pode usar «return» nunha función ou guión lido con «source»"
-#: builtins/set.def:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: non é posíbel borrar"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: non é posíbel borrar: %s é de só lectura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: non é unha variábel de matriz"
@@ -846,7 +879,7 @@ msgstr "%s: non é unha función"
msgid "%s: cannot export"
msgstr "%s: non é posíbel borrar"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "conta de shift"
@@ -854,7 +887,7 @@ msgstr "conta de shift"
msgid "cannot set and unset shell options simultaneously"
msgstr "non é posíbel activar e desactivar opcións do shell simultaneamente"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opción do shell non válido"
@@ -911,26 +944,26 @@ msgstr "%s é %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s está asociado (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: límite de argumento non válido"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': orde errónea"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: non é posíbel obter o límite: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "límite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: non é posíbel modificar o límite: %s"
@@ -990,76 +1023,75 @@ msgstr "salto erróneo"
msgid "%s: unbound variable"
msgstr "%s: variable sen asignar"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aexpirou mentres agardaba algunha entrada: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': carácter de formato non válido"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "erro de canalización"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrinxido: non se pode especificar `/' en nomes de ordes"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: non se atopou a orde"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: intérprete erróneo"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: non é posíbel executar o ficheiro binario"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s é unha orde interna do shell\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "no se pode duplicar o df %d ao df %d"
@@ -1085,62 +1117,67 @@ msgstr "tentouse asignar a algo que non é unha variábel"
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na expresión"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "división entre 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "erro: elemento de asignación de expresión erróneo"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "agardábase `:' para a expresión condicional"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "expoñente menor que 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"agardábase un identificador despois do pre-incremento ou pre-decremento"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "falta un `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: agardábase un operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético non válido"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (o elemento de erro é \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base aritmética non válida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: conta de liñas non válida"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valor demasiado grande para a base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expresión\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: non é posíbel acceder aos directorios pai"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "non é posíbel restabelecer o modo nodelay para o df %d"
@@ -1158,162 +1195,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: tubería de pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "borrando o trabajo detido %d con grupo de proceso %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: o proceso %5ld (%s) en the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: non existe tal pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Feito"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Detido"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Detido(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "En execución"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Feito(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Saída %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Estado descoñecido"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(«core» xerado) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (dir agora: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid fillo (%ld a %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Non hai un rexistro do proceso %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: o traballo %d está detido"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: non existe ese traballo"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: o traballo rematou"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: o trabajo %d xa está en segundo plano"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: actívase WNOHANG para evitar o bloque indefinido"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: liña %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " («core» generado)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir agora: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_jobs_control: fallou getpgrp"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_jobs_control: disciplina de liña"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_jobs_control: disciplina de liña"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_jobs_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "non é posíbel estabelecer o grupo de procesos de terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "non hai control de trabalos nesta shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: fallou a aserción: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1322,40 +1369,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: aserción arruinada\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "descoñecido"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloque na lista libre sobreescrito"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: chamouse cun argumento de bloque previamente liberado"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: chamouse cun argumento de bloque sen asignar"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: os tamaños dos anacos de inicio e fin son diferentes"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamouse cun argumento de bloque sen asignar"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"realloc: detectouse un desbordamento por embaixo; mh_nbytes fóra de rango"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: os tamaños dos anacos de inicio e fin son diferentes"
@@ -1397,23 +1455,23 @@ msgstr "%s: especificación de ruta de rede errónea"
msgid "network operations not supported"
msgstr "non hai compatibilidade para operacións de rede"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL non se pode cambiar a configuración rexional (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
"setlocale: LC_ALL: non se pode cambiar a configuración rexional (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: non se pode cambiar a configuración rexional (%s): %s"
@@ -1453,118 +1511,118 @@ msgstr "make_here_document: tipo de instrución %d erróneo"
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-"o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `%"
-"s')"
+"o documento-aquí na liña %d está delimitado por fin-de-fichero (agardábase `"
+"%s')"
#: make_cmd.c:756
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: a instrucción de redirección `%d' está fóra de rango"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado mentres se buscaba un `%c' coincidente"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado mentres se buscaba `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "error de sintaxe na expresión condicional: elemento inesperado `%s'"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "error sintáctico na expresión condicional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "elemento inesperado `%s', agardábase `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "agardábase `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para o operador unario condicional"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para o operador unario condicional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "elemento inesperado `%s', agardábase un operador binario condicional"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "agardábase un operador binario condicional"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para o operador binario condicional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para o operador binario condicional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "elemento inesperado `%c' na orde condicional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "elemento inesperado `%s' na orde condicional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "elemento inesperado %d na orde condicional"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "error de sintaxe perto do elemento inesperado `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe cerca de «%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "error de sintaxe: non se agardaba o final do fichero"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use «%s» para deixar o shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF non agardado mentres se buscaba un «)» coincidente"
@@ -1607,89 +1665,89 @@ msgstr "xtrace fd (%d) != numfich xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': carácter de formato non válido"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descritor de ficheiro fóra de rango"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamento ambigüo"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: non se pode sobreescribir un fichero existente"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restrinxido: no se pode redirixir a saída"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: non é posíbel asignar o gd á variábel"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "non se admite /dev/(tcp|udp)/anfitrion/porto sen rede"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redirección: non é posíbel duplicar o fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "non é posíbel atopar /tmp, por favor creeo!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp debe ser un nome de directorio válido"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opción non válida"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: é un directorio"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Non teño nome!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versión %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1698,318 +1756,314 @@ msgstr ""
"Uso:\t%s [opción GNU longa] [opción] ...\n"
"\t%s [opción GNU longa] [opción] guión-do-shell\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Opcións GNU longas:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opcións do shell:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o opción\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use a orden `bashbug' para reportar erros.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operación non válida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Sinal ambigüa"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Colgar"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Saír"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instrución ilegal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT rastreo/captura"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "instrución ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "instrución EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Excepción de coma flotante"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Matado"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Erro no bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Violación de segmento"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Chamada ao sistema errónea"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Tubería rota"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Temporizador"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Rematado"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condicón de E/s urxente"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Detido (sinal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continúa"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "O proceso fillo morreu ou está parado"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Detido (entrada pola terminal)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Detido (saída pola terminal)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "E/S listas"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Límite de CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Límite de ficheiros"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarma (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarma (contorno)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Xanela cambiada"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Bloqueo de gravación"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Sinal de usuario 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Sinal de usuario 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "entrada de datos HFT pendente"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "fallo de enerxía inminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "caída do sistema inminente"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrando o proceso a outra CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "erro de programación"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "o modo monitor HFT foi concedido"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "o modo monitor HTF foi retirado"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "a secuencia de son HFT foi completada"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Solicitude de información"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Sinal descoñecido #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal descoñecido #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, 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:3231
+#: subst.c:3281
#, 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:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "non é posíbel crear a tubería para a sustitución do proceso"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "non é posíbel crear un proceso fillo para a substitución do proceso"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "non é posíbel abrir a tubería chamada %s para lectura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "non é posíbel abrir a tubería chamada %s para escritura"
-#: subst.c:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "non é posíble crear a tubería para a substitución da orde"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "non é posíbel crear un proceso fillo para a substitución da orde"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: non é posíbel duplicar a tubería como fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, 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:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: conta de liñas non válida"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "`%s': nome de alias non válido"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parámetro nulo ou non estabelecido"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parámetro nulo ou non estabelecido"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expresión de subcadea < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitución errónea"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: non é posíbel asignar de esta forma"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2017,12 +2071,12 @@ msgstr ""
"versiones futuras do intérprete obligarán a evaluación como unha "
"substitución aritmética"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substitución errónea: non hai unha \"`\" que peche en %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "non hai concidencia: %s"
@@ -2045,35 +2099,40 @@ msgstr "agardábase `)'"
msgid "`)' expected, found %s"
msgstr "`)' agardábase, atopouse %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: agardábase un operador unario"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: agardábase un operador binario"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: agardábase un operador unario"
+
+#: test.c:881
msgid "missing `]'"
msgstr "falta un «]»"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "error sintáctico: `;' non esperado"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "número de sinal non válido"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2081,87 +2140,87 @@ msgstr ""
"run_pending_traps: o manexador de sinal é SIG_DFL, reenviando %d (%s) a sí "
"mesmo"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal errónea %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar a definición da función para «%s»"
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: non é posíbel asignar o gd á variábel"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s ten exportstr nulo"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter non válido %d en exportsrt para %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "non hai «=» en exportstr para %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: non é un contexto global_variables "
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: non é posíbel abrir como FICHEIRO"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s fóra de rango"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
msgid ""
@@ -2255,12 +2314,12 @@ msgstr "command [-pVv] orde [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrtux] [-p] [nome[=valor] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilrtux] [-p] nome[=valor] ..."
#: builtins.c:82
@@ -2284,11 +2343,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts cadena_opcións nome [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a ome] [orde [argumentos ...]] [redirección ...]"
#: builtins.c:100
@@ -2420,7 +2481,7 @@ msgstr "umask [-p] [-S] [modo]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2514,7 +2575,7 @@ msgstr "printf [-v var] formato [argumentos]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o opción] [-A acción] [-G patglob] [-"
@@ -2524,8 +2585,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2927,6 +2988,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2954,7 +3017,7 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -2965,7 +3028,7 @@ msgstr ""
" \n"
" Obsoleto. Consulte `help declare'."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -2992,7 +3055,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:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3032,7 +3095,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3045,7 +3108,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3072,7 +3135,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3091,7 +3154,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado de saida da orde ou éxito se a orde é nula."
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3124,15 +3187,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3155,7 +3218,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3167,7 +3230,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3180,7 +3243,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3210,7 +3273,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3231,7 +3294,7 @@ msgstr ""
" O estado da orde localizada en primeiro plano, ou falla se sucede un "
"erro."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3245,7 +3308,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3269,7 +3332,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3291,7 +3354,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3326,7 +3389,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3350,7 +3413,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3367,7 +3430,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3390,7 +3453,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3435,7 +3498,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3487,7 +3550,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3499,7 +3562,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3585,7 +3648,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3607,7 +3670,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3626,7 +3689,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3647,7 +3710,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3658,7 +3721,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3672,7 +3735,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3698,7 +3761,7 @@ msgstr ""
" Devolve con éxito a menos que non estea activo o control de traballos o\n"
" se produza un erro."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3781,7 +3844,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3793,7 +3856,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3812,7 +3875,7 @@ msgstr ""
" Estado de saída:\n"
" Sempre con éxito."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3856,7 +3919,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3886,7 +3949,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3917,6 +3980,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3935,7 +3999,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3953,7 +4017,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3964,18 +4028,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4000,7 +4074,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:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4022,7 +4096,7 @@ msgstr ""
" Estado de Saída:\n"
" Devuelve o estado da última orden executada."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4052,7 +4126,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4072,7 +4146,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4088,7 +4162,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4106,7 +4180,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4127,7 +4201,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4145,7 +4219,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4163,7 +4237,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -4186,7 +4260,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado de saída da ORDE."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4200,7 +4274,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4218,7 +4292,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve o estado da última orde executada."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4232,12 +4306,13 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4250,7 +4325,7 @@ msgstr ""
" Estado de Saída:\n"
" Devolve 1 se a EXPRESIÓN avalía a 0; devovle 0 de outra maneira."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4278,7 +4353,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4332,7 +4407,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -4381,7 +4456,7 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a rima de directorios."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -4428,7 +4503,7 @@ msgstr ""
" \n"
" A orde interna `dirs' mostra a pila de directorios."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -4478,7 +4553,7 @@ msgstr ""
"\tlista mostrada por dirs cando se chama sen opcións,\n"
"\tcomezando desde cero."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -4515,7 +4590,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:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4532,8 +4607,8 @@ 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"
@@ -4554,7 +4629,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4576,7 +4651,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4585,7 +4660,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4607,7 +4682,7 @@ msgstr ""
" Devolve con éxito a menos que se forneza unha opción non válida o\n"
" se produza un erro."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4639,7 +4714,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4681,7 +4756,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -4691,8 +4766,24 @@ msgstr ""
" \n"
" Un sinónimo de `mapfile'."
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Devolve o contexto da chamada a subrutina actual.\n"
+#~ " \n"
+#~ " Sen EXPR, devovle "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: o proceso %5ld (%s) en the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Sinal descoñecido #"
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/hr.gmo b/po/hr.gmo
index 44224b1e..513672e7 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index 14e12dea..08e58251 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -3,83 +3,84 @@
# This file is distributed under the same license as the bash package.
#
# Tomislav Krznar <tomislav.krznar@gmail.com>, 2012, 2013.
-# Božidar Putanec <bozidarp@yahoo.com>, 2018.
+# Božidar Putanec <bozidarp@yahoo.com>, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-05 17:31-0800\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-11-22 13:25-0800\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
+"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: hr\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 2.2\n"
-"X-Poedit-Basepath: ../sources\n"
-"X-Poedit-SearchPath-0: .\n"
-"X-Poedit-SearchPath-1: bash-5.0-beta2\n"
-"X-Poedit-SearchPath-2: bash-5.0-beta2/builtins\n"
-
-#: arrayfunc.c:58
+"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 2.0\n"
+
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "nevaljani indeks polja"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: uklanja se atribut nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nije moguće pretvoriti indeksirano u asocijativno polje"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: nevaljani kljuÄ asocijativnoga polja"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: indeks mora biti numeriÄki"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: mora se koristiti indeks pri dodijeli asocijativnoga polja"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nije moguće napraviti: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: nije moguće pronaći keymap za naredbu"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvi znak, koji nije bjelina, nije „\"“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "nema zakljuÄnoga „%c“ u %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: nema razdjelnika dvotoÄke"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: nije moguće razvezati"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
@@ -87,21 +88,21 @@ msgstr ""
"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)"
# Brace expansion is a mechanism by which arbitrary strings may be generated
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
"brace expansion: nije uspjelo dodijeliti memoriju za %u elemenata\n"
"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
"brace expansion: nije uspjelo dodijeliti memoriju za „%s“\n"
"(primjer ekspanzije unutar vitiÄastih zagrada: echo a{d,c}e -> ade, ace)"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: nevaljano ime aliasa"
@@ -120,22 +121,22 @@ msgstr "„%s“: nevaljano ime za keymap"
msgid "%s: cannot read: %s"
msgstr "%s: nije moguće proÄitati: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: nepoznato ime funkcije"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s nije vezano s nijednom tipkom.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s se može pozvati pomoću "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: nije moguće razvezati"
@@ -149,28 +150,42 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "ima znaÄenje samo u „for“, „while“ ili „until“ petljama"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
-msgstr ""
-"Vraća kontekst od trenutaÄnoga poziva funkciji.\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"
-" Bez EXPR, rezultati "
+" The value of EXPR indicates how many call frames to go back before the\n"
+" current one; the top frame is frame 0."
+msgstr ""
+"Vrati kontekst trenutnog poziva potprogramu.\n"
+"\n"
+" Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n"
+" „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n"
+" za „stack trace“.\n"
+"\n"
+" Vrijednost IZRAZA pokazuje koliko se treba vratiti unatrag od\n"
+" trenutne pozicije, s time da je pozicija 0 trenutna pozicija.\n"
+"\n"
+" ZavrÅ¡i s kÈdom 0 osim ako ljuska ne izvrÅ¡ava ljuskinu funkciju\n"
+" ili je IZRAZ nevaljani."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME varijabla nije definirana"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "previše argumenata"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null direktorij"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD nije postavljeni"
@@ -189,7 +204,7 @@ msgstr "upozorenje: "
msgid "%s: usage: "
msgstr "%s: uporaba: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: opcija zahtijeva argument"
@@ -204,7 +219,7 @@ msgstr "%s: zahtijeva se numeriÄki argument"
msgid "%s: not found"
msgstr "%s: nije pronađeno"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: nevaljana opcija"
@@ -214,7 +229,7 @@ msgstr "%s: nevaljana opcija"
msgid "%s: invalid option name"
msgstr "%s: nevaljano ime opcije"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: nije valjani identifikator"
@@ -227,7 +242,7 @@ msgstr "nevaljani oktalni broj"
msgid "invalid hex number"
msgstr "nevaljani heksadecimalni broj"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "nevaljani broj"
@@ -291,7 +306,7 @@ msgstr "%s: nije ugrađena bash naredba"
#: builtins/common.c:323
#, c-format
msgid "write error: %s"
-msgstr "greška pisanja: %s"
+msgstr "greška pri pisanja: %s"
#: builtins/common.c:331
#, c-format
@@ -303,73 +318,83 @@ msgstr "greška pri postavljanju svojstava terminala: %s"
msgid "error getting terminal attributes: %s"
msgstr "greška pri preuzimanju svojstava terminala: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s: nije moguće pronaći trenutaÄno direktorij: %s: %s\n"
+msgstr "%s: nije moguće pronaći trenutni direktorij: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s: dvosmisleni pokazatelj posla"
+msgstr "%s: viÅ¡eznaÄni pokazatelj posla"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "u ovoj inaÄici pomoć nije ugraÄ‘ena"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nije moguće poniÅ¡titi: %s je moguće samo Äitati"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nije moguće poništiti"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nevaljano ime za akciju"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: dovršavanje nije specificirano"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "upozorenje: opcija -F možda neće raditi prema oÄekivanju"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "upozorenje: opcija -C možda neće raditi prema oÄekivanju"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
-msgstr "trenutaÄno se ne izvrÅ¡ava funkcija kompletiranja"
+msgstr "trenutno se ne izvršava funkcija kompletiranja"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "može se koristiti samo u funkciji"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referentna varijabla ne može biti polje"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: varijabla nameref ukazuje na samu sebe, a to nije dopušteno"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: kružna referencija na ime"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: nevaljano ime varijable za referenciju na ime"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "„-f“ se ne može koristiti za definiranje funkcije"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcija samo za Äitanje"
@@ -384,7 +409,7 @@ msgstr "%s: dodjeljivanje citiranoga složenog polja je zastarjelo"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nije moguće uniÅ¡titi varijable polja na ovaj naÄin"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nije moguće pretvoriti asocijativno u indeksirano polje"
@@ -398,27 +423,32 @@ msgstr "dinamiÄko uÄitavanje nije dostupno"
msgid "cannot open shared object %s: %s"
msgstr "nije moguće otvoriti dijeljeni objekt %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nije moguće pronaći %s u dijeljenom objektu %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: nije dinamiÄki uÄitan"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "funkcija uÄitavanja za %s zavrÅ¡ila je s pogreÅ¡kom (%d): nije uÄitano"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nije dinamiÄki uÄitan"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nije moguće izbrisati: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: to je direktorij"
@@ -433,12 +463,12 @@ msgstr "%s: nije obiÄna datoteka"
msgid "%s: file is too large"
msgstr "%s: datoteka je prevelika"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nije moguće izvršiti binarnu datoteku"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nije moguće izvršiti: %s"
@@ -463,22 +493,23 @@ msgstr "Ima zaustavljenih poslova.\n"
msgid "There are running jobs.\n"
msgstr "Ima pokrenutih poslova.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "naredba nije pronađena"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "prikaz povijesti naredbi"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: nije moguće otvoriti privremenu datoteku: %s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
-msgstr "trenutaÄno"
+msgstr "trenutno"
#: builtins/fg_bg.def:161
#, c-format
@@ -499,12 +530,12 @@ msgstr "%s: opcija zahtijeva argument -- %c\n"
msgid "hashing disabled"
msgstr "hash-tablica je onemogućena"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: hash-tablica je prazna\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "pogodci\tnaredba\n"
@@ -516,6 +547,12 @@ msgstr[0] "Naredba koja odgovara kljuÄnoj rijeÄi „"
msgstr[1] "Naredbe koje odgovaraju kljuÄnim rijeÄima „"
msgstr[2] "Naredbi koje odgovaraju kljuÄnim rijeÄima „"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -549,21 +586,21 @@ 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 "smije se rabiti samo jedna od opcija -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "mjesto u povijesti naredbi"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
-msgstr "%s: nevaljana vremenska oznaka"
+msgstr "%s: nevaljani vremenski žig"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: proširenje povijesti nije uspjelo"
@@ -586,7 +623,7 @@ msgstr "%s: argumenti moraju biti ID-ovi procesa ili posla"
msgid "Unknown error"
msgstr "Nepoznata greška"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "oÄekivao se izraz"
@@ -595,12 +632,12 @@ msgstr "oÄekivao se izraz"
msgid "%s: not an indexed array"
msgstr "%s: nije indeksirano polje"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: nevaljana specifikacija deskriptora datoteke"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: nevaljani deskriptor datoteke: %s"
@@ -628,36 +665,36 @@ msgstr "prazno ime varijable polja"
msgid "array variable support required"
msgstr "potrebna podrška varijable polja nije podržana u ovoj ljusci"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: nedostaje znak za format"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: nevaljana specifikacija za format vremena"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: nevaljani znak za format"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "upozorenje: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "greška pri analizi: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "nedostaje heksadecimalna znamenka za \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "nedostaje unicode znamenka za \\%c"
@@ -673,7 +710,7 @@ msgstr "%s: nevaljani argument"
#: builtins/pushd.def:480
msgid "<no current directory>"
-msgstr "<nema trenutaÄnog direktorija>"
+msgstr "<nema trenutnog direktorija>"
#: builtins/pushd.def:524
msgid "directory stack empty"
@@ -681,7 +718,7 @@ msgstr "snop direktorija je prazan"
#: builtins/pushd.def:526
msgid "directory stack index"
-msgstr "indeks stoga direktorija"
+msgstr "indeks snopa direktorija"
#: builtins/pushd.def:701
msgid ""
@@ -706,7 +743,7 @@ msgid ""
"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"Pokaže popis trenutaÄno zapamćenih direktorija. Direktoriji se unose\n"
+"Pokaže popis trenutno zapamćenih direktorija. Direktoriji se unose\n"
" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n"
"\n"
" Opcije:\n"
@@ -748,7 +785,7 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
"Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n"
-" uÄini novi vrh snopa trenutaÄnim radnim direktorijem. Bez argumenata\n"
+" uÄini novi vrh snopa trenutnim radnim direktorijem. Bez argumenata\n"
" razmijeni pozicije dva direktorija na vrhu snopa.\n"
"\n"
" Opcije:\n"
@@ -765,9 +802,9 @@ msgstr ""
" desne strane popisa prikazanoga s „dirs“) postane novi vrh "
"snopa.\n"
" DIREKTORIJ Doda DIREKTORIJ na vrh snopa direktorija i\n"
-" uÄini ga novim aktualnim radnim direktorijem.\n"
+" uÄini ga novim trenutnim radnim direktorijem.\n"
"\n"
-" Naredba „dirs“ prikaže trenutaÄni sadržaj snopa direktorija."
+" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija."
#: builtins/pushd.def:748
msgid ""
@@ -804,37 +841,27 @@ msgstr ""
" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
"\n"
-" Naredba „dirs“ prikaže trenutaÄni sadržaj snopa direktorija."
+" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: nevaljana specifikacija za istek vremena"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
-msgstr "greÅ¡ka Äitanja: %d: %s"
+msgstr "greÅ¡ka pri Äitanju: %d: %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
msgstr "„return“ je mogući samo iz funkcije ili iz pokrenute skripte"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "nije moguće istovremeno poništiti funkciju i varijablu"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nije moguće poništiti"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nije moguće poniÅ¡titi: %s je moguće samo Äitati"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nije varijabla polja"
@@ -849,7 +876,7 @@ msgstr "%s: nije funkcija"
msgid "%s: cannot export"
msgstr "%s: nije moguće eksportirati"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "brojaÄ pomaka"
@@ -857,7 +884,7 @@ msgstr "brojaÄ pomaka"
msgid "cannot set and unset shell options simultaneously"
msgstr "nije moguće istovremeno postaviti i poništiti opcije ljuske"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nevaljano ime za opciju ljuske"
@@ -914,26 +941,26 @@ msgstr "%s je %s\n"
msgid "%s is hashed (%s)\n"
msgstr "za %s izraÄunata hash vrijednost (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: nevaljani argument za ograniÄenje"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c“: loša naredba"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nije moguće dobiti ograniÄenje: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ograniÄenje"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nije moguće promijeniti ograniÄenje: %s"
@@ -993,76 +1020,75 @@ msgstr "loši skok"
msgid "%s: unbound variable"
msgstr "%s: nepovezana varijabla"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\avrijeme Äekanja na ulaz je isteklo: automatska-odjava\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nije moguće preusmjeriti standardni ulaz iz /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: nevaljani znak za format"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "greška cijevi"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: prekoraÄena je dopuÅ¡tena razina eval gniježđenja (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: prekoraÄena je dopuÅ¡tena razina source gniježđenja (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: prekoraÄena je dopuÅ¡tena razina gniježđenja funkcije (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ograniÄeni naÄin: znak „/“ nije dopuÅ¡ten u imenima naredba"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: naredba nije pronađena"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: loši interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: binarnu datoteku %s nije moguće pokrenuti/izvršiti"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“ je specijalna funkcija ugrađena u ljusku"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nije moguće kopirati deskriptor datoteke %d u deskriptor datoteke %d"
@@ -1085,63 +1111,68 @@ msgstr "vrijednost se može dodijeliti samo varijabli"
#: expr.c:530
msgid "syntax error in variable assignment"
-msgstr "sintaktiÄka greÅ¡ka zadavanja varijable"
+msgstr "sintaktiÄka greÅ¡ka u zadavanju varijable"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "dijeljenje s 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "**interna greška** : loši token u izrazu za dodjelu"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "znak „:“ je nužan u uvjetnom izrazu"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponent je manji od 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "nakon pre-increment ili pre-decrement oÄekuje se identifikator"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "nema „)“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "sintaktiÄka greÅ¡ka: oÄekivao se operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "sintaktiÄka greÅ¡ka: nevaljani aritmetiÄki operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (simbol greške je „%s“)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "nevaljana aritmetiÄka baza"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: nevaljani koliÄina redaka"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "vrijednost baze je prevelika"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: greška u izrazu\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd(): nije moguće pristupiti nadređenim direktorijima"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "ne može se onemogućiti nodelay naÄin za deskriptor datoteke %d"
@@ -1156,161 +1187,171 @@ msgstr "nije moguće dodijeliti novi datoteÄni deskriptor 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline(): pgrp pipe (procesna grupa cijevi)"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "potproces PID %d javlja se u pokrenutom poslu %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "uklanja se zaustavljeni posao %d s grupom procesa %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process(): proces %5ld (%s) u cjevovodu"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process(): PID %5ld (%s) oznaÄen kao joÅ¡ uvijek aktivan"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid(): %ld: PID ne postoji"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Gotovo"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Zaustavljeno"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Zaustavljeno(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Pokrenuto"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Gotovo(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
-msgstr "Izlaz %d"
+msgstr "Završi %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Nepoznati status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
-msgstr "(stanje memorije zapisano) "
+msgstr "(**krah**: stanje (dump) memorije je zapisano!) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "postavljanje procesne grupe %2$ld od potomka %1$ld"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: PID %ld nije potomak ove ljuske"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: nema zapisa o procesu %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: posao %d je zaustavljen"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: nema takvoga posla"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: posao je prekinut"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: posao %d je već u pozadini"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld(): omogući WNOHANG da se izbjegne neodređeno blokiranje"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: redak %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
-msgstr " (stanje memorije zapisano)"
+msgstr " (**krah**: stanje (dump) memorije je zapisano!)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(radni direktorij je sada: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: neuspješni getpgrp()"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: nema kontrole nad pozadinskim poslovima"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nije moguće postaviti procesnu grupu (%d) terminala"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "nema kontrole nad poslovima u ovoj ljusci"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc(): neuspješni kontrolni test: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1319,39 +1360,49 @@ msgstr ""
"\r\n"
"malloc(): %s:%d: loše provedena proba\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "nepoznato"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc(): prepisani je blok na popisu slobodne memorije"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free(): pozvan s argumentom za već slobodni memorijski blok"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free(): pozvan s argumentom za ne dodijeljeni memorijski blok"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free(): otkriveni je podljev, mh_nbytes ispod granica"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free(): veliÄine segmenta od poÄetka i kraja su razliÄite"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc(): pozvan s argumentom za ne dodijeljeni memorijski blok"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc(): otkriveni je podljev, mh_nbytes ispod granica"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc(): veliÄine segmenta od poÄetka i kraja su razliÄite"
@@ -1393,22 +1444,22 @@ msgstr "%s: loša specifikacija za mrežnu stazu"
msgid "network operations not supported"
msgstr "mrežne operacije nisu podržane"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale(): LC_ALL: nije moguće promijeniti jeziÄno podruÄje (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale(): %s: nije moguće promijeniti jeziÄno podruÄje (%s): %s"
@@ -1455,7 +1506,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1464,103 +1515,103 @@ msgstr ""
"shell_getc(): shell_input_line_size (%zu) je veća od SIZE_MAX (%lu): "
"skraćuje se"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maksimalni broj za here-document je prekoraÄeni"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "neoÄekivani EOF pri traženju odgovarajućeg „%c“"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "neoÄekivani EOF pri traženju „]]“"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu: neoÄekivani token „%s“"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "sintaktiÄka greÅ¡ka u uvjetnom izrazu"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄekivani token „%s“ umjesto oÄekivane „)“"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "oÄekivana je „)“"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "neoÄekivani argument „%s“ uvjetnom unarnom operatoru"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄekivani argument za uvjetni unarni operator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "neoÄekivani token „%s“; oÄekivao se uvjetni binarni operator"
+msgstr "neoÄekivani token „%s“; oÄekivan je uvjetni binarni operator"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
-msgstr "oÄekivao se uvjetni binarni operator"
+msgstr "oÄekivan je uvjetni binarni operator"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "neoÄekivani argument „%s“ za uvjetni binarni operator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄekivani argument za uvjetni binarni operator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄekivani token „%c“ u uvjetnoj naredbi"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄekivani token „%s“ u uvjetnoj naredbi"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄekivani token %d u uvjetnoj naredbi"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "sintaktiÄka greÅ¡ka blizu neoÄekivanog tokena „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "sintaktiÄka greÅ¡ka blizu „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "sintaktiÄka greÅ¡ka: neoÄekivani kraj datoteke"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "sintaktiÄka greÅ¡ka"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Koristite \"%s\" da napustite ljusku.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "neoÄekivani EOF pri traženju odgovarajuće „)“"
@@ -1603,89 +1654,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf(): „%c“: nevaljani znak za format"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "deskriptor datoteke je izvan raspona"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
-msgstr "%s: dvosmisleno preusmjeravanje"
+msgstr "%s: viÅ¡eznaÄno preusmjeravanje"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nije moguće pisati preko postojeće datoteke"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ograniÄeno: nije moguće preusmjeriti izlaz"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nije moguće napraviti privremenu datoteku za here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nije moguće dodijeliti deskriptor datoteke varijabli"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "greška preusmjeravanja: nije moguće kopirati deskriptor datoteke"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
-msgstr "nije bilo moguće pronaći /tmp; napravite taj direktorij!"
+msgstr "nije moguće pronaći /tmp; napravite taj direktorij!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
-msgstr "/tmp mora biti ispravno ime direktorija"
+msgstr "/tmp mora biti valjano ime direktorija"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "u interaktivnoj ljusci pretty-printing se ignorira"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: nevaljana opcija"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nije moguće postaviti UID na %d: efektivni UID je %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nije moguće postaviti GID na %d: efektivni GID je %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "nije moguće pokrenuti debugger; debugiranje je onemogućeno"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: to je direktorij"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nemam ime!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, inaÄica %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1694,329 +1745,326 @@ msgstr ""
"Uporaba: %s [GNU dugaÄka opcija] [opcija] ...\n"
" %s [GNU dugaÄka opcija] [opcija] skripta ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU dugaÄke opcije:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opcije ljuske:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD ili -c NAREDBA ili -O SHOPT-OPCIJA (samo za pokretanje)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ili -o opcija\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"„%s -c \"help set\"“ pokaže vam dodatne informacije o opcijama ljuske.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"„%s -c help set“ pokaže vam više informacija o ugrađenim funkcijama "
"ljuske.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Koristite naredbu „bashbug“ za prijavljivanje grešaka.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash Web stranica: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Općenita pomoć za korištenje GNU softvera: <http://www.gnu.org/gethelp/>\n"
+"Prijavite primjedbe i greške u prijevoda na lokalizacija@linux.hr/\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask(): %d: nevaljana operacija"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Lažni signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
-msgstr "Završetak"
+msgstr "Poklopi"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
-msgstr "Prekid"
+msgstr "Prekini"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
-msgstr "Izlaz"
+msgstr "Završi"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Nedopuštena instrukcija"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trag/zamka instrukcija (Trace/Breakpoint trap)"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT instrukcija"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT instrukcija"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
-msgstr "Iznimka/greška u radu s realnim brojem"
+msgstr "Iznimka (broja) s pomiÄnim zarezom"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Ubijen"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
-msgstr "Greška adresiranja"
+msgstr "Greška sabirnice"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmentacijska greška"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Loši sustavski poziv"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Prekinuta cijev"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Budilica"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Završeno"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Hitno U/I stanje"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Zaustavljeno (signalom)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Nastavljanje"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Potomak-proces ubijen ili zaustavljen"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Zaustavljen (tty ulaz)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Zaustavljen (tty izlaz)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "U/I je spreman"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "OgraniÄenje procesora"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "OgraniÄenje datoteke"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtualni)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Prozor promijenjen"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Zapis zakljuÄan"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "KorisniÄki signal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "KorisniÄki signal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT ulazni podaci Äekaju"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
-msgstr "prekid napajanja je neizbježan"
+msgstr "nestanak struje je neizbježan"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "rušenje sustava je neizbježno"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "preseli proces na drugi procesor"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "greška programiranja"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT nadzor dopušten"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT nadzor oduzet"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT sekvencija zvukova je završena"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Zahtjev za informacijom"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Nepoznati signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nepoznati signal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "loÅ¡a supstitucija: nema zakljuÄnoga „%s“ u %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nije moguće dodijeliti popis elementu polja"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "nije moguće napraviti cijev za zamjenu procesa"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "nije moguće napraviti potomka za zamjenu procesa"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nije moguće otvoriti imenovanu cijev %s za Äitanje"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nije moguće otvoriti imenovanu cijev %s za pisanje"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nije moguće kopirati imenovanu cijev %s kao deskriptor datoteke %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "nevaljana supstitucija: ignorirani NULL bajt na ulazu"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "nije moguće napraviti cijev za zamjenu naredbi"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "nije moguće napraviti potomka za zamjenu naredbi"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute(): nije moguće kopirati cijev kao deskriptor datoteke 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nevaljano ime varijable za naziv referencije"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: nevaljana indirektna ekspanzija"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: nevaljano ime varijable"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametar nije postavljen"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: prazni parametar ili nije postavljen"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: rezultat od izraza dijela stringa < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: loša supstitucija"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nije moguće dodijeliti na ovaj naÄin"
-#: subst.c:9485
+#: subst.c:9814
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 supstituciju"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "loÅ¡a supstitucija: nema zakljuÄnoga znaka „`“ u %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "nema podudaranja: %s"
@@ -2039,35 +2087,40 @@ msgstr "oÄekivana je „)“"
msgid "`)' expected, found %s"
msgstr "oÄekuje se „)“, naÄ‘en %s"
-#: test.c:282 test.c:750 test.c:753
+#: test.c:466 test.c:799
#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: oÄekuje se unarni operator"
+msgid "%s: binary operator expected"
+msgstr "%s: oÄekivan je binarni operator"
-#: test.c:469 test.c:793
+#: test.c:756 test.c:759
#, c-format
-msgid "%s: binary operator expected"
-msgstr "%s: oÄekuje se binarni operator"
+msgid "%s: unary operator expected"
+msgstr "%s: oÄekivan je unarni operator"
-#: test.c:875
+#: test.c:881
msgid "missing `]'"
msgstr "nedostaje „]“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "sintaktiÄka greÅ¡ka: neoÄekivani „;“ znak"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "nevaljani broj za signal"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: prekoraÄena je dopuÅ¡tena razina gniježđenja (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps(): loša vrijednost u trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2075,84 +2128,85 @@ msgstr ""
"run_pending_traps: signalom manipulira SIG_DFL, opet Å¡alje %d (%s) na samoga "
"sebe"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler(): loši signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "greška pri importiranju definicije funkcije za „%s“"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "razina ljuske (%d) je previsoka, vraća se na 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
-msgstr "make_local_variable(): u trenutaÄnom podruÄju nema konteksta funkcije"
+msgstr "make_local_variable(): u trenutnom podruÄju nema konteksta funkcije"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: varijabli se ne može dodijeliti vrijednost"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: nazivu referencije se pripisuje cijeli broj"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables(): u trenutaÄnom podruÄju nema konteksta funkcije"
+msgstr "all_local_variables(): u trenutnom podruÄju nema konteksta funkcije"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "*** %s ima prazni exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "*** nevaljani znak %d u exportstr za %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "*** nema „=“ u exportstr za %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context(): vrh od „shell_variables“ nije funkcijski kontekst"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context(): nije „global_variables“ kontekst"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope(): vrh od „shell_variables“ nije privremeni kontekst okoline"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nije moguće otvoriti kao DATOTEKU"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nevaljana vrijednost za praćenje deskriptora datoteke"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s vrijednost za kompatibilnost je izvan raspona"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
msgid ""
@@ -2169,7 +2223,7 @@ msgstr "GNU bash, inaÄica %s (%s)\n"
#: version.c:91 version2.c:91
msgid "This is free software; you are free to change and redistribute it."
-msgstr "Ovo je slobodni softver; slobodno ga mijenjajte i dijelite."
+msgstr "Ovo je slobodan softver: slobodno ga mijenjajte i dijelite."
#: version.c:92 version2.c:92
msgid "There is NO WARRANTY, to the extent permitted by law."
@@ -2242,11 +2296,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] NAREDBA [ARGUMENT...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [IME[=VRIJEDNOST]...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] IME[=VRIJEDNOST]..."
#: builtins.c:82
@@ -2270,11 +2326,13 @@ msgid "eval [arg ...]"
msgstr "eval [ARGUMENT...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts OPCIJA_STRING IME [ARGUMENT]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a IME] [NAREDBA [ARGUMENT...]] [PREUSMJERAVANJE...]"
#: builtins.c:100
@@ -2405,7 +2463,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [MODE]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [ID...]"
#: builtins.c:181
@@ -2497,9 +2556,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v VARIJABLA] FORMAT [ARGUMENTI]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPCIJA] [-A AKCIJA]\n"
@@ -2507,9 +2567,10 @@ msgstr ""
" [-S SUFIKS] [-W POPIS_RIJEÄŒI] [-X FILTAR_UZORAKA] [IME...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 OPCIJA] [-A AKCIJA] [-C NAREDBA]\n"
" [-F FUNCIJA] [-G GLOB_UZORAK] [-P PREFIKS] [-S SUFIKS]\n"
@@ -2728,14 +2789,14 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
-"Vrati kontekst trenutaÄnoga poziva potprogramu.\n"
+"Vrati kontekst trenutnog poziva potprogramu.\n"
"\n"
" Bez IZRAZA, vrati „$line $filename“. Ako je dȃn IZRAZ, vrati\n"
" „$line $subroutine $filename“; ova dodatna informacija može poslužiti\n"
" za „stack trace“.\n"
"\n"
-" Vrijednost IZRAZA pokazuje koliko se treba vratiti unazad od\n"
-" trenutaÄne pozicije, s time da je pozicija 0 trenutaÄna pozicija.\n"
+" Vrijednost IZRAZA pokazuje koliko se treba vratiti unatrag od\n"
+" trenutne pozicije, s time da je pozicija 0 trenutna pozicija.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako ljuska ne izvrÅ¡ava ljuskinu funkciju\n"
" ili je IZRAZ nevaljani."
@@ -2784,16 +2845,16 @@ msgid ""
"when\n"
" -P is used; non-zero otherwise."
msgstr ""
-"Promjeni trenutaÄni direktorij.\n"
+"Promjeni trenutni direktorij.\n"
"\n"
-" Promijeni trenutaÄni direktorij u dȃni DIREKTORIJ. Zadano, DIREKTORIJ\n"
+" Promijeni trenutni direktorij u dȃni DIREKTORIJ. Zadano, DIREKTORIJ\n"
" je vrijednost varijable HOME.\n"
"\n"
" Varijabla CDPATH definira staze (direktorije) po kojima se\n"
" traži dȃni DIREKTORIJ.\n"
"\n"
" Nazivi direktorija (staza) u CDPATH su razdvojeni s dvotoÄkom (:);\n"
-" prazni naziv za direktorij je isto kao i trenutaÄni direktorij (.).\n"
+" prazni naziv za direktorij je isto kao i trenutni direktorij (.).\n"
" Ako dȃni DIREKTORIJ zapoÄinje s kosom crtom (/), onda se CDPATH\n"
" ne koristi.\n"
"\n"
@@ -2808,7 +2869,7 @@ msgstr ""
" -P rabi fiziÄku strukturu direktorija umjesto da slijedi\n"
" simboliÄke veze; simboliÄke veze DIREKTORIJa\n"
" razriješi prije procesiranja „..“ instancije DIREKTORIJa\n"
-" -e ako je dȃna s opcijom „-P“, i trenutaÄni radni direktorij nije\n"
+" -e ako je dȃna s opcijom „-P“, i trenutni radni direktorij nije\n"
" moguće uspješno odrediti nakon uspješne promjene direktorija,\n"
" „cd“ zavrÅ¡i s kÈdom razliÄitim od 0.\n"
" -@ opiše proširene atribute povezane s datotekom kao direktorij\n"
@@ -2836,16 +2897,16 @@ msgid ""
" Returns 0 unless an invalid option is given or the current directory\n"
" cannot be read."
msgstr ""
-"IspiÅ¡e ime trenutaÄnoga radnog direktorija.\n"
+"Ispiše ime trenutnog radnog direktorija.\n"
"\n"
" Opcije:\n"
-" -L ispiÅ¡e vrijednost od $PWD ako sadrži trenutaÄni radni direktorij\n"
+" -L ispiše vrijednost od $PWD ako sadrži trenutni radni direktorij\n"
" -P ispiÅ¡e stvarnu fiziÄku stazu do direktorija bez simboliÄkih veza\n"
"\n"
" U zadanom stanju „pwd“ se ponaša kao da je aktivna „-L“ opcija.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako nije dȃna nevaljana opcija\n"
-" ili se trenutaÄni radni direktorij ne može proÄitati."
+" ili se trenutni radni direktorij ne može proÄitati."
#: builtins.c:442
msgid ""
@@ -2907,6 +2968,7 @@ msgstr ""
" ili s 1 ako NAREDBA nije pronađena."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2919,6 +2981,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2980,7 +3044,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška prilikom zadavanja varijabli."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2990,7 +3054,7 @@ msgstr ""
"\n"
" Sinonim za „declare“. Za detalje upišite „help declare“."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3015,8 +3079,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako su dȃne nevaljane opcije,\n"
" dogodila se greška pri dodijeli ili ljuska ne izvrši funkciju."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3058,7 +3121,7 @@ msgstr ""
"Dȃne argumente ispiše na standardni izlaz.\n"
"\n"
" Ispiše dȃne argumente na standardni izlaz, međusobno odvojene s\n"
-" jednim razmakom (bjelina) i na kraju s novim retkom.\n"
+" jednim razmakom (bjelinom) i na kraju s novim retkom.\n"
"\n"
" Opcije:\n"
" -n ne pripoji novi redak (znak novog retka)\n"
@@ -3080,12 +3143,16 @@ msgstr ""
" \\t horizontalni tabulator\n"
" \\v vertikalni tabulator\n"
" \\\\ backslash (\\)\n"
-" \\0NNN znak s ASCII kÈdom NNN (oktalni, 1 do 3 znamenke)\n"
-" \\xHH znak s ASCII kÈdom HH (heksadecimalni, 1 do 2 znamenke)\n"
+" \\0NNN znak s ASCII kÈdom NNN (oktalni, 1 do 3 oktalne znamenke)\n"
+" \\xHH osmobitni znak Äija je vrijednost HH (heksadecimalna)\n"
+" \\uHHHH unikodni znak Äija je vrijednost HHHH (heksadecimalna)\n"
+" HHHH može biti od 1 do 4 heksadecimalne znamenke\n"
+" \\UHHHHHHHH unikodni znak Äija je vrijednost HHHH (heksadecimalna)\n"
+" HHHHHHHH može biti od 1 do 8 heksadecimalnih znamenki\n"
"\n"
-" ZavrÅ¡i s kÈdom 0 osim ako se ne dogodi greÅ¡ka pisanja."
+" ZavrÅ¡i s kÈdom 0 osim ako se ne dogodi greÅ¡ka pri pisanju."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3103,9 +3170,9 @@ msgstr ""
"redak).\n"
" Opcijom „-n“ može se iskljuÄiti pripajanje znaka za novi redak.\n"
"\n"
-" ZavrÅ¡i s kÈdom 0 ako se ne dogodi greÅ¡ka pisanja."
+" ZavrÅ¡i s kÈdom 0 ako se ne dogodi greÅ¡ka pri pisanju."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3157,7 +3224,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako IME nije ugraÄ‘ena naredba\n"
" ili se nije dogodila greška."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3175,7 +3242,8 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom naredbe ili uspjeÅ¡no ako je naredba prazna."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3208,8 +3276,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3256,7 +3324,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 ako pronaÄ‘e opciju; ako naiÄ‘e na kraj opcija\n"
" ili ako se dogodi greška, završi s neuspjehom."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3282,7 +3350,7 @@ msgstr ""
"\n"
" Izvrši dȃnu NAREDBU, zamijenivši ovu ljusku s ovim programom.\n"
" Eventualni ARGUMENTI postanu argumenti NAREDBE. Ako NAREDBA nije\n"
-" specificirana, sva preusmjeravanja se dogode u trenutaÄnoj ljusci.\n"
+" specificirana, sva preusmjeravanja se dogode u trenutnoj ljusci.\n"
"\n"
" Opcije:\n"
" -a IME dÈde IME kao nulti argument NAREDBI\n"
@@ -3295,7 +3363,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0, osim ako NAREDBA nije pronaÄ‘ena,\n"
" ili se dogodila greška preusmjeravanja."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3306,7 +3374,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom N. Bez N zavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3318,7 +3386,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom N. ZavrÅ¡i s greÅ¡kom ako to nije prijavna ljuska."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3367,7 +3435,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom izvrÅ¡ene naredbe; razliÄito od 0 ako se dogodi greÅ¡ka."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3381,13 +3449,13 @@ msgstr ""
"Premjesti posao u interaktivni naÄin.\n"
"\n"
" Smjesti posao JOBSPEC u interaktivni naÄin i uÄini ga\n"
-" trenutaÄnim poslom. Bez dȃnoga JOBSPEC, ljuska rabi svoj pojam\n"
-" o trenutaÄnom poslu.\n"
+" trenutnim poslom. Bez dȃnoga JOBSPEC, ljuska rabi svoj pojam\n"
+" o trenutnom poslu.\n"
"\n"
" ZavrÅ¡i s kÈdom naredbe smjeÅ¡tene u interaktivni naÄin\n"
" ili s neuspjehom ako se dogodi greška."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3404,12 +3472,12 @@ msgstr ""
"\n"
" Smjesti poslove idenificirane sa svakim JOBSPEC u pozadinu, kao da su\n"
" pokrenuti s „&“. Bez dȃnih JOBSPEC, ljuska rabi svoj pojam\n"
-" o trenutaÄnom poslu.\n"
+" o trenutnom poslu.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako kontrola nad poslovima nije omogućena\n"
" ili se dogodila greška."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3450,7 +3518,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako nije pronaÄ‘eno IME\n"
" ili je dȃna nevaljana opcija."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3486,7 +3554,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako UZORAK nije pronaÄ‘en,\n"
" ili je dȃna nevaljana opcija."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3530,12 +3598,12 @@ msgstr ""
" -c poÄisti povijest iz memorije; zaboravi sve izvrÅ¡ene naredbe\n"
" -d POZICIJA izbriše redak povijesti na POZICIJI\n"
"\n"
-" -a pripoji trenutaÄnu povijest „povijesnoj“ datoteci\n"
+" -a pripoji trenutnu povijest „povijesnoj“ datoteci\n"
" -n pripoji sve neproÄitane retke povijesne datoteke\n"
-" trenutaÄnom popisu povijesti\n"
+" trenutnom popisu povijesti\n"
" -r proÄita i pripoji povijesnu datoteku\n"
-" trenutaÄnom popisu povijesti\n"
-" -w trenutaÄnu povijest zapiÅ¡e u povijesnu datoteku\n"
+" trenutnom popisu povijesti\n"
+" -w trenutnu povijest zapiše u povijesnu datoteku\n"
"\n"
" -p proširi povijest na svakom ARGUMENTU i prikaže rezultat\n"
" bez spremanja u povijesni popis\n"
@@ -3552,7 +3620,7 @@ msgstr ""
" Završi s statusom 0 osim ako nije dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3584,7 +3652,7 @@ msgstr ""
" -l pokaže i ID-ove procesa uz uobiÄajene informacije\n"
" -n pokaže samo procese koji su se promijenili od zadnjeg izvješća\n"
" -p pokaže samo ID-ove procesa\n"
-" -r ograniÄi izlaz samo na trenutaÄno pokrenute poslove\n"
+" -r ograniÄi izlaz samo na trenutno pokrenute poslove\n"
" -s ograniÄi izlaz samo na zaustavljene poslove\n"
"\n"
" Ako je dȃna opcija -x, „jobs“ zamijeni svaki JOBSPEC\n"
@@ -3595,7 +3663,7 @@ msgstr ""
"greška.\n"
" Ako je dȃna opcija -x, završi sa izlaznim statusom NAREDBE."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3611,10 +3679,10 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-"Ukloni poslove iz trenutaÄne ljuske.\n"
+"Ukloni poslove iz trenutne ljuske.\n"
"\n"
" Ukloni svaki JOBSPEC argument iz tablice aktivnih poslova.\n"
-" Bez ikakvih JOBSPEC ljuska rabi svoj pojam o trenutaÄnom\n"
+" Bez ikakvih JOBSPEC ljuska rabi svoj pojam o trenutnom\n"
" poslu.\n"
"\n"
" Opcije:\n"
@@ -3626,7 +3694,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili nije dȃni JOBSPEC."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3670,7 +3738,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3755,7 +3823,7 @@ msgstr ""
" Ako zadnji ARGUMENT evaluira na 0 (nula), „let“ zavrÅ¡i s kÈdom 1;\n"
" inaÄe zavrÅ¡i s kÈdom 0."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3848,7 +3916,7 @@ msgstr ""
" pri dodjeli, ili je specificirani nevaljani deskriptor datoteke\n"
" kao argument opciji „-u“."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3868,7 +3936,7 @@ msgstr ""
" Vrati vrijednost N ili 1 ako ljuska ne izvrši\n"
" funkciju ili skriptu."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3958,7 +4026,7 @@ msgstr ""
" Omogući/onemogući svojstva ljuske ili mijenja vrijednosti položajnih\n"
" parametara. Bez opcija ili argumenata „set“ prikaže imena i vrijednosti\n"
" svih definiranih varijabli i funkcija u formatu upotrebljivom kao\n"
-" ulaz za postavljanje/poniÅ¡tavanje trenutaÄno postavljenih varijabli.\n"
+" ulaz za postavljanje/poništavanje trenutno postavljenih varijabli.\n"
" Dostupne su sljedeće opcije („+“ umjesto „-“ iskljuÄi dȃnu opciju):\n"
"\n"
" -a automatski eksportira nove ili modificirane varijable i funkcije\n"
@@ -3978,7 +4046,7 @@ msgstr ""
" -n proÄita, ali ne izvrÅ¡i naredbe („testiranje“)\n"
" -o IME_OPCIJE omogući IME_OPCIJU (v. niže za dugaÄka imena opcija)\n"
" -P ne razrijeÅ¡i simboliÄke veze pri izvrÅ¡avanju naredbi poput „cd“\n"
-" koje promjene trenutaÄni direktorij\n"
+" koje promjene trenutni direktorij\n"
" -p ukljuÄi privilegirani mÈd: datoteke BASH_ENV i ENV se ignoriraju,\n"
" funkcije ljuske se ne importiraju iz okoline, a ignoriraju se i\n"
" sve SHELLOPTS; taj mÈd se automatski aktivira kÈd god se realni\n"
@@ -4034,7 +4102,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4072,7 +4140,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili IME je „samo-za-Äitanje“."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4106,7 +4174,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili dȃno IME nije valjano."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4145,7 +4213,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili je IME nevaljano."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4162,7 +4230,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je N negativni ili veći od $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4175,9 +4243,9 @@ msgid ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
msgstr ""
-"IzvrÅ¡i naredbe iz datoteke u trenutaÄnoj ljusci.\n"
+"Izvrši naredbe iz datoteke u trenutnoj ljusci.\n"
"\n"
-" ÄŒita i izvrÅ¡i naredbe iz DATOTEKE u trenutaÄnoj ljusci.\n"
+" Čita i izvrši naredbe iz DATOTEKE u trenutnoj ljusci.\n"
" Direktorij s DATOTEKOM traži se po stazama sadržanima u varijabli\n"
" PATH. Ako su dȃni ikoji ARGUMENTI, oni postaju položajni parametri\n"
" tijekom izvršavanja DATOTEKE.\n"
@@ -4185,7 +4253,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe iz DATOTEKE,\n"
" ili sa statusom 1 ako se DATOTEKA ne može proÄitati."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4209,7 +4277,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako kontrola nad poslovima nije omogućena\n"
" ili se dogodila greška."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4353,7 +4421,7 @@ msgstr ""
" ! IZRAZ istina ako IZRAZ neistiniti\n"
" IZRAZ1 -a IZRAZ2 istina ako su oba izraza istinita\n"
" IZRAZ1 -o IZRAZ2 laž ako su oba izraza neistinita\n"
-" ARG1 OP ARG2 istina ako je aritmetika ispravna; operator OP je\n"
+" ARG1 OP ARG2 istina ako je aritmetika valjana; operator OP je\n"
" jedan od: -eq, -ne, -lt, -le, -gt, ili -ge;\n"
" koji znaÄe: jednako, nejednako, manje od, "
"manje,\n"
@@ -4362,7 +4430,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 ako je IZRAZ istiniti, 1 ako je IZRAZ neistiniti,\n"
" ili 2 ako je dȃn nevaljani argument."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4374,7 +4442,7 @@ msgstr ""
" To je sinonim za ugrađenu funkciju „test“, ali zadnji argument\n"
" mora biti zagrada „]“ kao par zagradi „[“ na poÄetku."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4392,7 +4460,7 @@ msgstr ""
"\n"
" ZavrÅ¡i uvijek s kÈdom 0."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4468,7 +4536,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako SIGNAL_SPEC nije valjani\n"
" ili je dȃna nevaljana opcija."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4519,7 +4587,8 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom 0 ako se pronaÄ‘u sva IMEna, inaÄe s 1."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4550,6 +4619,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4575,7 +4645,7 @@ msgstr ""
" Opcije:\n"
" -S rabi „mekano“ (soft) ograniÄenje resursa\n"
" -H rabi „tvrdo“ (hard) ograniÄenje resursa\n"
-" -a popis svih trenutaÄnih ograniÄenja\n"
+" -a popis svih trenutnih ograniÄenja\n"
" -b maks. veliÄina meÄ‘uspremnika utiÄnice\n"
" -c maks. veliÄina „core“ datoteka (u kB)\n"
" -d maks. veliÄina segmenta s procesnim podacima (in kB)\n"
@@ -4600,9 +4670,8 @@ msgstr ""
" Nisu sve opisane opcije dostupne na svim platformama.\n"
"\n"
" Ako je specificirani, LIMIT postane nova vrijednost za specificirani\n"
-" resurs, inaÄe se prikažu trenutaÄne vrijednosti. Specijalne "
-"vrijednosti,\n"
-" „soft“, „hard“, i „unlimited“ su trenutaÄni soft limit, trenutaÄni hard\n"
+" resurs, inaÄe se prikažu trenutne vrijednosti. Specijalne vrijednosti,\n"
+" „soft“, „hard“, i „unlimited“ su trenutni soft limit, trenutni hard\n"
" limit i unlimited. Ako nijedna opcija nije specificirana, podrazumijeva\n"
" se da je aktivna „-f“ opcija.\n"
"\n"
@@ -4613,7 +4682,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4633,7 +4702,7 @@ msgstr ""
"Prikaže ili postavi masku prilikom kreiranje datoteke.\n"
"\n"
" Postavi masku datoteke koju kreira korisnik na MODE.\n"
-" Ako MODE nije dȃn, ispiÅ¡e trenutaÄnu vrijednost maske.\n"
+" Ako MODE nije dȃn, ispiše trenutnu vrijednost maske.\n"
"\n"
" Ako MODE poÄinje sa znamenkom, interpretira se kao oktalni broj;\n"
" inaÄe to je simboliÄki mode string kakav prihvaća chmod(1).\n"
@@ -4646,7 +4715,8 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako MODE nije valjan\n"
" ili je dȃna nevaljana opcija."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4657,21 +4727,31 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Čeka da posao završi i vrati njegov izlazni status.\n"
"\n"
" Čeka na svaki posao identificirani s ID — to jest indikatorom posla ili\n"
" indikatorom procesa — i izvijesti njegov završni status. Ako nije dȃn\n"
-" ID, Äeka na sve trenutaÄno aktivne potomke, a zavrÅ¡ni status je nula.\n"
+" ID, Äeka na sve trenutno aktivne potomke, a zavrÅ¡ni status je nula.\n"
" Ako je ID specifikacija posla, Äeka na sve procese u cjevovodu tog "
"posla.\n"
"\n"
@@ -4684,7 +4764,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom zadnjeg ID-a, a s kÈdom 1 ako je ID nevaljani\n"
" ili je dȃna nevaljana opcija."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4701,13 +4781,13 @@ msgstr ""
"Čeka da proces završi i vrati njegov izlazni status.\n"
"\n"
" Čeka na svaki proces identificirani s PID i izvijesti njegov završni\n"
-" status. Ako nije dȃn PID, Äeka na sve trenutaÄno aktivne potomke,\n"
+" status. Ako nije dȃn PID, Äeka na sve trenutno aktivne potomke,\n"
" a završni status je nula. PID mora biti proces ID.\n"
"\n"
" ZavrÅ¡i s kÈdom zadnjeg PID-a, s kÈdom 1 ako je PID nevaljani,\n"
" ili s 2 ako je dȃna nevaljana opcija."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4729,7 +4809,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4756,7 +4836,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4794,7 +4874,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4821,7 +4901,7 @@ msgstr ""
"\n"
" Završi s izlaznim statusom CJEVOVODA."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4839,7 +4919,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4870,7 +4950,7 @@ msgstr ""
"\n"
" „if“ zavrÅ¡i s kÈdom zadnjeg izvrÅ¡enoga zadatka."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4887,7 +4967,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4904,7 +4984,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4925,7 +5005,7 @@ msgstr ""
"\n"
" Naredba coproc zavrÅ¡i s kÈdom 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4947,7 +5027,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je IME readonly (samo-za-Äitanje)."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4964,7 +5044,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom zadnje izvrÅ¡ene naredbe."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4986,12 +5066,13 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom nastavljenoga posla."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5004,7 +5085,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 1 ako je rezultat IZRAZA jednaki 0;\n"
" inaÄe zavrÅ¡i s kÈdom 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5054,7 +5135,7 @@ msgstr ""
"\n"
" ZavrÅ¡i s kÈdom 0 ili 1 ovisno o IZRAZU."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5115,14 +5196,14 @@ msgstr ""
" BASH_VERSION inaÄica ovog „bash“ programa\n"
" CDPATH popis direktorija u kojima se traži direktorij\n"
" kÈd argument od „cd“ (direktorij) nije u\n"
-" trenutaÄnom radnom direktoriju\n"
+" trenutnom radnom direktoriju\n"
" GLOBIGNORE popis uzoraka koji opisuju imena datoteka koje\n"
" se ignoriraju prilikom ekspanzije imena staza\n"
" HISTFILE ime datoteke koja sadrži povijest vaših naredbi\n"
" HISTFILESIZE maksimalni broj redaka datoteke s povijesti naredba\n"
" HISTIGNORE popis uzoraka koji opisuju naredbe koje ne treba zapisati\n"
" u datoteku koja sadrži povijest vaših naredbi\n"
-" HISTSIZE maksimalni broj redaka koje aktualna ljuska može "
+" HISTSIZE maksimalni broj redaka koje trenutna ljuska može "
"dosegnuti\n"
" HOME puni naziv staze do vašega osobnoga direktorija\n"
" HOSTNAME ime raÄunala na kojem se izvrÅ¡ava „bash“\n"
@@ -5136,9 +5217,9 @@ msgstr ""
" PROMPT_COMMAND naredba koja se izvrši prije ispisa primarnoga prompta\n"
" PS1 string koji opisuje primarni prompt\n"
" PS2 string koji opisuje sekundarni prompt (zadano, „>“)\n"
-" PWD puni naziv staze trenutaÄnoga radnoga direktorija\n"
+" PWD puni naziv staze trenutnog radnoga direktorija\n"
" SHELLOPTS popis svih omogućenih opcija ljuske\n"
-" TERM naziv vrste trenutaÄnoga terminala\n"
+" TERM naziv vrste trenutnog terminala\n"
" TIMEFORMAT pravilo za format ispisa „time“ statistika\n"
" auto_resume ako nije prazan, uÄini da se naredbena rijeÄ na "
"naredbenom\n"
@@ -5157,7 +5238,7 @@ msgstr ""
" supstitucije“, obiÄno „^“; treći znak je „komentar\n"
" povijesti“, obiÄno „#“.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5190,7 +5271,7 @@ msgstr ""
"Doda direktorije na snop.\n"
"\n"
" Doda direktorij na vrh snopa direktorija ili zarotira snop tako da\n"
-" uÄini novi vrh snopa trenutaÄnim radnim direktorijem. Bez argumenata\n"
+" uÄini novi vrh snopa trenutnim radnim direktorijem. Bez argumenata\n"
" razmijeni pozicije dva direktorija na vrhu snopa.\n"
"\n"
" Opcije:\n"
@@ -5209,12 +5290,12 @@ msgstr ""
" desne strane popisa prikazanoga s „dirs“) postane novi vrh "
"snopa.\n"
"\n"
-" Naredba „dirs“ prikaže trenutaÄni sadržaj snopa direktorija.\n"
+" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili nije uspjela promjena direktorija."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5257,12 +5338,12 @@ msgstr ""
" strane popisa prikazanoga s „dirs“. Na primjer.: „popd -0“\n"
" ukloni zadnji, a „popd -1“ ukloni predzadnji direktorij.\n"
"\n"
-" Naredba „dirs“ prikaže trenutaÄni sadržaj snopa direktorija.\n"
+" Naredba „dirs“ prikaže trenutni sadržaj snopa direktorija.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili nije uspjela promjena direktorija."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5292,7 +5373,7 @@ msgid ""
msgstr ""
"Ispiše sadržaj snopa direktorija.\n"
"\n"
-" Pokaže popis trenutaÄno zapamćenih direktorija. Direktoriji se unose\n"
+" Pokaže popis trenutno zapamćenih direktorija. Direktoriji se unose\n"
" na popis pomoću naredbe „pushd“, a s naredbom „popd“ se uklanjaju.\n"
" \n"
" Opcije:\n"
@@ -5312,7 +5393,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5349,7 +5430,7 @@ msgstr ""
" ukljuÄeno, a s 1 ako je iskljuÄeno. ZavrÅ¡i takoÄ‘er s 1 ako je dȃno\n"
" nevaljano ime opcije, a završi s 2 ako je dȃna nevaljana opcija."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5366,8 +5447,8 @@ 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"
@@ -5414,9 +5495,9 @@ msgstr ""
" se ponašaju kao da im je vrijednost nula, ili prazni string.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je dana nevaljana opcija\n"
-" ili se dogodila greška pisanja ili greška pri dodijeli."
+" ili se dogodila greška u pisanju ili greška pri dodijeli."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5439,7 +5520,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5457,22 +5538,23 @@ msgstr ""
" -p ispiše postojeće specifikacije kompletiranja u formatu\n"
" upotrebljivom za ulaz\n"
" -r ukloni specifikaciju kompletiranja za svako dȃno IME\n"
-" ili ukloni sve specifikacije ako nisu dȃna IMEna\n"
+" ili ukloni sve specifikacije ako nisu dȃna IMENA\n"
" -D na naredbe koje nemaju vlastitu specifikaciju za kompletiranje\n"
" primjeni „zadano“ ponašanje specifikacija i akcija\n"
" -E primjeni zadano ponašanje specifikacija i akcija i na „prazne“\n"
-" naredbe, to jest pokuša kompletirati prazni redak\n"
+" naredbe --; pokuša kompletirati prazni redak\n"
" -I primjeni zadano ponaÅ¡anje specifikacija i akcija i na poÄetnu\n"
" (obiÄno naredbu) rijeÄ\n"
"\n"
" Redoslijed akcija pri pokušaju kompletiranja slijedi gore dȃni poredak\n"
-" opcija u verzalu. Opcija „-D“ ima veći prioritet od opcije „-E“.\n"
+" opcija pisanih u verzalu. Opcija „-D“ ima veći prioritet od opcije „-"
+"E“.\n"
" a obje imaju veći prioritet od opcije „-I“\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5493,7 +5575,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je dȃna nevaljana opcija\n"
" ili se dogodila greška."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5527,9 +5609,9 @@ msgstr ""
"Izmjena ili prikaz opcija za kompletiranje.\n"
"\n"
" Izmijenite opcije kompletiranja za svako IME u skladu s opcijama,\n"
-" ili za kompletiranje koje se trenutaÄno vrÅ¡i ako nisu dȃna IMEna.\n"
+" ili za kompletiranje koje se trenutno vrši ako nisu dȃna IMEna.\n"
" Ako nema opcija, ispišu se opcije kompletiranja za svako IME ili\n"
-" za trenutaÄno kompletiranje.\n"
+" za trenutno kompletiranje.\n"
"\n"
" Opcije:\n"
" -o OPCIJA ovu OPCIJU kompletiranja postavi za svako IME\n"
@@ -5541,14 +5623,14 @@ msgstr ""
"\n"
" Svako IME ukazuje na naredbu za koju specifikacija kompletiranja mora\n"
" već prije biti definirana pomoću ugrađene naredbe „complete“. Ako nije\n"
-" dȃno nijedno IME, funkcija koja trenutaÄno generira kompletiranja mora\n"
+" dȃno nijedno IME, funkcija koja trenutno generira kompletiranja mora\n"
" pozvati „compopt“; time se onda promjene opcije za taj generator koji\n"
-" trenutaÄno izvrÅ¡ava kompletiranja.\n"
+" trenutno izvršava kompletiranja.\n"
"\n"
" ZavrÅ¡i s kÈdom 0 osim ako nije dȃna nevaljana opcija\n"
" ili nije definirana specifikacija za kompletiranje IMEna."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5620,7 +5702,7 @@ msgstr ""
" ZavrÅ¡i s kÈdom 0 osim ako je POLJE readonly (samo-za-Äitanje)\n"
" ili nije polje; ili je dȃna nevaljana opcija."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5630,8 +5712,23 @@ msgstr ""
"\n"
" Sinonim za „mapfile“."
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Vraća kontekst od trenutnog poziva funkciji.\n"
+#~ " \n"
+#~ " Bez EXPR, rezultati "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process(): proces %5ld (%s) u cjevovodu"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Nepoznati signal #"
+
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/hu.gmo b/po/hu.gmo
index 478db676..08cb5115 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 4fec6895..972911d8 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -1,99 +1,104 @@
# Hungarian translation for bash.
-# Copyright (C) 2010, 2016, 2017 Free Software Foundation, Inc.
+# Copyright (C) 2010, 2016, 2017, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
# Mate Ory <orymate@ubuntu.com>, 2010, 2016.
# Gabor Kelemen <kelemeng@gnome.hu>, 2016.
-# Balázs Úr <urbalazs@gmail.com>, 2017.
+# Balázs Úr <ur.balazs@fsf.hu>, 2017, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 4.4\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2017-04-27 21:42+0200\n"
-"Last-Translator: Balázs Úr <urbalazs@gmail.com>\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-11-16 17:58+0100\n"
+"Last-Translator: Balázs Úr <ur.balazs@fsf.hu>\n"
"Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Lokalize 1.2\n"
+"X-Generator: Lokalize 19.04.3\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "Hibás tömbindex"
+msgstr "hibás tömbindex"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: névhivatkozás attribútum eltávolítása"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, 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:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: érvénytelen asszociatívtömb-index"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, 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:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nem hozható létre: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: az elsÅ‘ nem szóközkarakter nem „\"â€"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "nincs záró „%c†a következőben: %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: hiányzó kettőspont-elválasztó"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%sâ€: nem lehetséges a kötés megszüntetése"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "szögleteszárójel-kiegészítés: Nem foglalható memória ehhez: %s"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %d elem számára"
+"szögleteszárójel-kiegészítés: nem sikerült a memóriafoglalás %u elem számára"
-#: braces.c:474
+#: braces.c:451
#, 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:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%sâ€: érvénytelen alias-név"
@@ -112,22 +117,22 @@ msgstr "„%sâ€: érvénytelen billentyűkiosztás-név"
msgid "%s: cannot read: %s"
msgstr "%s: nem olvasható a következő: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%sâ€: ismeretlen függvénynév"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s a következő módon hajtható végre: "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%sâ€: nem lehetséges a kötés megszüntetése"
@@ -140,30 +145,44 @@ msgstr "ciklusszám"
msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "csak „forâ€, „while†és „until†ciklusokban értelmezhetÅ‘"
-# see $ help caller
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Az aktuális szubrutinhívás helyével tér vissza.\n"
+"Az aktuális szubrutinhívás környezetének visszaadása.\n"
" \n"
-" EXPR nélkül a "
+" 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"
+" 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.\n"
+" \n"
+" Kilépési kód:\n"
+" 0-val tér vissza, ha érvényes a KIF és valóban függvényt hajt végre a\n"
+" parancsértelmező."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "Nincs beállítva HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "túl sok argumentum"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null könyvtár"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "Nincs beállítva OLDPWD"
@@ -182,7 +201,7 @@ msgstr "figyelmeztetés: "
msgid "%s: usage: "
msgstr "%s: használat: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a kapcsolónak kötelező argumentuma van"
@@ -197,7 +216,7 @@ msgstr "%s: a kötelező argumentum egy szám"
msgid "%s: not found"
msgstr "%s: nem található"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: érvénytelen kapcsoló"
@@ -207,7 +226,7 @@ msgstr "%s: érvénytelen kapcsoló"
msgid "%s: invalid option name"
msgstr "%s: érvénytelen kapcsolónév"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%sâ€: érvénytelen azonosító"
@@ -220,7 +239,7 @@ msgstr "érvénytelen oktális szám"
msgid "invalid hex number"
msgstr "érvénytelen hexadecimális szám"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "érvénytelen szám"
@@ -296,73 +315,83 @@ msgstr "hiba a terminálattribútum beállításakor: %s"
msgid "error getting terminal attributes: %s"
msgstr "hiba a terminálattribútum lekérdezésekor: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: kétértelmű munkamegadás"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "ebben a verzióban nem érhető el súgó"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nem szüntethető meg: csak olvasható %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nem szüntethető meg"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: érvénytelen műveletnév"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nincs kiegészítés meghatározva"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "jelenleg nincs kiegészítési függvény végrehajtás alatt"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "csak függvényben használható"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: a referenciaváltozó nem lehet tömb"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: a névhivatkozás változó önhivatkozása nem engedélyezett"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: körkörös névhivatkozás"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%sâ€: érvénytelen változónév a névhivatkozáshoz"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "nem használható a „-f†függvény létrehozására"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: csak olvasható függvény"
@@ -377,7 +406,7 @@ msgstr "%s: az idézőjelezett összetett tömb értékadása elavult"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ilyen módon nem lehet tömböt megszüntetni"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nem lehetséges az asszociatív tömb indexeltté alakítása"
@@ -391,27 +420,32 @@ msgstr "a dinamikus betöltés nem érhető el"
msgid "cannot open shared object %s: %s"
msgstr "megosztott objektumfájl megnyitása sikertelen: %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: nem dinamikusan van betöltve"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nem dinamikusan van betöltve"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nem törölhető: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s egy könyvtár"
@@ -426,12 +460,12 @@ msgstr "%s: nem normál fájl"
msgid "%s: file is too large"
msgstr "%s: a fájl túl nagy"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: bináris nem hajtható végre"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nem hajtható végre: %s"
@@ -455,15 +489,16 @@ msgstr "Vannak leállított munkák.\n"
msgid "There are running jobs.\n"
msgstr "Vannak futó munkák.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "nincs ilyen parancs"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "előzményválasztás"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: az átmeneti fájl nem nyitható meg: %s"
@@ -491,12 +526,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "t.szám\tparancs\n"
@@ -507,6 +542,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -539,21 +580,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "előzménypozíció"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: érvénytelen időbélyeg"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: sikertelen előzményből való kiegészítés"
@@ -576,7 +617,7 @@ msgstr "%s: az argumentumok folyamat- vagy munkaazonosítók lehetnek"
msgid "Unknown error"
msgstr "Ismeretlen hiba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "az értelmező kifejezést várt"
@@ -585,12 +626,12 @@ msgstr "az értelmező kifejezést várt"
msgid "%s: not an indexed array"
msgstr "%s: nem egy indexelt tömb"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: érvénytelen fájlleíró-megadás"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: érvénytelen fájlleíró: %s"
@@ -618,36 +659,36 @@ msgstr "üres tömbváltozó-név"
msgid "array variable support required"
msgstr "a tömbök használata nincs támogatva"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%sâ€: hiányzó formátumkarakter"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%câ€: érvénytelen idÅ‘formátum-megadás"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%câ€: érvénytelen formátumkarakter"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "figyelmeztetés: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "formátumfeldolgozási probléma: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "hiányzó hexadecimális számjegy a következőhöz: \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "hiányzó unicode számjegy a következőhöz: \\%c"
@@ -796,12 +837,12 @@ msgstr ""
" \n"
" A „dirs†beépített parancs listázza a könyvtárvermet."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: érvénytelen időkorlát-megadás"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "olvasási hiba: %d: %s"
@@ -812,21 +853,11 @@ msgstr ""
"csak függvénybÅ‘l vagy source-olt parancsfájlból lehet „returnâ€-nel "
"visszatérni"
-#: builtins/set.def:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nem szüntethető meg"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nem szüntethető meg: csak olvasható %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nem egy tömbváltozó"
@@ -841,7 +872,7 @@ msgstr "%s: nem függvény"
msgid "%s: cannot export"
msgstr "%s: nem exportálható"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift-szám"
@@ -850,7 +881,7 @@ 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:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: érvénytelen parancsértelmezőkapcsoló-név"
@@ -907,26 +938,26 @@ msgstr "%s: %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s hashelve van (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: érvénytelen korlátérték"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%câ€: érvénytelen parancs"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nem kérdezhető le a korlát: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "korlát"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nem módosítható a korlát: %s"
@@ -986,76 +1017,75 @@ msgstr "hibás ugrás"
msgid "%s: unbound variable"
msgstr "%s: kötetlen változó"
-#: eval.c:245
-#, c-format
+#: eval.c:242
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:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "IDÅFORMÃTUM: „%câ€: érvénytelen formátumkarakter"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: a coproc [%d:%s] még mindig létezik"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "hibás csővezeték"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: a maximális függvénybeágyazási szint túllépve (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: korlátozott: nem adható meg „/†a parancsok nevében"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: parancs nem található"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: rossz parancsértelmező"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: a bináris nem hajtható végre: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%sâ€: egy speciális beépített parancs"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, 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"
@@ -1077,65 +1107,69 @@ msgid "attempted assignment to non-variable"
msgstr "nem változóhoz próbált értéket rendelni"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "szintaktikai hiba a kifejezésben"
+msgstr "szintaktikai hiba a változó-értékadásban"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "0-val osztás"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: rossz expassign token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "„:†egy feltételkifejezés szükséges"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "0-nál kisebb kitevő"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "prefix növelés vagy csökkentés után azonosító kell következzen"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "hiányzó „)â€"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "szintaktikai hiba: operandus kell következzen"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "szintaktikai hiba: érvénytelen aritmetikai operátor"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (hibás token: „%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "érvénytelen számrendszer"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: sorok száma érvénytelen"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "túl nagy érték a számrendszerhez"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: hibás kifejezés\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nem érhetőek el a szülőkönyvtárak"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, 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"
@@ -1151,162 +1185,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp csővezeték"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, 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:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: nincs ilyen pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "%d. szignál"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Kész"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Megállítva"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Megállítva(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Fut"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Kész(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Kilépett(%d)"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ismeretlen állapot"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core készült) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (mk: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "gyermek setpgid (innen: %ld ide: %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Nincs bejegyzés %ld. számú folyamatról"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: %d. számú munka le lett állítva"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: nincs ilyen munka"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: a munka be lett fejezve"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: %d. számú munka már a háttérben van"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: WNOHANG bekapcsolása a korlátlan blokk elkerülésére"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d. sor: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core készült)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(mk most: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp sikertelen"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: line discipline"
+msgstr "initialize_job_control: nincs munkakezelés a háttérben"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nem állítható be a terminál folyamatcsoportja (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "nincsen munkakezelés ebben a parancsértelmezőben"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: nem teljesülő feltételezés: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1315,39 +1358,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: téves feltételezés\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "ismeretlen"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: a szabadlistán lévő blokk felülírva"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: már felszabadított blokkal lett hívva"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: nem lefoglalt blokkal lett hívva"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: kezdő- és záródarab mérete eltér"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: nem lefoglalt blokkal lett hívva"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: alulcsordulást érzékelt; mh_nbytes kívül esik a tartományon"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: kezdő- és záródarab mérete eltér"
@@ -1389,22 +1442,22 @@ msgstr "%s: hibás hálózatiútvonal-megadás"
msgid "network operations not supported"
msgstr "a hálózati műveletek nincsenek támogatva"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nem lehet területi beállításokat váltani (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nem lehet területi beállításokat váltani (%s): %s"
@@ -1450,7 +1503,7 @@ msgstr "a(z) %d. sorban kezdett heredocot EOF zárja („%s†helyett)"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: %d. átirányító utasítás kívül esik a tartományon"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1459,103 +1512,103 @@ msgstr ""
"shell_getc: a shell_input_line_size (%zu) meghaladja a MÉRET_MAXIMUM értékét "
"(%lu): a sor csonkolva"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "a maximális here-document szám túllépve"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "váratlan EOF „%c†helyett"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "váratlan EOF „]]†helyett"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "szintaktikai hiba a feltételben: váratlan token: „%sâ€"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "szintaktikai hiba a feltételben"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "váratlan token (%s) „)†helyett"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "„)†szükséges"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "váratlan argumentum (%s) feltételes egyoperandusú operátorhoz"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "váratlan argumentum feltételes egyoperandusú operátorhoz"
-#: parse.y:4775
+#: parse.y:4865
#, 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:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "feltételes kétoperandusú operátor szükséges"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "váratlan argumentum (%s) feltételes kétoperandusú operátorhoz"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "váratlan argumentum feltételes kétoperandusú operátorhoz"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "váratlan token (%c) feltételes parancsban"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "váratlan token (%s) feltételes parancsban"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "váratlan token (%d) feltételes parancsban"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "szintaktikai hiba „%s†váratlan token közelében"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "szintaktikai hiba „%s†közelében"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "szintaktikai hiba: váratlan fájlvége"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "szintaktikai hiba"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "„%s†használatával lehet elhagyni a parancsértelmezőt.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "váratlan EOF „)†helyett"
@@ -1598,89 +1651,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%câ€: érvénytelen formátumkarakter"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "fájlleíró kívül esik a tartományon"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: kétértelmű átirányítás"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nem lehet felülírni létező fájlt"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: korlátozott: nem lehet átirányítani a kimenetet"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nem lehet a heredocnak átmeneti fájlt létrehozni: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nem lehet változóhoz fájlleírót rendelni"
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "átirányítási hiba: nem lehet duplikálni a fájlleírót"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "nem található /tmp, hozza létre!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp érvényes könyvtárnév kell legyen"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "a csinos kiírási mód mellőzve van interaktív az parancsértelmezőkben"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: érvénytelen kapcsoló"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "nem indítható el a hibakereső; a hibakeresési mód letiltva"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: ez egy könyvtár"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nincs nevem!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, %s-(%s) verzió\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1689,316 +1742,312 @@ msgstr ""
"Használat:\t%s [GNU hosszú kapcsoló] [kapcsoló] ...\n"
"\t%s [GNU hosszú kapcsoló] [kapcsoló] parancsfájl ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU hosszú kapcsolók:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Parancsértelmező-kapcsolók:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD vagy -c parancs vagy -O shopt_option\t\t(csak hívás)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s vagy -o kapcsoló\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "A „bashbug†paranccsal jelenthet hibákat.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "a bash honlapja: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Ãltalános segítség a GNU szoftverek használatához: <http://www.gnu.org/"
"gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: érvénytelen művelet"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Hibás szignál"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Bontás"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Megszakítás"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Abbahagyás"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Érvénytelen utasítás"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT utasítás"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT utasítás"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Lebegőpontos kivétel"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Kilőve"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Buszhiba"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Szegmenshiba"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Rossz rendszerhívás"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Törött csővezeték"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Ébresztés"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Befejezve"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Sürgős IO körülmény"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Megállítva (szignál)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Folytatás"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Gyermek halála vagy megállítása"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Megállítva (konzolbemenet)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Megállítva (konzolkimenet)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "IO kész"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-korlátozás"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Fájlkorlátozás"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Ébresztés (virtuális)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Ébresztés (profilozás)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Ablak változott"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Elveszett zárolás"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Felhasználói 1."
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Felhasználói 2."
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT bemeneti adat vár"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "táphiba fenyeget"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "rendszerleállás fenyeget"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "folyamat átvitele másik CPU-ra"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programozási hiba"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT monitor mód megadva"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT monitor mód visszavonva"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT hangfolyamat befejezve"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Információkérés"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ismeretlen szignál #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "%d. számú ismeretlen szignál"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, 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:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: lista nem adható tömbelemnek értékül"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "nem hozható létre a csővezeték a folyamatbehelyettesítéshez"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "nem hozható létre a gyermek a folyamatbehelyettesítéshez"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nem nyitható meg olvasásra a(z) %s csővezeték"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nem nyitható meg írásra a(z) %s csővezeték"
-#: subst.c:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "parancshelyettesítés: figyelmen kívül hagyott null bájt a bemeneten"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "nem hozható létre csővezeték a parancsbehelyettesítéshez"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "nem hozható létre gyermek a parancsbehelyettesítéshez"
-#: subst.c:6259
+#: subst.c:6423
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:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: érvénytelen változóérték a névhivatkozáshoz"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: az indirekt kiegészítés érvénytelen"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: érvénytelen változónév"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: a paraméter null vagy nincs beállítva"
+msgstr "%s: a paraméter nincs beállítva"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: a paraméter null vagy nincs beállítva"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: részkarakterlánc-kifejezés < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: rossz helyettesítés"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nem lehet így értéket adni"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2006,12 +2055,12 @@ msgstr ""
"a parancsértelmező későbbi verziói kötelezővé teszik majd az aritmetikai "
"kiértékelést"
-#: subst.c:10043
+#: subst.c:10367
#, 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:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "nincs találat: %s"
@@ -2034,120 +2083,125 @@ msgstr "„)†szükséges"
msgid "`)' expected, found %s"
msgstr "„)†szükséges %s helyett"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: egyoperandusú operátor szükséges"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: kétoperandusú operátor szükséges"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: egyoperandusú operátor szükséges"
+
+#: test.c:881
msgid "missing `]'"
msgstr "hiányzó „]â€"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "szintaktikai hiba: váratlan „;â€"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "érvénytelen szignálszám"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: a maximális eval beágyazási szint túllépve (%d)"
+msgstr "elfogáskezelő: a legnagyobb elfogáskezelő-szint túllépve (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: rossz szignál: %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "hiba a függvénydefiníció betöltésekor: „%sâ€"
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nem lehet a változóhoz értéket rendelni"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: egész szám hozzárendelése a névhivatkozáshoz"
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s exportstr-je null"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "érvénytelen karakter (%d) %s exportstr-jében"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "nincs „=†%s exportstr-jében"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nincs global_variables környezet"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nem nyitható meg FILE-ként"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: a kompatibilitási érték kívül esik a tartományon"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright © 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2236,11 +2290,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] parancs [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [név[=érték] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] név[=érték] ..."
#: builtins.c:82
@@ -2264,11 +2320,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts opciók név [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a név] [parancs [argumentumok ...]] [átirányítás ...]"
#: builtins.c:100
@@ -2398,8 +2456,8 @@ msgstr "umask [-p] [-S] [mód]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [id ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2493,26 +2551,26 @@ msgstr "printf [-v változó] formátum [argumentumok]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o beállítás] [-A művelet] [-G "
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-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] [név ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
"szólista] [-F függvény] [-C parancs] [-X szűrőminta] [-P prefixum] [-S "
"szuffixum] [szó]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o beállítás] [-DE] [név ...]"
+msgstr "compopt [-o|+o beállítás] [-DEI] [név ...]"
#: builtins.c:242
msgid ""
@@ -2523,13 +2581,12 @@ msgstr ""
"parancs] [-c távolság] [tömb]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C parancs] [-c "
-"távolság] [tömb]"
+"readarray [-d elválasztó] [-n szám] [-O kezdet] [-s szám] [-t] [-u fd] [-C "
+"parancs] [-c távolság] [tömb]"
#: builtins.c:256
msgid ""
@@ -2702,7 +2759,6 @@ msgstr ""
" A kilépési kód 0, ha N >= 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2952,6 +3008,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2996,11 +3054,11 @@ msgstr ""
" -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"
+" -l\tminden NÉV értékének 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"
+" -u\tminden NÉV értékének 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 attribútumot.\n"
@@ -3016,7 +3074,7 @@ msgstr ""
"értékadási\n"
" hiba történik."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3026,7 +3084,7 @@ msgstr ""
" \n"
" A „declare†szinonimája. Lásd: „help declareâ€."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3052,8 +3110,7 @@ msgstr ""
" 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:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3114,14 +3171,18 @@ msgstr ""
" \\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"
+" \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"
+" \t\t(hexadecimálisan). HH egy vagy két hexaszámjegy lehet\n"
+" \\uHHHH\ta Unicode karakter, amely értéke a HHHH hexadecimális\n"
+" \t\térték. A HHHH 1-4 hexaszámjegy lehet.\n"
+" \\UHHHHHHHH a Unicode karakter, amely értéke a HHHHHHHH hexadecimális\n"
+" \t\térték. A HHHHHHHH 1-8 hexaszámjegy lehet.\n"
" \n"
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve írási hiba esetén."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3143,7 +3204,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve írási hiba esetén."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3195,7 +3256,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a NÉV nem egy beépített parancs, vagy\n"
" hiba történt."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3214,7 +3275,8 @@ msgstr ""
" Kilépési kód:\n"
" A parancs kilépési kódjával tér vissza, vagy sikerrel, ha üres a parancs."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3247,8 +3309,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3292,7 +3354,7 @@ msgstr ""
" Sikerrel tér vissza, ha kapcsolót talált, sikertelenül, ha elfogytak a\n"
" kapcsolók, vagy hiba történt."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3334,7 +3396,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve, ha a PARANCS nem található vagy sikertelen\n"
" az átirányítás."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3347,7 +3409,7 @@ msgstr ""
"utolsó\n"
" parancs kilépési kódjával lép ki."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3360,7 +3422,7 @@ msgstr ""
" 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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3418,7 +3480,7 @@ msgstr ""
"eltérőt\n"
" hiba esetén."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3440,7 +3502,7 @@ msgstr ""
" Az előtérbe hozott parancs állapota (annak kilépésekor), vagy nem nulla\n"
" hiba esetén."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3464,7 +3526,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a munkakezelés le van tiltva, vagy\n"
" hiba történt."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3507,8 +3569,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve, ha a NÉV nem található vagy érvénytelen\n"
" kapcsolót kap."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3547,8 +3608,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha nincs találat vagy hibás kapcsolót kap."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3591,7 +3651,8 @@ msgstr ""
" \n"
" Kapcsolók:\n"
" -c\taz előzménylista törlése az összes bejegyzésének törlésével\n"
-" -d eltolás\taz ELTOLÃS pozícióban lévÅ‘ elÅ‘zménybejegyzés törlése\n"
+" -d eltolás\taz ELTOLÃS pozícióban lévÅ‘ elÅ‘zménybejegyzés törlése,\n"
+" \t\ta negatív eltolások az előzménylista végétől számolnak vissza\n"
" -a\ta munkamenet előzménysorainak hozzáfűzése az előzményfájlhoz\n"
" -n\tminden olyan előzménysor beolvasása, amelyek még nem lettek\n"
" \t\tbeolvasva az előzményfájlból, és azok hozzáfűzése az\n"
@@ -3616,7 +3677,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap, vagy hiba\n"
" történik."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3661,7 +3722,7 @@ msgstr ""
" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót, és nem történik\n"
" hiba. -x használata esetén a PARANCS kilépési kódjával tér vissza."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3693,7 +3754,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, ha nem kap érvénytelen kapcsolót vagy MUNKASZÃMOT"
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3738,7 +3799,7 @@ msgstr ""
"történik\n"
" hiba."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3821,8 +3882,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:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3884,34 +3944,34 @@ msgstr ""
" \n"
" Kapcsolók:\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"
+" \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"
+" \t\thelyett\n"
+" -e\ta Readline használata a sor megszerzéséhez\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"
+" \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"
+" \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"
+" \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"
+" \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"
+" \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"
" (ekkor > 128) vagy érvénytelen fájlleíró megadásakor a -u kapcsolónak."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3933,7 +3993,7 @@ msgstr ""
" N-nel tér vissza, kivéve ha nem függvényből vagy parancsfájlból akar\n"
" visszatérni – ekkor sikertelenséget jelez."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4103,7 +4163,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót kap."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4145,7 +4205,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha hibás kapcsolót kap, vagy egy NÉV csak\n"
" olvasható."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4179,7 +4239,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4217,7 +4277,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha érvénytelen kapcsolót vagy NEVET kap."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4235,7 +4295,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha N negatív vagy nagyobb mint $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4260,7 +4320,7 @@ msgstr ""
"sikertelenül,\n"
" ha a FÃJLNÉV nem olvasható."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4286,7 +4346,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a munkakezelés nem támogatott vagy hiba\n"
" történt."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4447,7 +4507,7 @@ msgstr ""
"vagy\n"
" érvénytelen argumentumokat kap."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4459,7 +4519,7 @@ msgstr ""
" Ez a „test†beépített parancs szinonimája, de annyiban eltér tőle,\n"
" hogy az utolsó argumentuma „]†kell legyen – a nyitó „]â€-lel összhangban."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4478,7 +4538,7 @@ msgstr ""
" Kilépési kód:\n"
" Mindig sikeres."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4561,7 +4621,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha a SZIGNÃL érvénytelen, vagy érvénytelen\n"
" kapcsolót kap."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4613,7 +4673,8 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, ha minden NÉV megtalálható, sikertelenül, ha nem."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4644,6 +4705,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4708,7 +4770,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen kapcsoló vagy hiba esetében."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4744,7 +4806,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, kivéve ha a MÓD vagy egy kapcsoló érvénytelen."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4756,15 +4818,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Munka befejezésének megvárása, és a kilépési kód visszaadása.\n"
" \n"
@@ -4778,11 +4850,15 @@ msgstr ""
"befejezését,\n"
" és annak kilépési kódját adja vissza.\n"
" \n"
+" Ha a -f kapcsoló meg van adva és a munkakezelés engedélyezve van, akkor\n"
+" megvárja a megadott azonosító befejezését, ahelyett hogy arra várna az\n"
+" az állapot megváltoztatásához.\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:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4807,7 +4883,7 @@ msgstr ""
"kapcsoló\n"
" esetén sikertelenül."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4829,7 +4905,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4860,7 +4936,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4896,7 +4972,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4926,7 +5002,7 @@ msgstr ""
" Kilépési kód:\n"
" A kilépési kód a CSÅVEZETÉK kilépési kódja lesz."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4946,7 +5022,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4979,7 +5055,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utoljára végrehajtott parancs kilépési kódja."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4998,7 +5074,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsónak végrehajtott parancs kilépési kódja."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5017,7 +5093,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsónak végrehajtott parancs kilépési kódja."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5039,7 +5115,7 @@ msgstr ""
" Kilépési kód:\n"
" A coproc parancs 0-s kilépési kóddal tér vissza."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5063,7 +5139,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve ha a NÉV csak olvasható."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5081,7 +5157,7 @@ msgstr ""
" Kilépési kód:\n"
" Az utolsó parancs kilépési kódját adja vissza."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5105,12 +5181,13 @@ msgstr ""
" Kilépési kód:\n"
" A visszaállított parancs kilépési kódjával lép ki."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5123,7 +5200,7 @@ msgstr ""
" Kilépési kód:\n"
" 1-gyel tér vissza, ha KIFEJEZÉS értéke 0, különben 0-val."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5172,7 +5249,7 @@ msgstr ""
" Kilépési kód:\n"
" 0 vagy 1 a KIFEJEZÉSTÅL függÅ‘en."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5273,7 +5350,7 @@ msgstr ""
" HISTIGNORE\tKettőspontokkal elválasztott mintalista, amely mintákra\n"
" \t\tilleszkedő parancsok nem kerülnek az előzmények közé\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5331,7 +5408,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
" során történő hiba esetén."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5380,7 +5457,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy könyvtárváltás\n"
" során történő hiba esetén."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5430,8 +5507,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen argumentum vagy hiba esetén."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5453,8 +5529,9 @@ msgstr ""
"Parancsételmező-kapcsolók beállítása és törlése.\n"
" \n"
" Minden megadott OPTNÉV kapcsoló beállítása. Argumentumok nélkül hívva\n"
-" egy teljes lista kiírása a parancsértelmező kapcsolóiról, jelezve azok\n"
-" állapotát.\n"
+" felsorol minden megadott OPTNEVET – vagy az összes parancsértelmező\n"
+" kapcsolót, ha nincsenek OPTNEVEK megadva – annak jelzésével, hogy be\n"
+" vannak-e állítva vagy sem.\n"
" \n"
" Kapcsolók:\n"
" -o\tOPTNEVEK korlátozása a „set -oâ€-val használtakra\n"
@@ -5467,7 +5544,7 @@ msgstr ""
" Sikerrel tér vissza, ha az OPTNÉV engedélyezve van; sikertelenül, ha\n"
" hibás kapcsolókat kap vagy az OPTNÉV tiltva van."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5484,8 +5561,8 @@ 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"
@@ -5537,7 +5614,7 @@ msgstr ""
" Sikerrel tér vissza, kivéve ha hibás kapcsolókat kap, vagy az írás/\n"
" értékadás hibával járt."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5560,7 +5637,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5583,6 +5660,8 @@ msgstr ""
" \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"
+" -I\tkiegészítések és műveletek alkalmazása a kezdeti (általában a\n"
+" \t\tparancs) szóra\n"
" \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"
@@ -5591,7 +5670,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel tér vissza, kivéve érvénytelen kapcsoló és hiba esetén."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5613,8 +5692,7 @@ msgstr ""
" Kilépési kód:\n"
" Sikerrel lép ki, kivéve érvénytelen kapcsoló vagy hiba esetén."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5654,8 +5732,9 @@ msgstr ""
" \n"
" Kapcsolók:\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"
+" \t-D\t\tAz alapértelmezett kiegészítés beállításainak módosítása\n"
+" \t-E\t\tAz üres kiegészítés beállításainak módosítása\n"
+" \t-I\t\tA kezdeti szón történő kiegészítés beállításainak módosítása\n"
" \n"
" A „-o†helyett „+o†használatával a beállítás kikapcsolható.\n"
" \n"
@@ -5672,7 +5751,7 @@ msgstr ""
"nincs\n"
" még megadva."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5744,7 +5823,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:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5753,3 +5832,19 @@ msgstr ""
"Sorok olvasása egy tömbváltozóba.\n"
" \n"
" A „mapfile†szinonimája."
+
+# see $ help caller
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Az aktuális szubrutinhívás helyével tér vissza.\n"
+#~ " \n"
+#~ " EXPR nélkül a "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: %5ld. folyamat (%s) a the_pipeline-ban"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ismeretlen szignál #"
diff --git a/po/id.gmo b/po/id.gmo
index 118b170a..61f53205 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 596273da..b0c244e4 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,87 +7,92 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.3-rc2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2014-08-06 12:45+0700\n"
"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "array subscript buruk"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: tidak dapat mengubah index ke array yang berassosiasi"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: kunci array assosiasi tidak valid"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: tidak dapat mengassign ke index tidak-numeric"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: harus menggunakan subscript ketika memberikan assosiasi array"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: tidak dapat membuat: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: tidak dapat menemukan keymap untuk perintah"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: bukan karakter whitespace (spasi) pertama ditemukan `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "tidak menutup '%c' dalam %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: hilang pemisah colon"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "'%s': tidak dapat melepaskan"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace expansion: cannot allocate memory for %s"
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "brace expansion: failed to allocate memory for %d elements"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace expansion: failed to allocate memory for `%s'"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nama alias tidak valid"
@@ -106,22 +111,22 @@ msgstr "'%s': nama keymap tidak valid"
msgid "%s: cannot read: %s"
msgstr "%s: tidak dapat membaca: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "'%s': nama fungsi tidak dikenal"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s dapat dipanggil melalui "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "'%s': tidak dapat melepaskan"
@@ -135,29 +140,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "hanya berarti dalam sebuah `for', `while', atau `until'loop"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Mengembalikan konteks dari panggilan subroutine saat ini.\n"
+"Mengembalikan context dari panggilan subroutine saat ini.\n"
+" \n"
+" Tanpa EXPR, mengembalikan \"$line $filename\". Dengan EXPR,\n"
+" mengembalikan \"$line $subroutine $filename\"; informasi extra ini\n"
+" dapat digunakan untuk menyediakan jejak stack.\n"
" \n"
-" Tanpa EXPR, kembali "
+" Nilai dari EXPR mengindikasikan bagaimana banyak panggilan frames "
+"kembali sebelum\n"
+" yang ada; Top frame adalah frame 0. \n"
+" Status Keluar:\n"
+" Mengembalikan 0 kecuali shell sedang tidak menjalankan sebuah fungsi "
+"shell atau EXPR\n"
+" tidak valid."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME tidak diset"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "terlalu banyak argumen"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "top direktori yang baru."
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD tidak diset"
@@ -176,7 +197,7 @@ msgstr "peringatan: "
msgid "%s: usage: "
msgstr "%s: penggunaan: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: pilihan membutuhkan sebuah argumen"
@@ -191,7 +212,7 @@ msgstr "%s: argumen numeric dibutuhkan"
msgid "%s: not found"
msgstr "%s: tidak ditemukan"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: pilihan tidak valid"
@@ -201,7 +222,7 @@ msgstr "%s: pilihan tidak valid"
msgid "%s: invalid option name"
msgstr "%s: nama pilihan tidak valid"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': bukan sebuah identifier yang valid"
@@ -214,7 +235,7 @@ msgstr "nomor oktal tidak valid"
msgid "invalid hex number"
msgstr "nomor hexa tidak valid"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "nomor tidak valid"
@@ -290,75 +311,85 @@ msgstr "error menentukan atribut terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "error mendapatkan atribut terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: error mengambil direktori saat ini: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: spesifikasi pekerjaan ambigu"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: tidak dapat unset: baca-saja %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: tidak dapat unset"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nama aksi tidak valid"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: tidak ada spesifikasi completion"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr ""
"peringatan: pilihan -F mungkin tidak bekerja seperti yang anda harapkan"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr ""
"peringatan: pilihan -C mungkin tidak bekerja seperti yang anda harapkan"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "saat ini sedang tidak menjalankan fungsi completion"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "hanya dapat digunakan dalam sebuah fungsi"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: reference variable cannot be an array"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref variable self references not allowed"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circular name reference"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "tidak dapat menggunakan `-f' untuk membuat fungsi"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: fungsi baca-saja"
@@ -373,7 +404,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: tidak dapat menghapus variabel array secara ini"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: tidak dapat mengubah assosiasi ke array index"
@@ -387,27 +418,32 @@ msgstr "dynamic loading tidak tersedia"
msgid "cannot open shared object %s: %s"
msgstr "tidak dapat membuka object shared %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "tidak dapat menemukan %s dalam shared object %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: bukan dinamically loaded"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: bukan dinamically loaded"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: tidak dapat menghapus: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: bukan sebuah direktori"
@@ -422,12 +458,12 @@ msgstr "%s: bukan sebuah file umum"
msgid "%s: file is too large"
msgstr "%s: file terlalu besar"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: tidak dapat menjalankan berkas binary"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: tidak dapat menjalankan: %s"
@@ -451,15 +487,16 @@ msgstr "Ada pekerjaan yang terhenti.\n"
msgid "There are running jobs.\n"
msgstr "Ada pekerjaan yang sedang berjalan.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "perintah tidak ditemukan"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "spesifikasi sejarah"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: tidak dapat membuka file sementara: %s"
@@ -487,12 +524,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "tekan\tperintah\n"
@@ -503,6 +540,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -539,21 +582,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posisi sejarah"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: argumen limit tidak valid"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expansi sejarah gagal"
@@ -576,7 +619,7 @@ msgstr "%s: argumen harus diproses atau ID pekerjaan"
msgid "Unknown error"
msgstr "Kesalahan tidak diketahui"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "diduga sebuah ekspresi"
@@ -585,12 +628,12 @@ msgstr "diduga sebuah ekspresi"
msgid "%s: not an indexed array"
msgstr "%s: bukan sebuah indeks array"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: spesifikasi file deskripsi tidak valid"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: file deskriptor %s tidak valid"
@@ -618,36 +661,36 @@ msgstr "nama variabel array kosong"
msgid "array variable support required"
msgstr "bantuan array variabel dibutuhkan"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': hilang karakter format"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': spesifikasi timeout tidak valid"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': karakter format tidak valid"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "peringatan: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "format parsing problem: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "hilang digit hexa untuk \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "hilang digit hexa untuk \\%c"
@@ -801,12 +844,12 @@ msgstr ""
" \n"
" Builtin `dirs' menampilkan direktori stack."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: spesifikasi timeout tidak valid"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "error baca: %d: %s"
@@ -815,21 +858,11 @@ msgstr "error baca: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "hanya dapat `return' dari sebuah fungsi atau script yang disource"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "tidak dapat secara simultan unset sebuah fungsi dan sebuah variable"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: tidak dapat unset"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: tidak dapat unset: baca-saja %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: bukan sebuah variabel array"
@@ -844,7 +877,7 @@ msgstr "%s: bukan sebuah fungsi"
msgid "%s: cannot export"
msgstr "%s: tidak dapat unset"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift terhitung"
@@ -852,7 +885,7 @@ msgstr "shift terhitung"
msgid "cannot set and unset shell options simultaneously"
msgstr "tidak dapat menset dan menunset pilihan shell secara bersamaan"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nama pilihan shell tidak valid"
@@ -909,26 +942,26 @@ msgstr "%s adalah %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s memiliki hash (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: argumen limit tidak valid"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': perintah buruk"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: tidak dapat get limit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "batas"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: tidak dapat memodifikasi batas: %s"
@@ -988,77 +1021,76 @@ msgstr "lompat buruk"
msgid "%s: unbound variable"
msgstr "%s: variabel tidak terikat"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "kehabisan waktu menunggu masukan: otomatis-keluar\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "tidak dapat menyalurkan masukan standar dari /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': karakter format tidak valid"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "pipe error"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, fuzzy, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, fuzzy, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
"%s: dibatasi: tidak dapat menspesifikasikan '/' dalam nama nama perintah"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: perintah tidak ditemukan"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpreter buruk"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: tidak dapat menjalankan berkas binary: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': adalah sebuah shell builtin"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "tidak dapat menduplikasikan fd %d ke fd %d"
@@ -1084,61 +1116,66 @@ msgstr "mencoba menempatkan ke bukan sebuah variabel"
msgid "syntax error in variable assignment"
msgstr "syntax error dalam expresi"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "dibagi oleh 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: tanda expassign buruk"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "`:' diharapkan untuk sebuah pernyataan kondisional"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponen kurang dari 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "idenfier diharapkan setelah pre-increment atau pre-decrement"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "hilang `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntax error: operand diharapkan"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntax error: operator arithmetic tidak valid"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (error token adalah \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "basis arithmetic tidak valid"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: jumlah baris tidak valid"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "nilai terlalu besar untuk basis"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expresi error\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: tidak dapat mengakses direktori orang tua"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "tidak dapat mereset mode nodelay untuk fd %d"
@@ -1147,170 +1184,180 @@ 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:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "simpan bash_input: buffer telah ada untuk fd %d baru"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "forked pid %d terlihat dalam pekerjaan yang sedang berjalan %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "menghapus pekerjaan yang terhenti %d dengan proses grup %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: process %5ld (%s) dalam the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) ditandai dengan tetap hidup"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: tidak ada pid seperti itu"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "sinyal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Selesai"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Terhenti"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Terhenti(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Berjalan"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Selesai(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Keluar %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Status tidak diketahui"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core didump) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "anak setpgid (%ld ke %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Tidak ada catatan untuk proses %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: pekerjaan %d terhenti"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: tidak ada pekerjaan seperti itu"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: pekerjaan telah selesai"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: pekerjaan %d sudah berjalan di belakang (background)"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: mengaktifkan WNOHANG untuk menghindari blok tak terhingga"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: baris %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core didump)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd sekarang: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp gagal"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: baris disiplin"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: baris disiplin"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "tidak dapat menset terminal proses grup (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "tidak ada pengontrol pekerjaan dalam shell ini"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: gagal assertion: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1319,39 +1366,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: assertion rusak\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "tidak diketahui"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok dalam daftar bebas clobbered"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: dipanggil dengan argumen blok yang sudah dibebaskan"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: dipanggil dengan argumen blok yang tidak dialokasikan"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underflow terdeteksi; mh_nbytes diluar dari jangkauan"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: awal dan akhir dari ukuran potongan berbeda"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: dipanggil dengan argumen blok yang tidak teralokasikan"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underflow terdeteksi; my_nbytes diluar dari jangkauan"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: awal dan akhir dari ukuran potongan berbeda"
@@ -1394,22 +1451,22 @@ msgstr "%s: spesifikasi jalur network buruk"
msgid "network operations not supported"
msgstr "operasi jaringan tidak dilayani"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: tidak dapat mengubah lokal (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: tidak dapat mengubah local (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: tidak dapat mengubah lokal (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: tidak dapat mengubah lokal (%s): %s"
@@ -1456,110 +1513,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instruksi redireksi `%d' diluar dari jangkauan"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF tidak terduga ketika mencari untuk pencocokan `%c'"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF tidak terduga ketika mencari untuk `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntax error dalam ekspresi kondisional: tanda `%s' tidak terduga"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntax error dalam ekspresi kondisional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "tanda `%s' tidak terduga, diduga `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "diduga `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumen tidak terduga `%s' ke operator kondisional unary"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argumen tidak terduga untuk operasi unary kondisional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "tanda `%s' tidak terduga, operator binary kondisional diduga"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "operator binary kondisional diduga"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumen `%s' tidak terduga ke operator binary kondisional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argumen tidak terduga ke operasi binary kondisional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "tanda `%c' tidak terduga dalam perintah kondisional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "tanda `%s' tidak terduga dalam perintah kondisional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "tanda %d tidak terduga dalam perintah kondisional"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntax error didekat tanda `%s' yang tidak terduga"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntax error didekat `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntax error: tidak terduga diakhir dari berkas"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntax error"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gunakan \"%s\" untuk meninggalkan shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF tidak terduga ketika mencari untuk pencocokan ')'"
@@ -1602,89 +1659,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: '%c': format karakter tidak valid"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "berkas deskripsi diluar dari jangkauan"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirect ambigu"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: tidak dapat menulis berkas yang sudah ada"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricted: tidak dapat meredirect keluaran"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "tidak dapat membuat berkas sementara untuk dokumen disini: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port tidak dilayani tanpa jaringan"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "redirection error: tidak dapat menduplikasi fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "tidak dapat menemukan /tmp, tolong buat!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp harus berupa sebuah nama direktori yang valid"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: pilihan tidak valid"
-#: shell.c:1299
+#: shell.c:1319
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "tidak dapat mereset mode nodelay untuk fd %d"
-#: shell.c:1306
+#: shell.c:1330
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "tidak dapat mereset mode nodelay untuk fd %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: bukan sebuah direktori"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Aku tidak memiliki nama!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versi %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1693,318 +1750,314 @@ msgstr ""
"Penggunaan:\t%s [GNU pilihan panjang] [pilihan] ...\n"
"\t%s [GNU pilihan panjang] [pilihan] berkas-script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU pilihan panjang:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Pilihan shell:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr ""
"\t-ilrsD atau -c perintah atau -O shopt_option\t\t(hanya pemanggilan)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s atau pilihan -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Gunakan perintah 'bashbug' untuk melaporkan bugs.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operasi tidak valid"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Sinyal palsu"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interupsi"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Berhenti"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instruksi ilegal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instruksi ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instruksi EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Floating point exception"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Dibunuh"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bus error"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Kesalahan segmentasi"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Pemanggilan sistem buruk"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Pipe rusak"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarm clock"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Selesai"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Kodisi IO penting"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Terhenti (sinyal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Melanjutkan"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Anak tewas atau berhenti"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Terhenti (tty input)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Terhenti (tty output)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O siap"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Batas CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Batas berkas"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profile)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Window berubah"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Catatan terkunci"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Sinyal pengguna 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Sinyal pengguna 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT masukan data tertunda"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "Kelihatannya akan terjadi kegagalan power suply"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "Kelihatannya akan terjadi kerusakan sistem"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "pindahkan proses ke CPU lain"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "error dalam pemrograman"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT mode monitoring diberikan"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT mode monitoring ditarik"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFTP sound sequence telah selesai"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Permintaan informasi"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Sinyal tidak diketahui #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinyal tidak diketahui #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substitusi buruk: tidak ada penutupan `%s' dalam %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: tidak dapat meng-assign daftar kedalam anggoya array"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "tidak dapat membuat pipe untuk proses substitusi"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "tidak dapat membuat anak untuk proses substitusi"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "tidak dapat membuka named pipe %s untuk membaca"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "tidak dapat membukan named pipe %s untuk menulis"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "tidak dapat menduplikasi nama pipe %s sebagai fd %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "tidak dapat membuat pipe untuk perintah substitusi"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "tidak dapat membuat anak untuk perintah substitusi"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: tidak dapat menduplikasikan pipe sebagi fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: jumlah baris tidak valid"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "`%s': nama alias tidak valid"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter kosong atau tidak diset"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter kosong atau tidak diset"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expresi < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substitusi buruk"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: tidak dapat meng-assign dengan cara ini"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2012,12 +2065,12 @@ msgstr ""
"versi selanjutnya dari shell akan memaksa evaluasi dari sebuah penggantian "
"aritmetika"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substitusi buruk: tidak ada penutupan \"\" dalam %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "tidak cocok: %s"
@@ -2040,124 +2093,129 @@ msgstr "')' diduga"
msgid "`)' expected, found %s"
msgstr "`)' diduga, ditemukan %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: operator unary diduga"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: operator binary diduga"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: operator unary diduga"
+
+#: test.c:881
msgid "missing `]'"
msgstr "hilang `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntax error: `;' tidak terduga"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "nomor sinyal tidak valid"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "%s: maximum function nesting level exceeded (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinyal buruk %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "error mengimpor definisi fungsi untuk `%s'"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "level shell (%d) terlalu tinggi, mereset ke 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: tidak ada context fungsi di scope ini"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: tidak dapat meng-'assign' fd ke variabel"
-#: variables.c:3453
+#: variables.c:3475
#, fuzzy, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: tidak ada context fungsi dalam scope ini"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s memiliki exportstr kosong"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "karakter %d tidak valid dalam exporstr untuk %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "bukan `=' dalam exportstr untuk %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: bukan global_variable context"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: tidak dapat membuka sebagai BERKAS"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nilai dari berkas pendeskripsi penelusur tidak valid"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: diluar jangkauan"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2248,12 +2306,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "perintah [-pVv] perintah [argumen ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [name[=nilai] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilrtux] [-p] name[=nilai] ..."
#: builtins.c:82
@@ -2277,11 +2336,13 @@ msgid "eval [arg ...]"
msgstr "eval [argumen ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts nama optstring [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nama] [perintah [argumen ...]] [redireksi ...]"
#: builtins.c:100
@@ -2413,7 +2474,7 @@ msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
#: builtins.c:181
@@ -2508,7 +2569,7 @@ msgstr "printf [-v var] format [argumen]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o pilihan] [-A action] [-G globpat] [-"
@@ -2518,8 +2579,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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]"
@@ -2981,6 +3042,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3041,7 +3104,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3052,7 +3115,7 @@ msgstr ""
" \n"
" Kadaluarsa. Lihat `help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3080,7 +3143,7 @@ msgstr ""
"sebuah error terjadi.\n"
" atau shell tidak menjalankan sebuah fungsi."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3148,7 +3211,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali sebuah penulisan error terjadi."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3170,7 +3233,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali sebuah penulisan error terjadi."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3226,7 +3289,7 @@ msgstr ""
" Mengembalikan sukses kecuali NAMA bukan sebuah shell builtin atau sebuah "
"error terjadi."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3247,7 +3310,8 @@ msgstr ""
" Mengembalikan status keluar dari perintah atau sukses jika perintah "
"adalah kosong."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3280,8 +3344,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3333,7 +3397,7 @@ msgstr ""
"dari pilihan\n"
" ditemui atau sebuah error terjadi."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3377,7 +3441,7 @@ msgstr ""
" Mengembalikan sukses kecuali PERINTAH tidak ditemukan atau sebuah "
"redireksi error terjadi."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3390,7 +3454,7 @@ msgstr ""
"keluaran\n"
" adalah status dari perintah terakhir yang dijalankan."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3404,7 +3468,7 @@ msgstr ""
"error jika tidak dijalankan\n"
" dalam sebuah login shell."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3463,7 +3527,7 @@ msgstr ""
" Mengembalikan sukses atau status dari perintah yang dijalankan; tidak-"
"nol jika sebuah error terjadi."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3484,7 +3548,7 @@ msgstr ""
" Status dari perintah yang ditempatkan di foreground, atau gagal jika "
"sebuah error terjadi."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3508,7 +3572,7 @@ msgstr ""
" Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau "
"sebuah error terjadi."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3555,7 +3619,7 @@ msgstr ""
" Mengembalikan sukses kecuali NAMA tidak ditemukan atau sebuah pilihan "
"tidak valid telah diberikan."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3597,7 +3661,7 @@ msgstr ""
" Mengembalikan sukses kecuali POLA tidak ditemukan atau pilihan tidak "
"valid diberikan."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3674,7 +3738,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3723,7 +3787,7 @@ msgstr ""
"sebuah error terjadi.\n"
" Jika -x digunakan, mengembalikan status keluar dari PERINTAH."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3756,7 +3820,7 @@ msgstr ""
" Mengembalikan sukses kecuali ada sebuah pilihan tidak valid atau JOBSPEC "
"diberikan."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3801,7 +3865,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3889,7 +3953,7 @@ msgstr ""
" Jika ARG terakhir dievaluasi ke 0, membiarkan kembali ke 1; 0 "
"dikembalikan Jika tidak."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3992,7 +4056,7 @@ msgstr ""
" atau sebuah berkas deskripsi disupply sebagai sebuah argumen ke pilihan -"
"u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4014,7 +4078,7 @@ msgstr ""
" Mengembalikan N, atau gagal jika shell tidak menjalan sebuah fungsi atau "
"script."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4191,7 +4255,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4231,7 +4295,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah NAMA adalah baca-saja."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4266,7 +4330,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"NAMA tidak valid."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4307,7 +4371,7 @@ msgstr ""
" Mengembalikan sukses kecual sebuah pilihan tidak valid diberikan atau "
"NAMA tidak valid."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4325,7 +4389,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali N adalah negatif atau lebih besar dari $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4351,7 +4415,7 @@ msgstr ""
"BERKAS; gagal jika\n"
" NAMA BERKAS tidak dapat dibaca."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4377,7 +4441,7 @@ msgstr ""
" Mengembalikan sukses kecuali pengontrol pekerjaan tidak aktif atau "
"sebuah error terjadi."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4544,7 +4608,7 @@ msgstr ""
"EXPR mengevaluasi ke\n"
" salah atau sebuah argumen tidak valid diberikan."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4556,7 +4620,7 @@ msgstr ""
" Ini sinonim untuk \"test\" builtin, tetapi argumen terakhir\n"
" harus berupa sebuah literal `]', untuk mencocokan dengan pembukaan `['."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4576,7 +4640,7 @@ msgstr ""
" Status Keluar:\n"
" Selalu sukses."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4657,7 +4721,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah SIGSPEC adalah tidak valid atau "
"sebuah pilihan tidak valid diberikan."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4720,7 +4784,7 @@ msgstr ""
" Mengembalikan sukses jika seluruh dari NAMA ditemukan; gagal jika ada "
"yang tidak ditemukan."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4752,6 +4816,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4814,7 +4879,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4852,7 +4917,7 @@ msgstr ""
" Mengembalikan sukses kecuali MODE tidak valid atau sebuah pilihan tidak "
"valid diberikan."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4864,15 +4929,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Tunggu untuk penyelesaian pekerjaan dan kembalikan status keluar.\n"
" \n"
@@ -4890,7 +4965,7 @@ msgstr ""
"pilihan tidak\n"
" valid diberikan."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4916,7 +4991,7 @@ msgstr ""
"pilihan tidak valid\n"
" diberikan."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4940,7 +5015,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4970,7 +5045,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5007,7 +5082,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5035,7 +5110,7 @@ msgstr ""
" Status Keluar:\n"
" Status kembali adalah status kembali dari PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5053,7 +5128,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan setatus dari perintah terakhir yang dijalankan."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5091,7 +5166,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5109,7 +5184,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5126,7 +5201,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dijalankan."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5150,7 +5225,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status keluar dari PERINTAH."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5175,7 +5250,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan sukses kecuali NAMA adalah baca-saja."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5194,7 +5269,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari perintah terakhir yang dieksekusi."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5221,12 +5296,13 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan status dari pekerjaan yang dilanjutkan."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5239,7 +5315,7 @@ msgstr ""
" Status Keluar:\n"
" Mengembalikan 1 jika EXPRESI dievaluasi ke 0; mengembalikan 0 jika tidak."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5296,7 +5372,7 @@ msgstr ""
" Status Keluar:\n"
" 0 atau 1 tergantun dari nilai dari EKSPRESI."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5410,7 +5486,7 @@ msgstr ""
"digunakan untuk menentukan dimana\n"
" \t\tperintah seharusnya disimpan dalam daftar sejarah.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5471,7 +5547,7 @@ msgstr ""
"atau pemindahan\n"
" direktori gagal."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5516,8 +5592,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"
@@ -5527,7 +5603,7 @@ msgstr ""
"atau pemindahan\n"
" direktori gagal."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5584,7 +5660,7 @@ msgstr ""
" Mengembalikan sukses kecuali ada sebuah pilihan tidak valid diberikan "
"atau sebuah error terjadi."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5623,7 +5699,7 @@ msgstr ""
"tidak valid diberikan\n"
" atau OPTNAME dinonaktifkan."
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5641,8 +5717,8 @@ 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"
@@ -5688,7 +5764,7 @@ msgstr ""
"sebuah penulisan atau penempatan\n"
" error terjadi."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5711,7 +5787,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5746,7 +5822,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5769,7 +5845,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"sebuah error terjadi."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5833,7 +5909,7 @@ msgstr ""
"NAMA tidak memiliki\n"
" spesifikasi penyelesaian yang terdefinisi."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5911,7 +5987,7 @@ msgstr ""
" Mengembalikan sukses kecuali sebuah pilihan tidak valid diberikan atau "
"ARRAY adalah baca-saja."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5921,8 +5997,24 @@ msgstr ""
" \n"
" Sebuah sinonim untuk `mapfile'."
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Hak Cipta (C) 2012 Free Software Foundation, Inc."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Hak Cipta (C) 2013 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Mengembalikan konteks dari panggilan subroutine saat ini.\n"
+#~ " \n"
+#~ " Tanpa EXPR, kembali "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: process %5ld (%s) dalam the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Sinyal tidak diketahui #"
#~ msgid ":"
#~ msgstr ":"
diff --git a/po/it.gmo b/po/it.gmo
index bda505ca..4bbd10a4 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index 97ed1ae7..1defc406 100644
--- a/po/it.po
+++ b/po/it.po
@@ -7,89 +7,94 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2011-10-17 09:14+0200\n"
"Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n"
"Language-Team: Italian <tp@lists.linux.it>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural= (n != 1)\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "indice dell'array errato"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossibile convertire un array indicizzato in uno associativo"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: chiave dell'array associativo non valida"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossibile assegnare a un indice non numerico"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossibile creare: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: impossibile trovare una mappatura per il comando"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: il primo carattere non spazio non è \"\"\""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "carattere di chiusura \"%c\" non presente in %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: separatore di tipo due punti mancante"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "\"%s\": impossibile eliminare l'associazione"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": nome alias non valido"
@@ -108,22 +113,22 @@ msgstr "\"%s\": nome della mappatura non valido"
msgid "%s: cannot read: %s"
msgstr "%s: impossibile leggere: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "\"%s\" nome della funzione sconosciuto"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s non è associato ad alcun tasto.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s può essere invocato tramite "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "\"%s\": impossibile eliminare l'associazione"
@@ -137,29 +142,47 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "significativo solo in un ciclo \"for\", \"while\" o \"until\""
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Restituisce il contesto della chiamata alla subroutine corrente.\n"
" \n"
-" Senza ESPR, restituisce "
+" Senza ESPR, restituisce \"$riga $nomefile\". Con ESPR, restituisce\n"
+" \"$riga $subroutine $nomefile\"; questa informazione aggiuntiva può "
+"essere usata\n"
+" per fornire uno stack trace.\n"
+" \n"
+" Il valore dell'ESPR indica di quanti frame di chiamata tornare indietro "
+"rispetto\n"
+" a quello attuale; in cima c'è il frame 0.\n"
+" \n"
+" Stato di uscita:\n"
+" Restituisce 0 a meno che non sia in esecuzione una funzione di shell o "
+"che l'ESPR\n"
+" non sia valida."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME non impostata"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "troppi argomenti"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "nessun'altra directory"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD non impostata"
@@ -178,7 +201,7 @@ msgstr "attenzione: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: l'opzione richiede un argomento"
@@ -193,7 +216,7 @@ msgstr "%s: è necessario un argomento numerico"
msgid "%s: not found"
msgstr "%s: non trovata"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: opzione non valida"
@@ -203,7 +226,7 @@ msgstr "%s: opzione non valida"
msgid "%s: invalid option name"
msgstr "%s: nome dell'opzione non valido"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": non è un identificatore valido"
@@ -216,7 +239,7 @@ msgstr "numero ottale non valido"
msgid "invalid hex number"
msgstr "numero esadecimale non valido"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "numero non valido"
@@ -292,73 +315,83 @@ msgstr "errore nell'impostazione degli attributi del terminale: %s"
msgid "error getting terminal attributes: %s"
msgstr "errore nel recupero degli attributi del terminale: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: specifica di job ambigua"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: impossibile azzerare: %s in sola lettura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: impossibile azzerare"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nome azione non valido"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nessun completamento specificato"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "attenzione: l'opzione -F potrebbe non funzionare come previsto"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "attenzione: l'opzione -C potrebbe non funzionare come previsto"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "funzione di completamento attualmente non in esecuzione"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "può essere usato solo in una funzione"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "\"%s\": nome alias non valido"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "impossibile usare \"-f\" per creare funzioni"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funzione in sola lettura"
@@ -373,7 +406,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossibile eliminare variabili array in questo modo"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossibile convertire un array associativo in uno indicizzato"
@@ -387,27 +420,32 @@ msgstr "caricamento dinamico non disponibile"
msgid "cannot open shared object %s: %s"
msgstr "impossibile aprire l'oggetto condiviso %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossibile trovare %s nell'oggetto condiviso %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: non caricato dinamicamente"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: non caricato dinamicamente"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossibile eliminare: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: è una directory"
@@ -422,12 +460,12 @@ msgstr "%s: non è un file regolare"
msgid "%s: file is too large"
msgstr "%s: file troppo grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossibile eseguire il file binario"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: impossibile eseguire: %s"
@@ -451,15 +489,16 @@ msgstr "Sono presenti job interrotti.\n"
msgid "There are running jobs.\n"
msgstr "Ci sono job in esecuzione.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "nessun comando trovato"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "specifica della cronologia"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: impossibile aprire il file temp: %s"
@@ -487,12 +526,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "rich.\tcomando\n"
@@ -503,6 +542,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -537,21 +582,21 @@ msgstr ""
"Un asterisco (*) vicino a un nome significa che il comando è disabilitato.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "impossibile usare più di uno tra -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posizione nella cronologia"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nome dell'opzione non valido"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: espansione della cronologia non riuscita"
@@ -574,7 +619,7 @@ msgstr "%s: gli argomenti devono essere ID di processo o di job"
msgid "Unknown error"
msgstr "Errore sconosciuto"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "attesa espressione"
@@ -583,12 +628,12 @@ msgstr "attesa espressione"
msgid "%s: not an indexed array"
msgstr "%s: non è un array indicizzato"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: specifica di descrittore di file non valida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descrittore di file non valido: %s"
@@ -616,36 +661,36 @@ msgstr "nome della variabile array vuoto"
msgid "array variable support required"
msgstr "necessario il supporto alla variabile array"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "\"%s\": manca il carattere di formato"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "\"%c\": specifica di formato dell'orario non valida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": carattere di formato non valido"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "attenzione: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "cifra esadecimale mancante in \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "cifra unicode mancante in \\%c"
@@ -798,12 +843,12 @@ msgstr ""
" \n"
" Il comando interno \"dirs\" visualizza lo stack delle directory."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: specifica di timeout non valida"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "errore in lettura: %d: %s"
@@ -813,21 +858,11 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"è possibile eseguire \"return\" solo da una funzione o da uno script chiamato"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "impossibile azzerare contemporaneamente una funzione e una variabile"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: impossibile azzerare"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: impossibile azzerare: %s in sola lettura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: non è una variabile array"
@@ -842,7 +877,7 @@ msgstr "%s: non è una funzione"
msgid "%s: cannot export"
msgstr "%s: impossibile azzerare"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "numero di scorrimenti"
@@ -850,7 +885,7 @@ msgstr "numero di scorrimenti"
msgid "cannot set and unset shell options simultaneously"
msgstr "impossibile impostare e azzerare opzioni di shell contemporaneamente"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome dell'opzione di shell non valido"
@@ -907,26 +942,26 @@ msgstr "%s è %s\n"
msgid "%s is hashed (%s)\n"
msgstr "hash effettuato su %s (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: argomento di limite non valido"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "\"%c\": comando errato"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossibile recuperare il limite: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossibile modificare il limite: %s"
@@ -986,76 +1021,75 @@ msgstr "salto errato"
msgid "%s: unbound variable"
msgstr "%s: variabile non assegnata"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atempo di attesa scaduto per l'input: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossibile redirigere lo standard input da /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: \"%c\": carattere di formato non valido"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "errore della pipe"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: limitato: impossibile specificare \"/\" nei nomi dei comandi"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: comando non trovato"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interprete errato"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossibile eseguire il file binario"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s è un comando interno di shell\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossibile duplicare fd %d su fd %d"
@@ -1081,61 +1115,66 @@ msgstr "tentata un'assegnazione a una non variabile"
msgid "syntax error in variable assignment"
msgstr "errore di sintassi nell'espressione"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "divisione per 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "bug: token di expassign errato"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "atteso \":\" per l'espressione condizionale"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "esponente minore di 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "atteso identificatore dopo un pre-incremento o un pre-decremento"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "\")\" mancante"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "errore di sintassi: atteso un operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "errore di sintassi: operatore aritmetico non valido"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (il token dell'errore è \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base aritmetica non valida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: numero di righe non valido"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valore troppo grande per la base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: errore di espressione\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossibile accedere alle directory padre"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
@@ -1152,162 +1191,172 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: buffer già esistente per il nuovo fd %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pipe pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, 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:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: processo %5ld (%s) in the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid inesistente"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Segnale %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Completato"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Fermato"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Fermato(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "In esecuzione"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Eseguito(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Uscita %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Stato sconosciuto"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dump creato) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (dir: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid del figlio (%ld a %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: il pid %ld non è un figlio di questa shell"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: nessun record del processo %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: il job %d è fermo"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: job inesistente"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: il job è terminato"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: il job %d è già in background"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: attivato WNOHANG per evitare blocchi indefiniti"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: riga %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dump creato)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(dir ora: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp non riuscita"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: disciplina di linea"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina di linea"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossibile impostare il gruppo di processi del terminale (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "nessun controllo dei job in questa shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserzione non riuscita: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1316,39 +1365,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserzione non riuscita\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "sconosciuto"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blocco eliminato nell'elenco dei disponibili"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: chiamata con un argomento di blocco già liberato"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: chiamata con un argomento di blocco non allocato"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: riscontrato un underflow; mh_nbytes fuori intervallo"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: dimensioni diverse dei blocchi di inizio e di fine"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chiamata con un argomento di blocco non allocato"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: riscontrato un underflow; mh_nbytes fuori intervallo"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: dimensioni diverse dei blocchi di inizio e di fine"
@@ -1391,22 +1450,22 @@ msgstr "%s: specifica del percorso di rete errata"
msgid "network operations not supported"
msgstr "operazione di rete non supportata"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: impossibile cambiare la localizzazione (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: impossibile cambiare la localizzazione (%s): %s"
@@ -1454,111 +1513,111 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: istruzione di reindirizzamento \"%d\" fuori dell'intervallo"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF non atteso durante la ricerca di \"%c\""
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF non atteso durante la ricerca di \"]]\""
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr ""
"errore di sintassi nell'espressione condizionale: token non atteso \"%s\""
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "errore di sintassi nell'espressione condizionale"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "token non atteso \"%s\", era atteso \")\""
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "atteso \")\""
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argomento non atteso \"%s\" per l'operatore unario condizionale"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argomento non atteso per l'operatore unario condizionale"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "token non atteso \"%s\", era atteso un operatore binario condizionale"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "atteso operatore binario condizionale"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argomento non atteso \"%s\" per l'operatore binario condizionale"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argomento non atteso per l'operatore binario condizionale"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "token non atteso \"%c\" nel comando condizionale"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "token non atteso \"%s\" nel comando condizionale"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "token non atteso %d nel comando condizionale"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "errore di sintassi vicino al token non atteso \"%s\""
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "errore di sintassi vicino a \"%s\""
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "errore di sintassi: EOF non atteso"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "errore di sintassi"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Usare \"%s\" per uscire dalla shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF non atteso durante la ricerca di \")\""
@@ -1601,89 +1660,89 @@ msgstr "xtrace fd (%d) != numfile xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": carattere di formato non valido"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descrittore di file fuori dell'intervallo"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirezione ambigua"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossibile sovrascrivere il file esistente"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: limitato: impossibile redirigere l'output"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossibile creare un file temporaneo per here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossibile assegnare fd a una variabile"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port non supportata senza rete"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "errore di reindirizzamento: impossibile duplicare fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "impossibile trovare /tmp, è necessario crearla"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp deve essere un nome di directory valido"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opzione non valida"
-#: shell.c:1299
+#: shell.c:1319
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
-#: shell.c:1306
+#: shell.c:1330
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossibile reimpostare il modo nodelay per fd %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: è una directory"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Manca il nome"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versione %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1692,318 +1751,314 @@ msgstr ""
"Uso:\t%s [opzione lunga GNU] [opzione] ...\n"
"\t%s [opzione lunga GNU] [opzione] file-script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Opzioni lunghe GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opzioni di shell:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\topzione -%s oppure -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Usare il comando \"bashbug\" per segnalare i bug.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operazione non valida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Segnale inesistente"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Chiusura"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interruzione"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Uscita (con core dump)"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Istruzione non consentita"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Rilevato trace/breakpoint"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Istruzione ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Istruzione EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Eccezione in virgola mobile"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Ucciso"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Errore di bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Errore di segmentazione"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Chiamata di sistema errata"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Pipe interrotta"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Sveglia"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminato"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condizione di I/O urgente"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Fermato (segnale)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continuato"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Processo figlio concluso o fermato"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Fermato (input da terminale)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Fermato (output da terminale)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O pronto"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Limite di CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Limite di file"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Timer (virtuale)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Timer (profilo)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Finestra modificata"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Blocco del record"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Segnale 1 dell'utente"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Segnale 2 dell'utente"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Dati di input HTF in sospeso"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "mancanza di alimentazione imminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "crash di sistema imminente"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "processo spostato su un'altra CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "errore di programmazione"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Modalità di monitoraggio HFT concessa"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Modalità di monitoraggio HFT revocata"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "la sequenza sonora HFT è stata completata"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Richiesta di informazioni"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Numero di segnale sconosciuto"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Segnale sconosciuto n° %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "sostituzione errata: nessuna chiusura di \"%s\" in %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossibile assegnare una lista a un membro di un array"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "impossibile creare una pipe per la sostituzione del processo"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "impossibile creare un figlio per la sostituzione del processo"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossibile aprire la pipe con nome %s in lettura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossibile aprire la pipe con nome %s in scrittura"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "impossibile duplicare una pipe con nome %s come fd %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "sostituzione errata: manca «\"» di chiusura in %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "impossibile creare una pipe per la sostituzione del comando"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "impossibile creare un figlio per la sostituzione del comando"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: impossibile duplicare la pipe come fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, 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:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: numero di righe non valido"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "\"%s\": nome alias non valido"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametro nullo o non impostato"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametro nullo o non impostato"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressione di sottostringa < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: sostituzione errata"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossibile assegnare in questo modo"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2011,12 +2066,12 @@ msgstr ""
"le versioni future della shell forzeranno la valutazione come fosse una "
"sostituzione aritmetica"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sostituzione errata: manca «\"» di chiusura in %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "nessuna corrispondenza: %s"
@@ -2039,35 +2094,40 @@ msgstr "atteso \")\""
msgid "`)' expected, found %s"
msgstr "atteso \")\", trovato %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: atteso operatore unario"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: atteso operatore binario"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: atteso operatore unario"
+
+#: test.c:881
msgid "missing `]'"
msgstr "\"]\" mancante"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "errore di sintassi: \";\" non atteso"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "numero di segnale non valido"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2075,89 +2135,89 @@ msgstr ""
"run_pending_traps: il gestore dei segnali è SIG_DFL, viene inviato "
"nuovamente %d (%s)"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: segnale errato %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "errore nell'importazione della definizione di funzione per \"%s\""
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "livello di shell (%d) troppo alto, reimpostato a 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: nessun contesto di funzione nell'ambito corrente"
-#: variables.c:2674
+#: variables.c:2693
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: impossibile assegnare fd a una variabile"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: nessun contesto di funzione nell'ambito corrente"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s ha exportstr null"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carattere non valido %d in exportstr per %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "nessun \"=\" in exportstr per %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nessun contesto global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossibile aprire come FILE"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s fuori dall'intervallo"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright © 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
msgid ""
@@ -2251,12 +2311,12 @@ msgstr "command [-pVv] comando [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrtux] [-p] [nome[=valore] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilrtux] [-p] nome[=valore] ..."
#: builtins.c:82
@@ -2280,11 +2340,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts stringaopz nome [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nome] [comando [argomenti ...]] [redirezione ...]"
#: builtins.c:100
@@ -2416,7 +2478,7 @@ msgstr "umask [-p] [-S] [modo]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2512,7 +2574,7 @@ msgstr "printf [-v var] formato [argomenti]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o opzione] [-A azione] [-G modglob] [-"
@@ -2522,8 +2584,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2997,6 +3059,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3064,7 +3128,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3075,7 +3139,7 @@ msgstr ""
" \n"
" Obsoleto. Vedere \"help declare\"."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -3106,7 +3170,7 @@ msgstr ""
"non si\n"
" riscontri un errore o la shell non stia eseguendo una funzione."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3179,7 +3243,7 @@ msgstr ""
" Restituisce successo a meno che non venga riscontrato un errore di "
"scrittura."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3202,7 +3266,7 @@ msgstr ""
" Restituisce successo a meno che non venga riscontrato un errore di "
"scrittura."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3258,7 +3322,7 @@ msgstr ""
" Restituisce successo a meno che NOME non sia un comando interno di shell "
"o si riscontri un errore."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3278,7 +3342,8 @@ msgstr ""
" Restituisce lo stato di uscita del comando o successo se il comando è "
"nullo."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3311,8 +3376,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3369,7 +3434,7 @@ msgstr ""
"raggiunta\n"
" la fine delle opzioni o viene riscontrato un errore."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3413,7 +3478,7 @@ msgstr ""
" Restituisce successo a meno che non sia trovato il COMANDO o si "
"riscontri un errore di ridirezione."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3425,7 +3490,7 @@ msgstr ""
" Esce dalla shell con uno stato N. Se N è omesso lo stato di uscita\n"
" è quello dell'ultimo comando eseguito."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3439,7 +3504,7 @@ msgstr ""
"se non eseguito\n"
" in una shell di login."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3499,7 +3564,7 @@ msgstr ""
" Restituisce successo o lo stato del comando eseguito, non zero se si "
"riscontra un errore."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3520,7 +3585,7 @@ msgstr ""
" Stato del comando messo in primo piano, o insuccesso se si riscontra un "
"errore."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3545,7 +3610,7 @@ msgstr ""
" Restituisce successo a meno che il controllo dei job non sia abilitato o "
"si riscontri un errore."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3593,7 +3658,7 @@ msgstr ""
" Restituisce successo a meno che non sia trovato NOME o sia fornita una "
"opzione non valida."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3637,7 +3702,7 @@ msgstr ""
" Restituisce successo a meno che non venga trovato il MODELLO o sia "
"fornita una opzione non valida."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3713,7 +3778,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3761,7 +3826,7 @@ msgstr ""
"si riscontri un errore.\n"
" Se viene usato -x, restituisce lo stato di uscita del COMANDO."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3795,7 +3860,7 @@ msgstr ""
" Restituisce successo a meno che non venga fornita una opzione non valida "
"o uno SPECJOB."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3842,7 +3907,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3937,7 +4002,7 @@ msgstr ""
" Se l'ultimo ARG viene valutato pari a 0 restituisce 1, altrimenti "
"restituisce 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -4042,7 +4107,7 @@ msgstr ""
"timeout in lettura\n"
" o venga fornito un descrittore di file non valido come argomento per -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4064,7 +4129,7 @@ msgstr ""
" Restituisce N, oppure insuccesso se la shell non sta eseguendo una "
"funzione o uno script."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4250,7 +4315,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che non venga fornita una opzione non valida."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4291,7 +4356,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"NOME sia in sola lettura."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4327,7 +4392,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"il NOME non sia valido."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4367,7 +4432,7 @@ msgstr ""
" Restituisce successo a meno che non venga fornita una opzione non valida "
"o NOME non sia valido."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4385,7 +4450,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che N non sia negativo o maggiore di $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4410,7 +4475,7 @@ msgstr ""
"insuccesso se\n"
" il NOMEFILE non può essere letto."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4436,7 +4501,7 @@ msgstr ""
" Restituisce successo a meno che non sia abilitato il controllo job o si "
"riscontri un errore."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4606,7 +4671,7 @@ msgstr ""
"viene valutata\n"
" falsa o viene fornito un argomento non valido."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4619,7 +4684,7 @@ msgstr ""
"deve\n"
" essere un \"]\" letterale per corrispondere al \"[\" di apertura."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4639,7 +4704,7 @@ msgstr ""
" Stato di uscita:\n"
" Sempre successo."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4725,7 +4790,7 @@ msgstr ""
" Restituisce successo a meno che SPEC_SEGNALE non sia valido o si "
"fornisca una opzione non valida."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4788,7 +4853,7 @@ msgstr ""
" Restituisce successo se tutti i NOMI vengono trovati; insuccesso in caso "
"contrario."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4820,6 +4885,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4884,7 +4950,7 @@ msgstr ""
" Restituisce successo a meno che non venga fornita una opzione non valida "
"o venga riscontrato un errore."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4921,7 +4987,7 @@ msgstr ""
" Restituisce successo a meno che MODO non sia valido o venga fornita una "
"opzione non valida."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4933,15 +4999,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Attende il completamento del job restituendo lo stato di uscita.\n"
" \n"
@@ -4959,7 +5035,7 @@ msgstr ""
"fornita una\n"
" opzione non valida."
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4987,7 +5063,7 @@ msgstr ""
"fornita una opzione non\n"
" valida."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -5012,7 +5088,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5043,7 +5119,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5081,7 +5157,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato di uscita dell'ultimo comando eseguito."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5110,7 +5186,7 @@ msgstr ""
" Stato di uscita:\n"
" Viene restituito lo stato della PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5129,7 +5205,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5168,7 +5244,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5186,7 +5262,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5204,7 +5280,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5230,7 +5306,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato di uscita del COMANDO."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5256,7 +5332,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce successo a meno che il NOME non sia in sola lettura."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5275,7 +5351,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato dell'ultimo comando eseguito."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5299,12 +5375,13 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce lo stato del job ripristinato."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5317,7 +5394,7 @@ msgstr ""
" Stato di uscita:\n"
" Restituisce 1 se ESPRESSIONE è valutata 0, altrimenti restituisce 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5374,7 +5451,7 @@ msgstr ""
" Stato di uscita:\n"
" 0 o 1 a seconda del valore dell'ESPRESSIONE."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5502,7 +5579,7 @@ msgstr ""
"decidere quale\n"
" \t\tcomando dovrebbe essere salvato nell'elenco della cronologia.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5562,7 +5639,7 @@ msgstr ""
"non abbia\n"
" successo il cambio di directory."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5614,7 +5691,7 @@ msgstr ""
"valido o non\n"
" abbia successo il cambio di directory."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5668,7 +5745,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita un'opzione non valida o "
"si riscontri un errore."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5709,7 +5786,7 @@ msgstr ""
"fornita\n"
" una opzione non valida o NOMEOPZ è disabilitato."
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5727,8 +5804,8 @@ 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"
@@ -5779,7 +5856,7 @@ msgstr ""
"o si riscontri\n"
" un errore di scrittura o assegnazione."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5802,7 +5879,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5839,7 +5916,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5863,7 +5940,7 @@ msgstr ""
" Restituisce successo a meno che non sia fornita una opzione non valida o "
"si riscontri un errore."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5929,7 +6006,7 @@ msgstr ""
"o NOME non\n"
" abbia una specifica di completamento definita."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -6010,7 +6087,7 @@ msgstr ""
"valida, ARRAY sia\n"
" in sola lettura oppure non indicizzato."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -6020,8 +6097,24 @@ msgstr ""
" \n"
" Sinonimo per \"mapfile\"."
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright © 2009 Free Software Foundation, Inc.\n"
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright © 2011 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Restituisce il contesto della chiamata alla subroutine corrente.\n"
+#~ " \n"
+#~ " Senza ESPR, restituisce "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: processo %5ld (%s) in the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Numero di segnale sconosciuto"
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/ja.gmo b/po/ja.gmo
index bace2114..b1c1af95 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index b1feb4fd..d8802a2f 100644
--- a/po/ja.po
+++ b/po/ja.po
@@ -8,90 +8,95 @@ msgid ""
msgstr ""
"Project-Id-Version: GNU bash 4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2017-07-02 01:46+0100\n"
"Last-Translator: Yasuaki Taniguchi <yasuakit@gmail.com>\n"
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"Language: ja\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ja\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.0.2\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "誤ã£ãŸé…列ã®æ·»å­—"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: インデックスé…列ã‹ã‚‰é€£æƒ³é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: 無効ãªé€£æƒ³é…列ã®ã‚­ãƒ¼ã§ã™"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: é…列ã®æ·»å­—ã«éžæ•°å­—を設定ã§ãã¾ã›ã‚“"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: 連想é…列を設定ã™ã‚‹ã¨ãã«ã¯æ·»å­—ã‚’ã¤ã‘ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: %s を作æˆã§ãã¾ã›ã‚“"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: コマンドã®ã‚­ãƒ¼ãƒžãƒƒãƒ—ãŒã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: 最åˆã®éžç©ºç™½é¡žæ–‡å­—㌠`\"' ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "é–‰ã˜ã‚‹ `%c' ㌠%s ã«ã‚ã‚Šã¾ã›ã‚“"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: 区切り文字コロン(:)ãŒã‚ã‚Šã¾ã›ã‚“"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': 割り当ã¦è§£é™¤ã§ãã¾ã›ã‚“"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "中括弧展開: %s ã¸ãƒ¡ãƒ¢ãƒªã‚’割り当ã¦ã‚‰ã‚Œã¾ã›ã‚“"
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
"中括弧展開: failed to allocate memory for %d è¦ç´ ã®ãƒ¡ãƒ¢ãƒªã®å‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾"
"ã—ãŸ"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "中括弧展開: `%s' ã¸ã®ãƒ¡ãƒ¢ãƒªå‰²ã‚Šå½“ã¦ã«å¤±æ•—ã—ã¾ã—ãŸ"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': 無効ãªã‚¨ã‚¤ãƒªã‚¢ã‚¹åã§ã™"
@@ -110,22 +115,22 @@ msgstr "`%s': 無効ãªã‚­ãƒ¼ãƒžãƒƒãƒ—åã§ã™"
msgid "%s: cannot read: %s"
msgstr "%s: %s を読ã¿è¾¼ã‚ã¾ã›ã‚“"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': ä¸æ˜Žãªé–¢æ•°åã§ã™"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s ã¯ã©ã®ã‚­ãƒ¼ã«ã‚‚割り当ã¦ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s ã¯æ¬¡ã‚’通ã—ã¦èµ·å‹•ã—ã¾ã™ "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': 割り当ã¦è§£é™¤ã§ãã¾ã›ã‚“"
@@ -139,29 +144,44 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "`for'ã€`while' ã¾ãŸã¯ `until' ループã§ã®ã¿æ„味ãŒã‚ã‚Šã¾ã™"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"ç¾åœ¨ã®ã‚µãƒ–ルーãƒãƒ³å‘¼ã³å‡ºã—ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚\n"
" \n"
-" EXPR ãŒç„¡ã„å ´åˆã€æ¬¡ã‚’è¿”ã—ã¾ã™ "
+" EXPR ãŒç„¡ã„å ´åˆ \"$line $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ EXPR ãŒã‚ã‚‹å ´åˆã€\n"
+" \"$line $subroutine $filename\" ã‚’è¿”ã—ã¾ã™ã€‚ã“ã®è¿½åŠ ã®æƒ…å ±ã¯ã‚¹ã‚¿ãƒƒã‚¯ãƒˆ"
+"レース\n"
+" ã‚’æä¾›ã™ã‚‹æ™‚ã«åˆ©ç”¨ã—ã¾ã™ã€‚\n"
+" \n"
+" EXPR ã®å€¤ã¯ç¾åœ¨ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã«æˆ»ã‚‹ã¾ã§ã«ä½•å›žãƒ•ãƒ¬ãƒ¼ãƒ ãŒå‘¼ã³å‡ºã•ã‚Œã¦ã„ã‚‹ã‹ã‚’\n"
+" æ„味ã—ã¾ã™ã€‚最上ä½ã®ãƒ•ãƒ¬ãƒ¼ãƒ ã¯ 0 ã§ã™ã€‚\n"
+" \n"
+" 終了ステータス:\n"
+" シェルãŒé–¢æ•°ã‚’実行ã§ããªã„ã‹å¼ EXPR ãŒç„¡åŠ¹ãªå ´åˆã‚’除ã 0 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "引数ãŒå¤šã™ãŽã¾ã™"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "ä»–ã®ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
@@ -180,7 +200,7 @@ msgstr "警告: "
msgid "%s: usage: "
msgstr "%s: 使用法: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: オプションã«ã¯å¼•æ•°ãŒå¿…è¦ã§ã™"
@@ -195,7 +215,7 @@ msgstr "%s: æ•°å­—ã®å¼•æ•°ãŒå¿…è¦ã§ã™"
msgid "%s: not found"
msgstr "%s: 見ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™"
@@ -205,7 +225,7 @@ msgstr "%s: 無効ãªã‚ªãƒ—ションã§ã™"
msgid "%s: invalid option name"
msgstr "%s: 無効ãªã‚ªãƒ—ションåã§ã™"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': 有効ãªè­˜åˆ¥å­ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -218,7 +238,7 @@ msgstr "無効ãªå…«é€²æ•°ã§ã™"
msgid "invalid hex number"
msgstr "無効ãªå六進数ã§ã™"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "無効ãªæ•°å­—ã§ã™"
@@ -294,73 +314,83 @@ msgstr "ターミナル属性ã®è¨­å®šæ™‚ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s"
msgid "error getting terminal attributes: %s"
msgstr "ターミナル属性ã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: カレントディレクトリã®å–得時ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—㟠: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: 曖昧ãªã‚¸ãƒ§ãƒ–指定ã§ã™"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "ã“ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã§ã¯ãƒ˜ãƒ«ãƒ—ãŒåˆ©ç”¨ã§ãã¾ã›ã‚“"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: 消去ã§ãã¾ã›ã‚“: %s ã¯èª­ã¿å–り専用ã§ã™"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: 消去ã§ãã¾ã›ã‚“"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: 無効ãªã‚¢ã‚¯ã‚·ãƒ§ãƒ³åã§ã™"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: 補完指定ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "警告: -F オプションã¯æœŸå¾…通りã«å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "警告: -C オプションã¯æœŸå¾…通りã«å‹•ä½œã—ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "補完機能ã¯ç¾åœ¨å®Ÿè¡Œã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "関数ã®ä¸­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: å‚照変数ã¯é…列ã§ã‚ã£ã¦ã¯ã„ã‘ã¾ã›ã‚“"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: 自身をå‚ç…§ã™ã‚‹åå‰å‚照変数ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: 循環åå‰å‚ç…§ã§ã™"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': åå‰å‚ç…§ã¨ã—ã¦ç„¡åŠ¹ãªå¤‰æ•°ã§ã™"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "関数作æˆæ™‚ã« `-f' を使用ã§ãã¾ã›ã‚“"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: 読ã¿å–り専用関数ã§ã™"
@@ -375,7 +405,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: ã“ã®æ–¹æ³•ã§é…列変数を消去ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: 連想é…列ã‹ã‚‰ã‚¤ãƒ³ãƒ‡ãƒƒã‚¯ã‚¹é…列ã«å¤‰æ›ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
@@ -389,27 +419,32 @@ msgstr "動的ロードã¯åˆ©ç”¨ã§ãã¾ã›ã‚“"
msgid "cannot open shared object %s: %s"
msgstr "共有オブジェクト %s ã‚’é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“ : %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "%s ãŒå…±æœ‰ã‚ªãƒ–ジェクト %s ã«å­˜åœ¨ã—ã¾ã›ã‚“: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã›ã‚“"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "関数 %s ã®ãƒ­ãƒ¼ãƒ‰ãŒå¤±æ•—ã‚’è¿”ã—ã¾ã—ãŸ(%d): ロードã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: å‹•çš„ã«ãƒ­ãƒ¼ãƒ‰ã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: 削除ã§ãã¾ã›ã‚“: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: ディレクトリã§ã™"
@@ -424,12 +459,12 @@ msgstr "%s: 通常ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“"
msgid "%s: file is too large"
msgstr "%s: ファイルãŒå¤§ãã™ãŽã¾ã™"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’実行ã§ãã¾ã›ã‚“"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: 実行ã§ãã¾ã›ã‚“: %s"
@@ -453,15 +488,16 @@ msgstr "åœæ­¢ã—ã¦ã„るジョブãŒã‚ã‚Šã¾ã™ã€‚\n"
msgid "There are running jobs.\n"
msgstr "動作中ã®ã‚¸ãƒ§ãƒ–ãŒã‚ã‚Šã¾ã™ã€‚\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "ヒストリ指定"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: 一時ファイルを開ãã“ã¨ãŒã§ãã¾ã›ã‚“: %s"
@@ -489,12 +525,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "hits\tcommand\n"
@@ -504,6 +540,12 @@ msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
msgstr[0] "キーワードã«ä¸€è‡´ã—ãŸã‚·ã‚§ãƒ«ã‚³ãƒžãƒ³ãƒ‰ `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -539,21 +581,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "ヒストリä½ç½®"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¹ã‚¿ãƒ³ãƒ—ã§ã™"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: ヒストリã®å±•é–‹ã«å¤±æ•—ã—ã¾ã—ãŸ"
@@ -576,7 +618,7 @@ msgstr "%s: 引数ã¯ãƒ—ロセスIDã‹ã‚¸ãƒ§ãƒ–IDã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
msgid "Unknown error"
msgstr "ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼ã§ã™"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
@@ -585,12 +627,12 @@ msgstr "å¼ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "%s: not an indexed array"
msgstr "%s: インデックスé…列ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­æŒ‡å®šã§ã™"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: 無効ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­: %s"
@@ -618,36 +660,36 @@ msgstr "空ã®é…列変数åã§ã™"
msgid "array variable support required"
msgstr "é…列変数ã®ã‚µãƒãƒ¼ãƒˆãŒå¿…è¦ã§ã™"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': 書å¼æŒ‡å®šæ–‡å­—ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': 無効ãªæ™‚間書å¼æŒ‡å®šã§ã™"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': 無効ãªæ›¸å¼æŒ‡å®šæ–‡å­—ã§ã™"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "警告: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "書å¼è§£æžå•é¡Œã§ã™: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "\\x 用ã®å六進数字ãŒã‚ã‚Šã¾ã›ã‚“"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "\\%c 用ã®ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ•°å€¤ãŒã‚ã‚Šã¾ã›ã‚“"
@@ -797,12 +839,12 @@ msgstr ""
" \n"
" `dirs' ビルトインコマンドã§ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã‚¹ã‚¿ãƒƒã‚¯ã‚’表示ã—ã¾ã™ã€‚"
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: 無効ãªã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆæŒ‡å®šã§ã™"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: %d: %s"
@@ -811,21 +853,11 @@ msgstr "読ã¿è¾¼ã¿ã‚¨ãƒ©ãƒ¼: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "`return' ã¯é–¢æ•°ã¾ãŸã¯ source ã•ã‚ŒãŸã‚¹ã‚¯ãƒªãƒ—ト内ã®ã¿ã§åˆ©ç”¨ã§ãã¾ã™"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "変数ã¨é–¢æ•°ã‚’åŒæ™‚ã«æ¶ˆåŽ»ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: 消去ã§ãã¾ã›ã‚“"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: 消去ã§ãã¾ã›ã‚“: %s ã¯èª­ã¿å–り専用ã§ã™"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: é…列変数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
@@ -840,7 +872,7 @@ msgstr "%s: 関数ã§ã¯ã‚ã‚Šã¾ã›ã‚“"
msgid "%s: cannot export"
msgstr "%s: export ã§ãã¾ã›ã‚“"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "シフト回数"
@@ -848,7 +880,7 @@ msgstr "シフト回数"
msgid "cannot set and unset shell options simultaneously"
msgstr "シェルオプションをåŒæ™‚ã«æœ‰åŠ¹ã‹ã¤ç„¡åŠ¹ã«ã§ãã¾ã›ã‚“"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: 無効ãªã‚·ã‚§ãƒ«ã‚ªãƒ—ションåã§ã™"
@@ -905,26 +937,26 @@ msgstr "%s 㯠%s ã§ã™\n"
msgid "%s is hashed (%s)\n"
msgstr "%s ã¯ãƒãƒƒã‚·ãƒ¥ã•ã‚Œã¦ã„ã¾ã™ (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: limit ã®ç„¡åŠ¹ãªå¼•æ•°ã§ã™"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': 誤ã£ãŸã‚³ãƒžãƒ³ãƒ‰ã§ã™"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: limit ã‚’å–å¾—ã§ãã¾ã›ã‚“: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: limit を変更ã§ãã¾ã›ã‚“ : %s"
@@ -984,76 +1016,75 @@ msgstr "誤ã£ãŸã‚¸ãƒ£ãƒ³ãƒ—ã§ã™"
msgid "%s: unbound variable"
msgstr "%s: 未割り当ã¦ã®å¤‰æ•°ã§ã™"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\a入力待ã¡ãŒã‚¿ã‚¤ãƒ ã‚¢ã‚¦ãƒˆã—ã¾ã—ãŸ: 自動ログアウト\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "/dev/null ã‹ã‚‰æ¨™æº–入力ã«å¯¾ã—ã¦ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ãã¾ã›ã‚“: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': 無効ãªæ›¸å¼æ–‡å­—ã§ã™"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "パイプエラー"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: eval ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: source ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: 関数ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: 制é™ã•ã‚Œã¦ã„ã¾ã™: `/' をコマンドåã®ä¸­ã«æŒ‡å®šã§ãã¾ã›ã‚“"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: コマンドãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: 誤ã£ãŸã‚¤ãƒ³ã‚¿ãƒ—リタã§ã™"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ãƒã‚¤ãƒŠãƒªãƒ•ã‚¡ã‚¤ãƒ«ã‚’実行ã§ãã¾ã›ã‚“: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': 特殊シェル組ã¿è¾¼ã¿é–¢æ•°ã§ã™"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "fd %d ã‚’ fd %d ã«è¤‡è£½ã§ãã¾ã›ã‚“"
@@ -1079,61 +1110,66 @@ msgstr "éžå¤‰æ•°ã«å‰²ã‚Šå½“ã¦ã‚’è¡ŒãŠã†ã¨ã—ã¦ã¾ã™"
msgid "syntax error in variable assignment"
msgstr "å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "0 ã«ã‚ˆã‚‹é™¤ç®—ã§ã™"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "ãƒã‚°: 誤ã£ãŸå¼ã®ãƒˆãƒ¼ã‚¯ãƒ³ã§ã™"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "æ¡ä»¶å¼ã«ã¯ `:' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "0よりå°ã•ã„指数部ã§ã™"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "識別å­ã¯å‰ç½®ã‚¤ãƒ³ã‚¯ãƒªãƒ¡ãƒ³ãƒˆã¾ãŸã¯å‰ç½®ãƒ‡ã‚¯ãƒªãƒ¡ãƒ³ãƒˆãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "`)' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "構文エラー: オペランドãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "構文エラー: 無効ãªè¨ˆç®—演算å­ã§ã™"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (エラーã®ã‚るトークン㯠\"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "無効ãªåŸºåº•ã®æ•°å€¤ã§ã™"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: 無効ãªè¡Œæ•°ã§ã™"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "基底ã®å€¤ãŒå¤§ãã™ãŽã¾ã™"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: å¼ã®ã‚¨ãƒ©ãƒ¼\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: 親ディレクトリã«ã‚¢ã‚¯ã‚»ã‚¹ã§ãã¾ã›ã‚“"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "ファイル記述å­(fd) %d ã‚’ç„¡é…延モードã«å†è¨­å®šã§ãã¾ã›ã‚“"
@@ -1148,162 +1184,172 @@ msgstr "æ–°è¦ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­(fd) %d ã‚’ bash ã®å…¥åŠ›ã¨ã—ã¦å‰²ã‚Šå½“ã
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: æ–°è¦ fd %d ã®ãƒãƒƒãƒ•ã‚¡ã¯ã™ã§ã«å­˜åœ¨ã—ã¾ã™"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "実行中ã®ã‚¸ãƒ§ãƒ– %2$d 㧠fork ã—㟠pid %1$d ãŒå‡ºç¾ã—ã¾ã—ãŸ"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "プロセスグループ %2$ld ã®ã‚¸ãƒ§ãƒ– %1$d を削除ã—ã¦ã„ã¾ã™"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: プロセス %5ld (%s) ㌠the_pipeline ã«ã‚ã‚Šã¾ã™"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) ã¯ã¾ã å­˜åœ¨ã—ã¦ã„ã‚‹ã¨ãƒžãƒ¼ã‚¯ã•ã‚Œã¦ã„ã¾ã™"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ãã®ã‚ˆã†ãª pid ã¯å­˜åœ¨ã—ã¾ã›ã‚“"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "シグナル %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "終了"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "åœæ­¢"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "åœæ­¢ (%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "実行中"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "終了(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "終了 %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "ä¸æ˜Žãªã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(コアダンプ) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "å­ãƒ—ロセス setpgid (%ld ã‹ã‚‰ %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld ã¯ã“ã®ã‚·ã‚§ãƒ«ã®å­ãƒ—ロセスã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: プロセス %ld ã®è¨˜éŒ²ãŒã‚ã‚Šã¾ã›ã‚“"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: ジョブ %d ã¯åœæ­¢ã—ã¦ã„ã¾ã™"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: ãã®ã‚ˆã†ãªã‚¸ãƒ§ãƒ–ã¯ã‚ã‚Šã¾ã›ã‚“"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: ジョブã¯çµ‚了ã—ã¾ã—ãŸ"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: ジョブ %d ã¯ã™ã§ã«ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰ã§å‹•ä½œã—ã¦ã„ã¾ã™"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ä¸å®šã®ãƒ–ロックをé¿ã‘ã‚‹ãŸã‚ã« WNOHANG をオンã«ã—ã¾ã—ãŸã€‚"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d 行: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (コアダンプ)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd now: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp ãŒå¤±æ•—ã—ã¾ã—ãŸ"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: line discipline"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "端末プロセスグループを設定ã§ãã¾ã›ã‚“ (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "ã“ã®ã‚·ã‚§ãƒ«ã§ã¯ã‚¸ãƒ§ãƒ–制御ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: 失敗ã—ãŸã‚¢ã‚µãƒ¼ã‚·ãƒ§ãƒ³: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1312,39 +1358,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: アサーション失敗\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "ä¸æ˜Ž"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: free ブロックリストãŒå£Šã‚Œã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: 既㫠free ã•ã‚ŒãŸãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: 開始ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: 未割当ã®ãƒ–ロックを引数ã¨ã—ã¦å‘¼ã³å‡ºã•ã‚Œã¾ã—ãŸ"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: アンダーフローを検出ã—ã¾ã—ãŸã€‚ mh_nbytes ãŒç¯„囲外ã§ã™"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 開始ã¨çµ‚了ã®å¡Šã®å¤§ãã•ãŒç•°ãªã£ã¦ã„ã¾ã™"
@@ -1386,22 +1442,22 @@ msgstr "%s: ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãƒ‘ス指定ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™"
msgid "network operations not supported"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯æ“作ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ロケールを変更ã§ãã¾ã›ã‚“ (%s): %s"
@@ -1448,110 +1504,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: リダイレクト指定 `%d' ã¯ç¯„囲外ã§ã™"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "対応ã™ã‚‹ `%c' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "`]]' を探索中ã«äºˆæœŸã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼: 予期ã—ãªã„トークン `%s' ã§ã™"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "æ¡ä»¶å¼ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "予期ã—ãªã„トークン `%s' ã§ã™ã€‚`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "æ¡ä»¶å˜é …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "`%s` ã¯äºˆæœŸã—ãªã„トークンã§ã™ã€‚æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "æ¡ä»¶äºŒé …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数 `%s' ã§ã™"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "æ¡ä»¶äºŒé …演算å­ã«äºˆæœŸã—ãªã„引数ã§ã™"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%c' ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン `%s' ãŒã‚ã‚Šã¾ã™"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "æ¡ä»¶ã‚³ãƒžãƒ³ãƒ‰ã«äºˆæœŸã—ãªã„トークン %d ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "予期ã—ãªã„トークン `%s' 周辺ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "`%s' 周辺ã«æ§‹æ–‡ã‚¨ãƒ©ãƒ¼ãŒã‚ã‚Šã¾ã™"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "構文エラー: 予期ã—ãªã„ファイル終了 (EOF) ã§ã™"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "構文エラー"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "シェルã‹ã‚‰è„±å‡ºã™ã‚‹ã«ã¯ \"%s\" を使用ã—ã¦ãã ã•ã„。\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "対応ã™ã‚‹ `)' を探索中ã«äºˆæœŸã—ãªã„ファイル終了(EOF)ã§ã™"
@@ -1594,89 +1650,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': 無効ãªæ›¸å¼æ–‡å­—ã§ã™"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "ファイル記述å­ãŒç¯„囲外ã§ã™"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: 曖昧ãªãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: 存在ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã‚’上書ãã§ãã¾ã›ã‚“"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: 制é™ã•ã‚Œã¦ã„ã¾ã™: 出力をリダイレクト出æ¥ã¾ã›ã‚“"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "ヒアドキュメント用一時ファイルを作æˆã§ãã¾ã›ã‚“: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ (fd) を変数ã«è¨­å®šã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "ãƒãƒƒãƒˆãƒ¯ãƒ¼ã‚¯ãŒç„¡åŠ¹ãªå ´åˆ /dev/(tcp|udp)/host/port ã¯ã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã›ã‚“"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "リダイレクトエラー: ファイル記述å­ã‚’複製ã§ãã¾ã›ã‚“"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "/tmp ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。作æˆã—ã¦ãã ã•ã„!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp ã¯æœ‰åŠ¹ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã§ãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: 無効ãªã‚ªãƒ—ション"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "uidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "gidã‚’ %d ã«è¨­å®šã§ãã¾ã›ã‚“: 実効gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "デãƒãƒƒã‚¬ã‚’開始ã§ãã¾ã›ã‚“。デãƒãƒƒã‚¬ãƒ¢ãƒ¼ãƒ‰ãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: ディレクトリã§ã™"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "ç§ã¯åå‰ãŒã‚ã‚Šã¾ã›ã‚“!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, ãƒãƒ¼ã‚¸ãƒ§ãƒ³ %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1685,326 +1741,322 @@ msgstr ""
"使用法:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU å½¢å¼ã®é•·ã„オプション:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "シェルオプション:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD, -c command ã¾ãŸã¯ -O shopt_option\t\t(起動時ã®ã¿)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ã¾ãŸã¯ -o option\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"シェルオプションã®è©³ç´°ã«ã¤ã„ã¦ã¯ `%s -c \"help set\"'ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "シェル組ã¿è¾¼ã¿ã‚³ãƒžãƒ³ãƒ‰ã«ã¤ã„ã¦ã¯ `%s -c help' ã¨å…¥åŠ›ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "ãƒã‚°å ±å‘Šã‚’ã™ã‚‹å ´åˆã¯ `bashbug' コマンドを使用ã—ã¦ãã ã•ã„。\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bashホームページ: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"GNUソフトウェアを使用ã™ã‚‹æ™‚ã®ä¸€èˆ¬çš„ãªãƒ˜ãƒ«ãƒ— : <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: 無効ãªæ“作ã§ã™"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "悪ã„シグナル"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "åœæ­¢"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "割り込ã¿"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "終了"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "ä¸æ­£ãªæŒ‡å®š"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT 指定"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT 指定"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "浮動å°æ•°ç‚¹ä¾‹å¤–"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Killed"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "ãƒã‚¹ã‚¨ãƒ©ãƒ¼"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "セグメンテーションフォルト"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "誤ã£ãŸã‚·ã‚¹ãƒ†ãƒ ã‚³ãƒ¼ãƒ«"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "パイプãŒåˆ‡ã‚Œã¾ã—ãŸ"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "アラーム時計"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminated"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "急ãŽã® IO 状態"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "åœæ­¢ (シグナル)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "続行"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "å­ãƒ—ロセスã®æ­»äº¡ã¾ãŸã¯åœæ­¢ "
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "åœæ­¢ (tty 入力)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "åœæ­¢ (tty 出力)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O 用æ„ãŒã§ãã¦ã„ã¾ã™"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU limit"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "ファイル limit"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "警報 (仮想)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "警報 (プロファイル)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "ウィンドウãŒå¤‰æ›´ã•ã‚Œã¾ã—ãŸ"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "記録ã®ãƒ­ãƒƒã‚¯"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "ユーザシグナル 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "ユーザシグナル 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT 未決ã®å…¥åŠ›ãƒ‡ãƒ¼ã‚¿"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "é›»æºæ•…éšœã®å±é™º"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "システムクラッシュã®å±é™º"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "プロセスを別ã®CPUã«ç§»å‹•"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "プログラミングエラー"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT monitorモードãŒä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT monitorモードãŒå¥ªã‚ã‚Œã¾ã—ãŸ"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT サウンドシーケンスãŒå®Œäº†ã—ã¾ã—ãŸ"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "情報è¦æ±‚"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "ä¸æ˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå·"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "ä¸æ˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå· %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "誤ã£ãŸä»£å…¥: é–‰ã˜ã‚‹ `%s' ㌠%s ã«å­˜åœ¨ã—ã¾ã›ã‚“"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: リストをé…列è¦ç´ ã«å‰²ã‚Šå½“ã¦ã§ãã¾ã›ã‚“"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "プロセス代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "プロセス代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "åå‰ä»˜ãパイプ %s を読ã¿è¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "åå‰ä»˜ãパイプ %s を書ãè¾¼ã¿ç”¨ã«é–‹ã‘ã¾ã›ã‚“"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "åå‰ä»˜ãパイプ %s をファイル記述å­(fd) %d ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚ã‚Šã¾ã›ã‚“"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "コマンド代入ã§ã¯ãƒ‘イプを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "コマンド代入ã§ã¯å­ãƒ—ロセスを作æˆã§ãã¾ã›ã‚“"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: パイプを fd 1 ã¨ã—ã¦è¤‡è£½ã§ãã¾ã›ã‚“"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åŠ¹ãªå¤‰æ•°ã§ã™"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: 無効ãªè¡Œæ•°ã§ã™"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: 無効ãªå¤‰æ•°åã§ã™"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: パラメータ㌠null ã¾ãŸã¯è¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: substring expression < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: 誤ã£ãŸä»£å…¥ã§ã™"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ã“ã®æ–¹æ³•ã§å‰²å½“ã¯ã§ãã¾ã›ã‚“"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr "å°†æ¥ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã‚·ã‚§ãƒ«ã§ã¯å¼·åˆ¶çš„ã«æ•°å€¤ä»£å…¥ã¨ã—ã¦è©•ä¾¡ã•ã‚Œã¾ã™"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "誤ã£ãŸä»£å…¥: %s ã«é–‰ã˜ã‚‹ \"`\" ãŒã‚ã‚Šã¾ã›ã‚“"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "一致ã—ã¾ã›ã‚“: %s"
@@ -2027,35 +2079,40 @@ msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™"
msgid "`)' expected, found %s"
msgstr "`)' ãŒäºˆæœŸã•ã‚Œã¾ã™ãŒã€è¦‹ã¤ã‹ã£ãŸã®ã¯ %s ã§ã™"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: å˜é …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: 二項演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: å˜é …演算å­ãŒäºˆæœŸã•ã‚Œã¾ã™"
+
+#: test.c:881
msgid "missing `]'"
msgstr "`]'ãŒã‚ã‚Šã¾ã›ã‚“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "構文エラー: 予期ã—ãªã„ `;' ã§ã™"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "無効ãªã‚·ã‚°ãƒŠãƒ«ç•ªå·"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: eval ã®å…¥ã‚Œå­ãƒ¬ãƒ™ãƒ«ã®æœ€å¤§å€¤ã‚’超ãˆã¦ã„ã¾ã™ (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d] ã«èª¤ã£ãŸå€¤ãŒã‚ã‚Šã¾ã™: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2063,86 +2120,86 @@ msgstr ""
"run_pending_traps: シグナルãƒãƒ³ãƒ‰ãƒ©ãƒ¼ã¯ SIG_DFLã§ã™ã€‚, %d (%s) を自身ã«å†é€ã—"
"ã¾ã™ã€‚"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: 誤ã£ãŸã‚·ã‚°ãƒŠãƒ« %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "`%s' ã®é–¢æ•°å®šç¾©ã‚’インãƒãƒ¼ãƒˆä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸ"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "シェルレベル (%d) ã¯é«˜ã™ãŽã¾ã™ã€‚1ã«å†è¨­å®šã•ã‚Œã¾ã—ãŸ"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: 変数ãŒåˆæœŸåŒ–ã•ã‚Œã¦ã„ãªã„ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“"
-#: variables.c:3453
+#: variables.c:3475
#, fuzzy, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: åå‰å‚ç…§ã¨ã—ã¦ç„¡åŠ¹ãªå¤‰æ•°ã§ã™"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ç¾åœ¨ã®ã‚¹ã‚³ãƒ¼ãƒ—ã¯é–¢æ•°ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s 㯠null ã® exportstr ã‚’æŒã£ã¦ã„ã¾ã™"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s ã«å¯¾ã™ã‚‹ exportstr 㧠%1$d ã¯ç„¡åŠ¹ãªæ–‡å­—ã§ã™"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s ã«å¯¾ã™ã‚‹ exportstr ã« `=' ãŒã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: shell_variables ã®å…ˆé ­ã§ã™ã€‚関数コンテキストã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: global_variables コンテキストã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables ã®å…ˆé ­ã§ã™ã€‚一時環境スコープã§ã¯ã‚ã‚Šã¾ã›ã‚“"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ファイルã¨ã—ã¦é–‹ãã“ã¨ãŒã§ãã¾ã›ã‚“"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: トレースファイル記述å­ã¨ã—ã¦ç„¡åŠ¹ãªå€¤ã§ã™"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: 値ã®äº’æ›æ€§ãŒç¯„囲外ã§ã™"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2230,11 +2287,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2258,11 +2317,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring name [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
#: builtins.c:100
@@ -2391,7 +2452,7 @@ msgstr "umask [-p] [-S] [mode]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
#: builtins.c:181
@@ -2486,7 +2547,7 @@ msgstr "printf [-v var] format [arguments]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o option] [-A action] [-G globpat] [-"
@@ -2494,9 +2555,10 @@ msgstr ""
"suffix] [name ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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]"
@@ -2953,6 +3015,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3015,7 +3079,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3026,7 +3090,7 @@ msgstr ""
" \n"
" æ—§å¼ã§ã™ã€‚`help declare'ã‚’å‚ç…§ã—ã¦ãã ã•ã„。"
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3054,7 +3118,7 @@ msgstr ""
"ã§ããªã„\n"
" å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3122,7 +3186,7 @@ msgstr ""
" 終了ステータス:\n"
" 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3144,7 +3208,7 @@ msgstr ""
" 終了ステータス:\n"
" 書ãè¾¼ã¿ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3196,7 +3260,7 @@ msgstr ""
" 終了ステータス:\n"
" NAME ãŒçµ„ã¿è¾¼ã¿é–¢æ•°ã§ã¯ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3216,7 +3280,8 @@ msgstr ""
" コマンドã®çµ‚了ステータスを返ã—ã¾ã™ã€‚コマンド㌠null ã®å ´åˆã¯æˆåŠŸã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3249,8 +3314,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3293,7 +3358,7 @@ msgstr ""
" オプションãŒè¦‹ã¤ã‹ã£ãŸå ´åˆã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚オプションã®çµ‚ã‚ã‚Š\n"
" ã«åˆ°é”ã™ã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3336,7 +3401,7 @@ msgstr ""
" COMMAND ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾"
"ã™ã€‚"
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3348,7 +3413,7 @@ msgstr ""
" 終了ステータス N ã§ã‚·ã‚§ãƒ«ã‚’終了ã—ã¾ã™ã€‚ N を指定ã—ãªã„å ´åˆã¯\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスã«ãªã‚Šã¾ã™ã€‚"
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3362,7 +3427,7 @@ msgstr ""
"ル\n"
" 内ã§ç„¡ã„å ´åˆã¯ã‚¨ãƒ©ãƒ¼ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3422,7 +3487,7 @@ msgstr ""
"0 \n"
" 以外ã®å€¤ã«ãªã‚Šã¾ã™ã€‚"
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3447,7 +3512,7 @@ msgstr ""
"ãŒ\n"
" 発生ã—ãŸæ™‚ã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3471,7 +3536,7 @@ msgstr ""
" 終了ステータス:\n"
" ジョブ制御ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3515,7 +3580,7 @@ msgstr ""
" 終了ステータス:\n"
" NAME ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3556,7 +3621,7 @@ msgstr ""
" PATTERN ãŒè¦‹ã¤ã‹ã‚‰ãªã„ã‹ç„¡åŠ¹ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾"
"ã™ã€‚"
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3624,7 +3689,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3671,7 +3736,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚\n"
" ã‚‚ã— -x ãŒä½¿ç”¨ã•ã‚ŒãŸå ´åˆã€COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3704,7 +3769,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ション㋠JOBSPEC ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3750,7 +3815,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3835,7 +3900,7 @@ msgstr ""
" ARG ã®æœ€çµ‚çš„ãªè©•ä¾¡å€¤ãŒ 0 ã®å ´åˆ let 㯠1 ã‚’è¿”ã—ã¾ã™ã€‚ãれ以外ã®å ´åˆã¯\n"
" let 㯠0 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3934,7 +3999,7 @@ msgstr ""
"エ\n"
" ラーãŒç™ºç”Ÿã€ -u ã«ç„¡åŠ¹ãªãƒ•ã‚¡ã‚¤ãƒ«è¨˜è¿°å­ãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã‚’除ã0ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3958,7 +4023,7 @@ msgstr ""
"ã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4124,7 +4189,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4166,7 +4231,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ NAME ãŒèª­ã¿å–り専用ã®å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—"
"ã¾ã™ã€‚"
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4201,7 +4266,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ç„¡åŠ¹ãª NAME ãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸ\n"
" ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4241,7 +4306,7 @@ msgstr ""
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€ä¸Žãˆã‚‰ã‚ŒãŸ NAME ãŒç„¡åŠ¹ãªå ´åˆã‚’除ãæˆåŠŸ\n"
" ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4259,7 +4324,7 @@ msgstr ""
" 終了ステータス:\n"
" NãŒè² ã®å€¤ã¾ãŸã¯ $# より大ãã„å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4283,7 +4348,7 @@ msgstr ""
" FILENAME ã§æœ€å¾Œã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚FILENAME ãŒ\n"
" 読ã¿è¾¼ã‚ãªã‹ã£ãŸå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4307,7 +4372,7 @@ msgstr ""
" 終了ステータス:\n"
" ジョブ制御ãŒæœ‰åŠ¹ã§ãªã„ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4469,7 +4534,7 @@ msgstr ""
"ã¾ãŸã¯\n"
" 引数ãŒç„¡åŠ¹ãªå ´åˆã«å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4482,7 +4547,7 @@ msgstr ""
"致\n"
" ã™ã‚‹ã‚ˆã†ã«æ–‡å­—`]'を与ãˆãªã‘ã‚Œã°ã„ã‘ã¾ã›ã‚“。"
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4502,7 +4567,7 @@ msgstr ""
" 終了ステータス:\n"
" 常ã«æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4584,7 +4649,7 @@ msgstr ""
" 終了ステータス:\n"
" SIGSPEC ãŒç„¡åŠ¹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションを与ãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4643,7 +4708,7 @@ msgstr ""
"åˆ\n"
" ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4675,6 +4740,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4736,7 +4802,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションを与ãˆã‚‹ã‹ã€ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚Šã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4770,7 +4836,7 @@ msgstr ""
" 終了ステータス:\n"
" MODE ãŒç„¡åŠ¹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4782,15 +4848,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"ジョブã®å®Ÿè¡Œå®Œäº†ã‚’å¾…ã¡ã€çµ‚了ステータスを返ã—ã¾ã™ã€‚\n"
" \n"
@@ -4804,7 +4880,7 @@ msgstr ""
" 最後㮠ID ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚IDãŒç„¡åŠ¹ã§ã‚ã‚‹ã‹ã€ç„¡åŠ¹ãªã‚ªãƒ—\n"
" ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆã«ã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4830,7 +4906,7 @@ msgstr ""
"ãˆã‚‰ã‚ŒãŸ\n"
" å ´åˆã¯å¤±æ•—ã—ã¾ã™ã€‚"
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4851,7 +4927,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4881,7 +4957,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4916,7 +4992,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4944,7 +5020,7 @@ msgstr ""
" 終了ステータス:\n"
" PIPELINE ã®æˆ»ã‚Šå€¤ãŒçµ‚了ステータスã¨ãªã‚Šã¾ã™ã€‚"
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4963,7 +5039,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4997,7 +5073,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5015,7 +5091,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5033,7 +5109,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5056,7 +5132,7 @@ msgstr ""
" 終了ステータス:\n"
" COMMAND ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5081,7 +5157,7 @@ msgstr ""
" 終了ステータス:\n"
" NAME ãŒèª­ã¿å–り専用ã§ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5099,7 +5175,7 @@ msgstr ""
" 終了ステータス:\n"
" 最後ã«å®Ÿè¡Œã—ãŸã‚³ãƒžãƒ³ãƒ‰ã®ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5122,12 +5198,13 @@ msgstr ""
" 終了ステータス:\n"
" å†é–‹ã•ã‚ŒãŸã‚¸ãƒ§ãƒ–ã®çµ‚了ステータスを返ã—ã¾ã™ã€‚"
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5140,7 +5217,7 @@ msgstr ""
" 終了ステータス:\n"
" EXPRESSION ã®è©•ä¾¡å€¤ãŒ 0 ã®å ´åˆã¯ 1ã€ãれ以外㯠0 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5195,7 +5272,7 @@ msgstr ""
" 終了ステータス:\n"
" EXPRESSION ã®å€¤ã«åŸºã¥ã„㦠0 ã¾ãŸã¯ 1 ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5296,7 +5373,7 @@ msgstr ""
" HISTIGNORE\tヒストリ一覧ã«ä¿å­˜ã•ã‚Œã‚‹ã‚³ãƒžãƒ³ãƒ‰ã‚’決ã‚る時ã«ä½¿ç”¨ã•ã‚Œã‚‹\n"
" \t\tコロン (:) ã§åŒºåˆ‡ã‚‰ã‚ŒãŸãƒ‘ターンã®ä¸€è¦§ã€‚\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5356,7 +5433,7 @@ msgstr ""
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5408,7 +5485,7 @@ msgstr ""
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå¤‰æ›´ãŒå¤±æ•—ã—ãªã„é™ã‚ŠæˆåŠŸã‚’\n"
" è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5461,7 +5538,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5497,7 +5574,7 @@ msgstr ""
" OPTNAME ãŒæœ‰åŠ¹ãªå ´åˆã¯æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚ŒãŸå ´åˆ\n"
" ã¾ãŸã¯ OPTNAME ãŒç„¡åŠ¹ãªå ´åˆã¯å¤±æ•—ã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5515,8 +5592,8 @@ 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"
@@ -5567,7 +5644,7 @@ msgstr ""
" 無効ãªå¼•æ•°ãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã€æ›¸ãè¾¼ã¿ã€ä»£å…¥ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—"
"ã¾ã™ã€‚"
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5590,7 +5667,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5621,7 +5698,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5643,7 +5720,7 @@ msgstr ""
" 終了ステータス:\n"
" 無効ãªã‚ªãƒ—ションãŒä¸Žãˆã‚‰ã‚Œã‚‹ã‹ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ãªã„é™ã‚ŠæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5701,7 +5778,7 @@ msgstr ""
"åˆ\n"
" を除ãã€æˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5778,7 +5855,7 @@ msgstr ""
"列ã§ç„¡ã„\n"
" å ´åˆã‚’除ãæˆåŠŸã‚’è¿”ã—ã¾ã™ã€‚"
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5788,8 +5865,24 @@ msgstr ""
" \n"
" `mapfile'ã®åˆ¥åã§ã™ã€‚"
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Copyright (C) 2012 Free Software Foundation, Inc."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "ç¾åœ¨ã®ã‚µãƒ–ルーãƒãƒ³å‘¼ã³å‡ºã—ã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’è¿”ã—ã¾ã™ã€‚\n"
+#~ " \n"
+#~ " EXPR ãŒç„¡ã„å ´åˆã€æ¬¡ã‚’è¿”ã—ã¾ã™ "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: プロセス %5ld (%s) ㌠the_pipeline ã«ã‚ã‚Šã¾ã™"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "ä¸æ˜Žãªã‚·ã‚°ãƒŠãƒ«ç•ªå·"
#~ msgid ":"
#~ msgstr ":"
diff --git a/po/ko.gmo b/po/ko.gmo
new file mode 100644
index 00000000..e8dbf496
--- /dev/null
+++ b/po/ko.gmo
Binary files differ
diff --git a/po/ko.po b/po/ko.po
new file mode 100644
index 00000000..01317691
--- /dev/null
+++ b/po/ko.po
@@ -0,0 +1,4447 @@
+# Korean Translation for bash
+# Copyright (C) 2019 Free Software Foundation, Inc.
+# This file is distributed under the same license as the bash package.
+# SooHyun Kim <soohyunkim@kw.ac.kr>, 2019.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: bash-5.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-11-23 16:28+0900\n"
+"Last-Translator: SooHyun Kim <soohyunkim@kw.ac.kr>\n"
+"Language-Team: Korean <translation-team-ko@googlegroups.com>\n"
+"Language: ko\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: arrayfunc.c:66
+msgid "bad array subscript"
+msgstr "ìž˜ëª»ëœ ë°°ì—´ 첨ìž"
+
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
+#, c-format
+msgid "%s: removing nameref attribute"
+msgstr "%s: ì´ë¦„ 참조 ì†ì„±ì„ 지우는 중"
+
+#: arrayfunc.c:446 builtins/declare.def:851
+#, c-format
+msgid "%s: cannot convert indexed to associative array"
+msgstr "%s: ì¸ë±ìŠ¤ ë°°ì—´ì„ ì—°ê´€ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
+
+#: arrayfunc.c:700
+#, c-format
+msgid "%s: invalid associative array key"
+msgstr "%s: 유효하지 ì•Šì€ ì—°ê´€ ë°°ì—´ 키"
+
+#: arrayfunc.c:702
+#, c-format
+msgid "%s: cannot assign to non-numeric index"
+msgstr "%s: 숫ìžê°€ ì•„ë‹Œ ì¸ë±ìŠ¤ì— 할당할 수 ì—†ìŒ"
+
+#: arrayfunc.c:747
+#, c-format
+msgid "%s: %s: must use subscript when assigning associative array"
+msgstr "%s: %s: ì—°ê´€ ë°°ì—´ì„ í• ë‹¹í•˜ê¸° 위해서 반드시 첨ìžë¥¼ 사용해야 함"
+
+#: bashhist.c:452
+#, c-format
+msgid "%s: cannot create: %s"
+msgstr "%s: ìƒì„±í•  수 ì—†ìŒ: %s"
+
+#: bashline.c:4310
+msgid "bash_execute_unix_command: cannot find keymap for command"
+msgstr "bash_execute_unix_command: 명령어를 위한 keymapì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: bashline.c:4459
+#, c-format
+msgid "%s: first non-whitespace character is not `\"'"
+msgstr "%s: ê³µë°±ì´ ì•„ë‹Œ 첫 문ìžê°€ '\"' ê°€ 아님"
+
+#: bashline.c:4488
+#, c-format
+msgid "no closing `%c' in %s"
+msgstr "%2$sì— ë‹«ëŠ” '%1$c' ì—†ìŒ"
+
+#: bashline.c:4519
+#, c-format
+msgid "%s: missing colon separator"
+msgstr "%s: 콜론(:) êµ¬ë¶„ìž ì—†ìŒ"
+
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "'%s': unbind í•  수 ì—†ìŒ"
+
+#: braces.c:327
+#, c-format
+msgid "brace expansion: cannot allocate memory for %s"
+msgstr "괄호 확장: '%s'를 위해 메모리를 할당할 수 ì—†ìŒ"
+
+#: braces.c:406
+#, c-format
+msgid "brace expansion: failed to allocate memory for %u elements"
+msgstr "괄호 확장: %u개 요소를 위한 메모리 할당 실패"
+
+#: braces.c:451
+#, c-format
+msgid "brace expansion: failed to allocate memory for `%s'"
+msgstr "괄호 확장: '%s'를 위한 메모리 할당 실패"
+
+#: builtins/alias.def:131 variables.c:1844
+#, c-format
+msgid "`%s': invalid alias name"
+msgstr "'%s': 유효하지 ì•Šì€ ë³„ëª…"
+
+#: builtins/bind.def:122 builtins/bind.def:125
+msgid "line editing not enabled"
+msgstr "줄 편집 활성화ë˜ì–´ìžˆì§€ ì•ŠìŒ"
+
+#: builtins/bind.def:212
+#, c-format
+msgid "`%s': invalid keymap name"
+msgstr "'%s': 유효하지 ì•Šì€ keymap ì´ë¦„"
+
+#: builtins/bind.def:252
+#, c-format
+msgid "%s: cannot read: %s"
+msgstr "%s: %s를 ì½ì„ 수 ì—†ìŒ"
+
+#: builtins/bind.def:328 builtins/bind.def:358
+#, c-format
+msgid "`%s': unknown function name"
+msgstr "`%s': ì•Œ 수 없는 함수 ì´ë¦„"
+
+#: builtins/bind.def:336
+#, c-format
+msgid "%s is not bound to any keys.\n"
+msgstr "%s 는 ì–´ëŠ í‚¤ì—ë„ bind ë˜ì–´ìžˆì§€ ì•ŠìŒ.\n"
+
+#: builtins/bind.def:340
+#, c-format
+msgid "%s can be invoked via "
+msgstr "%s 는 다ìŒì„ 통해 í˜¸ì¶œë  ìˆ˜ ìžˆìŒ "
+
+#: builtins/bind.def:378 builtins/bind.def:395
+#, c-format
+msgid "`%s': cannot unbind"
+msgstr "'%s': unbind í•  수 ì—†ìŒ"
+
+#: builtins/break.def:77 builtins/break.def:119
+msgid "loop count"
+msgstr "반복 횟수"
+
+#: builtins/break.def:139
+msgid "only meaningful in a `for', `while', or `until' loop"
+msgstr "'for', 'while' ë˜ëŠ” 'until' 반복문ì—서만 ì˜ë¯¸ê°€ 있ìŒ"
+
+#: builtins/caller.def:136
+msgid ""
+"Returns 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."
+msgstr ""
+
+#: builtins/cd.def:327
+msgid "HOME not set"
+msgstr "HOME 설정ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
+msgid "too many arguments"
+msgstr "ì¸ìžê°€ 너무 많ìŒ"
+
+#: builtins/cd.def:342
+msgid "null directory"
+msgstr "null 디렉토리"
+
+#: builtins/cd.def:353
+msgid "OLDPWD not set"
+msgstr "OLDPWD 설정ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/common.c:96
+#, c-format
+msgid "line %d: "
+msgstr "%d 줄: "
+
+#: builtins/common.c:134 error.c:264
+#, c-format
+msgid "warning: "
+msgstr "경고: "
+
+#: builtins/common.c:148
+#, c-format
+msgid "%s: usage: "
+msgstr "%s: 사용법: "
+
+#: builtins/common.c:193 shell.c:516 shell.c:844
+#, c-format
+msgid "%s: option requires an argument"
+msgstr "%s: ì˜µì…˜ì— ì¸ìžê°€ 필요함"
+
+#: builtins/common.c:200
+#, c-format
+msgid "%s: numeric argument required"
+msgstr "%s: 숫ìžë¡œ ëœ ì¸ìžê°€ 필요함"
+
+#: builtins/common.c:207
+#, c-format
+msgid "%s: not found"
+msgstr "%s: ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: builtins/common.c:216 shell.c:857
+#, c-format
+msgid "%s: invalid option"
+msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜"
+
+#: builtins/common.c:223
+#, c-format
+msgid "%s: invalid option name"
+msgstr "%s: 유효하지 ì•Šì€ ì˜µì…˜ ì´ë¦„"
+
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
+#, c-format
+msgid "`%s': not a valid identifier"
+msgstr "`%s': 유효한 ì‹ë³„ìžê°€ 아님"
+
+#: builtins/common.c:240
+msgid "invalid octal number"
+msgstr "유효하지 ì•Šì€ 8진수"
+
+#: builtins/common.c:242
+msgid "invalid hex number"
+msgstr "유효하지 ì•Šì€ 16진수"
+
+#: builtins/common.c:244 expr.c:1569
+msgid "invalid number"
+msgstr "유효하지 ì•Šì€ ìˆ˜"
+
+#: builtins/common.c:252
+#, c-format
+msgid "%s: invalid signal specification"
+msgstr "%s: 유효하지 ì•Šì€ ì‹ í˜¸ ì •ì˜"
+
+#: builtins/common.c:259
+#, c-format
+msgid "`%s': not a pid or valid job spec"
+msgstr "'%s': pidê°€ 아니거나 유효한 job specì´ ì•„ë‹˜"
+
+#: builtins/common.c:266 error.c:510
+#, c-format
+msgid "%s: readonly variable"
+msgstr "%s: ì½ê¸° ì „ìš© 변수임"
+
+#: builtins/common.c:274
+#, c-format
+msgid "%s: %s out of range"
+msgstr "%s: %s가 범위를 벗어남"
+
+#: builtins/common.c:274 builtins/common.c:276
+msgid "argument"
+msgstr "ì¸ìž"
+
+#: builtins/common.c:276
+#, c-format
+msgid "%s out of range"
+msgstr "%s가 범위를 벗어남"
+
+#: builtins/common.c:284
+#, c-format
+msgid "%s: no such job"
+msgstr "%s: 그러한 jobì´ ì—†ìŒ"
+
+#: builtins/common.c:292
+#, c-format
+msgid "%s: no job control"
+msgstr "%s: job controlì´ ì—†ìŒ"
+
+#: builtins/common.c:294
+msgid "no job control"
+msgstr "job controlì´ ì—†ìŒ"
+
+#: builtins/common.c:304
+#, c-format
+msgid "%s: restricted"
+msgstr "%s: 제한ë¨"
+
+#: builtins/common.c:306
+msgid "restricted"
+msgstr "제한ë¨"
+
+#: builtins/common.c:314
+#, c-format
+msgid "%s: not a shell builtin"
+msgstr "%s: 쉘 ë‚´ìž¥ì´ ì•„ë‹˜"
+
+#: builtins/common.c:323
+#, c-format
+msgid "write error: %s"
+msgstr "쓰기 오류: %s"
+
+#: builtins/common.c:331
+#, c-format
+msgid "error setting terminal attributes: %s"
+msgstr "í„°ë¯¸ë„ ì†ì„± 설정 오류: %s"
+
+#: builtins/common.c:333
+#, c-format
+msgid "error getting terminal attributes: %s"
+msgstr "í„°ë¯¸ë„ ì†ì„± ì½ê¸° 오류: %s"
+
+#: builtins/common.c:635
+#, c-format
+msgid "%s: error retrieving current directory: %s: %s\n"
+msgstr "%s: 현재 디렉토리를 받아오는 ë° ì˜¤ë¥˜ ë°œìƒ: %s: %s\n"
+
+#: builtins/common.c:701 builtins/common.c:703
+#, c-format
+msgid "%s: ambiguous job spec"
+msgstr "%s: 모호한 job spec"
+
+#: builtins/common.c:964
+msgid "help not available in this version"
+msgstr "ì´ ë²„ì „ì—는 ë„움ë§ì´ ì—†ìŒ"
+
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: unsetí•  수 ì—†ìŒ: %sê°€ ì½ê¸° ì „ìš©ìž„"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: unsetí•  수 ì—†ìŒ"
+
+#: builtins/complete.def:287
+#, c-format
+msgid "%s: invalid action name"
+msgstr "%s: 유효하지 ì•Šì€ ì•¡ì…˜ ì´ë¦„"
+
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
+#, c-format
+msgid "%s: no completion specification"
+msgstr "%s: 완료 사양 ì—†ìŒ"
+
+#: builtins/complete.def:688
+msgid "warning: -F option may not work as you expect"
+msgstr "경고: -F ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ"
+
+#: builtins/complete.def:690
+msgid "warning: -C option may not work as you expect"
+msgstr "경고: -C ì˜µì…˜ì´ ì˜ˆìƒëŒ€ë¡œ ìž‘ë™í•˜ì§€ ì•Šì„ ìˆ˜ 있ìŒ"
+
+#: builtins/complete.def:838
+msgid "not currently executing completion function"
+msgstr "현재 완료 함수가 ì‹¤í–‰ì¤‘ì´ ì•„ë‹˜"
+
+#: builtins/declare.def:134
+msgid "can only be used in a function"
+msgstr "함수ì—서만 ì‚¬ìš©ë  ìˆ˜ 있ìŒ"
+
+#: builtins/declare.def:363 builtins/declare.def:756
+#, c-format
+msgid "%s: reference variable cannot be an array"
+msgstr "%s: 참조 변수로 ë°°ì—´ì´ ì˜¬ 수 ì—†ìŒ"
+
+#: builtins/declare.def:374 variables.c:3385
+#, c-format
+msgid "%s: nameref variable self references not allowed"
+msgstr "%s: ì´ë¦„ 참조 ë³€ìˆ˜ì˜ ìžê°€ 참조는 허용ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
+#, c-format
+msgid "%s: circular name reference"
+msgstr "%s: 순환 ì´ë¦„ 참조"
+
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
+#, c-format
+msgid "`%s': invalid variable name for name reference"
+msgstr "'%s': 유효하지 ì•Šì€ ì´ë¦„ 참조 변수 ì´ë¦„"
+
+#: builtins/declare.def:514
+msgid "cannot use `-f' to make functions"
+msgstr "함수를 만들기 위해 '-f'를 사용할 수 ì—†ìŒ"
+
+#: builtins/declare.def:526 execute_cmd.c:5986
+#, c-format
+msgid "%s: readonly function"
+msgstr "%s: ì½ê¸° ì „ìš© 함수임"
+
+#: builtins/declare.def:824
+#, c-format
+msgid "%s: quoted compound array assignment deprecated"
+msgstr "%s: 따옴표를 ì´ìš©í•œ 복합 ë°°ì—´ í• ë‹¹ì€ í–¥í›„ ì œê±°ë  ì˜ˆì •ìž„"
+
+#: builtins/declare.def:838
+#, c-format
+msgid "%s: cannot destroy array variables in this way"
+msgstr "%s: ì´ ë°©ë²•ìœ¼ë¡œ ë°°ì—´ 변수를 파괴할 수 ì—†ìŒ"
+
+#: builtins/declare.def:845 builtins/read.def:815
+#, c-format
+msgid "%s: cannot convert associative to indexed array"
+msgstr "%s: 참조 ë°°ì—´ì„ ì¸ë±ìŠ¤ ë°°ì—´ë¡œ 변환할 수 ì—†ìŒ"
+
+#: builtins/enable.def:143 builtins/enable.def:151
+msgid "dynamic loading not available"
+msgstr "ë™ì  ë¡œë”©ì„ ì´ìš©í•  수 ì—†ìŒ"
+
+#: builtins/enable.def:343
+#, c-format
+msgid "cannot open shared object %s: %s"
+msgstr "공유 오브ì íŠ¸ %s를 ì—´ 수 ì—†ìŒ: %s"
+
+#: builtins/enable.def:371
+#, c-format
+msgid "cannot find %s in shared object %s: %s"
+msgstr "공유 오브ì íŠ¸ %2$sì—ì„œ %1$s를 ì°¾ì„ ìˆ˜ ì—†ìŒ: %3$s"
+
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/enable.def:392
+#, c-format
+msgid "load function for %s returns failure (%d): not loaded"
+msgstr "%sì— ëŒ€í•œ 함수 로드가 실패 반환 (%d): 로드ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/enable.def:517
+#, c-format
+msgid "%s: not dynamically loaded"
+msgstr "%s: ë™ì ìœ¼ë¡œ 로드ë˜ì§€ ì•ŠìŒ"
+
+#: builtins/enable.def:543
+#, c-format
+msgid "%s: cannot delete: %s"
+msgstr "%s: 삭제할 수 ì—†ìŒ: %s"
+
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
+#, c-format
+msgid "%s: is a directory"
+msgstr "%s: 디렉터리임"
+
+#: builtins/evalfile.c:144
+#, c-format
+msgid "%s: not a regular file"
+msgstr "%s: ì¼ë°˜ì ì¸ 파ì¼ì´ 아님"
+
+#: builtins/evalfile.c:153
+#, c-format
+msgid "%s: file is too large"
+msgstr "%s: 파ì¼ì´ 너무 í¼"
+
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
+#, c-format
+msgid "%s: cannot execute binary file"
+msgstr "%s: ë°”ì´ë„ˆë¦¬ 파ì¼ì„ 실행할 수 ì—†ìŒ"
+
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
+#, c-format
+msgid "%s: cannot execute: %s"
+msgstr "%s: 실행할 수 ì—†ìŒ: %s"
+
+#: builtins/exit.def:64
+#, c-format
+msgid "logout\n"
+msgstr "로그아웃\n"
+
+#: builtins/exit.def:89
+msgid "not login shell: use `exit'"
+msgstr "ë¡œê·¸ì¸ ì‰˜ì´ ì•„ë‹˜: 'exit'를 사용하세요"
+
+#: builtins/exit.def:121
+#, c-format
+msgid "There are stopped jobs.\n"
+msgstr "ì •ì§€ëœ jobì´ ìžˆìŠµë‹ˆë‹¤.\n"
+
+#: builtins/exit.def:123
+#, c-format
+msgid "There are running jobs.\n"
+msgstr "ì‹¤í–‰ì¤‘ì¸ jobì´ ìžˆìŠµë‹ˆë‹¤.\n"
+
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
+msgid "no command found"
+msgstr "명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
+msgid "history specification"
+msgstr "히스토리 사양"
+
+#: builtins/fc.def:444
+#, c-format
+msgid "%s: cannot open temp file: %s"
+msgstr "%s: ìž„ì‹œ 파ì¼ì„ ì—´ 수 ì—†ìŒ: %s"
+
+#: builtins/fg_bg.def:152 builtins/jobs.def:284
+msgid "current"
+msgstr "현재"
+
+#: builtins/fg_bg.def:161
+#, c-format
+msgid "job %d started without job control"
+msgstr "job %dê°€ job control ì—†ì´ ì‹œìž‘í•¨"
+
+#: builtins/getopt.c:110
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr "%s: ìž˜ëª»ëœ ì˜µì…˜ -- %c\n"
+
+#: builtins/getopt.c:111
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr "%s: ì˜µì…˜ì´ ì¸ìžë¥¼ 필요로 함 -- %c\n"
+
+#: builtins/hash.def:91
+msgid "hashing disabled"
+msgstr "해싱 비활성화ë¨"
+
+#: builtins/hash.def:139
+#, c-format
+msgid "%s: hash table empty\n"
+msgstr "%s: í•´ì‹œ í…Œì´ë¸”ì´ ë¹„ì–´ìžˆìŒ\n"
+
+#: builtins/hash.def:267
+#, c-format
+msgid "hits\tcommand\n"
+msgstr "hits\tcommand\n"
+
+#: builtins/help.def:133
+msgid "Shell commands matching keyword `"
+msgid_plural "Shell commands matching keywords `"
+msgstr[0] "ë‹¤ìŒ í‚¤ì›Œë“œì— ì¼ì¹˜í•˜ëŠ” 쉘 명령어 '"
+
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
+#: builtins/help.def:185
+#, c-format
+msgid ""
+"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
+msgstr ""
+"'%s'ì— í•´ë‹¹í•˜ëŠ” ë„ì›€ë§ ì£¼ì œê°€ 없습니다. 'man -k %s' ë˜ëŠ” 'info %s'를 사용해 "
+"보세요."
+
+#: builtins/help.def:224
+#, c-format
+msgid "%s: cannot open: %s"
+msgstr "%s: ì—´ 수 ì—†ìŒ: %s"
+
+#: builtins/help.def:524
+#, c-format
+msgid ""
+"These shell commands are defined internally. Type `help' to see this list.\n"
+"Type `help name' to find out more about the function `name'.\n"
+"Use `info bash' to find out more about the shell in general.\n"
+"Use `man -k' or `info' to find out more about commands not in this list.\n"
+"\n"
+"A star (*) next to a name means that the command is disabled.\n"
+"\n"
+msgstr ""
+"ì´ ì‰˜ ëª…ë ¹ì–´ë“¤ì€ ë‚´ë¶€ì ìœ¼ë¡œ ì •ì˜ë˜ì–´ 있습니다. 목ë¡ì„ 보려면 `help' 를 ìž…ë ¥"
+"하세요.\n"
+"`help name' ì„ ìž…ë ¥í•˜ë©´ 함수 `name' ì— ëŒ€í•œ 정보를 ë” í™•ì¸í•  수 있습니다.\n"
+"ì‰˜ì— ëŒ€í•œ ì¼ë°˜ì ì¸ 정보를 ë” í™•ì¸í•˜ë ¤ë©´ `info bash' 를 사용하세요.\n"
+"ì´ ëª©ë¡ì— 없는 ëª…ë ¹ì–´ì— ëŒ€í•´ ë” ì•Œì•„ë³´ë ¤ë©´ `man -k' ë˜ëŠ” `info' 를 사용하세"
+"ìš”.\n"
+"\n"
+"명령어 ì´ë¦„ 다ìŒì˜ 별 (*) ì€ í•´ë‹¹ 명령어가 비활성화 ë˜ì—ˆìŒì„ ì˜ë¯¸í•©ë‹ˆë‹¤.\n"
+"\n"
+
+#: builtins/history.def:155
+msgid "cannot use more than one of -anrw"
+msgstr "-anrw를 í•œ ê°œ ì´ìƒ 사용할 수 ì—†ìŒ"
+
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
+msgid "history position"
+msgstr "히스토리 위치"
+
+#: builtins/history.def:340
+#, c-format
+msgid "%s: invalid timestamp"
+msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ìŠ¤íƒ¬í”„"
+
+#: builtins/history.def:451
+#, c-format
+msgid "%s: history expansion failed"
+msgstr "%s: 히스토리 확장 실패"
+
+#: builtins/inlib.def:71
+#, c-format
+msgid "%s: inlib failed"
+msgstr "%s: inlib 실패"
+
+#: builtins/jobs.def:109
+msgid "no other options allowed with `-x'"
+msgstr "'-x'와 다른 ì˜µì…˜ë“¤ì€ ê°™ì´ ì‚¬ìš©í•  수 ì—†ìŒ"
+
+#: builtins/kill.def:211
+#, c-format
+msgid "%s: arguments must be process or job IDs"
+msgstr "%s: ì¸ìžëŠ” 반드시 프로세스 ë˜ëŠ” job IDì´ì–´ì•¼ 함"
+
+#: builtins/kill.def:274
+msgid "Unknown error"
+msgstr "알 수 없는 오류"
+
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
+msgid "expression expected"
+msgstr "표현ì‹ì„ 예ìƒí•¨"
+
+#: builtins/mapfile.def:178
+#, c-format
+msgid "%s: not an indexed array"
+msgstr "%s: ì¸ë±ìŠ¤ ë°°ì—´ì´ ì•„ë‹˜"
+
+#: builtins/mapfile.def:271 builtins/read.def:308
+#, c-format
+msgid "%s: invalid file descriptor specification"
+msgstr "%s: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 명세"
+
+#: builtins/mapfile.def:279 builtins/read.def:315
+#, c-format
+msgid "%d: invalid file descriptor: %s"
+msgstr "%d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°: %s"
+
+#: builtins/mapfile.def:288 builtins/mapfile.def:326
+#, c-format
+msgid "%s: invalid line count"
+msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수"
+
+#: builtins/mapfile.def:299
+#, c-format
+msgid "%s: invalid array origin"
+msgstr "%s: 유효하지 ì•Šì€ ë°°ì—´ì˜ ì‹œìž‘"
+
+#: builtins/mapfile.def:316
+#, c-format
+msgid "%s: invalid callback quantum"
+msgstr "%s: 유효하지 ì•Šì€ ì½œë°± ì–‘ìž"
+
+#: builtins/mapfile.def:349
+msgid "empty array variable name"
+msgstr "빈 ë°°ì—´ 변수 ì´ë¦„"
+
+#: builtins/mapfile.def:370
+msgid "array variable support required"
+msgstr "ë°°ì—´ 변수 지ì›ì´ 필요함"
+
+#: builtins/printf.def:419
+#, c-format
+msgid "`%s': missing format character"
+msgstr "'%s': ì„œì‹ ë¬¸ìž ì—†ìŒ"
+
+#: builtins/printf.def:474
+#, c-format
+msgid "`%c': invalid time format specification"
+msgstr "'%c': 유효하지 ì•Šì€ ì‹œê°„ í¬ë§· 사양"
+
+#: builtins/printf.def:676
+#, c-format
+msgid "`%c': invalid format character"
+msgstr "'%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž"
+
+#: builtins/printf.def:702
+#, c-format
+msgid "warning: %s: %s"
+msgstr "경고: %s: %s"
+
+#: builtins/printf.def:788
+#, c-format
+msgid "format parsing problem: %s"
+msgstr "í˜•ì‹ íŒŒì‹± 문제: %s"
+
+#: builtins/printf.def:885
+msgid "missing hex digit for \\x"
+msgstr "\\xì— 16진수 ìˆ«ìž ì—†ìŒ"
+
+#: builtins/printf.def:900
+#, c-format
+msgid "missing unicode digit for \\%c"
+msgstr "\\%cì— í•´ë‹¹í•˜ëŠ” 유니코드 ë¬¸ìž ì—†ìŒ"
+
+#: builtins/pushd.def:199
+msgid "no other directory"
+msgstr "다른 디렉토리 ì—†ìŒ"
+
+#: builtins/pushd.def:360
+#, c-format
+msgid "%s: invalid argument"
+msgstr "%s: 유효하지 ì•Šì€ ì¸ìž"
+
+#: builtins/pushd.def:480
+msgid "<no current directory>"
+msgstr "<현재 디렉토리 ì—†ìŒ>"
+
+#: builtins/pushd.def:524
+msgid "directory stack empty"
+msgstr "디렉토리 스íƒì´ 비어있ìŒ"
+
+#: builtins/pushd.def:526
+msgid "directory stack index"
+msgstr "디렉토리 ìŠ¤íƒ ì¸ë±ìŠ¤"
+
+#: builtins/pushd.def:701
+msgid ""
+"Display the list of currently remembered directories. Directories\n"
+" find their way onto the list with the `pushd' command; you can get\n"
+" back up through the list with the `popd' command.\n"
+" \n"
+" Options:\n"
+" -c\tclear the directory stack by deleting all of the elements\n"
+" -l\tdo not print tilde-prefixed versions of directories relative\n"
+" \tto your home directory\n"
+" -p\tprint the directory stack with one entry per line\n"
+" -v\tprint the directory stack with one entry per line prefixed\n"
+" \twith its position in the stack\n"
+" \n"
+" Arguments:\n"
+" +N\tDisplays the Nth entry counting from the left of the list shown "
+"by\n"
+" \tdirs when invoked without options, starting with zero.\n"
+" \n"
+" -N\tDisplays the Nth entry counting from the right of the list shown "
+"by\n"
+"\tdirs when invoked without options, starting with zero."
+msgstr ""
+"현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n"
+" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n"
+" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
+" \n"
+" 옵션:\n"
+" -c\tì›ì†Œë¥¼ 전부 ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n"
+" -l\t홈 디렉토리까지 ~ë¡œ ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
+" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n"
+" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n"
+" \n"
+" ì¸ìž:\n"
+" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ"
+"다.\n"
+" \t세는 수는 0부터 시작합니다.\n"
+" \n"
+" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤"
+"니다.\n"
+"\t세는 수는 0부터 시작합니다."
+
+#: builtins/pushd.def:723
+#, fuzzy
+msgid ""
+"Adds a directory to the top of the directory stack, or rotates\n"
+" the stack, making the new top of the stack the current working\n"
+" 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 ""
+"디렉토리 스íƒì˜ 최ìƒìœ„ì— ë””ë ‰í† ë¦¬ë¥¼ 추가하거나 스íƒì„ 회전\n"
+" 하거나, 현재 ìž‘ì—…ì¤‘ì¸ ë””ë ‰í† ë¦¬ì—ì„œ 스íƒì˜ 새 최ìƒìœ„를 \n"
+" 만듭니다. ì¸ìžê°€ 없다면 ìƒìœ„ ë‘ ë””ë ‰í† ë¦¬ë¥¼ êµí™˜í•©ë‹ˆë‹¤.\n"
+" \n"
+" 옵션:\n"
+" -n\tSuppresses the normal change of directory when adding\n"
+" \tdirectories to the stack, so only the stack is manipulated.\n"
+" \n"
+" 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"
+" `dirs' ë‚´ìž¥ì€ ë””ë ‰í† ë¦¬ 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤."
+
+#: builtins/pushd.def:748
+#, fuzzy
+msgid ""
+"Removes entries from the directory stack. With no arguments, removes\n"
+" the top directory from the stack, and changes to the new top directory.\n"
+" \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 ""
+"디렉토리 스íƒì—ì„œ í•­ëª©ì„ ì œê±°í•©ë‹ˆë‹¤. 주어진 ì¸ìžê°€ ì—†ì„ ê²½ìš°\n"
+" 최ìƒìœ„ 디렉토리를 스íƒì—ì„œ 제거하고 새 최ìƒìœ„ 디렉토리로 변경합니다.\n"
+" \n"
+" 옵션:\n"
+" -n\tSuppresses the normal change of directory when removing\n"
+" \tdirectories from the stack, so only the stack is manipulated.\n"
+" \n"
+" 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."
+
+#: builtins/read.def:280
+#, c-format
+msgid "%s: invalid timeout specification"
+msgstr "%s: 유효하지 ì•Šì€ íƒ€ìž„ì•„ì›ƒ ì •ì˜"
+
+#: builtins/read.def:755
+#, c-format
+msgid "read error: %d: %s"
+msgstr "ì½ê¸° 오류: %d: %s"
+
+#: builtins/return.def:68
+msgid "can only `return' from a function or sourced script"
+msgstr "함수 ë˜ëŠ” ì†ŒìŠ¤ëœ ìŠ¤í¬ë¦½íŠ¸ì—서만 'return' í•  수 있ìŒ"
+
+#: builtins/set.def:869
+msgid "cannot simultaneously unset a function and a variable"
+msgstr "함수와 변수를 ë™ì‹œì— unsetí•  수 ì—†ìŒ"
+
+#: builtins/set.def:966
+#, c-format
+msgid "%s: not an array variable"
+msgstr "%s: 배열 변수가 아님"
+
+#: builtins/setattr.def:189
+#, c-format
+msgid "%s: not a function"
+msgstr "%s: 함수가 아님"
+
+#: builtins/setattr.def:194
+#, c-format
+msgid "%s: cannot export"
+msgstr "%s: exportí•  수 ì—†ìŒ"
+
+#: builtins/shift.def:72 builtins/shift.def:79
+msgid "shift count"
+msgstr "시프트 횟수"
+
+#: builtins/shopt.def:310
+msgid "cannot set and unset shell options simultaneously"
+msgstr "쉘 ì˜µì…˜ì„ ë™ì‹œì— set 하고 unset í•  수 ì—†ìŒ"
+
+#: builtins/shopt.def:428
+#, c-format
+msgid "%s: invalid shell option name"
+msgstr "%s: 유효하지 ì•Šì€ ì‰˜ 옵션 ì´ë¦„"
+
+#: builtins/source.def:128
+msgid "filename argument required"
+msgstr "ì¸ìžë¡œ íŒŒì¼ ì´ë¦„ì´ ë°˜ë“œì‹œ 필요함"
+
+#: builtins/source.def:154
+#, c-format
+msgid "%s: file not found"
+msgstr "%s: 파ì¼ì„ ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: builtins/suspend.def:102
+msgid "cannot suspend"
+msgstr "ì¼ì‹œ 정지할 수 ì—†ìŒ"
+
+#: builtins/suspend.def:112
+msgid "cannot suspend a login shell"
+msgstr "ë¡œê·¸ì¸ ì‰˜ì„ ì¼ì‹œ 정지할 수 ì—†ìŒ"
+
+#: builtins/type.def:235
+#, c-format
+msgid "%s is aliased to `%s'\n"
+msgstr "%s는 '%s'ì˜ ë³„ì¹­ìž„\n"
+
+#: builtins/type.def:256
+#, c-format
+msgid "%s is a shell keyword\n"
+msgstr "%s 는 쉘 키워드임\n"
+
+#: builtins/type.def:275
+#, c-format
+msgid "%s is a function\n"
+msgstr "%s 는 함수임\n"
+
+#: builtins/type.def:299
+#, c-format
+msgid "%s is a special shell builtin\n"
+msgstr "%s 는 특수한 쉘 내장임\n"
+
+#: builtins/type.def:301
+#, c-format
+msgid "%s is a shell builtin\n"
+msgstr "%s 는 쉘 내장임\n"
+
+#: builtins/type.def:323 builtins/type.def:408
+#, c-format
+msgid "%s is %s\n"
+msgstr "%s 는 %s 임\n"
+
+#: builtins/type.def:343
+#, c-format
+msgid "%s is hashed (%s)\n"
+msgstr "%s 는 í•´ì‹œë¨ (%s)\n"
+
+#: builtins/ulimit.def:400
+#, c-format
+msgid "%s: invalid limit argument"
+msgstr "%s: 유효하지 ì•Šì€ ì œí•œ ì¸ìž"
+
+#: builtins/ulimit.def:426
+#, c-format
+msgid "`%c': bad command"
+msgstr "'%c': ìž˜ëª»ëœ ëª…ë ¹ì–´"
+
+#: builtins/ulimit.def:455
+#, c-format
+msgid "%s: cannot get limit: %s"
+msgstr "%s: ì œí•œì„ ì½ì„ 수 ì—†ìŒ: %s"
+
+#: builtins/ulimit.def:481
+msgid "limit"
+msgstr "제한"
+
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
+#, c-format
+msgid "%s: cannot modify limit: %s"
+msgstr "%s: ì œí•œì„ ë³€ê²½í•  수 ì—†ìŒ: %s"
+
+#: builtins/umask.def:115
+msgid "octal number"
+msgstr "8진수"
+
+#: builtins/umask.def:232
+#, c-format
+msgid "`%c': invalid symbolic mode operator"
+msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 ì—°ì‚°ìž"
+
+#: builtins/umask.def:287
+#, c-format
+msgid "`%c': invalid symbolic mode character"
+msgstr "'%c': 유효하지 ì•Šì€ ì‹¬ë³¼ë¦­ 모드 문ìž"
+
+#: error.c:89 error.c:347 error.c:349 error.c:351
+msgid " line "
+msgstr " 줄 "
+
+#: error.c:164
+#, c-format
+msgid "last command: %s\n"
+msgstr "마지막 명령: %s\n"
+
+#: error.c:172
+#, c-format
+msgid "Aborting..."
+msgstr "취소중..."
+
+#. TRANSLATORS: this is a prefix for informational messages.
+#: error.c:287
+#, c-format
+msgid "INFORM: "
+msgstr "ì •ë³´: "
+
+#: error.c:462
+msgid "unknown command error"
+msgstr "알 수 없는 명령어 오류"
+
+#: error.c:463
+msgid "bad command type"
+msgstr "ìž˜ëª»ëœ ëª…ë ¹ì–´ 타입"
+
+#: error.c:464
+msgid "bad connector"
+msgstr "ìž˜ëª»ëœ ì»¤ë„¥í„°"
+
+#: error.c:465
+msgid "bad jump"
+msgstr "ìž˜ëª»ëœ ì í”„"
+
+#: error.c:503
+#, c-format
+msgid "%s: unbound variable"
+msgstr "%s: í•´ì œëœ ë³€ìˆ˜"
+
+#: eval.c:242
+msgid "\atimed out waiting for input: auto-logout\n"
+msgstr "\aìž…ë ¥ 대기중 시간 초과: ìžë™ìœ¼ë¡œ 로그아웃\n"
+
+#: execute_cmd.c:537
+#, c-format
+msgid "cannot redirect standard input from /dev/null: %s"
+msgstr "표준 ìž…ë ¥ì„ /dev/nullì—ì„œ 리다ì´ë ‰íŠ¸ í•  수 ì—†ìŒ: %s"
+
+#: execute_cmd.c:1297
+#, c-format
+msgid "TIMEFORMAT: `%c': invalid format character"
+msgstr "TIMEFORMAT: `%c': 유효하지 ì•Šì€ ì„œì‹ ë¬¸ìž"
+
+#: execute_cmd.c:2362
+#, c-format
+msgid "execute_coproc: coproc [%d:%s] still exists"
+msgstr "execute_coproc: coproc [%d:%s] 가 여전히 존재"
+
+#: execute_cmd.c:2486
+msgid "pipe error"
+msgstr "파ì´í”„ 오류"
+
+#: execute_cmd.c:4793
+#, c-format
+msgid "eval: maximum eval nesting level exceeded (%d)"
+msgstr "eval: 최대 eval 중첩 레벨 초과 (%d)"
+
+#: execute_cmd.c:4805
+#, c-format
+msgid "%s: maximum source nesting level exceeded (%d)"
+msgstr "%s: 최대 소스 중첩 레벨 초과 (%d)"
+
+#: execute_cmd.c:4913
+#, c-format
+msgid "%s: maximum function nesting level exceeded (%d)"
+msgstr "%s: 최대 함수 중첩 레벨 초과 (%d)"
+
+#: execute_cmd.c:5467
+#, c-format
+msgid "%s: restricted: cannot specify `/' in command names"
+msgstr "%s: 제한ë¨: 명령 ì´ë¦„ì— '/'를 지정할 수 ì—†ìŒ"
+
+#: execute_cmd.c:5574
+#, c-format
+msgid "%s: command not found"
+msgstr "%s: 명령어를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: execute_cmd.c:5816
+#, c-format
+msgid "%s: %s"
+msgstr "%s: %s"
+
+#: execute_cmd.c:5854
+#, c-format
+msgid "%s: %s: bad interpreter"
+msgstr "%s: %s: ìž˜ëª»ëœ ì¸í„°í”„리터"
+
+#: execute_cmd.c:5891
+#, c-format
+msgid "%s: cannot execute binary file: %s"
+msgstr "%s: ì´ì§„ 파ì¼ì„ 실행할 수 ì—†ìŒ: %s"
+
+#: execute_cmd.c:5977
+#, c-format
+msgid "`%s': is a special builtin"
+msgstr "'%s': 특수한 내장 명령임"
+
+#: execute_cmd.c:6029
+#, c-format
+msgid "cannot duplicate fd %d to fd %d"
+msgstr "fd %d를 fd %dë¡œ 복제할 수 ì—†ìŒ"
+
+#: expr.c:263
+msgid "expression recursion level exceeded"
+msgstr "í‘œí˜„ì‹ ìž¬ê·€ 레벨 초과ë¨"
+
+#: expr.c:291
+msgid "recursion stack underflow"
+msgstr "재귀 ìŠ¤íƒ ì–¸ë”플로우"
+
+#: expr.c:477
+msgid "syntax error in expression"
+msgstr "í‘œí˜„ì‹ ë¬¸ë²• 오류"
+
+#: expr.c:521
+msgid "attempted assignment to non-variable"
+msgstr "변수가 ì•„ë‹Œ ê²ƒì— í• ë‹¹ì„ ì‹œë„함"
+
+#: expr.c:530
+msgid "syntax error in variable assignment"
+msgstr "변수 할당 문법 오류"
+
+#: expr.c:544 expr.c:911
+msgid "division by 0"
+msgstr "0으로 나눔"
+
+#: expr.c:592
+msgid "bug: bad expassign token"
+msgstr "버그: ìž˜ëª»ëœ í‘œí˜„ì‹ í† í°"
+
+#: expr.c:646
+msgid "`:' expected for conditional expression"
+msgstr "ì¡°ê±´ë¬¸ì— ':' 예ìƒí•¨"
+
+#: expr.c:972
+msgid "exponent less than 0"
+msgstr "지수가 0보다 ìž‘ìŒ"
+
+#: expr.c:1029
+msgid "identifier expected after pre-increment or pre-decrement"
+msgstr "전위 ì¦ê°€ ë˜ëŠ” 후위 ê°ì†Œ í›„ì— ì‹ë³„ìžë¥¼ 예ìƒí•¨"
+
+#: expr.c:1056
+msgid "missing `)'"
+msgstr "')' ë¹ ì§"
+
+#: expr.c:1107 expr.c:1487
+msgid "syntax error: operand expected"
+msgstr "문법 오류: í”¼ì—°ì‚°ìž ì˜ˆìƒí•¨"
+
+#: expr.c:1489
+msgid "syntax error: invalid arithmetic operator"
+msgstr "문법 오류: 유효하지 ì•Šì€ ì‚°ìˆ  ì—°ì‚°ìž"
+
+#: expr.c:1513
+#, c-format
+msgid "%s%s%s: %s (error token is \"%s\")"
+msgstr "%s%s%s: %s (오류 토í°ì€ \"%s\" ìž„)"
+
+#: expr.c:1573
+msgid "invalid arithmetic base"
+msgstr "유효하지 ì•Šì€ ì§„ë²•"
+
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: 유효하지 ì•Šì€ ì¤„ 수"
+
+#: expr.c:1598
+msgid "value too great for base"
+msgstr "해당 진법ì—ì„œ 표현할 수 없는 ê°’"
+
+#: expr.c:1647
+#, c-format
+msgid "%s: expression error\n"
+msgstr "%s: í‘œí˜„ì‹ ì˜¤ë¥˜\n"
+
+#: general.c:70
+msgid "getcwd: cannot access parent directories"
+msgstr "getcwd: 부모 ë””ë ‰í„°ë¦¬ì— ì ‘ê·¼í•  수 ì—†ìŒ"
+
+#: input.c:99 subst.c:6069
+#, c-format
+msgid "cannot reset nodelay mode for fd %d"
+msgstr "fd %dì— ëŒ€í•´ nodelay 모드를 재설정 í•  수 ì—†ìŒ"
+
+#: input.c:266
+#, c-format
+msgid "cannot allocate new file descriptor for bash input from fd %d"
+msgstr "fd %dì—ì„œ bash ìž…ë ¥ì„ ìœ„í•œ 새 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ë¥¼ 할당할 수 ì—†ìŒ"
+
+#: input.c:274
+#, c-format
+msgid "save_bash_input: buffer already exists for new fd %d"
+msgstr "save_bash_input: 새로운 fd %d를 위한 버í¼ê°€ ì´ë¯¸ 존재함"
+
+#: jobs.c:543
+msgid "start_pipeline: pgrp pipe"
+msgstr "start_pipeline: pgrp pipe"
+
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
+#, c-format
+msgid "forked pid %d appears in running job %d"
+msgstr "í¬í¬ëœ pid %dê°€ ì‹¤í–‰ì¤‘ì¸ job %dì— ë‚˜íƒ€ë‚¨"
+
+#: jobs.c:1402
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr "프로세스 그룹 %2$ldì˜ ì •ì§€ëœ ìž‘ì—… %1$d 를 삭제중"
+
+#: jobs.c:1511
+#, c-format
+msgid "add_process: pid %5ld (%s) marked as still alive"
+msgstr "add_process: pid %5ld (%s) ê°€ í˜„ìž¬ë„ ì‚´ì•„ìžˆë‹¤ê³  표시ë¨"
+
+#: jobs.c:1850
+#, c-format
+msgid "describe_pid: %ld: no such pid"
+msgstr "describe_pid: %ld: 그런 pidê°€ ì—†ìŒ"
+
+#: jobs.c:1865
+#, c-format
+msgid "Signal %d"
+msgstr "신호 %d"
+
+#: jobs.c:1879 jobs.c:1905
+msgid "Done"
+msgstr "완료"
+
+#: jobs.c:1884 siglist.c:122
+msgid "Stopped"
+msgstr "멈춤"
+
+#: jobs.c:1888
+#, c-format
+msgid "Stopped(%s)"
+msgstr "멈춤(%s)"
+
+#: jobs.c:1892
+msgid "Running"
+msgstr "실행중"
+
+#: jobs.c:1909
+#, c-format
+msgid "Done(%d)"
+msgstr "완료(%d)"
+
+#: jobs.c:1911
+#, c-format
+msgid "Exit %d"
+msgstr "ë‚˜ê° %d"
+
+#: jobs.c:1914
+msgid "Unknown status"
+msgstr "ì•Œ 수 없는 ìƒíƒœ"
+
+#: jobs.c:2001
+#, c-format
+msgid "(core dumped) "
+msgstr "(코어 ë¤í”„ë¨) "
+
+#: jobs.c:2020
+#, c-format
+msgid " (wd: %s)"
+msgstr " (wd: %s)"
+
+#: jobs.c:2259
+#, c-format
+msgid "child setpgid (%ld to %ld)"
+msgstr "child setpgid (%ld ì—ì„œ %ld ë¡œ)"
+
+#: jobs.c:2617 nojobs.c:664
+#, c-format
+msgid "wait: pid %ld is not a child of this shell"
+msgstr "wait: pid %ld는 ì´ ì‰˜ì˜ ìžì‹ì´ 아님"
+
+#: jobs.c:2893
+#, c-format
+msgid "wait_for: No record of process %ld"
+msgstr "wait_for: 프로세스 %ldì— ëŒ€í•œ ê¸°ë¡ ì—†ìŒ"
+
+#: jobs.c:3236
+#, c-format
+msgid "wait_for_job: job %d is stopped"
+msgstr "wait_for_job: job %d ì€ ì •ì§€ë¨"
+
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: 그러한 jobì´ ì—†ìŒ"
+
+#: jobs.c:3571
+#, c-format
+msgid "%s: job has terminated"
+msgstr "%s: ìž‘ì—…ì´ ì¢…ë£Œë¨"
+
+#: jobs.c:3580
+#, c-format
+msgid "%s: job %d already in background"
+msgstr "%s: job %d는 ì´ë¯¸ 백그ë¼ìš´ë“œì— 있ìŒ"
+
+#: jobs.c:3806
+msgid "waitchld: turning on WNOHANG to avoid indefinite block"
+msgstr "waitchld: ì •ì˜ë˜ì§€ ì•Šì€ ë¸”ë¡ì„ 피하기 위해 WNOHANG를 켜는 중"
+
+#: jobs.c:4320
+#, c-format
+msgid "%s: line %d: "
+msgstr "%s: 줄 %d: "
+
+#: jobs.c:4334 nojobs.c:919
+#, c-format
+msgid " (core dumped)"
+msgstr " (코어 ë¤í”„ë¨)"
+
+#: jobs.c:4346 jobs.c:4359
+#, c-format
+msgid "(wd now: %s)\n"
+msgstr "(wd now: %s)\n"
+
+#: jobs.c:4391
+msgid "initialize_job_control: getpgrp failed"
+msgstr "initialize_job_control: getpgrp 실패"
+
+#: jobs.c:4447
+msgid "initialize_job_control: no job control in background"
+msgstr "initialize_job_control: 백그ë¼ìš´ë“œì— job control ì—†ìŒ"
+
+#: jobs.c:4463
+msgid "initialize_job_control: line discipline"
+msgstr "initialize_job_control: line discipline"
+
+#: jobs.c:4473
+msgid "initialize_job_control: setpgid"
+msgstr "initialize_job_control: setpgid"
+
+#: jobs.c:4494 jobs.c:4503
+#, c-format
+msgid "cannot set terminal process group (%d)"
+msgstr "터미털 프로세스 그룹 (%d)ì„ ì„¤ì •í•  수 ì—†ìŒ"
+
+#: jobs.c:4508
+msgid "no job control in this shell"
+msgstr "ì´ ì‰˜ì— job control ì—†ìŒ"
+
+#: lib/malloc/malloc.c:353
+#, c-format
+msgid "malloc: failed assertion: %s\n"
+msgstr "malloc: assertion 실패: %s\n"
+
+#: lib/malloc/malloc.c:369
+#, c-format
+msgid ""
+"\r\n"
+"malloc: %s:%d: assertion botched\r\n"
+msgstr ""
+"\r\n"
+"malloc: %s:%d: assertion ë§ê°€ì§\r\n"
+
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
+msgid "unknown"
+msgstr "ì•Œ 수 ì—†ìŒ"
+
+#: lib/malloc/malloc.c:882
+msgid "malloc: block on free list clobbered"
+msgstr "malloc: block on free list clobbered"
+
+#: lib/malloc/malloc.c:972
+msgid "free: called with already freed block argument"
+msgstr "free: ì´ë¯¸ í•´ì œëœ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨"
+
+#: lib/malloc/malloc.c:975
+msgid "free: called with unallocated block argument"
+msgstr "free: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžì™€ 호출ë¨"
+
+#: lib/malloc/malloc.c:994
+msgid "free: underflow detected; mh_nbytes out of range"
+msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+
+#: lib/malloc/malloc.c:1009
+msgid "free: start and end chunk sizes differ"
+msgstr "free: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름"
+
+#: lib/malloc/malloc.c:1119
+msgid "realloc: called with unallocated block argument"
+msgstr "realloc: 할당ë˜ì§€ ì•Šì€ ë¸”ë¡ ì¸ìžë¥¼ 가지고 호출ë¨"
+
+#: lib/malloc/malloc.c:1134
+msgid "realloc: underflow detected; mh_nbytes out of range"
+msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: ì–¸ë”플로우 ê°ì§€; mh_nbytesê°€ 범위를 벗어남"
+
+#: lib/malloc/malloc.c:1150
+msgid "realloc: start and end chunk sizes differ"
+msgstr "realloc: 시작과 ëì˜ ì²­í¬ ì‚¬ì´ì¦ˆê°€ 다름"
+
+#: lib/malloc/table.c:191
+#, c-format
+msgid "register_alloc: alloc table is full with FIND_ALLOC?\n"
+msgstr "register_alloc: FIND_ALLOCì´ í• ë‹¹ í…Œì´ë¸”ì´ ê°€ë“ ì°¼ë‹¤ê³  함?\n"
+
+#: 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:253
+#, c-format
+msgid "register_free: %p already in table as free?\n"
+msgstr "register_free: %pê°€ ì´ë¯¸ í•´ì œëœ í…Œì´ë¸”ì— ìžˆìŒ?\n"
+
+#: lib/sh/fmtulong.c:102
+msgid "invalid base"
+msgstr "유효하지 ì•Šì€ ì§„ë²•"
+
+#: lib/sh/netopen.c:168
+#, c-format
+msgid "%s: host unknown"
+msgstr "%s: 알 수 없는 호스트"
+
+#: lib/sh/netopen.c:175
+#, c-format
+msgid "%s: invalid service"
+msgstr "%s: 유효하지 ì•Šì€ ì„œë¹„ìŠ¤"
+
+#: lib/sh/netopen.c:306
+#, c-format
+msgid "%s: bad network path specification"
+msgstr "%s: ìž˜ëª»ëœ ë„¤íŠ¸ì›Œí¬ ê²½ë¡œ 사양"
+
+#: lib/sh/netopen.c:347
+msgid "network operations not supported"
+msgstr "ë„¤íŠ¸ì›Œí¬ ìž‘ì—…ì€ ì§€ì›ë˜ì§€ ì•ŠìŒ"
+
+#: locale.c:217
+#, c-format
+msgid "setlocale: LC_ALL: cannot change locale (%s)"
+msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)"
+
+#: locale.c:219
+#, c-format
+msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
+msgstr "setlocale: LC_ALL: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s"
+
+#: locale.c:292
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s)"
+msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s)"
+
+#: locale.c:294
+#, c-format
+msgid "setlocale: %s: cannot change locale (%s): %s"
+msgstr "setlocale: %s: 로케ì¼ì„ 바꿀 수 ì—†ìŒ (%s): %s"
+
+#: mailcheck.c:439
+msgid "You have mail in $_"
+msgstr "$_ì— ë©”ì¼ì´ 있습니다"
+
+#: mailcheck.c:464
+msgid "You have new mail in $_"
+msgstr "$_ì— ìƒˆë¡œìš´ ë©”ì¼ì´ 있습니다"
+
+#: mailcheck.c:480
+#, c-format
+msgid "The mail in %s has been read\n"
+msgstr "%sì— ìžˆëŠ” ë©”ì¼ì€ ì½ì—ˆìŠµë‹ˆë‹¤\n"
+
+#: make_cmd.c:317
+msgid "syntax error: arithmetic expression required"
+msgstr "문법 오류: 산술 표현ì‹ì´ 필요함"
+
+#: make_cmd.c:319
+msgid "syntax error: `;' unexpected"
+msgstr "문법 오류: ';' 예ìƒë˜ì§€ ì•ŠìŒ"
+
+#: make_cmd.c:320
+#, c-format
+msgid "syntax error: `((%s))'"
+msgstr "문법 오류: `((%s))'"
+
+#: make_cmd.c:572
+#, c-format
+msgid "make_here_document: bad instruction type %d"
+msgstr "make_here_document: ìž˜ëª»ëœ ëª…ë ¹ì–´ í˜•ì‹ %d"
+
+#: make_cmd.c:657
+#, c-format
+msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
+msgstr "here-documentê°€ 줄 %d ì—ì„œ 파ì¼ì˜ ë으로 êµ¬ë¶„ë¨ (`%s'를 예ìƒí•¨)"
+
+#: make_cmd.c:756
+#, c-format
+msgid "make_redirection: redirection instruction `%d' out of range"
+msgstr "make_redirection: 리다ì´ë ‰ì…˜ 명령어 `%d' 범위 벗어남"
+
+#: parse.y:2393
+#, c-format
+msgid ""
+"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
+"truncated"
+msgstr ""
+"shell_getc: shell_input_line_size (%zu)가 SIZE_MAX (%lu)를 초과함: 줄 잘림"
+
+#: parse.y:2826
+msgid "maximum here-document count exceeded"
+msgstr "최대 here-document 카운트 초과"
+
+#: parse.y:3581 parse.y:3957 parse.y:4556
+#, c-format
+msgid "unexpected EOF while looking for matching `%c'"
+msgstr "'%c'를 찾는 ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë"
+
+#: parse.y:4696
+msgid "unexpected EOF while looking for `]]'"
+msgstr "']]'를 ì°¾ë˜ ë„중 예ìƒí•˜ì§€ 못한 파ì¼ì˜ ë"
+
+#: parse.y:4701
+#, c-format
+msgid "syntax error in conditional expression: unexpected token `%s'"
+msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류: 예ìƒí•˜ì§€ 못한 í† í° '%s'"
+
+#: parse.y:4705
+msgid "syntax error in conditional expression"
+msgstr "ì¡°ê±´ 표현ì‹ì— 문법 오류"
+
+#: parse.y:4783
+#, c-format
+msgid "unexpected token `%s', expected `)'"
+msgstr "예ìƒë˜ì§€ ì•Šì€ í† í° '%s', ')' 예ìƒë¨"
+
+#: parse.y:4787
+msgid "expected `)'"
+msgstr "')' 예ìƒë¨"
+
+#: parse.y:4815
+#, c-format
+msgid "unexpected argument `%s' to conditional unary operator"
+msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž '%s'"
+
+#: parse.y:4819
+msgid "unexpected argument to conditional unary operator"
+msgstr "ì¡°ê±´ 단항 ì—°ì‚°ìžì— 예기치 ì•Šì€ ì¸ìž"
+
+#: parse.y:4865
+#, c-format
+msgid "unexpected token `%s', conditional binary operator expected"
+msgstr "예기치 ì•Šì€ í† í° '%s', ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+
+#: parse.y:4869
+msgid "conditional binary operator expected"
+msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+
+#: parse.y:4891
+#, c-format
+msgid "unexpected argument `%s' to conditional binary operator"
+msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž '%s'"
+
+#: parse.y:4895
+msgid "unexpected argument to conditional binary operator"
+msgstr "ì¡°ê±´ ì´í•­ ì—°ì‚°ìžì— 대해 예기치 ì•Šì€ ì¸ìž"
+
+#: parse.y:4906
+#, c-format
+msgid "unexpected token `%c' in conditional command"
+msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° '%c'"
+
+#: parse.y:4909
+#, c-format
+msgid "unexpected token `%s' in conditional command"
+msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° '%s'"
+
+#: parse.y:4913
+#, c-format
+msgid "unexpected token %d in conditional command"
+msgstr "ì¡°ê±´ 명령어ì—ì„œ 예기치 ì•Šì€ í† í° %d"
+
+#: parse.y:6336
+#, c-format
+msgid "syntax error near unexpected token `%s'"
+msgstr "예기치 ì•Šì€ í† í° '%s' 근처ì—ì„œ 문법 오류"
+
+#: parse.y:6355
+#, c-format
+msgid "syntax error near `%s'"
+msgstr "'%s' 근처ì—ì„œ 문법 오류"
+
+#: parse.y:6365
+msgid "syntax error: unexpected end of file"
+msgstr "문법 오류: 예기치 ì•Šì€ íŒŒì¼ì˜ ë"
+
+#: parse.y:6365
+msgid "syntax error"
+msgstr "문법 오류"
+
+#: parse.y:6428
+#, c-format
+msgid "Use \"%s\" to leave the shell.\n"
+msgstr "ì‰˜ì„ ë‚˜ê°€ë ¤ë©´ \"%s\"를 사용하세요.\n"
+
+#: parse.y:6602
+msgid "unexpected EOF while looking for matching `)'"
+msgstr "맞는 ')'를 ì°¾ë˜ ë„중 예기치 ì•Šì€ íŒŒì¼ì˜ ë"
+
+#: pcomplete.c:1132
+#, c-format
+msgid "completion: function `%s' not found"
+msgstr "completion: 함수 `%s' 를 ì°¾ì„ ìˆ˜ ì—†ìŒ"
+
+#: pcomplete.c:1722
+#, c-format
+msgid "programmable_completion: %s: possible retry loop"
+msgstr "programmable_completion: %s: 가능한 ìž¬ì‹œë„ ë£¨í”„"
+
+#: pcomplib.c:182
+#, c-format
+msgid "progcomp_insert: %s: NULL COMPSPEC"
+msgstr "progcomp_insert: %s: NULL COMPSPEC"
+
+#: print_cmd.c:302
+#, c-format
+msgid "print_command: bad connector `%d'"
+msgstr "print_command: ìž˜ëª»ëœ ì»¤ë„¥í„° `%d'"
+
+#: print_cmd.c:375
+#, c-format
+msgid "xtrace_set: %d: invalid file descriptor"
+msgstr "xtrace_set: %d: 유효하지 ì•Šì€ íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°"
+
+#: print_cmd.c:380
+msgid "xtrace_set: NULL file pointer"
+msgstr "xtrace_set: NULL íŒŒì¼ í¬ì¸í„°"
+
+#: print_cmd.c:384
+#, c-format
+msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
+msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
+
+#: print_cmd.c:1540
+#, c-format
+msgid "cprintf: `%c': invalid format character"
+msgstr "cprintf: `%c': ìž˜ëª»ëœ ì„œì‹ ë¬¸ìž"
+
+#: redir.c:149 redir.c:197
+msgid "file descriptor out of range"
+msgstr "íŒŒì¼ ë””ìŠ¤í¬ë¦½í„° 범위 벗어남"
+
+#: redir.c:204
+#, c-format
+msgid "%s: ambiguous redirect"
+msgstr "%s: 모호한 리다ì´ë ‰íŠ¸"
+
+#: redir.c:208
+#, c-format
+msgid "%s: cannot overwrite existing file"
+msgstr "%s: ì´ë¯¸ 있는 파ì¼ì„ ë®ì–´ì“¸ 수 ì—†ìŒ"
+
+#: redir.c:213
+#, c-format
+msgid "%s: restricted: cannot redirect output"
+msgstr "%s: 제한ë¨: ì¶œë ¥ì„ ë¦¬ë‹¤ì´ë ‰íŠ¸í•  수 ì—†ìŒ"
+
+#: redir.c:218
+#, c-format
+msgid "cannot create temp file for here-document: %s"
+msgstr "here-document를 위한 ìž„ì‹œ 파ì¼ì„ ìƒì„±í•  수 ì—†ìŒ: %s"
+
+#: redir.c:222
+#, c-format
+msgid "%s: cannot assign fd to variable"
+msgstr "%s: fd를 ë³€ìˆ˜ì— í• ë‹¹í•  수 ì—†ìŒ"
+
+#: redir.c:649
+msgid "/dev/(tcp|udp)/host/port not supported without networking"
+msgstr "/dev/(tcp|udp)/host/port 는 네트워킹 ì—†ì´ ì§€ì›ë˜ì§€ ì•ŠìŒ"
+
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
+msgid "redirection error: cannot duplicate fd"
+msgstr "리다ì´ë ‰ì…˜ 오류: fd를 복제할 수 ì—†ìŒ"
+
+#: shell.c:347
+msgid "could not find /tmp, please create!"
+msgstr "/tmp를 ì°¾ì„ ìˆ˜ ì—†ìŒ, 만들어 주세요!"
+
+#: shell.c:351
+msgid "/tmp must be a valid directory name"
+msgstr "/tmp는 반드시 유효한 디렉토리 ì´ë¦„ì´ì–´ì•¼ 함"
+
+#: shell.c:804
+msgid "pretty-printing mode ignored in interactive shells"
+msgstr "ìƒí˜¸ì  쉘ì—서는 pretty-printing 모드가 무시ë¨"
+
+#: shell.c:948
+#, c-format
+msgid "%c%c: invalid option"
+msgstr "%c%c: 유효하지 ì•Šì€ ì˜µì…˜"
+
+#: shell.c:1319
+#, c-format
+msgid "cannot set uid to %d: effective uid %d"
+msgstr "uid를 %dë¡œ 설정할 수 ì—†ìŒ: effective uid %d"
+
+#: shell.c:1330
+#, c-format
+msgid "cannot set gid to %d: effective gid %d"
+msgstr "gid를 %dë¡œ 설정할 수 ì—†ìŒ: effective gid %d"
+
+#: shell.c:1518
+msgid "cannot start debugger; debugging mode disabled"
+msgstr "디버거를 시작할 수 ì—†ìŒ; 디버깅 모드 비활성화ë¨"
+
+#: shell.c:1632
+#, c-format
+msgid "%s: Is a directory"
+msgstr "%s: 는 디렉터리임"
+
+#: shell.c:1881
+msgid "I have no name!"
+msgstr "ì´ë¦„ ì—†ìŒ!"
+
+#: shell.c:2035
+#, c-format
+msgid "GNU bash, version %s-(%s)\n"
+msgstr "GNU bash, 버전 %s-(%s)\n"
+
+#: shell.c:2036
+#, c-format
+msgid ""
+"Usage:\t%s [GNU long option] [option] ...\n"
+"\t%s [GNU long option] [option] script-file ...\n"
+msgstr ""
+"사용법:\t%s [GNU 긴 옵션] [옵션] ...\n"
+"\t%s [GNU 긴 옵션] [옵션] 스í¬ë¦½íŠ¸-íŒŒì¼ ...\n"
+
+#: shell.c:2038
+msgid "GNU long options:\n"
+msgstr "GNU 긴 옵션:\n"
+
+#: shell.c:2042
+msgid "Shell options:\n"
+msgstr "쉘 옵션:\n"
+
+#: shell.c:2043
+msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
+msgstr "\t-ilrsD ë˜ëŠ” -c 명령 ë˜ëŠ” -O shopt_option\t\t(invocation ì „ìš©)\n"
+
+#: shell.c:2062
+#, c-format
+msgid "\t-%s or -o option\n"
+msgstr "\t-%s ë˜ëŠ” -o 옵션\n"
+
+#: shell.c:2068
+#, c-format
+msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
+msgstr ""
+"`%s -c \"help set\"' 를 사용하면 쉘 ì˜µì…˜ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습"
+"니다.\n"
+
+#: shell.c:2069
+#, c-format
+msgid "Type `%s -c help' for more information about shell builtin commands.\n"
+msgstr ""
+"`%s -c help' 를 사용하면 쉘 내장 ëª…ë ¹ì–´ì— ê´€í•´ ë” ë§Žì€ ì •ë³´ë¥¼ 확ì¸í•  수 있습"
+"니다.\n"
+
+#: shell.c:2070
+#, c-format
+msgid "Use the `bashbug' command to report bugs.\n"
+msgstr "버그를 보고하려면 'bashbug' ëª…ë ¹ì„ ì‚¬ìš©í•˜ì„¸ìš”.\n"
+
+#: shell.c:2072
+#, c-format
+msgid "bash home page: <http://www.gnu.org/software/bash>\n"
+msgstr "bash 홈페ì´ì§€: <http://www.gnu.org/software/bash>\n"
+
+#: shell.c:2073
+#, c-format
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
+msgstr ""
+"GNU 소프트웨어를 ì‚¬ìš©í•˜ëŠ”ë° ì¼ë°˜ì ì¸ ë„움ë§: <http://www.gnu.org/gethelp/>\n"
+
+#: sig.c:757
+#, c-format
+msgid "sigprocmask: %d: invalid operation"
+msgstr "sigprocmask: %d: 유효하지 ì•Šì€ ìž‘ì—…"
+
+#: siglist.c:47
+msgid "Bogus signal"
+msgstr "Bogus 신호"
+
+#: siglist.c:50
+msgid "Hangup"
+msgstr "Hangup"
+
+#: siglist.c:54
+msgid "Interrupt"
+msgstr "ì¸í„°ëŸ½íŠ¸"
+
+#: siglist.c:58
+msgid "Quit"
+msgstr "나가기"
+
+#: siglist.c:62
+msgid "Illegal instruction"
+msgstr "Illegal instruction"
+
+#: siglist.c:66
+msgid "BPT trace/trap"
+msgstr "BPT trace/trap"
+
+#: siglist.c:74
+msgid "ABORT instruction"
+msgstr "ABORT 명령"
+
+#: siglist.c:78
+msgid "EMT instruction"
+msgstr "EMT 명령"
+
+#: siglist.c:82
+msgid "Floating point exception"
+msgstr "ë¶€ë™ ì†Œìˆ˜ì  ì˜ˆì™¸"
+
+#: siglist.c:86
+msgid "Killed"
+msgstr "Killed"
+
+#: siglist.c:90
+msgid "Bus error"
+msgstr "버스 오류"
+
+#: siglist.c:94
+msgid "Segmentation fault"
+msgstr "세그멘테ì´ì…˜ 오류"
+
+#: siglist.c:98
+msgid "Bad system call"
+msgstr "ìž˜ëª»ëœ ì‹œìŠ¤í…œ 콜"
+
+#: siglist.c:102
+msgid "Broken pipe"
+msgstr "고장난 파ì´í”„"
+
+#: siglist.c:106
+msgid "Alarm clock"
+msgstr "알람 시계"
+
+#: siglist.c:110
+msgid "Terminated"
+msgstr "Terminated"
+
+#: siglist.c:114
+msgid "Urgent IO condition"
+msgstr "긴급한 IO ìƒí™©"
+
+#: siglist.c:118
+msgid "Stopped (signal)"
+msgstr "멈춤 (신호)"
+
+#: siglist.c:126
+msgid "Continue"
+msgstr "계ì†"
+
+#: siglist.c:134
+msgid "Child death or stop"
+msgstr "ìžì‹ì´ 죽거나 멈춤"
+
+#: siglist.c:138
+msgid "Stopped (tty input)"
+msgstr "멈춤 (tty 입력)"
+
+#: siglist.c:142
+msgid "Stopped (tty output)"
+msgstr "멈춤 (tty 출력)"
+
+#: siglist.c:146
+msgid "I/O ready"
+msgstr "I/O 준비"
+
+#: siglist.c:150
+msgid "CPU limit"
+msgstr "CPU 제한"
+
+#: siglist.c:154
+msgid "File limit"
+msgstr "íŒŒì¼ ì œí•œ"
+
+#: siglist.c:158
+msgid "Alarm (virtual)"
+msgstr "알람 (ê°€ìƒ)"
+
+#: siglist.c:162
+msgid "Alarm (profile)"
+msgstr "알람 (프로파ì¼)"
+
+#: siglist.c:166
+msgid "Window changed"
+msgstr "윈ë„ìš° 변경ë¨"
+
+#: siglist.c:170
+msgid "Record lock"
+msgstr "ê¸°ë¡ ìž ê¸ˆ"
+
+#: siglist.c:174
+msgid "User signal 1"
+msgstr "유저 신호 1"
+
+#: siglist.c:178
+msgid "User signal 2"
+msgstr "유저 신호 2"
+
+#: siglist.c:182
+msgid "HFT input data pending"
+msgstr "HFT ìž…ë ¥ ë°ì´í„° 대기중"
+
+#: siglist.c:186
+msgid "power failure imminent"
+msgstr "ì „ì› ë¬¸ì œ ìž„ë°•"
+
+#: siglist.c:190
+msgid "system crash imminent"
+msgstr "시스템 ì¶©ëŒ ìž„ë°•"
+
+#: siglist.c:194
+msgid "migrate process to another CPU"
+msgstr "다른 CPUë¡œ 프로세스 ì´ì „"
+
+#: siglist.c:198
+msgid "programming error"
+msgstr "í”„ë¡œê·¸ëž˜ë° ì˜¤ë¥˜"
+
+#: siglist.c:202
+msgid "HFT monitor mode granted"
+msgstr "HFT 모니터 모드 승ì¸ë¨"
+
+#: siglist.c:206
+msgid "HFT monitor mode retracted"
+msgstr "HFT 모니터 모드 철회ë¨"
+
+#: siglist.c:210
+msgid "HFT sound sequence has completed"
+msgstr "HFT 사운드 절차가 완료ë¨"
+
+#: siglist.c:214
+msgid "Information request"
+msgstr "정보 요청"
+
+#: siglist.c:222 siglist.c:224
+#, c-format
+msgid "Unknown Signal #%d"
+msgstr "알 수 없는 신호 #%d"
+
+#: subst.c:1476 subst.c:1666
+#, c-format
+msgid "bad substitution: no closing `%s' in %s"
+msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %2$sì— ë‹«ëŠ” '%1$s' ì—†ìŒ"
+
+#: subst.c:3281
+#, c-format
+msgid "%s: cannot assign list to array member"
+msgstr "%s: 리스트를 ë°°ì—´ ë©¤ë²„ì— í• ë‹¹í•  수 ì—†ìŒ"
+
+#: subst.c:5910 subst.c:5926
+msgid "cannot make pipe for process substitution"
+msgstr "프로세스 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ"
+
+#: subst.c:5985
+msgid "cannot make child for process substitution"
+msgstr "프로세스 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ"
+
+#: subst.c:6059
+#, c-format
+msgid "cannot open named pipe %s for reading"
+msgstr "ì½ê¸°ë¥¼ 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ"
+
+#: subst.c:6061
+#, c-format
+msgid "cannot open named pipe %s for writing"
+msgstr "쓰기를 위해 ëª…ëª…ëœ íŒŒì´í”„ %s를 ì—´ 수 ì—†ìŒ"
+
+#: subst.c:6084
+#, c-format
+msgid "cannot duplicate named pipe %s as fd %d"
+msgstr "ëª…ëª…ëœ íŒŒì´í”„ %s를 fd %dë¡œ 복제할 수 ì—†ìŒ"
+
+#: subst.c:6213
+msgid "command substitution: ignored null byte in input"
+msgstr "command substitution: ìž…ë ¥ì˜ null ë°”ì´íŠ¸ 무시ë¨"
+
+#: subst.c:6353
+msgid "cannot make pipe for command substitution"
+msgstr "명령어 대체를 위해 파ì´í”„를 만들 수 ì—†ìŒ"
+
+#: subst.c:6397
+msgid "cannot make child for command substitution"
+msgstr "명령어 대체를 위해 ìžì‹ì„ 만들 수 ì—†ìŒ"
+
+#: subst.c:6423
+msgid "command_substitute: cannot duplicate pipe as fd 1"
+msgstr "command_substitute: 파ì´í”„를 fd 1ë¡œ 복제할 수 ì—†ìŒ"
+
+#: subst.c:6883 subst.c:9952
+#, c-format
+msgid "%s: invalid variable name for name reference"
+msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ëŒ€í•´ 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„"
+
+#: subst.c:6979 subst.c:6997 subst.c:7169
+#, c-format
+msgid "%s: invalid indirect expansion"
+msgstr "%s: 유효하지 ì•Šì€ ê°„ì ‘ 확장"
+
+#: subst.c:7013 subst.c:7177
+#, c-format
+msgid "%s: invalid variable name"
+msgstr "%s: 유효하지 ì•Šì€ ë³€ìˆ˜ ì´ë¦„"
+
+#: subst.c:7256
+#, c-format
+msgid "%s: parameter not set"
+msgstr "%s: 파ë¼ë¯¸í„° 설정ë˜ì§€ ì•ŠìŒ"
+
+#: subst.c:7258
+#, c-format
+msgid "%s: parameter null or not set"
+msgstr "%s: 파ë¼ë¯¸í„°ê°€ null ë˜ëŠ” 설정ë˜ì§€ ì•ŠìŒ"
+
+#: subst.c:7503 subst.c:7518
+#, c-format
+msgid "%s: substring expression < 0"
+msgstr "%s: 부분 문ìžì—´ í‘œí˜„ì‹ < 0"
+
+#: subst.c:9281 subst.c:9302
+#, c-format
+msgid "%s: bad substitution"
+msgstr "%s: ìž˜ëª»ëœ ëŒ€ì²´"
+
+#: subst.c:9390
+#, c-format
+msgid "$%s: cannot assign in this way"
+msgstr "$%s: ì´ ë°©ë²•ìœ¼ë¡œ 할당할 수 ì—†ìŒ"
+
+#: subst.c:9814
+msgid ""
+"future versions of the shell will force evaluation as an arithmetic "
+"substitution"
+msgstr "향후 ë²„ì „ì˜ ì‰˜ì—서는 산술 대체로 ì—°ì‚°ì´ ê°•ì œë©ë‹ˆë‹¤"
+
+#: subst.c:10367
+#, c-format
+msgid "bad substitution: no closing \"`\" in %s"
+msgstr "ìž˜ëª»ëœ ëŒ€ì²´: %sì— ë‹«ëŠ” \"`\" ì—†ìŒ"
+
+#: subst.c:11434
+#, c-format
+msgid "no match: %s"
+msgstr "ì¼ì¹˜ ì—†ìŒ: %s"
+
+#: test.c:147
+msgid "argument expected"
+msgstr "ì¸ìž 예ìƒë¨"
+
+#: test.c:156
+#, c-format
+msgid "%s: integer expression expected"
+msgstr "%s: 정수 í‘œí˜„ì‹ ì˜ˆìƒë¨"
+
+#: test.c:265
+msgid "`)' expected"
+msgstr "`)' 예ìƒë¨"
+
+#: test.c:267
+#, c-format
+msgid "`)' expected, found %s"
+msgstr "`)' 예ìƒë˜ì—ˆìœ¼ë‚˜ %s를 발견"
+
+#: test.c:466 test.c:799
+#, c-format
+msgid "%s: binary operator expected"
+msgstr "%s: ì´í•­ ì—°ì‚°ìž ì˜ˆìƒë¨"
+
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: 단항 ì—°ì‚°ìž ì˜ˆìƒë¨"
+
+#: test.c:881
+msgid "missing `]'"
+msgstr "']' ì—†ìŒ"
+
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "문법 오류: ';' 예ìƒë˜ì§€ ì•ŠìŒ"
+
+#: trap.c:220
+msgid "invalid signal number"
+msgstr "유효하지 ì•Šì€ ì‹ í˜¸ 번호"
+
+#: trap.c:325
+#, c-format
+msgid "trap handler: maximum trap handler level exceeded (%d)"
+msgstr "trap handler: 최대 trap handler 레벨 초과 (%d)"
+
+#: trap.c:414
+#, c-format
+msgid "run_pending_traps: bad value in trap_list[%d]: %p"
+msgstr "run_pending_traps: trap_list[%d]ì— ìž˜ëª»ëœ ê°’: %p"
+
+#: trap.c:418
+#, c-format
+msgid ""
+"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
+msgstr ""
+"run_pending_traps: 신호 핸들러는 SIG_DFL ì´ê³ , %d (%s)를 ìžì‹ ì—게 보내는 중"
+
+#: trap.c:487
+#, c-format
+msgid "trap_handler: bad signal %d"
+msgstr "trap_handler: ìž˜ëª»ëœ ì‹ í˜¸ %d"
+
+#: variables.c:421
+#, c-format
+msgid "error importing function definition for `%s'"
+msgstr "'%s'ì— ëŒ€í•´ 함수 ì •ì˜ë¥¼ ë¶ˆëŸ¬ì˜¤ëŠ”ë° ì˜¤ë¥˜ ë°œìƒ"
+
+#: variables.c:833
+#, c-format
+msgid "shell level (%d) too high, resetting to 1"
+msgstr "쉘 레벨 (%d)ì´ ë„ˆë¬´ 높습니다, 1ë¡œ 재설정합니다"
+
+#: variables.c:2674
+msgid "make_local_variable: no function context at current scope"
+msgstr "make_local_variable: 현재 범위ì—ì„œ 함수 컨í…스트 ì—†ìŒ"
+
+#: variables.c:2693
+#, c-format
+msgid "%s: variable may not be assigned value"
+msgstr "%s: 변수는 í• ë‹¹ëœ ê°’ì´ ë  ìˆ˜ ì—†ìŒ"
+
+#: variables.c:3475
+#, c-format
+msgid "%s: assigning integer to name reference"
+msgstr "%s: ì´ë¦„ ì°¸ì¡°ì— ì •ìˆ˜ë¥¼ 할당하고 있ìŒ"
+
+#: variables.c:4404
+msgid "all_local_variables: no function context at current scope"
+msgstr "all_local_variables: 현재 범위ì—ì„œ 함수 컨í…스트 ì—†ìŒ"
+
+#: variables.c:4771
+#, c-format
+msgid "%s has null exportstr"
+msgstr "%sê°€ null exportstrì„ ê°€ì§"
+
+#: variables.c:4776 variables.c:4785
+#, c-format
+msgid "invalid character %d in exportstr for %s"
+msgstr "%2$s를 위한 exportstrì—ì„œ 유효하지 ì•Šì€ ë¬¸ìž %1$d"
+
+#: variables.c:4791
+#, c-format
+msgid "no `=' in exportstr for %s"
+msgstr "%s를 위한 exportstrì— '=' ì—†ìŒ"
+
+#: variables.c:5331
+msgid "pop_var_context: head of shell_variables not a function context"
+msgstr "pop_var_context: shell_variablesì˜ ì‹œìž‘ì´ í•¨ìˆ˜ì˜ ì»¨í…스트가 아님"
+
+#: variables.c:5344
+msgid "pop_var_context: no global_variables context"
+msgstr "pop_var_context: 컨í…ìŠ¤íŠ¸ì— global_variables ì—†ìŒ"
+
+#: variables.c:5424
+msgid "pop_scope: head of shell_variables not a temporary environment scope"
+msgstr "pop_scope: shell_variablesì˜ ì‹œìž‘ì´ ìž„ì‹œ 환경 범위가 아님"
+
+#: variables.c:6387
+#, c-format
+msgid "%s: %s: cannot open as FILE"
+msgstr "%s: %s: 파ì¼ë¡œì¨ ì—´ 수 ì—†ìŒ"
+
+#: variables.c:6392
+#, c-format
+msgid "%s: %s: invalid value for trace file descriptor"
+msgstr "%s: %s: 추척 íŒŒì¼ ë””ìŠ¤í¬ë¦½í„°ì— 유효하지 ì•Šì€ ê°’"
+
+#: variables.c:6437
+#, c-format
+msgid "%s: %s: compatibility value out of range"
+msgstr "%s: %s: 호환 ê°’ì´ ë²”ìœ„ë¥¼ 벗어남"
+
+#: version.c:46 version2.c:46
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
+
+#: version.c:47 version2.c:47
+msgid ""
+"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
+"html>\n"
+msgstr ""
+"ë¼ì´ì„ ìŠ¤ GPLv3+: GNU GPL version 3 or later <http://gnu.org/license/gpl."
+"html>\n"
+
+#: version.c:86 version2.c:86
+#, c-format
+msgid "GNU bash, version %s (%s)\n"
+msgstr "GNU bash, 버전 %s (%s)\n"
+
+#: version.c:91 version2.c:91
+msgid "This is free software; you are free to change and redistribute it."
+msgstr "This is free software; you are free to change and redistribute it."
+
+#: version.c:92 version2.c:92
+msgid "There is NO WARRANTY, to the extent permitted by law."
+msgstr "There is NO WARRANTY, to the extent permitted by law."
+
+#: xmalloc.c:93
+#, c-format
+msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)"
+
+#: xmalloc.c:95
+#, c-format
+msgid "%s: cannot allocate %lu bytes"
+msgstr "%s: %lu bytes를 할당할 수 ì—†ìŒ"
+
+#: xmalloc.c:165
+#, c-format
+msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
+msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ (%lu bytes 할당ë¨)"
+
+#: xmalloc.c:167
+#, c-format
+msgid "%s: %s:%d: cannot allocate %lu bytes"
+msgstr "%s: %s:%d: %lu bytes를 할당할 수 ì—†ìŒ"
+
+#: builtins.c:45
+msgid "alias [-p] [name[=value] ... ]"
+msgstr "alias [-p] [name[=value] ... ]"
+
+#: builtins.c:49
+msgid "unalias [-a] name [name ...]"
+msgstr "unalias [-a] name [name ...]"
+
+#: builtins.c:53
+msgid ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
+msgstr ""
+"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
+"x keyseq:shell-command] [keyseq:readline-function ë˜ëŠ” readline-command]"
+
+#: 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 [shell-builtin [arg ...]]"
+
+#: builtins.c:63
+msgid "caller [expr]"
+msgstr "caller [expr]"
+
+#: 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:76
+msgid "command [-pVv] command [arg ...]"
+msgstr "command [-pVv] command [arg ...]"
+
+#: builtins.c:78
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
+msgstr "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+
+#: builtins.c:80
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
+msgstr "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+
+#: builtins.c:82
+msgid "local [option] name[=value] ..."
+msgstr "local [옵션] name[=value] ..."
+
+#: builtins.c:85
+msgid "echo [-neE] [arg ...]"
+msgstr "echo [-neE] [ì¸ìž ...]"
+
+#: builtins.c:89
+msgid "echo [-n] [arg ...]"
+msgstr "echo [-n] [ì¸ìž ...]"
+
+#: builtins.c:92
+msgid "enable [-a] [-dnps] [-f filename] [name ...]"
+msgstr "enable [-a] [-dnps] [-f 파ì¼ëª…] [ì´ë¦„ ...]"
+
+#: builtins.c:94
+msgid "eval [arg ...]"
+msgstr "eval [ì¸ìž ...]"
+
+#: builtins.c:96
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
+msgstr "getopts optstring name [arg]"
+
+#: builtins.c:98
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
+msgstr "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+
+#: builtins.c:100
+msgid "exit [n]"
+msgstr "exit [n]"
+
+#: builtins.c:102
+msgid "logout [n]"
+msgstr "logout [n]"
+
+#: builtins.c:105
+msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
+msgstr "fc [-e ename] [-lnr] [first] [last] ë˜ëŠ” fc -s [pat=rep] [command]"
+
+#: builtins.c:109
+msgid "fg [job_spec]"
+msgstr "fg [job_spec]"
+
+#: builtins.c:113
+msgid "bg [job_spec ...]"
+msgstr "bg [job_spec ...]"
+
+#: builtins.c:116
+msgid "hash [-lr] [-p pathname] [-dt] [name ...]"
+msgstr "hash [-lr] [-p pathname] [-dt] [name ...]"
+
+#: builtins.c:119
+msgid "help [-dms] [pattern ...]"
+msgstr "help [-dms] [패턴 ...]"
+
+#: builtins.c:123
+msgid ""
+"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
+"[arg...]"
+msgstr ""
+"history [-c] [-d 오프셋] [n] ë˜ëŠ” history -anrw [파ì¼ëª…] ë˜ëŠ” history -ps "
+"arg [ì¸ìž...]"
+
+#: builtins.c:127
+msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
+msgstr "jobs [-lnprs] [jobspec ...] ë˜ëŠ” jobs -x command [args]"
+
+#: builtins.c:131
+msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
+msgstr "disown [-h] [-ar] [jobspec ... | pid ...]"
+
+#: builtins.c:134
+msgid ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
+"[sigspec]"
+msgstr ""
+"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... ë˜ëŠ” kill -l "
+"[sigspec]"
+
+#: builtins.c:136
+msgid "let arg [arg ...]"
+msgstr "let arg [arg ...]"
+
+#: builtins.c:138
+msgid ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+msgstr ""
+"read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p "
+"prompt] [-t timeout] [-u fd] [name ...]"
+
+#: builtins.c:140
+msgid "return [n]"
+msgstr "return [n]"
+
+#: builtins.c:142
+msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
+msgstr "set [-abefhkmnptuvxBCHP] [-o 옵션ì´ë¦„] [--] [arg ...]"
+
+#: 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:148
+msgid "readonly [-aAf] [name[=value] ...] or readonly -p"
+msgstr "readonly [-aAf] [name[=value] ...] ë˜ëŠ” readonly -p"
+
+#: builtins.c:150
+msgid "shift [n]"
+msgstr "shift [n]"
+
+#: builtins.c:152
+msgid "source filename [arguments]"
+msgstr "source 파ì¼ëª… [ì¸ìžë“¤]"
+
+#: builtins.c:154
+msgid ". filename [arguments]"
+msgstr ". 파ì¼ëª… [ì¸ìžë“¤]"
+
+#: builtins.c:157
+msgid "suspend [-f]"
+msgstr "suspend [-f]"
+
+#: builtins.c:160
+msgid "test [expr]"
+msgstr "test [expr]"
+
+#: builtins.c:162
+msgid "[ arg... ]"
+msgstr "[ ì¸ìž... ]"
+
+#: builtins.c:166
+msgid "trap [-lp] [[arg] signal_spec ...]"
+msgstr "trap [-lp] [[arg] signal_spec ...]"
+
+#: builtins.c:168
+msgid "type [-afptP] name [name ...]"
+msgstr "type [-afptP] name [name ...]"
+
+#: builtins.c:171
+msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+msgstr "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
+
+#: builtins.c:174
+msgid "umask [-p] [-S] [mode]"
+msgstr "umask [-p] [-S] [모드]"
+
+#: builtins.c:177
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [id ...]"
+
+#: builtins.c:181
+msgid "wait [pid ...]"
+msgstr "wait [pid ...]"
+
+#: builtins.c:184
+msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
+msgstr "for NAME [in WORDS ... ] ; do COMMANDS; done"
+
+#: builtins.c:186
+msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
+msgstr "for (( exp1; exp2; exp3 )); do COMMANDS; done"
+
+#: builtins.c:188
+msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
+msgstr "select NAME [in WORDS ... ;] do COMMANDS; done"
+
+#: builtins.c:190
+msgid "time [-p] pipeline"
+msgstr "time [-p] pipeline"
+
+#: builtins.c:192
+msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
+msgstr "case 단어 in [패턴 [| 패턴]...) 명령어 ;;]... esac"
+
+#: builtins.c:194
+msgid ""
+"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
+"COMMANDS; ] fi"
+msgstr ""
+"if 명령어; then 명령어; [ elif 명령어; then 명령어; ]... [ else 명령어; ] fi"
+
+#: builtins.c:196
+msgid "while COMMANDS; do COMMANDS; done"
+msgstr "while 명령어; do 명령어; done"
+
+#: builtins.c:198
+msgid "until COMMANDS; do COMMANDS; done"
+msgstr "until 명령어; do 명령어; done"
+
+#: builtins.c:200
+msgid "coproc [NAME] command [redirections]"
+msgstr "coproc [NAME] command [redirections]"
+
+#: builtins.c:202
+msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
+msgstr "function name { 명령어 ; } ë˜ëŠ” name () { 명령어 ; }"
+
+#: builtins.c:204
+msgid "{ COMMANDS ; }"
+msgstr "{ 명령어 ; }"
+
+#: builtins.c:206
+msgid "job_spec [&]"
+msgstr "job_spec [&]"
+
+#: builtins.c:208
+msgid "(( expression ))"
+msgstr "(( í‘œí˜„ì‹ ))"
+
+#: builtins.c:210
+msgid "[[ expression ]]"
+msgstr "[[ í‘œí˜„ì‹ ]]"
+
+#: builtins.c:212
+msgid "variables - Names and meanings of some shell variables"
+msgstr ""
+
+#: builtins.c:215
+msgid "pushd [-n] [+N | -N | dir]"
+msgstr "pushd [-n] [+N | -N | dir]"
+
+#: 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] [옵션ì´ë¦„...]"
+
+#: builtins.c:228
+msgid "printf [-v var] format [arguments]"
+msgstr "printf [-v 변수] format [ì¸ìž]"
+
+#: builtins.c:231
+#, fuzzy
+msgid ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+msgstr ""
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"suffix] [name ...]"
+
+#: builtins.c:235
+#, fuzzy
+msgid ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+msgstr ""
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
+"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+
+#: builtins.c:239
+msgid "compopt [-o|+o option] [-DEI] [name ...]"
+msgstr "compopt [-o|+o option] [-DEI] [name ...]"
+
+#: 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 [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+msgstr ""
+"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
+"callback] [-c quantum] [array]"
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: 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 ""
+
+#: builtins.c:442
+msgid ""
+"Null command.\n"
+" \n"
+" No effect; the command does nothing.\n"
+" \n"
+" Exit Status:\n"
+" Always succeeds."
+msgstr ""
+"Null 명령.\n"
+" \n"
+" 효과 ì—†ìŒ; ì•„ë¬´ê²ƒë„ í•˜ì§€ 않습니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤."
+
+#: builtins.c:453
+msgid ""
+"Return a successful result.\n"
+" \n"
+" Exit Status:\n"
+" Always succeeds."
+msgstr ""
+"성공ì ì¸ 결과를 반환합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" í•­ìƒ ì„±ê³µí•©ë‹ˆë‹¤."
+
+#: builtins.c:462
+msgid ""
+"Return an unsuccessful result.\n"
+" \n"
+" Exit Status:\n"
+" Always fails."
+msgstr ""
+"실패한 결과를 반환합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" í•­ìƒ ì‹¤íŒ¨í•©ë‹ˆë‹¤."
+
+#: builtins.c:471
+#, fuzzy
+msgid ""
+"Execute a simple command or display information about commands.\n"
+" \n"
+" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
+" 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 ""
+"간단한 ëª…ë ¹ì„ ì‹¤í–‰í•˜ê±°ë‚˜ ëª…ë ¹ì— ê´€í•œ 정보를 표시합니다..\n"
+" \n"
+" Runs COMMAND with ARGS suppressing shell function lookup, or display\n"
+" information about the specified COMMANDs. Can be used to invoke "
+"commands\n"
+" on disk when a function with the same name exists.\n"
+" \n"
+" 옵션:\n"
+" -p 표준 유틸리티를 전부 ì°¾ì„ ìˆ˜ 있다고 ë³´ìž¥ëœ PATHì˜\n"
+" 기본 ê°’ì„ ì‚¬ìš©í•©ë‹ˆë‹¤.\n"
+" -v `type' 빌트ì¸ê³¼ 유사한 ëª…ë ¹ì˜ ì„¤ëª…ì„ ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" -V ê° ëª…ë ¹ì— ê´€í•´ ë” ìƒì„¸í•œ 정보를 ë³´ì—¬ì¤ë‹ˆë‹¤\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" ëª…ë ¹ì˜ ì‹¤í–‰ 결과를 반환하거나 ëª…ë ¹ì´ ì—†ì„ ê²½ìš° 오류를 반환합니다."
+
+#: 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"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
+" -p\tdisplay the attributes and value of each NAME\n"
+" \n"
+" Options which set attributes:\n"
+" -a\tto make NAMEs indexed arrays (if supported)\n"
+" -A\tto make NAMEs associative arrays (if supported)\n"
+" -i\tto make NAMEs have the `integer' attribute\n"
+" -l\tto convert the value of each NAME to lower case on assignment\n"
+" -n\tmake NAME a reference to the variable named by its value\n"
+" -r\tto make NAMEs readonly\n"
+" -t\tto make NAMEs have the `trace' attribute\n"
+" -u\tto convert the value of each NAME to upper case on assignment\n"
+" -x\tto make NAMEs export\n"
+" \n"
+" Using `+' instead of `-' turns off the given attribute.\n"
+" \n"
+" Variables with the integer attribute have arithmetic evaluation (see\n"
+" the `let' command) performed when the variable is assigned a value.\n"
+" \n"
+" When used in a function, `declare' makes NAMEs local, as with the "
+"`local'\n"
+" command. The `-g' option suppresses this behavior.\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless an invalid option is supplied or a variable\n"
+" assignment error occurs."
+msgstr ""
+
+#: builtins.c:532
+msgid ""
+"Set variable values and attributes.\n"
+" \n"
+" A synonym for `declare'. See `help declare'."
+msgstr ""
+"ë³€ìˆ˜ì˜ ê°’ê³¼ ì†ì„±ì„ 설정합니다.\n"
+" \n"
+" `declare'ì˜ ë™ì˜ì–´ 입니다. `help declare'를 보십시오."
+
+#: builtins.c:540
+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 ""
+
+#: builtins.c:557
+msgid ""
+"Write arguments to the standard output.\n"
+" \n"
+" Display the ARGs, separated by a single space character and followed by "
+"a\n"
+" 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"
+" \\uHHHH\tthe Unicode character whose value is the hexadecimal value "
+"HHHH.\n"
+" \t\tHHHH can be one to four hex digits.\n"
+" \\UHHHHHHHH the Unicode character whose value is the hexadecimal "
+"value\n"
+" \t\tHHHHHHHH. HHHHHHHH can be one to eight hex digits.\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless a write error occurs."
+msgstr ""
+
+#: builtins.c:597
+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 ""
+
+#: builtins.c:612
+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 ""
+
+#: builtins.c:640
+msgid ""
+"Execute arguments as a shell command.\n"
+" \n"
+" Combine ARGs into a single string, use the result as input to the "
+"shell,\n"
+" and execute the resulting commands.\n"
+" \n"
+" Exit Status:\n"
+" Returns exit status of command or success if command is null."
+msgstr ""
+
+#: builtins.c:652
+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, but if arguments\n"
+" are supplied as ARG values, 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 ""
+
+#: builtins.c:694
+msgid ""
+"Replace the shell with the given command.\n"
+" \n"
+" Execute COMMAND, replacing this shell with the specified program.\n"
+" ARGUMENTS become the arguments to COMMAND. If COMMAND is not "
+"specified,\n"
+" 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 ""
+
+#: builtins.c:715
+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 ""
+
+#: builtins.c:724
+msgid ""
+"Exit a login shell.\n"
+" \n"
+" Exits a login shell with exit status N. Returns an error if not "
+"executed\n"
+" in a login shell."
+msgstr ""
+"ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤.\n"
+" \n"
+" 종료 ìƒíƒœ N으로 ë¡œê·¸ì¸ ì‰˜ì„ ë‚˜ê°‘ë‹ˆë‹¤. ë¡œê·¸ì¸ ì‰˜ì—ì„œ 실행ë˜ì§€ 않는 경우\n"
+" ì—러가 ë°œìƒí•©ë‹ˆë‹¤."
+
+#: builtins.c:734
+msgid ""
+"Display or execute commands from the history list.\n"
+" \n"
+" fc is used to list or edit and re-execute commands from the history "
+"list.\n"
+" 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 ""
+
+#: builtins.c:764
+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 ""
+
+#: builtins.c:779
+msgid ""
+"Move jobs to the background.\n"
+" \n"
+" Place the jobs identified by each JOB_SPEC in the background, as if "
+"they\n"
+" had been started with `&'. If JOB_SPEC is not present, the shell's "
+"notion\n"
+" of the current job is used.\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless job control is not enabled or an error occurs."
+msgstr ""
+
+#: builtins.c:793
+msgid ""
+"Remember or display program locations.\n"
+" \n"
+" Determine and remember the full pathname of each command NAME. If\n"
+" no arguments are given, information about remembered commands is "
+"displayed.\n"
+" \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 ""
+
+#: builtins.c:818
+msgid ""
+"Display information about builtin commands.\n"
+" \n"
+" Displays brief summaries of builtin commands. If PATTERN is\n"
+" specified, gives detailed help on all commands matching PATTERN,\n"
+" otherwise the list of help topics is printed.\n"
+" \n"
+" Options:\n"
+" -d\toutput short description for each topic\n"
+" -m\tdisplay usage in pseudo-manpage format\n"
+" -s\toutput only a short usage synopsis for each topic matching\n"
+" \t\tPATTERN\n"
+" \n"
+" Arguments:\n"
+" PATTERN\tPattern specifying a help topic\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless PATTERN is not found or an invalid option is "
+"given."
+msgstr ""
+
+#: builtins.c:842
+msgid ""
+"Display or manipulate the history list.\n"
+" \n"
+" Display the history list with line numbers, prefixing each modified\n"
+" entry with a `*'. An argument of N lists only the last N entries.\n"
+" \n"
+" Options:\n"
+" -c\tclear the history list by deleting all of the entries\n"
+" -d offset\tdelete the history entry at position OFFSET. Negative\n"
+" \t\toffsets count back from the end of the history list\n"
+" \n"
+" -a\tappend history lines from this session to the history file\n"
+" -n\tread all history lines not already read from the history file\n"
+" \t\tand append them to the history list\n"
+" -r\tread the history file and append the contents to the history\n"
+" \t\tlist\n"
+" -w\twrite the current history to the history file\n"
+" \n"
+" -p\tperform history expansion on each ARG and display the result\n"
+" \t\twithout storing it in the history list\n"
+" -s\tappend the ARGs to the history list as a single entry\n"
+" \n"
+" If FILENAME is given, it is used as the history file. Otherwise,\n"
+" if HISTFILE has a value, that is used, else ~/.bash_history.\n"
+" \n"
+" If the HISTTIMEFORMAT variable is set and not null, its value is used\n"
+" as a format string for strftime(3) to print the time stamp associated\n"
+" with each displayed history entry. No time stamps are printed "
+"otherwise.\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless an invalid option is given or an error occurs."
+msgstr ""
+
+#: builtins.c:879
+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 ""
+
+#: builtins.c:906
+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 ""
+
+#: builtins.c:925
+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 ""
+
+#: builtins.c:949
+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 ""
+
+#: builtins.c:994
+msgid ""
+"Read a line from the standard input and split it into fields.\n"
+" \n"
+" Reads a single line from the standard input, or from file descriptor FD\n"
+" if the -u option is supplied. The line is split into fields as with "
+"word\n"
+" splitting, and the first word is assigned to the first NAME, the second\n"
+" word to the second NAME, and so on, with any leftover words assigned to\n"
+" the last NAME. Only the characters found in $IFS are recognized as "
+"word\n"
+" delimiters.\n"
+" \n"
+" If no NAMEs are supplied, the line read is stored in the REPLY "
+"variable.\n"
+" \n"
+" Options:\n"
+" -a array\tassign the words read to sequential indices of the array\n"
+" \t\tvariable ARRAY, starting at zero\n"
+" -d delim\tcontinue until the first character of DELIM is read, rather\n"
+" \t\tthan newline\n"
+" -e\tuse Readline to obtain the line\n"
+" -i text\tuse TEXT as the initial text for Readline\n"
+" -n nchars\treturn after reading NCHARS characters rather than waiting\n"
+" \t\tfor a newline, but honor a delimiter if fewer than\n"
+" \t\tNCHARS characters are read before the delimiter\n"
+" -N nchars\treturn only after reading exactly NCHARS characters, "
+"unless\n"
+" \t\tEOF is encountered or read times out, ignoring any\n"
+" \t\tdelimiter\n"
+" -p prompt\toutput the string PROMPT without a trailing newline before\n"
+" \t\tattempting to read\n"
+" -r\tdo not allow backslashes to escape any characters\n"
+" -s\tdo not echo input coming from a terminal\n"
+" -t timeout\ttime out and return failure if a complete line of\n"
+" \t\tinput is not read within TIMEOUT seconds. The value of the\n"
+" \t\tTMOUT variable is the default timeout. TIMEOUT may be a\n"
+" \t\tfractional number. If TIMEOUT is 0, read returns\n"
+" \t\timmediately, without trying to read any data, returning\n"
+" \t\tsuccess only if input is available on the specified\n"
+" \t\tfile descriptor. The exit status is greater than 128\n"
+" \t\tif the timeout is exceeded\n"
+" -u fd\tread from file descriptor FD instead of the standard input\n"
+" \n"
+" Exit Status:\n"
+" The return code is zero, unless end-of-file is encountered, read times "
+"out\n"
+" (in which case it's greater than 128), a variable assignment error "
+"occurs,\n"
+" or an invalid file descriptor is supplied as the argument to -u."
+msgstr ""
+
+#: builtins.c:1041
+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 ""
+
+#: builtins.c:1054
+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 ""
+
+#: builtins.c:1139
+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 ""
+
+#: builtins.c:1161
+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 ""
+
+#: builtins.c:1180
+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 ""
+
+#: builtins.c:1202
+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 ""
+
+#: builtins.c:1214 builtins.c:1229
+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 ""
+
+#: builtins.c:1245
+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 ""
+"쉘 ì‹¤í–‰ì„ ì¼ì‹œì •ì§€í•©ë‹ˆë‹¤.\n"
+" \n"
+" SIGCONT 신호를 ë°›ì„ ë•Œ 까지 ì‰˜ì˜ ì‹¤í–‰ì„ ì¼ì‹œ 정지합니다.\n"
+" ê°•ì œ ì˜µì…˜ì´ ì—†ëŠ” 경우 ë¡œê·¸ì¸ ì‰˜ì€ ì¼ì‹œ ì •ì§€ë  ìˆ˜ 없습니다.\n"
+" \n"
+" 옵션:\n"
+" -f\të¡œê·¸ì¸ ì‰˜ì˜ ê²½ìš°ì—ë„ ì¼ì‹œ 정지를 강제합니다.\n"
+" \n"
+" 종료 ìƒíƒœ:\n"
+" job controlì´ í™œì„±í™”ë˜ì§€ 않았거나 오류가 ë°œìƒí•˜ì§€ 않으면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ"
+"다."
+
+#: builtins.c:1261
+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 ""
+
+#: builtins.c:1343
+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 ""
+
+#: builtins.c:1352
+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 ""
+
+#: builtins.c:1364
+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 <signal.h> or a signal "
+"number.\n"
+" Signal names are case insensitive and the SIG prefix is optional. A\n"
+" signal may be sent to the shell with \"kill -signal $$\".\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless a SIGSPEC is invalid or an invalid option is "
+"given."
+msgstr ""
+
+#: builtins.c:1400
+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 ""
+
+#: builtins.c:1431
+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"
+" -R\tthe maximum time a real-time process can run before blocking\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 ""
+
+#: builtins.c:1482
+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 ""
+
+#: builtins.c:1502
+msgid ""
+"Wait for job completion and return exit status.\n"
+" \n"
+" Waits for each process identified by an ID, which may be a process ID or "
+"a\n"
+" job specification, and reports its termination status. If ID is not\n"
+" given, waits for all currently active child processes, and the return\n"
+" status is zero. If ID is a job specification, waits for all processes\n"
+" in that job's pipeline.\n"
+" \n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
+" \n"
+" If the -f option is supplied, and job control is enabled, waits for the\n"
+" specified ID to terminate, instead of waiting for it to change status.\n"
+" \n"
+" Exit Status:\n"
+" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
+msgstr ""
+
+#: builtins.c:1533
+msgid ""
+"Wait for process completion and return exit status.\n"
+" \n"
+" Waits for each process specified by a PID and reports its termination "
+"status.\n"
+" 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 ""
+
+#: builtins.c:1548
+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 ""
+
+#: builtins.c:1562
+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 ""
+
+#: builtins.c:1580
+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 ""
+
+#: builtins.c:1601
+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 ""
+
+#: builtins.c:1618
+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 ""
+
+#: builtins.c:1630
+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 ""
+
+#: builtins.c:1647
+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 ""
+
+#: builtins.c:1659
+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 ""
+
+#: builtins.c:1671
+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 ""
+
+#: builtins.c:1685
+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 ""
+
+#: builtins.c:1699
+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 ""
+
+#: builtins.c:1711
+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 ""
+
+#: builtins.c:1726
+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 ""
+
+#: builtins.c:1738
+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 ""
+
+#: builtins.c:1764
+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 ""
+
+#: builtins.c:1821
+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 ""
+
+#: builtins.c:1855
+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 ""
+
+#: builtins.c:1885
+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 ""
+"디렉토리 스íƒì„ ë³´ì—¬ì¤ë‹ˆë‹¤.\n"
+" \n"
+" 현재 ê¸°ì–µëœ ë””ë ‰í† ë¦¬ì˜ ëª©ë¡ì„ ë³´ì—¬ì¤ë‹ˆë‹¤. 디렉토리들ì€\n"
+" `pushd' ëª…ë ¹ì„ í†µí•´ 목ë¡ì— 경로를 저장할 수 있고; 'popd' \n"
+" ëª…ë ¹ì„ í†µí•´ 거슬러 올ë¼ê°ˆ 수 있습니다.\n"
+" \n"
+" 옵션:\n"
+" -c\tì›ì†Œë¥¼ 전부 ì‚­ì œí•¨ìœ¼ë¡œì¨ ë””ë ‰í† ë¦¬ 스íƒì„ 초기화합니다\n"
+" -l\t홈 디렉토리까지 ~ë¡œ ì¶•ì•½ëœ ìƒëŒ€ê²½ë¡œë¥¼ 표시하지 않습니다\n"
+" -p\tí•œ ì¤„ì— í•˜ë‚˜ì”© 디렉토리 스íƒì„ 표시합니다\n"
+" -v\tí•œ ì¤„ì— í•˜ë‚˜ì”© 스íƒì˜ 위치와 함께 디렉토리 스íƒì„ 표시합니다\n"
+" \n"
+" ì¸ìž:\n"
+" +N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 왼쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤ë‹ˆ"
+"다.\n"
+" \t세는 수는 0부터 시작합니다.\n"
+" \n"
+" -N\tì¸ìž ì—†ì´ ì‹¤í–‰ë  ë•Œ 보여지는 목ë¡ì˜ 오른쪽부터 N번째 í•­ëª©ì„ ë³´ì—¬ì¤"
+"니다.\n"
+"\t세는 수는 0부터 시작합니다.\n"
+" 종료 ìƒíƒœ:\n"
+" 유효하지 ì•Šì€ ì˜µì…˜ì´ ì£¼ì–´ì§€ê±°ë‚˜ 오류가 ë°œìƒí•˜ì§€ 않는다면 ì„±ê³µì„ ë°˜í™˜í•©ë‹ˆ"
+"다."
+
+#: builtins.c:1916
+msgid ""
+"Set and unset shell options.\n"
+" \n"
+" Change the setting of each shell option OPTNAME. Without any option\n"
+" arguments, list each supplied OPTNAME, or all shell options if no\n"
+" OPTNAMEs are given, with an indication of whether or not each is set.\n"
+" \n"
+" Options:\n"
+" -o\trestrict OPTNAMEs to those defined for use with `set -o'\n"
+" -p\tprint each shell option with an indication of its status\n"
+" -q\tsuppress output\n"
+" -s\tenable (set) each OPTNAME\n"
+" -u\tdisable (unset) each OPTNAME\n"
+" \n"
+" Exit Status:\n"
+" Returns success if OPTNAME is enabled; fails if an invalid option is\n"
+" given or OPTNAME is disabled."
+msgstr ""
+
+#: builtins.c:1937
+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 ""
+
+#: builtins.c:1971
+msgid ""
+"Specify how arguments are to be completed by Readline.\n"
+" \n"
+" For each NAME, specify how arguments are to be completed. If no "
+"options\n"
+" are supplied, existing completion specifications are printed in a way "
+"that\n"
+" allows them to be reused as input.\n"
+" \n"
+" Options:\n"
+" -p\tprint existing completion specifications in a reusable format\n"
+" -r\tremove a completion specification for each NAME, or, if no\n"
+" \t\tNAMEs are supplied, all completion specifications\n"
+" -D\tapply the completions and actions as the default for commands\n"
+" \t\twithout any specific completion defined\n"
+" -E\tapply the completions and actions to \"empty\" commands --\n"
+" \t\tcompletion attempted on a blank line\n"
+" -I\tapply the completions and actions to the initial (usually the\n"
+" \t\tcommand) word\n"
+" \n"
+" When completion is attempted, the actions are applied in the order the\n"
+" uppercase-letter options are listed above. If multiple options are "
+"supplied,\n"
+" the -D option takes precedence over -E, and both take precedence over -"
+"I.\n"
+" \n"
+" Exit Status:\n"
+" Returns success unless an invalid option is supplied or an error occurs."
+msgstr ""
+
+#: builtins.c:2001
+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 ""
+
+#: builtins.c:2016
+msgid ""
+"Modify or display completion options.\n"
+" \n"
+" Modify the completion options for each NAME, or, if no NAMEs are "
+"supplied,\n"
+" the completion currently being executed. If no OPTIONs are given, "
+"print\n"
+" the completion options for each NAME or the current completion "
+"specification.\n"
+" \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"
+" \t-I\t\tChange options for completion on the initial word\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 ""
+
+#: builtins.c:2047
+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 ""
+
+#: builtins.c:2083
+msgid ""
+"Read lines from a file into an array variable.\n"
+" \n"
+" A synonym for `mapfile'."
+msgstr ""
+"파ì¼ì—ì„œ ì¤„ì„ ì½ì–´ ë°°ì—´ ë³€ìˆ˜ì— ë„£ìŠµë‹ˆë‹¤.\n"
+" \n"
+" `mapfile'ì˜ ë™ì˜ì–´."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "현재 서브루틴 ì½œì˜ ì»¨í…스트를 반환합니다.\n"
+#~ " \n"
+#~ " EXPRì´ ì—†ìœ¼ë©´, 다ìŒì„ 반환 "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: 프로세스 %5ld (%s) 는 the_pipelineì— ìžˆìŒ"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "알 수 없는 신호 #"
diff --git a/po/lt.gmo b/po/lt.gmo
index 6abd02a0..31a29ca4 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index 30f0ec1d..06bdb449 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7,89 +7,94 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2009-03-25 16:49+0200\n"
"Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n"
"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\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-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: KBabel 1.11.4\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
-"100<10 || n%100>=20) ? 1 : 2);\n"
+"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:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "blogas masyvo indeksas"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, fuzzy, c-format
msgid "%s: invalid associative array key"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nepavyko priskirti prie neskaitinio indekso"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nepavyko sukurti: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: nepavyko rasti keymapo komandai"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: pirmas ne tarpo simbolis nėra „\"“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "nÄ—ra uždaranÄiojo „%c“ %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: trūksta dvitaškio skirtuko"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: nepavyko atjungti (unbind)"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, fuzzy, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
@@ -108,22 +113,22 @@ msgstr "„%s“: netaisyklingas keymap'o pavadinimas"
msgid "%s: cannot read: %s"
msgstr "%s: nepavyko perskaityti: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: nežinomas funkcijos pavadinimas"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s gali būti iškviestas su "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: nepavyko atjungti (unbind)"
@@ -141,23 +146,36 @@ msgstr "prasminga tik „for“, „while“ arba „until“ cikle"
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
-msgstr "Grąžina esamos procedūros kontekstą."
+" 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."
+msgstr ""
+"Grąžina esamos procedūros kontekstą.\n"
+" \n"
+" Be IŠRAIŠKOS, grąžina „$eilutė $failo_vardas“. Su IŠRAIŠKA,\n"
+" grąžina „$eilutė $procedūra $failo_vardas“; ši papildoma informacija\n"
+" gali būti panaudota kuriant steko išrašą (stack trace).\n"
+" \n"
+" IŠRAIŠKOS reikšmė nurodo, per kiek kvietimo freimų grįžti nuo\n"
+" esamo; viršutinis freimas yra 0."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME nenustatytas"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "per daug argumentų"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "steko virÅ¡Å«nÄ—je esanÄiu."
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD nenustatytas"
@@ -176,7 +194,7 @@ msgstr "įspėjimas: "
msgid "%s: usage: "
msgstr "%s: naudojimas: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: parametrui reikia argumento"
@@ -191,7 +209,7 @@ msgstr "%s: reikia skaitinio argumento"
msgid "%s: not found"
msgstr "%s: nerasta"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: negalimas parametras"
@@ -201,7 +219,7 @@ msgstr "%s: negalimas parametras"
msgid "%s: invalid option name"
msgstr "%s: netaisyklingas parametro vardas"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': netaisyklingas identifikatorius"
@@ -214,7 +232,7 @@ msgstr "netaisyklingas aÅ¡tuonetainis skaiÄius"
msgid "invalid hex number"
msgstr "netaisyklingas Å¡eÅ¡ioliktainis skaiÄius"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "netaisyklingas skaiÄius"
@@ -290,73 +308,83 @@ msgstr ""
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: klaida skaitant esamÄ… aplankÄ…: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dviprasmis darbo aprašymas"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nepavyko ištrinti: %s tik skaitymui"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nepavyko ištrinti"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nÄ—ra baigimo specifikacijos"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "įspėjimas: parametras -F gali neveikti taip, kaip tikitės"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "įspėjimas: parametras -C gali neveikti taip, kaip tikitės"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "galima naudoti tik funkcijoje"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "negalima naudoti „-f“ funkcijoms kurti"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcija tik skaitymui"
@@ -371,7 +399,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: negalima tokiu būdu sunaikinti masyvų kintamųjų"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -385,27 +413,32 @@ msgstr "dinaminis įkrovimas negalimas"
msgid "cannot open shared object %s: %s"
msgstr "nepavyko atverti bendrojo objekto %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "nepavyko rasti %s bendrajame objekte %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: nedinamiškai įkrauta"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nedinamiškai įkrauta"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nepavyko ištrinti: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: aplankas"
@@ -420,12 +453,12 @@ msgstr "%s: ne paprastas failas"
msgid "%s: file is too large"
msgstr "%s: failas per didelis"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: negalima vykdyti dvejetainių failų"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nepavyko paleisti: %s"
@@ -449,15 +482,16 @@ msgstr "Yra sustabdytų darbų.\n"
msgid "There are running jobs.\n"
msgstr "Yra veikianÄių darbų.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "komandų nerasta"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "istorijos specifikacija"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: nepavyko atverti laikinojo failo: %s"
@@ -485,12 +519,12 @@ 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:266
+#: builtins/hash.def:267
#, fuzzy, c-format
msgid "hits\tcommand\n"
msgstr "paskutinÄ— komanda: %s\n"
@@ -503,6 +537,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -537,21 +577,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "istorijos pozicija"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: netaisyklingas parametro vardas"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: istorijos išskleidimas nesėkmingas"
@@ -574,7 +614,7 @@ msgstr "%s: argumentai turi būti procesų arba darbų ID"
msgid "Unknown error"
msgstr "Nežinoma klaida"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "tikėtasi išraiškos"
@@ -583,12 +623,12 @@ msgstr "tikėtasi išraiškos"
msgid "%s: not an indexed array"
msgstr "%s: ne masyvo kintamasis"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: netaisyklinga failo deskriptoriaus specifikacija"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: netaisyklingas failo deskriptorius: %s"
@@ -617,36 +657,36 @@ msgstr "%s: ne masyvo kintamasis"
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: trūksta formato simbolio"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, fuzzy, c-format
msgid "`%c': invalid time format specification"
msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: netaisyklingas formato simbolis"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "įspėjimas: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, fuzzy, c-format
msgid "missing unicode digit for \\%c"
msgstr "trūksta šešioliktainio skaitmens išraiškoje \\x"
@@ -743,12 +783,12 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: klaidinga laiko ribos (timeout) specifikacija"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "skaitymo klaida: %d: %s"
@@ -757,21 +797,11 @@ msgstr "skaitymo klaida: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "galima grįžti (return) tik iš funkcijos ar scenarijaus"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "negalima kartu ištrinti funkcijos ir kintamojo"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nepavyko ištrinti"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nepavyko ištrinti: %s tik skaitymui"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ne masyvo kintamasis"
@@ -786,7 +816,7 @@ msgstr "%s: ne funkcija"
msgid "%s: cannot export"
msgstr "%s: nepavyko ištrinti"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "postÅ«mių skaiÄius"
@@ -794,7 +824,7 @@ msgstr "postÅ«mių skaiÄius"
msgid "cannot set and unset shell options simultaneously"
msgstr "negalima aplinkos nuostatos vienu metu įjungti ir išjungti"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: netaisyklingas aplinkos nuostatos pavadinimas"
@@ -851,26 +881,26 @@ msgstr "%s yra %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s yra hešuotas (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: netaisyklingas limito argumentas"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': bloga komanda"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nepavyko gauti limito: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "riba"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nepavyko pakeisti limito: %s"
@@ -930,77 +960,76 @@ msgstr "blogas Å¡uolis"
msgid "%s: unbound variable"
msgstr "%s: nepriskirtas kintamasis"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\alaukiant įvedimo baigėsi laikas: automatiškai atsijungta\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "nepavyko peradresuoti standartinio įvedimo iš /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: netaisyklingas formato simbolis"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
#, fuzzy
msgid "pipe error"
msgstr "rašymo klaida: %s"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: apribota: negalima naudoti „/“ komandų pavadinimuose"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: komanda nerasta"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: blogas interpretatorius"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: negalima vykdyti dvejetainių failų"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s yra aplinkos vidinÄ— komanda\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
@@ -1026,62 +1055,67 @@ msgstr "bandymas priskirti ne kintamajam"
msgid "syntax error in variable assignment"
msgstr "sintaksės klaida išraiškoje"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "dalyba iš 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "klaida: bloga expassign leksema"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "sąlygos išraiškoje tikėtasi „:“"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponentė mažesnis už 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"po prieš-didinimo ar prieš-mažinimo operatoriaus tikėtasi identifikatoriaus"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "Trūksta „)“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "sintaksÄ—s klaida: tikÄ—tasi operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "sintaksÄ—s klaida: netaisyklingas aritmetinis operatorius"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr ""
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "netaisyklingas aritmetinis pagrindas"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: nesamas parametras"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "per didelė pagrindo reikšmė"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: išraiškos klaida\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nepavyko pasiekti aukštesnių aplankų"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, fuzzy, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
@@ -1096,161 +1130,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:1084
+#: jobs.c:906
#, c-format
-msgid "forked pid %d appears in running job %d"
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1203
+#: jobs.c:959
#, c-format
-msgid "deleting stopped job %d with process group %ld"
-msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld"
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
-#: jobs.c:1307
+#: jobs.c:1283
#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
+msgid "forked pid %d appears in running job %d"
msgstr ""
-#: jobs.c:1310
+#: jobs.c:1402
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
+msgstr "trinamas sustabdytas darbas %d procesų grupėje %ld"
+
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: tokio pid nÄ—ra"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signalas %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Atlikta"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr ""
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr ""
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr ""
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Atlikta(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr ""
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Nežinoma būsena"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr ""
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr ""
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr ""
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: nėra proceso %ld įrašo"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: darbas %d yra sustabdytas"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: nÄ—ra tokio darbo"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: darbas užsibaigė"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: darbas %d jau fone"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: %d eilutÄ—: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr ""
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr ""
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr ""
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr ""
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr ""
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "šioje aplinkoje nėra darbų valdymo"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: pažeista prielaida: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1259,39 +1303,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: prielaida pažeista\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "nežinoma"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blokas iš laisvų blokų sąrašo sugadintas"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: iškviestas su jau atlaisvintu bloku"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: iškviestas su nerezervuotu bloku"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: iškviestas su nerezervuotu bloku"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: atvirkštinis perpildymas (underflow); mh_nbytes už ribos"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: pradžios ir pabaigos blokų (chunk) dydžiai skiriasi"
@@ -1333,22 +1387,22 @@ msgstr "%s: netaisyklingas tinklo kelias"
msgid "network operations not supported"
msgstr "tinklo operacijos nepalaikomos"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
-#: locale.c:274
+#: locale.c:294
#, fuzzy, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "xrealloc: %s:%d: nepavyko išskirti %lu baitų"
@@ -1394,110 +1448,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: nukreipimo instrukcija „%d“ už ribų"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "netikėta failo pabaiga ieškant atitinkamo „%c“"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "netikėta failo pabaiga ieškant „]]“"
-#: parse.y:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "sintaksės klaida sąlygos išraiškoje"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "netikėta leksema „%s“, tikėtasi „)“"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "tikėtasi „)“"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "netikėtas argumentas „%s“ sąlygos unariniam operatoriui"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "netikÄ—tas argumentas sÄ…lygos unariniam operatoriui"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "netikėta leksema „%s“, tikėtasi sąlyginio binarinio operatoriaus"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "tikÄ—tasi sÄ…lygos binarinio operatoriaus"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "netikėtas argumentas „%s“ sąlygos binariniam operatoriui"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "netikÄ—tas argumentas sÄ…lygos binariniam operatoriui"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "netikėta leksema „%c“ sąlygos komandoje"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "netikėta leksema „%s“ sąlygos komandoje"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "netikÄ—ta leksema %d sÄ…lygos komandoje"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "sintaksės klaida prie netikėtos leksemos: „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "sintaksės klaida prie „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "sintaksÄ—s klaida: netikÄ—ta failo pabaiga"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "sintaksÄ—s klaida"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Naudokite „%s“, jei norite išeiti iš ap.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "netikėta failo pabaiga ieškant atitinkamo „)“"
@@ -1540,89 +1594,89 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: netaisyklingas formato simbolis"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "failo deskriptorius už ribų"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: ambiguous redirect"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: negalima perraÅ¡yti egzistuojanÄio failo"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: apribota: negalima peradresuoti išvedimo"
-#: redir.c:188
+#: redir.c:218
#, fuzzy, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nepavyko sukurti laikino failo „here“ dokumentui: %s"
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: negalima priskirti sąrašo masyvo elementui"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/serveris/prievadas nepalaikoma be tinklo"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "nukreipimo klaida: nepavyko dublikuoti fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "nepavyko rasti /tmp, sukurkite šį aplanką!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp turi būti taisyklingas aplanko pavadinimas"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: netaisyklingas parametras"
-#: shell.c:1299
+#: shell.c:1319
#, fuzzy, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
-#: shell.c:1306
+#: shell.c:1330
#, fuzzy, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "nepavyko dublikuoti fd %d į fd %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: aplankas"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Neturiu vardo!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versija %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1631,329 +1685,325 @@ msgstr ""
"Naudojimas:\t%s [GNU ilgas parametras] [parametras] ...\n"
"\t%s [GNU ilgas parametras] [parametras] scenarijaus-failas ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU ilgi parametrai:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Aplinkos parametrai:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s arba -o nustatymas\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Naudokite komandą „bashbug“ klaidoms pranešti.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: netaisyklinga operacija"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr ""
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr ""
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr ""
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr ""
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr ""
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr ""
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT instrukcija"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr ""
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Slankaus kablelio klaida"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr ""
-#: siglist.c:91
+#: siglist.c:90
#, fuzzy
msgid "Bus error"
msgstr "sintaksÄ—s klaida"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmentacijos klaida"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr ""
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr ""
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Žadintuvas"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Nutraukta"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr ""
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Sustabdyta (signalas)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Tęsti"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr ""
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Sustabdyta (tty įvedimas)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Sustabdyta (tty išvedimas)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr ""
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU riba"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Failų riba"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr ""
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr ""
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Langas pakeistas"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr ""
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr ""
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr ""
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr ""
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr ""
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr ""
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "proceso migravimas į kitą CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programavimo klaida"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr ""
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr ""
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr ""
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informacijos užklausa"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Nežinomas signalas #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nežinomas signalas #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: negalima priskirti sąrašo masyvo elementui"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr ""
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr ""
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr ""
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr ""
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr ""
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr ""
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: nesamas parametras"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "%s: netaisyklingas veiksmo pavadinimas"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: posekio išraiška < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: blogas keitinys"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: negalima tokiu būdu priskirti"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "blogas keitinys: trūksta „%s“ %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "nėra atitikmenų: %s"
@@ -1976,118 +2026,123 @@ msgstr "tikėtasi „)“"
msgid "`)' expected, found %s"
msgstr "tikėtasi „)“, rasta %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: tikÄ—tasi unarinio operatoriaus"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: tikÄ—tasi binarinio operatoriaus"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: tikÄ—tasi unarinio operatoriaus"
+
+#: test.c:881
msgid "missing `]'"
msgstr "trūksta „]“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "sintaksės klaida: netikėtas „;“"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "netaisyklingas signalo numeris"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: blogas signalas %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "klaida importuojant funkcijos apibrėžimą „%s“"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "aplinkos lygmuo (%d) per aukštas, nustatoma į 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parametras tuÅ¡Äias arba nenustatytas"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "netaisyklingas simbolis %d %s exportstr'e"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s exportstr'e trūksta „=“"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nÄ—ra global_variables konteksto"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6272
+#: variables.c:6387
#, fuzzy, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: nepavyko atverti: %s"
-#: variables.c:6277
+#: variables.c:6392
#, fuzzy, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%d: netaisyklingas failo deskriptorius: %s"
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s išėjo už ribų"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "AutorinÄ—s teisÄ—s (C) 2009 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2179,12 +2234,12 @@ msgstr "command [-pVv] komanda [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFilrtux] [-p] [pavadinimas[=reikšmė] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFilrtux] [-p] pavadinimas[=reikšmė] ..."
#: builtins.c:82
@@ -2208,11 +2263,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optsekos pavadinimas [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr ""
"exec [-cl] [-a pavadinimas] [komanda [argumentai ...]] [nukreipimas ...]"
@@ -2343,7 +2400,7 @@ msgstr "umask [-p] [-S] [režimas]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2438,14 +2495,14 @@ msgstr "printf [-v kint] formatas [argumentai]"
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
#: 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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
#: builtins.c:239
@@ -2746,6 +2803,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2773,14 +2832,14 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2795,7 +2854,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2835,7 +2894,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2848,7 +2907,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2875,7 +2934,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2887,7 +2946,7 @@ msgid ""
" Returns exit status of command or success if command is null."
msgstr ""
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2920,15 +2979,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -2951,7 +3010,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
+#: builtins.c:715
#, fuzzy
msgid ""
"Exit the shell.\n"
@@ -2963,7 +3022,7 @@ msgstr ""
"nustatomas\n"
" paskutinÄ—s vykdytos komandos klaidos kodas."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -2972,7 +3031,7 @@ msgid ""
" in a login shell."
msgstr ""
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3002,7 +3061,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3014,7 +3073,7 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3028,7 +3087,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3052,7 +3111,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3074,7 +3133,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3109,7 +3168,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3133,7 +3192,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3150,7 +3209,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3173,7 +3232,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3218,7 +3277,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3270,7 +3329,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3282,7 +3341,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3368,7 +3427,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3390,7 +3449,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3409,7 +3468,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3430,7 +3489,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3441,7 +3500,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
#, fuzzy
msgid ""
"Execute commands from a file in the current shell.\n"
@@ -3460,7 +3519,7 @@ msgstr ""
" Jei nurodyta ARGUMENTŲ, jie tampa poziciniais parametrais iškvietus\n"
" FAILÄ„."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3474,7 +3533,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3557,7 +3616,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3565,7 +3624,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3577,7 +3636,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3621,7 +3680,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3651,7 +3710,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3682,6 +3741,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3700,7 +3760,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3718,7 +3778,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3729,18 +3789,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3755,7 +3825,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3768,7 +3838,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3785,7 +3855,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3805,7 +3875,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3821,7 +3891,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3832,7 +3902,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3853,7 +3923,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
#, fuzzy
msgid ""
"Execute commands as long as a test succeeds.\n"
@@ -3867,7 +3937,7 @@ msgstr ""
"Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
" „while“ komandų grąžina klaidos kodą 0."
-#: builtins.c:1649
+#: builtins.c:1659
#, fuzzy
msgid ""
"Execute commands as long as a test does not succeed.\n"
@@ -3881,7 +3951,7 @@ msgstr ""
"Išskleisti ir vykdyti KOMANDAS tol, kol galutinė komanda iš\n"
" „until“ komandų grąžina klaidos kodą, nelygų 0."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3894,7 +3964,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -3908,7 +3978,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
#, fuzzy
msgid ""
"Group commands as a unit.\n"
@@ -3922,7 +3992,7 @@ msgstr ""
"Vykdyti eilę komandų grupėje. Tai yra vienas iš būdų nukreipti\n"
" visos eilės komandų įvedimą/išvedimą."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3936,18 +4006,18 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3975,7 +4045,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4029,7 +4099,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4060,7 +4130,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4087,7 +4157,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4116,7 +4186,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4136,7 +4206,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -4154,8 +4224,8 @@ 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"
@@ -4187,7 +4257,7 @@ msgstr ""
" Jei pateiktas parametras -v, išvedimas įrašomas į aplinkos kintamąjį\n"
" KINT, užuot spausdinus į standartinį išvedimą."
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4209,7 +4279,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4218,7 +4288,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
#, fuzzy
msgid ""
"Display possible completions depending on the options.\n"
@@ -4236,7 +4306,7 @@ msgstr ""
" Jei pateiktas nebūtinasis ŽODŽIO argumentas, išvedami įrašai,\n"
" atitinkantys ŽODĮ."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4268,7 +4338,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4310,13 +4380,23 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#, fuzzy
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr "Grąžina esamos procedūros kontekstą."
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Nežinomas signalas #"
+
#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
#~ msgstr "xrealloc: nepavyko išskirti %lu baitų (išskirta %lu baitų)"
diff --git a/po/nb.gmo b/po/nb.gmo
index c4235211..894af692 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 1aa973d1..cdeff4d1 100644
--- a/po/nb.po
+++ b/po/nb.po
@@ -1,94 +1,99 @@
# Norwegian (bokmål) translation of GNU Bash
-# Copyright (C) 2017 Free Software Foundation, Inc.
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# Ã…ka Sikrom <a4@hush.com>, 2015-2017.
+# Ã…ka Sikrom <a4@hush.com>, 2015-2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2017-03-02 10:45+0100\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-08 19:40+0100\n"
"Last-Translator: Ã…ka Sikrom <a4@hush.com>\n"
"Language-Team: Norwegian Bokmaal <i18n-nb@lister.ping.uio.no>\n"
+"Language: nb\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: Norwegian bokmål\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 1.5.4\n"
+"X-Generator: Poedit 2.0.6\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "feil i tabell-underskript"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: fjerner navnref-egenskap"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: indeksert tabell kan ikke konverteres til assosiativ tabell"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: ugyldig nøkkel for assosiativ tabell"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: kan ikke tildeles ikke-numerisk indeks"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: klarte ikke å opprette: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: fant ikke tastaturoppsett for kommando"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: første ikke-blanktegn må være «\"»"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "avsluttende «%c» mangler i %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: kolon-skilletegn mangler"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "«%s»: klarte ikke å fjerne tildeling"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "brace-utvidelse: klarte ikke å tildele minne for %s"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "brace-utvidelse: klarte ikke å tildele minne for %d elementer"
+msgstr "brace-utvidelse: klarte ikke å tildele minne for %u elementer"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "brace-utvidelse: klarte ikke å tildele minne for «%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: ugyldig alias"
@@ -107,22 +112,22 @@ msgstr "«%s»: ugyldig navn på tastaturoppsett"
msgid "%s: cannot read: %s"
msgstr "%s: klarte ikke å lese: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "«%s»: ukjent funksjonsnavn"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s er ikke tilknyttet en knapp.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s kan startes via"
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "«%s»: klarte ikke å fjerne tildeling"
@@ -136,28 +141,44 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "gir bare mening i «for»-, «while»- og «until»-sløyfer"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Viser kontekst for kall av gjeldende underrutine.\n"
+"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"
-" Hvis EXPR mangler, vises"
+" 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/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME har ingen verdi"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "for mange argumenter"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null-mappe"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD har ingen verdi"
@@ -176,7 +197,7 @@ msgstr "advarsel:"
msgid "%s: usage: "
msgstr "%s: bruk: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: valget krever et argument"
@@ -191,7 +212,7 @@ msgstr "%s: valget krever et tall-argument"
msgid "%s: not found"
msgstr "fant ikke %s"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: ugyldig valg"
@@ -201,7 +222,7 @@ msgstr "%s: ugyldig valg"
msgid "%s: invalid option name"
msgstr "%s: ugyldig valgnavn"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: ugyldig navn"
@@ -214,7 +235,7 @@ msgstr "ugyldig oktal-tall"
msgid "invalid hex number"
msgstr "ugldig heksadesimalt tall"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "ugyldig tall"
@@ -290,73 +311,83 @@ msgstr "feil under endring av terminal-egenskaper: %s"
msgid "error getting terminal attributes: %s"
msgstr "feil under henting av terminal-egenskaper: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: feil under henting av gjeldende mappe: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: flertydig jobbspesifikasjon"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "hjelp er ikke tilgjengelig for denne versjonen"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: klarte ikke å fjerne verdi"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: ugyldig handlingsnavn"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen spesifikasjon for fullføring"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "advarsel: valget «-F» virker kanskje ikke slik du forventer"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "advarsel: valget «-C» virker kanskje ikke slik du forventer"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "fullføringsfunksjon kjøres ikke nå"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "kan bare brukes i funksjoner"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referansevariabler kan ikke være tabeller (arrays)"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: navnref.-variabler kan ikke referere til seg selv"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: sirkulær navnreferanse"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: ugyldig variabelnavn for navnreferanse"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "valget«-f» kan ikke brukes til å lage funksjoner"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: skrivebeskyttet funksjon"
@@ -371,7 +402,7 @@ msgstr "%s: sammensatt tabell-tideling i hermetegn er utgått"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: tabellvariabler kan ikke ødelegges på denne måten"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: assosiative tabeller kan ikke konverteres til indekserte tabeller"
@@ -385,27 +416,32 @@ msgstr "dynamisk innlasting er ikke tilgjengelig"
msgid "cannot open shared object %s: %s"
msgstr "klarte ikke å åpne delt objekt %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "fant ikke %s i delt objekt %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: ikke dynamisk innlastet"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ikke dynamisk innlastet"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: klarte ikke å slette: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: er en mappe"
@@ -420,12 +456,12 @@ msgstr "%s: ikke en vanlig fil"
msgid "%s: file is too large"
msgstr "%s: fila er for stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, 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:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: klarte ikke å kjøre: %s"
@@ -449,15 +485,16 @@ msgstr "Bakgrunnsjobb(er) venter.\n"
msgid "There are running jobs.\n"
msgstr "Bakgrunnsjobb(er) kjører.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "fant ingen kommando"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "historikk-spesifikasjon"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: klarte ikke å åpne midlertidig fil: %s"
@@ -485,12 +522,12 @@ msgstr "%s: -- %c krever et argument\n"
msgid "hashing disabled"
msgstr "nøkkelsummering er slått av"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: kontrollsum-tabell er tom\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "treff\tkommando\n"
@@ -501,13 +538,19 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller «info "
-"%s»."
+"ingen hjelpeemner samsvarer med «%s». Prøv «help help», «man -k %s» eller "
+"«info %s»."
#: builtins/help.def:224
#, c-format
@@ -536,21 +579,21 @@ msgstr ""
"slått av.\n"
"\n"
-#: builtins/history.def:154
+#: 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 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "historikkposisjon"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ugyldig tidsstempel"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historikk-utvidelse mislyktes"
@@ -573,7 +616,7 @@ msgstr "%s: argumenter må være prosess- eller jobb-ID-er"
msgid "Unknown error"
msgstr "Ukjent feil"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "forventet uttrykk"
@@ -582,12 +625,12 @@ msgstr "forventet uttrykk"
msgid "%s: not an indexed array"
msgstr "%s: ikke en indeksert tabell"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ugyldig spesifikasjon av fildeskriptor"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ugyldig fildeskriptor: %s"
@@ -615,36 +658,36 @@ msgstr "tomt navn på tabellvariabel"
msgid "array variable support required"
msgstr "støtte for tabellvariabler kreves"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: formattegn mangler"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: ugyldig spesifikasjon av tidsformat"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: ugyldig formattegn"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "advarsel: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problem med tolkning av format: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "heks-siffer mangler for \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "unicode-siffer mangler for \\%c"
@@ -795,12 +838,12 @@ msgstr ""
" \n"
" Den innebygde funksjonen «dirs» viser mappestabelen."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ugyldig spesifikasjon av tidsavbrudd"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "lesefeil: %d: %s"
@@ -809,23 +852,13 @@ msgstr "lesefeil: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "du kan bare «return» fra en funksjon eller kildeskript"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
"du kan ikke utføre «unset» (tømme både en funksjon og en variabel for "
"verdier) samtidig"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: klarte ikke å fjerne verdi"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: klarte ikke å fjerne verdi fra skrivebeskyttet %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ikke en tabellvariabel"
@@ -840,7 +873,7 @@ msgstr "%s: ikke en funksjon"
msgid "%s: cannot export"
msgstr "%s: klarte ikke å eksportere"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift-antall"
@@ -848,7 +881,7 @@ msgstr "shift-antall"
msgid "cannot set and unset shell options simultaneously"
msgstr "du kan ikke både definere og fjerne skallvalg samtidig"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ugyldig navn på skallvalg"
@@ -905,26 +938,26 @@ msgstr "%s er %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s er nøkkelsummert («hashed») (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: ugyldig grenseargument"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "«%c»: ugyldig kommando"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: klarte ikke å hente grense: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "grense"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: klarte ikke å endre grense: %s"
@@ -984,78 +1017,75 @@ msgstr "ugyldig hopp"
msgid "%s: unbound variable"
msgstr "%s: utildelt variabel"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atidsavbrudd for inndata: auto-utlogging\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "klarte ikke å videresende standard inndata fra «/dev/null». %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c» er et ugyldig formattegn"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] finnes fremdeles"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "datarør-feil"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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"
+msgstr "eval: grensa for nivåer av eval-funksjoner (%d) er overskredet"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, 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:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ikke tillatt: kommandonavn kan ikke inneholde «/»"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "fant ikke kommando %s"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ugyldig tolk"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: klarte ikke å kjøre binærfil: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s» er en innebygd spesialfunksjon"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "klarte ikke å duplisere fd %d til fd %d"
@@ -1077,65 +1107,69 @@ msgid "attempted assignment to non-variable"
msgstr "du forsøkte å tilordne en verdi til noe som ikke er en variabel"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "uttrykk inneholder syntaksfeil"
+msgstr "variabeltildeling inneholder syntaksfeil"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "forsøkte å dele på 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "programfeil: ugyldig expassign-symbol"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "forventet «:» for betinget uttrykk"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponent er lavere enn 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "forventet identifikator etter pre-økning eller pre-forminskelse"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "mangler «)»"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntaksfeil: forventet operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaksfeil: ugyldig aritmetisk operatør"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (feilaktig symbol er «%s»)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "ugyldig aritmetisk grunntall"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: ugyldig linjeantall"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "verdien er for høy for grunntallet"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: feil i uttrykk\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: fikk ikke tilgang til foreldermapper"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "klarte ikke å tilbakestille nodelay-modus for fd %d"
@@ -1150,162 +1184,171 @@ msgstr "klarte ikke å knytte ny fildeskriptor til bash-inndata fra fd %d"
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: mellomlager for ny fd %d finnes allerede"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp-datarør"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "kopiert pid %d finnes i kjørende jobb %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "sletter ventende bakgrunnsjobb %d med prosessgruppe %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: prosess %5ld (%s) i _kommandokø"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: markert PID %5ld (%s) som levende"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid-en finnes ikke"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Ferdig"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Venter"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Venter(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Kjører"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Ferdig(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Avsluttet %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ukjent status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(kjerne lagret i fil) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "underprosess setpgid (%ld til %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen kjennskap til prosess %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: prosess %d venter"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: jobben finnes ikke"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: jobben er avsluttet"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: jobb %d kjører allerede i bakgrunnen"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: slår på WNOHANG for å unngå kronisk blokkering"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: linje %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (kjerne lagret i fil)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd nå: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp mislyktes"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: linjeregler"
+msgstr "initialize_job_control: ingen jobbkontroll i bakgrunn"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjeregler"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "klarte ikke å velge terminal-prosessgruppe (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "ingen jobbkontroll i dette skallet"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: mislykket premiss: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1314,39 +1357,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: urimelig premiss\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "ukjent"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: rotete blokk på befrielsesliste"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: ble bedt om å behandle blokk som allerede er ledig"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: ble bedt om å behandle blokk som ikke er tildelt"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: tomt. mh_nbytes er utenfor rekkevidde"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: start- og sluttdel er av ulik størrelse"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: ble bedt om å behandle blokk som ikke er tildelt"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: tomt. mh_nbytes er utenfor rekkevidde"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start- og sluttdel er av ulik størrelse"
@@ -1388,22 +1441,22 @@ msgstr "%s: ugyldig spesifikasjon av nettverkssti"
msgid "network operations not supported"
msgstr "nettverkshandlinger støttes ikke"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: klarte ikke å bytte region (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: klarte ikke å bytte region (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: klarte ikke å bytte region (%s): %s"
@@ -1450,7 +1503,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: videresendinginstruks «%d» er utenfor tillatt rekkevidde"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1459,103 +1512,103 @@ msgstr ""
"shell_getc: «shell_input_line_size» (%zu) overskrider SIZE_MAX (%lu): linja "
"er forkortet"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "grensa for maksimalt antall here-dokumenter er overskredet"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "uforventet slutt på fil (EOF) under søk etter «%c»"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "uforventet slutt på fil (EOF) under søk etter «]]»"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaksfeil i betinget uttrykk: forventet ikke symbolet «%s»"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntaksfeil i betinget uttrykk"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "forventet ikke symbolet «%s», men «)»"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "forventet «)»"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "«%s» er et uforventet argument for betinget unær operatør"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "uforventet argument for betinget unær operatør"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "«%s» er et uforventet symbol. Forventet betinget binær operatør"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "forventet betinget binæroperatør"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "«%s» er et uforventet argument for betinget binæroperatør"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "uforventet argument for betinget binæroperatør"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "«%c» er et uforventet symbol i en betinget kommando"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "«%s» er et uforventet symbol i en betinget kommando"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "«%d» er et uforventet symbol i en betinget kommando"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaksfeil ved «%s», som er et uforventet symbol"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaksfeil ved «%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntaksfeil: uforventet slutt på fil"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntaksfeil"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Bruk «%s» for å gå ut av skallet.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "uforventet slutt på fil (EOF) under søk etter «)»"
@@ -1598,89 +1651,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: ugyldig formattegn"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "fildeskriptor er utenfor tillatt rekkevidde"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: flertydig videresending"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: klarte ikke å overskrive fil"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ikke tillatt: klarte ikke å videresende utdata"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "klarte ikke å lage midlertidig fil for here-dokument: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: klarte ikke å knytte fd til variabel"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port støttes ikke uten nettverkstilkobling"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "videresendingsfeil: klarte ikke å duplisere fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "fant ikke «/tmp». Opprett denne mappa!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "«/tmp» må være et gyldig mappenavn"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "pen utskriftsmodus blir ignorert i interaktive skall"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ugyldig valg"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "klarte ikke å velge %d som uid. Effektiv uid: %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "klarte ikke å velge %d som gid. Effektiv gid: %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "klarte ikke å starte feilsøkingsverktøy. Feilsøkingsmodus slått av"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: er en mappe"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Jeg manger navn!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versjon %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1689,314 +1742,310 @@ msgstr ""
"Bruk:\t%s [langt GNU-valg] [valg] …\n"
"\t%s [langt GNU-valg] [valg] skriptfil …\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Lange GNU-valg:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Skallvalg:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t«-%s» eller «-o»\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Bruk kommandoen «bashbug» for å rapportere programfeil.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash-nettside: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Generell hjelp til bruk av GNU-programvare: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ugyldig handling"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Ugyldig signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Legg på"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Forstyrr"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Avslutt"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Ugyldig instruks"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT-sporing/-fanging"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT-instruks"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT-instruks"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Flyttallsfeil"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Drept"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bussfeil"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmenteringsfeil"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Ugyldig systemkall"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Ødelagt datarør"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarmklokke"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Avsluttet"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Hastende IO-tilstand"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stoppet (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Fortsett"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Død eller stans av underprosess"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stoppet (tty-inndata)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stoppet (tty-utdata)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O klar"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-grense"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Filgrense"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtuell)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Vindu endret"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Husk lås"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Brukersignal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Brukersignal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT-inndata venter"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "strømstans er nærliggende"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "systemkræsj er nærliggende"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "flytt prosess til annen CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programmeringsfeil"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-skjermmodus tildelt"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-skjermmodus tilbaketrukket"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-lydsekvens er fullført"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informasjonsforespørsel"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ukjent signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "#%d er et ukjent signal"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "ugyldig substitutt: %2$s mangler avsluttende «%1$s»"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: klarte ikke å knytte liste til tabellmedlem"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "klarte ikke å lage datarør for substitusjon av prosess"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "klarte ikke å lage underprosess for substitusjon av prosess"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "klarte ikke å åpne navngitt datarør %s for lesing"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "klarte ikke å åpne navngitt datarør %s for skriving"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "klarte ikke å duplisere navngitt datarør %s som fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "kommandosubstitusjon: null-byte i inndata ignorert"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "klarte ikke å lage datarør for substitusjon av kommando"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "klarte ikke å lage underprosess for substitusjon av kommando"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: klarte ikke å duplisere datarør som fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ugyldig variabelnavn for navnreferanse"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ugyldig indirekte utvidelse"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ugyldig variabelnavn"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: parameter har null-verdi eller står tomt"
+msgstr "%s: parameter har ingen verdi"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter har null-verdi eller står tomt"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: understreng-uttrykk < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: ugyldig substitusjon"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: du kan ikke tildele på denne måten"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2004,12 +2053,12 @@ msgstr ""
"fremtidige versjoner av skallet skal tvinge evaluering som en aritmetisk "
"substitusjon"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "ugyldig substitusjon. %s mangler avsluttende «`»"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "ingen treff på %s"
@@ -2032,37 +2081,41 @@ msgstr "forventet «)»"
msgid "`)' expected, found %s"
msgstr "forventet «)», men fant %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: forventet unær operatør"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: forventet binær operatør"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: forventet unær operatør"
+
+#: test.c:881
msgid "missing `]'"
msgstr "«]» mangler"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntaksfeil: uforventet «;»"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "ugyldig signalnummer"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-"eval: grensa for nivåer av eval-funksjoner i eval-funksjoner (%d) er "
-"overskredet"
+"fellehåndtering: øvre grense for fellehåndteringsnivå (%d) er overskredet"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2070,86 +2123,87 @@ msgstr ""
"run_pending_traps: SIG_DFL er signalbehandler. Sender %d (%s) til meg selv "
"på nytt"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: %d er et ugyldig signal"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "feil under importering av definisjonen av funksjonen «%s»"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skallnivået (%d) er for høyt. Tilbakestiller til 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funksjonskontekst i gjeldende virkefelt"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variabel kan ikke tilknyttes verdi"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: knytter heltall til navnreferanse"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funksjonskontekst i gjeldende virkefelt"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s har exportstr som er null"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%d er et ugyldig tegn i exportstr for %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "exportstr for %s mangler «=»"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: kontekst for «global_variables» mangler"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
-msgstr "pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt"
+msgstr ""
+"pop_scope: toppen av «shell_variables» er ikke et midlertidig miljøfelt"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: klarte ikke å åpne som FIL"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: ugyldig verdi for sporing av fildeskriptor"
-#: variables.c:6322
+#: variables.c:6437
#, 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) 2018 Free Software Foundation, Inc."
-msgstr "Opphavsrett (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Opphavsrett (C) 2012 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2240,11 +2294,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg …]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [navn[=verdi] …]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] navn[=verdi] …"
#: builtins.c:82
@@ -2268,11 +2324,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg …]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts valgstreng navn [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a navn] [kommando [argumenter …]] [videresending …]"
#: builtins.c:100
@@ -2401,8 +2459,8 @@ msgstr "umask [-p] [-S] [modus]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [id …]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [id …]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2496,25 +2554,25 @@ msgstr "printf [-v var] format [argumenter]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o valg] [-A handling] [-G globpat] [-"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o valg] [-A handling] [-G globpat] [-"
"W ordliste] [-F funksjon] [-C kommando] [-X filterpat] [-P prefiks] [-S "
"suffiks] [navn …]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o valg] [-DE] [navn …]"
+msgstr "compopt [-o|+o valg] [-DEI] [navn …]"
#: builtins.c:242
msgid ""
@@ -2525,13 +2583,12 @@ msgstr ""
"tilbakekall] [-c mengde] [tabell]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-C tilbakekall] "
-"[-c mengde] [tabell]"
+"readarray [-d skilletegn] [-n antall] [-O opphav] [-s antall] [-t] [-u fd] [-"
+"C tilbakekall] [-c mengde] [tabell]"
#: builtins.c:256
msgid ""
@@ -2565,8 +2622,8 @@ msgstr ""
" -p\tSkriv ut alle definerte alias i brukbart format\n"
" \n"
" Avslutningsstatus:\n"
-" alias avslutter med positiv verdi («true»), med mindre bruker skriver inn "
-"et NAVN\n"
+" alias avslutter med positiv verdi («true»), med mindre bruker skriver "
+"inn et NAVN\n"
" som mangler definert alias."
#: builtins.c:278
@@ -2649,11 +2706,11 @@ msgstr ""
" som inndata.\n"
" -S Vis knappekombinasjoner som kaller makroer og "
"tilhørende verdier\n"
-" -s Tilsvarer «-S», men i et format som kan gjenbrukes i "
-"inndata.\n"
+" -s Tilsvarer «-S», men i et format som kan gjenbrukes "
+"i inndata.\n"
" -V Vis variabelnavn og verdier\n"
-" -v Tilsvarer «-V», men i et format som kan gjenbrukes i "
-"inndata.\n"
+" -v Tilsvarer «-V», men i et format som kan gjenbrukes "
+"i inndata.\n"
" -q function-name Spør hvilke knapper som kaller aktuell funksjon.\n"
" -u function-name Fjern alle knappekombinasjoner som er tilknyttet "
"aktuell funksjon.\n"
@@ -2704,7 +2761,6 @@ msgstr ""
" Statuskoden er 0, med mindre N er mindre enn 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2726,7 +2782,7 @@ msgstr ""
" \n"
" Avslutningsstatus:\n"
" Statuskoden er den samme som aktuell SKALLFUNKSJON gir, eller\n"
-" negativ («false») hvis SKALLFUNKSJON ikke er en innebygd skallkommando.."
+" negativ («false») hvis SKALLFUNKSJON ikke er en innebygd skallkommando."
#: builtins.c:369
msgid ""
@@ -2811,7 +2867,8 @@ msgstr ""
" Et null-mappenavn er det samme som gjeldende mappe. Hvis MAP begynner\n"
" med skråstrek (/), brukes ikke CDPATH.\n"
" \n"
-" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en verdi,\n"
+" Hvis valgt mappe ikke finnes, og skallvalget «cdable_vars» har en "
+"verdi,\n"
" antas ordet å være et variabelnavn. Hvis den variabelen har en verdi,\n"
" brukes denne verdien som MAP.\n"
" \n"
@@ -2952,6 +3009,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3015,7 +3074,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller\n"
" det oppstår en variabel-tildelingsfeil."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3025,7 +3084,7 @@ msgstr ""
" \n"
" Dette er synonymt med «declare» (se «help declare»)."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3052,8 +3111,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg, det oppstår\n"
" en feil under variabeltildeling eller skallet ikke kjører en funksjon."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3094,17 +3152,18 @@ msgid ""
msgstr ""
"Skriv argumenter til standardutdata.\n"
" \n"
-" Send ARGumenter til standardutdata, adskilt med enkelt mellomromtegn og\n"
-" etterfulgt av linjeskift.n \n"
+" Vis ARGumenter, adskilt med enkelt mellomromtegn og\n"
+" etterfulgt av linjeskift, på standardutdata. \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"
+" \a\tsystemvarsel\n"
+" \\b\trettetast\n"
+" \\c\tignorer videre utdata\n"
" \\e\tskiftetegn\n"
" \\E\tskiftetegn\n"
" \\f\tsideskift\n"
@@ -3121,7 +3180,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre det oppstår en skrivefeil."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3143,7 +3202,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre det oppstår en skrivefeil."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3194,7 +3253,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre valgt NAVN ikke er innebygd eller det oppstår feil."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3213,7 +3272,8 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som valgt kommando, eller vellykket hvis kommando er null."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3246,8 +3306,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3292,7 +3352,7 @@ msgstr ""
" Vellykket hvis et valg finnes, og mislykket hvis et valg ikke finnes\n"
" eller det oppstår en annen feil."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3334,7 +3394,7 @@ msgstr ""
" Vellykket, med mindre valgt KOMMANDO ikke finnes eller det oppstår en "
"videresendingsfeil."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3346,7 +3406,7 @@ msgstr ""
" Avslutt skallet med status N. Hvis N utelates, er statuskoden\n"
" den samme som forrige kjørte kommando."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3360,7 +3420,7 @@ msgstr ""
"det\n"
" ikke kjøres i et innloggingsskall."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3416,7 +3476,7 @@ msgstr ""
" Enten vellykket, samme som kjørt kommando eller noe annet enn null hvis "
"det oppstår feil."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3437,7 +3497,7 @@ msgstr ""
" Samme som kommandoen som legges i forgrunnen, eller mislykket hvis det "
"oppstår feil."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3460,7 +3520,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3503,8 +3563,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre NAVN ikke finnes eller bruker tar et ugyldig valg."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3528,14 +3587,14 @@ 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"
+" valgt, vises detaljert hjelp til bruk av alle kommandoer som samsvarer\n"
" med MØNSTER. Ellers vises en liste over hjelpeemner.\n"
" \n"
-" VALG:\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"
+" \t\tmed MØNSTER\n"
" \n"
" Argumenter:\n"
" MØNSTER\tVelger hjelpeemne\n"
@@ -3544,8 +3603,7 @@ msgstr ""
" Vellykket, med mindre et MØNSTER ikke finnes eller bruker tar et ugyldig "
"valg."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3587,30 +3645,29 @@ msgstr ""
" Valg:\n"
" -c\ttøm historikk ved å slette alle oppføringer\n"
" -d posisjon\tslett historikkoppføring ved valgt posisjon.\n"
+"\t\tNegativ posisjon teller fra slutten.\n"
" \n"
-" -a\tlegg til linjer fra denne økta i historikkfil\n"
+" -a\tlegg til linjer fra gjeldende økt 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"
+" Hvis FILNAVN er valgt, brukes dette som historikkfil. Ellers 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"
+" Hvis $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 bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3654,7 +3711,7 @@ msgstr ""
"feil.\n"
" Hvis «-x» er valgt, hentes statuskode fra aktuell KOMMANDO."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3685,7 +3742,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar ugyldig(e) valg eller JOBBSPES."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3729,7 +3786,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3812,8 +3869,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Hvis siste ARGument blir 0, er status 1. Ellers er statuskoden 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3879,7 +3935,7 @@ msgstr ""
" \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"
+" -e\t\tbruk Readline til å hente linje\n"
" -i tekst\tBruk valgt TEKST med Readline\n"
" -n n\tgå tilbake etter å ha lest N antall tegn i stedet for å vente på "
"ny linje,\n"
@@ -3908,7 +3964,7 @@ msgstr ""
"tidelingsfeil,\n"
" eller valget «-u» argumenteres med en ugyldig fildeskriptor."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3928,7 +3984,7 @@ msgstr ""
" Avslutningsstatus:\n"
" N, eller mislykket hvis skallet ikke kjører en funksjon eller et skript."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4096,7 +4152,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4137,7 +4193,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller et NAVN er "
"skrivebeskyttet."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4173,7 +4229,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg, eller et NAVN er "
"ugyldig."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4213,7 +4269,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4231,7 +4287,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre N er negativ eller større enn $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4255,7 +4311,7 @@ msgstr ""
" Samme som siste kommando som ble kjørt via FILNAVN, eller\n"
" mislykket hvis FILNAVN ikke kan leses."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4281,7 +4337,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre jobbkontroll er slått av eller det oppstår feil."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4447,7 +4503,7 @@ msgstr ""
"verdi eller\n"
" bruker skriver inn et ugyldig argument."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4459,7 +4515,7 @@ msgstr ""
" Dette er synonymt med den innebygde kommandoen «test», men\n"
" siste argument må være «]» for å samsvare med «[»."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4478,7 +4534,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Alltid vellykket."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4560,7 +4616,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre en SIGNALSPES eller et valg er ugyldig."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4618,7 +4674,8 @@ msgstr ""
" Vellykket hvis alle NAVN finnes, og mislykket hvis ett eller flere ikke "
"finnes."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4649,6 +4706,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4713,7 +4771,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4746,7 +4804,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre MODUS er ugyldig eller bruker tar et ugyldig valg."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4758,15 +4816,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Vent på fullføring av jobb, og skriv ut avslutningsstatus.\n"
" \n"
@@ -4781,11 +4849,13 @@ msgstr ""
" Hvis «-n» er valgt, skriver programmet ut avslutningsstatus for neste "
"jobb.\n"
" \n"
+" Hvis «f» er valgt og jobbkontroll er slått på, venter programmet på at\n"
+" valgt ID skal avslutte i stedet for å vente på statusendring.\n"
" Avslutningsstatus:\n"
-" Samme som siste ID, eller mislykket hvis enten en ID er ugyldig eller\n"
+" Samme som siste ID, eller mislykket hvis enten ID er ugyldig eller\n"
" bruker tar et ugyldig valg."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4811,7 +4881,7 @@ msgstr ""
" Samme som siste PID. Mislykket hvis PID er ugyldig, eller hvis\n"
" bruker tar et ugyldig valg."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4832,7 +4902,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4862,7 +4932,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4898,7 +4968,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4928,7 +4998,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som statuskoden fra valgt DATARØR."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4946,7 +5016,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4980,7 +5050,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4998,7 +5068,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5016,7 +5086,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørte kommando."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5039,7 +5109,7 @@ msgstr ""
" \n"
" coproc avslutter med kode 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5063,7 +5133,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre valgt NAVN er skrivebeskyttet."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5081,7 +5151,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som sist kjørt kommando."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5105,12 +5175,13 @@ msgstr ""
" Avslutningsstatus:\n"
" Samme som statuskoden for gjenopptatt jobb."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5123,7 +5194,7 @@ msgstr ""
" Avslutningsstatus:\n"
" 1 hvis UTTRYKK blir 0, og ellers 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5174,7 +5245,7 @@ msgstr ""
" Avslutningsstatus:\n"
" 0 eller 1, avhengig av UTTRYKKets verdi."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5279,7 +5350,7 @@ msgstr ""
" HISTIGNORE\tEn kolondelt liste over mønstre som bestemmer\n"
" \t\thvilke kommandoer som skal lagres i historikklista.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5335,7 +5406,7 @@ msgstr ""
" Vellykket, med mindre et ugyldig argument er brukt eller\n"
" mappebytte mislykkes."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5376,7 +5447,8 @@ msgstr ""
" F.eks.: «popd +0» fjerner første mappe, og «popd +1» mappe nr. 2.\n"
" \n"
" -N\tFjern N-te mappe (talt fra null til høyre, etter «dirs»).\n"
-" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste mappe.\n"
+" F.eks.: «popd -0» fjerner siste mappe, og «popd -1» nest siste "
+"mappe.\n"
" \n"
" Bruk kommandoen «dirs» for å vise mappestabelen.\n"
" \n"
@@ -5384,7 +5456,7 @@ msgstr ""
" Vellykket, med mindre et ugyldig argument er brukt eller\n"
" mappebytte mislykkes."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5430,8 +5502,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5454,7 +5525,9 @@ msgstr ""
" \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"
+" skriver programmet ut alle oppgitte VALGNAVN og viser hvorvidt de har en "
+"verdi.\n"
+" Hvis ingen VALGNAVN er oppgitt, skriver programmet ut alle skallvalg.\n"
" \n"
" Valg:\n"
" -o\tbegrense VALGNAVN til det som er definert med «set -o»\n"
@@ -5467,7 +5540,7 @@ msgstr ""
" Vellykket hvis VALGNAVN er slått på, og mislykket hvis enten bruker \n"
" tar et ugyldig valg eller VALGNAVN er slått av."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5484,8 +5557,8 @@ 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"
@@ -5522,7 +5595,8 @@ msgstr ""
" %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"
+" %(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 "
@@ -5535,7 +5609,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår en\n"
" skrive- eller tidelingsfeil."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5558,7 +5632,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5569,6 +5643,9 @@ msgstr ""
"Velg hvordan argumenter skal fullføres av Readline.\n"
" \n"
" Velg hvordan argumenter skal fullføres per NAVN.\n"
+" Hvis brukeren ikke tar noen valg, blir gjeldende "
+"fullføringsspesifikasjoner\n"
+" skrevet ut i et format som egner seg til gjenbruk.\n"
" \n"
" Valg:\n"
" -p\tskriv ut gjeldende fullføringsoppsett i et gjenbrukbart format "
@@ -5577,16 +5654,17 @@ msgstr ""
" \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"
+" -E\tbruk fullføringer og handlinger på «tomme» kommandoer\n"
+" -I\tbruk fullføringer og handlinger på første (kommando-) ord\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"
+" store bokstaver ovenfor. Valget «-D» har høyere prioritet\n"
+" enn «-E», og begge har høyere prioritet enn «-I».\n"
" \n"
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5607,8 +5685,7 @@ msgstr ""
" Avslutningsstatus:\n"
" Vellykket, med mindre bruker tar et ugyldig valg eller det oppstår feil."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5651,6 +5728,7 @@ msgstr ""
" \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"
+" \t-I\t\tEndre valg for fullføring av første ord\n"
" \n"
" Bruk «+o» i stedet for «-o» for å slå av valg.\n"
" \n"
@@ -5666,7 +5744,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller NAVN\n"
" mangler fullføringsoppsett."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5745,7 +5823,7 @@ msgstr ""
" Vellykket, med mindre bruker tar et ugyldig valg eller TABELL enten er\n"
" skrivebeskyttet eller en ikke-indeksert tabell."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5755,6 +5833,24 @@ msgstr ""
" \n"
" Dette er synonymt med «mapfile»."
+#~ 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"
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: prosess %5ld (%s) i _kommandokø"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ukjent signal #"
+
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "Opphavsrett (C) 2018 Free Software Foundation, Inc."
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "Opphavsrett (C) 2014 Free Software Foundation, Inc."
@@ -5769,6 +5865,3 @@ msgstr ""
#~ 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 369c1956..61313228 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 88eb7d2a..60b9d48d 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,5 +1,5 @@
# Dutch translations for GNU bash.
-# Copyright (C) 2016 Free Software Foundation, Inc.
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
# «Lernfähiger Software! Ich lach mich kaputt!»
@@ -17,97 +17,102 @@
# om stilstaan en niet om finale opgave. Een alternatieve vertaling
# zou dus "Stilstand" kunnen zijn.
#
-# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014, 2015, 2016.
+# Benno Schulenberg <benno@vertaalt.nl>, 2006, 2008, 2010, 2011, 2013, 2014.
+# Benno Schulenberg <benno@vertaalt.nl>, 2015, 2016, 2019.
# Erwin Poeze <erwin.poeze@gmail.com>, 2009.
# Julie Vermeersch <julie@lambda1.be>, 2004.
# Erick Branderhorst <branderh@iaehv.nl>, 1996.
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2016-11-12 16:31+0100\n"
-"Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-05-30 14:14+0200\n"
+"Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n"
"Language-Team: Dutch <vertaling@vrijschrift.org>\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-Bugs: Report translation errors to the Language-Team address.\n"
-"X-Generator: Lokalize 1.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "ongeldige array-index"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: 'nameref'-eigenschap wordt verwijderd"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: kan geïndexeerd array niet omzetten naar associatief array"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: ongeldige sleutel voor associatief array"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: niet-numerieke index is niet mogelijk"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "Kan %s niet aanmaken: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command(): kan voor opdracht geen toetsenkaart vinden"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: eerste teken dat geen witruimte is is niet '\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "geen sluit-'%c' in %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: ontbrekend scheidingsteken (dubbele punt)"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "Kan %s niet losmaken"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %s"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %d elementen"
+msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor %u elementen"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "accoladevervanging: onvoldoende geheugen beschikbaar voor '%s'"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "'%s': ongeldige naam voor alias"
@@ -126,22 +131,22 @@ msgstr "'%s': ongeldige naam voor toetsenkaart"
msgid "%s: cannot read: %s"
msgstr "Kan %s niet lezen: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "'%s': onbekende functienaam"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s kan worden aangeroepen via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "Kan %s niet losmaken"
@@ -155,28 +160,41 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "heeft alleen betekenis in een 'for'-, 'while'- of 'until'-lus"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"De context geven van de huidige functie-aanroep.\n"
+"De context van de aanroep van de huidige functie tonen.\n"
"\n"
-" Zonder EXPR, resulteert "
+" Zonder argument produceert het \"$regelnummer $bestandsnaam\"; met\n"
+" argument \"$regelnummer $functienaam $bestandsnaam\". Deze tweede\n"
+" vorm kan gebruikt worden om een 'stack trace' te produceren. De\n"
+" waarde van het argument geeft aan hoeveel frames er teruggegaan\n"
+" moet worden; het huidige frame heeft nummer 0.\n"
+"\n"
+" De afsluitwaarde is 0, tenzij de shell momenteel geen functie uitvoert\n"
+" of EXPRESSIE ongeldig is."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME is niet gedefinieerd"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "te veel argumenten"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null-map"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD is niet gedefinieerd"
@@ -195,7 +213,7 @@ msgstr "waarschuwing: "
msgid "%s: usage: "
msgstr "%s: Gebruik: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: optie vereist een argument"
@@ -210,7 +228,7 @@ msgstr "%s: vereist een numeriek argument"
msgid "%s: not found"
msgstr "%s: niet gevonden"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: ongeldige optie"
@@ -220,7 +238,7 @@ msgstr "%s: ongeldige optie"
msgid "%s: invalid option name"
msgstr "%s: ongeldige optienaam"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "'%s': is geen geldige naam"
@@ -233,7 +251,7 @@ msgstr "ongeldig octaal getal"
msgid "invalid hex number"
msgstr "ongeldig hexadecimaal getal"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "ongeldig getal"
@@ -309,73 +327,83 @@ msgstr "fout tijdens instellen van terminaleigenschappen: %s"
msgid "error getting terminal attributes: %s"
msgstr "fout tijdens verkrijgen van terminaleigenschappen: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: taakaanduiding is niet eenduidig"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "hulp is niet beschikbaar in deze versie"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "Kan '%s' niet verwijderen"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: ongeldige actienaam"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: is geen completerings-aanduiding"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "waarschuwing: optie -F functioneert mogelijk niet zoals verwacht"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "waarschuwing: optie -C functioneert mogelijk niet zoals verwacht"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "er wordt momenteel geen completeringsfunctie uitgevoerd"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "kan alleen worden gebruikt binnen een functie"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: verwijzingsvariabele mag geen array zijn"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: zelfverwijzing door naamsverwijzingsvariabele is niet toegestaan"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: circulaire naamsverwijzing"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "'%s': ongeldige variabelenaam voor naamsverwijzing"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "'-f' kan niet gebruikt worden om een functie te definiëren"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: is een alleen-lezen functie"
@@ -390,7 +418,7 @@ msgstr "%s: aangehaalde samengesteld-array-toekenning is verouderd"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: kan array-variabelen niet op deze manier verwijderen"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: kan associatief array niet omzetten naar geïndexeerd array"
@@ -404,27 +432,32 @@ msgstr "dynamisch-laden is niet beschikbaar"
msgid "cannot open shared object %s: %s"
msgstr "kan gedeeld object %s niet openen: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "kan %s niet vinden in gedeeld object %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: is niet dynamisch geladen"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: is niet dynamisch geladen"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "Kan %s niet verwijderen: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: is een map"
@@ -439,12 +472,12 @@ msgstr "%s: is geen normaal bestand"
msgid "%s: file is too large"
msgstr "%s: bestand is te groot"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: kan binair bestand niet uitvoeren"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "Kan %s niet uitvoeren: %s"
@@ -468,15 +501,16 @@ msgstr "Er zijn nog gepauzeerde taken.\n"
msgid "There are running jobs.\n"
msgstr "Er zijn nog draaiende taken.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "geen opdracht gevonden"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "geschiedenisaanduiding"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "Kan tijdelijk bestand '%s' niet openen: %s"
@@ -504,12 +538,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "treffers commando\n"
@@ -520,6 +554,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Shell-opdrachten die overeenkomen met '"
msgstr[1] "Shell-opdrachten die overeenkomen met '"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -555,21 +595,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "geschiedenispositie"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ongeldig tijdsstempel"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: geschiedenisexpansie is mislukt"
@@ -592,7 +632,7 @@ msgstr "%s: argumenten moeten proces-IDs of taak-IDs zijn"
msgid "Unknown error"
msgstr "Onbekende fout"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "uitdrukking werd verwacht"
@@ -601,12 +641,12 @@ msgstr "uitdrukking werd verwacht"
msgid "%s: not an indexed array"
msgstr "%s: is geen geïndexeerd array"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ongeldige aanduiding van bestandsdescriptor"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ongeldige bestandsdescriptor: %s"
@@ -636,36 +676,36 @@ msgstr "lege naam van array-variabele"
msgid "array variable support required"
msgstr "ondersteuning van arrayvariabelen is vereist"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "'%s': ontbrekend opmaakteken"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "'%c': ongeldige aanduiding van tijdsopmaak"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "'%c': ongeldig opmaakteken"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "waarschuwing: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "probleem bij ontleden van opmaak: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "ontbrekend hexadecimaal cijfer bij \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "ontbrekend Unicode-cijfer bij \\%c"
@@ -811,12 +851,12 @@ msgstr ""
"\n"
" De opdracht 'dirs' toont de huidige mappenstapel."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ongeldige aanduiding van tijdslimiet"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "leesfout: %d: %s"
@@ -827,21 +867,11 @@ msgstr ""
"kan alleen een 'return' doen uit een functie of een uit script aangeroepen "
"met 'source'"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "kan niet tegelijk een functie en een variabele verwijderen"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "Kan '%s' niet verwijderen"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "Kan '%s' niet verwijderen: %s is alleen-lezen"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: is geen array-variabele"
@@ -856,7 +886,7 @@ msgstr "%s: is geen functie"
msgid "%s: cannot export"
msgstr "Kan '%s' niet exporteren"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift-aantal"
@@ -864,7 +894,7 @@ msgstr "shift-aantal"
msgid "cannot set and unset shell options simultaneously"
msgstr "kan shell-opties niet tegelijk inschakelen en uitschakelen"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ongeldige shell-optienaam"
@@ -921,26 +951,26 @@ msgstr "%s is %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s is gehasht (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: ongeldige limietwaarde"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "'%c': ongeldige opdracht"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan de limiet niet bepalen: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limiet"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan de limiet niet wijzigen: %s"
@@ -1000,76 +1030,75 @@ msgstr "ongeldige sprong"
msgid "%s: unbound variable"
msgstr "%s: ongebonden variabele"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\awachten op invoer duurde te lang -- automatisch afgemeld\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "kan standaardinvoer niet omleiden vanaf /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: '%c': ongeldig opmaakteken"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc(): coproc [%d:%s] bestaat nog steeds"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "pijpfout"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximum 'source'-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximum functie-nestingsniveau is overschreden (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: beperkte modus: '/' in opdrachtnamen is niet toegestaan"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: opdracht niet gevonden"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ongeldige interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: kan binair bestand %s niet uitvoeren"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "'%s' is een speciale ingebouwde shell-functie"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "kan bestandsdescriptor %d niet dupliceren naar bestandsdescriptor %d"
@@ -1091,65 +1120,69 @@ msgid "attempted assignment to non-variable"
msgstr "poging tot toewijzing aan een niet-variabele"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "syntaxfout in expressie"
+msgstr "syntaxfout in toewijzing aan variabele"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "deling door nul"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "**interne fout**: onjuist symbool in toewijzingsexpressie"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "':' werd verwacht voor een voorwaardelijke expressie"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponent is kleiner dan 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "naam verwacht na pre-increment of pre-decrement"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "ontbrekend ')'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntaxfout: operator verwacht"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaxfout: ongeldige rekenkundige operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (het onjuiste symbool is \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "ongeldige rekenkundige basis"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: ongeldig regelaantal"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "waarde is te groot voor basis"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: expressiefout\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getwd(): kan geen geen toegang verkrijgen tot bovenliggende mappen"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "kan 'nodelay'-modus niet uitschakelen voor bestandsdescriptor %d"
@@ -1167,164 +1200,173 @@ msgid "save_bash_input: buffer already exists for new fd %d"
msgstr ""
"check_bash_input(): buffer bestaat al voor nieuwe bestandsdescriptor %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline(): procesgroep van pijp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "afgesplitst PID %d hoort bij draaiende taak %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "verwijderen van gepauzeerde taak %d met procesgroep %ld..."
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process(): proces %5ld (%s) in de pijplijn"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid(): PID %ld bestaat niet"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signaal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Klaar"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Gepauzeerd"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Gepauzeerd(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Wordt uitgevoerd"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Klaar(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Exit %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Onbekende afsluitwaarde"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(geheugendump gemaakt) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (werkmap: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "instellen van procesgroep %2$ld van dochter %1$ld"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for(): proces %ld is nergens geregistreerd"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job(): taak %d is gepauzeerd"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: taak bestaat niet"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: taak is afgesloten"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: taak %d draait al op de achtergrond"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"waitchld(): WNOHANG wordt ingeschakeld om een onbegrensde blokkering te "
"vermijden"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: regel %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (geheugendump gemaakt)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(werkmap is nu: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp() is mislukt"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: lijnprotocol"
+msgstr "initialize_job_control: geen taakbesturing in de achtergrond"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: lijnprotocol"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid()"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "kan procesgroep (%d) van terminal niet instellen"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "er is geen taakbesturing in deze shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc(): controletest is mislukt: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1333,39 +1375,49 @@ msgstr ""
"\r\n"
"malloc(): %s:%d: controletest is mislukt\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "onbekend"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc(): een pointer op de lijst van vrije blokken is overschreven"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free(): aangeroepen met als argument een blok dat al vrijgegeven is"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free(): aangeroepen met als argument een ongebruikt blok"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free(): onderloop: 'mh_nbytes' valt buiten bereik"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free(): blokgroottes van begin en eind zijn verschillend"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc(): aangeroepen met als argument een ongebruikt blok"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc(): onderloop: 'mh_nbytes' valt buiten bereik"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc(): blokgroottes van begin en eind zijn verschillend"
@@ -1407,22 +1459,22 @@ msgstr "%s: ongeldige aanduiding van netwerkpad"
msgid "network operations not supported"
msgstr "netwerkoperaties worden niet ondersteund"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale(): LC_ALL: kan niet van taalregio veranderen (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale(): %s: kan niet van taalregio veranderen (%s): %s"
@@ -1462,15 +1514,15 @@ msgstr "make_here_document(): ongeldig instructietype %d"
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
msgstr ""
-"regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte '%"
-"s')"
+"regel %d van \"hier\"-document eindigt met einde van bestand (verwachtte "
+"'%s')"
#: make_cmd.c:756
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection(): omleidingsinstructie '%d' valt buiten bereik"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1479,104 +1531,104 @@ msgstr ""
"shell_getc(): lengte van invoerregel (%zu) overschrijdt SIZE_MAX (%lu): "
"regel is afgekapt"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maximum aantal \"hier\"-documenten is overschreden"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende '%c'"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "onverwacht bestandseinde tijdens zoeken naar ']]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaxfout in conditionele expressie: onverwacht symbool '%s'"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntaxfout in conditionele expressie"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "onverwacht symbool '%s'; ')' werd verwacht"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "')' werd verwacht"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "onverwacht argument '%s' bij eenzijdige conditionele operator"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "onverwacht argument bij eenzijdige conditionele operator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr ""
"onverwacht symbool '%s'; tweezijdige conditionele operator werd verwacht"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "tweezijdige conditionele operator werd verwacht"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "onverwacht argument '%s' bij tweezijdige conditionele operator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "onverwacht argument bij tweezijdige conditionele operator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "onverwacht symbool '%c' in conditionele opdracht"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "onverwacht symbool '%s' in conditionele opdracht"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "onverwacht symbool %d in conditionele opdracht"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaxfout nabij onverwacht symbool '%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaxfout nabij '%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntaxfout: onverwacht bestandseinde"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntaxfout"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Gebruik \"%s\" om de shell te verlaten.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "onverwacht bestandseinde tijdens zoeken naar bijpassende ')'"
@@ -1621,89 +1673,89 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf(): '%c': ongeldig opmaakteken"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "bestandsdescriptor valt buiten bereik"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: omleiding is niet eenduidig"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: kan bestaand bestand niet overschrijven"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: beperkte modus: omleiden van uitvoer is niet toegestaan"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "kan geen tijdelijk bestand maken voor \"hier\"-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: kan bestandsdescriptor niet toewijzen aan variabele"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port is niet mogelijk zonder netwerk"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "omleidingsfout: kan bestandsdescriptor niet dupliceren"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "Kan /tmp niet vinden; maak deze aan!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp dient een geldige mapnaam te zijn"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "pretty-printing-modus wordt genegeerd in interactieve shells"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ongeldige optie"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "kan UID niet op %d instellen; effectieve UID is %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "kan GID niet op %d instellen; effectieve GID is %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "kan debugger niet starten; debugging-modus is uitgeschakeld"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: is een map"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ik heb geen naam!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versie %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1712,318 +1764,314 @@ msgstr ""
"Gebruik: %s [opties]\n"
" %s [opties] scriptbestand...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Lange opties:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Korte opties:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s, of -o optie (veranderbaar via 'set')\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Gebruik de opdracht 'bashbug' om fouten in bash te rapporteren.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Webpagina van 'bash': <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Algemene hulp bij gebruik van GNU-software: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask(): %d: ongeldige operatie"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Niet-bestaand signaal"
# Vroeger ging dit over het afsluiten van een modemverbinding,
# tegenwoordig over het afsluiten van een pseudoterminal.
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Opgehangen"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Onderbroken"
# Verleden tijd, "Afgesloten", net als de andere actiesignaalnamen.
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Afgesloten"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Ongeldige instructie"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Traceer/breekpunt-instructie"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT-instructie"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT-instructie"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Drijvendekomma-berekeningsfout"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Geëlimineerd"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Busfout"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmentatiefout"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Onjuiste systeemaanroep"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Gebroken pijp"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Wekker"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Beëindigd"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Urgente in-/uitvoertoestand"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Gepauzeerd (signaal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Doorgaan"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Dochter is geëlimineerd of gestopt"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Gepauzeerd (terminalinvoer)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Gepauzeerd (terminaluitvoer)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O is mogelijk"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-limiet"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Bestandslimiet"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtueel)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profiel)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Venster is veranderd"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Recordvergrendeling"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Gebruikerssignaal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Gebruikerssignaal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT-invoergegevens staan te wachten"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "stroomstoring dreigt"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "systeemcrash dreigt"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "proces naar andere processor verplaatsen"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programmeerfout"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-monitormodus is gegeven"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-monitormodus is herroepen"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-geluidssequentie is afgespeeld"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Verzoek om informatie"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Onbekend signaalnummer"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Onbekend signaal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "ongeldige vervanging: geen sluit-'%s' in %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: kan geen lijst toewijzen aan een array-element"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "kan geen pijp maken voor procesvervanging"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "kan geen dochterproces maken voor procesvervanging"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "kan pijp genaamd %s niet openen om te lezen"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "kan pijp genaamd %s niet openen om te schrijven"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "kan pijp genaamd %s niet dupliceren als bestandsdescriptor %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "opdrachtsubstitutie: null-byte in invoer is genegeerd"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "kan geen pijp maken voor opdrachtvervanging"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "kan geen dochterproces maken voor opdrachtvervanging"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute(): kan pijp niet dupliceren als bestandsdescriptor 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ongeldige variabelenaam voor naamsverwijzing"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: ongeldige indirecte expansie"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: ongeldige variabelenaam"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: lege parameter, of niet ingesteld"
+msgstr "%s: parameter is niet ingesteld"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: lege parameter, of niet ingesteld"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: resultaat van deeltekenreeks is kleiner dan nul"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: ongeldige vervanging"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: kan niet op deze manier toewijzen"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2031,12 +2079,12 @@ msgstr ""
"toekomstige versies van de shell zullen dit als een rekenkundige vervanging "
"evalueren"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "ongeldige vervanging: geen afsluitende '`' in %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "geen overeenkomst: %s"
@@ -2059,35 +2107,40 @@ msgstr "')' werd verwacht"
msgid "`)' expected, found %s"
msgstr "')' werd verwacht; %s gevonden"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "eenzijdige operator werd verwacht, %s gevonden"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "tweezijdige operator werd verwacht, %s gevonden"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "eenzijdige operator werd verwacht, %s gevonden"
+
+#: test.c:881
msgid "missing `]'"
msgstr "ontbrekende ']'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntaxfout: onverwachte ';'"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "ongeldig signaalnummer"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: maximum 'eval'-nestingsniveau is overschreden (%d)"
+msgstr "trap handler: maximum 'trap-handler'-niveau is overschreden (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2095,88 +2148,88 @@ msgstr ""
"run_pending_traps: signaalverwerker is SIG_DFL, herzenden van %d (%s) aan "
"mezelf..."
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler(): ongeldig signaal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fout tijdens importeren van functiedefinitie voor '%s'"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell-niveau is te hoog (%d); teruggezet op 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
"make_local_variable(): er is geen functiecontext in huidige geldigheidsbereik"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: aan variabele mag geen waarde toegewezen worden"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: toekenning van geheel getal aan naamsverwijzing"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
"all_local_variables(): er is geen functiecontext in huidige geldigheidsbereik"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "*** %s heeft lege export-tekenreeks"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "*** ongeldig teken '%d' in export-tekenreeks voor %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "*** geen '=' in export-tekenreeks voor %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context(): er is geen 'global_variables'-context"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: Kan %s niet openen als BESTAND"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: ongeldige waarde %s voor 'trace'-bestandsdescriptor"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: compatibiliteitswaarde valt buiten bereik"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2016 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2268,11 +2321,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] OPDRACHT [ARGUMENT...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [NAAM[=WAARDE] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] NAAM[=WAARDE]..."
#: builtins.c:82
@@ -2296,11 +2351,13 @@ msgid "eval [arg ...]"
msgstr "eval [ARGUMENT...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts OPTIETEKENREEKS NAAM [ARGUMENT]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a NAAM] [OPDRACHT [ARGUMENT...]] [OMLEIDING...]"
#: builtins.c:100
@@ -2433,8 +2490,8 @@ msgstr "umask [-p] [-S] [MODUS]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [ID ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [ID ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2528,26 +2585,26 @@ msgstr "printf [-v VARIABELE] OPMAAK [ARGUMENTEN]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-DE] [-o OPTIE] [-A ACTIE] [-C OPDRACHT]\n"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPTIE] [-A ACTIE] [-C OPDRACHT]\n"
" [-F FUNCTIE] [-G PATROON] [-P PREFIX] [-S SUFFIX]\n"
" [-W WOORDENLIJST] [-X FILTERPATROON] [NAAM...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o OPTIE] [-DE] [NAAM...]"
+msgstr "compopt [-o|+o OPTIE] [-DEI] [NAAM...]"
#: builtins.c:242
msgid ""
@@ -2559,13 +2616,13 @@ msgstr ""
"[ARRAY]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t] [-u BESTANDSDESCRIPTOR]\n"
-" [-C FUNCTIE] [-c HOEVEELHEID] [ARRAY]"
+"readarray [-d SCHEIDINGSTEKEN] [-n AANTAL] [-O BEGIN] [-s AANTAL] [-t]\n"
+" [-u BESTANDSDESCRIPTOR] [-C FUNCTIE] [-c HOEVEELHEID] "
+"[ARRAY]"
#: builtins.c:256
msgid ""
@@ -2731,7 +2788,6 @@ msgstr ""
" De afsluitwaarde is 0, tenzij N kleiner dan 1 is."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2966,6 +3022,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3011,12 +3069,13 @@ msgstr ""
" -A van gegeven variabelen associatieve arrays maken (indien "
"mogelijk)\n"
" -i aan gegeven variabelen de 'geheel getal'-eigenschap toekennen\n"
-" -l gegeven variabelen bij toekenning omzetten naar kleine letters\n"
+" -l waarde van variabelen bij toekenning omzetten naar kleine "
+"letters\n"
" -n de gegeven variabele een verwijzing maken naar de variabele die\n"
" gegeven is als waarde\n"
" -r de gegeven variabelen alleen-lezen maken\n"
" -t aan gegeven variabelen de 'trace'-eigenschap toekennen\n"
-" -u gegeven variabelen bij toekenning omzetten naar hoofdletters\n"
+" -u waarde van variabelen bij toekenning omzetten naar hoofdletters\n"
" -x de gegeven variabelen exporteren\n"
"\n"
" Een '+' in plaats van een '-' voor de letter schakelt de betreffende\n"
@@ -3032,7 +3091,7 @@ msgstr ""
"een\n"
" toekenningsfout optrad."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3042,7 +3101,7 @@ msgstr ""
"\n"
" Een synoniem van 'declare'. Zie 'help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3068,8 +3127,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:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3133,10 +3191,14 @@ msgstr ""
" \\\\ een backslash (\\)\n"
" \\0NNN het teken met ASCII-code NNN (octaal, 1 tot 3 cijfers)\n"
" \\xHH het teken met code HH (hexadecimaal, 1 of 2 cijfers)\n"
+" \\uHHHH het Unicode-teken met code HHHH\n"
+" (hexadecimaal, 1 tot 4 cijfers)\n"
+" \\UHHHHHHHH het Unicode-teken met code HHHHHHHH\n"
+" (hexadecimaal, 1 tot 8 cijfers)\n"
"\n"
" De afsluitwaarde is 0, tenzij een schrijffout optrad."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3155,7 +3217,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een schrijffout optrad."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3211,7 +3273,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij NAAM geen ingebouwde shell-opdracht is of\n"
"  er een fout optreedt."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3232,7 +3294,8 @@ msgstr ""
"opdracht\n"
" leeg is."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3265,8 +3328,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3308,7 +3371,7 @@ msgstr ""
" Normaliter ontleedt 'getopts' de positionele parameters: $0...$9.\n"
" Maar als er argumenten gegeven worden, dan worden deze ontleed."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3349,7 +3412,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij OPDRACHT niet gevonden wordt of er een\n"
" omleidingsfout optreedt."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3361,7 +3424,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3374,7 +3437,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3429,7 +3492,7 @@ msgstr ""
" De afsluitwaarde die van de uitgevoerde opdracht, of 0, of niet-nul als\n"
" er een fout optreedt."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3452,7 +3515,7 @@ msgstr ""
"er\n"
" een fout optreedt."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3477,7 +3540,7 @@ msgstr ""
"fout\n"
" optreedt."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3519,8 +3582,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij NAAM niet gevonden wordt of een ongeldige\n"
" optie gegeven werd."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3557,8 +3619,7 @@ msgstr ""
"ongeldige\n"
" optie gegeven werd."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3601,7 +3662,9 @@ msgstr ""
" Opties:\n"
" -c huidige geschiedenis wissen: alle uitgevoerde opdrachten "
"vergeten\n"
-" -d POSITIE het geschiedenisitem op deze positie verwijderen\n"
+" -d POSITIE het geschiedenisitem op deze positie verwijderen; een\n"
+" negatieve POSITIE telt terug vanaf het einde van de "
+"lijst\n"
"\n"
" -a huidige geschiedenis aan eind van geschiedenisbestand toevoegen\n"
" -n alle nog niet gelezen regels uit het geschiedenisbestand lezen\n"
@@ -3629,7 +3692,7 @@ msgstr ""
"een\n"
" fout optrad."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3675,7 +3738,7 @@ msgstr ""
"een\n"
" fout optrad. Met optie '-x' is de afsluitwaarde die van OPDRACHT."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3707,7 +3770,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie of TAAKAANDUIDING\n"
" gegeven werd."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3754,7 +3817,7 @@ msgstr ""
"een\n"
" fout optrad."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3843,8 +3906,7 @@ msgstr ""
" Als het laatste ARGUMENT evalueert tot 0, dan is de afsluitwaarde van\n"
" 'let' 1; anders 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3914,8 +3976,7 @@ msgstr ""
" van het genoemde array, beginnend bij index nul\n"
" -d TEKEN doorgaan met lezen tot TEKEN gelezen wordt (i.p.v. LF-"
"teken)\n"
-" -e in een interactieve shell 'readline' gebruiken om de regel\n"
-" in te lezen\n"
+" -e 'readline' gebruiken om de regel in te lezen\n"
" -i TEKST door 'readline' te gebruiken begintekst\n"
" -n AANTAL stoppen na maximaal dit aantal tekens gelezen te hebben, "
"of\n"
@@ -3946,7 +4007,7 @@ msgstr ""
" de tijdslimiet overschreden werd, er een toekenningsfout optrad, of een\n"
" ongeldige bestandsdescriptor als argument van '-u' gegeven werd."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3967,7 +4028,7 @@ msgstr ""
" uitvoeren is."
# Voor de duidelijkheid is de tekstvolgorde veranderd.
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4153,7 +4214,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4191,7 +4252,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of een\n"
" NAAM alleen-lezen is."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4225,7 +4286,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4263,7 +4324,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie of NAAM gegeven werd."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4280,7 +4341,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 tenzij N negatief is of groter dan $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4305,7 +4366,7 @@ msgstr ""
"gegeven\n"
" bestand, of 1 als dit bestand niet gelezen kan worden."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4331,7 +4392,7 @@ msgstr ""
"fout\n"
" optreedt."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4481,7 +4542,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4493,7 +4554,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4512,7 +4573,7 @@ msgstr ""
"\n"
" De afsluitwaarde is altijd 0."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4600,7 +4661,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie of SIGNAALAANDUIDING\n"
" gegeven werd."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4653,7 +4714,8 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 als elke NAAM gevonden werd, anders 1."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4684,6 +4746,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4751,7 +4814,7 @@ msgstr ""
"een\n"
" fout optrad."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4787,7 +4850,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij MODUS ongeldig is of een ongeldige optie\n"
" gegeven werd."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4799,15 +4862,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Op taakafsluiting wachten en de afsluitwaarde rapporteren.\n"
"\n"
@@ -4823,11 +4896,15 @@ msgstr ""
" Als optie '-n' gegeven is, dan wordt gewacht op de eerstvolgende "
"voltooiing\n"
" van een taak en wordt diens afsluitwaarde geretourneerd.\n"
+" \n"
+" Als optie '-f' gegeven is, en taakbesturing is ingeschakeld, dan wordt\n"
+" gewacht tot de taak met de gegeven ID beëindigd is, in plaats van te\n"
+" wachten op een toestandswijziging.\n"
"\n"
" De afsluitwaarde is die van de laatste ID, 1 als ID ongeldig is,\n"
" of 2 als een ongeldige optie gegeven werd."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4851,7 +4928,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:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4872,7 +4949,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4899,7 +4976,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4936,7 +5013,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4963,7 +5040,7 @@ msgstr ""
" overdraagbare standaardopmaak.\n"
" De afsluitwaarde is die van de PIJPLIJN."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4981,7 +5058,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5016,7 +5093,7 @@ msgstr ""
"uitgevoerde\n"
" deelopdracht, of nul als geen enkele 'if' of 'elif' nul opleverde."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5033,7 +5110,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5050,7 +5127,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5071,7 +5148,7 @@ msgstr ""
"\n"
" De afsluitwaarde van coproc is 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5093,7 +5170,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0, tenzij NAAM onveranderbaar is."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5110,7 +5187,7 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de laatst uitgevoerde opdracht."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5134,12 +5211,13 @@ msgstr ""
"\n"
" De afsluitwaarde is die van de hervatte taak."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5151,7 +5229,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 1 als de EXPRESSIE tot 0 evalueert; anders 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5206,7 +5284,7 @@ msgstr ""
"\n"
" De afsluitwaarde is 0 of 1, afhankelijk van EXPRESSIE."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5320,7 +5398,7 @@ msgstr ""
"het\n"
" geschiedeniscommentaarteken, gewoonlijk '#'\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5373,7 +5451,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
" mapwijziging mislukte."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5422,7 +5500,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldig argument gegeven werd of de\n"
" mapwijziging mislukte."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5473,8 +5551,7 @@ msgstr ""
"een\n"
" fout optrad."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5495,11 +5572,10 @@ msgid ""
msgstr ""
"Shell-opties in- of uitschakelen.\n"
"\n"
-" Stelt de waarde in elke gegeven OPTIENAAM -- van een shell-optie die\n"
-" bepaald shell-gedrag beïnvloedt. Zonder opties wordt een lijst van "
-"alle\n"
-" instelbare opties getoond, met bij elke optie de vermelding of deze al\n"
-" dan niet ingeschakeld is.\n"
+" Stelt de waarde in van elke gegeven OPTIENAAM -- van een shell-optie\n"
+" die bepaald shell-gedrag beïnvloedt. Zonder opties wordt elke gegeven\n"
+" OPTIENAAM getoond, of alle shell-opties als geen OPTIENAAM gegeven is,\n"
+" met bij elke optie de vermelding of deze al dan niet ingeschakeld is.\n"
"\n"
" Opties:\n"
" -o de verzameling mogelijke OPTIENAMEN naar diegene die "
@@ -5516,7 +5592,7 @@ msgstr ""
" een ongeldige optienaam gegeven werd, en de afsluitwaarde is 2 als een\n"
" ongeldige optie gegeven werd."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5533,8 +5609,8 @@ 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"
@@ -5586,7 +5662,7 @@ msgstr ""
"een\n"
" schrijf- of toekenningsfout optrad."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5609,7 +5685,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5632,16 +5708,18 @@ msgstr ""
" opdrachten die geen specifieke eigen completering hebben\n"
" -E de gegeven completeringen en acties als standaard nemen voor\n"
" lege opdrachten -- de completering van een lege regel\n"
+" -I de gegeven completeringen en acties als standaard nemen voor\n"
+" een initieel woord (gewoonlijk een opdracht)\n"
"\n"
" Als completering geprobeerd wordt, dan worden de acties toegepast in\n"
" de volgorde van de bovenstaande hoofdletteropties. Optie '-D' gaat\n"
-" voor optie '-E'.\n"
+" voor optie '-E', en beide gaan voor '-I'\n"
"\n"
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of er "
"een\n"
" fout optrad."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5663,8 +5741,7 @@ msgstr ""
"een\n"
" fout optrad."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5707,6 +5784,7 @@ msgstr ""
" -o OPTIE deze completeringsoptie inschakelen voor elke gegeven NAAM\n"
" -D opties wijzigen voor de standaardcompletering\n"
" -E opties wijzigen voor de completering van een lege opdracht\n"
+" -I opties wijzigen voor de completering van initieel woord\n"
"\n"
" Het gebruik van '+o' i.p.v. '-o' schakelt de betreffende optie _uit_.\n"
"\n"
@@ -5721,7 +5799,7 @@ msgstr ""
" De afsluitwaarde is 0, tenzij een ongeldige optie gegeven werd of voor\n"
" NAAM geen completeringsvoorschrift gedefinieerd is."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5796,7 +5874,7 @@ msgstr ""
"of\n"
" een ongeldige optie gegeven werd."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5806,6 +5884,21 @@ msgstr ""
"\n"
" Een synoniem voor 'mapfile'."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "De context geven van de huidige functie-aanroep.\n"
+#~ "\n"
+#~ " Zonder EXPR, resulteert "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process(): proces %5ld (%s) in de pijplijn"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Onbekend signaalnummer"
+
# Dit is een commandonaam.
#~ msgid "true"
#~ msgstr "true"
diff --git a/po/pl.gmo b/po/pl.gmo
index ebbd8756..be60e28c 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index 924bb10c..af6bfbd5 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -1,99 +1,105 @@
# Polish translation of bash
-# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Andrzej M. Krzysztofowicz <ankry@mif.pg.gda.pl> 2006,2007.
-# Jakub Bogusz <qboosh@pld-linux.org> 2010-2018.
+# Jakub Bogusz <qboosh@pld-linux.org> 2010-2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-11-28 17:15+0100\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-08 21:45+0100\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "nieprawidłowy indeks tablicy"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: usuwanie atrybutu nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nie można przekształcić tablicy indeksowanej na asocjacyjną"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: błędny klucz tablicy asocjacyjnej"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nie można przypisać do nienumerycznego indeksu"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nie można utworzyć: %s"
# ???
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: pierwszym drukowalnym znakiem nie jest `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "brak zamykajÄ…cego `%c' w %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: brak separujÄ…cego dwukropka"
-#: braces.c:331
+# ???
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': nie można usunąć dowiązania"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "rozwijanie nawiasów: nie można przydzielić pamięci dla %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
"rozwijanie nawiasów: nie udało się przydzielić pamięci dla elementów w "
"liczbie %u"
-#: braces.c:474
+#: braces.c:451
#, 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:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': błędna nazwa aliasu"
@@ -113,23 +119,23 @@ msgstr "`%s': nieprawidłowa nazwa mapy klawiszy"
msgid "%s: cannot read: %s"
msgstr "%s: nie można odczytać: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': nie znana nazwa funkcji"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s może być wywołany przez "
# ???
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': nie można usunąć dowiązania"
@@ -143,28 +149,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "ma sens tylko w pętli `for', `while' lub `until'"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Zwraca kontekst wywołania bieżącego podprogramu.\n"
+"Zwrócenie kontekstu wywołania bieżącej procedury.\n"
+" \n"
+" Bez WYRAŻENIA zwracane jest \"$linia $plik\". Z WYRAŻENIEM zwracane "
+"jest\n"
+" \"$linia $procedura $plik\"; dodatkowe informacje służą do "
+"udostępnienia\n"
+" śladu stosu.\n"
" \n"
-" Bez WYRAŻENIA zwraca "
+" Wartość WYRAŻENIA określa o ile ramek wywołań względem bieżącej ramki\n"
+" należy się cofnąć; numer najwyższej ramki to 0.\n"
+" \n"
+" Stan wyjściowy:\n"
+" Polecenie zwraca 0, chyba że powłoka nie wykonuje funkcji lub WYRAŻENIE\n"
+" jest nieprawidłowe."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "Nie ustawiono HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "za dużo argumentów"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "zerowy katalog"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "Nie ustawiono OLDPWD"
@@ -183,7 +206,7 @@ msgstr "uwaga: "
msgid "%s: usage: "
msgstr "%s: składnia: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: opcja wymaga argumentu"
@@ -198,7 +221,7 @@ msgstr "%s: wymagany argument numeryczny"
msgid "%s: not found"
msgstr "%s: nie znaleziono"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: nieprawidłowa opcja"
@@ -208,7 +231,7 @@ msgstr "%s: nieprawidłowa opcja"
msgid "%s: invalid option name"
msgstr "%s: nieprawidłowa nazwa opcji"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': nieprawidłowy identyfikator"
@@ -221,7 +244,7 @@ msgstr "błędna liczba ósemkowa"
msgid "invalid hex number"
msgstr "błędna liczba szesnastkowa"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "nieprawidłowa liczba"
@@ -297,73 +320,83 @@ msgstr "błąd podczas ustawiania atrybutów terminala: %s"
msgid "error getting terminal attributes: %s"
msgstr "błąd podczas pobierania atrybutów terminala: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: niejednoznaczne określenie zadania"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "pomoc nie jest dostępna w tej wersji"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nie można anulować definicji"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nieprawidłowa nazwa akcji"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: brak definicji dla uzupełnienia"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "uwaga: opcja -F może działać inaczej niż oczekiwano"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "uwaga: opcja -C może działać inaczej niż oczekiwano"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "aktualnie nie jest wykonywana funkcja dopełniania"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "można używać tylko w funkcji"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: zmienna referencyjna nie może być tablicą"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: zmienna referencyjna nie może wskazywać na siebie"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: cykliczne odwołanie do nazwy"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': błędna nazwa zmiennej przy odwołaniu do nazwy"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "nie można używać `-f' do tworzenia funkcji"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcja tylko do odczytu"
@@ -378,7 +411,7 @@ msgstr "%s: przypisanie złożonej tablicy z cytowaniem jest przestarzałe"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nie można w ten sposób unicestwić zmiennej tablicowej"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nie można przekształcić tablicy asocjacyjnej na indeksowaną"
@@ -392,27 +425,32 @@ msgstr "ładowanie dynamiczne nie jest dostępne"
msgid "cannot open shared object %s: %s"
msgstr "nie można otworzyć obiektu współdzielonego %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: nie jest Å‚adowany dynamicznie"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nie jest Å‚adowany dynamicznie"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nie można usunąć: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: jest katalogiem"
@@ -427,12 +465,12 @@ msgstr "%s: nie jest zwykłym plikiem"
msgid "%s: file is too large"
msgstr "%s: plik jest za duży"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nie można uruchomić pliku binarnego"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nie można uruchomić: %s"
@@ -456,15 +494,16 @@ msgstr "IstniejÄ… zatrzymane zadania.\n"
msgid "There are running jobs.\n"
msgstr "Istnieją działające zadania.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "nie znaleziono polecenia"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "specyfikacja historii"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: nie udało się otworzyć pliku tymczasowego: %s"
@@ -492,12 +531,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "trafienia\tpolecenie\n"
@@ -509,6 +548,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -544,21 +589,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "pozycja historii"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: nieprawidłowy znacznik czasu"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: rozwinięcie wg historii nie powiodło się"
@@ -581,7 +626,7 @@ msgstr "%s: argumentami muszą być numery procesów lub zadań"
msgid "Unknown error"
msgstr "Nieznany błąd"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "spodziewano się wyrażenia"
@@ -590,12 +635,12 @@ msgstr "spodziewano się wyrażenia"
msgid "%s: not an indexed array"
msgstr "%s: nie jest tablicÄ… indeksowanÄ…"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: nieprawidłowo określony deskryptor pliku"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: nieprawidłowy deskryptor pliku: %s"
@@ -623,36 +668,36 @@ msgstr "pusta nazwa zmiennej tablicowej"
msgid "array variable support required"
msgstr "wymagana obsługa zmiennych tablicowych"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': brak znaku formatujÄ…cego"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': błędne określenie formatu czasu"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': nieprawidłowy znak formatujący"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "uwaga: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problem z analizÄ… formatu: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "brak cyfry szesnastkowej dla \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "brak cyfry unikodowej dla \\%c"
@@ -804,12 +849,12 @@ msgstr ""
" \n"
" Zawartość stosu katalogów można zobaczyć za pomocą polecenia `dirs'."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: nieprawidłowo określony limit czasu"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "błąd odczytu: %d: %s"
@@ -818,21 +863,11 @@ msgstr "błąd odczytu: %d: %s"
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:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "nie można jednocześnie anulować definicji funkcji i zmiennej"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nie można anulować definicji"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nie można anulować definicji: %s jest tylko do odczytu"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nie jest zmiennÄ… tablicowÄ…"
@@ -847,7 +882,7 @@ msgstr "%s: nie jest funkcjÄ…"
msgid "%s: cannot export"
msgstr "%s: nie można wyeksportować"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "licznik przesunięcia"
@@ -855,7 +890,7 @@ msgstr "licznik przesunięcia"
msgid "cannot set and unset shell options simultaneously"
msgstr "nie można opcji powłoki jednocześnie ustawić i unieważnić"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nieprawidłowa nazwa opcji powłoki"
@@ -912,26 +947,26 @@ msgstr "%s jest %s\n"
msgid "%s is hashed (%s)\n"
msgstr "ścieżka do %s jest zapamiętana (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: nieprawidłowy argument stanowiący ograniczenie"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': złe polecenie"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nie można odczytać ograniczenia: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ograniczenie"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nie można zmienić ograniczenia: %s"
@@ -991,76 +1026,75 @@ msgstr "zły skok"
msgid "%s: unbound variable"
msgstr "%s: nieustawiona zmienna"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aprzekroczony czas oczekiwania na dane wejściowe: auto-wylogowanie\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': nieprawidłowy znak formatujący"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: koproces [%d:%s] nadal istnieje"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "błąd potoku"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: przekroczono maksymalny poziom zagnieżdżenia polecenia eval (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia polecenia source (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: przekroczono maksymalny poziom zagnieżdżenia funkcji (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ograniczony: nie można podawać `/' w nazwach poleceń"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: nie znaleziono polecenia"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: zły interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: nie można uruchomić pliku binarnego: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s' jest specjalnym poleceniem wewnętrznym"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nie można skopiować deskryptora pliku %d do %d"
@@ -1085,63 +1119,68 @@ msgstr "próba przypisania do nie-zmiennej"
msgid "syntax error in variable assignment"
msgstr "błąd składniowy w przypisaniu zmiennej"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "dzielenie przez 0"
# ???
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "błąd: zły prefiks operatora przypisującego"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "spodziewano się `:' w wyrażeniu warunkowym"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "wykładnik mniejszy niż 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"spodziewany identyfikator po operatorze preinkrementacji lub predekrementacji"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "brakujÄ…cy `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "błąd składni: spodziewany argument"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "błąd składni: nieprawidłowy operator arytmetyczny"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (błędny znacznik to \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "nieprawidłowa podstawa arytmetyczna"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: błędna liczba linii"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "wartość za duża na podstawę"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: błąd w wyrażeniu\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: niemożliwy dostęp do katalogów nadrzędnych"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nie można wyłączyć trybu nieblokującego dla deskryptora %d"
@@ -1156,163 +1195,173 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
# ???
-#: jobs.c:1084
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "usuwanie zatrzymanego zadania %d z grupą procesów %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: proces %5ld (%s) w potoku"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) oznaczony jako nadal żywy"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: brak takiego PID-u"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Sygnał %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Zakończono"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Zatrzymano"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Zatrzymano(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Działa"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Zakończono(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Kod wyjścia %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Stan nieznany"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(zrzut pamięci) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (katalog: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid potomka (%ld na %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Brak rekordu dla procesu %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: zadanie %d jest zatrzymane"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: brak takiego zadania"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: zadanie zostało przerwane"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: zadanie %d już pracuje w tle"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"waitchld: wyłączanie WNOHANG w celu uniknięcia nieskończonego oczekiwania"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: linia %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (zrzut pamięci)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(katalog: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp nie powiodło się"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: brak kontroli zadań w tle"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: dyscyplina linii"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nie można ustawić grupy procesów terminala (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "w tej powłoce nie ma kontroli zadań"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: założenie, że %s nie jest spełnione\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1321,40 +1370,50 @@ msgstr ""
"\r\n"
"malloc: %s:%d: spartaczone założenie\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "nieznany"
# ???
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: nieprawidłowy blok na liście wolnych bloków"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: wywołane dla bloku, który już został zwolniony"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: wywołane dla bloku, który nie został przydzielony"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: wykryto niedomiar; mh_nbytes poza zakresem"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: rozmiar początkowy i końcowy fragmentu są różne"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: wywołane dla bloku, który nie został przydzielony"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: wykryto niedomiar; mh_nbytes poza zakresem"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: rozmiar początkowy i końcowy fragmentu są różne"
@@ -1396,22 +1455,22 @@ msgstr "%s: źle określona ścieżka sieciowa"
msgid "network operations not supported"
msgstr "operacje sieciowe nie sÄ… wspierane"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nie można zmienić lokalizacji (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nie można zmienić lokalizacji (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nie można zmienić lokalizacji (%s): %s"
@@ -1458,7 +1517,7 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrukcja przekierowania `%d' poza zakresem"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1467,103 +1526,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) przekracza SIZE_MAX (%lu): linia "
"skrócona"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "przekroczono maksymalną liczbę dokumentów w miejscu"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `%c'"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "nieoczekiwany EOF podczas poszukiwania `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "błąd składni w wyrażeniu warunkowym"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "nieoczekiwany znacznik `%s', oczekiwano `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "oczekiwano `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "nieoczekiwany argument `%s' jednoargumentowego operatora warunkowego"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "nieoczekiwany argument jednoargumentowego operatora warunkowego"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "nieoczekiwany argument `%s', oczekiwano dwuarg. operatora warunkowego"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "oczekiwano dwuargumentowego operatora warunkowego"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "nieoczekiwany argument `%s' dwuargumentowego operatora warunkowego"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "nieoczekiwany argument dwuargumentowego operatora warunkowego"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "nieoczekiwany znacznik `%c' w poleceniu warunkowym"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "nieoczekiwany znacznik `%s' w poleceniu warunkowym"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "nieoczekiwany znacznik %d w poleceniu warunkowym"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "błąd składni przy nieoczekiwanym znaczniku `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "błąd składni przy `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "błąd składni: nieoczekiwany koniec pliku"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "błąd składni"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Użyj \"%s\", aby opuścić tę powłokę.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "nieoczekiwany EOF podczas poszukiwania pasujÄ…cego `)'"
@@ -1606,89 +1665,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': nieprawidłowy znak formatujący"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "deskryptor pliku poza zakresem"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: niejednoznaczne przekierowanie"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nie można nadpisać istniejącego pliku"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ograniczony: nie można przekierować wyjścia"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "nie można utworzyć pliku tymczasowego dla dokumentu miejscowego: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nie można przypisać deskryptora pliku do zmiennej"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nie sÄ… wspierane bez sieci"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "błąd przekierowania: nie można powielić deskryptora pliku"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "nie można znaleźć /tmp, proszę o utworzenie!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp musi być prawidłową nazwą katalogu"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "tryb ładnego wypisywania jest ignorowany w powłokach interaktywnych"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: nieprawidłowa opcja"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "nie można uruchomić debuggera; tryb diagnostyczny wyłączony"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: jest katalogiem"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nie mam nazwy!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, wersja %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1697,318 +1756,314 @@ msgstr ""
"Użycie:\t%s [długa opcja GNU] [opcja] ...\n"
"\t%s [długa opcja GNU] [opcja] plik-skryptu ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "DÅ‚ugie opcje GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opcje powłoki:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s lub -o opcja\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Do zgłaszania błędów należy używać polecenia `bashbug'.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "strona domowa basha: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Ogólna pomoc przy użytkowaniu oprogramowania GNU: <http://www.gnu.org/"
"gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: nieprawidłowa operacja"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Błędny sygnał"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Rozłączenie"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Przerwanie"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Wyjście"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Niedozwolona instrukcja"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Pułapka debuggera/breakpoint"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instrukcja ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Pułapka EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "BÅ‚Ä…d w obliczeniach zmiennoprzecinkowych"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Unicestwiony"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "BÅ‚Ä…d szyny"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Naruszenie ochrony pamięci"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Błędne wywołanie systemowe"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Przerwany potok"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Budzik"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Zakończony"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Nagłe żądanie we/wy"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Zatrzymany (sygnał)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Kontynuacja"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Śmierć lub zatrzymanie potomka"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Zatrzymany (wejście z tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Zatrzymany (wyjście na tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "We/wy gotowe"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Przekroczony limit procesora"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Przekroczony limit pliku"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (wirtualny)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profiler)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Okno zmienione"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Zasoby utracone"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Sygnał użytkownika 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Sygnał użytkownika 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Dane wejściowe HFT"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "Bliska awaria zasilania"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "Bliska awaria systemu"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "Przeniesienie procesu na inny procesor"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "BÅ‚Ä…d programowania"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Nadany tryb monitora HFT"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Wycofany tryb monitora HFT"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Sekwencja dźwiękowa HFT zakończona"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Żądanie informacji"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Nieznany sygnał #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Nieznany sygnał #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "złe podstawienie: brak zamykającego `%s' w %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nie można przypisać listy do elementu tablicy"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "nie można utworzyć potoku dla podstawienia procesu"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "nie można utworzyć procesu potomnego dla podstawienia procesu"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nie można otworzyć nazwanego potoku %s do odczytu"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "nie można otworzyć nazwanego potoku %s do zapisu"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "nie można powielić nazwanego potoku %s jako deskryptor %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "podstawienie polecenia: zignorowano zerowy bajt na wejściu"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "nie można utworzyć potoku dla podstawienia polecenia"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "nie można utworzyć procesu potomnego dla podstawienia polecenia"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: nie można powielić potoku jako deskryptora 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nieprawidłowa nazwa zmiennej przy odwołaniu do nazwy"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: błędne rozwinięcie niebezpośrednie"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "`%s': błędna nazwa zmiennej"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametr nieustawiony"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametr pusty lub nieustawiony"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: wyrażenie dla podłańcucha < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: złe podstawienie"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nie można przypisywać w ten sposób"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2016,12 +2071,12 @@ msgstr ""
"przyszłe wersje powłoki będą wymuszać obliczenie jako podstawienie "
"arytmetyczne"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "złe podstawienie: brak zamykającego \"`\" w %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "brak pasujÄ…cego: %s"
@@ -2044,120 +2099,126 @@ msgstr "oczekiwano `)'"
msgid "`)' expected, found %s"
msgstr "oczekiwano `)', znaleziono %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: oczekiwano operatora jednoargumentowego"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oczekiwano operatora dwuargumentowego"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oczekiwano operatora jednoargumentowego"
+
+#: test.c:881
msgid "missing `]'"
msgstr "brakujÄ…cy `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "błąd składni: oczekiwany `;'"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "nieprawidłowy numer sygnału"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "obsługa pułapki: przekroczono maksymalny poziom obsługi pułapek (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: zły sygnał %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "błąd importu definicji funkcji dla `%s'"
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: brak kontekstu funkcji w bieżącym zakresie"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nie można przypisać wartości do zmiennej"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: przypisanie wartości całkowitej przy odwołaniu do nazwy"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: brak kontekstu funkcji w bieżącym zakresie"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s ma pusty exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "nieprawidłowy znak %d w exportstr dla %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "brak `=' w exportstr dla %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: brak kontekstu global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nie można otworzyć jako PLIK"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: nieprawidłowa wartość dla deskryptora pliku do śledzenia"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: wartość zgodności poza zakresem"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2249,11 +2310,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] polecenie [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [nazwa[=wartość] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] nazwa[=wartość] ..."
#: builtins.c:82
@@ -2277,11 +2340,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts łańcuch-opcji nazwa [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a nazwa] [polecenie [argumenty ...]] [przekierowanie ...]"
#: builtins.c:100
@@ -2410,7 +2475,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [uprawnienia]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id ...]"
#: builtins.c:181
@@ -2502,9 +2568,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [argumenty]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opcja] [-A akcja] [-G wzorzec-"
@@ -2512,9 +2579,10 @@ msgstr ""
"przedrostek] [-S przyrostek] [nazwa ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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-"
"słów] [-F funkcja] [-C polecenie] [-X wzorzec-filtra] [-P przedrostek ] [-S "
@@ -2961,6 +3029,7 @@ msgstr ""
" znalezione."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2973,6 +3042,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3036,7 +3107,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Polecenie zwraca prawdę, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3046,7 +3117,7 @@ msgstr ""
" \n"
" Synonim `declare' - p. `help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3072,8 +3143,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:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3141,11 +3211,15 @@ msgstr ""
" \t\t0 do 3 cyfr ósemkowych\n"
" \\xHH\tznak ośmiobitowy o wartości HH (szesnastkowo). HH może być\n"
" \t\tjednÄ… lub dwiema cyframi szesnastkowymi\n"
+" \\uHHHH\tznak Unicode o wartości HHHH (szesnastkowo). HHHH może mieć\n"
+" \t\tod jednej do czterech cyfr szesnastkowych.\n"
+" \\UHHHHHHHH znak Unicode o wartości HHHHHHHH (szesnastkowo). HHHHHHHH\n"
+" \t\tmoże mieć od jednej do ośmiu cyfr szesnastkowych.\n"
" \n"
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że wystąpi błąd zapisu."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3167,7 +3241,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że wystąpi błąd zapisu."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3221,7 +3295,7 @@ msgstr ""
" Zwracana jest prawda, chyba że NAZWA nie jest poleceniem wbudowanym lub\n"
" wystąpi błąd."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3241,7 +3315,8 @@ msgstr ""
" Zwracany jest stan wyjściowy polecenia lub prawdę, jeśli polecenie jest\n"
" puste."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3274,8 +3349,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3327,7 +3402,7 @@ msgstr ""
"koniec\n"
" opcji lub błąd."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3368,7 +3443,7 @@ msgstr ""
"wystÄ…pi\n"
" błąd przekierowania."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3380,7 +3455,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3393,7 +3468,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3452,7 +3527,7 @@ msgstr ""
" Zwracana jest prawda lub stan wykonanego polecenia; wartość niezerowa\n"
" w przypadku błędu."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3473,7 +3548,7 @@ msgstr ""
" Stan zadania umieszczonego na pierwszym planie lub fałsz, jeśli wystąpi\n"
" błąd."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3496,7 +3571,7 @@ msgstr ""
" Zwracana jest prawda, chyba że sterowanie zadaniami nie jest włączone\n"
" lub wystąpi błąd."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3540,7 +3615,7 @@ msgstr ""
" Zwracana jest prawda, chyba że nie znaleziono NAZWY lub podano błędną\n"
" opcjÄ™."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3581,7 +3656,7 @@ msgstr ""
" Zwracana jest prawda, chyba że WZORCA nie znaleziono lub podano błędną\n"
" opcjÄ™."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3653,7 +3728,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3698,7 +3773,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:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3728,7 +3803,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub ZADANIE."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3774,7 +3849,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest sukces, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3863,7 +3938,7 @@ msgstr ""
" Jeśli wartością ostatniego argumentu jest 0, let zwraca 1;\n"
" w pozostałych przypadkach zwracane jest 0."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3963,7 +4038,7 @@ msgstr ""
" błąd przypisania zmiennej albo podano nieprawidłowy deskryptor dla\n"
" argumentu -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3984,7 +4059,7 @@ msgstr ""
" Zwracane jest N lub niepowodzenie, jeśli powłoka nie wykonuje żadnej\n"
" funkcji ani skryptu."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4161,7 +4236,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4203,7 +4278,7 @@ msgstr ""
"do\n"
" odczytu."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4238,7 +4313,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4278,7 +4353,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano nieprawidłową opcję lub NAZWĘ."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4296,7 +4371,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że N jest ujemne lub większe niż $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4321,7 +4396,7 @@ msgstr ""
"jeśli\n"
" PLIKU nie udało się odczytać."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4349,7 +4424,7 @@ msgstr ""
"wystÄ…pi\n"
" błąd."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4522,7 +4597,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4534,7 +4609,7 @@ msgstr ""
" Jest to synonim dla wbudowanego polecenia \"test\", ale wymagajÄ…cy, by\n"
" ostatnim argumentem był `]' pasujący do początkowego `['."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4554,7 +4629,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zawsze prawda."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4639,7 +4714,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędny SYGNAŠlub błędną opcję."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4697,7 +4772,8 @@ msgstr ""
"jeśli\n"
" którakolwiek nie zostanie znaleziona."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4728,6 +4804,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4796,7 +4873,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4831,7 +4908,8 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędne uprawnienia lub błędną "
"opcjÄ™."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4842,15 +4920,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Oczekiwanie na zakończenie zadania i zwrócenie stanu (kodu) wyjścia.\n"
" \n"
@@ -4873,7 +4961,7 @@ msgstr ""
" Zwracany jest stan zakończenia ID; niepowodzenie, jeśli ID jest\n"
" nieprawidłowe lub podano błędną opcję."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4902,7 +4990,7 @@ msgstr ""
"podano\n"
" nieprawidłową opcję."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4925,7 +5013,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4955,7 +5043,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4992,7 +5080,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5022,7 +5110,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Polecenie zwraca status zakończenia POTOKU poleceń."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5040,7 +5128,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5076,7 +5164,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5094,7 +5182,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5112,7 +5200,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5134,7 +5222,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Polecenie coproc zwraca status wyjścia 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5159,7 +5247,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest sukces, chyba że NAZWA jest tylko do odczytu."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5177,7 +5265,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest status zakończenia ostatniego wykonanego polecenia."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5203,12 +5291,13 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracany jest stan wznowionego zadania."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5223,7 +5312,7 @@ msgstr ""
" Zwracane jest 1, jeśli wartością WYRAŻENIA jest 0; 0 w przeciwnym "
"wypadku."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5278,7 +5367,7 @@ msgstr ""
" Stan wyjściowy:\n"
" 0 lub 1 w zależności od wartości WYRAŻENIA."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5386,7 +5475,7 @@ msgstr ""
" \t\tdecydowaniu, które polecenia powinny być zapisywane na liście\n"
" \t\thistorii.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5444,7 +5533,7 @@ msgstr ""
"katalogu\n"
" siÄ™ nie powiedzie."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5496,7 +5585,7 @@ msgstr ""
"katalogu\n"
" siÄ™ nie powiedzie."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5550,7 +5639,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5589,7 +5678,7 @@ msgstr ""
"jeśli\n"
" podano błędną opcję lub NAZWA-OPCJI jest wyłączona."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5606,8 +5695,8 @@ 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"
@@ -5661,8 +5750,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub zapis albo\n"
" przypisanie zakończy się niepowodzeniem."
-# FIXME: s/intial/initial/
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5685,7 +5773,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5718,7 +5806,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5739,7 +5827,7 @@ msgstr ""
" Stan wyjściowy:\n"
" Zwracana jest prawda, chyba że podano błędną opcję lub wystąpi błąd."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5799,7 +5887,7 @@ msgstr ""
" Zwracana jest prawda, chyba że podano błędną opcję lub NAZWA nie ma\n"
" zdefiniowanej specyfikacji dopełniania."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5875,7 +5963,7 @@ msgstr ""
"tylko\n"
" do odczytu, lub nie jest tablicÄ… indeksowanÄ…."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5884,3 +5972,18 @@ msgstr ""
"Odczyt linii z pliku do zmiennej tablicowej.\n"
" \n"
" Synonim polecenia `mapfile'."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Zwraca kontekst wywołania bieżącego podprogramu.\n"
+#~ " \n"
+#~ " Bez WYRAŻENIA zwraca "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: proces %5ld (%s) w potoku"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Nieznany sygnał #"
diff --git a/po/pt.gmo b/po/pt.gmo
index e14daa92..a66d7c7c 100644
--- a/po/pt.gmo
+++ b/po/pt.gmo
Binary files differ
diff --git a/po/pt.po b/po/pt.po
index b2002623..7868edb6 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,96 +1,101 @@
# Bash - Bourne Again Shell.
# Copyright (C) 2018 Free Software Foundation, Inc.
# This file is distributed under the same license as the Bash package.
-# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018.
+# Pedro Albuquerque <palbuquerque73@gmail.com>, 2018, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash-5.0-beta2\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-11-29 07:29+0000\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-09 07:09+0000\n"
"Last-Translator: Pedro Albuquerque <palbuquerque73@gmail.com>\n"
"Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n"
+"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: pt\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=n !=1;\n"
"X-Generator: Gtranslator 2.91.7\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "subscrito de matriz inválido"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: a remover atributo nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossível converter matriz indexada para associativa"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: chave de matriz associativa inválida"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossível atribuir a índice não numérico"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: tem de usar subscrito ao atribuir a matriz associativa"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossível criar: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: impossível encontrar mapa de teclado para o "
"comando"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: o 1º carácter não-espaço não é \"\"\""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "sem \"%c\" de fecho em %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: separador dois pontos em falta"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "\"%s\": impossível desassociar"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansão: impossível alocar memória para %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "expansão: falha ao alocar memória para %u elementos"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansão: falha ao alocar memória para \"%s\""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "\"%s\": aliás inválido"
@@ -109,22 +114,22 @@ msgstr "\"%s\": mapa de teclado inválido"
msgid "%s: cannot read: %s"
msgstr "%s: impossível ler: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "\"%s\": nome de função desconhecido"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s: não tem associação a qualquer tecla.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s pode ser chamado via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "\"%s\": impossível desassociar"
@@ -138,28 +143,44 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\""
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
-msgstr ""
-"Devolve o contexto da presente chamada a sub-rotina.\n"
+" 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"
-" Sem EXPR, devolve "
+" The value of EXPR indicates how many call frames to go back before the\n"
+" current one; the top frame is frame 0."
+msgstr ""
+"Devolver o contexto da actual chamada a sub-rotina.\n"
+" \n"
+" Sem EXPR, devolve \"$linha $nomefich\". Com EXPR, devolve\n"
+" \"$linha $sub-rotina $nomefich\"; esta informação extra pode ser usada\n"
+" para obter um rasto da pilha.\n"
+" \n"
+" O valor de EXPR indica quantas chamadas deve recuar antes da\n"
+" actual; a chamada superior é a chamada 0.\n"
+" \n"
+" Estado de saída:\n"
+" Devolve 0 a não ser que a consola não esteja a executar uma função ou "
+"EXPR\n"
+" seja inválida."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME não definida"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "demasiados argumentos"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "pasta nula"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD não definida"
@@ -178,7 +199,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opção requer um argumento"
@@ -193,7 +214,7 @@ msgstr "%s: requer um argumento numérico"
msgid "%s: not found"
msgstr "%s: não encontrado"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: opção inválida"
@@ -203,7 +224,7 @@ msgstr "%s: opção inválida"
msgid "%s: invalid option name"
msgstr "%s: nome de opção inválido"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "\"%s\": identificador inválido"
@@ -216,7 +237,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número hexadecimal inválido"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "número inválido"
@@ -292,73 +313,83 @@ msgstr "erro ao definir atributos do terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "erro ao obter atributos do terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: erro ao obter a pasta actual: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificação de tarefa ambígua"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "ajuda indisponível nesta versão"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: impossível desactivar: %s só de leitura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: impossível desactivar"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nome de acção inválido"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: sem especificação de conclusão"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "aviso: a opção -F pode não resultar como esperado"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "aviso: a opção -C pode não resultar como esperado"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "a função de conclusão não está em execução"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "só pode ser usado numa função"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: variável de referência não pode ser uma matriz"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: não são permitidas auto-referências de nameref"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: referência circular de nome"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, 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:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "impossível usar \"-f\" para fazer funções"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: função só de leitura"
@@ -373,7 +404,7 @@ msgstr "%s: atribuição de matriz composta citada obsoleta"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossível destruir variáveis de matriz assim"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossível converter matriz associativa em indexada"
@@ -387,27 +418,32 @@ msgstr "carregamento dinâmico indisponível"
msgid "cannot open shared object %s: %s"
msgstr "impossível abrir objecto partilhado %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossível encontrar %s no objecto partilhado %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: não carregada dinamicamente"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "carregamento da função %s devolve falha (%d): não carregada"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: não carregada dinamicamente"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossível eliminar: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: é uma pasta"
@@ -422,12 +458,12 @@ msgstr "%s: não é um ficheiro normal"
msgid "%s: file is too large"
msgstr "%s: ficheiro muito grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossível executar o binário"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: impossível executar: %s"
@@ -451,15 +487,16 @@ msgstr "Há tarefas interrompidas.\n"
msgid "There are running jobs.\n"
msgstr "Há tarefas em curso.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "sem comando encontrado"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "especificação de histórico"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: impossível abrir ficheiro temporário: %s"
@@ -487,12 +524,12 @@ msgstr "%s: a opção requer um argumento -- %c\n"
msgid "hashing disabled"
msgstr "hashing desactivado"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: tabela de hash vazia\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "sucessos\tcomando\n"
@@ -503,6 +540,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Comandos de consola correspondentes à palavra-chave \""
msgstr[1] "Comandos de consola correspondentes a palavras-chave \""
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -536,21 +579,21 @@ msgstr ""
"Um asterisco (*) junto a um nome significa que o comando está inactivo.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "impossível usar mais de um -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posição do histórico"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: datação inválida"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: falha na expansão do histórico"
@@ -573,7 +616,7 @@ msgstr "%s: os argumentos têm de ser IDs de processos ou tarefas"
msgid "Unknown error"
msgstr "Erro desconhecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "esperada expressão"
@@ -582,12 +625,12 @@ msgstr "esperada expressão"
msgid "%s: not an indexed array"
msgstr "%s: não é uma matriz indexada"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificação de descritor de ficheiro inválida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de ficheiro inválido: %s"
@@ -615,36 +658,36 @@ msgstr "nome de variável de matriz vazio"
msgid "array variable support required"
msgstr "requerido suporte a variáveis de matriz"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "%s: carácter de formato em falta"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "\"%c\": especificação de formato de hora inválida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "\"%c\": carácter de formato inválido"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problema de análise de formato: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "dígito hex em falta para \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "dígito unicode em falta para \\%c"
@@ -796,12 +839,12 @@ msgstr ""
" \n"
" O \"dirs\" interno mostra a pilha de pastas."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificação de inacção inválida"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "erro de leitura: %d: %s"
@@ -810,21 +853,11 @@ msgstr "erro de leitura: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "só pode usar \"return\" a partir de uma função ou script baseado"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "impossível desactivar simultaneamente uma função e uma variável"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: impossível desactivar"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: impossível desactivar: %s só de leitura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: não é variável de matriz"
@@ -839,7 +872,7 @@ msgstr "%s: não é função"
msgid "%s: cannot export"
msgstr "%s: impossível exportar"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "total de trocas"
@@ -847,7 +880,7 @@ msgstr "total de trocas"
msgid "cannot set and unset shell options simultaneously"
msgstr "impossível definir e desactivar opções da consola em simultâneo"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opção da consola inválido"
@@ -904,26 +937,26 @@ msgstr "%s é %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s tem hash (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: argumento de limite inválido"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "\"%c\": comando errado"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossível obter limite: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossível modificar limite: %s"
@@ -983,76 +1016,75 @@ msgstr "salto errado"
msgid "%s: unbound variable"
msgstr "%s: variável desassociada"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aDemasiada inacção à espera de entrada: sessão terminada\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossível redireccionar entrada padrão de /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "FORMATOHORA: \"%c\": carácter de formato inválido"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] ainda existe"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "erro de pipe"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: nível máximo de aninhamento de eval excedido (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: nível máximo de aninhamento de fonte excedido (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: nível máximo de aninhamento de função excedido (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpretador errado"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossível executar binário: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "%s: é uma opção interna especial"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossível duplicar fd %d para fd %d"
@@ -1077,61 +1109,66 @@ msgstr "tentativa de atribuição a não-variável"
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na atribuição de variável"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "divisão por 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "problema: símbolo expassign errado"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "\":\" esperados para expressão condicional"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "expoente menor que 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "identificador esperado após pré-incremento ou pré-decremento"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "\")\" em falta"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: operando esperado"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético inválido"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (símbolo de erro é \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: total de linhas inválido"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valor muito grande para a base"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expressão\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossível aceder a pastas-mãe"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "impossível repor modo nodelay para fd %d"
@@ -1147,161 +1184,171 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: buffer já existe para o novo fd %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pipe pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "pid %d aparece em tarefa em execução %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: processo %5ld (%s) na _pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marcado como ainda activo"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: pid não existente"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Feito"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Interrompido"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Interrompido(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Em execução"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Feito(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Sair de %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Estado desconhecido"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(núcleo despejado) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid filho (%ld para %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: pid %ld não é um filho desta consola"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: sem registo do processo %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_tarefa: tarefa %d está interrompida"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: tarefa inexistente"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: tarefa terminada"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: tarefa %d já em 2º plano"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: linha %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (núcleo despejado)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd agora: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp falhou"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: sem controlo de tarefa em 2º plano"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina de linha"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossível definir grupo de processo do terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "não há controlo de tarefa nesta consola"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserção falhada: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1310,39 +1357,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserção frustrada\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "desconhecido"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloqueio na lista livre clobbered"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: chamado com argumento de bloco já liberto"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: tamanho dos pontos inicial e final difere"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: tamanho dos pontos inicial e final difere"
@@ -1384,22 +1441,22 @@ msgstr "%s: especificação de caminho de rede errada"
msgid "network operations not supported"
msgstr "operações de rede não suportadas"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: não pode alterar o idioma (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: não pode alterar o idioma (%s): %s"
@@ -1447,7 +1504,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1456,103 +1513,103 @@ msgstr ""
"consola_getc: consola_input_line_size (%zu) excede SIZE_MAX (%lu): linha "
"truncada"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "total here-document máximo excedido"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "EOF inesperado ao procurar \"%c\" correspondentes"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "EOF inesperado ao procurar \"]]\""
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "erro de sintaxe em expressão condicional: símbolo inesperado \"%s\""
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "erro de sintaxe em expressão condicional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "símbolo inesperado \"%s\", esperado \")\""
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "esperado \")\""
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento \"%s\" inesperado para operador unário condicional"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para operador unário condicional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "esperado operador binário condicional"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento \"%s\" inesperado para operador binário condicional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para operador binário condicional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "símbolo \"%c\" inesperado em comando condicional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "símbolo \"%s\" inesperado em comando condicional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "símbolo %d inesperado em comando condicional"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe junto a \"%s\""
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "erro de sintaxe: fim de ficheiro inesperado"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use \"%s\" para sair da consola.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "EOF inesperado ao procurar o \")\" correspondente"
@@ -1595,89 +1652,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: \"%c\": carácter de formato inválido"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descritor de ficheiro fora de alcance"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redireccionamento ambíguo"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossível sobrescrever ficheiro existente"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restricto: impossível redireccionar saída"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossível criar ficheiro temporário para here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossível atribuir fd a variável"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port não suportado em trabalho de rede"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redireccionamento: impossível duplicar fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "impossível encontrar /tmp, por favor crie-a!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp tem de ser um nome de pasta válido"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "modo pretty-printing ignorado em consolas interactivas"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opção inválida"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossível definir uid como %d: uid efectiva %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossível definir gid como %d: gid efectiva %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "impossível iniciar o depurador; modo de depuração desactivado"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: é uma pasta"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Não tenho nome!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versão %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1686,315 +1743,311 @@ msgstr ""
"Uso:\t%s [opção longa GNU] [opção] ...\n"
"\t%s [opção longa GNU] [opção] script-file ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Opções longas GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opções da consola:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\tcomando -ilrsD ou -c ou -O shopt_option\t\t(só chamada)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\topção -%s ou -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Insira \"%s -c help\" para mais informação sobre comandos internos da "
"consola.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Use o comando \"bashbug\" para reportar erros.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Página inicial do bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Ajuda geral para usar programas GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operação inválida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Sinal falso"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Desligar"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Sair"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instrução ilegal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instrução ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instrução EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Excepção de vírgula flutuante"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Morto"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Erro de bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Falha de segmentação"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Chamada de sistema errada"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Pipe quebrado"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarme"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condição IO urgente"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Parado (sinal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continuar"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Morte ou paragem do filho"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Parado (entrada tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Parado (saída tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O pronto"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Limite do CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Limite do ficheiro"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarme (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarme (perfil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Janela alterada"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Bloqueio de registo"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Sinal de utilizador 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Sinal de utilizador 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "entrada de dados HTF pendente"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "falha de energia iminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "acidente do sistema iminente"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrar processo para outro CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "erro de programação"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "concedido modo de monitor HTF"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "retirado modo de monitor HTF"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "sequência de som HTF terminou"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Pedido de informação"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Sinal desconhecido #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal desconhecido #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "má substituição: sem \"%s\" de fecho em %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossível atribuir lista a membro de matriz"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "impossível fazer pipe para substituição de processo"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "impossível fazer filho para substituição de processo"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossível abrir pipe chamado %s para leitura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossível abrir pipe chamado %s para escrita"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "imossível duplicar pipe chamado %s como fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "substituição de comando: byte nulo ignorado na entrada"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "impossível fazer pipe para substituição de comando"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "impossível fazer filho para substituição de comando"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: impossível duplicar pipe como fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nome de variável inválido para referência de nome"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansão indirecta inválida"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nome de variável inválido"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parâmetro não definido"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parâmetro nulo ou não definido"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressão de sub-cadeia < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: má substituição"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossível atribuir desta forma"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2002,12 +2055,12 @@ msgstr ""
"futuras versões da consola vão forçar a avaliação como uma substituição "
"aritmética"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "má substituição: sem \"\"\" de fecho em %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "sem par:%s"
@@ -2030,35 +2083,40 @@ msgstr "\")\" esperado"
msgid "`)' expected, found %s"
msgstr "\")\" esperado, encontrado %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: operador unáro esperado"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: operador bináro esperado"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: operador unáro esperado"
+
+#: test.c:881
msgid "missing `]'"
msgstr "\"]\" em falta"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "erro de sintaxe: \";\" inesperado"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "número de sinal inválido"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "gestor de trap: nível máximo de gestor de captura excedido (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor errado em trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2066,84 +2124,85 @@ msgstr ""
"run_pending_traps: gestor de sinal é SIG_DFL, a reenviar %d (%s) para mim "
"próprio"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal errado %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar definição de função para \"%s\""
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "nível da consola (%d) muito alto, a repor para 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variável: sem contexto de função no âmbito actual"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: não pode atribuir um valor à variável"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: a atribuir inteiro à referência de nome"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: sem contexto de função no âmbito actual"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s tem exportstr nulo"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "carácter %d inválido em exportstr para %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "sem \"=\" em exportstr para %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: cabeça de consola_variables não é contexto de função"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: sem contexto de global_variables"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossível abrir como FICHEIRO"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor inválido para descritor de ficheiro trace"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidade fora do intervalo"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2233,11 +2292,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "comando [-pVv] comando [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [nome[=valor] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] nome[=valor] ..."
#: builtins.c:82
@@ -2261,11 +2322,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring name [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr ""
"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]"
@@ -2394,7 +2457,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [modo]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id ...]"
#: builtins.c:181
@@ -2486,9 +2550,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] formato [argumentos]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o opção] [-A acção] [-G "
@@ -2496,9 +2561,10 @@ msgstr ""
"P prefixo] [-S sufixo] [nome ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o opção] [-A acção] [-G padrglob] [-W listpal] [-"
"F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] [palavra]"
@@ -2955,6 +3021,7 @@ msgstr ""
"encontrado."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2967,6 +3034,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3032,7 +3101,7 @@ msgstr ""
"ocorra um\n"
" erro de atribuição da variável."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3042,7 +3111,7 @@ msgstr ""
" \n"
" Um sinónimo para \"declare\". Veja \"help declare\"."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3070,8 +3139,7 @@ msgstr ""
"ocorra \n"
" um erro de atribuição ou a consola não esteja a executar uma função."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3138,11 +3206,15 @@ msgstr ""
" \t\tde 0 a 3 dígitos octais\n"
" \\xHH\to carácter de 8-bit cujo valor é HH (hexadecimal). HH\n"
" \t\tpode ter um ou dois dígitos hexadecimais\n"
-" \n"
+" \\uHHHH\to carácter Unicode cujo valor é o valor hexadecimal HHHH.\n"
+" \t\tHHHH pode ser de um a quatro dígitos hexadecimais.\n"
+" \\UHHHHHHHH o carácter Unicode cujo valor é o valor hexadecimal\n"
+" \t\tHHHHHHHH. HHHHHHHH pode ser de um a oito dígitos hexadecimais.\n"
+" \n"
" Estado de saída:\n"
" Devolve sucesso a não ser que ocorra um erro de escrita."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3164,7 +3236,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que ocorra um erro de escrita."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3216,7 +3288,7 @@ msgstr ""
" Devolve sucesso a não ser que NOME não seja um interno da consola ou "
"ocorra um erro."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3236,7 +3308,8 @@ msgstr ""
" Estado de saída:\n"
" Devolve estado de saída do comando ou sucesso se o comando for nulo."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3269,8 +3342,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3317,7 +3390,7 @@ msgstr ""
" Devolve sucesso se encontrar uma opção; falha se o fim da opção for\n"
" encontrado ou se ocorrer um erro."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3360,7 +3433,7 @@ msgstr ""
" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um "
"erro de redireccionamento."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3372,7 +3445,7 @@ msgstr ""
" Sai da consola com estado N. Se N for omitido, o estado de saída\n"
" é o do último comando executado."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3386,7 +3459,7 @@ msgstr ""
"se não for\n"
" executado numa consola com sessão."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3444,7 +3517,7 @@ msgstr ""
" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um "
"erro."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3464,7 +3537,7 @@ msgstr ""
" Estado de saída:\n"
" Estado do comando colocado em 1º plano ou falha se ocorrer um erro."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3489,7 +3562,7 @@ msgstr ""
" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou "
"ocorra um erro."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3533,7 +3606,7 @@ msgstr ""
" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma "
"opção inválida."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3574,7 +3647,7 @@ msgstr ""
" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma "
"opção inválida."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3647,7 +3720,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
"erro."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3694,7 +3767,7 @@ msgstr ""
"erro.\n"
" Se -x for usado, devolve o estado de saída de COMANDO."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3726,7 +3799,7 @@ msgstr ""
" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja "
"indicada."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3770,7 +3843,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
"erro."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3859,7 +3932,7 @@ msgstr ""
" Estado de saída:\n"
" Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3961,7 +4034,7 @@ msgstr ""
"variável,\n"
" ou seja indicado um descritor de ficheiro inválido como argumento de -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3982,7 +4055,7 @@ msgstr ""
" Devolve N, ou falha se a consola não estiver a executar uma função ou "
"script."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4160,7 +4233,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que indique uma opção inválida."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4200,7 +4273,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
"só de leitura."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4235,7 +4308,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
"inválido."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4275,7 +4348,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja "
"inválido."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4293,7 +4366,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que N seja negativo ou maior que $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4317,7 +4390,7 @@ msgstr ""
" Devolve o estado do último comando executado em NOMEFICH; falha se\n"
" NOMEFICH não pode ser lido."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4342,7 +4415,7 @@ msgstr ""
" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou "
"ocorra um erro."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4521,7 +4594,7 @@ msgstr ""
"for\n"
" avaliado como falso ou for indicado um argumento inválido."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4533,7 +4606,7 @@ msgstr ""
" Este é um sinónimo para o interno \"test\", mas o último argumento tem\n"
" de ser um \"]\" literal, para fechar o \"[\" aberto."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4553,7 +4626,7 @@ msgstr ""
" Estado de saída:\n"
" Sempre com sucesso."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4636,7 +4709,7 @@ msgstr ""
" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma "
"opção inválida."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4694,7 +4767,8 @@ msgstr ""
" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não "
"for."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4725,6 +4799,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4793,7 +4868,7 @@ msgstr ""
" Devolve sucesso a não ser que seja indicada uma opção inválida ou "
"ocorra um erro."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4817,8 +4892,8 @@ msgstr ""
" for omitido, imprime o valor actual da máscara.\n"
" \n"
" Se MODO começa com um dígito, é interpretado como um número octal;\n"
-" caso contrário, é uma cadeia de modo simbólico como a aceite por chmod"
-"(1).\n"
+" caso contrário, é uma cadeia de modo simbólico como a aceite por "
+"chmod(1).\n"
" \n"
" Opções:\n"
" -p\tse MODO for omitido, saída de forma a que possa ser reutilizado "
@@ -4830,7 +4905,8 @@ msgstr ""
" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção "
"inválida."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4841,15 +4917,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Aguarda a conclusão da tarefa e devolve o estado de saída.\n"
" \n"
@@ -4871,7 +4957,7 @@ msgstr ""
"indicada\n"
" uma opção inválida."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4898,7 +4984,7 @@ msgstr ""
"indicada\n"
" uma opção inválida."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4923,7 +5009,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4954,7 +5040,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4990,7 +5076,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5019,7 +5105,7 @@ msgstr ""
" Estado de saída:\n"
" O estado devolvido é o estado de PIPELINE."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5037,7 +5123,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5075,7 +5161,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5093,7 +5179,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5111,7 +5197,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5134,7 +5220,7 @@ msgstr ""
" Estado de saída:\n"
" O comando coproc devolve um estado de saída 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5157,7 +5243,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve sucesso a não ser que NOME seja só de leitura."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5175,7 +5261,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado do último comando executado."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5199,12 +5285,13 @@ msgstr ""
" Estado de saída:\n"
" Devolve o estado da tarefa retomada."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5217,7 +5304,7 @@ msgstr ""
" Estado de saída:\n"
" Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5269,7 +5356,7 @@ msgstr ""
" Os operadores && e || não avaliam EXPR2 se EXPR1 for suficiente para\n"
" determinar o valor da expressão."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5378,7 +5465,7 @@ msgstr ""
"quais\n"
" \t\tos comandos que devem ser gravados na lista de histórico.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5436,7 +5523,7 @@ msgstr ""
" Devolve sucesso a não ser que indique um argumento inválido ou a\n"
" troca de pastas falhe."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5486,7 +5573,7 @@ msgstr ""
" Devolve sucesso a não ser que indique um argumento inválido ou a troca\n"
" de pastas falhe."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5541,7 +5628,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
"erro"
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5577,7 +5664,7 @@ msgstr ""
" Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n"
" inválida ou OPTNOME esteja desactivada."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5594,8 +5681,8 @@ 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"
@@ -5652,7 +5739,7 @@ msgstr ""
"erro de\n"
" escrita ou atribuição."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5675,7 +5762,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5696,9 +5783,9 @@ msgstr ""
"reutilizável\n"
" -r\tremove uma especificação de conclusão para cada NOME, ou, se não\n"
" \t\tforneceu NOMEs, todas as especificações de conclusão\n"
-" -D\taplicar as conclusões e acções como predefinição para comandos\n"
+" -D\taplica as conclusões e acções como predefinição para comandos\n"
" \t\tsem qualquer especificação de conclusão definida\n"
-" -E\taplicar as conclusões e acções a comandos -- \"vazios\"\n"
+" -E\taplica as conclusões e acções a comandos -- \"vazios\"\n"
" \t\tconclusão tentada numa linha em branco\n"
" -I\taplica as conclusões e acções à palavra inicial (normalmente o\n"
" \t\tcomando)\n"
@@ -5712,7 +5799,7 @@ msgstr ""
" Estado da saída: Devolve sucesso a não ser que seja fornecida uma opção\n"
" inválida ou ocorra um erro."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5734,7 +5821,7 @@ msgstr ""
" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um "
"erro."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5798,7 +5885,7 @@ msgstr ""
"tenha\n"
" uma especificação de conclusão definida."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5877,7 +5964,7 @@ msgstr ""
"só\n"
" de leitura ou não seja uma matriz indexada."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5886,3 +5973,18 @@ msgstr ""
"Lê linhas de um ficheiro para uma variável de matriz.\n"
" \n"
" Um sinónimo para \"mapfile\"."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Devolve o contexto da presente chamada a sub-rotina.\n"
+#~ " \n"
+#~ " Sem EXPR, devolve "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: processo %5ld (%s) na _pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Sinal desconhecido #"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 37b8dcb1..cd1093ad 100644
--- a/po/pt_BR.gmo
+++ b/po/pt_BR.gmo
Binary files differ
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 188a7fce..919784c3 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -1,96 +1,101 @@
# Brazilian Portuguese translation for bash
-# Copyright (C) 2018 Free Software Foundation, Inc.
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
# Halley Pacheco de Oliveira <halleypo@ig.com.br>, 2002.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2015, 2016, 2018.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2015, 2016, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-11-30 08:07-0200\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-09 15:13-0200\n"
"Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n"
"Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge."
"net>\n"
+"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Virtaal 1.0.0-beta1\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "subscrito de array incorreto"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removendo o atributo nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: impossível converter array indexado para associativo"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: chave de array associativo inválida"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: impossível atribuir a índice não numérico"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: deve usar subscrito ao atribuir um array associativo"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: impossível criar: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: primeiro caractere não-espaço em branco não é `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "sem `%c' de fechamento em %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s faltando separador dois-pontos"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': impossível desassociar (unbind)"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "expansão de chaves: impossível alocar memória para %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "expansão de chaves: falha ao alocar memória para %u elementos"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "expansão de chaves: falha ao alocar memória para `%s'"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': nome de apelido (alias) inválido"
@@ -109,22 +114,22 @@ msgstr "`%s': nome de mapa de teclas inválido"
msgid "%s: cannot read: %s"
msgstr "%s: impossível ler: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': nome de função desconhecida"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s não está associada a qualquer tecla.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s pode ser chamado via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': impossível desassociar (unbind)"
@@ -137,29 +142,46 @@ msgstr "número de loops"
msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "significativo apenas em um loop de `for', `while' ou `until'"
+# help caller
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Retorna o contexto da chamada de sub-rotina atual.\n"
" \n"
-" Sem EXPR, retorna "
+" 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/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME não definida"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "número excessivo de argumentos"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "diretório nulo"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD não definida"
@@ -178,7 +200,7 @@ msgstr "aviso: "
msgid "%s: usage: "
msgstr "%s: uso: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: a opção requer um argumento"
@@ -193,7 +215,7 @@ msgstr "%s: requer argumento numérico"
msgid "%s: not found"
msgstr "%s: não encontrado"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: opção inválida"
@@ -203,7 +225,7 @@ msgstr "%s: opção inválida"
msgid "%s: invalid option name"
msgstr "%s: nome de opção inválido"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': não é um identificador válido"
@@ -216,7 +238,7 @@ msgstr "número octal inválido"
msgid "invalid hex number"
msgstr "número do hexa inválido"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "número inválido"
@@ -294,73 +316,83 @@ msgstr "erro ao definir atributos do terminal: %s"
msgid "error getting terminal attributes: %s"
msgstr "erro ao obter atributos do terminal: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: erro ao obter o diretório atual: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: especificação de trabalho ambígua"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "ajuda não disponível nesta versão"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: impossível remover definição: %s somente-leitura"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: impossível remover definição"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: nome de ação inválido"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: nenhuma especificação de completação"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "aviso: a opção -C pode não funcionar como esperado"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "não se está executando atualmente função de completação"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "somente pode ser usado em uma função"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: variável de referência não pode ser um array"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: referência a si próprio da variável nameref não é permitido"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s referência circular de nome"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, 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:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "impossível usar `-f' para criar funções"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: função somente para leitura"
@@ -375,7 +407,7 @@ msgstr "%s: atribuição de array composto com aspas está obsoleto"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: impossível destruir variáveis de array desta maneira"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: impossível converter array associativo para indexado"
@@ -389,27 +421,32 @@ msgstr "carregamento dinâmico não está disponível"
msgid "cannot open shared object %s: %s"
msgstr "impossível abrir objeto compartilhado %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "impossível localizar %s no objeto compartilhado %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: não foi carregado dinamicamente"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: não foi carregado dinamicamente"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: impossível excluir: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: é um diretório"
@@ -424,12 +461,12 @@ msgstr "%s: não é um arquivo irregular"
msgid "%s: file is too large"
msgstr "%s: arquivo é muito grande"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: impossível executar o arquivo binário"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: impossível executar: %s"
@@ -453,15 +490,16 @@ msgstr "Há trabalhos parados.\n"
msgid "There are running jobs.\n"
msgstr "Há trabalhos em execução.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "nenhum comando encontrado"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "especificação do histórico"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: impossível abrir arquivo temporário: %s"
@@ -489,12 +527,12 @@ msgstr "%s: a opção requer um argumento: -- %c\n"
msgid "hashing disabled"
msgstr "hashing está desabilitado"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: tabela de hash está vazia\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "número\tcomando\n"
@@ -505,6 +543,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Comandos shell correspondendo à palavra-chave `"
msgstr[1] "Comandos shell correspondendo às palavras-chave `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -540,21 +584,21 @@ msgstr ""
"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 "impossível usar mais de um dentre -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "posição no histórico"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: marca de tempo inválida"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: expansão do histórico falhou"
@@ -577,7 +621,7 @@ msgstr "%s: argumentos devem ser IDs de trabalhos ou processo"
msgid "Unknown error"
msgstr "Erro desconhecido"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "esperava uma expressão"
@@ -586,12 +630,12 @@ msgstr "esperava uma expressão"
msgid "%s: not an indexed array"
msgstr "%s: não é um array indexado"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: especificação de descritor de arquivo inválida"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: descritor de arquivo inválido: %s"
@@ -619,36 +663,36 @@ msgstr "nome de variável array vazio"
msgid "array variable support required"
msgstr "requer suporte a variável de array"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': faltando caractere de formato"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': especificação de formato de tempo inválida"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': caractere de formato inválido"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "aviso: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "problema ao analisar formato: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "faltando dígito hexa para \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "faltando dígito unicode para \\%c"
@@ -801,12 +845,12 @@ msgstr ""
" \n"
" O comando interno `dirs' exibe a pilha de diretório."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: especificação de tempo limite inválida"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "erro de leitura: %d: %s"
@@ -817,22 +861,12 @@ msgstr ""
"possível retornar (`return') apenas de uma função ou script carregado (com "
"`source')"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr ""
"impossível simultaneamente remover definição de uma função e uma variável"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: impossível remover definição"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: impossível remover definição: %s somente-leitura"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: não é uma variável array"
@@ -847,7 +881,7 @@ msgstr "%s: não é uma função"
msgid "%s: cannot export"
msgstr "%s: impossível exportar"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "número de shift"
@@ -856,7 +890,7 @@ 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:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: nome de opção de shell inválido"
@@ -913,26 +947,26 @@ msgstr "%s é %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s está na tabela hash (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: argumento limite inválido"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': comando incorreto"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: impossível obter limite: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limite"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: impossível modificar limite: %s"
@@ -992,78 +1026,77 @@ msgstr "desvio incorreto"
msgid "%s: unbound variable"
msgstr "%s: variável não associada"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr ""
"\atempo limite de espera excedido aguardando entrada: fim automático da "
"sessão\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "impossível redirecionar a entrada padrão para /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': caractere de formato inválido"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] ainda existe"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "erro de `pipe'"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: excedido o nível máximo de aninhamento de avaliação (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: restrição: não é permitido especificar `/' em nomes de comandos"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: comando não encontrado"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: interpretador incorreto"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: impossível executar o arquivo binário: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "`%s': é um comando interno especial"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d"
@@ -1088,61 +1121,66 @@ msgstr "tentativa de atribuição para algo que não é uma variável"
msgid "syntax error in variable assignment"
msgstr "erro de sintaxe na atribuição de variável"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "divisão por 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "erro de programação: token incorreto passado para expassign()"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "esperava `:' para expressão condicional"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponente menor que 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "faltando `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "erro de sintaxe: esperava operando"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "erro de sintaxe: operador aritmético inválido"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (token de erro é \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "base aritmética inválida"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: número de linhas inválido"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "valor muito grande para esta base de numeração"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: erro de expressão\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: impossível acessar os diretórios pais (anteriores)"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1161,163 +1199,173 @@ msgid "save_bash_input: buffer already exists for new fd %d"
msgstr ""
"save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: `pipe' de pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "excluindo trabalho parado %d com grupo de processo %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: processo %5ld (%s) em the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: pid %5ld (%s) marcado como ainda vivo"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: o identificador do processo (pid) não existe"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Sinal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Concluído"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Parado"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Parado(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Executando"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Concluído(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Fim da execução com status %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Status desconhecido"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(imagem do núcleo gravada)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "`setpgid' filho (%ld para %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: o pid %ld não é um processo filho deste shell"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Sem registro do processo %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: trabalho %d está parado"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: trabalho não existe"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: o trabalho terminou"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: o trabalho %d já está em plano de fundo"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s, linha %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (imagem do núcleo gravada)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd agora: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp falhou"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: nenhum controle de trabalho em plano de fundo"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: disciplina da linha"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "impossível definir grupo do processo do terminal (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "nenhum controle de trabalho neste shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: asserção falhou: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1326,39 +1374,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: asserção remendada\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "desconhecido"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: bloco socado em lista livre"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: chamado com argumento de bloco já liberado"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: tamanhos de porções do início e do fim são diferentes"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: chamado com argumento de bloco não alocado"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: tamanhos de porções do início e do fim são diferentes"
@@ -1400,22 +1458,22 @@ msgstr "%s: especificação de caminho de rede inválida"
msgid "network operations not supported"
msgstr "sem suporte a operações de rede"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: impossível alterar locale (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: impossível alterar locale (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: impossível alterar locale (%s): %s"
@@ -1462,7 +1520,7 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1470,103 +1528,103 @@ msgid ""
msgstr ""
"shell_getc: shell_input_line_size (%zu) excede SIZE_MAX (%lu): linha truncada"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "excedido o número máximo de here-document"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "encontrado EOF inesperado enquanto procurava por `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "erro de sintaxe na expressão condicional"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "token inesperado `%s', esperava`)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "esperava `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "argumento inesperado `%s' para operador unário condicional"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "argumento inesperado para operador unário condicional"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "token inesperado `%s', esperava operador binário condicional"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "esperava operador binário condicional"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "argumento inesperado `%s' para operador binário condicional"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "argumento inesperado para operador binário condicional"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "token inesperado `%c' em comando condicional"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "token inesperado `%s' em comando condicional"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "token inesperado %d em comando condicional"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "erro de sintaxe próximo ao token inesperado `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "erro de sintaxe próximo a `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "erro de sintaxe: fim prematuro do arquivo"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "erro de sintaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Use \"%s\" para sair do shell.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente"
@@ -1610,89 +1668,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': caractere de formato inválido"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "descritor de arquivo fora dos limites"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: redirecionamento ambíguo"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: impossível sobrescrever arquivo existente"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: restrição: impossível redirecionar saída"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "impossível criar arquivo temporário para here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: impossível atribuir fd a variável"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "erro de redirecionamento: impossível duplicar fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "impossível localizar /tmp, por favor crie!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp deve ser um nome de diretório válido"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "modo de impressão bonita ignorada em shells interativos"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: opção inválida"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "impossível definir uid para %d: uid efetivo %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "impossível definir gid para %d: gid efetivo %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "possível iniciar o depurador; modo de depuração desabilitado"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: É um diretório"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Eu não tenho nome!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, versão %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1701,329 +1759,325 @@ msgstr ""
"Utilização:\t%s [opção-longa-GNU] [opção] ...\n"
"\t%s [opção-longa-GNU] [opção] arquivo-de-script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "opções-longas-GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Opções do shell:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD or -c comando ou -O opção-shopt\t\t(somente para chamada)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ou -o opção\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Digite `%s -c help' para mais informações sobre os comandos internos do "
"shell.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Uso o comando `bashbug' para relatar erros.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "página do bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Ajuda geral sobre uso de software GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: operação inválida"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Sinal falso"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Hangup"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Interromper"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Sair"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Instrução ilegal"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT Rastreamento/Captura (BPT trace/trap)"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Instrução ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Instrução EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Exceção de ponto flutuante"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Morto (Killed)"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Erro do barramento"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Falha de segmentação"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Chamada incorreta do sistema"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "`Pipe' partido (escrita sem leitura)"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Relógio de alarme"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminado"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Condição urgente de Entrada/Saída"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Parado (sinal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continuar"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Processo filho parado ou terminado"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Parado (entrada tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Parado (saída tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "Entrada/Saída pronta"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Tempo limite de CPU excedido"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Tamanho limite do arquivo excedido"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarme (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarme (perfil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Janela mudada"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Registro bloqueado (lock)"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Sinal 1 definido pelo usuário"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Sinal 2 definido pelo usuário"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "entrada de dados HFT pendente"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "falha iminente de energia"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "falha iminente do sistema"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrar o processo para outra CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "erro de programação"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "modo monitor HFT autorizado"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "modo monitor HFT rescindido"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "a seqüência de som HFT foi completada"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Requisição de informação"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Sinal desconhecido #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Sinal desconhecido #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "substituição incorreta: sem `%s' de fechamento em %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: impossível atribuir uma lista a um membro de um array"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "impossível criar `pipe' para a substituição do processo"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "impossível criar um processo filho para a substituição do processo"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "impossível abrir `pipe' %s para leitura"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "impossível abrir `pipe' %s para escrita"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "substituição de comando: byte nulo ignorado na entrada"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "impossível criar um `pipe' para substituição do comando"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "impossível criar um processo filho para substituição do comando"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute: impossível duplicar o `pipe' como descritor de arquivo "
"(fd) 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: nome de variável inválido para referência de nome"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: expansão indireta inválida"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: nome de variável inválido"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parâmetro não inicializado"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parâmetro nulo ou não inicializado"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: expressão de substring < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: substituição incorreta"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: impossível atribuir desta maneira"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
"versões futuras do shell vão forçar avaliação como um substituto aritmético"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "substituição incorreta: sem \"`\" de fechamento em %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "sem correspondência: %s"
@@ -2046,123 +2100,129 @@ msgstr "esperava `)'"
msgid "`)' expected, found %s"
msgstr "esperava `)', encontrado %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: esperava operador unário"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: esperava operador binário"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: esperava operador unário"
+
+#: test.c:881
msgid "missing `]'"
msgstr "faltando `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "erro de sintaxe: `;' inesperado"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "número de sinal inválido"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
"manipulador de trap: excedido o nível máximo de manipulador de captura (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: valor incorreto em trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, 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"
+"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d "
+"(%s) para mim mesmo"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: sinal incorreto %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "erro ao importar a definição da função para `%s'"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "nível do shell (%d) muito grande, redefinindo para 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: nenhum contexto de função no atual escopo"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: a variável pode não ter um valor atribuído"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: atribuindo inteiro para referência de nome"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: nenhum contexto de função no escopo atual"
-#: variables.c:4698
+#: variables.c:4771
#, 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:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "caractere inválido na %d na exportstr para %s"
# exportstr é uma variável no código fonte do bash (arquivo variiables.c)
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "Sem `=' na exportstr para %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: cabeça de shell_variables não é um contexto de função"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: nenhum contexto em no global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: impossível abrir como ARQUIVO"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: valor inválido para rastrear descritor de arquivo"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: valor de compatibilidade fora dos limites"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright (C) 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2252,11 +2312,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] COMANDO [ARG ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [NOME[=VALOR] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] NOME[=VALOR] ..."
#: builtins.c:82
@@ -2280,11 +2342,13 @@ msgid "eval [arg ...]"
msgstr "eval [ARG ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts OPTSTRING NOME [ARG]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a NOME] [COMANDO [ARGUMENTOS ...]] [REDIRECIONAMENTO ...]"
#: builtins.c:100
@@ -2413,7 +2477,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [MODO]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [ID ...]"
#: builtins.c:181
@@ -2506,9 +2571,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o OPÇÃO] [-A AÇÃO] [-G GLOBAL] [-W "
@@ -2516,9 +2582,10 @@ msgstr ""
"SUFIXO] [NOME ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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] "
@@ -2975,6 +3042,7 @@ msgstr ""
# help declare
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2987,6 +3055,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3052,7 +3122,7 @@ msgstr ""
" Retorna sucesso, a menos que uma opção inválida tenha sido fornecida ou\n"
" ocorrer um erro de atribuição de variável."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3063,7 +3133,7 @@ msgstr ""
" Um sinônimo para `declare'. Veja `help declare'."
# help local
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3093,8 +3163,7 @@ msgstr ""
" uma função."
# help echo
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3156,15 +3225,19 @@ msgstr ""
" \\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"
+" \t\tter 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"
+" \t\tpode ter um ou dois dígitos hexa\n"
+" \\uHHHH\to caractere Unicode cujo valor é o valor hexadecimal HHHH.\n"
+" \t\tHHHH pode ter um a quatro dígitos hexa.\n"
+" \\UHHHHHHHH o caractere Unicode cujo valor é o valor hexadecimal\n"
+" \t\tHHHHHHHH. HHHHHHHH pode ter um a oito dígitos hexa.\n"
" \n"
" Status de saída:\n"
" Retorna sucesso, a menos que ocorra um erro de escrita."
# help echo
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3187,7 +3260,7 @@ msgstr ""
" Retorna sucesso, a menos que ocorra um erro de escrita."
# help enable
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3241,7 +3314,7 @@ msgstr ""
" ou ocorrer um erro."
# help eval
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3261,7 +3334,8 @@ msgstr ""
" Retorna status de saída do comando ou sucesso, se o comando for nulo."
# help getopts
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3294,8 +3368,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3343,7 +3417,7 @@ msgstr ""
" for encontrado ou ocorrer um erro."
# help exec
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3385,7 +3459,7 @@ msgstr ""
" erro no redirecionamento."
# help exit
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3398,7 +3472,7 @@ msgstr ""
" de saída é o mesmo do último comando executado."
# help exit
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3412,7 +3486,7 @@ msgstr ""
" se não for executada em um shell de login."
# help fc
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3468,7 +3542,7 @@ msgstr ""
" retorna não-zero."
# help fg
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3490,7 +3564,7 @@ msgstr ""
"erro."
# help bg
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3514,7 +3588,7 @@ msgstr ""
" habilitado ou ocorra um erro."
# help hash
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3560,7 +3634,7 @@ msgstr ""
" inválida seja fornecida."
# help help
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3600,7 +3674,7 @@ msgstr ""
" Retorna sucesso, a menos que PADRÃO não seja encontrado ou uma opção\n"
" inválida seja fornecida."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3671,7 +3745,7 @@ msgstr ""
" ocorra um erro."
# help jobs
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3717,7 +3791,7 @@ msgstr ""
" ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO."
# help disown
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3749,7 +3823,7 @@ msgstr ""
" sejam fornecidos."
# help kill
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3795,7 +3869,7 @@ msgstr ""
" ocorra um erro."
# help let
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3881,7 +3955,7 @@ msgstr ""
" let retorna 0."
# help read
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3988,7 +4062,7 @@ msgstr ""
" arquivo inválido seja fornecido como argumento para -u."
# help return
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4010,7 +4084,7 @@ msgstr ""
" script."
# help set
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4196,7 +4270,7 @@ msgstr ""
" Retorna sucesso, a menos que uma opção inválida seja fornecida."
# help unset
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4237,7 +4311,7 @@ msgstr ""
" um NOME seja somente-leitura."
# help export
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4274,7 +4348,7 @@ msgstr ""
" NOME seja inválido."
# help readonly
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4314,7 +4388,7 @@ msgstr ""
" NOME seja inválido."
# help shift
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4334,7 +4408,7 @@ msgstr ""
" Retorna sucesso, a menos que N seja negativo ou maior que $#."
# help source
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4359,7 +4433,7 @@ msgstr ""
" ARQUIVO não puder ser lido."
# help suspend
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4385,7 +4459,7 @@ msgstr ""
" ou ocorra um erro."
# help test
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4555,7 +4629,7 @@ msgstr ""
" avaliada como falsa ou um argumento inválido for informado."
# help [
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4568,7 +4642,7 @@ msgstr ""
" argumento deve ser um `]' literal, para corresponder ao `[' que abriu."
# help times
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4588,7 +4662,7 @@ msgstr ""
" Sempre com sucesso."
# help trap
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4669,7 +4743,7 @@ msgstr ""
" uma opção inválida seja fornecida."
# help type
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4726,7 +4800,8 @@ msgstr ""
" deles não for encontrado."
# help ulimit
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4757,6 +4832,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4821,7 +4897,7 @@ msgstr ""
" ocorra um erro."
# help umask
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4857,7 +4933,8 @@ msgstr ""
" inválida seja fornecida."
# help wait
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4868,15 +4945,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Espera por conclusão de trabalho e retorna o status de saída.\n"
" \n"
@@ -4899,7 +4986,7 @@ msgstr ""
" inválida for fornecida."
# help wait
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4925,7 +5012,7 @@ msgstr ""
" inválida for fornecida."
# help for
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4949,7 +5036,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help for (( (?)
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4980,7 +5067,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help select
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5018,7 +5105,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help time
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5048,7 +5135,7 @@ msgstr ""
" O status de retorno é o status retornado por LINHA-COMANDOS."
# help case
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5067,7 +5154,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help if
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5102,7 +5189,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help while
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5121,7 +5208,7 @@ msgstr ""
" Retorna o status do último comando executado."
# help until
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5140,7 +5227,7 @@ msgstr ""
" Status de saída:\n"
" Retorna o status do último comando executado."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5163,7 +5250,7 @@ msgstr ""
" O comando coproc retorna um status de saída de 0."
# help function
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5187,7 +5274,7 @@ msgstr ""
" Retorna sucesso, a menos que NOME seja somente-leitura."
# help -m {
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5205,7 +5292,7 @@ msgstr ""
" Status de saída:\n"
" Retorna o status do último comando executado."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5231,12 +5318,13 @@ msgstr ""
" Retorna o status de um trabalho resumido."
# help '(('
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5250,7 +5338,7 @@ msgstr ""
" Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0."
# help '['
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5303,7 +5391,7 @@ msgstr ""
" 0 ou 1 dependendo do valor de EXPRESSÃO."
# help variables
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5419,7 +5507,7 @@ msgstr ""
" \t\t\t\thistórico.\n"
# help pushd
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5479,7 +5567,7 @@ msgstr ""
" a alteração de diretório falhar."
# help popd
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5530,7 +5618,7 @@ msgstr ""
" a alteração de diretório falhar."
# help dirs
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5584,7 +5672,7 @@ msgstr ""
" ocorrer um erro."
# help shopt
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5621,7 +5709,7 @@ msgstr ""
" opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado."
# help printf
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5638,8 +5726,8 @@ 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"
@@ -5691,7 +5779,7 @@ msgstr ""
" ocorra um erro de escrita ou atribuição."
# help complete
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5714,7 +5802,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5752,7 +5840,7 @@ msgstr ""
" ocorra um erro."
# help compgen
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5775,7 +5863,7 @@ msgstr ""
" ocorra um erro."
# help compopt
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5835,7 +5923,7 @@ msgstr ""
" NOME não tem uma especificação de completação definida."
# help mapfile
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5918,7 +6006,7 @@ msgstr ""
" somente leitura ou não for um array indexado."
# help readarray
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5928,6 +6016,21 @@ msgstr ""
" \n"
" Um sinônimo para `mapfile'."
+#~ 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 "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: processo %5ld (%s) em the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Sinal desconhecido #"
+
#~ msgid "Copyright (C) 2015 Free Software Foundation, Inc."
#~ msgstr "Copyright (C) 2015 Free Software Foundation, Inc."
diff --git a/po/ro.gmo b/po/ro.gmo
index 572d6424..3a69a47a 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 2daed94e..13ab3543 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -1,98 +1,109 @@
-# Mesajele în limba românã pentru pachetul bash
+# Mesajele în limba română pentru pachetul bash
# Copyright (C) 2003 Free Software Foundation, Inc.
+# This file is distributed under the same license as the bash package.
# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
+# Daniel Șerbănescu <daniel@serbanescu.dk>, 2019.
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 2.0\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 1997-08-17 18:42+0300\n"
-"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-08-25 10:11+0200\n"
+"Last-Translator: Daniel Șerbănescu <daniel@serbanescu.dk>\n"
"Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n"
+"Language: ro\n"
"MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ro\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n==0 || (n!=1 && n%100>=1 && n"
+"%100<=19) ? 1 : 2);\n"
+"X-Generator: Poedit 2.2.3\n"
+"X-Poedit-SourceCharset: UTF-8\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
-msgstr "incluziune greºitã în interval"
+msgstr "incluziune greșită în interval"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr ""
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr ""
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
-msgstr "%s: nu se poate atribui cãtre index ne-numeric"
+msgstr "%s: nu se poate atribui către index ne-numeric"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nu s-a putut crea: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr ""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr ""
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
-msgstr ""
+msgstr "%s: lipsește separatorul două puncte"
+
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "%s: comandă negăsită"
-#: braces.c:331
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
-msgstr ""
+msgstr "„%sâ€: nume alias nevalid"
#: builtins/bind.def:122 builtins/bind.def:125
msgid "line editing not enabled"
-msgstr ""
+msgstr "sfârșitul de linie nu este activat"
#: builtins/bind.def:212
#, c-format
@@ -104,99 +115,103 @@ msgstr ""
msgid "%s: cannot read: %s"
msgstr "%s: nu s-a putut crea: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, fuzzy, c-format
msgid "`%s': unknown function name"
-msgstr "%s: funcþie doar în citire (readonly)"
+msgstr "%s: funcție doar în citire (readonly)"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
-msgstr ""
+msgstr "%s nu este asociat niciunei taste.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
-msgstr ""
+msgstr "%s poate fi invocat prin "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, fuzzy, c-format
msgid "`%s': cannot unbind"
-msgstr "%s: comandã negãsitã"
+msgstr "%s: comandă negăsită"
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
-msgstr ""
+msgstr "contor buclă"
#: builtins/break.def:139
msgid "only meaningful in a `for', `while', or `until' loop"
-msgstr ""
+msgstr "are sens numai într-o buclă „forâ€, „while†sau „untilâ€"
#: builtins/caller.def:136
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
-msgstr ""
+msgstr "HOME nu este stabilit"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
-msgstr "prea mulþi parametri"
+msgstr "prea mulți parametri"
-#: builtins/cd.def:341
-#, fuzzy
+#: builtins/cd.def:342
msgid "null directory"
-msgstr "director superior."
+msgstr "director null"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
-msgstr ""
+msgstr "OLDPWD nu este stabilit"
#: builtins/common.c:96
#, c-format
msgid "line %d: "
-msgstr ""
+msgstr "linia %d: "
#: builtins/common.c:134 error.c:264
#, c-format
msgid "warning: "
-msgstr ""
+msgstr "avertizare: "
#: builtins/common.c:148
#, c-format
msgid "%s: usage: "
-msgstr ""
+msgstr "%s: utilizare: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
-#, fuzzy, c-format
+#: builtins/common.c:193 shell.c:516 shell.c:844
+#, c-format
msgid "%s: option requires an argument"
-msgstr "opþiunea necesitã un parametru: -"
+msgstr "%s: opțiunea necesită un parametru"
#: builtins/common.c:200
#, c-format
msgid "%s: numeric argument required"
-msgstr ""
+msgstr "%s: argument numeric necesar"
#: builtins/common.c:207
#, fuzzy, c-format
msgid "%s: not found"
-msgstr "%s: comandã negãsitã"
+msgstr "%s: comandă negăsită"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, fuzzy, c-format
msgid "%s: invalid option"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%c%c: opțiune invalidă"
#: builtins/common.c:223
#, fuzzy, c-format
msgid "%s: invalid option name"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%c%c: opțiune invalidă"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, fuzzy, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s' nu este un identificator valid"
@@ -204,17 +219,17 @@ msgstr "`%s' nu este un identificator valid"
#: builtins/common.c:240
#, fuzzy
msgid "invalid octal number"
-msgstr "numãr de semnal invalid"
+msgstr "număr de semnal invalid"
#: builtins/common.c:242
#, fuzzy
msgid "invalid hex number"
-msgstr "numãr de semnal invalid"
+msgstr "număr de semnal invalid"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
#, fuzzy
msgid "invalid number"
-msgstr "numãr de semnal invalid"
+msgstr "număr de semnal invalid"
#: builtins/common.c:252
#, c-format
@@ -229,7 +244,7 @@ msgstr ""
#: builtins/common.c:266 error.c:510
#, c-format
msgid "%s: readonly variable"
-msgstr "%s: variabilã doar în citire"
+msgstr "%s: variabilă doar în citire"
#: builtins/common.c:274
#, c-format
@@ -239,7 +254,7 @@ msgstr ""
#: builtins/common.c:274 builtins/common.c:276
#, fuzzy
msgid "argument"
-msgstr "se aºteaptã parametru"
+msgstr "se așteaptă parametru"
#: builtins/common.c:276
#, c-format
@@ -254,12 +269,12 @@ msgstr ""
#: builtins/common.c:292
#, fuzzy, c-format
msgid "%s: no job control"
-msgstr "nici un control de job în acest shell"
+msgstr "nici un control de job în acest shell"
#: builtins/common.c:294
#, fuzzy
msgid "no job control"
-msgstr "nici un control de job în acest shell"
+msgstr "nici un control de job în acest shell"
#: builtins/common.c:304
#, fuzzy, c-format
@@ -278,7 +293,7 @@ msgstr ""
#: builtins/common.c:323
#, fuzzy, c-format
msgid "write error: %s"
-msgstr "eroare de legãturã (pipe): %s"
+msgstr "eroare de legătură (pipe): %s"
#: builtins/common.c:331
#, c-format
@@ -290,77 +305,87 @@ msgstr ""
msgid "error getting terminal attributes: %s"
msgstr ""
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr ""
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, fuzzy, c-format
msgid "%s: ambiguous job spec"
-msgstr "%s: Redirectare ambiguã"
+msgstr "%s: Redirectare ambiguă"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, fuzzy, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nu s-a putut crea: %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, fuzzy, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nu s-a putut crea: %s"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr ""
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr ""
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr ""
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr ""
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr ""
-#: builtins/declare.def:132
+#: builtins/declare.def:134
#, fuzzy
msgid "can only be used in a function"
-msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME"
+msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr ""
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr ""
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
-msgstr "%s: funcþie doar în citire (readonly)"
+msgstr "%s: funcție doar în citire (readonly)"
#: builtins/declare.def:824
#, c-format
@@ -370,9 +395,9 @@ msgstr ""
#: builtins/declare.def:838
#, fuzzy, c-format
msgid "%s: cannot destroy array variables in this way"
-msgstr "$%s: nu se poate asigna în acest mod"
+msgstr "$%s: nu se poate asigna în acest mod"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr ""
@@ -384,29 +409,34 @@ msgstr ""
#: 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"
+msgstr "nu pot deschide legătura numită %s pentru %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr ""
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr ""
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr ""
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, fuzzy, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nu s-a putut crea: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: este director"
@@ -414,27 +444,27 @@ msgstr "%s: este director"
#: builtins/evalfile.c:144
#, fuzzy, c-format
msgid "%s: not a regular file"
-msgstr "%s: nu se poate executa fiºierul binar"
+msgstr "%s: nu se poate executa fișierul binar"
#: builtins/evalfile.c:153
#, c-format
msgid "%s: file is too large"
msgstr ""
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
-msgstr "%s: nu se poate executa fiºierul binar"
+msgstr "%s: nu se poate executa fișierul binar"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, fuzzy, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nu s-a putut crea: %s"
#: builtins/exit.def:64
-#, fuzzy, c-format
+#, c-format
msgid "logout\n"
-msgstr "logout"
+msgstr "deautentificare\n"
#: builtins/exit.def:89
msgid "not login shell: use `exit'"
@@ -450,16 +480,17 @@ msgstr ""
msgid "There are running jobs.\n"
msgstr ""
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
#, fuzzy
msgid "no command found"
-msgstr "%s: comandã negãsitã"
+msgstr "%s: comandă negăsită"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr ""
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, fuzzy, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: nu s-a putut crea: %s"
@@ -474,34 +505,41 @@ msgid "job %d started without job control"
msgstr ""
#: builtins/getopt.c:110
-#, fuzzy, c-format
+#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "opþiune ilegalã: -"
+msgstr "%s: opțiune ilegală -- %c\n"
#: builtins/getopt.c:111
-#, fuzzy, c-format
+#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "opþiunea necesitã un parametru: -"
+msgstr "%s: opțiunea necesită un parametru: -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
msgstr ""
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr ""
-#: builtins/hash.def:266
-#, fuzzy, c-format
+#: builtins/hash.def:267
+#, c-format
msgid "hits\tcommand\n"
-msgstr "ultima comandã."
+msgstr "potriviri\tcomandă\n"
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
msgstr[0] ""
msgstr[1] ""
+msgstr[2] ""
+
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
#: builtins/help.def:185
#, c-format
@@ -526,29 +564,29 @@ msgid ""
"\n"
msgstr ""
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr ""
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr ""
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr ""
-#: builtins/history.def:442
+#: builtins/history.def:451
#, fuzzy, c-format
msgid "%s: history expansion failed"
-msgstr "%s: se aºteaptã expresie întreagã (integer)"
+msgstr "%s: se așteaptă expresie întreagă (integer)"
#: builtins/inlib.def:71
#, fuzzy, c-format
msgid "%s: inlib failed"
-msgstr "%s: variabilã fãrã limitã"
+msgstr "%s: variabilă fără limită"
#: builtins/jobs.def:109
msgid "no other options allowed with `-x'"
@@ -562,23 +600,23 @@ msgstr ""
#: builtins/kill.def:274
#, fuzzy
msgid "Unknown error"
-msgstr "Eroare necunoscutã %d"
+msgstr "Eroare necunoscută %d"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
-msgstr "se aºteaptã expresie"
+msgstr "se așteaptă expresie"
#: builtins/mapfile.def:178
#, c-format
msgid "%s: not an indexed array"
msgstr ""
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr ""
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr ""
@@ -606,54 +644,52 @@ msgstr ""
msgid "array variable support required"
msgstr ""
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr ""
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr ""
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr ""
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr ""
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr ""
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr ""
#: builtins/pushd.def:199
-#, fuzzy
msgid "no other directory"
-msgstr "director superior."
+msgstr "niciun alt director"
#: builtins/pushd.def:360
#, fuzzy, c-format
msgid "%s: invalid argument"
-msgstr "%s necesitã un parametru"
+msgstr "%s necesită un parametru"
#: builtins/pushd.def:480
-#, fuzzy
msgid "<no current directory>"
-msgstr "\tnoul director de lucru curent."
+msgstr "<niciun director curent>"
#: builtins/pushd.def:524
msgid "directory stack empty"
@@ -733,51 +769,41 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr ""
-#: builtins/read.def:733
+#: builtins/read.def:755
#, fuzzy, c-format
msgid "read error: %d: %s"
-msgstr "eroare de legãturã (pipe): %s"
+msgstr "eroare de legătură (pipe): %s"
#: builtins/return.def:68
msgid "can only `return' from a function or sourced script"
msgstr ""
-#: builtins/set.def:852
+#: builtins/set.def:869
#, fuzzy
msgid "cannot simultaneously unset a function and a variable"
-msgstr "poate fi folosit doar într-o funcþie, ºi face ca variabila NUME"
+msgstr "poate fi folosit doar într-o funcție, și face ca variabila NUME"
-#: builtins/set.def:904
-#, fuzzy, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nu s-a putut crea: %s"
-
-#: builtins/set.def:925 variables.c:3813
-#, fuzzy, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nu s-a putut crea: %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, fuzzy, c-format
msgid "%s: not an array variable"
-msgstr "%s: variabilã fãrã limitã"
+msgstr "%s: variabilă fără limită"
#: builtins/setattr.def:189
#, fuzzy, c-format
msgid "%s: not a function"
-msgstr "%s: funcþie doar în citire (readonly)"
+msgstr "%s: funcție doar în citire (readonly)"
#: builtins/setattr.def:194
#, fuzzy, c-format
msgid "%s: cannot export"
msgstr "%s: nu s-a putut crea: %s"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
#, fuzzy
msgid "shift count"
msgstr "shift [n]"
@@ -786,7 +812,7 @@ msgstr "shift [n]"
msgid "cannot set and unset shell options simultaneously"
msgstr ""
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr ""
@@ -798,16 +824,15 @@ msgstr ""
#: builtins/source.def:154
#, fuzzy, c-format
msgid "%s: file not found"
-msgstr "%s: comandã negãsitã"
+msgstr "%s: comandă negăsită"
#: builtins/suspend.def:102
msgid "cannot suspend"
msgstr ""
#: builtins/suspend.def:112
-#, fuzzy
msgid "cannot suspend a login shell"
-msgstr "Ieºire dintr-un login al shell-ului."
+msgstr "nu se poate suspenda un shell de autentificare"
#: builtins/type.def:235
#, c-format
@@ -820,9 +845,9 @@ msgid "%s is a shell keyword\n"
msgstr ""
#: builtins/type.def:275
-#, fuzzy, c-format
+#, c-format
msgid "%s is a function\n"
-msgstr "%s: funcþie doar în citire (readonly)"
+msgstr "%s este o funcție\n"
#: builtins/type.def:299
#, c-format
@@ -844,27 +869,27 @@ msgstr ""
msgid "%s is hashed (%s)\n"
msgstr ""
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr ""
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, fuzzy, c-format
msgid "`%c': bad command"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%c%c: opțiune invalidă"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, fuzzy, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nu s-a putut crea: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
#, fuzzy
msgid "limit"
-msgstr "limitã CPU"
+msgstr "limită CPU"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, fuzzy, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nu s-a putut crea: %s"
@@ -872,7 +897,7 @@ msgstr "%s: nu s-a putut crea: %s"
#: builtins/umask.def:115
#, fuzzy
msgid "octal number"
-msgstr "numãr de semnal invalid"
+msgstr "număr de semnal invalid"
#: builtins/umask.def:232
#, c-format
@@ -889,9 +914,9 @@ msgid " line "
msgstr ""
#: error.c:164
-#, fuzzy, c-format
+#, c-format
msgid "last command: %s\n"
-msgstr "ultima comandã."
+msgstr "ultima comandă: %s\n"
#: error.c:172
#, c-format
@@ -905,185 +930,183 @@ msgid "INFORM: "
msgstr ""
#: error.c:462
-#, fuzzy
msgid "unknown command error"
-msgstr "Eroare necunoscutã %d"
+msgstr "eroare de comandă necunoscută"
#: error.c:463
-#, fuzzy
msgid "bad command type"
-msgstr "ºi nume de comandã."
+msgstr "tip rău de comandă"
#: error.c:464
#, fuzzy
msgid "bad connector"
-msgstr "conector greºit `%d'"
+msgstr "conector greșit `%d'"
#: error.c:465
-#, fuzzy
msgid "bad jump"
-msgstr "Salt invalid %d"
+msgstr "salt rău"
#: error.c:503
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: variabilã fãrã limitã"
+msgstr "%s: variabilă fără limită"
-#: eval.c:245
-#, fuzzy, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
-msgstr "%ca expirat aºteptând introducere de date: auto-logout\n"
+msgstr "\aa expirat așteptând introducerea datelor: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr ""
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr ""
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
#, fuzzy
msgid "pipe error"
-msgstr "eroare de legãturã (pipe): %s"
+msgstr "eroare de legătură (pipe): %s"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
+msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
-msgstr "%s: comandã negãsitã"
+msgstr "%s: comandă negăsită"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr ""
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, fuzzy, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: este director"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
-msgstr "%s: nu se poate executa fiºierul binar"
+msgstr "%s: nu se poate executa fișierul binar"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr ""
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, fuzzy, c-format
msgid "cannot duplicate fd %d to fd %d"
-msgstr "nu se poate duplica fd %d în fd 0: %s"
+msgstr "nu se poate duplica fd %d în fd 0: %s"
#: expr.c:263
msgid "expression recursion level exceeded"
-msgstr "nivel de recursivitate al expresiei depãºit"
+msgstr "nivel de recursivitate al expresiei depășit"
#: expr.c:291
-#, fuzzy
msgid "recursion stack underflow"
-msgstr "Stivã recursivitate prea puþin folositã(underflow)"
+msgstr "stivă recursivă prea puțin folosită (underflow)"
#: expr.c:477
msgid "syntax error in expression"
-msgstr "eroare de sintaxã în expresie "
+msgstr "eroare de sintaxă în expresie"
#: expr.c:521
msgid "attempted assignment to non-variable"
-msgstr "s-a încercat asignare cãtre non-variabilã"
+msgstr "s-a încercat asignare către non-variabilă"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "eroare de sintaxã în expresie "
+msgstr "eroare de sintaxă în atribuirea variabilei"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
-msgstr "împãrþire la 0"
+msgstr "împărțire la 0"
-#: expr.c:591
+#: expr.c:592
#, fuzzy
msgid "bug: bad expassign token"
-msgstr "bug: identificator(token) expassign greºit %d"
+msgstr "bug: identificator(token) expassign greșit %d"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
-msgstr "`:' aºteptat dupã expresie condiþionalã"
+msgstr "`:' așteptat după expresie condițională"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr ""
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
-msgstr "`)' lipsã"
+msgstr "`)' lipsă"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
#, fuzzy
msgid "syntax error: operand expected"
-msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
+msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr ""
-#: expr.c:1510
-#, fuzzy, c-format
+#: expr.c:1513
+#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
-msgstr "%s: %s: %s (identificatorul erorii este \"%s\")\n"
+msgstr "%s%s%s: %s (identificatorul erorii este „%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr ""
-#: expr.c:1588
+#: expr.c:1582
+msgid "invalid integer constant"
+msgstr ""
+
+#: expr.c:1598
msgid "value too great for base"
-msgstr "valoare prea mare pentru bazã"
+msgstr "valoare prea mare pentru bază"
-#: expr.c:1637
-#, fuzzy, c-format
+#: expr.c:1647
+#, c-format
msgid "%s: expression error\n"
-msgstr "eroare de redirectare"
+msgstr "%s: eroare în expresie\n"
-#: general.c:69
+#: general.c:70
#, fuzzy
msgid "getcwd: cannot access parent directories"
-msgstr "getwd: nu s-au putut accesa directoarele pãrinte"
+msgstr "getwd: nu s-au putut accesa directoarele părinte"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr ""
@@ -1092,210 +1115,228 @@ msgstr ""
#, fuzzy, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
msgstr ""
-"nu se poate aloca descriptor de fiºier nou pentru inputul bash din fd %d: %s"
+"nu se poate aloca descriptor de fișier nou pentru inputul bash din fd %d: %s"
#: input.c:274
#, fuzzy, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "check_bash_input: buffer deja existent pentru fd nou %d"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr ""
-#: jobs.c:1084
+#: jobs.c:906
#, c-format
-msgid "forked pid %d appears in running job %d"
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1203
+#: jobs.c:959
#, c-format
-msgid "deleting stopped job %d with process group %ld"
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
msgstr ""
-#: jobs.c:1307
+#: jobs.c:1283
#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
+msgid "forked pid %d appears in running job %d"
+msgstr ""
+
+#: jobs.c:1402
+#, c-format
+msgid "deleting stopped job %d with process group %ld"
msgstr ""
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
-#: jobs.c:1639
-#, fuzzy, c-format
+#: jobs.c:1850
+#, c-format
msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: Nu existã pid-ul (%d)!\n"
+msgstr "describe_pid: %ld: nu există un asemenea pid"
-#: jobs.c:1654
-#, fuzzy, c-format
+#: jobs.c:1865
+#, c-format
msgid "Signal %d"
-msgstr "Semnal Necunoscut #%d"
+msgstr "Semnal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Finalizat"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stopat"
-#: jobs.c:1677
-#, fuzzy, c-format
+#: jobs.c:1888
+#, c-format
msgid "Stopped(%s)"
-msgstr "Stopat"
+msgstr "Oprit(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
-msgstr "În rulare"
+msgstr "ÃŽn rulare"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Finalizat(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
-msgstr "Ieºire %d"
+msgstr "Ieșire %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
-msgstr "Stare necunoscutã"
+msgstr "Stare necunoscută"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(core dumped) "
-#: jobs.c:1809
-#, fuzzy, c-format
+#: jobs.c:2020
+#, c-format
msgid " (wd: %s)"
-msgstr "(wd actual: %s)\n"
+msgstr " (wd: %s)"
-#: jobs.c:2037
-#, fuzzy, c-format
+#: jobs.c:2259
+#, c-format
msgid "child setpgid (%ld to %ld)"
-msgstr "setpgid copil (de la %d la %d) a întâlnit o eroare %d: %s\n"
+msgstr "setpgid copil (de la%ld la %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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"
+msgstr "așteptați: pid-ul %d nu este rezultat(child) al acestui shell"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr ""
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr ""
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: nu s-a putut crea: %s"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: jobul a fost terminat"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr ""
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr ""
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (core dumped)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd actual: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
#, fuzzy
msgid "initialize_job_control: getpgrp failed"
-msgstr "initialize_jobs: getpgrp eºuat: %s"
+msgstr "initialize_jobs: getpgrp eșuat: %s"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr ""
-#: jobs.c:4263
+#: jobs.c:4463
#, fuzzy
msgid "initialize_job_control: line discipline"
-msgstr "initialize_jobs: disciplinã linie: %s"
+msgstr "initialize_jobs: disciplină linie: %s"
-#: jobs.c:4273
+#: jobs.c:4473
#, fuzzy
msgid "initialize_job_control: setpgid"
-msgstr "initialize_jobs: getpgrp eºuat: %s"
+msgstr "initialize_jobs: getpgrp eșuat: %s"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr ""
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
-msgstr "nici un control de job în acest shell"
+msgstr "nici un control de job în acest shell"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr ""
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
"malloc: %s:%d: assertion botched\r\n"
msgstr ""
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "necunoscut"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr ""
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr ""
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
@@ -1337,33 +1378,33 @@ msgstr ""
msgid "network operations not supported"
msgstr ""
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr ""
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr ""
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr ""
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr ""
#: mailcheck.c:439
msgid "You have mail in $_"
-msgstr "Aveþi mail în $_"
+msgstr "Aveți mail în $_"
#: mailcheck.c:464
msgid "You have new mail in $_"
-msgstr "Aveþi mail nou în $_"
+msgstr "Aveți mail nou în $_"
#: mailcheck.c:480
#, c-format
@@ -1371,24 +1412,23 @@ msgid "The mail in %s has been read\n"
msgstr "Mailul din %s a fost citit\n"
#: make_cmd.c:317
-#, fuzzy
msgid "syntax error: arithmetic expression required"
-msgstr "eroare de sintaxã în expresie "
+msgstr "eroare de sintaxă: expresie aritmetică necesară"
#: make_cmd.c:319
#, fuzzy
msgid "syntax error: `;' unexpected"
-msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
+msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
#: make_cmd.c:320
#, fuzzy, c-format
msgid "syntax error: `((%s))'"
-msgstr "eroare de sintaxã"
+msgstr "eroare de sintaxă"
#: make_cmd.c:572
#, c-format
msgid "make_here_document: bad instruction type %d"
-msgstr "make_here_document: tip de instrucþiune greºit %d"
+msgstr "make_here_document: tip de instrucțiune greșit %d"
#: make_cmd.c:657
#, c-format
@@ -1400,117 +1440,113 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
-#, fuzzy, c-format
+#: parse.y:3581 parse.y:3957 parse.y:4556
+#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "EOF brusc în cãutare dupã `%c'"
+msgstr "EOF neaÈ™teptat în căutare după potrivirea „%câ€"
-#: parse.y:4606
-#, fuzzy
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
-msgstr "EOF brusc în cãutare dupã `%c'"
+msgstr "EOF neaÈ™teptat în căutare după „]]â€"
-#: parse.y:4611
+#: parse.y:4701
#, fuzzy, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
-msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
+msgstr "eroare de sintaxă neașteptată lângă `%s'"
-#: parse.y:4615
-#, fuzzy
+#: parse.y:4705
msgid "syntax error in conditional expression"
-msgstr "eroare de sintaxã în expresie "
+msgstr "eroare de sintaxă în expresia condițională"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr ""
-#: parse.y:4697
-#, fuzzy
+#: parse.y:4787
msgid "expected `)'"
-msgstr "se aºteaptã `)'"
+msgstr "se aÈ™tepta „)â€"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr ""
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr ""
-#: parse.y:4775
+#: parse.y:4865
#, fuzzy, c-format
msgid "unexpected token `%s', conditional binary operator expected"
-msgstr "%s: se aºteaptã operator binar"
+msgstr "%s: se așteaptă operator binar"
-#: parse.y:4779
+#: parse.y:4869
#, fuzzy
msgid "conditional binary operator expected"
-msgstr "%s: se aºteaptã operator binar"
+msgstr "%s: se așteaptă operator binar"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr ""
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr ""
-#: parse.y:4816
+#: parse.y:4906
#, fuzzy, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "`:' aºteptat dupã expresie condiþionalã"
+msgstr "`:' așteptat după expresie condițională"
-#: parse.y:4819
+#: parse.y:4909
#, fuzzy, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "`:' aºteptat dupã expresie condiþionalã"
+msgstr "`:' așteptat după expresie condițională"
-#: parse.y:4823
+#: parse.y:4913
#, fuzzy, c-format
msgid "unexpected token %d in conditional command"
-msgstr "`:' aºteptat dupã expresie condiþionalã"
+msgstr "`:' așteptat după expresie condițională"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
-msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
+msgstr "eroare de sintaxă neașteptată lângă `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, fuzzy, c-format
msgid "syntax error near `%s'"
-msgstr "eroare de sintaxã neaºteptatã lângã `%s'"
+msgstr "eroare de sintaxă neașteptată lângă `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
-msgstr "eroare de sintaxã: sfârºit de fiºier neaºteptat"
+msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
-msgstr "eroare de sintaxã"
+msgstr "eroare de sintaxă"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
-msgstr "Folosiþi \"%s\" pentru a pãrãsi shellul.\n"
+msgstr "Folosiți \"%s\" pentru a părăsi shellul.\n"
-#: parse.y:6497
-#, fuzzy
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
-msgstr "EOF brusc în cãutare dupã `%c'"
+msgstr "EOF neaÈ™teptat în căutare după perechea lui „)â€"
#: pcomplete.c:1132
#, c-format
@@ -1530,7 +1566,7 @@ msgstr ""
#: print_cmd.c:302
#, c-format
msgid "print_command: bad connector `%d'"
-msgstr "print_command: conector greºitr `%d'"
+msgstr "print_command: conector greșitr `%d'"
#: print_cmd.c:375
#, c-format
@@ -1551,560 +1587,561 @@ msgstr ""
msgid "cprintf: `%c': invalid format character"
msgstr ""
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr ""
-#: redir.c:174
+#: redir.c:204
#, fuzzy, c-format
msgid "%s: ambiguous redirect"
-msgstr "%s: Redirectare ambiguã"
+msgstr "%s: Redirectare ambiguă"
-#: redir.c:178
+#: redir.c:208
#, fuzzy, c-format
msgid "%s: cannot overwrite existing file"
-msgstr "%s: nu se poate accesa(clobber) fiºierul existent"
+msgstr "%s: nu se poate accesa(clobber) fișierul existent"
-#: redir.c:183
+#: redir.c:213
#, fuzzy, c-format
msgid "%s: restricted: cannot redirect output"
-msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
+msgstr "%s: limitat: nu se poate specifica `/' în numele comenzilor"
-#: redir.c:188
+#: redir.c:218
#, fuzzy, c-format
msgid "cannot create temp file for here-document: %s"
-msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s"
+msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s"
-#: redir.c:192
+#: redir.c:222
#, fuzzy, c-format
msgid "%s: cannot assign fd to variable"
-msgstr "%s: nu pot asigna listã membrului intervalului"
+msgstr "%s: nu pot asigna listă membrului intervalului"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr ""
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
#, fuzzy
msgid "redirection error: cannot duplicate fd"
msgstr "eroare de redirectare"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr ""
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr ""
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, fuzzy, c-format
msgid "%c%c: invalid option"
-msgstr "%c%c: opþiune invalidã"
+msgstr "%c%c: opțiune invalidă"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr ""
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr ""
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: este director"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nu am nici un nume!"
-#: shell.c:1980
+#: shell.c:2035
#, fuzzy, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU %s, versiunea %s\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
"\t%s [GNU long option] [option] script-file ...\n"
msgstr ""
-"Folosire:\t%s [GNU opþiune lungã] [opþiune] ...\n"
-"\t%s [GNU opþiune lungã] [opþiune] fiºier script ...\n"
+"Folosire:\t%s [GNU opțiune lungă] [opțiune] ...\n"
+"\t%s [GNU opțiune lungă] [opțiune] fișier script ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
-msgstr "opþiuni lungi GNU:\n"
+msgstr "Opțiuni lungi GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
-msgstr "Opþiuni ale shell-ului:\n"
+msgstr "Opțiuni ale shell-ului:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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"
+msgstr "\t-irsD sau -c comandă\t\t(doar invocație)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
-msgstr "\t-%s sau -o opþiune\n"
+msgstr "\t-%s sau -o opțiune\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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 "
+"Apăsați `%s -c \"set-ajutor\"' pentru mai multe informații despre opțiunile "
"shell-ului.\n"
-#: shell.c:2014
+#: shell.c:2069
#, 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 "
+"Apăsați `%s -c ajutor' pentru mai multe informații despre comenzile interne "
"ale shell-ului.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr ""
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Semnal fals"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Deconectare"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
-msgstr "Întrerupere"
+msgstr "ÃŽntrerupere"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
-msgstr "Pãrãsire"
+msgstr "Părăsire"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
-msgstr "Instrucþiune ilegalã"
+msgstr "Instrucțiune ilegală"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
-msgstr "instrucþiune ABORT"
+msgstr "Instrucțiune ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
-msgstr "instrucþiune EMT"
+msgstr "Instrucțiune EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
-msgstr "Excepþie virgulã mobilã"
+msgstr "Excepție virgulă mobilă"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Terminat(killed)"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Eroare de bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Eroare de segmentare (Segmentation fault)"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
-msgstr "Apelare sistem invalidã"
+msgstr "Apelare sistem invalidă"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
-msgstr "Legãturã(pipe) întreruptã"
+msgstr "Legătură(pipe) întreruptă"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
-msgstr "Ceas alarmã"
+msgstr "Ceas alarmă"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Terminat"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
-msgstr "Condiþie IO urgentã"
+msgstr "Condiție IO urgentă"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Oprit (semnal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Continuare"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Succesor mort sau oprit"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Oprit (tty input)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Oprit (tty output)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
-msgstr "I/O pregãtit"
+msgstr "I/O pregătit"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
-msgstr "limitã CPU"
+msgstr "Limită CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
-msgstr "limitã fiºier"
+msgstr "Limită fișier"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
-msgstr "Alarmã (virtual)"
+msgstr "Alarmă (virtual)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
-msgstr "Alarmã (profil)"
+msgstr "Alarmă (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
-msgstr "Fereastrã schimbatã"
+msgstr "Fereastră schimbată"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
-msgstr "Reþinere (lock) înregistrare"
+msgstr "Reținere (lock) înregistrare"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Semnal utilizator 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Semnal utilizator 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
-msgstr "Date de intrare HFT în curs de rezolvare(pending)"
+msgstr "Date de intrare HFT în curs de rezolvare(pending)"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "probleme electrice iminente"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "crash de sistem iminent"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrare proces spre alt CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "eroare de programare"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
-msgstr "mod monitor HFT acordat"
+msgstr "Mod monitor HFT acordat"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
-msgstr "mod monitor HFT retras"
+msgstr "Mod monitor HFT retras"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
-msgstr "secvenþã de sunet HFT completatã"
+msgstr "Secvență de sunet HFT completată"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr ""
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Semnal Necunoscut #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Semnal Necunoscut #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, fuzzy, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "substituþie invalidã: nu existã '%s' în %s"
+msgstr "substituție invalidă: nu există '%s' în %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
-msgstr "%s: nu pot asigna listã membrului intervalului"
+msgstr "%s: nu pot asigna listă membrului intervalului"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
#, fuzzy
msgid "cannot make pipe for process substitution"
-msgstr "nu pot face legãturã (pipe) pentru substituþia procesului: %s"
+msgstr "nu pot face legătură (pipe) pentru substituția procesului: %s"
-#: subst.c:5851
+#: subst.c:5985
#, fuzzy
msgid "cannot make child for process substitution"
msgstr "nu pot crea un proces copil pentru substituirea procesului: %s"
-#: subst.c:5920
+#: subst.c:6059
#, fuzzy, c-format
msgid "cannot open named pipe %s for reading"
-msgstr "nu pot deschide legãtura numitã %s pentru %s: %s"
+msgstr "nu pot deschide legătura numită %s pentru %s: %s"
-#: subst.c:5922
+#: subst.c:6061
#, fuzzy, c-format
msgid "cannot open named pipe %s for writing"
-msgstr "nu pot deschide legãtura numitã %s pentru %s: %s"
+msgstr "nu pot deschide legătura numită %s pentru %s: %s"
-#: subst.c:5945
-#, fuzzy, c-format
+#: subst.c:6084
+#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
-msgstr "nu se poate duplica legãtura numitã %s ca fd %d: %s "
+msgstr "nu se poate duplica țeava numită %s ca fd %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
-msgstr "substituþie invalidã: nu existã ')' de final în %s"
+msgstr "substituție invalidă: nu există ')' de final în %s"
-#: subst.c:6190
+#: subst.c:6353
#, fuzzy
msgid "cannot make pipe for command substitution"
-msgstr "nu pot face legãturi(pipes) pentru substituþia de comenzi: %s"
+msgstr "nu pot face legături(pipes) pentru substituția de comenzi: %s"
-#: subst.c:6233
+#: subst.c:6397
#, fuzzy
msgid "cannot make child for command substitution"
-msgstr "nu pot crea un copil pentru substituþia de comenzi: %s"
+msgstr "nu pot crea un copil pentru substituția de comenzi: %s"
-#: subst.c:6259
+#: subst.c:6423
#, fuzzy
msgid "command_substitute: cannot duplicate pipe as fd 1"
-msgstr "command_substitute: nu se poate duplica legãtura (pipe) ca fd 1: %s"
+msgstr "command_substitute: nu se poate duplica legătura (pipe) ca fd 1: %s"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr ""
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr ""
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
-msgstr "%s: variabilã fãrã limitã"
+msgstr "%s: variabilă fără limită"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametru null sau nesetat"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametru null sau nesetat"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
-msgstr "%s: expresie subºir < 0"
+msgstr "%s: expresie subșir < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
-msgstr "%s: substituþie invalidã"
+msgstr "%s: substituție invalidă"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
-msgstr "$%s: nu se poate asigna în acest mod"
+msgstr "$%s: nu se poate asigna în acest mod"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr ""
-#: subst.c:10043
+#: subst.c:10367
#, fuzzy, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "substituþie invalidã: nu existã ')' de final în %s"
+msgstr "substituție invalidă: nu există ')' de final în %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr ""
#: test.c:147
msgid "argument expected"
-msgstr "se aºteaptã parametru"
+msgstr "se așteaptă parametru"
#: test.c:156
#, c-format
msgid "%s: integer expression expected"
-msgstr "%s: se aºteaptã expresie întreagã (integer)"
+msgstr "%s: se așteaptă expresie întreagă (integer)"
#: test.c:265
msgid "`)' expected"
-msgstr "se aºteaptã `)'"
+msgstr "se așteaptă `)'"
#: test.c:267
#, c-format
msgid "`)' expected, found %s"
-msgstr "se aºteaptã `)', s-a primit %s"
+msgstr "se așteaptă `)', s-a primit %s"
-#: test.c:282 test.c:750 test.c:753
+#: test.c:466 test.c:799
#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: se aºteaptã operator unar"
+msgid "%s: binary operator expected"
+msgstr "%s: se așteaptă operator binar"
-#: test.c:469 test.c:793
+#: test.c:756 test.c:759
#, c-format
-msgid "%s: binary operator expected"
-msgstr "%s: se aºteaptã operator binar"
+msgid "%s: unary operator expected"
+msgstr "%s: se așteaptă operator unar"
-#: test.c:875
+#: test.c:881
msgid "missing `]'"
-msgstr "lipseºte ']'"
+msgstr "lipsește ']'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "eroare de sintaxă: sfârșit de fișier neașteptat"
+
+#: trap.c:220
#, fuzzy
msgid "invalid signal number"
-msgstr "numãr de semnal invalid"
+msgstr "număr de semnal invalid"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr ""
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
-#: trap.c:470
+#: trap.c:487
#, fuzzy, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: Semnal invalid %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
-msgstr "eroare în importarea definiþiei funcþiei pentru '%s'"
+msgstr "eroare în importarea definiției funcției pentru '%s'"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr ""
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr ""
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr ""
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr ""
-#: variables.c:4698
+#: variables.c:4771
#, fuzzy, c-format
msgid "%s has null exportstr"
msgstr "%s: parametru null sau nesetat"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr ""
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr ""
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr ""
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr ""
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr ""
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr ""
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr ""
#: version.c:47 version2.c:47
@@ -2129,7 +2166,7 @@ msgstr ""
#: xmalloc.c:93
#, fuzzy, c-format
msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
+msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)"
#: xmalloc.c:95
#, fuzzy, c-format
@@ -2139,7 +2176,7 @@ msgstr "%s: nu s-a putut crea: %s"
#: xmalloc.c:165
#, fuzzy, c-format
msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"
-msgstr "xmalloc: nu pot aloca %lu octeþi (%lu octeþi alocaþi)"
+msgstr "xmalloc: nu pot aloca %lu octeți (%lu octeți alocați)"
#: xmalloc.c:167
#, fuzzy, c-format
@@ -2161,8 +2198,8 @@ msgid ""
"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
msgstr ""
-"bind [-lpvsPVS] [-m keymap] [-f nume_fiºier] [-q nume] [-r keyseq] [keyseq:"
-"funcþie readline]"
+"bind [-lpvsPVS] [-m keymap] [-f nume_fișier] [-q nume] [-r keyseq] [keyseq:"
+"funcție readline]"
#: builtins.c:56
msgid "break [n]"
@@ -2193,16 +2230,16 @@ msgstr "pwd [-PL]"
#: builtins.c:76
msgid "command [-pVv] command [arg ...]"
-msgstr "command [-pVv] comandã [arg ...]"
+msgstr "command [-pVv] comandă [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-afFrxi] [-p] nume[=valoare] ..."
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-afFrxi] [-p] nume[=valoare] ..."
#: builtins.c:82
@@ -2221,20 +2258,21 @@ msgstr "echo [-n] [arg ...]"
#: builtins.c:92
#, fuzzy
msgid "enable [-a] [-dnps] [-f filename] [name ...]"
-msgstr "enable [-pnds] [-a] [-f nume_fiºier] [nume ...]"
+msgstr "enable [-pnds] [-a] [-f nume_fișier] [nume ...]"
#: builtins.c:94
msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring nume [arg]"
#: builtins.c:98
#, fuzzy
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a nume] fiºier [redirectare ...]"
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
+msgstr "exec [-cl] [-a nume] fișier [redirectare ...]"
#: builtins.c:100
msgid "exit [n]"
@@ -2275,11 +2313,11 @@ msgid ""
"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
"[arg...]"
msgstr ""
-"history [-c] [n] sau history -awrn [nume_fiºier] sau history -ps arg [arg...]"
+"history [-c] [n] sau history -awrn [nume_fișier] sau history -ps arg [arg...]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandã [args]"
+msgstr "jobs [-lnprs] [jobspec ...] sau jobs -x comandă [args]"
#: builtins.c:131
#, fuzzy
@@ -2311,7 +2349,7 @@ msgstr "return [n]"
#: builtins.c:142
#, fuzzy
msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o opþiune] [arg ...]"
+msgstr "set [--abefhkmnptuvxBCHP] [-o opțiune] [arg ...]"
#: builtins.c:144
#, fuzzy
@@ -2335,12 +2373,12 @@ msgstr "shift [n]"
#: builtins.c:152
#, fuzzy
msgid "source filename [arguments]"
-msgstr "nume fiºier sursã"
+msgstr "nume fișier sursă"
#: builtins.c:154
#, fuzzy
msgid ". filename [arguments]"
-msgstr ". nume fiºier"
+msgstr ". nume fișier"
#: builtins.c:157
msgid "suspend [-f]"
@@ -2367,7 +2405,7 @@ msgstr "type [-apt] nume [nume ...]"
#: builtins.c:171
#, fuzzy
msgid "ulimit [-SHabcdefiklmnpqrstuvxPT] [limit]"
-msgstr "ulimit [-SHacdfmstpnuv] [limitã]"
+msgstr "ulimit [-SHacdfmstpnuv] [limită]"
#: builtins.c:174
#, fuzzy
@@ -2376,7 +2414,7 @@ msgstr "umask [-S] [mod]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "echo [-n] [arg ...]"
#: builtins.c:181
@@ -2387,16 +2425,16 @@ msgstr "wait [n]"
#: builtins.c:184
#, fuzzy
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done"
+msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done"
#: builtins.c:186
#, fuzzy
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for NUME [în EXPRESIE ... ;] executã COMENZI; done"
+msgstr "for NUME [în EXPRESIE ... ;] execută COMENZI; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NUME [în EXPRESIE ... ;] executã COMENZI; done"
+msgstr "select NUME [în EXPRESIE ... ;] execută COMENZI; done"
#: builtins.c:190
msgid "time [-p] pipeline"
@@ -2404,7 +2442,7 @@ msgstr ""
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac"
+msgstr "case EXPRESIE în [TIPAR[[TIPAR]..) COMENZI ;;]... esac"
#: builtins.c:194
msgid ""
@@ -2444,17 +2482,16 @@ msgstr "fg [job_spec]"
#: builtins.c:208
#, fuzzy
msgid "(( expression ))"
-msgstr "se aºteaptã expresie"
+msgstr "se așteaptă expresie"
#: builtins.c:210
#, fuzzy
msgid "[[ expression ]]"
-msgstr "se aºteaptã expresie"
+msgstr "se așteaptă expresie"
#: builtins.c:212
-#, fuzzy
msgid "variables - Names and meanings of some shell variables"
-msgstr "Variabilele shell-ului sunt admise ca operanzi. Numele variabilei"
+msgstr "variabile - Numele și înțelesurile unor variabile din shell"
#: builtins.c:215
#, fuzzy
@@ -2473,7 +2510,7 @@ msgstr "dirs [-clpv] [+N] [-N]"
#: builtins.c:226
#, fuzzy
msgid "shopt [-pqsu] [-o] [optname ...]"
-msgstr "shopt [-pqsu] [-o opþiune lungã] nume_opt [nume_opt...]"
+msgstr "shopt [-pqsu] [-o opțiune lungă] nume_opt [nume_opt...]"
#: builtins.c:228
msgid "printf [-v var] format [arguments]"
@@ -2482,14 +2519,14 @@ msgstr ""
#: builtins.c:231
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
#: 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]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
#: builtins.c:239
@@ -2704,7 +2741,7 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"Nici un efect, comanda nu face nimic. Un cod de ieºire zero este returnat."
+"Nici un efect, comanda nu face nimic. Un cod de ieșire zero este returnat."
#: builtins.c:453
msgid ""
@@ -2754,6 +2791,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2781,14 +2820,14 @@ msgid ""
" assignment error occurs."
msgstr ""
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
" A synonym for `declare'. See `help declare'."
msgstr ""
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2803,7 +2842,7 @@ msgid ""
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-#: builtins.c:555
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2843,7 +2882,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -2856,7 +2895,7 @@ msgid ""
" Returns success unless a write error occurs."
msgstr ""
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -2883,7 +2922,7 @@ msgid ""
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -2895,7 +2934,7 @@ msgid ""
" Returns exit status of command or success if command is null."
msgstr ""
-#: builtins.c:650
+#: builtins.c:652
msgid ""
"Parse option arguments.\n"
" \n"
@@ -2928,15 +2967,15 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -2959,16 +2998,19 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:713
-#, fuzzy
+#: builtins.c:715
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 "Iese din shell cu starea lui N. Dacã N este omis, starea de ieºire"
+msgstr ""
+"Ieste din shell.\n"
+" \n"
+" Iese din shell cu starea lui N. Dacă N este omis, starea de ieșire\n"
+" este starea ultimei comenzi executate."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -2977,7 +3019,7 @@ msgid ""
" in a login shell."
msgstr ""
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3007,7 +3049,7 @@ msgid ""
"occurs."
msgstr ""
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3019,7 +3061,7 @@ msgid ""
" Status of command placed in foreground, or failure if an error occurs."
msgstr ""
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3033,7 +3075,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3057,7 +3099,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3079,7 +3121,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3114,7 +3156,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3138,7 +3180,7 @@ msgid ""
" If -x is used, returns the exit status of COMMAND."
msgstr ""
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3155,7 +3197,7 @@ msgid ""
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3178,7 +3220,7 @@ msgid ""
" Returns success unless an invalid option is given or an error occurs."
msgstr ""
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3223,7 +3265,7 @@ msgid ""
" If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise."
msgstr ""
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3275,7 +3317,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3287,7 +3329,7 @@ msgid ""
" Returns N, or failure if the shell is not executing a function or script."
msgstr ""
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3373,7 +3415,7 @@ msgid ""
" Returns success unless an invalid option is given."
msgstr ""
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -3395,7 +3437,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -3414,7 +3456,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -3435,7 +3477,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -3446,7 +3488,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -3460,7 +3502,7 @@ msgid ""
" FILENAME cannot be read."
msgstr ""
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -3474,7 +3516,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3557,7 +3599,7 @@ msgid ""
" false or an invalid argument is given."
msgstr ""
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -3565,7 +3607,7 @@ msgid ""
" be a literal `]', to match the opening `['."
msgstr ""
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -3577,7 +3619,7 @@ msgid ""
" Always succeeds."
msgstr ""
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -3621,7 +3663,7 @@ msgid ""
"given."
msgstr ""
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -3651,7 +3693,7 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -3682,6 +3724,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -3700,7 +3743,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -3718,7 +3761,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -3729,18 +3772,28 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -3755,7 +3808,7 @@ msgid ""
" option is given."
msgstr ""
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -3768,7 +3821,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -3785,7 +3838,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -3805,7 +3858,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -3821,7 +3874,7 @@ msgid ""
" The return status is the return status of PIPELINE."
msgstr ""
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -3832,7 +3885,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -3853,7 +3906,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -3864,7 +3917,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -3875,7 +3928,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -3888,7 +3941,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -3902,7 +3955,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -3913,7 +3966,7 @@ msgid ""
" Returns the status of the last command executed."
msgstr ""
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -3927,18 +3980,18 @@ msgid ""
" Returns the status of the resumed job."
msgstr ""
-#: builtins.c:1716
+#: builtins.c:1726
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
msgstr ""
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -3966,7 +4019,7 @@ msgid ""
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -4020,7 +4073,7 @@ msgid ""
" \t\tcommands should be saved on the history list.\n"
msgstr ""
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -4051,7 +4104,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -4078,7 +4131,7 @@ msgid ""
" change fails."
msgstr ""
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -4107,7 +4160,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -4127,7 +4180,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -4144,8 +4197,8 @@ 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"
@@ -4166,7 +4219,7 @@ msgid ""
" error occurs."
msgstr ""
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -4188,7 +4241,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -4197,7 +4250,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -4210,7 +4263,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -4242,7 +4295,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -4284,33 +4337,45 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
" A synonym for `mapfile'."
msgstr ""
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Returnează contextul apelului subrutină curent.\n"
+#~ " \n"
+#~ " Fără EXPR, returnează "
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Semnal Necunoscut #"
+
#~ msgid "Missing `}'"
-#~ msgstr "`}' lipsã"
+#~ msgstr "`}' lipsă"
#~ msgid "brace_expand> "
#~ msgstr "brace_expand> "
#~ msgid "Attempt to free unknown command type `%d'.\n"
-#~ msgstr "Încercare de eliberare(free) tip comandã necunoscutã `%d'.\n"
+#~ msgstr "Încercare de eliberare(free) tip comandă necunoscută `%d'.\n"
#~ msgid "Report this to %s\n"
-#~ msgstr "Raportaþi asta la %s\n"
+#~ msgstr "Raportaţi asta la %s\n"
#~ msgid "Stopping myself..."
-#~ msgstr "Mã opresc..."
+#~ msgstr "Mă opresc..."
#~ msgid "Tell %s to fix this someday.\n"
-#~ msgstr "Spuneþi lui %s sã repare asta într-o bun zi.\n"
+#~ msgstr "Spuneţi lui %s să repare asta într-o bun zi.\n"
#~ msgid "execute_command: bad command type `%d'"
-#~ msgstr "execute_command: tip de comandã greºitã `%d'"
+#~ msgstr "execute_command: tip de comandă greşită `%d'"
#~ msgid "real\t"
#~ msgstr "real\t"
@@ -4331,19 +4396,19 @@ msgstr ""
#~ "sis\t0m0.00s\n"
#~ msgid "cannot duplicate fd %d to fd 1: %s"
-#~ msgstr "nu se poate duplica fd %d în fd 1: %s"
+#~ msgstr "nu se poate duplica fd %d în fd 1: %s"
#~ msgid "%s: output redirection restricted"
-#~ msgstr "%s redirectare spre output limitatã"
+#~ msgstr "%s redirectare spre output limitată"
#~ msgid "Out of memory!"
-#~ msgstr "Memorie plinã!"
+#~ msgstr "Memorie plină!"
#~ msgid "You have already added item `%s'\n"
-#~ msgstr "Aþi adãugat deja elementul `%s'\n"
+#~ msgstr "Aţi adăugat deja elementul `%s'\n"
#~ msgid "You have entered %d (%d) items. The distribution is:\n"
-#~ msgstr "Aþi introdus %d (%d) elemente. Distribuþia este:\n"
+#~ msgstr "Aţi introdus %d (%d) elemente. Distribuţia este:\n"
#~ msgid "slot %3d: "
#~ msgstr "slot %3d: "
@@ -4358,47 +4423,47 @@ msgstr ""
#~ "Redirection instruction from yyparse () '%d' is\n"
#~ "out of range in make_redirection ()."
#~ msgstr ""
-#~ "Redirectare instrucþiune din yyparse () '%d' is\n"
-#~ "în afara intervalului în make_redirection ()."
+#~ "Redirectare instrucţiune din yyparse () '%d' is\n"
+#~ "în afara intervalului în make_redirection ()."
#~ msgid "clean_simple_command () got a command with type %d."
-#~ msgstr "clean_simple_command () a primit o comandã de tipul %d."
+#~ msgstr "clean_simple_command () a primit o comandă de tipul %d."
#~ msgid "got errno %d while waiting for %d"
-#~ msgstr "s-a primit errno %d în aºteptarea lui %d"
+#~ msgstr "s-a primit errno %d în aşteptarea lui %d"
#~ msgid "syntax error near unexpected token `%c'"
-#~ msgstr "eroare de sintaxã neaºteptatã lângã `%c'"
+#~ msgstr "eroare de sintaxă neaşteptată lângă `%c'"
#~ msgid "print_command: bad command type `%d'"
-#~ msgstr "print_command: tip comandã greºit `%d'"
+#~ msgstr "print_command: tip comandă greşit `%d'"
#~ msgid "cprintf: bad `%%' argument (%c)"
#~ msgstr "cprintf: parametru `%%' invalid (%c)"
#~ msgid "option `%s' requires an argument"
-#~ msgstr "opþiunea `%s' necesitã un parametru"
+#~ msgstr "opţiunea `%s' necesită un parametru"
#~ msgid "%s: unrecognized option"
-#~ msgstr "%s: opþiune necunoscutã"
+#~ msgstr "%s: opţiune necunoscută"
#~ msgid "`-c' requires an argument"
-#~ msgstr "`-c' necesitã un parametru"
+#~ msgstr "`-c' necesită un parametru"
#~ msgid "%s: cannot execute directories"
#~ msgstr "%s: directoarele nu se pot executa"
#~ msgid "Bad code in sig.c: sigprocmask"
-#~ msgstr "Cod invalid în sig.c: sigprocmask"
+#~ msgstr "Cod invalid în sig.c: sigprocmask"
#~ msgid "can't make pipes for process substitution: %s"
-#~ msgstr "nu pot face legãturi (pipes) pentru substituþia procesului: %s"
+#~ msgstr "nu pot face legături (pipes) pentru substituţia procesului: %s"
#~ msgid "reading"
-#~ msgstr "în citire"
+#~ msgstr "în citire"
#~ msgid "writing"
-#~ msgstr "în scriere"
+#~ msgstr "în scriere"
#~ msgid "process substitution"
#~ msgstr "substituire de proces"
@@ -4408,74 +4473,74 @@ 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ã"
+#~ msgstr "$%c: variabilă fără limită"
#~ msgid "%s: bad arithmetic substitution"
-#~ msgstr "%s: substituþie aritmeticã greºitã"
+#~ msgstr "%s: substituţie aritmetică greşită"
#~ msgid "-%s: binary operator expected"
-#~ msgstr "-%s: se aºteaptã operator binar"
+#~ msgstr "-%s: se aşteaptă operator binar"
#~ msgid "%s[%s: bad subscript"
-#~ msgstr "%s[%s: subsctipþie invalidã"
+#~ msgstr "%s[%s: subsctipţie invalidă"
#~ msgid "[%s: bad subscript"
-#~ msgstr "[%s: subscripþie invalidã"
+#~ msgstr "[%s: subscripţie invalidă"
#~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)"
-#~ msgstr "xrealloc: nu pot realoca %lu octeþi (%lu octeþi alocaþi)"
+#~ msgstr "xrealloc: nu pot realoca %lu octeţi (%lu octeţi alocaţi)"
#~ msgid "digits occur in two different argv-elements.\n"
-#~ msgstr "se regãsesc digiþi în douã elemente argv diferite.\n"
+#~ msgstr "se regăsesc digiţi în două elemente argv diferite.\n"
#~ msgid "option %c\n"
-#~ msgstr "opþiunea %c\n"
+#~ msgstr "opţiunea %c\n"
#~ msgid "option a\n"
-#~ msgstr "opþiunea a\n"
+#~ msgstr "opţiunea a\n"
#~ msgid "option b\n"
-#~ msgstr "opþiunea b\n"
+#~ msgstr "opţiunea b\n"
#~ msgid "option c with value `%s'\n"
-#~ msgstr "opþiunea c cu valoarea '%s'\n"
+#~ msgstr "opţiunea c cu valoarea '%s'\n"
#~ msgid "?? sh_getopt returned character code 0%o ??\n"
#~ msgstr "?? sh_getopt a returnat codul de caracter 0%o ??\n"
#~ msgid "non-option ARGV-elements: "
-#~ msgstr "elemente ARGV fãrã opþiuni: "
+#~ msgstr "elemente ARGV fără opţiuni: "
#~ msgid "%s: Unknown flag %s.\n"
#~ msgstr "%s: Marcaj (flag) necunoscut %s.\n"
#~ msgid "Unknown directive `%s'"
-#~ msgstr "Directivã necunoscutã '%s'"
+#~ msgstr "Directivă necunoscută '%s'"
#~ msgid "%s must be inside of a $BUILTIN block"
-#~ msgstr "%s trebuie sa fie înãuntrul unui bloc $BUILTIN"
+#~ msgstr "%s trebuie sa fie înăuntrul unui bloc $BUILTIN"
#~ msgid "%s found before $END"
-#~ msgstr "s-a gãsit %s înainte de $END"
+#~ msgstr "s-a găsit %s înainte de $END"
#~ msgid "%s already has a function (%s)"
-#~ msgstr "%s avea deja o funcþie (%s)"
+#~ msgstr "%s avea deja o funcţie (%s)"
#~ msgid "%s already had a docname (%s)"
#~ msgstr "%s avea deja un docname (%s)"
#~ msgid "%s already has short documentation (%s)"
-#~ msgstr "%s are deja documentaþie scurtã (%s)"
+#~ msgstr "%s are deja documentaţie scurtă (%s)"
#~ msgid "%s already has a %s definition"
-#~ msgstr "%s are deja o definiþie %s"
+#~ msgstr "%s are deja o definiţie %s"
#~ msgid "mkbuiltins: Out of virtual memory!\n"
-#~ msgstr "mkbuiltins: Memorie virtualã plinã!\n"
+#~ msgstr "mkbuiltins: Memorie virtuală plină!\n"
#~ msgid ":"
#~ msgstr ":"
@@ -4487,63 +4552,63 @@ msgstr ""
#~ msgstr "ori"
#~ msgid "%[DIGITS | WORD] [&]"
-#~ msgstr "%[DIGIÞI | CUVÂNT] [&]"
+#~ msgstr "%[DIGIŢI | CUVÂNT] [&]"
#~ msgid "variables - Some variable names and meanings"
-#~ msgstr "variabile - Câteva nume de variabile ºi ce înseamnã"
+#~ msgstr "variabile - Câteva nume de variabile şi ce înseamnă"
#~ msgid "`alias' with no arguments or with the -p option prints the list"
-#~ msgstr "`alias' fãrã parametri sau cu opþiunea -p printeazã lista"
+#~ msgstr "`alias' fără parametri sau cu opţiunea -p printează lista"
#~ msgid "of aliases in the form alias NAME=VALUE on standard output."
-#~ msgstr "aliasurilor în forma alias NUME=VALOARE la ieºirea standard"
+#~ msgstr "aliasurilor în forma alias NUME=VALOARE la ieşirea standard"
#~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given."
#~ msgstr ""
-#~ "În caz contrar, aliasul este definit pentru fiecare NUME a cãrui VALOARE "
-#~ "este datã."
+#~ "În caz contrar, aliasul este definit pentru fiecare NUME a cărui VALOARE "
+#~ "este dată."
#~ msgid "A trailing space in VALUE causes the next word to be checked for"
#~ msgstr ""
-#~ "Un spaþiu la sfârºit în VALOARE va face ca urmãtorul cuvânt sa fie "
+#~ "Un spaţiu la sfârşit în VALOARE va face ca următorul cuvânt sa fie "
#~ "interogat de"
#~ msgid "alias substitution when the alias is expanded. Alias returns"
-#~ msgstr "substituþii de alias când aliasul este extins. Aliasul returneazã"
+#~ msgstr "substituţii de alias când aliasul este extins. Aliasul returnează"
#~ msgid "true unless a NAME is given for which no alias has been defined."
#~ msgstr ""
-#~ "adevãrat în afarã de cazul în care NUME nu este dat ºi pentru care nu a "
+#~ "adevărat în afară de cazul în care NUME nu este dat şi pentru care nu a "
#~ "fost definit nici un alias."
#~ msgid ""
#~ "Remove NAMEs from the list of defined aliases. If the -a option is given,"
#~ msgstr ""
-#~ "Eliminã NUME din lista de aliasuri definite. Dacã este datã opþiunea -a,"
+#~ "Elimină NUME din lista de aliasuri definite. Dacă este dată opţiunea -a,"
#~ msgid "then remove all alias definitions."
-#~ msgstr "atunci ºterge toate definiþiile aliasurilor."
+#~ msgstr "atunci şterge toate definiţiile aliasurilor."
#~ msgid "Bind a key sequence to a Readline function, or to a macro. The"
#~ msgstr ""
-#~ "Leagã (bind) o secvenþã de taste de o funcþie Readline, sau de un macro. "
+#~ "Leagă (bind) o secvenţă de taste de o funcţie Readline, sau de un macro. "
#~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be"
#~ msgstr ""
-#~ "Sintaxa este echivalentã cu cea întâlnitã în ~/.inputrc, dar trebuie"
+#~ "Sintaxa este echivalentă cu cea întâlnită în ~/.inputrc, dar trebuie"
#~ msgid ""
#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'."
#~ msgstr ""
-#~ "trimisã parametru singular: bind '\"\\C-x\\C-r\": re-read-init-file'."
+#~ "trimisă parametru singular: bind '\"\\C-x\\C-r\": re-read-init-file'."
#~ msgid "Arguments we accept:"
-#~ msgstr "Parametri acceptaþi:"
+#~ msgstr "Parametri acceptaţi:"
#~ msgid ""
#~ " -m keymap Use `keymap' as the keymap for the duration of this"
#~ msgstr ""
-#~ " -m keymap Foloseºte `keymap' ca ºi mapare de taste pentru "
+#~ " -m keymap FoloseÅŸte `keymap' ca ÅŸi mapare de taste pentru "
#~ "durata"
#~ msgid " command. Acceptable keymap names are emacs,"
@@ -4557,268 +4622,268 @@ msgstr ""
#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,"
#~ msgid " vi-command, and vi-insert."
-#~ msgstr " vi-command, ºi vi-insert."
+#~ msgstr " vi-command, ÅŸi vi-insert."
#~ msgid " -l List names of functions."
-#~ msgstr " -l Listeazã numele funcþiilor."
+#~ msgstr " -l Listează numele funcţiilor."
#~ msgid " -P List function names and bindings."
#~ msgstr ""
-#~ " -P Listeazã numele funcþiilor ºi legãturile (bindings)."
+#~ " -P Listează numele funcţiilor şi legăturile (bindings)."
#~ msgid ""
#~ " -p List functions and bindings in a form that can be"
#~ msgstr ""
-#~ " -p Listeazã funcþiile ºi legãturile (bindings) într-o "
-#~ "formã care"
+#~ " -p Listează funcţiile şi legăturile (bindings) într-o "
+#~ "formă care"
#~ msgid " reused as input."
-#~ msgstr " poate fi refolositã ca intrare(input)."
+#~ msgstr " poate fi refolosită ca intrare(input)."
#~ msgid " -r keyseq Remove the binding for KEYSEQ."
-#~ msgstr " -r keyseq Eliminã legãturile(bindings) pentru KEYSEQ."
+#~ msgstr " -r keyseq Elimină legăturile(bindings) pentru KEYSEQ."
#~ msgid " -f filename Read key bindings from FILENAME."
#~ msgstr ""
-#~ " -f nume_fiºier Citeºte legãturile (bindings) din NUME_FIªIER"
+#~ " -f nume_fişier Citeşte legăturile (bindings) din NUME_FIŞIER"
#~ msgid ""
#~ " -q function-name Query about which keys invoke the named function."
-#~ msgstr " -q nume_funcþie Verificã tastele care invocã funcþia numitã."
+#~ msgstr " -q nume_funcţie Verifică tastele care invocă funcţia numită."
#~ msgid " -V List variable names and values"
-#~ msgstr " -V Listeazã numele variabilelor ºi valorile"
+#~ msgstr " -V Listează numele variabilelor şi valorile"
#~ msgid ""
#~ " -v List variable names and values in a form that can"
#~ msgstr ""
-#~ " -v Listeazã numele variabilelor ºi valorile într-o "
-#~ "formã care poate"
+#~ " -v Listează numele variabilelor şi valorile într-o "
+#~ "formă care poate"
#~ msgid " be reused as input."
-#~ msgstr " fi reutilizatã ca date de intrare."
+#~ msgstr " fi reutilizată ca date de intrare."
#~ msgid ""
#~ " -S List key sequences that invoke macros and their "
#~ "values"
#~ msgstr ""
-#~ " -S Listeazã secvenþele de taste care invocã macrourile "
-#~ "ºi valorile lor"
+#~ " -S Listează secvenţele de taste care invocă macrourile "
+#~ "ÅŸi valorile lor"
#~ msgid ""
#~ " -s List key sequences that invoke macros and their "
#~ "values in"
#~ msgstr ""
-#~ " -s Listeazã secvenþele de taste care invocã macrourile "
-#~ "ºi valorile lorîntr-o"
+#~ " -s Listează secvenţele de taste care invocă macrourile "
+#~ "şi valorile lorîntr-o"
#~ msgid " a form that can be reused as input."
#~ msgstr ""
-#~ " formã care poate fi reutilizatã ca date de intrare."
+#~ " formă care poate fi reutilizată ca date de intrare."
#~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified,"
#~ msgstr ""
-#~ "Ieºire dintr-un ciclu FOR, WHILE sau UNTIL. Daca N este specificat,"
+#~ "IeÅŸire dintr-un ciclu FOR, WHILE sau UNTIL. Daca N este specificat,"
#~ msgid "break N levels."
-#~ msgstr "întrerupe N nivele"
+#~ msgstr "întrerupe N nivele"
#~ msgid "Resume the next iteration of the enclosing FOR, WHILE or UNTIL loop."
#~ msgstr ""
-#~ "Continuã urmatoarea iteraþie din ciclul închis FOR, WHILE sau UNTIL."
+#~ "Continuă urmatoarea iteraţie din ciclul închis FOR, WHILE sau UNTIL."
#~ msgid "If N is specified, resume at the N-th enclosing loop."
-#~ msgstr "Dacã N este specificat, continuã al N-ulea ciclu închis."
+#~ msgstr "Dacă N este specificat, continuă al N-ulea ciclu închis."
#~ msgid "Run a shell builtin. This is useful when you wish to rename a"
#~ msgstr ""
-#~ "Ruleazã un shell intern. Aceasta este folositoare când doriþi sa "
-#~ "redenumiþi "
+#~ "Rulează un shell intern. Aceasta este folositoare când doriţi sa "
+#~ "redenumiţi "
#~ msgid "shell builtin to be a function, but need the functionality of the"
-#~ msgstr "un shell intern drept funcþie, dar aveþi nevoie de funcþionalitatea"
+#~ msgstr "un shell intern drept funcţie, dar aveţi nevoie de funcţionalitatea"
#~ msgid "builtin within the function itself."
-#~ msgstr "funcþiei interne de asemenea."
+#~ msgstr "funcţiei interne de asemenea."
#~ msgid "Change the current directory to DIR. The variable $HOME is the"
-#~ msgstr "Schimbã directorul curent cu DIR. Variabila $HOME este"
+#~ msgstr "Schimbă directorul curent cu DIR. Variabila $HOME este"
#~ msgid "default DIR. The variable $CDPATH defines the search path for"
-#~ msgstr "DIR implicit. Variabila $CDPATH defineºte calea de cãutare pentru"
+#~ msgstr "DIR implicit. Variabila $CDPATH defineşte calea de căutare pentru"
#~ msgid "the directory containing DIR. Alternative directory names in CDPATH"
#~ msgstr ""
-#~ "directorul care conþine DIR. Numele de directoare alternative în CDPATH"
+#~ "directorul care conţine DIR. Numele de directoare alternative în CDPATH"
#~ msgid "are separated by a colon (:). A null directory name is the same as"
#~ msgstr ""
-#~ "sunt separate de douã puncte (:). Un nume de director nul reprezintã "
+#~ "sunt separate de două puncte (:). Un nume de director nul reprezintă "
#~ "referire la"
#~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/),"
-#~ msgstr "directorul curent, i.e. `.'. Dacã DIR începe cu un slash (/),"
+#~ msgstr "directorul curent, i.e. `.'. Dacă DIR începe cu un slash (/),"
#~ msgid "then $CDPATH is not used. If the directory is not found, and the"
-#~ msgstr "atunci $CDPATH nu este folositã. Dacã directorul nu este gãsit, ºi"
+#~ msgstr "atunci $CDPATH nu este folosită. Dacă directorul nu este găsit, şi"
#~ msgid "shell option `cdable_vars' is set, then try the word as a variable"
#~ msgstr ""
-#~ "opþiunea de shell `cdable_vars' este setatã, atunci cuvântul este un nume"
+#~ "opţiunea de shell `cdable_vars' este setată, atunci cuvântul este un nume"
#~ msgid "name. If that variable has a value, then cd to the value of that"
#~ msgstr ""
-#~ "de variabilã. Dacã variabila are o valoare, se va face cd pe valoarea "
+#~ "de variabilă. Dacă variabila are o valoare, se va face cd pe valoarea "
#~ "acelei"
#~ msgid ""
#~ "variable. The -P option says to use the physical directory structure"
#~ msgstr ""
-#~ "variabile. Opþiunea -P trimite la folosirea structurii fizice de "
+#~ "variabile. Opţiunea -P trimite la folosirea structurii fizice de "
#~ "directoare"
#~ msgid ""
#~ "instead of following symbolic links; the -L option forces symbolic links"
#~ msgstr ""
-#~ "în loc de urmarea legãturilor simbolice; opþiunea -L forþeazã urmarea"
+#~ "în loc de urmarea legăturilor simbolice; opţiunea -L forţează urmarea"
#~ msgid "to be followed."
-#~ msgstr "legãturilor simbolice."
+#~ msgstr "legăturilor simbolice."
#~ msgid "Print the current working directory. With the -P option, pwd prints"
-#~ msgstr "Afiºeazã directorul de lucru curent. Cu opþiunea -P, pwd afiºeazã"
+#~ msgstr "Afişează directorul de lucru curent. Cu opţiunea -P, pwd afişează"
#~ msgid "the physical directory, without any symbolic links; the -L option"
-#~ msgstr "directoarele simbolice, fãrã nici o legãturã simbolicã; opþiunea -L"
+#~ msgstr "directoarele simbolice, fără nici o legătură simbolică; opţiunea -L"
#~ msgid "makes pwd follow symbolic links."
-#~ msgstr "face ca pwd sã urmeze legãturile simbolice."
+#~ msgstr "face ca pwd să urmeze legăturile simbolice."
#~ msgid ""
#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell"
#~ msgstr ""
-#~ "Ruleazã COMANDA cu PARAMETRI ignorând funcþiile shellului. Dacã aveþi"
+#~ "Rulează COMANDA cu PARAMETRI ignorând funcţiile shellului. Dacă aveţi"
#~ msgid "function called `ls', and you wish to call the command `ls', you can"
#~ msgstr ""
-#~ "o funcþie a shellului care se cheamã `ls', ºi doriþi sa numiþi comanda "
-#~ "`ls', puteþi"
+#~ "o funcţie a shellului care se cheamă `ls', şi doriţi sa numiţi comanda "
+#~ "`ls', puteţi"
#~ msgid ""
#~ "say \"command ls\". If the -p option is given, a default value is used"
#~ msgstr ""
-#~ "spune \"command ls\". Daca este datã opþiunea -p este folositã o valoare "
-#~ "implicitã"
+#~ "spune \"command ls\". Daca este dată opţiunea -p este folosită o valoare "
+#~ "implicită"
#~ msgid ""
#~ "for PATH that is guaranteed to find all of the standard utilities. If"
#~ msgstr ""
-#~ "pentru CALE care e garantatã sã gãseascã toate utilitarele standard. Dacã"
+#~ "pentru CALE care e garantată să găsească toate utilitarele standard. Dacă"
#~ msgid ""
#~ "the -V or -v option is given, a string is printed describing COMMAND."
#~ msgstr ""
-#~ "sunt date opþiunile -V sau -v, este tipãrit un ºir care descrie COMANDA."
+#~ "sunt date opţiunile -V sau -v, este tipărit un şir care descrie COMANDA."
#~ msgid "The -V option produces a more verbose description."
-#~ msgstr "Opþiunea -V produce o descriere mult mai detaliatã."
+#~ msgstr "Opţiunea -V produce o descriere mult mai detaliată."
#~ msgid "Declare variables and/or give them attributes. If no NAMEs are"
#~ msgstr ""
-#~ "Declarã variabile ºi/sau le dã atribute. Dacã nu e dat nici un NUME,"
+#~ "Declară variabile şi/sau le dă atribute. Dacă nu e dat nici un NUME,"
#~ msgid "given, then display the values of variables instead. The -p option"
-#~ msgstr "va afiºa în loc valorile variabilelor. Opþiunea -p"
+#~ msgstr "va afişa în loc valorile variabilelor. Opţiunea -p"
#~ msgid "will display the attributes and values of each NAME."
-#~ msgstr "va afiºa atributele ºi valorile fiecãrui NUME."
+#~ msgstr "va afişa atributele şi valorile fiecărui NUME."
#~ msgid "The flags are:"
#~ msgstr "Marcajele(flags) sunt:"
#~ msgid " -a\tto make NAMEs arrays (if supported)"
-#~ msgstr " -a\tpentru a crea intervale de NUME (dacã este suportat)"
+#~ msgstr " -a\tpentru a crea intervale de NUME (dacă este suportat)"
#~ msgid " -f\tto select from among function names only"
-#~ msgstr " -f\tpentru a selecta doar prin numele funcþiilor"
+#~ msgstr " -f\tpentru a selecta doar prin numele funcţiilor"
#~ msgid " -F\tto display function names without definitions"
-#~ msgstr " -F\tpentru a afiºa numele funcþiilor fãrã definiþii"
+#~ msgstr " -F\tpentru a afişa numele funcţiilor fără definiţii"
#~ msgid " -r\tto make NAMEs readonly"
-#~ msgstr " -r\tpentru a face NUME doar în citire (readonly)"
+#~ msgstr " -r\tpentru a face NUME doar în citire (readonly)"
#~ msgid " -x\tto make NAMEs export"
#~ msgstr " -x\tpentru a exporta NUME"
#~ msgid " -i\tto make NAMEs have the `integer' attribute set"
-#~ msgstr " -i\tpentru ca NUME sã aibe setat atributul de `integer'"
+#~ msgstr " -i\tpentru ca NUME să aibe setat atributul de `integer'"
#~ msgid "Variables with the integer attribute have arithmetic evaluation (see"
-#~ msgstr "Variabilele cu atributul integer au evaluarea aritmeticã (vezi"
+#~ msgstr "Variabilele cu atributul integer au evaluarea aritmetică (vezi"
#~ msgid "`let') done when the variable is assigned to."
-#~ msgstr "`let') efectuatã când îi este atribuitã variabila."
+#~ msgstr "`let') efectuată când îi este atribuită variabila."
#~ msgid "When displaying values of variables, -f displays a function's name"
-#~ msgstr "La afiºarea valorilor variabilelor, -f afiºeazã numele funcþiei"
+#~ msgstr "La afişarea valorilor variabilelor, -f afişează numele funcţiei"
#~ msgid "and definition. The -F option restricts the display to function"
-#~ msgstr "ºi definiþia. Opþiunea -F restrânge afiºarea doar la"
+#~ msgstr "şi definiţia. Opţiunea -F restrânge afişarea doar la"
#~ msgid "name only."
-#~ msgstr "numele funcþiei."
+#~ msgstr "numele funcţiei."
#~ msgid ""
#~ "Using `+' instead of `-' turns off the given attribute instead. When"
-#~ msgstr "Folosirea `+' în locul `-' dezactiveazã atributul dat. Când"
+#~ msgstr "Folosirea `+' în locul `-' dezactivează atributul dat. Când"
#~ msgid "used in a function, makes NAMEs local, as with the `local' command."
#~ msgstr ""
-#~ "este folosit într-o funcþie, se considerã NUME locale, ca ºi în comanda "
+#~ "este folosit într-o funcţie, se consideră NUME locale, ca şi în comanda "
#~ "`local'."
#~ msgid "Obsolete. See `declare'."
-#~ msgstr "Învechit. Vezi `declare'."
+#~ msgstr "ÃŽnvechit. Vezi `declare'."
#~ msgid "Create a local variable called NAME, and give it VALUE. LOCAL"
#~ msgstr ""
-#~ "Creeazã o variabilã localã denumitã NUME, ºi îi atribuie VALOARE. LOCAL"
+#~ "Creează o variabilă locală denumită NUME, şi îi atribuie VALOARE. LOCAL"
#~ msgid "have a visible scope restricted to that function and its children."
#~ msgstr ""
-#~ "sã aibã un domeniu vizibil restrâns la acea funcþie ºi copilul (children) "
+#~ "să aibă un domeniu vizibil restrâns la acea funcţie şi copilul (children) "
#~ "ei."
#~ msgid "Output the ARGs. If -n is specified, the trailing newline is"
#~ msgstr ""
-#~ "Afiºeazã (output) ARGumenetele. Dacã -n este specificat,sfârºitul de "
+#~ "Afişează (output) ARGumenetele. Dacă -n este specificat,sfârşitul de "
#~ "linie este"
#~ msgid "suppressed. If the -e option is given, interpretation of the"
-#~ msgstr "suprimat. Dacã este datã opþiunea -e, interpretarea"
+#~ msgstr "suprimat. Dacă este dată opţiunea -e, interpretarea"
#~ msgid "following backslash-escaped characters is turned on:"
#~ msgstr ""
-#~ "urmãtorului caracterelor speciale (backslash-escaped) este activatã:"
+#~ "următorului caracterelor speciale (backslash-escaped) este activată:"
#~ msgid "\t\\a\talert (bell)"
-#~ msgstr "\t\\a\talertã (clopoþel (bell))"
+#~ msgstr "\t\\a\talertă (clopoţel (bell))"
#~ msgid "\t\\b\tbackspace"
#~ msgstr "\t\\b\tbackspace"
#~ msgid "\t\\c\tsuppress trailing newline"
-#~ msgstr "\t\\c\tsuprimã sfârºitul de linie"
+#~ msgstr "\t\\c\tsuprimă sfârşitul de linie"
#~ msgid "\t\\E\tescape character"
#~ msgstr "\t\\E\tcaracterul escape"
#~ msgid "\t\\f\tform feed"
-#~ msgstr "\t\\f\ttrecere la început de linie (form feed)"
+#~ msgstr "\t\\f\ttrecere la început de linie (form feed)"
#~ msgid "\t\\n\tnew line"
-#~ msgstr "\t\\n\tlinie nouã"
+#~ msgstr "\t\\n\tlinie nouă"
#~ msgid "\t\\r\tcarriage return"
#~ msgstr "\t\\r\tretur de car (carriage return)"
@@ -4833,207 +4898,207 @@ msgstr ""
#~ msgstr "\t\\\\\tbackslash"
#~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)."
-#~ msgstr "\t\\num\tcaracterul al cãrui cod ASCII este NUM (octal)."
+#~ msgstr "\t\\num\tcaracterul al cărui cod ASCII este NUM (octal)."
#~ msgid ""
#~ "You can explicitly turn off the interpretation of the above characters"
-#~ msgstr "Puteþi dezactiva explicit interpretarea caracterelor de mai sus"
+#~ msgstr "Puteţi dezactiva explicit interpretarea caracterelor de mai sus"
#~ msgid "with the -E option."
-#~ msgstr "cu ajutorul opþiunii -E."
+#~ msgstr "cu ajutorul opţiunii -E."
#~ msgid ""
#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed."
#~ msgstr ""
-#~ "Afiºeazã (output) ARGumentele. Dacã este specificat -n, sfârºitul de "
+#~ "Afişează (output) ARGumentele. Dacă este specificat -n, sfârşitul de "
#~ "linie este suprimat."
#~ msgid "Enable and disable builtin shell commands. This allows"
#~ msgstr ""
-#~ "Activeazã ºi dezactiveazã comenzile interne ale shell-ului. Aceasta vã"
+#~ "Activează şi dezactivează comenzile interne ale shell-ului. Aceasta vă"
#~ msgid "you to use a disk command which has the same name as a shell"
#~ msgstr ""
-#~ "permite utilizarea unei comenzi disk care sã aibã acelaºi nume ca ºi cea "
+#~ "permite utilizarea unei comenzi disk care să aibă acelaşi nume ca şi cea "
#~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise"
#~ msgstr ""
-#~ "internã a shell-ului. Dacã este folosit -n, NUME devine dezactivat; în "
+#~ "internă a shell-ului. Dacă este folosit -n, NUME devine dezactivat; în "
#~ "caz contrar"
#~ msgid "NAMEs are enabled. For example, to use the `test' found on your"
#~ msgstr ""
-#~ "NUME este activat. De exemplu, pentru a folosi funcþia `test; aflatã în"
+#~ "NUME este activat. De exemplu, pentru a folosi funcţia `test; aflată în"
#~ msgid "path instead of the shell builtin version, type `enable -n test'."
#~ msgstr ""
-#~ "calea(path) dumneavoastrã în loc de versiunea internã, tastaþi `enable -n "
+#~ "calea(path) dumneavoastră în loc de versiunea internă, tastaţi `enable -n "
#~ "test'."
#~ msgid "On systems supporting dynamic loading, the -f option may be used"
#~ msgstr ""
-#~ "Pe sistemele care suportã încãrcarea dinamicã, opþiunea -f poate fi "
-#~ "folositã"
+#~ "Pe sistemele care suportă încărcarea dinamică, opţiunea -f poate fi "
+#~ "folosită"
#~ msgid "to load new builtins from the shared object FILENAME. The -d"
#~ msgstr ""
-#~ "pentru a încãrca noile elemente (builtins) din obiectul distribuit "
-#~ "(shared object) NUME_FIªIER. Opþiunea -d"
+#~ "pentru a încărca noile elemente (builtins) din obiectul distribuit "
+#~ "(shared object) NUME_FIŞIER. Opţiunea -d"
#~ msgid "option will delete a builtin previously loaded with -f. If no"
-#~ msgstr "va ºterge un element (builtin) deja încãrcat cu -f. Dacã nu"
+#~ msgstr "va şterge un element (builtin) deja încărcat cu -f. Dacă nu"
#~ msgid "non-option names are given, or the -p option is supplied, a list"
#~ msgstr ""
-#~ "este dat nici un nume non-opþiune, sau este prezentã opþiunea -p, o listã"
+#~ "este dat nici un nume non-opţiune, sau este prezentă opţiunea -p, o listă"
#~ msgid "of builtins is printed. The -a option means to print every builtin"
#~ msgstr ""
-#~ "de elemente(builtins) este tipãritã. Opþiunea -a înseamnã tipãrirea "
-#~ "fiecãrui "
+#~ "de elemente(builtins) este tipărită. Opţiunea -a înseamnă tipărirea "
+#~ "fiecărui "
#~ msgid "with an indication of whether or not it is enabled. The -s option"
#~ msgstr ""
-#~ "element(builtin) cu o indicaþie dacã este sau nu activ. Opþiunea -s"
+#~ "element(builtin) cu o indicaţie dacă este sau nu activ. Opţiunea -s"
#~ msgid "restricts the output to the Posix.2 `special' builtins. The -n"
#~ msgstr ""
-#~ "restricþioneazã output-ul la elementele(builtins) `speciale' Posix 2. "
-#~ "Opþiunea"
+#~ "restricţionează output-ul la elementele(builtins) `speciale' Posix 2. "
+#~ "Opţiunea"
#~ msgid "option displays a list of all disabled builtins."
-#~ msgstr "-n afiºeazã o listã a tuturor elementelor(builtins) inactive."
+#~ msgstr "-n afişează o listă a tuturor elementelor(builtins) inactive."
#~ msgid ""
#~ "Read ARGs as input to the shell and execute the resulting command(s)."
#~ msgstr ""
-#~ "Citeºte ARGumente ca input al shell-ului ºi executã comanda(comenzile) "
-#~ "rezultatã(e)."
+#~ "Citeşte ARGumente ca input al shell-ului şi execută comanda(comenzile) "
+#~ "rezultată(e)."
#~ msgid "Getopts is used by shell procedures to parse positional parameters."
#~ msgstr ""
#~ "Getopts este folosit de procedurile de shell pentru a analiza(parse) "
-#~ "parametrii poziþionali."
+#~ "parametrii poziţionali."
#~ msgid "OPTSTRING contains the option letters to be recognized; if a letter"
#~ msgstr ""
-#~ "OPTSTRING conþine literele optiunilor care vor fi recunoscute; dacã o "
-#~ "literã"
+#~ "OPTSTRING conţine literele optiunilor care vor fi recunoscute; dacă o "
+#~ "literă"
#~ msgid "is followed by a colon, the option is expected to have an argument,"
-#~ msgstr "e urmatã de douã puncte, opþiunea va trebui sã aibã un parametru,"
+#~ msgstr "e urmată de două puncte, opţiunea va trebui să aibă un parametru,"
#~ msgid "which should be separated from it by white space."
-#~ msgstr "care va fi separat de aceasta printr-un spaþiu."
+#~ msgstr "care va fi separat de aceasta printr-un spaţiu."
#~ msgid "Each time it is invoked, getopts will place the next option in the"
#~ msgstr ""
-#~ "De fiecare datã când este invocat, getopts va pune urmãtoarea opþiune în"
+#~ "De fiecare dată când este invocat, getopts va pune următoarea opţiune în"
#~ msgid "shell variable $name, initializing name if it does not exist, and"
-#~ msgstr "variabile de shell $name, iniþializând name dacã nu existã, ºi"
+#~ msgstr "variabile de shell $name, iniţializând name dacă nu există, şi"
#~ msgid "the index of the next argument to be processed into the shell"
-#~ msgstr "indexul urmãtorilor parametri care vor fi procesaþi în variabila"
+#~ msgstr "indexul următorilor parametri care vor fi procesaţi în variabila"
#~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or"
#~ msgstr ""
-#~ "de shell OPTIND. OPTIND este iniþializatã cu 1 de fiecare datã când "
+#~ "de shell OPTIND. OPTIND este iniţializată cu 1 de fiecare dată când "
#~ "shellul sau"
#~ msgid "a shell script is invoked. When an option requires an argument,"
#~ msgstr ""
-#~ "un script al shellului este invocat. Când opþiunea necesitã un parametru,"
+#~ "un script al shellului este invocat. Când opţiunea necesită un parametru,"
#~ msgid "getopts places that argument into the shell variable OPTARG."
-#~ msgstr "getopts plaseazã acest parametru în variabila de shell OPTARG."
+#~ msgstr "getopts plasează acest parametru în variabila de shell OPTARG."
#~ msgid "getopts reports errors in one of two ways. If the first character"
-#~ msgstr "getopts raporteazã erori în douã feluri. Dacã primul caracter"
+#~ msgstr "getopts raportează erori în două feluri. Dacă primul caracter"
#~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In"
#~ msgstr ""
-#~ "al OPTSTRING este 'douã puncte', getopts va folosi raportarea "
-#~ "silenþioasã. În"
+#~ "al OPTSTRING este 'două puncte', getopts va folosi raportarea "
+#~ "silenţioasă. În"
#~ msgid "this mode, no error messages are printed. If an illegal option is"
#~ msgstr ""
-#~ "acest mod, nici un mesaj de eroare nu este tipãrit. Dacã o opþiune "
-#~ "ilegalã este"
+#~ "acest mod, nici un mesaj de eroare nu este tipărit. Dacă o opţiune "
+#~ "ilegală este"
#~ msgid "seen, getopts places the option character found into OPTARG. If a"
-#~ msgstr "întâlnitã, getopts plaseazã caracterul opþiunii în OPTARG. Dacã un"
+#~ msgstr "întâlnită, getopts plasează caracterul opţiunii în OPTARG. Dacă un"
#~ msgid "required argument is not found, getopts places a ':' into NAME and"
-#~ msgstr "parametru necesar nu este întâlnit, getopts pune ':' la NUME ºi"
+#~ msgstr "parametru necesar nu este întâlnit, getopts pune ':' la NUME şi"
#~ msgid "sets OPTARG to the option character found. If getopts is not in"
#~ msgstr ""
-#~ "seteazã OPTARG la caracterul întâlnit al opþiunii. Dacã getopts nu este "
-#~ "în"
+#~ "setează OPTARG la caracterul întâlnit al opţiunii. Dacă getopts nu este "
+#~ "în"
#~ msgid "silent mode, and an illegal option is seen, getopts places '?' into"
#~ msgstr ""
-#~ "modul silenþios, ºi se întâlneºte o opþiune ilegalã, getopts pune '?' în"
+#~ "modul silenţios, şi se întâlneşte o opţiune ilegală, getopts pune '?' în"
#~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'"
#~ msgstr ""
-#~ "NUME ºi deseteazã OPTARG. Dacã o opþiune necesarã nu este întâlnitã, un "
+#~ "NUME şi desetează OPTARG. Dacă o opţiune necesară nu este întâlnită, un "
#~ "'?'"
#~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is"
#~ msgstr ""
-#~ "va fi pus în NUME, OPTARG va fi desetat, ºi un mesaj de diagnosticare va "
+#~ "va fi pus în NUME, OPTARG va fi desetat, şi un mesaj de diagnosticare va "
#~ "fi"
#~ msgid "printed."
-#~ msgstr "afiºat."
+#~ msgstr "afiÅŸat."
#~ msgid "If the shell variable OPTERR has the value 0, getopts disables the"
-#~ msgstr "Dacã variabila de shell OPTERR are valoarea 0, getopts dezactiveazã"
+#~ msgstr "Dacă variabila de shell OPTERR are valoarea 0, getopts dezactivează"
#~ msgid "printing of error messages, even if the first character of"
-#~ msgstr "afiºarea mesajelor de eroare, chiar daca primul caracter al"
+#~ msgstr "afiÅŸarea mesajelor de eroare, chiar daca primul caracter al"
#~ msgid "OPTSTRING is not a colon. OPTERR has the value 1 by default."
-#~ msgstr "OPTSTRING nu este 'douã puncte'. OPTERR are implicit valoarea 1."
+#~ msgstr "OPTSTRING nu este 'două puncte'. OPTERR are implicit valoarea 1."
#~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if"
#~ msgstr ""
-#~ "Getopts analizeazã(parses) normal parametrii poziþionali ($0 - $9), dar "
-#~ "dacã"
+#~ "Getopts analizează(parses) normal parametrii poziţionali ($0 - $9), dar "
+#~ "dacă"
#~ msgid "more arguments are given, they are parsed instead."
-#~ msgstr "sunt daþi mai mulþi parametri, aceºtia sunt analizaþi în loc."
+#~ msgstr "sunt daţi mai mulţi parametri, aceştia sunt analizaţi în loc."
#~ msgid "Exec FILE, replacing this shell with the specified program."
-#~ msgstr "Exec FIªIER, înlocuind acest shell cu un program specificat."
+#~ msgstr "Exec FIŞIER, înlocuind acest shell cu un program specificat."
#~ msgid "If FILE is not specified, the redirections take effect in this"
-#~ msgstr "Dacã FIªIER nu este specificat, redirectãrile au efect în acest"
+#~ msgstr "Dacă FIŞIER nu este specificat, redirectările au efect în acest"
#~ msgid "shell. If the first argument is `-l', then place a dash in the"
#~ msgstr ""
-#~ "shell. Dacã primul parametru este `-l', atunci se va plasa o liniuþã în"
+#~ "shell. Dacă primul parametru este `-l', atunci se va plasa o liniuţă în"
#~ msgid "zeroth arg passed to FILE, as login does. If the `-c' option"
#~ msgstr ""
-#~ "al zero-ulea arg pasat FIªIERului, cum face login-ul. Dacã opþiunea `-c'"
+#~ "al zero-ulea arg pasat FIŞIERului, cum face login-ul. Dacă opţiunea `-c'"
#~ msgid "is supplied, FILE is executed with a null environment. The `-a'"
-#~ msgstr "este furnizatã, FIªIER este executat cu un mediu null. Opþiunea"
+#~ msgstr "este furnizată, FIŞIER este executat cu un mediu null. Opţiunea"
#~ msgid "option means to make set argv[0] of the executed process to NAME."
-#~ msgstr "'-a' înseamnã setarea argv[0] a procesului executat la NUME."
+#~ msgstr "'-a' înseamnă setarea argv[0] a procesului executat la NUME."
#~ msgid "If the file cannot be executed and the shell is not interactive,"
-#~ msgstr "Dacã fiºierul nu poate fi executat ºi shell-ul nu este interactiv,"
+#~ msgstr "Dacă fişierul nu poate fi executat şi shell-ul nu este interactiv,"
#~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\""
-#~ msgstr "atunci shell-ul iese, dacã variabila \"no_exit_on_failed_exec\""
+#~ msgstr "atunci shell-ul iese, dacă variabila \"no_exit_on_failed_exec\""
#~ msgid "is set."
-#~ msgstr "nu este setatã."
+#~ msgstr "nu este setată."
#~ msgid "is that of the last command executed."
#~ msgstr "este aceea a ultimei comenzi executate."
@@ -5041,283 +5106,283 @@ msgstr ""
#~ msgid ""
#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a"
#~ msgstr ""
-#~ "PRIMUL ºi ULTIMUL pot fi numere care specificã intervalul, sau PRIMUL "
+#~ "PRIMUL şi ULTIMUL pot fi numere care specifică intervalul, sau PRIMUL "
#~ "poate fi"
#~ msgid "string, which means the most recent command beginning with that"
#~ msgstr ""
-#~ "un ºir care reprezintã cea mai recentã comandã care începea cu acest"
+#~ "un şir care reprezintă cea mai recentă comandă care începea cu acest"
#~ msgid "string."
-#~ msgstr "ºir."
+#~ msgstr "ÅŸir."
#~ msgid ""
#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR,"
#~ msgstr ""
-#~ " -e ENUME selecteazã editorul de folosit. implicit este FCEDIT, apoi "
+#~ " -e ENUME selectează editorul de folosit. implicit este FCEDIT, apoi "
#~ "EDITOR,"
#~ msgid ""
#~ " then the editor which corresponds to the current readline editing"
#~ msgstr ""
-#~ " apoi editorul care corespunde cu modul de editare al liniei"
-#~ "(readline)"
+#~ " apoi editorul care corespunde cu modul de editare al "
+#~ "liniei(readline)"
#~ msgid " mode, then vi."
-#~ msgstr " curente, ºi apoi vi."
+#~ msgstr " curente, ÅŸi apoi vi."
#~ msgid " -l means list lines instead of editing."
-#~ msgstr " -l reprezintã afiºarea liniilor în locul editãrii acestora."
+#~ msgstr " -l reprezintă afişarea liniilor în locul editării acestora."
#~ msgid " -n means no line numbers listed."
-#~ msgstr " -n înseamnã cã nu vor fi afiºate numerele liniilor."
+#~ msgstr " -n înseamnă că nu vor fi afişate numerele liniilor."
#~ msgid ""
#~ " -r means reverse the order of the lines (making it newest listed "
#~ "first)."
#~ msgstr ""
-#~ " -r reprezintã inversarea ordinii liniilor (cele mai noi fiind listate "
+#~ " -r reprezintă inversarea ordinii liniilor (cele mai noi fiind listate "
#~ "primele)."
#~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is"
-#~ msgstr "Cu `fc -s [pat=rep ...] [comandã]' format, comanda este"
+#~ msgstr "Cu `fc -s [pat=rep ...] [comandă]' format, comanda este"
#~ msgid "re-executed after the substitution OLD=NEW is performed."
-#~ msgstr "reexecutatã dupã ce s-a produs substituþia VECHI=NOU."
+#~ msgstr "reexecutată după ce s-a produs substituţia VECHI=NOU."
#~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'"
-#~ msgstr "Un alias folositor este r='fc -s', aºa cã tastând `r cc'"
+#~ msgstr "Un alias folositor este r='fc -s', aşa că tastând `r cc'"
#~ msgid "runs the last command beginning with `cc' and typing `r' re-executes"
#~ msgstr ""
-#~ "se ruleazã ultima comandã care începe cu `cc' ºi tastând `r' se reexecutã"
+#~ "se rulează ultima comandă care începe cu `cc' şi tastând `r' se reexecută"
#~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If"
#~ msgstr ""
-#~ "Aduce JOB_SPEC în prim plan(foreground), ?ºi îl face jobul curent. Dacã"
+#~ "Aduce JOB_SPEC în prim plan(foreground), ?şi îl face jobul curent. Dacă"
#~ msgid "JOB_SPEC is not present, the shell's notion of the current job is"
#~ msgstr ""
-#~ "JOB_SPEC nu este prezent, este folositã noþiunea shell-ului despre jobul"
+#~ "JOB_SPEC nu este prezent, este folosită noţiunea shell-ului despre jobul"
#~ msgid "used."
#~ msgstr "curent."
#~ msgid "Place JOB_SPEC in the background, as if it had been started with"
-#~ msgstr "Pune JOB_SPEC în fundal(background), ca ºi cum ar fi fost pornit cu"
+#~ msgstr "Pune JOB_SPEC în fundal(background), ca şi cum ar fi fost pornit cu"
#~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current"
#~ msgstr ""
-#~ "`&'. Dacã JOB_SPEC nu este prezent, va fi folositã noþiunea shell-ului "
+#~ "`&'. Dacă JOB_SPEC nu este prezent, va fi folosită noţiunea shell-ului "
#~ "despre"
#~ msgid "job is used."
#~ msgstr "jobul curent."
#~ msgid "For each NAME, the full pathname of the command is determined and"
-#~ msgstr "Pentru fiecare NUME, calea întreagã a comenzii este determinatã ºi"
+#~ msgstr "Pentru fiecare NUME, calea întreagă a comenzii este determinată şi"
#~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the"
#~ msgstr ""
-#~ "reþinutã. Daca este furnizatã ºi opþiunea -p, CALE este folositã ca ºi"
+#~ "reţinută. Daca este furnizată şi opţiunea -p, CALE este folosită ca şi"
#~ msgid "full pathname of NAME, and no path search is performed. The -r"
#~ msgstr ""
-#~ "cale de cãutare întreagã a NUMElui, ºi nu se mai face cãutare în calea "
-#~ "curentã. "
+#~ "cale de căutare întreagă a NUMElui, şi nu se mai face căutare în calea "
+#~ "curentă. "
#~ msgid "option causes the shell to forget all remembered locations. If no"
#~ msgstr ""
-#~ "Opþiunea -r face ca shell-ul sã uite toate locaþiile reþinute. Dacã nu"
+#~ "Opţiunea -r face ca shell-ul să uite toate locaţiile reţinute. Dacă nu"
#~ msgid ""
#~ "arguments are given, information about remembered commands is displayed."
#~ msgstr ""
-#~ "este furnizat nici un parametru sunt afiºate informaþii despre comenzile "
-#~ "reþinute."
+#~ "este furnizat nici un parametru sunt afişate informaţii despre comenzile "
+#~ "reţinute."
#~ msgid "Display helpful information about builtin commands. If PATTERN is"
#~ msgstr ""
-#~ "Se afiºeazã informaþii folositoare despre comenzile interne. Dacã TIPAR "
+#~ "Se afişează informaţii folositoare despre comenzile interne. Dacă TIPAR "
#~ "este"
#~ msgid "specified, gives detailed help on all commands matching PATTERN,"
#~ msgstr ""
-#~ "specificat, se dã ajutor detaliat pentru toate comenzile potrivite "
+#~ "specificat, se dă ajutor detaliat pentru toate comenzile potrivite "
#~ "TIPARului,"
#~ msgid "otherwise a list of the builtins is printed."
-#~ msgstr "în caz contrar se va tipãri o listã a comenzilor interne."
+#~ msgstr "în caz contrar se va tipări o listă a comenzilor interne."
#~ msgid "Display the history list with line numbers. Lines listed with"
-#~ msgstr "Afiºeazã istoricul cu numerele liniilor. Liniile listate cu"
+#~ msgstr "Afişează istoricul cu numerele liniilor. Liniile listate cu"
#~ msgid "with a `*' have been modified. Argument of N says to list only"
-#~ msgstr "un `*' au fost modificate. Parametrul N va aduce afiºarea doar "
+#~ msgstr "un `*' au fost modificate. Parametrul N va aduce afiÅŸarea doar "
#~ msgid "the last N lines. The -c option causes the history list to be"
-#~ msgstr "a ultimelor N linii. Opþiunea -c face ca lista istoricului sã fie"
+#~ msgstr "a ultimelor N linii. Opţiunea -c face ca lista istoricului să fie"
#~ msgid ""
#~ "cleared by deleting all of the entries. The `-w' option writes out the"
-#~ msgstr "ºtearsã prin ºtergerea tuturor intrãrilor. Opþiunea `-w' scrie"
+#~ msgstr "ştearsă prin ştergerea tuturor intrărilor. Opţiunea `-w' scrie"
#~ msgid ""
#~ "current history to the history file; `-r' means to read the file and"
#~ msgstr ""
-#~ "istoricul curent în fiºierul de istoric; `-r' înseamnã citirea "
-#~ "fiºierului ºi"
+#~ "istoricul curent în fişierul de istoric; `-r' înseamnă citirea "
+#~ "fiÅŸierului ÅŸi"
#~ msgid "append the contents to the history list instead. `-a' means"
-#~ msgstr "adãugare a conþinutului listei istoricului în loc. `-a' înseamnã"
+#~ msgstr "adăugare a conţinutului listei istoricului în loc. `-a' înseamnă"
#~ msgid "to append history lines from this session to the history file."
#~ msgstr ""
-#~ "adãugare a liniilor istoricului din aceastã sesiune la fiºierul de "
+#~ "adăugare a liniilor istoricului din această sesiune la fişierul de "
#~ "istoric."
#~ msgid "Argument `-n' means to read all history lines not already read"
#~ msgstr ""
-#~ "Parametrul `-n' înseamnã citirea tuturor liniilor istoricului care nu "
+#~ "Parametrul `-n' înseamnă citirea tuturor liniilor istoricului care nu "
#~ "sunt deja citite"
#~ msgid "from the history file and append them to the history list. If"
#~ msgstr ""
-#~ "din fiºierul de istoric ºi adãugarea lor la lista istoricului. Dacã"
+#~ "din fişierul de istoric şi adăugarea lor la lista istoricului. Dacă"
#~ msgid "FILENAME is given, then that is used as the history file else"
#~ msgstr ""
-#~ "este dat NUME_FIªIER, acesta va fi utilizat ca fiºier de istoric, în caz "
+#~ "este dat NUME_FIŞIER, acesta va fi utilizat ca fişier de istoric, în caz "
#~ "contrar"
#~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history."
#~ msgstr ""
-#~ "dacã $HISTFILE are valoare, aceasta este utilizatã, altfel ~/."
+#~ "dacă $HISTFILE are valoare, aceasta este utilizată, altfel ~/."
#~ "bash_history."
#~ msgid "If the -s option is supplied, the non-option ARGs are appended to"
#~ msgstr ""
-#~ "Dacã este furnizatã opþiunea -s ARGumentele non-opþiuni sunt adãugate la"
+#~ "Dacă este furnizată opţiunea -s ARGumentele non-opţiuni sunt adăugate la"
#~ msgid "the history list as a single entry. The -p option means to perform"
-#~ msgstr "lista istoricului ca intrãri singure. Opþiunea -p înseamnã"
+#~ msgstr "lista istoricului ca intrări singure. Opţiunea -p înseamnă"
#~ msgid ""
#~ "history expansion on each ARG and display the result, without storing"
#~ msgstr ""
-#~ "expandarea istoricului la fiecare ARGument ºi afiºarea rezultatului, fãrã "
+#~ "expandarea istoricului la fiecare ARGument şi afişarea rezultatului, fără "
#~ "a stoca"
#~ msgid "anything in the history list."
-#~ msgstr "nimic în lista istoricului."
+#~ msgstr "nimic în lista istoricului."
#~ msgid "Lists the active jobs. The -l option lists process id's in addition"
#~ msgstr ""
-#~ "Listeazã joburile active. Opþiunea -l listeazã id-urile proceselor în "
-#~ "plus faþã de"
+#~ "Listează joburile active. Opţiunea -l listează id-urile proceselor în "
+#~ "plus faţă de"
#~ msgid "to the normal information; the -p option lists process id's only."
#~ msgstr ""
-#~ "informaþiile normale; optiunea -p listeazã doar id-urile proceselor."
+#~ "informaţiile normale; optiunea -p listează doar id-urile proceselor."
#~ msgid ""
#~ "If -n is given, only processes that have changed status since the last"
#~ msgstr ""
-#~ "Dacã este dat -n,sunt afiºate doar procesele care ºi-au schimbat starea"
+#~ "Dacă este dat -n,sunt afişate doar procesele care şi-au schimbat starea"
#~ msgid ""
#~ "notification are printed. JOBSPEC restricts output to that job. The"
#~ msgstr ""
-#~ "de la ultima notificare. JOBSPEC restricþioneazã output-ul spre acel "
+#~ "de la ultima notificare. JOBSPEC restricţionează output-ul spre acel "
#~ "job. "
#~ msgid "-r and -s options restrict output to running and stopped jobs only,"
#~ msgstr ""
-#~ "Opþiunile -r ºi -s restricþioneazã output-ul doar spre joburile care "
-#~ "ruleazã ºi respectiv,"
+#~ "Opţiunile -r şi -s restricţionează output-ul doar spre joburile care "
+#~ "rulează şi respectiv,"
#~ msgid "respectively. Without options, the status of all active jobs is"
-#~ msgstr "care sunt stopate. Fãrã opþiuni, este afiºatã starea joburilor"
+#~ msgstr "care sunt stopate. Fără opţiuni, este afişată starea joburilor"
#~ msgid ""
#~ "printed. If -x is given, COMMAND is run after all job specifications"
#~ msgstr ""
-#~ "active. Dacã este furnizat -x, COMANDÃ este rulatã dupã ce toate "
-#~ "specificaþiile"
+#~ "active. Dacă este furnizat -x, COMANDĂ este rulată după ce toate "
+#~ "specificaţiile"
#~ msgid ""
#~ "that appear in ARGS have been replaced with the process ID of that job's"
#~ msgstr ""
-#~ "joburilor care aparîn ARGS au fost înlocuite cu ID-urile proceselor a"
+#~ "joburilor care aparîn ARGS au fost înlocuite cu ID-urile proceselor a"
#~ msgid "process group leader."
#~ msgstr "liderului de grup al proceselor acelui job(process group-leader)."
#~ msgid "Removes each JOBSPEC argument from the table of active jobs."
-#~ msgstr "ªterge fiecare parametru JOBSPEC din tabela de joburi active."
+#~ msgstr "Åžterge fiecare parametru JOBSPEC din tabela de joburi active."
#~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If"
-#~ msgstr "Trimite proceselor numite de PID (sau JOB) semnalul SIGSPEC. Dacã"
+#~ msgstr "Trimite proceselor numite de PID (sau JOB) semnalul SIGSPEC. Dacă"
#~ msgid ""
#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'"
-#~ msgstr "SIGSPEC nu este prezent, atunci se asumã SIGTERM. Parametrul `-l'"
+#~ msgstr "SIGSPEC nu este prezent, atunci se asumă SIGTERM. Parametrul `-l'"
#~ msgid "lists the signal names; if arguments follow `-l' they are assumed to"
#~ msgstr ""
-#~ "listeazã numele semnalelor; dacã urmeazã parametri dupã `-l' se asumã cã"
+#~ "listează numele semnalelor; dacă urmează parametri după `-l' se asumă că"
#~ msgid "be signal numbers for which names should be listed. Kill is a shell"
#~ msgstr ""
#~ "sunt numere de semnale pentru care numele ar trebui listate. Kill este "
-#~ "comandã"
+#~ "comandă"
#~ msgid "builtin for two reasons: it allows job IDs to be used instead of"
#~ msgstr ""
-#~ "internã a sehll-ului din douã motive: permite utilizarea ID-urilor de "
-#~ "joburi în locul"
+#~ "internă a sehll-ului din două motive: permite utilizarea ID-urilor de "
+#~ "joburi în locul"
#~ msgid "process IDs, and, if you have reached the limit on processes that"
-#~ msgstr "ID-urilor de procese, ºi, daca s-a ajuns la limita de procese care "
+#~ msgstr "ID-urilor de procese, ÅŸi, daca s-a ajuns la limita de procese care "
#~ msgid ""
#~ "you can create, you don't have to start a process to kill another one."
#~ msgstr ""
-#~ "se pot crea, nu mai e nevoie sã se porneascã un proces pentru a omorî "
+#~ "se pot crea, nu mai e nevoie să se pornească un proces pentru a omorî "
#~ "altul."
#~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation"
#~ msgstr ""
-#~ "Fiecare ARGument este o expresie aritmeticã ce va fi evaluatã. Evaluarea"
+#~ "Fiecare ARGument este o expresie aritmetică ce va fi evaluată. Evaluarea"
#~ msgid "is done in long integers with no check for overflow, though division"
#~ msgstr ""
-#~ "se face în întregi lungi (long integers) fãrã verificãri de overflow, "
-#~ "totuºi împãrþirea"
+#~ "se face în întregi lungi (long integers) fără verificări de overflow, "
+#~ "totuşi împărţirea"
#~ msgid "by 0 is trapped and flagged as an error. The following list of"
-#~ msgstr "la 0 este reþinutã ºi marcatã ca eroare. Urmãtoarea listã de"
+#~ msgstr "la 0 este reţinută şi marcată ca eroare. Următoarea listă de"
#~ msgid "operators is grouped into levels of equal-precedence operators."
-#~ msgstr "operatori este grupatã în nivele de operatori 'equal-precedence'."
+#~ msgstr "operatori este grupată în nivele de operatori 'equal-precedence'."
#~ msgid "The levels are listed in order of decreasing precedence."
-#~ msgstr "Nivelele sunt listate în ordinea inversã a întâietãþii."
+#~ msgstr "Nivelele sunt listate în ordinea inversă a întâietăţii."
#~ msgid "\t-, +\t\tunary minus, plus"
#~ msgstr "\t-, +\t\tplus, minus unar"
#~ msgid "\t!, ~\t\tlogical and bitwise negation"
-#~ msgstr "\t!, ~\t\tnegare logicã"
+#~ msgstr "\t!, ~\t\tnegare logică"
#~ msgid "\t*, /, %\t\tmultiplication, division, remainder"
-#~ msgstr "\t*, /, %\t\tînmulþire, împãrþire, rest"
+#~ msgstr "\t*, /, %\t\tînmulţire, împărţire, rest"
#~ msgid "\t+, -\t\taddition, subtraction"
-#~ msgstr "\t+, -\t\tadãugare, scãdere"
+#~ msgstr "\t+, -\t\tadăugare, scădere"
#~ msgid "\t<<, >>\t\tleft and right bitwise shifts"
-#~ msgstr "\t<<, >>\t\toperaþii pe un bit la stânga ºi la dreapta"
+#~ msgstr "\t<<, >>\t\toperaţii pe un bit la stânga şi la dreapta"
#~ msgid "\t<=, >=, <, >\tcomparison"
#~ msgstr "\t<=, >=, <, >\tcomparare"
@@ -5326,7 +5391,7 @@ msgstr ""
#~ msgstr "\t==, !=\t\tegalitate, inegalitate"
#~ msgid "\t&\t\tbitwise AND"
-#~ msgstr "\t&\t\tªI pe un bit"
+#~ msgstr "\t&\t\tÅžI pe un bit"
#~ msgid "\t^\t\tbitwise XOR"
#~ msgstr "\t^\t\tSAU exclusiv(XOR) pe un bit"
@@ -5335,7 +5400,7 @@ msgstr ""
#~ msgstr "\t|\t\tSAU pe un bit"
#~ msgid "\t&&\t\tlogical AND"
-#~ msgstr "\t&&\t\tªI logic"
+#~ msgstr "\t&&\t\tÅžI logic"
#~ msgid "\t||\t\tlogical OR"
#~ msgstr "\t||\t\tSAU logic"
@@ -5344,7 +5409,7 @@ msgstr ""
#~ msgstr "\texpr ? expr : expr"
#~ msgid "\t\t\tconditional expression"
-#~ msgstr "\t\t\texpresie condiþionalã"
+#~ msgstr "\t\t\texpresie condiţională"
#~ msgid "\t=, *=, /=, %=,"
#~ msgstr "\t=, *=, /=, %=,"
@@ -5356,137 +5421,137 @@ msgstr ""
#~ msgstr "\t&=, ^=, |=\tatribuire"
#~ msgid "is replaced by its value (coerced to a long integer) within"
-#~ msgstr "este înlocuit de valoarea sa (trunchiatã la un întreg lung) într-o"
+#~ msgstr "este înlocuit de valoarea sa (trunchiată la un întreg lung) într-o"
#~ msgid "an expression. The variable need not have its integer attribute"
-#~ msgstr "expresie. Variabila nu trebuie sã aibã atributul sãu întreg"
+#~ msgstr "expresie. Variabila nu trebuie să aibă atributul său întreg"
#~ msgid "turned on to be used in an expression."
-#~ msgstr "activat pentru a fi folositã într-o expresie."
+#~ msgstr "activat pentru a fi folosită într-o expresie."
#~ msgid "Operators are evaluated in order of precedence. Sub-expressions in"
-#~ msgstr "Operatorii sunt evaluaþi în ordinea întâietãþii. Subexpresiile din"
+#~ msgstr "Operatorii sunt evaluaţi în ordinea întâietăţii. Subexpresiile din"
#~ msgid "parentheses are evaluated first and may override the precedence"
-#~ msgstr "paranteze sunt evaluate primele ºi pot suprascrie regulile de"
+#~ msgstr "paranteze sunt evaluate primele ÅŸi pot suprascrie regulile de"
#~ msgid "rules above."
-#~ msgstr "întâietate de mai sus."
+#~ msgstr "întâietate de mai sus."
#~ msgid "If the last ARG evaluates to 0, let returns 1; 0 is returned"
#~ msgstr ""
-#~ "Dacã ultimul ARGument este evaluat la 0 let returneazã 1; 0 este returnat"
+#~ "Dacă ultimul ARGument este evaluat la 0 let returnează 1; 0 este returnat"
#~ msgid "otherwise."
-#~ msgstr "în caz contrar."
+#~ msgstr "în caz contrar."
#~ msgid "One line is read from the standard input, and the first word is"
#~ msgstr ""
-#~ "Linia este cititã de la intrarea(input) standard, ºi primul cuvânt este"
+#~ "Linia este citită de la intrarea(input) standard, şi primul cuvânt este"
#~ msgid ""
#~ "assigned to the first NAME, the second word to the second NAME, and so"
#~ msgstr ""
-#~ "atribuit primului NUME, al doilea cuvânt celui de-al doilea NUME, ºi aºa"
+#~ "atribuit primului NUME, al doilea cuvânt celui de-al doilea NUME, şi aşa"
#~ msgid ""
#~ "on, with leftover words assigned to the last NAME. Only the characters"
#~ msgstr ""
-#~ "mai departe, cu cele rãmase atribuite ultimelor NUME. Doar caracterele"
+#~ "mai departe, cu cele rămase atribuite ultimelor NUME. Doar caracterele"
#~ msgid "found in $IFS are recognized as word delimiters. The return code is"
#~ msgstr ""
-#~ "gãsite în $IFS sunt recunoscute ca delimitatoare de cuvinte. Codul "
+#~ "găsite în $IFS sunt recunoscute ca delimitatoare de cuvinte. Codul "
#~ "returnat este"
#~ msgid ""
#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the"
#~ msgstr ""
-#~ "zero, cu excepþia cazului în care este întâlnit sfârºit de fiºier. Dacã "
+#~ "zero, cu excepţia cazului în care este întâlnit sfârşit de fişier. Dacă "
#~ "nici un NUME"
#~ msgid ""
#~ "line read is stored in the REPLY variable. If the -r option is given,"
#~ msgstr ""
-#~ "nu este furnizat, linia cititã este stocatã în variabila RÃSPUNS. Dacã e "
-#~ "datã "
+#~ "nu este furnizat, linia citită este stocată în variabila RĂSPUNS. Dacă e "
+#~ "dată "
#~ msgid "this signifies `raw' input, and backslash escaping is disabled. If"
#~ msgstr ""
-#~ "opþiunea -r, aceasta înseamnã intrare `brutã' ºi caractere speciale "
+#~ "opţiunea -r, aceasta înseamnă intrare `brută' şi caractere speciale "
#~ "dezactivate."
#~ msgid "the `-p' option is supplied, the string supplied as an argument is"
-#~ msgstr "Dacã este datã opþiunea `-p', ºirul furnizat ca argument este"
+#~ msgstr "Dacă este dată opţiunea `-p', şirul furnizat ca argument este"
#~ msgid ""
#~ "output without a trailing newline before attempting to read. If -a is"
-#~ msgstr "trimis la output cu linie nouã înainte de citire. Dacã -a este"
+#~ msgstr "trimis la output cu linie nouă înainte de citire. Dacă -a este"
#~ msgid ""
#~ "supplied, the words read are assigned to sequential indices of ARRAY,"
#~ msgstr ""
-#~ "furnizatã, cuvintele citite sunt atribuite indicilor secvenþiali de "
+#~ "furnizată, cuvintele citite sunt atribuite indicilor secvenţiali de "
#~ "INTERVAL,"
#~ msgid "starting at zero. If -e is supplied and the shell is interactive,"
#~ msgstr ""
-#~ "începând de la zero. Dacã -e este furnizat ºi shell-ul este interactiv,"
+#~ "începând de la zero. Dacă -e este furnizat şi shell-ul este interactiv,"
#~ msgid "readline is used to obtain the line."
-#~ msgstr "se va citi linia pentru obþinerea acesteia."
+#~ msgstr "se va citi linia pentru obţinerea acesteia."
#~ msgid ""
#~ "Causes a function to exit with the return value specified by N. If N"
#~ msgstr ""
-#~ "Cauzeazã terminarea unei funcþii cu valoarea specificatã de N. Dacã N"
+#~ "Cauzează terminarea unei funcţii cu valoarea specificată de N. Dacă N"
#~ msgid "is omitted, the return status is that of the last command."
-#~ msgstr "este omis, starea returnatã va fi aceea a ultimei comenzi."
+#~ msgstr "este omis, starea returnată va fi aceea a ultimei comenzi."
#~ msgid " -a Mark variables which are modified or created for export."
#~ msgstr ""
-#~ " -a Marcheazã variabilele de modificat sau create pentru export."
+#~ " -a Marchează variabilele de modificat sau create pentru export."
#~ msgid " -b Notify of job termination immediately."
-#~ msgstr " -b Notificare de terminare de job imediatã."
+#~ msgstr " -b Notificare de terminare de job imediată."
#~ msgid " -e Exit immediately if a command exits with a non-zero status."
#~ msgstr ""
-#~ " -e Iese imediat dacã existã o comandã cu stare diferitã de zero."
+#~ " -e Iese imediat dacă există o comandă cu stare diferită de zero."
#~ msgid " -f Disable file name generation (globbing)."
-#~ msgstr " -f Inhibã generarea de nume de fiºiere (globalizare)."
+#~ msgstr " -f Inhibă generarea de nume de fişiere (globalizare)."
#~ msgid " -h Remember the location of commands as they are looked up."
-#~ msgstr " -h Reþine locaþiile comenzilor pe mãsura verificãrii lor."
+#~ msgstr " -h Reţine locaţiile comenzilor pe măsura verificării lor."
#~ msgid ""
#~ " -i Force the shell to be an \"interactive\" one. Interactive shells"
#~ msgstr ""
-#~ " -i Forþeazã shell-ul sã fie unul \"interactiv\". Shell-urile "
+#~ " -i Forţează shell-ul să fie unul \"interactiv\". Shell-urile "
#~ "interactive"
#~ msgid " always read `~/.bashrc' on startup."
-#~ msgstr " citesc întotdeauna `~/.bashrc' la rulare."
+#~ msgstr " citesc întotdeauna `~/.bashrc' la rulare."
#~ msgid " -k All assignment arguments are placed in the environment for a"
-#~ msgstr " -k Toþi parametrii atribuirii sunt plasaþi în mediu pentru o"
+#~ msgstr " -k Toţi parametrii atribuirii sunt plasaţi în mediu pentru o"
#~ msgid " command, not just those that precede the command name."
-#~ msgstr " comandã, nu doar cele care preced numele comenzii."
+#~ msgstr " comandă, nu doar cele care preced numele comenzii."
#~ msgid " -m Job control is enabled."
#~ msgstr " -m Controlul job-urilor este activat."
#~ msgid " -n Read commands but do not execute them."
-#~ msgstr " -n Citeºte comenzile, dar nu le executã."
+#~ msgstr " -n Citeşte comenzile, dar nu le execută."
#~ msgid " -o option-name"
-#~ msgstr " -o nume-opþiune"
+#~ msgstr " -o nume-opţiune"
#~ msgid " Set the variable corresponding to option-name:"
-#~ msgstr " Seteazã variabila corespunzãtoare numelui opþiunii:"
+#~ msgstr " Setează variabila corespunzătoare numelui opţiunii:"
#~ msgid " allexport same as -a"
#~ msgstr " allexport la fel ca -a"
@@ -5496,7 +5561,7 @@ msgstr ""
#~ msgid " emacs use an emacs-style line editing interface"
#~ msgstr ""
-#~ " emacs foloseºte o interfaþã de editare de linii stil "
+#~ " emacs foloseşte o interfaţă de editare de linii stil "
#~ "emacs"
#~ msgid " errexit same as -e"
@@ -5509,7 +5574,7 @@ msgstr ""
#~ msgstr " histexpand la fel ca -H"
#~ msgid " ignoreeof the shell will not exit upon reading EOF"
-#~ msgstr " ignoreeof shellul nu va ieºi dupã citirea EOF"
+#~ msgstr " ignoreeof shellul nu va ieşi după citirea EOF"
#~ msgid " interactive-comments"
#~ msgstr " interactive-comments"
@@ -5517,7 +5582,7 @@ msgstr ""
#~ msgid ""
#~ " allow comments to appear in interactive commands"
#~ msgstr ""
-#~ " permite comentariilor sã aparã în comenzi "
+#~ " permite comentariilor să apară în comenzi "
#~ "interactive."
#~ msgid " keyword same as -k"
@@ -5550,12 +5615,12 @@ msgstr ""
#~ msgid ""
#~ " posix change the behavior of bash where the default"
#~ msgstr ""
-#~ " posix schimbã comportamentul bash în care implicit"
+#~ " posix schimbă comportamentul bash în care implicit"
#~ msgid ""
#~ " operation differs from the 1003.2 standard to"
#~ msgstr ""
-#~ " operaþiile diferã de standardul 1003.2 pentru"
+#~ " operaţiile diferă de standardul 1003.2 pentru"
#~ msgid " match the standard"
#~ msgstr " a se potrivi standardului"
@@ -5568,7 +5633,7 @@ msgstr ""
#~ msgid " vi use a vi-style line editing interface"
#~ msgstr ""
-#~ " vi foloseºte o interfaþã de editare de linii stil vi"
+#~ " vi foloseşte o interfaţă de editare de linii stil vi"
#~ msgid " xtrace same as -x"
#~ msgstr " xtrace la fel ca -x"
@@ -5576,64 +5641,64 @@ msgstr ""
#~ msgid ""
#~ " -p Turned on whenever the real and effective user ids do not match."
#~ msgstr ""
-#~ " -p Activat de fiecare datã când id-urile de user real ºi efectiv nu "
+#~ " -p Activat de fiecare dată când id-urile de user real şi efectiv nu "
#~ "se potrivesc."
#~ msgid " Disables processing of the $ENV file and importing of shell"
-#~ msgstr " Inhibã procesarea fiºierului $ENV ºi importarea funcþiilor"
+#~ msgstr " Inhibă procesarea fişierului $ENV şi importarea funcţiilor"
#~ msgid ""
#~ " functions. Turning this option off causes the effective uid and"
#~ msgstr ""
-#~ " shell-ului. Dezactivarea acestei opþiuni face ca uid-ul ºi gid-ul"
+#~ " shell-ului. Dezactivarea acestei opţiuni face ca uid-ul şi gid-ul"
#~ msgid " gid to be set to the real uid and gid."
-#~ msgstr " efectiv sã fie setate drept uid-ul ºi gid-ul real."
+#~ msgstr " efectiv să fie setate drept uid-ul şi gid-ul real."
#~ msgid " -t Exit after reading and executing one command."
-#~ msgstr " -t Iese dupã citirea ºi executarea unei comenzi."
+#~ msgstr " -t Iese după citirea şi executarea unei comenzi."
#~ msgid " -u Treat unset variables as an error when substituting."
-#~ msgstr " -u Trateazã variabilele nesetate drept erori în substituþie."
+#~ msgstr " -u Tratează variabilele nesetate drept erori în substituţie."
#~ msgid " -v Print shell input lines as they are read."
#~ msgstr ""
-#~ " -v Tipãreºte liniile de intrare(input) ale shell-ului pe mãsurã ce "
+#~ " -v Tipăreşte liniile de intrare(input) ale shell-ului pe măsură ce "
#~ "sunt citite."
#~ msgid " -x Print commands and their arguments as they are executed."
#~ msgstr ""
-#~ " -x Tipãreºte comenzile ºi parametrii acestora pe mãsura executãrii."
+#~ " -x Tipăreşte comenzile şi parametrii acestora pe măsura executării."
#~ msgid " -B the shell will perform brace expansion"
-#~ msgstr " -B shell-ul va executa expansiune de legãturi(brace)"
+#~ msgstr " -B shell-ul va executa expansiune de legături(brace)"
#~ msgid " -H Enable ! style history substitution. This flag is on"
#~ msgstr ""
-#~ " -H Activeazã substituþia istoricului stil ! . Acest marcaj(flag) "
+#~ " -H Activează substituţia istoricului stil ! . Acest marcaj(flag) "
#~ "este activat"
#~ msgid " by default."
-#~ msgstr " în mod implicit."
+#~ msgstr " în mod implicit."
#~ msgid " -C If set, disallow existing regular files to be overwritten"
#~ msgstr ""
-#~ " -C Dacã este setat, nu va permite suprascrierea fiºierelor existente"
+#~ " -C Dacă este setat, nu va permite suprascrierea fişierelor existente"
#~ msgid " by redirection of output."
#~ msgstr " prin redirectarea output-ului."
#~ msgid " -P If set, do not follow symbolic links when executing commands"
#~ msgstr ""
-#~ " -P Dacã este setat, nu va urma legãturile simbolice în executarea "
+#~ " -P Dacă este setat, nu va urma legăturile simbolice în executarea "
#~ "comenzilor"
#~ msgid " such as cd which change the current directory."
-#~ msgstr " precum cd care schimbã directorul curent."
+#~ msgstr " precum cd care schimbă directorul curent."
#~ msgid "Using + rather than - causes these flags to be turned off. The"
#~ msgstr ""
-#~ "Folosind + în locul lui - provoacã dezactivarea acestor marcaje(flags)."
+#~ "Folosind + în locul lui - provoacă dezactivarea acestor marcaje(flags)."
#~ msgid "flags can also be used upon invocation of the shell. The current"
#~ msgstr ""
@@ -5643,280 +5708,280 @@ msgstr ""
#~ msgid ""
#~ "set of flags may be found in $-. The remaining n ARGs are positional"
#~ msgstr ""
-#~ "curent de marcaje(flags) poate fi gãsit în $-. ARGumentele n rãmase sunt"
+#~ "curent de marcaje(flags) poate fi găsit în $-. ARGumentele n rămase sunt"
#~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no"
#~ msgstr ""
-#~ "parametri poziþionali ºi sunt atribuiþi, în ordine, lui $1, $2, .. $n. "
-#~ "Dacã nu"
+#~ "parametri poziţionali şi sunt atribuiţi, în ordine, lui $1, $2, .. $n. "
+#~ "Dacă nu"
#~ msgid "ARGs are given, all shell variables are printed."
#~ msgstr ""
-#~ "este dat nici un ARGument, sunt tipãrite toate variabilele shell-ului."
+#~ "este dat nici un ARGument, sunt tipărite toate variabilele shell-ului."
#~ msgid "For each NAME, remove the corresponding variable or function. Given"
#~ msgstr ""
-#~ "Pentru fiecare NUME, ºterge variabila sau funcþia corespunzãtoare. Dacã "
+#~ "Pentru fiecare NUME, şterge variabila sau funcţia corespunzătoare. Dacă "
#~ "se"
#~ msgid "the `-v', unset will only act on variables. Given the `-f' flag,"
#~ msgstr ""
-#~ "dã `-v', desetarea(unset) va acþiona numai pe variabile. Dacã se dã `-f',"
+#~ "dă `-v', desetarea(unset) va acţiona numai pe variabile. Dacă se dă `-f',"
#~ msgid "unset will only act on functions. With neither flag, unset first"
#~ msgstr ""
-#~ "desetarea(unset) va acþiona numai pe funcþii. Fãrã nici un marcaj(flag), "
+#~ "desetarea(unset) va acţiona numai pe funcţii. Fără nici un marcaj(flag), "
#~ msgid "tries to unset a variable, and if that fails, then tries to unset a"
#~ msgstr ""
-#~ "desetarea(unset) va încerca întâi pe variabile, ºi dacã eºueazãm va "
-#~ "încerca"
+#~ "desetarea(unset) va încerca întâi pe variabile, şi dacă eşueazăm va "
+#~ "încerca"
#~ msgid ""
#~ "function. Some variables (such as PATH and IFS) cannot be unset; also"
#~ msgstr ""
-#~ "pe o funcþie. Anumite variabile ( precum PATH ºi IFS) nu pot fi desetate"
-#~ "(unset);"
+#~ "pe o funcţie. Anumite variabile ( precum PATH şi IFS) nu pot fi "
+#~ "desetate(unset);"
#~ msgid "see readonly."
-#~ msgstr "de asemenea, vedeþi readonly."
+#~ msgstr "de asemenea, vedeţi readonly."
#~ msgid "NAMEs are marked for automatic export to the environment of"
-#~ msgstr "NUMEle sunt marcate pentru exportul automat cãtre mediul"
+#~ msgstr "NUMEle sunt marcate pentru exportul automat către mediul"
#~ msgid "subsequently executed commands. If the -f option is given,"
-#~ msgstr "comenzilor executate ulterior. Dacã este datã opþiunea -f,"
+#~ msgstr "comenzilor executate ulterior. Dacă este dată opţiunea -f,"
#~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'"
#~ msgstr ""
-#~ "NUMEle se referã la funcþii. Dacã nu este dat nici un NUME, sau este dat "
+#~ "NUMEle se referă la funcţii. Dacă nu este dat nici un NUME, sau este dat "
#~ "`-p'`,"
#~ msgid "is given, a list of all names that are exported in this shell is"
#~ msgstr ""
-#~ "va fi tipãritã o listã a tuturor numelor care sunt exportate în acest"
+#~ "va fi tipărită o listă a tuturor numelor care sunt exportate în acest"
#~ msgid "printed. An argument of `-n' says to remove the export property"
#~ msgstr "shell. Parametrul `-n' va elimina proprietatea de export "
#~ msgid "from subsequent NAMEs. An argument of `--' disables further option"
#~ msgstr ""
-#~ "din NUMEle ulterioare. Parametrul `--' dezactiveazã procesarea opþiunilor"
+#~ "din NUMEle ulterioare. Parametrul `--' dezactivează procesarea opţiunilor"
#~ msgid "processing."
#~ msgstr "viitoare."
#~ msgid ""
#~ "The given NAMEs are marked readonly and the values of these NAMEs may"
-#~ msgstr "NUMEle date sunt marcate readonly ºi valorile acestor NUME nu poate"
+#~ msgstr "NUMEle date sunt marcate readonly ÅŸi valorile acestor NUME nu poate"
#~ msgid "not be changed by subsequent assignment. If the -f option is given,"
-#~ msgstr "fi schimbat de atribuiri ulterioare. Dacã este datã opþiunea -f,"
+#~ msgstr "fi schimbat de atribuiri ulterioare. Dacă este dată opţiunea -f,"
#~ msgid "then functions corresponding to the NAMEs are so marked. If no"
-#~ msgstr "atunci funcþiile corespunzãtoare NUMElor sunt marcate. Dacã nu"
+#~ msgstr "atunci funcţiile corespunzătoare NUMElor sunt marcate. Dacă nu"
#~ msgid ""
#~ "arguments are given, or if `-p' is given, a list of all readonly names"
#~ msgstr ""
-#~ "sunt furnizaþidaþ paramet, sau este dat parametrul `-p'` o listã de nume "
+#~ "sunt furnizaţidaţ paramet, sau este dat parametrul `-p'` o listă de nume "
#~ "readonlyri "
#~ msgid ""
#~ "is printed. An argument of `-n' says to remove the readonly property"
#~ msgstr ""
-#~ "va fi tipãritã. Parametrul `-n' va elimina proprietatea de readonly"
+#~ "va fi tipărită. Parametrul `-n' va elimina proprietatea de readonly"
#~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as"
#~ msgstr ""
-#~ "pentru NUMEle ulterioare. Opþiunea `-a' reprezintã tratarea fiecãrui "
+#~ "pentru NUMEle ulterioare. Opţiunea `-a' reprezintă tratarea fiecărui "
#~ "NUME ca"
#~ msgid "an array variable. An argument of `--' disables further option"
-#~ msgstr "o variabilã interval. Parametrul `--' dezactiveazã alte opþiuni"
+#~ msgstr "o variabilă interval. Parametrul `--' dezactivează alte opţiuni"
#~ msgid ""
#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is"
#~ msgstr ""
-#~ "Parametrii poziþionali de la $N+1 ... sunt redenumiþi în $1 ... Dacã N "
+#~ "Parametrii poziţionali de la $N+1 ... sunt redenumiţi în $1 ... Dacă N "
#~ "nu este"
#~ msgid "not given, it is assumed to be 1."
-#~ msgstr "furnizat, se presupune cã e 1."
+#~ msgstr "furnizat, se presupune că e 1."
#~ msgid "Read and execute commands from FILENAME and return. The pathnames"
-#~ msgstr "Citeºte ºi executã comenzi din NUME_FIªIER ºi returnare. Cãile"
+#~ msgstr "Citeşte şi execută comenzi din NUME_FIŞIER şi returnare. Căile"
#~ msgid "in $PATH are used to find the directory containing FILENAME."
#~ msgstr ""
-#~ "din $PATH sunt folosite pentru a gãsi directorul care conþine NUME_FIªIER."
+#~ "din $PATH sunt folosite pentru a găsi directorul care conţine NUME_FIŞIER."
#~ msgid "Suspend the execution of this shell until it receives a SIGCONT"
#~ msgstr ""
-#~ "Suspendã execuþia acestui shell pânã se va primi un semnal de SIGCONT."
+#~ "Suspendă execuţia acestui shell până se va primi un semnal de SIGCONT."
#~ msgid "signal. The `-f' if specified says not to complain about this"
-#~ msgstr " Dacã este specificat `-f' va elimina avertismentele despre acest "
+#~ msgstr " Dacă este specificat `-f' va elimina avertismentele despre acest "
#~ msgid "being a login shell if it is; just suspend anyway."
#~ msgstr "login shell; va suspenda oricum."
#~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on"
-#~ msgstr "Iese cu o stare de 0 (adevãr) sau 1 (falsitate) depinzând de"
+#~ msgstr "Iese cu o stare de 0 (adevăr) sau 1 (falsitate) depinzând de"
#~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary"
#~ msgstr "evaluarea EXPR. Expresiile pot fi unare sau binare. Expresiile"
#~ msgid "expressions are often used to examine the status of a file. There"
#~ msgstr ""
-#~ "unare sunt des folosite pentru a examina starea unui fiºier. Mai existã"
+#~ "unare sunt des folosite pentru a examina starea unui fişier. Mai există"
#~ msgid "are string operators as well, and numeric comparison operators."
-#~ msgstr "operatori de ºir de asemenea, ºi operator de comparare numericã."
+#~ msgstr "operatori de şir de asemenea, şi operator de comparare numerică."
#~ msgid "File operators:"
-#~ msgstr "Operatori de fiºier:"
+#~ msgstr "Operatori de fiÅŸier:"
#~ msgid " -b FILE True if file is block special."
-#~ msgstr " -b FIªIER Adevãrat dacã fiºierul este bloc special."
+#~ msgstr " -b FIŞIER Adevărat dacă fişierul este bloc special."
#~ msgid " -c FILE True if file is character special."
-#~ msgstr " -c FIªIER Adevãrat dacã fiºierul este caracter special."
+#~ msgstr " -c FIŞIER Adevărat dacă fişierul este caracter special."
#~ msgid " -d FILE True if file is a directory."
-#~ msgstr " -b FIªIER Adevãrat dacã fiºierul este director."
+#~ msgstr " -b FIŞIER Adevărat dacă fişierul este director."
#~ msgid " -e FILE True if file exists."
-#~ msgstr " -e FIªIER Adevãrat dacã fiºierul existã."
+#~ msgstr " -e FIŞIER Adevărat dacă fişierul există."
#~ msgid " -f FILE True if file exists and is a regular file."
#~ msgstr ""
-#~ " -b FIªIER Adevãrat dacã fiºierul existã ºi este fiºier "
-#~ "obiºnuit (regular)."
+#~ " -b FIŞIER Adevărat dacă fişierul există şi este fişier "
+#~ "obiÅŸnuit (regular)."
#~ msgid " -g FILE True if file is set-group-id."
#~ msgstr ""
-#~ " -g FIªIER Adevãrat dacã fiºierul are setat id-ul de grup."
+#~ " -g FIŞIER Adevărat dacă fişierul are setat id-ul de grup."
#~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"."
#~ msgstr ""
-#~ " -h FIªIER Adevãrat dacã fiºierul este legãturã simbolicã. "
-#~ "Folosiþi \"-L\"."
+#~ " -h FIŞIER Adevărat dacă fişierul este legătură simbolică. "
+#~ "Folosiţi \"-L\"."
#~ msgid " -L FILE True if file is a symbolic link."
#~ msgstr ""
-#~ " -L FIªIER Adevãrat dacã fiºierul este legãturã simbolicã."
+#~ " -L FIŞIER Adevărat dacă fişierul este legătură simbolică."
#~ msgid " -k FILE True if file has its \"sticky\" bit set."
#~ msgstr ""
-#~ " -k FIªIER Adevãrat dacã fiºierul are setat \"sticky\" bit."
+#~ " -k FIŞIER Adevărat dacă fişierul are setat \"sticky\" bit."
#~ msgid " -p FILE True if file is a named pipe."
#~ msgstr ""
-#~ " -p FIªIER Adevãrat dacã fiºierul este o legãturã(pipe) numitã."
+#~ " -p FIŞIER Adevărat dacă fişierul este o legătură(pipe) numită."
#~ msgid " -r FILE True if file is readable by you."
-#~ msgstr " -r FIªIER Adevãrat dacã fiºierul poate fi citit de tine."
+#~ msgstr " -r FIŞIER Adevărat dacă fişierul poate fi citit de tine."
#~ msgid " -s FILE True if file exists and is not empty."
-#~ msgstr " -s FIªIER Adevãrat dacã fiºierul existã ºi nu este vid."
+#~ msgstr " -s FIŞIER Adevărat dacă fişierul există şi nu este vid."
#~ msgid " -S FILE True if file is a socket."
-#~ msgstr " -S FIªIER Adevãrat dacã fiºierul este un socket."
+#~ msgstr " -S FIŞIER Adevărat dacă fişierul este un socket."
#~ msgid " -t FD True if FD is opened on a terminal."
-#~ msgstr " -t FD Adevãrat dacã FD este deschis într-un terminal."
+#~ msgstr " -t FD Adevărat dacă FD este deschis într-un terminal."
#~ msgid " -u FILE True if the file is set-user-id."
-#~ msgstr " -u FIªIER Adevãrat dacã fiºierul are setat user id-ul."
+#~ msgstr " -u FIŞIER Adevărat dacă fişierul are setat user id-ul."
#~ msgid " -w FILE True if the file is writable by you."
-#~ msgstr " -w FIªIER Adevãrat dacã fiºierul poate fi scris de tine."
+#~ msgstr " -w FIŞIER Adevărat dacă fişierul poate fi scris de tine."
#~ msgid " -x FILE True if the file is executable by you."
#~ msgstr ""
-#~ " -x FIªIER Adevãrat dacã fiºierul poate fi executat de cãtre "
+#~ " -x FIŞIER Adevărat dacă fişierul poate fi executat de către "
#~ "tine."
#~ msgid " -O FILE True if the file is effectively owned by you."
#~ msgstr ""
-#~ " -O FIªIER Adevãrat dacã fiºierul este efectiv propriu(owned) "
-#~ "þie."
+#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) "
+#~ "Å£ie."
#~ msgid ""
#~ " -G FILE True if the file is effectively owned by your group."
#~ msgstr ""
-#~ " -O FIªIER Adevãrat dacã fiºierul este efectiv propriu(owned) "
-#~ "grupului tãu."
+#~ " -O FIŞIER Adevărat dacă fişierul este efectiv propriu(owned) "
+#~ "grupului tău."
#~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to"
#~ msgstr ""
-#~ " FIªIER1 -nt FIªIER2 Adevãrat dacã fiºier1 este mai nou decât (potrivit "
+#~ " FIŞIER1 -nt FIŞIER2 Adevărat dacă fişier1 este mai nou decât (potrivit "
#~ msgid " modification date) file2."
-#~ msgstr " datei modificãrii) fiºier2."
+#~ msgstr " datei modificării) fişier2."
#~ msgid " FILE1 -ot FILE2 True if file1 is older than file2."
#~ msgstr ""
-#~ " FIªIER1 -ot FIªIER2 Adevãrat dacã fiºier1 este mai vechi decât fiºier2."
+#~ " FIŞIER1 -ot FIŞIER2 Adevărat dacă fişier1 este mai vechi decât fişier2."
#~ msgid " FILE1 -ef FILE2 True if file1 is a hard link to file2."
#~ msgstr ""
-#~ " FIªIER1 -ef FIªIER2 Adevãrat dacã fiºier1 este hard link cãtre fiºier2."
+#~ " FIŞIER1 -ef FIŞIER2 Adevărat dacă fişier1 este hard link către fişier2."
#~ msgid "String operators:"
-#~ msgstr "Operatori de ºiruri:"
+#~ msgstr "Operatori de ÅŸiruri:"
#~ msgid " -z STRING True if string is empty."
-#~ msgstr " -z ªIR Adevãrat dacã ºirul este vid."
+#~ msgstr " -z ŞIR Adevărat dacă şirul este vid."
#~ msgid " -n STRING"
-#~ msgstr " -n ªIR"
+#~ msgstr " -n ÅžIR"
#~ msgid " STRING True if string is not empty."
-#~ msgstr " ªIR Adevãrat dacã ºirul nu este vid."
+#~ msgstr " ŞIR Adevărat dacă şirul nu este vid."
#~ msgid " STRING1 = STRING2"
-#~ msgstr " ªIR1 = ªIR2"
+#~ msgstr " ÅžIR1 = ÅžIR2"
#~ msgid " True if the strings are equal."
-#~ msgstr " Adevãrat dacã ºirurile sunt egale."
+#~ msgstr " Adevărat dacă şirurile sunt egale."
#~ msgid " STRING1 != STRING2"
-#~ msgstr " ªIR1 != ªIR2"
+#~ msgstr " ÅžIR1 != ÅžIR2"
#~ msgid " True if the strings are not equal."
-#~ msgstr " Adevãrat dacã ºirurile nu sunt egale."
+#~ msgstr " Adevărat dacă şirurile nu sunt egale."
#~ msgid " STRING1 < STRING2"
-#~ msgstr " ªIR1 < ªIR2"
+#~ msgstr " ÅžIR1 < ÅžIR2"
#~ msgid ""
#~ " True if STRING1 sorts before STRING2 lexicographically"
#~ msgstr ""
-#~ " Adevãrat dacã ªIR1 se ordoneazã lexical înaintea lui "
-#~ "ªIR2"
+#~ " Adevărat dacă ŞIR1 se ordonează lexical înaintea lui "
+#~ "ÅžIR2"
#~ msgid " STRING1 > STRING2"
-#~ msgstr " ªIR1 > ªIR2"
+#~ msgstr " ÅžIR1 > ÅžIR2"
#~ msgid ""
#~ " True if STRING1 sorts after STRING2 lexicographically"
#~ msgstr ""
-#~ " Adevãrat dacã ªIR1 se ordoneazã lexical dupã ªIR2"
+#~ " Adevărat dacă ŞIR1 se ordonează lexical după ŞIR2"
#~ msgid "Other operators:"
-#~ msgstr "Alþi operatori:"
+#~ msgstr "Alţi operatori:"
#~ msgid " ! EXPR True if expr is false."
-#~ msgstr " ! EXPR Adevãrat dacã expr e falsã."
+#~ msgstr " ! EXPR Adevărat dacă expr e falsă."
#~ msgid " EXPR1 -a EXPR2 True if both expr1 AND expr2 are true."
-#~ msgstr " EXPR1 -a EXPR2 Adevãrat dacã ºi expr1 ªI expr2 sunt adevãrate."
+#~ msgstr " EXPR1 -a EXPR2 Adevărat dacă şi expr1 ŞI expr2 sunt adevărate."
#~ msgid " EXPR1 -o EXPR2 True if either expr1 OR expr2 is true."
#~ msgstr ""
-#~ " EXPR1 -a EXPR2 Adevãrat dacã una din expr1 sau expr2 e adevãratã."
+#~ " EXPR1 -a EXPR2 Adevărat dacă una din expr1 sau expr2 e adevărată."
#~ msgid " arg1 OP arg2 Arithmetic tests. OP is one of -eq, -ne,"
#~ msgstr " arg1 OP arg2 Teste aritmetice. OP este unul din -eq, -ne,"
@@ -5925,7 +5990,7 @@ msgstr ""
#~ msgstr " -lt, -le, -gt, or -ge."
#~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal,"
-#~ msgstr "Operatorii aritmetici binari returneazã adevãrat(true) dacã ARG1 "
+#~ msgstr "Operatorii aritmetici binari returnează adevărat(true) dacă ARG1 "
#~ msgid ""
#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal"
@@ -5934,197 +5999,197 @@ msgstr ""
#~ "mare sau egal"
#~ msgid "than ARG2."
-#~ msgstr "decât ARG2."
+#~ msgstr "decât ARG2."
#~ msgid "This is a synonym for the \"test\" builtin, but the last"
-#~ msgstr "Acesta este un sinonim pentru comanda internã \"test\", dar ultimul"
+#~ msgstr "Acesta este un sinonim pentru comanda internă \"test\", dar ultimul"
#~ msgid "argument must be a literal `]', to match the opening `['."
-#~ msgstr "argument trebuie sã fie un `]' literal, pentru a închide un `['."
+#~ msgstr "argument trebuie să fie un `]' literal, pentru a închide un `['."
#~ msgid "Print the accumulated user and system times for processes run from"
#~ msgstr ""
-#~ "Afiºeazã timpurile acumulate de user ºi sistem pentru procesele rulate din"
+#~ "Afişează timpurile acumulate de user şi sistem pentru procesele rulate din"
#~ msgid "the shell."
#~ msgstr "shell."
#~ msgid "The command ARG is to be read and executed when the shell receives"
#~ msgstr ""
-#~ "ARGumentele comenzii vor fi citite ºi executate când shell-ul primeºte"
+#~ "ARGumentele comenzii vor fi citite şi executate când shell-ul primeşte"
#~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are"
#~ msgstr ""
-#~ "semnal(e). SIGNAL_SPEC. Dacã ARGumentul este absent toate semnalele"
+#~ "semnal(e). SIGNAL_SPEC. Dacă ARGumentul este absent toate semnalele"
#~ msgid "reset to their original values. If ARG is the null string each"
#~ msgstr ""
-#~ "specifice sunt resetate la valorile lor originale. Dacã ARGumentul este "
-#~ "un ºir vid"
+#~ "specifice sunt resetate la valorile lor originale. Dacă ARGumentul este "
+#~ "un ÅŸir vid"
#~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes."
#~ msgstr ""
-#~ "fiecare SIGNAL_SPEC este ignorat de shell ºi de comanda invocatã de "
+#~ "fiecare SIGNAL_SPEC este ignorat de shell şi de comanda invocată de "
#~ "acesta."
#~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from"
#~ msgstr ""
-#~ "Dacã SIGNAL_SPEC este EXIT (0) ARGumentele comenzii sunt executate la "
+#~ "Dacă SIGNAL_SPEC este EXIT (0) ARGumentele comenzii sunt executate la "
#~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every"
#~ msgstr ""
-#~ "ieºirea din shell. Dacã SIGNAL_SPEC este DEBUG, ARGument este executat"
+#~ "ieşirea din shell. Dacă SIGNAL_SPEC este DEBUG, ARGument este executat"
#~ msgid "command. If ARG is `-p' then the trap commands associated with"
#~ msgstr ""
-#~ "dupã fiecare comandã. Dacã ARGument este `-' atunci vor fi afiºate "
+#~ "după fiecare comandă. Dacă ARGument este `-' atunci vor fi afişate "
#~ "comenzile"
#~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if"
-#~ msgstr "trap asociate cu fiecare SIGNAL_SPEC. Dacã nu sunt furnizaþi "
+#~ msgstr "trap asociate cu fiecare SIGNAL_SPEC. Dacă nu sunt furnizaţi "
#~ msgid "only `-p' is given, trap prints the list of commands associated with"
#~ msgstr ""
-#~ "parametri sau este dat doar `-p', trap afiºeazã lista de comenzi asociate "
+#~ "parametri sau este dat doar `-p', trap afişează lista de comenzi asociate "
#~ "cu "
#~ msgid ""
#~ "each signal number. SIGNAL_SPEC is either a signal name in <signal.h>"
#~ msgstr ""
-#~ "fiecare numãr de semnal. SIGNAL_SPEC este ori un nume de semnal din "
+#~ "fiecare număr de semnal. SIGNAL_SPEC este ori un nume de semnal din "
#~ "<signal.h>"
#~ msgid ""
#~ "or a signal number. `trap -l' prints a list of signal names and their"
#~ msgstr ""
-#~ "sau un numãr de semnal. `trap -l' tipãreºte o listã de numere de semnale "
-#~ "ºi "
+#~ "sau un număr de semnal. `trap -l' tipăreşte o listă de numere de semnale "
+#~ "ÅŸi "
#~ msgid "corresponding numbers. Note that a signal can be sent to the shell"
#~ msgstr ""
-#~ "numerele corespunzãtoare. Notaþi cã un semnal poate fi trimis shell-ului"
+#~ "numerele corespunzătoare. Notaţi că un semnal poate fi trimis shell-ului"
#~ msgid "with \"kill -signal $$\"."
#~ msgstr "cu \"kill -signal $$\"."
#~ msgid "For each NAME, indicate how it would be interpreted if used as a"
#~ msgstr ""
-#~ "Pentru fiecare NUME, indicã în ce mod va fi interpretat dacã este "
+#~ "Pentru fiecare NUME, indică în ce mod va fi interpretat dacă este "
#~ "utilizat ca"
#~ msgid "If the -t option is used, returns a single word which is one of"
#~ msgstr ""
-#~ "Dacã este folositã opþiunea -t, returneazã un singur cuvânt care este "
+#~ "Dacă este folosită opţiunea -t, returnează un singur cuvânt care este "
#~ "unul din"
#~ msgid ""
#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an"
#~ msgstr ""
-#~ "`alias', `keyword', `function', `builtin', `file' or `', dacã NUME este un"
+#~ "`alias', `keyword', `function', `builtin', `file' or `', dacă NUME este un"
#~ msgid ""
#~ "alias, shell reserved word, shell function, shell builtin, disk file,"
#~ msgstr ""
-#~ "alias, cuvânt rezervat de shell, funcþie de shell, comandã internã, "
-#~ "fiºier de pe disk,"
+#~ "alias, cuvânt rezervat de shell, funcţie de shell, comandă internă, "
+#~ "fiÅŸier de pe disk,"
#~ msgid "or unfound, respectively."
-#~ msgstr "sau negãsit, respectiv."
+#~ msgstr "sau negăsit, respectiv."
#~ msgid "If the -p flag is used, either returns the name of the disk file"
#~ msgstr ""
-#~ "Dacã este utilizat marcajul(flag) -p se returneazã fie numele fiºierului "
+#~ "Dacă este utilizat marcajul(flag) -p se returnează fie numele fişierului "
#~ "de disk"
#~ msgid "that would be executed, or nothing if -t would not return `file'."
#~ msgstr ""
-#~ "care urmeazã sã fie executat, sau nimic dacã -t nu va returna `fiºier'."
+#~ "care urmează să fie executat, sau nimic dacă -t nu va returna `fişier'."
#~ msgid "If the -a flag is used, displays all of the places that contain an"
-#~ msgstr "Dacã este folosit -a, se vor afiºa toate locurile care conþin"
+#~ msgstr "Dacă este folosit -a, se vor afişa toate locurile care conţin"
#~ msgid ""
#~ "executable named `file'. This includes aliases and functions, if and"
#~ msgstr ""
-#~ "un executabil numit `fiºier'. Aceasta include aliasuri ºi funcþii, ºi "
+#~ "un executabil numit `fişier'. Aceasta include aliasuri şi funcţii, şi "
#~ "numai"
#~ msgid "only if the -p flag is not also used."
#~ msgstr "marcajul(flag) -p nu este folosit de asemenea."
#~ msgid "Type accepts -all, -path, and -type in place of -a, -p, and -t,"
-#~ msgstr "Type acceptã -all, -path ºi -type în loc de -a, -p ºi -t,"
+#~ msgstr "Type acceptă -all, -path şi -type în loc de -a, -p şi -t,"
#~ msgid "respectively."
#~ msgstr "respectiv"
#~ msgid "Ulimit provides control over the resources available to processes"
-#~ msgstr "Ulimit oferã control al resurselor disponibile pentru procesele"
+#~ msgstr "Ulimit oferă control al resurselor disponibile pentru procesele"
#~ msgid "started by the shell, on systems that allow such control. If an"
#~ msgstr ""
-#~ "rulate de shell, în sisteme care permit acest tip de control. Dacã este"
+#~ "rulate de shell, în sisteme care permit acest tip de control. Dacă este"
#~ msgid "option is given, it is interpreted as follows:"
-#~ msgstr "datã o opþiune, este interpretatã precum urmeazã:"
+#~ msgstr "dată o opţiune, este interpretată precum urmează:"
#~ msgid " -S\tuse the `soft' resource limit"
-#~ msgstr " -S\tfoloseºte limita `soft' a resursei"
+#~ msgstr " -S\tfoloseÅŸte limita `soft' a resursei"
#~ msgid " -H\tuse the `hard' resource limit"
-#~ msgstr " -H\tfoloseºte limita `hard' a resursei"
+#~ msgstr " -H\tfoloseÅŸte limita `hard' a resursei"
#~ msgid " -a\tall current limits are reported"
#~ msgstr " -a\tsunt raportate toate limitele curente"
#~ msgid " -c\tthe maximum size of core files created"
-#~ msgstr " -c\tmãrimea maximã de fiºiere core creatã"
+#~ msgstr " -c\tmărimea maximă de fişiere core creată"
#~ msgid " -d\tthe maximum size of a process's data segment"
-#~ msgstr " -d\ttmãrimea maximã a unui segment de date al procesului"
+#~ msgstr " -d\ttmărimea maximă a unui segment de date al procesului"
#~ msgid " -m\tthe maximum resident set size"
-#~ msgstr " -m\tmãrimea maximã de rezidenþã"
+#~ msgstr " -m\tmărimea maximă de rezidenţă"
#~ msgid " -s\tthe maximum stack size"
-#~ msgstr " -s\tmãrimea maximã a stivei(stack)"
+#~ msgstr " -s\tmărimea maximă a stivei(stack)"
#~ msgid " -t\tthe maximum amount of cpu time in seconds"
-#~ msgstr " -t\tsuma maximã a timpului cpu în secunde"
+#~ msgstr " -t\tsuma maximă a timpului cpu în secunde"
#~ msgid " -f\tthe maximum size of files created by the shell"
-#~ msgstr " -f\ttmãrimea maximã a fiºierelor create de shell"
+#~ msgstr " -f\ttmărimea maximă a fişierelor create de shell"
#~ msgid " -p\tthe pipe buffer size"
-#~ msgstr " -p\tmãrimea tamponului de legãturã (pipe buffer)"
+#~ msgstr " -p\tmărimea tamponului de legătură (pipe buffer)"
#~ msgid " -n\tthe maximum number of open file descriptors"
-#~ msgstr " -n\tnumãrul maxim de fiºiere deschise"
+#~ msgstr " -n\tnumărul maxim de fişiere deschise"
#~ msgid " -u\tthe maximum number of user processes"
-#~ msgstr " -u\tnumãrul maxim de procese utilizator"
+#~ msgstr " -u\tnumărul maxim de procese utilizator"
#~ msgid " -v\tthe size of virtual memory"
-#~ msgstr " -v\tmãrimea memoriei virtuale"
+#~ msgstr " -v\tmărimea memoriei virtuale"
#~ msgid "If LIMIT is given, it is the new value of the specified resource."
-#~ msgstr "Dacã este datã LIMITÃ, va fi noua valoare a resursei specificate."
+#~ msgstr "Dacă este dată LIMITĂ, va fi noua valoare a resursei specificate."
#~ msgid "Otherwise, the current value of the specified resource is printed."
#~ msgstr ""
-#~ "În caz contrar, este tipãritã valoarea curentã a resursei specificate."
+#~ "În caz contrar, este tipărită valoarea curentă a resursei specificate."
#~ msgid "If no option is given, then -f is assumed. Values are in 1k"
#~ msgstr ""
-#~ "Dacã nu este datã nici o opþiune se presupune -f. Valorile sunt exprimate"
+#~ "Dacă nu este dată nici o opţiune se presupune -f. Valorile sunt exprimate"
#~ msgid "increments, except for -t, which is in seconds, -p, which is in"
#~ msgstr ""
-#~ "în incrementãri de 1k, exceptând -t, care este în secunde, -p, care este "
-#~ "în"
+#~ "în incrementări de 1k, exceptând -t, care este în secunde, -p, care este "
+#~ "în"
#~ msgid "increments of 512 bytes, and -u, which is an unscaled number of"
-#~ msgstr "incrementãri de 512 octeþi, ºi -u, care este un numãr nescalat de"
+#~ msgstr "incrementări de 512 octeţi, şi -u, care este un număr nescalat de"
#~ msgid "processes."
#~ msgstr "procese."
@@ -6132,63 +6197,63 @@ msgstr ""
#~ msgid ""
#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if"
#~ msgstr ""
-#~ "Masca de crearecreation mask) a fiºierului utilizatorului e setatã la "
-#~ "MOD. Dacã"
+#~ "Masca de crearecreation mask) a fişierului utilizatorului e setată la "
+#~ "MOD. Dacă"
#~ msgid ""
#~ "`-S' is supplied, the current value of the mask is printed. The `-S'"
#~ msgstr ""
-#~ "MOD este omis sau este dat `-S', este tipãritã valoarea curentã a "
-#~ "mãºtii. Opþiunea"
+#~ "MOD este omis sau este dat `-S', este tipărită valoarea curentă a "
+#~ "măştii. Opţiunea"
#~ msgid ""
#~ "option makes the output symbolic; otherwise an octal number is output."
#~ msgstr ""
-#~ "`-S' returneazã output simbolic; în caz contrar outputul este un numãr "
+#~ "`-S' returnează output simbolic; în caz contrar outputul este un număr "
#~ "octal."
#~ msgid "If MODE begins with a digit, it is interpreted as an octal number,"
-#~ msgstr "Dacã MOD începe cu un digit, este interpretat ca numãr octal,"
+#~ msgstr "Dacă MOD începe cu un digit, este interpretat ca număr octal,"
#~ msgid ""
#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
-#~ msgstr "în caz contrar este un ºir mod simbolic premis de chmod(1)."
+#~ msgstr "în caz contrar este un şir mod simbolic premis de chmod(1)."
#~ msgid ""
#~ "Wait for the specified process and report its termination status. If"
#~ msgstr ""
-#~ "Aºteaptã dupã procesul specificat ºi raporteazã starea de terminare. Dacã"
+#~ "Aşteaptă după procesul specificat şi raportează starea de terminare. Dacă"
#~ msgid "N is not given, all currently active child processes are waited for,"
#~ msgstr ""
-#~ "N nu este dat,se aºteaptã dupã toate procesele copil(child) curente,"
+#~ "N nu este dat,se aşteaptă după toate procesele copil(child) curente,"
#~ msgid "and the return code is zero. N may be a process ID or a job"
#~ msgstr ""
-#~ "ºi codul returnat este zero. N poate fi un ID de proces sau o "
-#~ "specificaþie"
+#~ "ÅŸi codul returnat este zero. N poate fi un ID de proces sau o "
+#~ "specificaţie"
#~ msgid "specification; if a job spec is given, all processes in the job's"
-#~ msgstr "de job; Dacã este datã o specificaþie de job,se aºteaptã dupã"
+#~ msgstr "de job; Dacă este dată o specificaţie de job,se aşteaptă după"
#~ msgid "pipeline are waited for."
-#~ msgstr " toate procesele din legãturã(pipeline)."
+#~ msgstr " toate procesele din legătură(pipeline)."
#~ msgid "and the return code is zero. N is a process ID; if it is not given,"
#~ msgstr ""
-#~ "ºi codul returnat este zero. N este un ID de proces; dacã nu este dat,"
+#~ "şi codul returnat este zero. N este un ID de proces; dacă nu este dat,"
#~ msgid "all child processes of the shell are waited for."
-#~ msgstr "se va aºtepta dupã doate procesele copil(child) din shell."
+#~ msgstr "se va aştepta după doate procesele copil(child) din shell."
#~ msgid "The `for' loop executes a sequence of commands for each member in a"
#~ msgstr ""
-#~ "Ciclul `for' executã o secvenþã de comenzi pentru fiecare membru dintr-o"
+#~ "Ciclul `for' execută o secvenţă de comenzi pentru fiecare membru dintr-o"
#~ msgid ""
#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is"
#~ msgstr ""
-#~ "listã de elemente. Dacã `in CUVINTE...;' nu este prezent, atunci `in \"$@"
+#~ "listă de elemente. Dacă `in CUVINTE...;' nu este prezent, atunci `in \"$@"
#~ "\"'"
#~ msgid ""
@@ -6198,57 +6263,57 @@ msgstr ""
#~ "acel"
#~ msgid "the COMMANDS are executed."
-#~ msgstr "element ºi COMENZI sunt executate."
+#~ msgstr "element ÅŸi COMENZI sunt executate."
#~ msgid "The WORDS are expanded, generating a list of words. The"
-#~ msgstr "CUVINTEle sunt expandate, generând o listã de cuvinte. Setul de"
+#~ msgstr "CUVINTEle sunt expandate, generând o listă de cuvinte. Setul de"
#~ msgid "set of expanded words is printed on the standard error, each"
#~ msgstr ""
-#~ "de cuvinte expandate este tipãrit la dispozitivul de eroare standard, "
+#~ "de cuvinte expandate este tipărit la dispozitivul de eroare standard, "
#~ "fiecare"
#~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'"
#~ msgstr ""
-#~ "fiind precedat de un numãr. Dacã `in CUVINTE' nu este prezent, `in \"$@"
+#~ "fiind precedat de un număr. Dacă `in CUVINTE' nu este prezent, `in \"$@"
#~ "\"'"
#~ msgid "is assumed. The PS3 prompt is then displayed and a line read"
#~ msgstr ""
-#~ "este presupus. Promptul PS3 este apoi afiºat ºi o linie va fi cititã de"
+#~ "este presupus. Promptul PS3 este apoi afişat şi o linie va fi citită de"
#~ msgid "from the standard input. If the line consists of the number"
#~ msgstr ""
-#~ "la intrare(input) standard. Dacã linia e alcãtuitã dintr-unul din "
+#~ "la intrare(input) standard. Dacă linia e alcătuită dintr-unul din "
#~ "numerele"
#~ msgid "corresponding to one of the displayed words, then NAME is set"
-#~ msgstr "corespunzãtoare unuia din cuvintele afiºate, atunci NUME este setat"
+#~ msgstr "corespunzătoare unuia din cuvintele afişate, atunci NUME este setat"
#~ msgid "to that word. If the line is empty, WORDS and the prompt are"
#~ msgstr ""
-#~ "drept cuvântul respectiv. Dacã linia este vidã, CUVINTEle ºi promptul "
+#~ "drept cuvântul respectiv. Dacă linia este vidă, CUVINTEle şi promptul "
#~ "sunt"
#~ msgid "redisplayed. If EOF is read, the command completes. Any other"
#~ msgstr ""
-#~ "reafiºate. Dacã se citeºte EOF, comanda ajunge la sfârºit. Orice altã"
+#~ "reafişate. Dacă se citeşte EOF, comanda ajunge la sfârşit. Orice altă"
#~ msgid "value read causes NAME to be set to null. The line read is saved"
#~ msgstr ""
-#~ "valoare cititã va face ca NUMEle setat sã fie setat null. Linia cititã "
-#~ "este salvatã"
+#~ "valoare citită va face ca NUMEle setat să fie setat null. Linia citită "
+#~ "este salvată"
#~ msgid "in the variable REPLY. COMMANDS are executed after each selection"
#~ msgstr ""
-#~ "în variabila RÃSPUNS. COMENZIle sunt executate dupã fiecare selecþie"
+#~ "în variabila RĂSPUNS. COMENZIle sunt executate după fiecare selecţie"
#~ msgid "until a break or return command is executed."
-#~ msgstr "pânã când se executã o comandã break sau return."
+#~ msgstr "până când se execută o comandă break sau return."
#~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The"
#~ msgstr ""
-#~ "Executã selectiv COMENZI bazându-se pe potrivirea CUVÂNTului în TIPAR."
+#~ "Execută selectiv COMENZI bazându-se pe potrivirea CUVÂNTului în TIPAR."
#~ msgid "`|' is used to separate multiple patterns."
#~ msgstr " `|' este folosit pentru a separa mai multe tipare."
@@ -6256,94 +6321,94 @@ msgstr ""
#~ msgid ""
#~ "The if COMMANDS are executed. If the exit status is zero, then the then"
#~ msgstr ""
-#~ "COMENZIle if sunt executate. Dacã starea de ieºire este zero, atunc"
+#~ "COMENZIle if sunt executate. Dacă starea de ieşire este zero, atunc"
#~ msgid ""
#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed"
#~ msgstr ""
-#~ "COMENZIle then sunt executate. În caz contrar, fiecare din COMENZIle "
+#~ "COMENZIle then sunt executate. ÃŽn caz contrar, fiecare din COMENZIle "
#~ "elif sunt executate"
#~ msgid ""
#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS"
#~ msgstr ""
-#~ "pe rând, ºi dacã starea de ieºire este zero, atunci COMENZIle then "
-#~ "corespunzãtoare"
+#~ "pe rând, şi dacă starea de ieşire este zero, atunci COMENZIle then "
+#~ "corespunzătoare"
#~ msgid ""
#~ "are executed and the if command completes. Otherwise, the else COMMANDS"
#~ msgstr ""
-#~ "sunt executate ºi comanda if se terminã. În caz contrar, COMENZIle else"
+#~ "sunt executate şi comanda if se termină. În caz contrar, COMENZIle else"
#~ msgid ""
#~ "are executed, if present. The exit status is the exit status of the last"
#~ msgstr ""
-#~ "sunt executate, în cazul în care sunt prezente. Starea de ieºire este "
-#~ "starea de ieºire"
+#~ "sunt executate, în cazul în care sunt prezente. Starea de ieşire este "
+#~ "starea de ieÅŸire"
#~ msgid "command executed, or zero if no condition tested true."
#~ msgstr ""
-#~ "a ultimei comenzi executate, sau zero dacã nici o condiþie nu s-a dovedit "
-#~ "adevãratã."
+#~ "a ultimei comenzi executate, sau zero dacă nici o condiţie nu s-a dovedit "
+#~ "adevărată."
#~ msgid "Expand and execute COMMANDS as long as the final command in the"
-#~ msgstr "Expandeazã ºi executã COMENZI atâta timp cât comanda finalã din"
+#~ msgstr "Expandează şi execută COMENZI atâta timp cât comanda finală din"
#~ msgid "`while' COMMANDS has an exit status of zero."
-#~ msgstr "COMENZIle `while' au o stare de ieºire de zero."
+#~ msgstr "COMENZIle `while' au o stare de ieÅŸire de zero."
#~ msgid "`until' COMMANDS has an exit status which is not zero."
-#~ msgstr "COMENZIle `until' au o stare de ieºire diferitã de zero."
+#~ msgstr "COMENZIle `until' au o stare de ieşire diferită de zero."
#~ msgid "Create a simple command invoked by NAME which runs COMMANDS."
-#~ msgstr "Creazã o comandã simplã invocatã de NUME care ruleazã COMENZI."
+#~ msgstr "Crează o comandă simplă invocată de NUME care rulează COMENZI."
#~ msgid "Arguments on the command line along with NAME are passed to the"
-#~ msgstr "Parametrii din linia de comandã împreunã cu NUMEle sunt pasaþi"
+#~ msgstr "Parametrii din linia de comandă împreună cu NUMEle sunt pasaţi"
#~ msgid "function as $0 .. $n."
-#~ msgstr "funcþiei drept $0 .. $n."
+#~ msgstr "funcţiei drept $0 .. $n."
#~ msgid "Run a set of commands in a group. This is one way to redirect an"
#~ msgstr ""
-#~ "Ruleazã un set de comenzi dintr-un grup. Aceasta este o cale de a "
+#~ "Rulează un set de comenzi dintr-un grup. Aceasta este o cale de a "
#~ "redirecta un"
#~ msgid "entire set of commands."
-#~ msgstr "întreg set de comenzi."
+#~ msgstr "întreg set de comenzi."
#~ msgid "This is similar to the `fg' command. Resume a stopped or background"
#~ msgstr ""
-#~ "Aceasta este similarã comenzii `fg'. Continuã(resume) un job stopat sau "
+#~ "Aceasta este similară comenzii `fg'. Continuă(resume) un job stopat sau "
#~ "din"
#~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify"
#~ msgstr ""
-#~ "fundal(background). Dacã se specificã DIGIÞI, atunci este folosit acel "
-#~ "job. Dacã"
+#~ "fundal(background). Dacă se specifică DIGIŢI, atunci este folosit acel "
+#~ "job. Dacă"
#~ msgid ""
#~ "WORD, then the job whose name begins with WORD is used. Following the"
#~ msgstr ""
-#~ "se specificã CUVÂNT, atunci e folosit jobul al cãrui nume începe cu "
-#~ "CUVÂNT."
+#~ "se specifică CUVÂNT, atunci e folosit jobul al cărui nume începe cu "
+#~ "CUVÂNT."
#~ msgid "job specification with a `&' places the job in the background."
#~ msgstr ""
-#~ "Specificând jobului un `&' dupã, va plasa jobul în fundal(background)."
+#~ "Specificând jobului un `&' după, va plasa jobul în fundal(background)."
#~ msgid "BASH_VERSION The version numbers of this Bash."
-#~ msgstr "BASH_VERSION Numãrul de versiune a acestui Bash."
+#~ msgstr "BASH_VERSION Numărul de versiune a acestui Bash."
#~ msgid "CDPATH A colon separated list of directories to search"
#~ msgstr ""
-#~ "CDPATH O listã de directoare separatã prin douã-puncte pentru a "
+#~ "CDPATH O listă de directoare separată prin două-puncte pentru a "
#~ "se"
#~ msgid "\t\twhen the argument to `cd' is not found in the current"
#~ msgstr ""
-#~ "\t\tcãuta atunci când parametrii specificaþi comenzii `cd' nu sunt gãsiþi "
-#~ "în"
+#~ "\t\tcăuta atunci când parametrii specificaţi comenzii `cd' nu sunt găsiţi "
+#~ "în"
#~ msgid "\t\tdirectory."
#~ msgstr "\t\tdirectorul curent."
@@ -6351,121 +6416,121 @@ msgstr ""
#~ msgid ""
#~ "HISTFILE The name of the file where your command history is stored."
#~ msgstr ""
-#~ "HISTFILE Numele fiºierului unde istoricul comenzilor voastre este "
+#~ "HISTFILE Numele fiÅŸierului unde istoricul comenzilor voastre este "
#~ "stocat."
#~ msgid "HISTFILESIZE The maximum number of lines this file can contain."
#~ msgstr ""
-#~ "HISTFILESIZE Numãrul maxim de linii pe care acest fiºier poate sã le "
-#~ "conþinã."
+#~ "HISTFILESIZE Numărul maxim de linii pe care acest fişier poate să le "
+#~ "conţină."
#~ msgid "HISTSIZE The maximum number of history lines that a running"
#~ msgstr ""
-#~ "HISTSIZE Numãrul maxim de linii de istoric care pot fi accesate"
+#~ "HISTSIZE Numărul maxim de linii de istoric care pot fi accesate"
#~ msgid "\t\tshell can access."
#~ msgstr "\t\tde un shell activ."
#~ msgid "HOME The complete pathname to your login directory."
-#~ msgstr "HOME Calea completã cãtre directorul vostru de login."
+#~ msgstr "HOME Calea completă către directorul vostru de login."
#~ msgid ""
#~ "HOSTTYPE The type of CPU this version of Bash is running under."
#~ msgstr ""
-#~ "HOSTTYPE Tipul de CPU pe care ruleazã aceastã versiune de Bash."
+#~ "HOSTTYPE Tipul de CPU pe care rulează această versiune de Bash."
#~ msgid ""
#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF"
#~ msgstr ""
-#~ "IGNOREEOF Controleazã acþiunea shell-ului la întâlnirea unui "
+#~ "IGNOREEOF Controlează acţiunea shell-ului la întâlnirea unui "
#~ "caracter"
#~ msgid "\t\tcharacter as the sole input. If set, then the value"
#~ msgstr ""
-#~ "\t\tEOF ca singurã intrare(input). Dacã este setat, atunci valoarea"
+#~ "\t\tEOF ca singură intrare(input). Dacă este setat, atunci valoarea"
#~ msgid "\t\tof it is the number of EOF characters that can be seen"
-#~ msgstr "\t\tacestuia este numãrul de caractere EOF care pot fi întâlnite"
+#~ msgstr "\t\tacestuia este numărul de caractere EOF care pot fi întâlnite"
#~ msgid "\t\tin a row on an empty line before the shell will exit"
-#~ msgstr "\t\tpe rând într-o linie vidã înainte de ieºirea shell-ului."
+#~ msgstr "\t\tpe rând într-o linie vidă înainte de ieşirea shell-ului."
#~ msgid "\t\t(default 10). When unset, EOF signifies the end of input."
#~ msgstr ""
-#~ "\t\t(implicit 10). Când este desetat(unset), EOF semnificã sfârºitul "
-#~ "intrãrii(input)."
+#~ "\t\t(implicit 10). Când este desetat(unset), EOF semnifică sfârşitul "
+#~ "intrării(input)."
#~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail."
#~ msgstr ""
-#~ "MAILCHECK\tCât de des, în secunde, Bash-ul sã verifice dacã existã mail "
+#~ "MAILCHECK\tCât de des, în secunde, Bash-ul să verifice dacă există mail "
#~ "nou."
#~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks"
#~ msgstr ""
-#~ "MAILPATH\tO listã de fiºiere separate prin douã-puncte pe care Bash o "
-#~ "verificã"
+#~ "MAILPATH\tO listă de fişiere separate prin două-puncte pe care Bash o "
+#~ "verifică"
#~ msgid "\t\tfor new mail."
#~ msgstr "\t\tpentru mail nou."
#~ msgid "OSTYPE\t\tThe version of Unix this version of Bash is running on."
#~ msgstr ""
-#~ "OSTYPE\t\tVersiunea de Unix pe care aceastã versiune de Bash ruleazã."
+#~ "OSTYPE\t\tVersiunea de Unix pe care această versiune de Bash rulează."
#~ msgid "PATH A colon-separated list of directories to search when"
#~ msgstr ""
-#~ "PATH O listã de directoare separatã prin douã-puncte care se va"
+#~ "PATH O listă de directoare separată prin două-puncte care se va"
#~ msgid "\t\tlooking for commands."
-#~ msgstr "\t\tindexa în cãutarea comenzilor."
+#~ msgstr "\t\tindexa în căutarea comenzilor."
#~ msgid "PROMPT_COMMAND A command to be executed before the printing of each"
#~ msgstr ""
-#~ "PROMPT_COMMAND O comandã care va fi executatã înainte de tipãrirea "
-#~ "fiecãrui"
+#~ "PROMPT_COMMAND O comandă care va fi executată înainte de tipărirea "
+#~ "fiecărui"
#~ msgid "\t\tprimary prompt."
#~ msgstr "\t\tprompt primar."
#~ msgid "PS1 The primary prompt string."
-#~ msgstr "PS1 ªirul promptului primar."
+#~ msgstr "PS1 Åžirul promptului primar."
#~ msgid "PS2 The secondary prompt string."
-#~ msgstr "PS2 ªirul promptului secundar."
+#~ msgstr "PS2 Åžirul promptului secundar."
#~ msgid "TERM The name of the current terminal type."
#~ msgstr "TERM Numele tipului de terminal curent."
#~ msgid "auto_resume Non-null means a command word appearing on a line by"
#~ msgstr ""
-#~ "auto_resume Dacã nu e vid rezultã cã un cuvânt comandã ce apare pe o "
+#~ "auto_resume Dacă nu e vid rezultă că un cuvânt comandă ce apare pe o "
#~ "linie"
#~ msgid "\t\titself is first looked for in the list of currently"
-#~ msgstr "\t\tsingur este prima datã cãutat în lista "
+#~ msgstr "\t\tsingur este prima dată căutat în lista "
#~ msgid "\t\tstopped jobs. If found there, that job is foregrounded."
#~ msgstr ""
-#~ "\t\tjoburilor.curente stopate. Dacã este gãsit acolo, acel job este adus "
-#~ "în prim-plan(foreground)."
+#~ "\t\tjoburilor.curente stopate. Dacă este găsit acolo, acel job este adus "
+#~ "în prim-plan(foreground)."
#~ msgid "\t\tA value of `exact' means that the command word must"
-#~ msgstr "\t\tO valoare de `exact' înseamnã cã acel cuvânt comandã trebuie"
+#~ msgstr "\t\tO valoare de `exact' înseamnă că acel cuvânt comandă trebuie"
#~ msgid "\t\texactly match a command in the list of stopped jobs. A"
#~ msgstr ""
-#~ "\t\tsã se potriveascã perfect unei comenzi din lista de joburi stopate. O"
+#~ "\t\tsă se potrivească perfect unei comenzi din lista de joburi stopate. O"
#~ msgid "\t\tvalue of `substring' means that the command word must"
-#~ msgstr "\t\tvaloare de `substring' înseamnã cã acel cuvânt comandã trebuie"
+#~ msgstr "\t\tvaloare de `substring' înseamnă că acel cuvânt comandă trebuie"
#~ msgid "\t\tmatch a substring of the job. Any other value means that"
#~ msgstr ""
-#~ "\t\tsã se potriveascã unui subºir al jobului. Orice altã valoare "
-#~ "înseamnã cã"
+#~ "\t\tsă se potrivească unui subşir al jobului. Orice altă valoare "
+#~ "înseamnă că"
#~ msgid "\t\tthe command must be a prefix of a stopped job."
-#~ msgstr "\t\tacea comandã trebuie sã fie prefixul unui job stopat."
+#~ msgstr "\t\tacea comandă trebuie să fie prefixul unui job stopat."
#~ msgid "command_oriented_history"
#~ msgstr "command_oriented_history"
@@ -6473,19 +6538,19 @@ msgstr ""
#~ msgid ""
#~ " Non-null means to save multiple-line commands together on"
#~ msgstr ""
-#~ " Nevid reprezintã salvarea mai multor linii de comandã "
-#~ "împreunã într-o"
+#~ " Nevid reprezintă salvarea mai multor linii de comandă "
+#~ "împreună într-o"
#~ msgid " a single history line."
-#~ msgstr " singurã linie de istoric."
+#~ msgstr " singură linie de istoric."
#~ msgid "histchars Characters controlling history expansion and quick"
#~ msgstr ""
-#~ "histchars Caractere care controleazã expansiunea istoricului ºi"
+#~ "histchars Caractere care controlează expansiunea istoricului şi"
#~ msgid "\t\tsubstitution. The first character is the history"
#~ msgstr ""
-#~ "\t\tsubstituþii rapide. Primul caracter este caracterul de substituþie al"
+#~ "\t\tsubstituţii rapide. Primul caracter este caracterul de substituţie al"
#~ msgid "\t\tsubstitution character, usually `!'. The second is"
#~ msgstr "\t\tistoricului, de obicei `!'. Al doilea este"
@@ -6498,185 +6563,185 @@ msgstr ""
#~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter"
#~ msgstr ""
-#~ "HISTCONTROL\tSeteazã o valoare de `ignorespace', care înseamnã sã nu"
+#~ "HISTCONTROL\tSetează o valoare de `ignorespace', care înseamnă să nu"
#~ msgid "\t\tlines which begin with a space or tab on the history"
-#~ msgstr "\t\tintroduci în lista de istoric linii care încep cu un"
+#~ msgstr "\t\tintroduci în lista de istoric linii care încep cu un"
#~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't"
#~ msgstr ""
-#~ "\t\tspaþiu sau un tab. Seteazã o valoare de `ignoredups', care înseamnã"
+#~ "\t\tspaţiu sau un tab. Setează o valoare de `ignoredups', care înseamnă"
#~ msgid "\t\tenter lines which match the last entered line. Set to"
#~ msgstr ""
-#~ "\t\ta nu se introduce linii care sunt asemãnãtoare ultimei linii "
+#~ "\t\ta nu se introduce linii care sunt asemănătoare ultimei linii "
#~ "introduse."
#~ msgid "\t\t`ignoreboth' means to combine the two options. Unset,"
#~ msgstr ""
-#~ "\t\tSeteazã o valaore de `ignoreboth' însemnând combinarea celor douã "
-#~ "opþiuni."
+#~ "\t\tSetează o valaore de `ignoreboth' însemnând combinarea celor două "
+#~ "opţiuni."
#~ msgid "\t\tor set to any other value than those above means to save"
#~ msgstr ""
-#~ "\t\t Desetat(unset) sau setat la orice altã valoare decât acelea de mai "
+#~ "\t\t Desetat(unset) sau setat la orice altă valoare decât acelea de mai "
#~ "sus"
#~ msgid "\t\tall lines on the history list."
-#~ msgstr "\t\taînseamnã salvarea tuturor liniilor în lista istoricului."
+#~ msgstr "\t\taînseamnă salvarea tuturor liniilor în lista istoricului."
#~ msgid "Adds a directory to the top of the directory stack, or rotates"
#~ msgstr ""
-#~ "Adaugã un director în partea superioarã a stivei de directoare, sau "
-#~ "roteºte"
+#~ "Adaugă un director în partea superioară a stivei de directoare, sau "
+#~ "roteÅŸte"
#~ msgid "the stack, making the new top of the stack the current working"
-#~ msgstr "stiva, fãcând noul element superior al listei directorul curent"
+#~ msgstr "stiva, făcând noul element superior al listei directorul curent"
#~ msgid "directory. With no arguments, exchanges the top two directories."
#~ msgstr ""
-#~ "de lucru. Fãrã parametri, interchimbã cele douã directoare superioare."
+#~ "de lucru. Fără parametri, interchimbă cele două directoare superioare."
#~ msgid "+N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "+N\tRoteºte stiva astfel încât al N-ulea director (numãrând"
+#~ msgstr "+N\tRoteşte stiva astfel încât al N-ulea director (numărând"
#~ msgid "\tfrom the left of the list shown by `dirs') is at the top."
-#~ msgstr "\tde la stânga listei afiºatã de `dirs') va fi în vârf(top)."
+#~ msgstr "\tde la stânga listei afişată de `dirs') va fi în vârf(top)."
#~ msgid "-N\tRotates the stack so that the Nth directory (counting"
-#~ msgstr "-N\tRoteºte stiva astfel încât al N-ulea director (numãrând"
+#~ msgstr "-N\tRoteşte stiva astfel încât al N-ulea director (numărând"
#~ msgid "\tfrom the right) is at the top."
-#~ msgstr "\tde la dreapta) va fi în vârf."
+#~ msgstr "\tde la dreapta) va fi în vârf."
#~ msgid "-n\tsuppress the normal change of directory when adding directories"
#~ msgstr ""
-#~ "-n\tinhibã schimbarea normalã de directoare la adãugarea directoarelor"
+#~ "-n\tinhibă schimbarea normală de directoare la adăugarea directoarelor"
#~ msgid "\tto the stack, so only the stack is manipulated."
-#~ msgstr "\tîn stivã, astfel încât doar stiva sã fie manipulatã."
+#~ msgstr "\tîn stivă, astfel încât doar stiva să fie manipulată."
#~ msgid "dir\tadds DIR to the directory stack at the top, making it the"
-#~ msgstr "dir\tadaugã DIR în vârful stivei de directoare, fãcându-l"
+#~ msgstr "dir\tadaugă DIR în vârful stivei de directoare, făcându-l"
#~ msgid "You can see the directory stack with the `dirs' command."
-#~ msgstr "Puteþi vedea stiva de directoare cu ajutorul comenzii `dirs'."
+#~ msgstr "Puteţi vedea stiva de directoare cu ajutorul comenzii `dirs'."
#~ msgid "Removes entries from the directory stack. With no arguments,"
-#~ msgstr "ªterge intrãrile din stiva de directoare. Fãrã parametri, "
+#~ msgstr "Şterge intrările din stiva de directoare. Fără parametri, "
#~ msgid "removes the top directory from the stack, and cd's to the new"
-#~ msgstr "ºterge directorul superior din stivã, ºi face cd la noul"
+#~ msgstr "şterge directorul superior din stivă, şi face cd la noul"
#~ msgid "+N\tremoves the Nth entry counting from the left of the list"
-#~ msgstr "+N\tºterge al N-ulea element numãrând din stânga listei"
+#~ msgstr "+N\tşterge al N-ulea element numărând din stânga listei"
#~ msgid "\tshown by `dirs', starting with zero. For example: `popd +0'"
-#~ msgstr "\tafiºate de `dirs', începând cu zero. De exemplu: `popd +0'"
+#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd +0'"
#~ msgid "\tremoves the first directory, `popd +1' the second."
-#~ msgstr "\tºterge primul director, `popd +1' al doilea."
+#~ msgstr "\tÅŸterge primul director, `popd +1' al doilea."
#~ msgid "-N\tremoves the Nth entry counting from the right of the list"
-#~ msgstr "-N\tºterge al N-ulea element numãrând din dreapta listei"
+#~ msgstr "-N\tşterge al N-ulea element numărând din dreapta listei"
#~ msgid "\tshown by `dirs', starting with zero. For example: `popd -0'"
-#~ msgstr "\tafiºate de `dirs', începând cu zero. De exemplu: `popd -0'"
+#~ msgstr "\tafişate de `dirs', începând cu zero. De exemplu: `popd -0'"
#~ msgid "\tremoves the last directory, `popd -1' the next to last."
-#~ msgstr "\tºterge ultimul director, `popd -1' penultimul."
+#~ msgstr "\tÅŸterge ultimul director, `popd -1' penultimul."
#~ msgid ""
#~ "-n\tsuppress the normal change of directory when removing directories"
#~ msgstr ""
-#~ "-n\tinhibã schimbarea normalã de directoare când se ºterg diurectoare"
+#~ "-n\tinhibă schimbarea normală de directoare când se şterg diurectoare"
#~ msgid "\tfrom the stack, so only the stack is manipulated."
-#~ msgstr "\tdin stivã, astfel încât numai stiva sã fie manipulatã."
+#~ msgstr "\tdin stivă, astfel încât numai stiva să fie manipulată."
#~ msgid "Display the list of currently remembered directories. Directories"
-#~ msgstr "Afiºeazã lista curentã de directoare reþinute. Directoarele"
+#~ msgstr "Afişează lista curentă de directoare reţinute. Directoarele"
#~ msgid "find their way onto the list with the `pushd' command; you can get"
#~ msgstr ""
-#~ "îºi gasesc locul în listã cu ajutorul comenzii `pushd'; puteþi merge"
+#~ "îşi gasesc locul în listă cu ajutorul comenzii `pushd'; puteţi merge"
#~ msgid "back up through the list with the `popd' command."
-#~ msgstr "prin listã cu ajutorul comenzii `popd'."
+#~ msgstr "prin listă cu ajutorul comenzii `popd'."
#~ msgid ""
#~ "The -l flag specifies that `dirs' should not print shorthand versions"
#~ msgstr ""
-#~ "Parametrul(flag) -l specificã faptul cã `dirs' nu ar trebui sã "
-#~ "tipãreascã "
+#~ "Parametrul(flag) -l specifică faptul că `dirs' nu ar trebui să "
+#~ "tipărească "
#~ msgid ""
#~ "of directories which are relative to your home directory. This means"
#~ msgstr ""
-#~ "versiuni prescurtate ale directoarelor care au legãturã(relative) cu home-"
+#~ "versiuni prescurtate ale directoarelor care au legătură(relative) cu home-"
#~ "directory-ul."
#~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag"
#~ msgstr ""
-#~ " Aceasta înseamnã cã `~/bin' poate fi afiºat ca `/homes/bfox/bin' "
+#~ " Aceasta înseamnă că `~/bin' poate fi afişat ca `/homes/bfox/bin' "
#~ "Parametrul"
#~ msgid "causes `dirs' to print the directory stack with one entry per line,"
#~ msgstr ""
-#~ "-v face ca `dirs' sã afiºeze stiva de directoare doar câte o intrare pe "
+#~ "-v face ca `dirs' să afişeze stiva de directoare doar câte o intrare pe "
#~ "linie,"
#~ msgid ""
#~ "prepending the directory name with its position in the stack. The -p"
-#~ msgstr "prefixând numele directorului cu poziþia în stivã. Parametrul -p"
+#~ msgstr "prefixând numele directorului cu poziţia în stivă. Parametrul -p"
#~ msgid "flag does the same thing, but the stack position is not prepended."
-#~ msgstr "face acelaºi lucru, dar poziþia în stivã nu este prefix."
+#~ msgstr "face acelaşi lucru, dar poziţia în stivă nu este prefix."
#~ msgid ""
#~ "The -c flag clears the directory stack by deleting all of the elements."
#~ msgstr ""
-#~ "Parametrul(flag) -c ºterge stiva de directoare prin ºtergerea tuturor "
+#~ "Parametrul(flag) -c ÅŸterge stiva de directoare prin ÅŸtergerea tuturor "
#~ "elementelor."
#~ msgid ""
#~ "+N\tdisplays the Nth entry counting from the left of the list shown by"
-#~ msgstr "+N\tafiºeazã a N-a intrare numãrând de la stânga listei afiºate de"
+#~ msgstr "+N\tafişează a N-a intrare numărând de la stânga listei afişate de"
#~ msgid "\tdirs when invoked without options, starting with zero."
-#~ msgstr "\tdirs atunci când e invocatã fãrã opþiuni, începând cu zero."
+#~ msgstr "\tdirs atunci când e invocată fără opţiuni, începând cu zero."
#~ msgid ""
#~ "-N\tdisplays the Nth entry counting from the right of the list shown by"
-#~ msgstr "-N\tafiºeazã a N-a intrare numãrând de la dreapta listei afiºate de"
+#~ msgstr "-N\tafişează a N-a intrare numărând de la dreapta listei afişate de"
#~ msgid "Toggle the values of variables controlling optional behavior."
#~ msgstr ""
-#~ "Schimbã(toggle) valorile variabilelor, controlând comportamentul opþional."
+#~ "Schimbă(toggle) valorile variabilelor, controlând comportamentul opţional."
#~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag"
#~ msgstr ""
-#~ "Parametrul -s înseamnã activarea(setarea) fiecãrei NUME_OPT; parametrul -u"
+#~ "Parametrul -s înseamnă activarea(setarea) fiecărei NUME_OPT; parametrul -u"
#~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit"
-#~ msgstr "deseteazã(unset) fiecare NUME_OPT. Parametrul -q inhibã output-ul;"
+#~ msgstr "desetează(unset) fiecare NUME_OPT. Parametrul -q inhibă output-ul;"
#~ msgid "status indicates whether each OPTNAME is set or unset. The -o"
#~ msgstr ""
-#~ "starea de ieºire indicã dacã fiecare NUME_OPT este setat sau desetat."
+#~ "starea de ieşire indică dacă fiecare NUME_OPT este setat sau desetat."
#~ msgid "option restricts the OPTNAMEs to those defined for use with"
#~ msgstr ""
-#~ " Parametrul -o restricþioneazã NUME_OPT la acelea definite pentru a fi "
+#~ " Parametrul -o restricţionează NUME_OPT la acelea definite pentru a fi "
#~ msgid "`set -o'. With no options, or with the -p option, a list of all"
#~ msgstr ""
-#~ "folosite cu `set -o'. Fãrã nici o opþiune, sau cu opþiunea -p, este "
-#~ "afiºatã"
+#~ "folosite cu `set -o'. Fără nici o opţiune, sau cu opţiunea -p, este "
+#~ "afişată"
#~ msgid "settable options is displayed, with an indication of whether or"
#~ msgstr ""
-#~ "o listã a tuturor opþiunilor setabile, ceea ce indicã dacã fiecare este"
+#~ "o listă a tuturor opţiunilor setabile, ceea ce indică dacă fiecare este"
#~ msgid "not each is set."
-#~ msgstr "setatã sau nu."
+#~ msgstr "setată sau nu."
diff --git a/po/ru.gmo b/po/ru.gmo
index 821df4f7..f16a5378 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 39b333e7..99302fce 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -8,90 +8,95 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2018-04-17 14:09+0300\n"
"Last-Translator: Pavel Maryanov <acid@jack.kiev.ua>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
+"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: ru\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 2.0.6\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "неправильный Ð¸Ð½Ð´ÐµÐºÑ Ð¼Ð°ÑÑива"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: удалÑетÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ Ð¸Ð½Ð´ÐµÐºÑ Ð² аÑÑоциативный маÑÑив"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: недопуÑтимый ключ аÑÑоциативного маÑÑива"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить значение нечиÑловому индекÑу"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr ""
"%s: %s: необходимо иÑпользовать Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸ назначении аÑÑоциативному маÑÑиву"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не удаётÑÑ Ñоздать файл: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ keymap Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: первый непробельный Ñимвол не ÑвлÑетÑÑ Â«\"»"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "нет закрывающего «%c» в %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: отÑутÑтвует разделитель-двоеточие"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑÑ‚ÑŒ Ð´Ð»Ñ %s"
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "раÑширение Ñкобки: не удаётÑÑ Ð²Ñ‹Ð´ÐµÐ»Ð¸Ñ‚ÑŒ памÑÑ‚ÑŒ Ð´Ð»Ñ %d Ñлементов"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "раÑширение Ñкобки: не удалоÑÑŒ выделить памÑÑ‚ÑŒ Ð´Ð»Ñ Â«%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: недопуÑтимый пÑевдоним"
@@ -110,22 +115,22 @@ msgstr "«%s»: недопуÑтимое название keymap"
msgid "%s: cannot read: %s"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ файл: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "«%s»: неизвеÑтное название функции"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s не привÑзан ни к какой клавише.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s можно вызвать через "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "«%s»: не удаётÑÑ Ð¾Ñ‚Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ привÑзку"
@@ -139,28 +144,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "имеет значение только Ð´Ð»Ñ Ñ†Ð¸ÐºÐ»Ð¾Ð² «for», «while» или «until»"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n"
" \n"
-" Без EXPR выполнÑет возврат "
+" ЕÑли выражение не указано, возвращает «$line $filename». ЕÑли выражение "
+"указано, возвращает\n"
+" «$line $subroutine $filename». Эти дополнительные данные можно\n"
+" иÑпользовать Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑировки Ñтека.\n"
+" \n"
+" Значение Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°ÐµÑ‚ количеÑтво кадров, которое нужно вызвать\n"
+" Ð´Ð»Ñ Ð²Ð¾Ð·Ð²Ñ€Ð°Ñ‚Ð° к текущему кадру. Первый кадр имеет номер 0.\n"
+" \n"
+" СоÑтоÑние выхода:\n"
+" Возвращает 0, еÑли командный процеÑÑор не выполнÑет функцию, или "
+"выражение\n"
+" ÑвлÑетÑÑ Ð´Ð¾Ð¿ÑƒÑтимым."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "Ñлишком много аргументов"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "нулевой каталог"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "Ðе задана Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ OLDPWD"
@@ -179,7 +201,7 @@ msgstr "предупреждение: "
msgid "%s: usage: "
msgstr "%s: иÑпользование: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚"
@@ -194,7 +216,7 @@ msgstr "%s: требуетÑÑ Ñ‡Ð¸Ñловой аргумент"
msgid "%s: not found"
msgstr "%s: не найден"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: недопуÑтимый параметр"
@@ -204,7 +226,7 @@ msgstr "%s: недопуÑтимый параметр"
msgid "%s: invalid option name"
msgstr "%s: недопуÑтимое название параметра"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: Ñто недопуÑтимый идентификатор"
@@ -217,7 +239,7 @@ msgstr "недопуÑтимое воÑьмеричное чиÑло"
msgid "invalid hex number"
msgstr "недопуÑтимое шеÑтнадцатеричное чиÑло"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "недопуÑтимое чиÑло"
@@ -293,73 +315,83 @@ msgstr "ошибка Ð½Ð°Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала:
msgid "error getting terminal attributes: %s"
msgstr "ошибка Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð¾Ð² терминала: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: ошибка Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑƒÑ‰ÐµÐ³Ð¾ каталога: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: неоднозначный указатель заданиÑ"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "Ñправка отÑутÑтвует в Ñтой верÑии"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ: %s доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: недопуÑтимое название дейÑтвиÑ"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: нет Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "предупреждение: параметр -F может работать не так, как ожидаетÑÑ"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "предупреждение: параметр -C может работать не так, как ожидаетÑÑ"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ðµ выполнÑет функцию завершениÑ"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "можно иÑпользовать только внутри функции"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: ÑÑÑ‹Ð»Ð¾Ñ‡Ð½Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð½Ðµ может быть маÑÑивом"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: переменные nameref, ÑÑылающиеÑÑ Ñами на ÑебÑ, не допуÑкаютÑÑ"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: ÐºÑ€ÑƒÐ³Ð¾Ð²Ð°Ñ ÑÑылка на имÑ"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "«-f» Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¹"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: значение функции можно только Ñчитать"
@@ -374,7 +406,7 @@ msgstr "%s: приÑвоение ÑоÑтавного маÑÑива в кавы
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: переменные маÑÑива Ð½ÐµÐ»ÑŒÐ·Ñ ÑƒÐ½Ð¸Ñ‡Ñ‚Ð¾Ð¶Ð¸Ñ‚ÑŒ таким образом"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: не удаётÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ аÑÑоциативный маÑÑив в индекÑированный"
@@ -388,27 +420,32 @@ msgstr "динамичеÑÐºÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° недоÑтупна"
msgid "cannot open shared object %s: %s"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ общий объект %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не удаётÑÑ Ð½Ð°Ð¹Ñ‚Ð¸ %s в общем объекте %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "загрузка функции %s завершилаÑÑŒ ошибкой (%d): не загружена"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: не загружаетÑÑ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑки"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не удаётÑÑ ÑƒÐ´Ð°Ð»Ð¸Ñ‚ÑŒ: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: Ñто каталог"
@@ -423,12 +460,12 @@ msgstr "%s: Ñто не обычный файл"
msgid "%s: file is too large"
msgstr "%s: файл Ñлишком велик"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить: %s"
@@ -452,15 +489,16 @@ msgstr "ЕÑÑ‚ÑŒ оÑтановленные заданиÑ.\n"
msgid "There are running jobs.\n"
msgstr "ЕÑÑ‚ÑŒ выполнÑемые заданиÑ.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "команда не найдена"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "указание журнала команд"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ временный файл: %s"
@@ -488,12 +526,12 @@ msgstr "%s: Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð° требуетÑÑ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Â â€” %
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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "вызовы\tкоманда\n"
@@ -505,13 +543,19 @@ msgstr[0] "Команды, ÑоответÑтвующие ключевому ÑÐ
msgstr[1] "Команды, ÑоответÑтвующие ключевым Ñловам «"
msgstr[2] "Команды, ÑоответÑтвующие ключевым Ñловам «"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» или "
-"«man -k %s» или «info %s»."
+"нет разделов Ñправки, ÑоответÑтвующих «%s». Попробуйте ввеÑти «help help» "
+"или «man -k %s» или «info %s»."
#: builtins/help.def:224
#, c-format
@@ -540,21 +584,21 @@ msgstr ""
"отключена.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать больше одного параметра -anrw"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "положение журнала команд"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¼ÐµÑ‚ÐºÐ° времени"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: не удалоÑÑŒ раÑширить журнал команд"
@@ -577,7 +621,7 @@ msgstr "%s: аргументами должны быть идентификатÐ
msgid "Unknown error"
msgstr "ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "ожидаетÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ"
@@ -586,12 +630,12 @@ msgstr "ожидаетÑÑ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ðµ"
msgid "%s: not an indexed array"
msgstr "%s: Ñто не индекÑированный маÑÑив"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: недопуÑтимое указание деÑкриптора файла"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: invalid недопуÑтимый деÑкриптор файла: %s"
@@ -619,36 +663,36 @@ msgstr "пуÑтое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ маÑÑива"
msgid "array variable support required"
msgstr "требуетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° переменных маÑÑива"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: отÑутÑтвует Ñимвол форматированиÑ"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: недопуÑтимое указание формата времени"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "предупреждение: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "ошибка анализа формата: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "отÑутÑтвует шеÑÑ‚Ð½Ð°Ð´Ñ†Ð°Ñ‚ÐµÑ€Ð¸Ñ‡Ð½Ð°Ñ Ñ†Ð¸Ñ„Ñ€Ð° Ð´Ð»Ñ \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "отÑутÑтвует цифра Юникода Ð´Ð»Ñ \\%c"
@@ -801,12 +845,12 @@ msgstr ""
" \n"
" Ð’ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° dirs показывает Ñтек каталогов."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: недопуÑтимое указание тайм-аута"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "ошибка чтениÑ: %d: %s"
@@ -815,21 +859,11 @@ msgstr "ошибка чтениÑ: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "возврат можно выполнить только из функции или иÑходного Ñкрипта"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ ÑброÑить функцию и переменную"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: не удаётÑÑ Ð²Ñ‹Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÑŒ ÑброÑ: %s доÑтупен только Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: Ñто не Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¼Ð°ÑÑива"
@@ -844,7 +878,7 @@ msgstr "%s: Ñто не функциÑ"
msgid "%s: cannot export"
msgstr "%s: не удаётÑÑ ÑкÑпортировать"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "Ñчётчик Ñмещений"
@@ -852,7 +886,7 @@ msgstr "Ñчётчик Ñмещений"
msgid "cannot set and unset shell options simultaneously"
msgstr "Ð½ÐµÐ»ÑŒÐ·Ñ Ð¾Ð´Ð½Ð¾Ð²Ñ€ÐµÐ¼ÐµÐ½Ð½Ð¾ задать и ÑброÑить параметры командного процеÑÑора"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: недопуÑтимое название параметра командного процеÑÑора"
@@ -909,26 +943,26 @@ msgstr "%s ÑвлÑетÑÑ %s\n"
msgid "%s is hashed (%s)\n"
msgstr "Ð´Ð»Ñ %s вычиÑлен Ñ…Ñш (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: недопуÑтимый аргумент ограничениÑ"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "«%c»: недопуÑÑ‚Ð¸Ð¼Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не удаётÑÑ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚ÑŒ ограничение: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ограничение"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ ограничение: %s"
@@ -988,77 +1022,77 @@ msgstr "ошибка перехода"
msgid "%s: unbound variable"
msgstr "%s: не заданы границы переменной"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aпревышено Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð¶Ð¸Ð´Ð°Ð½Ð¸Ñ Ð²Ð²Ð¾Ð´Ð°: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ Ñтандартный ввод из /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] вÑÑ‘ ещё ÑущеÑтвует"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "ошибка конвейера"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: доÑтигнут макÑимальный уровень вложенноÑти eval (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти source (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: доÑтигнут макÑимальный уровень вложенноÑти функций (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr ""
-"%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту «/»"
+"%s: ограниченный режим: в названиÑÑ… команд Ð½ÐµÐ»ÑŒÐ·Ñ Ð¸Ñпользовать коÑую черту "
+"«/»"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: команда не найдена"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: неверный интерпретатор"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить бинарный файл: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "«%s»: Ñто ÑÐ¿ÐµÑ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð°"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не удаётÑÑ Ñкопировать файловый деÑкриптор %d в %d"
@@ -1084,62 +1118,67 @@ msgstr "значение можно приÑвоить только переме
msgid "syntax error in variable assignment"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в выражении"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "деление на 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "ошибка: недопуÑтимый маркер приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "в уÑловном выражении должен быть Ñимвол «:»"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "ÑкÑпонента меньше нулÑ"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr ""
"поÑле предварительного инкремента или декремента ожидаетÑÑ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€ "
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "отÑутÑтвует Ñимвол «)»"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "ошибка ÑинтакÑиÑа: недопуÑтимый математичеÑкий оператор"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (неверный маркер «%s»)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "недопуÑтимое математичеÑкое оÑнование"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: недопуÑтимое чиÑло Ñтрок"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "Ñлишком большое значение Ð´Ð»Ñ Ð¾ÑнованиÑ"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: ошибка выражениÑ\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: нет доÑтупа к родительÑким каталогам"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не удаётÑÑ ÑброÑить режим nodelay Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ð¾Ð³Ð¾ деÑкриптора %d"
@@ -1156,166 +1195,176 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: у нового файлового деÑкриптора %d уже еÑÑ‚ÑŒ буфер"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "идентификатор дочернего процеÑÑа %d принадлежит запущенному заданию %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "удаление оÑтановленного Ð·Ð°Ð´Ð°Ð½Ð¸Ñ %d Ñ Ð³Ñ€ÑƒÐ¿Ð¿Ð¾Ð¹ процеÑÑа %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: процеÑÑ %5ld (%s) в the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
"add_process: процеÑÑ Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ‚Ð¾Ñ€Ð¾Ð¼ %5ld (%s) помечен как вÑÑ‘ ещё активный"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: нет процеÑÑа Ñ Ñ‚Ð°ÐºÐ¸Ð¼ идентификатором"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Завершён"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "ОÑтановлен"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "ОÑтановлен (%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Запущен"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Завершён (%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Выход %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "СоÑтоÑние неизвеÑтно"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(Ñтек памÑти Ñброшен на диÑк) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (рабочий каталог: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "дочерний setpgid (%ld к %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr ""
"wait: процеÑÑ %ld не ÑвлÑетÑÑ Ð´Ð¾Ñ‡ÐµÑ€Ð½Ð¸Ð¼ процеÑÑом Ñтого командного процеÑÑора"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: нет запиÑей процеÑÑа %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: задание %d оÑтановлено"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: нет такого заданиÑ"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: выполнение Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¿Ñ€ÐµÑ€Ð²Ð°Ð½Ð¾"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: задание %d уже выполнÑетÑÑ Ð² фоновом режиме"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr ""
"waitchld: включаетÑÑ WNOHANG, чтобы предотвратить поÑвление неопределённого "
"блока"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: Ñтрока %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (Ñтек памÑти Ñброшен на диÑк)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(рабочий каталог: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: ошибка вызова getpgrp "
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: диÑциплина Ñтроки"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: диÑциплина Ñтроки"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не удаётÑÑ Ð·Ð°Ð´Ð°Ñ‚ÑŒ группу процеÑÑа терминала (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "Ñтот командный процеÑÑор не может управлÑÑ‚ÑŒ заданиÑми"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: ошибка утверждениÑ: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1324,43 +1373,57 @@ msgstr ""
"\\r\n"
"malloc: %s:%d: утверждение не удалоÑÑŒ\\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "неизвеÑтно"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: блок в ÑпиÑке Ñвободных затёрт"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ уже оÑвобождённого блока"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
"диапазона"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
+"диапазона"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: размеры начального и конечного блока отличаютÑÑ"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: вызван Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ð¾Ð¼ невыделенного блока"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
"диапазона"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами "
+"диапазона"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: размеры начального и конечного блока отличаютÑÑ"
@@ -1402,22 +1465,22 @@ msgstr "%s: недопуÑтимое указание Ñетевого пути"
msgid "network operations not supported"
msgstr "Ñетевые операции не поддерживаютÑÑ"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не удаётÑÑ Ð¸Ð·Ð¼ÐµÐ½Ð¸Ñ‚ÑŒ Ñзык (%s): %s"
@@ -1465,7 +1528,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: инÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Â«%d» вышла за пределы диапазона"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1474,103 +1537,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) превыÑил SIZE_MAX (%lu): Ñтрока "
"обрезана"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "доÑтигнуто макÑимальное чиÑло переменных here-document"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «%c»"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «]]»"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении: неожиданный маркер «%s»"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в уÑловном выражении"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неожиданный маркер «%s», ожидалÑÑ Â«)»"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "ожидаетÑÑ Ñимвол «)»"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного унарного оператора"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного унарного оператора"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неожиданный маркер «%s», ожидаетÑÑ ÑƒÑловный бинарный оператор"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "ожидаетÑÑ ÑƒÑловный бинарный оператор"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неожиданный аргумент «%s» Ð´Ð»Ñ ÑƒÑловного бинарного оператора"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "неожиданный аргумент Ð´Ð»Ñ ÑƒÑловного бинарного оператора"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неожиданный маркер «%c» в уÑловной команде"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неожиданный маркер «%s» в уÑловной команде"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неожиданный маркер %d в уÑловной команде"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°Ð½Ð½Ñ‹Ð¼ маркером «%s»"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° Ñ€Ñдом Ñ Â«%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: неожиданный конец файла"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Ð”Ð»Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð° из командного процеÑÑора иÑпользуйте «%s».\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "неожиданный конец файла во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ð¾Ð¸Ñка «)»"
@@ -1613,89 +1676,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: недопуÑтимый Ñимвол форматированиÑ"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "файловый деÑкриптор за пределами диапазона"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: неоднозначное перенаправление"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ·Ð°Ð¿Ð¸Ñать ÑущеÑтвующий файл"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ограниченный режим: не удаётÑÑ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð¸Ñ‚ÑŒ вывод"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не удаётÑÑ Ñоздать временный файл Ð´Ð»Ñ Ð±Ð»Ð¾ÐºÐ° here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить файловый деÑкриптор переменной"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port не поддерживаетÑÑ Ð±ÐµÐ· Ñети"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "ошибка перенаправлениÑ: не удаётÑÑ Ñоздать копию файлового деÑкриптора"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "не удалоÑÑŒ найти /tmp; Ñоздайте Ñтот каталог"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp должен быть допуÑтимым названием каталога"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: недопуÑтимый параметр"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не удаётÑÑ ÑƒÑтановить UID %d: Ñффективный UID %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не удаётÑÑ ÑƒÑтановить GID %d: Ñффективный GID %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "не удаётÑÑ Ð·Ð°Ð¿ÑƒÑтить отладчик: режим отладки отключён"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Ñто каталог"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ðе удаётÑÑ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ð¸Ñ‚ÑŒ название"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÐ¸Ñ %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1704,320 +1767,316 @@ msgstr ""
"ИÑпользование:\t%s [длинные параметры GNU] [параметры] ...\n"
"\t\t%s [длинные параметры GNU] [параметры] файл_Ñкрипта ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Длинные параметры GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Параметры командного процеÑÑора:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s или -o параметр\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о параметрах командного процеÑÑора "
"введите «%s -c \"help set\"».\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ñ… Ñведений о вÑтроенных командах введите «%s -c "
"help».\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Ð”Ð»Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ¸ Ñообщений об ошибках иÑпользуйте команду «bashbug».\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "ДомашнÑÑ Ñтраница bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"ÐžÐ±Ñ‰Ð°Ñ Ñправка по иÑпользованию программ GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ†Ð¸Ñ"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Фиктивный Ñигнал"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Отбой"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Прерывание"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Выход"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¸Ð½ÑтрукциÑ"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "ТраÑÑа/ловушка BPT"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "ИнÑÑ‚Ñ€ÑƒÐºÑ†Ð¸Ñ EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "ИÑключение при обработке чиÑел Ñ Ð¿Ð»Ð°Ð²Ð°ÑŽÑ‰ÐµÐ¹ точкой"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Убит"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Ошибка шины"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Ошибка Ñегментации"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Ðеверный ÑиÑтемный вызов"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Конвейер не работает"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Сигнал чаÑов"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Прерван"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Срочное Ñобытие ввода/вывода"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "ОÑтановлен (Ñигналом)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Продолжение"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Смерть или оÑтановка дочернего процеÑÑа"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "ОÑтановлен (ввод Ñ tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "ОÑтановлен (вывод на tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "Готов к вводу/выводу"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Ограничение ЦП"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Ограничение величины файла"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Сигнал чаÑов (виртуальный)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Сигнал чаÑов (профиль)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Окно изменено"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "ЗапиÑÑŒ блокирована"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Сигнал Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Ожидание входных данных HFT"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "неизбежна ошибка питаниÑ"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "неизбежно падение ÑиÑтемы"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "процеÑÑ Ð¿ÐµÑ€ÐµÐ½Ð¾ÑитÑÑ Ð½Ð° другой ЦП"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "УÑтановлен режим монитора HFT"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Выход из режима монитора HFT"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "ПоÑледовательноÑÑ‚ÑŒ звуков HFT завершена"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Информационный запроÑ"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "ÐеизвеÑтный номер Ñигнала"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "ÐеизвеÑтный номер Ñигнала %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «%s» в %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: не удаётÑÑ Ð¿Ñ€Ð¸Ñвоить ÑпиÑок Ñлементу маÑÑива"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки процеÑÑа"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ именованный конвейер %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr ""
"не удаётÑÑ Ñкопировать именованный конвейер %s в файловый деÑкриптор %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "подÑтановка команды: во входных данных проигнорирован нулевой байт"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "не удаётÑÑ Ñоздать конвейер Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "не удаётÑÑ Ñоздать дочерний процеÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´Ñтановки команды"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute: не удаётÑÑ Ñкопировать конвейер в файловый деÑкриптор 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: недопуÑтимое название переменной Ð´Ð»Ñ ÑÑылки на имÑ"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: недопуÑтимое непрÑмое раÑкрытие"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: недопуÑтимое Ð¸Ð¼Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: параметр не задан или пуÑтой"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметр не задан или пуÑтой"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: заданное подÑтрокой выражение меньше нулÑ"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: недопуÑÑ‚Ð¸Ð¼Ð°Ñ Ð¿Ð¾Ð´Ñтановка"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: такое приÑвоение невозможно"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2025,12 +2084,12 @@ msgstr ""
"в будущих верÑиÑÑ… командный процеÑÑор оценка будет выполнÑÑ‚ÑŒÑÑ ÐºÐ°Ðº "
"математичеÑÐºÐ°Ñ Ð¿Ð¾Ð´Ñтановка"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "Ð½ÐµÐ²ÐµÑ€Ð½Ð°Ñ Ð¿Ð¾Ð´Ñтановка: нет закрывающей «`» в %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "нет Ñовпадений: %s"
@@ -2053,35 +2112,40 @@ msgstr "ожидаетÑÑ Ñимвол «)»"
msgid "`)' expected, found %s"
msgstr "ожидаетÑÑ Ñимвол «)», обнаружено %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: ожидаетÑÑ ÑƒÐ½Ð°Ñ€Ð½Ñ‹Ð¹ оператор"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: ожидаетÑÑ Ð±Ð¸Ð½Ð°Ñ€Ð½Ñ‹Ð¹ оператор"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: ожидаетÑÑ ÑƒÐ½Ð°Ñ€Ð½Ñ‹Ð¹ оператор"
+
+#: test.c:881
msgid "missing `]'"
msgstr "отÑутÑтвует Ñимвол «]»"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°: ожидаетÑÑ Â«;»"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "недопуÑтимый номер Ñигнала"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: доÑтигнут макÑимальный уровень вложенноÑти eval (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2089,88 +2153,88 @@ msgstr ""
"run_pending_traps: обработчик Ñигнала — SIG_DFL; Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð°Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²ÐºÐ° %d (%s) "
"Ñамому Ñебе"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: неверный Ñигнал %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "ошибка импорта Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ Ð´Ð»Ñ Â«%s»"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "Ñлишком выÑокий уровень командного процеÑÑора (%d); ÑбраÑываетÑÑ Ð´Ð¾ 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: переменной не может быть приÑвоено значение"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: целое чиÑле приÑваиваетÑÑ ÑÑылке на имÑ"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: в текущей облаÑти отÑутÑтвует контекÑÑ‚ функции"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s имеет пуÑтую exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "недопуÑтимый Ñимвол %d в exportstr Ð´Ð»Ñ %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "отÑутÑтвует «=» в exportstr Ð´Ð»Ñ %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: заголовок shell_variables не ÑвлÑетÑÑ ÐºÐ¾Ð½Ñ‚ÐµÐºÑтом функции"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: отÑутÑтвует контекÑÑ‚ global_variables"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: заголовок shell_variables не ÑвлÑетÑÑ Ð¾Ð±Ð»Ð°Ñтью временного "
"окружениÑ"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не удаётÑÑ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚ÑŒ как ФÐЙЛ"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: недопуÑтимое значение Ð´Ð»Ñ Ð´ÐµÑкриптора файла траÑÑировки"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: значение ÑовмеÑтимоÑти за пределами диапазона"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "© Free Software Foundation, Inc, 2016."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "© Free Software Foundation, Inc, 2012."
#: version.c:47 version2.c:47
msgid ""
@@ -2261,11 +2325,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [аргумент ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [имÑ[=значение] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] имÑ[=значение] ..."
#: builtins.c:82
@@ -2289,11 +2355,13 @@ msgid "eval [arg ...]"
msgstr "eval [аргумент ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts Ñтрока_параметров Ð¸Ð¼Ñ [аргумент]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a имÑ] [команда] [аргументы ...]] [перенаправление ...]"
#: builtins.c:100
@@ -2424,7 +2492,7 @@ msgstr "umask [-p] [-S] [режим]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [идентификатор ...]"
#: builtins.c:181
@@ -2520,7 +2588,7 @@ msgstr "printf [-v переменнаÑ] формат [аргументы]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o параметр] [-A дейÑтвие] [-G "
@@ -2528,9 +2596,10 @@ msgstr ""
"P префикÑ] [-S ÑуффикÑ] [Ð¸Ð¼Ñ ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2996,6 +3065,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3063,7 +3134,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла\n"
" ошибка приÑвоениÑ."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3074,7 +3145,7 @@ msgstr ""
" \n"
" УÑтарел. См. «help declare»."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3103,7 +3174,7 @@ msgstr ""
" ошибка приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹ или командный процеÑÑор не выполнÑет "
"функцию."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3179,7 +3250,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли не произошла ошибка запиÑи."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3202,7 +3273,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли не произошла ошибка запиÑи."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3256,7 +3327,7 @@ msgstr ""
" Возвращает уÑпех, еÑли указанное Ð¸Ð¼Ñ Ð½Ðµ ÑвлÑетÑÑ Ð²Ñтроенной командой или "
"не произошла ошибка."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3275,7 +3346,8 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние выхода команды или уÑпех, еÑли команда пуÑтаÑ."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3308,8 +3380,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3320,7 +3392,8 @@ msgstr ""
" getopts иÑпользуетÑÑ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð°Ð¼Ð¸ командного процеÑÑора Ð´Ð»Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°\n"
" позиционных параметров.\n"
" \n"
-" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли поÑле\n"
+" «Ñтрока_параметров» Ñодержит буквы раÑпознаваемых параметров. ЕÑли "
+"поÑле\n"
" буквы идёт двоеточие, ÑчитаетÑÑ, что у параметра еÑÑ‚ÑŒ аргумент,\n"
" который должен быть отделён пробелом.\n"
" \n"
@@ -3359,7 +3432,7 @@ msgstr ""
"доÑтигнут\n"
" конец параметров или возникла ошибка."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3402,7 +3475,7 @@ msgstr ""
" Возвращает уÑпех, еÑли команда не была найдена или не возникла ошибка "
"перенаправлениÑ."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3414,7 +3487,7 @@ msgstr ""
" Закрывает командный процеÑÑор Ñ ÑоÑтоÑнием N. ЕÑли N не указан,\n"
" ÑоÑтоÑнием выхода будет ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3427,7 +3500,7 @@ msgstr ""
" Закрывает командный процеÑÑор login Ñ ÑоÑтоÑнием выхода N. Возвращает\n"
" ошибку, еÑли выполнÑетÑÑ Ð½Ðµ в командном процеÑÑоре login."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3484,7 +3557,7 @@ msgstr ""
" Возвращает уÑпех или ÑоÑтоÑние выполненной команды. Ð’ Ñлучае ошибки "
"возвращает ненулевое ÑоÑтоÑние."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3505,7 +3578,7 @@ msgstr ""
" Возвращает ÑоÑтоÑние команды, переведённой в интерактивный режим, или "
"ошибку, еÑли возникла ошибка."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3528,7 +3601,7 @@ msgstr ""
" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла "
"ошибка."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3573,7 +3646,7 @@ msgstr ""
" Возвращает уÑпех, еÑли команда была найдена или был указан допуÑтимый "
"параметр."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3615,7 +3688,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был найден шаблон или был указан допуÑтимый "
"параметр."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3686,7 +3759,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3735,7 +3808,7 @@ msgstr ""
"ошибка.\n"
" ЕÑли указан параметр -x, возвращает ÑоÑтоÑние выхода команды."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3766,7 +3839,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или задание."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3812,7 +3885,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3902,7 +3975,7 @@ msgstr ""
" ЕÑли поÑледний ÐРГУМЕÐТ имеет значение 0, let возвращает 1. Ð’ противном "
"Ñлучае let возвращает 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -4009,7 +4082,7 @@ msgstr ""
"приÑÐ²Ð¾ÐµÐ½Ð¸Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð¾Ð¹\n"
" или не был указан недопуÑтимый файловый деÑкриптор как аргумент Ð´Ð»Ñ -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4030,7 +4103,7 @@ msgstr ""
" Возвращает N или ошибку, еÑли командный процеÑÑор не выполнÑет функцию "
"или Ñкрипт."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4215,7 +4288,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4258,7 +4331,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или указанное Ð¸Ð¼Ñ "
"доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4292,7 +4365,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4333,7 +4406,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или имÑ."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4351,7 +4424,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли N положительный или меньше $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4377,7 +4450,7 @@ msgstr ""
"ошибку,\n"
" еÑли файл не удаётÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚ÑŒ."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4405,7 +4478,7 @@ msgstr ""
" Возвращает уÑпех, еÑли не включено управление заданиÑми или не произошла "
"ошибка."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4578,7 +4651,7 @@ msgstr ""
"ложно\n"
" или указан недопуÑтимый аргумент."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4590,7 +4663,7 @@ msgstr ""
" Это Ñиноним вÑтроенной команды test, но поÑледним аргументом должна\n"
" быть Ñкобка «]», ÑоответÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰ÐµÐ¹ «[»."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4610,7 +4683,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Ð’Ñегда возвращает уÑпех."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4688,12 +4761,13 @@ msgstr ""
"Ñигнала.\n"
" ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ Ñигналов не завиÑÑÑ‚ от региÑтра, а Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ SIG не ÑвлÑетÑÑ "
"обÑзательным. \n"
-" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $$».\n"
+" Сигнал можно отправить в командный процеÑÑор командой «kill -signal $"
+"$».\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый Ñигнал или параметр."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4754,7 +4828,7 @@ msgstr ""
" Возвращает уÑпех, еÑли вÑе указанные имена были найдены, или ошибку в "
"противном Ñлучае."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4786,6 +4860,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4852,7 +4927,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4877,8 +4952,8 @@ msgstr ""
" \n"
" ЕÑли РЕЖИМ начинаетÑÑ Ñ Ñ†Ð¸Ñ„Ñ€Ñ‹, он интерпретируетÑÑ ÐºÐ°Ðº воÑьмеричное "
"чиÑло.\n"
-" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ chmod"
-"(1).\n"
+" Ð’ противном Ñлучае он ÑчитаетÑÑ Ñимвольной Ñтрокой как Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ñ‹ "
+"chmod(1).\n"
" \n"
" Параметры:\n"
" -p\tеÑли РЕЖИМ не указан, вывеÑти маÑку, пригодную Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ð½Ð¾Ð³Ð¾ "
@@ -4889,7 +4964,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли был указан допуÑтимый РЕЖИМ или параметр."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4901,15 +4976,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Ожидание Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð·Ð°Ð´Ð°Ð½Ð¸Ñ Ð¸ возврат ÑоÑтоÑÐ½Ð¸Ñ Ð²Ñ‹Ñ…Ð¾Ð´Ð°.\n"
" \n"
@@ -4928,7 +5013,7 @@ msgstr ""
" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n"
" указан недопуÑтимый идентификатор или параметр."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4954,7 +5039,7 @@ msgstr ""
" Возвращает ÑоÑтоÑние поÑледнего идентификатора. Возвращает ошибку, еÑли\n"
" указан недопуÑтимый идентификатор или параметр."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4970,14 +5055,14 @@ msgstr ""
" \n"
" Цикл «for» выполнÑет поÑледовательноÑÑ‚ÑŒ команд Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ Ñлемента\n"
" ÑпиÑка. ЕÑли операнд «in СЛОВР...;» отÑутÑтвует, подразумеваетÑÑ\n"
-" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ и "
-"Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n"
+" операнд «in \"$@\"». Каждому Ñлементу в ÑпиÑке СЛОВРприÑваиваетÑÑ Ð˜ÐœÐ¯ "
+"и Ð´Ð»Ñ Ð½ÐµÐ³Ð¾\n"
" выполнÑÑŽÑ‚ÑÑ ÐšÐžÐœÐÐДЫ.\n"
" \n"
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -5008,7 +5093,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -5050,7 +5135,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5080,7 +5165,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращаемое ÑоÑтоÑние ÑоответÑтвует ÑоÑтоÑнию выхода конвейера."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5098,7 +5183,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5120,13 +5205,15 @@ msgid ""
msgstr ""
"Выполнение команд в завиÑимоÑти от уÑловий.\n"
" \n"
-" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода нулевое,\n"
+" Сначала выполнÑетÑÑ ÑпиÑок «if КОМÐÐДЫ». ЕÑли ÑоÑтоÑние выхода "
+"нулевое,\n"
" выполнÑетÑÑ ÑпиÑок «then КОМÐÐДЫ». Ð’ противном Ñлучае выполнÑетÑÑ Ð¿Ð¾ "
"очереди\n"
" вÑе ÑпиÑки «elif КОМÐÐДЫ», и еÑли их ÑоÑтоÑние выхода будет нулевым,\n"
" выполнитÑÑ ÑпиÑок «then КОМÐÐДЫ», и команда if завершитÑÑ. Ð’ противном "
"Ñлучае\n"
-" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода вÑей\n"
+" выполнитÑÑ ÑпиÑок «else КОМÐÐДЫ», еÑли он указан. СоÑтоÑние выхода "
+"вÑей\n"
" конÑтрукции ÑоответÑтвует ÑоÑтоÑнию выхода поÑледней выполненной команды "
"или будет нулевым,\n"
" еÑли ни одна проверка уÑÐ»Ð¾Ð²Ð¸Ñ Ð½Ðµ возвратила иÑтину.\n"
@@ -5134,7 +5221,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5152,7 +5239,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5170,7 +5257,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5195,7 +5282,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние выхода команды."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5220,7 +5307,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает уÑпех, еÑли Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð˜ÐœÐ¯ доÑтупно Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5239,7 +5326,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние поÑледней выполненной команды."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5265,12 +5352,13 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает ÑоÑтоÑние возобновлённого заданиÑ."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5283,7 +5371,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" Возвращает 1, еÑли выражение равно 0, в противном Ñлучае возвращает 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5338,7 +5426,7 @@ msgstr ""
" СоÑтоÑние выхода:\n"
" 0 или 1 в завиÑимоÑти от Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5450,7 +5538,7 @@ msgstr ""
"команды,\n"
" \t\tкоторые должны быть Ñохранены в журнале.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5510,7 +5598,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n"
" перейти в каталог."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5561,7 +5649,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или удалоÑÑŒ\n"
" перейти в каталог."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5615,7 +5703,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5654,7 +5742,7 @@ msgstr ""
" Возвращает уÑпех, еÑли указанный параметр включён. Возвращает ошибку,\n"
" еÑли был указан недопуÑтимый параметр или параметр отключён."
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5672,8 +5760,8 @@ 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"
@@ -5706,8 +5794,8 @@ msgstr ""
" вывод, и Ñпецификации, которые активируют вывод Ñледующего уÑпешного\n"
" аргумента.\n"
" \n"
-" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в printf"
-"(1),\n"
+" Ð’ дополнение к Ñтандартным ÑпецификациÑм формата, опиÑанным в "
+"printf(1),\n"
" printf интерпретирует:\n"
" \n"
" %b\tразвёртывание Ñкранирующих поÑледовательноÑтей Ñ Ð¾Ð±Ñ€Ð°Ñ‚Ð½Ð¾Ð¹ коÑой "
@@ -5729,7 +5817,7 @@ msgstr ""
"ошибка\n"
" запиÑи или приÑвоениÑ."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5752,7 +5840,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5785,7 +5873,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5808,7 +5896,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или не возникла "
"ошибка."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5869,7 +5957,7 @@ msgstr ""
" Возвращает уÑпех, еÑли был указан допуÑтимый параметр или Ð´Ð»Ñ Ð¸Ð¼ÐµÐ½Ð¸\n"
" определена ÑÐ¿ÐµÑ†Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5948,7 +6036,7 @@ msgstr ""
"доÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи\n"
" и ÑвлÑетÑÑ Ð¸Ð½Ð´ÐµÐºÑированным."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5958,8 +6046,24 @@ msgstr ""
" \n"
" Синоним команды «mapfile»."
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "© Free Software Foundation, Inc, 2012."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "© Free Software Foundation, Inc, 2016."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Возвращает контекÑÑ‚ вызова текущей подпрограммы.\n"
+#~ " \n"
+#~ " Без EXPR выполнÑет возврат "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: процеÑÑ %5ld (%s) в the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "ÐеизвеÑтный номер Ñигнала"
#~ msgid ":"
#~ msgstr ":"
@@ -7656,8 +7760,8 @@ msgstr ""
#~ msgid ""
#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)."
#~ msgstr ""
-#~ "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ chmod"
-#~ "(1)."
+#~ "как воÑьмеричное чиÑло, в противном Ñлучае как Ñтрока, Ð¿Ñ€Ð¸Ð½Ð¸Ð¼Ð°ÐµÐ¼Ð°Ñ "
+#~ "chmod(1)."
#~ msgid ""
#~ "Wait for the specified process and report its termination status. If"
diff --git a/po/sk.gmo b/po/sk.gmo
index f33d34c0..c6c89c52 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 1a50dd26..f0b750fd 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7,88 +7,93 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2011-03-16 21:22+0100\n"
"Last-Translator: Ivan Masár <helix84@centrum.sk>\n"
"Language-Team: Slovak <sk-i18n@lists.linux.sk>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "chybný index poľa"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: nie je možné previesť indexované pole na asociatívne"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: neplatný kÄ¾ÃºÄ asociatívneho poľa"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: nie je možné priradiť nenumerickému indexu"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: nie je možné vytvoriť: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvý znak (okrem bielych znakov) nie je „\"“"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "chýba zatvárajúca „%c“ v %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: chýba oddeľovaÄ dvojbodka"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: nie je možné zrušiť väzbu (unbind)"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: neplatný názov aliasu"
@@ -107,22 +112,22 @@ msgstr "„%s“: neplatný názov klávesovej mapy"
msgid "%s: cannot read: %s"
msgstr "%s: nie je možné preÄítaÅ¥: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: neznámy názov funkcie"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s je možné vyvolať ako "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: nie je možné zrušiť väzbu (unbind)"
@@ -136,29 +141,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "dáva zmysel iba v cykle „for“, „while“ alebo „until“"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Vracia kontext aktuálneho volania podprocedúry.\n"
+"Vrátiť kontext aktuálneho volania podprocedúry.\n"
" \n"
-" Bez EXPR, vracia "
+" Bez VÃR, vráti „$line $filename“. S VÃR,\n"
+" vráti „$line $subroutine $filename“; túto informáciu\n"
+" je možné využiť pre trasovanie zásobníka.\n"
+" \n"
+" Hodnota VÃR urÄuje o koľko rámcov volania sa vrátiÅ¥\n"
+" pred aktuálny; najvyšší rámec má Äíslo 0.\n"
+" \n"
+" Návratová hodnota:\n"
+" Vráti 0 ak shell nevykonáva funkciu shellu a EXPR nie je neplatný."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME nebola nastavená"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "príliš veľa argumentov"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "na nový vrchol zásobníka."
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD nebola nastavená"
@@ -177,7 +196,7 @@ msgstr "upozornenie: "
msgid "%s: usage: "
msgstr "%s: použitie "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: voľba vyžaduje argument"
@@ -192,7 +211,7 @@ msgstr "%s: vyžaduje sa numerický argument"
msgid "%s: not found"
msgstr "%s: nenájdené"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: neplatná voľba"
@@ -202,7 +221,7 @@ msgstr "%s: neplatná voľba"
msgid "%s: invalid option name"
msgstr "%s: neplatný názov voľby"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: nie je platný identifikátor"
@@ -215,7 +234,7 @@ msgstr "neplatné osmiÄkové Äíslo"
msgid "invalid hex number"
msgstr "neplatné Å¡estnástkové Äíslo"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "neplatné Äíslo"
@@ -291,73 +310,83 @@ msgstr "chyba pri nastavovaní atribútov terminálu: %s"
msgid "error getting terminal attributes: %s"
msgstr "chyba pri zisťovaní atribútov terminálu: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: nejednoznaÄné urÄenie úlohy"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: nie je možné zrušiť"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: neplatný názov akcie"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: chýba Å¡pecifikácia dokonÄovania"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "momentálne sa nevykonáva funkcia doplňovania"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "je možné použiť iba vo funkcii"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "„%s“: neplatný názov aliasu"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "nie je možné použiť „-f“ pre tvorbu funkcií"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcia iba na Äítanie"
@@ -372,7 +401,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: nie je možné takto robiť deštrukciu premenných polí"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: nie je možné previesť asociatívne pole na indexované"
@@ -386,27 +415,32 @@ msgstr "dynamické naÄítavanie nie je dostupné"
msgid "cannot open shared object %s: %s"
msgstr "nie je možné otvoriť zdieľaný objekt %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: nie je dynamicky naÄítané"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: nie je dynamicky naÄítané"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: nie je možné zmazať: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: je adresár"
@@ -421,12 +455,12 @@ msgstr "%s: nie je obyÄajný súbor"
msgid "%s: file is too large"
msgstr "%s: súbor je príliš veľký"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: nie je možné vykonať binárny súbor"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: nie je možné spustiť: %s"
@@ -450,15 +484,16 @@ msgstr "Existujú zastavené úlohy.\n"
msgid "There are running jobs.\n"
msgstr "Existujú bežiace úlohy.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "prákaz nenájdený"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "špecifikácia histórie"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: nie je možné otvoriť odkladací súbor: %s"
@@ -486,12 +521,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "použití\tpríkaz\n"
@@ -503,6 +538,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -537,21 +578,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "poloha histórie"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neplatný názov voľby"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: rozšírenie histórie zlyhalo"
@@ -574,7 +615,7 @@ msgstr "%s: argumenty musia byť ID procesov alebo úloh"
msgid "Unknown error"
msgstr "Neznáma chyba"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "oÄakával sa výraz"
@@ -583,12 +624,12 @@ msgstr "oÄakával sa výraz"
msgid "%s: not an indexed array"
msgstr "%s: nie je indexované pole"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: neplatná Å¡pecifikácia popisovaÄa súboru"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neplatný popisovaÄ súboru: %s"
@@ -616,36 +657,36 @@ msgstr "názov prázdnej premennej poľa"
msgid "array variable support required"
msgstr "vyžaduje sa podpora premennej poľa"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: chýba formátovací znak"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: neplatná Å¡pecifikácia formátu Äasu"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: neplatný formátovací znak"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "upozornenie: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "chýba hexadecimálna Äíslica v \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "chýba Äíslica Unicode pre \\%c"
@@ -796,12 +837,12 @@ msgstr ""
" \n"
" Zásobník adresárov môžete zobraziť vstavaným príkazom „dirs“."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: neplatná špecifikácia expirácie (timeout)"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "chyba pri Äítaní: %d: %s"
@@ -812,21 +853,11 @@ msgstr ""
"návrat („return“) je možné vykonať iba z funkcie alebo skriptu vyvolaného "
"pomocou „source“"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "nie je možné zároveň zrušiť funkciu a premennú"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: nie je možné zrušiť"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: nie je možné zruÅ¡iÅ¥: len na Äítanie %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: nie je premenná poľa"
@@ -841,7 +872,7 @@ msgstr "%s: nie je funkcia"
msgid "%s: cannot export"
msgstr "%s: nie je možné zrušiť"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "posun o"
@@ -849,7 +880,7 @@ msgstr "posun o"
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:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: neplatný názov voľby shellu"
@@ -906,26 +937,26 @@ msgstr "%s je %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s je hašovaný (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: neplatný argument limitu"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c“: chybný príkaz"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: nie je možné zistiť limit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "obmedzenie"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: nie je možné zmeniť limit: %s"
@@ -985,76 +1016,75 @@ msgstr "chybný skok"
msgid "%s: unbound variable"
msgstr "%s: neviazaná premenná"
-#: eval.c:245
-#, c-format
+#: eval.c:242
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:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: „%c“: neplatný formátovácí znak"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "chyba rúry"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, 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:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: príkaz nenájdený"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: chybný interpreter"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: nie je možné vykonať binárny súbor"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s je vstavaný príkaz (builtin) shellu\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "nie je možné duplikovať fd %d na fd %d"
@@ -1080,61 +1110,66 @@ msgstr "pokus o priradenie mimo premennej"
msgid "syntax error in variable assignment"
msgstr "chyba syntaxe vo výraze"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "delenie nulou"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "chyba: chybný expassign token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "pre podmienený výraz sa oÄakáva „:“"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponent menší ako 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po pre-inkrementácii alebo pre-dekrementácii sa oÄakáva identifikátor"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "chýba „)“"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "chyba syntaxe: oÄakáva sa operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "chyba syntaxe: neplatný aritmetický operátor"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (chybný token je „%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "neplatný aritmetický základ"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: neplatný poÄet riadkov"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "hodnota je ako základ príliš veľká"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: chyba výrazu\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: nie je možné pristupovaÅ¥ k rodiÄovským adresárom"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "nie j emožné resetovať nodelay režim fd %d"
@@ -1149,162 +1184,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp rúra"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "mažem zastavenú úlohu %d so skupinou procesu %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: proces %5ld (%s) v the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: taký pid neexistuje"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signál %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Hotovo"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Zastavené"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Zastavené(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Beží"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Hotovo(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "UkonÄenie %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Neznámy stav"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(bol uložený výpis pamäte) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid detského procesu (%ld to %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Neexistuje záznam o procese %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: úloha %d je zastavená"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: taká úloha neexistuje"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: úloha skonÄila"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: úloha %d už je v pozadí"
-#: jobs.c:3597
+#: jobs.c:3806
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:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: riadok %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (bol uložený výpis pamäte)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd teraz: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: funkcia getpgrp zlyhala"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: riadkový systém"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: riadkový systém"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "nie je možné nastaviť skupinu procesu terminálu (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "v tomto shelli nie je riadenie úloh"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: zlyhal predpoklad: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1313,39 +1358,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: zbabraný predpoklad\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "neznámy"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: blok na zozname voľných zaprataný"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: zavolaný s argumentom už uvoľneného bloku"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: zavolaný s argumentom nealokovaného bloku"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: veľkosti zaÄiatoÄného a koneÄného bloku (chunk) sa líšia"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: zavolaný s argumentom nealokovaného bloku"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: bolo detekované podteÄenie; mh_nbytes mimo rozsahu"
+
+#: lib/malloc/malloc.c:1150
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"
@@ -1387,22 +1442,22 @@ msgstr "%s: chybná špecifikácia sieťovej cesty"
msgid "network operations not supported"
msgstr "sieťové operácie nie sú podporované"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: nemožno zmeniť locale (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: nie je možné zmeniť locale (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: nie je možné zmeniť locale (%s): %s"
@@ -1449,110 +1504,110 @@ msgstr ""
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: inštrukcia presmerovania „%d“ mimo rozsahu"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, 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:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "neoÄakávaný koniec súboru poÄas hľadania „]]“"
-#: parse.y:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "chyba syntaxe v podmieneÄnom príkaze"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "neoÄakávaný token „%s“, oÄakávalo sa `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "oÄakávalo sa `)'"
-#: parse.y:4725
+#: parse.y:4815
#, 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:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "neoÄakávaný argument podmieneÄného unárneho operátora"
-#: parse.y:4775
+#: parse.y:4865
#, 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:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "oÄakáva sa podmieneÄný binárny operátor"
-#: parse.y:4801
+#: parse.y:4891
#, 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:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "neoÄakávaný argument v podmieneÄnom binárnom operátore"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "neoÄakávaný token „%c“ v podmieneÄnom príkaze"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "neoÄakávaný token „%s“ v podmieneÄnom príkaze"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "neoÄakávaný token %d v podmieneÄnom príkaze"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "chyba syntaxe neÄaleko neoÄakávaného tokenu „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "chyba syntaxe neÄaleko „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "chyba syntaxe: neoÄakávaný koniec súboru"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "chyba syntaxe"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Na opustenie shellu použite „%s“.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "neoÄakávaný koniec súboru poÄas hľadania zodpovedajúceho „)“"
@@ -1595,89 +1650,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: neplatný formátovací znak"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "popisovaÄ súboru mimo rozsahu"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: nejednoznaÄné presmerovanie"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: nie je možné prepísať existujúci súbor"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ombedzené: nie je možné presmerovať výstup"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port nie je podporovaný bez podpory sietí"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "chyba presmerovania: nie je možné duplikovať fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "nenašiel sa /tmp, vytvorte ho prosím!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp musí byť platný názov adresára"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: neplatná voľba"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: je adresár"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Nemám meno!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, verzia %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1686,317 +1741,313 @@ msgstr ""
"Použitie:\t%s [GNU dlhá voľba] [voľba] ...\n"
"\t%s [GNU dlhá voľba] [voľba] súbor-skriptu ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU dlhé voľby:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Voľby shellu:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s alebo -o voľba\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Na ohlasovanie chýb použite príkaz „bashbug“.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neplatná operácia"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Neplatný signál"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Zavesenie"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Prerušenie"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "UkonÄenie"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Neplatná inštrukcia"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "inštrukcia ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "inštrukcia EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Výnimka pri operácii s plávajúcou desatinnou Äiarkou"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Zabitý"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "chyba zbernice"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Chyba segmentácie"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Chybné systémové volanie"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Prerušená rúra"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Budík"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "UkonÄené"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Naliehavý stav V/V"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Zastavené (signál)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "PokraÄovaÅ¥"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Zastavenie alebo zabitie detského procesu"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Zastavené (vstup z tty)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Zastavené (výstup na tty)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "V/V pripravený"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "obmedzenie CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "obmedzenie súborov"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Budík (virtuálny)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Budík (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Okno sa zmenilo"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Zámok záznamu"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Používateľský signál 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Používateľský signál 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Äaká sa na vstupné údaje HFT"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "nastane výpadok napájania"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "nastane havária systému"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "presunúť proces na iný CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "chyba programovania"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "udelený režim monitoru HFT"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "stiahnutý režim monitoru HFT"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "dokonÄila sa zvuková sekvencia HFT"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Žiadosť o informácie"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Neznáme Äíslo signálu"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznámy signál #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "chybná substitúcia: chýba „%s“ v %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: nie je možné priradiť zoznam položke poľa"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "nie je možné vytvoriť rúru pre substitúciu procesov"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "nie je možné vytvoriť potomka pre substitúciu procesov"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "nie je možné otvoriÅ¥ pomenovanú rúru %s na Äítanie"
-#: subst.c:5922
+#: subst.c:6061
#, 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:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "nie je možné vytvoriť rúru pre substitúciu príkazov"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "nie je možné vytvoriť potomka pre substitúciu príkazov"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: nie je možné duplikovať rúru ako fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: neplatný poÄet riadkov"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "„%s“: neplatný názov aliasu"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter je null alebo nenastavený"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter je null alebo nenastavený"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: výraz podreťazca < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: chybná substitúcia"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: nie je možné vykonať priradenie takýmto spôsobom"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2004,12 +2055,12 @@ msgstr ""
"budúce verzie shellu budú vynucovať vyhodnocovanie ako aritmetickú "
"substitúciu"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "chybná substitúcia: : v reÅ¥azci %s chýba uzatvárajúci „`â€"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "bez zhody: %s"
@@ -2032,120 +2083,125 @@ msgstr "oÄakávala sa „)“"
msgid "`)' expected, found %s"
msgstr "oÄakávala sa „)“, bolo nájdené %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: oÄakával sa unárny operátor"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: oÄakával sa binárny operátor"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: oÄakával sa unárny operátor"
+
+#: test.c:881
msgid "missing `]'"
msgstr "chýba „]“"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "chyba syntaxe: neoÄakávaná „;“"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "neplatné Äíslo signálu"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: chybný signál %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "chyba pri importe definície funkcie „%s“"
-#: variables.c:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: nie je možné priradiÅ¥ popisovaÄ súboru premennej"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s má null exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neplatný znak %d v exportstr %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "žiadne „=“ v exportstr %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: chýba kontext global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: nemožno otvoriť ako SÚBOR"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neplatná hodnota popisovaÄa trasovacieho súboru"
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s je mimo rozsahu"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
msgid ""
@@ -2241,12 +2297,12 @@ msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrtux] [-p] [názov[=hodnota] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilrtux] [-p] name[=value] ..."
#: builtins.c:82
@@ -2270,11 +2326,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts názov_reťazca_volieb [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a názov] [príkaz [argumenty ...]] [presmerovanie ...]"
#: builtins.c:100
@@ -2407,7 +2465,7 @@ msgstr "umask [-p] [-S] [režim]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2504,7 +2562,7 @@ msgstr "printf [-v var] formát [argumenty]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o voľba] [-A operácia] [-G glob_vzor] "
@@ -2514,8 +2572,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2962,6 +3020,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3022,7 +3082,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3033,7 +3093,7 @@ msgstr ""
" \n"
" Zastaralé. Pozri „help declare“."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -3060,7 +3120,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba, nevyskytla sa chyba a\n"
" shell práve nevykonáva funkciu."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3128,7 +3188,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nevyskytla sa chyba pri zápise."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3150,7 +3210,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nevyskytla sa chyba pri zápise."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3204,7 +3264,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak NÃZOV nie je vstavaná funkcia shellu a nevyskytla sa chyba."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3223,7 +3283,8 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu príkazu alebo 0 ak je príkaz prázdny."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3256,8 +3317,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3299,7 +3360,7 @@ msgstr ""
" Vráti 0 ak je voľba nájdená; zlyhá po dosiahnutí konca reťazca volieb\n"
" alebo ak sa vyskytne chyba."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3340,7 +3401,7 @@ msgstr ""
" Vráti 0 ak sa nestane, že PRÃKAZ nebol nájdený a nevyskytne sa chyba\n"
" presmerovania."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3352,7 +3413,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3365,7 +3426,7 @@ msgstr ""
" UkonÄí login shell s návratovou hodnotou N. Vráti chybu ak nie je\n"
" spustený v login shelli."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3421,7 +3482,7 @@ msgstr ""
" Vráti 0 alebo stav vykonaného príkazu; nenulovú hodnotu ak sa vyskytne\n"
" chyba."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3441,7 +3502,7 @@ msgstr ""
" Stav príkazu umiestneného do popredia; nenulovú hodnotu ak sa vyskytne\n"
" chyba."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3462,7 +3523,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nie je riadenie úloh vypnuté a nevyskytne sa chyba."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3510,7 +3571,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že NÃZOV nebol nájdený a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3551,7 +3612,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že VZOR nebol nájdený a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3616,7 +3677,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3660,7 +3721,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba.\n"
" Ak je použitá voľba -x, vráti sa návratová hodnota PRÃKAZu."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3691,7 +3752,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná JOBSPEC."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3733,7 +3794,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3818,7 +3879,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:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3913,7 +3974,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:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3934,7 +3995,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti N alebo zlyhá ak shell nevykonáva funkciu Äi skript."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4106,7 +4167,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4146,7 +4207,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4181,7 +4242,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4221,7 +4282,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je NÃZOV neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4239,7 +4300,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je N záporné alebo väÄÅ¡ie ako $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4263,7 +4324,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:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4287,7 +4348,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je vypnuté riadenie úloh a nevyskytla sa chyba."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4449,7 +4510,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4461,7 +4522,7 @@ msgstr ""
" Toto je synonymum vsatavanej funkcie „test“, ale posledný\n"
" argument musí byť literál „]“, ktorý uzatvára otvárajúcu „[“."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4480,7 +4541,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vždy vráti 0."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4560,7 +4621,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je SIGSPEC neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4616,7 +4677,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak boli nájdené vÅ¡etky NÃZVY; zlyhá ak nie."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4648,6 +4709,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4706,7 +4768,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4740,7 +4802,7 @@ msgstr ""
" Vráti 0 ak sa nestalo, že je REŽIM neplatný a nebola zadaná\n"
" neplatná voľba."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4752,15 +4814,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"ÄŒakaÅ¥ na dokonÄenie úlohy a vrátiÅ¥ návratovú hodnotu.\n"
" \n"
@@ -4774,7 +4846,7 @@ msgstr ""
" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná\n"
" neplatná voľba."
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4800,7 +4872,7 @@ msgstr ""
" Vráti stav ID; zlyhá ak je ID neplatný alebo bola zadaná neplatná\n"
" voľba."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4822,7 +4894,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4852,7 +4924,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4887,7 +4959,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4915,7 +4987,7 @@ msgstr ""
" Návratová hodnota:\n"
" Návratová hodnota je návratová hodnota RÚRY."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4933,7 +5005,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4970,7 +5042,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4988,7 +5060,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5006,7 +5078,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5029,7 +5101,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu PRÃKAZu."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5054,7 +5126,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak sa nestalo, že je NÃZOV iba na Äítanie."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5072,7 +5144,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu posledného vykonaného príkazu."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5096,12 +5168,13 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti návratovú hodnotu obnovenej úlohy."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5114,7 +5187,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 1 ak sa VÃRAZ vyhodnotí na 0; inak vráti 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5162,7 +5235,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 alebo 1 v závislosti na hodnote VÃRAZu."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5266,7 +5339,7 @@ msgstr ""
" HISTIGNORE\tBodkoÄiarkami oddelený zoznam vzoriek, ktoré\n"
" \t\tsa používajú na rozhodovanie, Äi sa príkaz uloží do histórie.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5323,7 +5396,7 @@ msgstr ""
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
" chyba pri zmene adresára."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5374,7 +5447,7 @@ msgstr ""
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa\n"
" chyba pri zmene adresára."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5426,7 +5499,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebol zadaný neplatný argument a nevyskytla sa chyba."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5464,7 +5537,7 @@ msgstr ""
" Vráti 0 ak je OPTNAME zapnuté; zlyhá ak bola zadaná\n"
" neplatná voľba alebo OPTNAME je vypnuté."
-#: builtins.c:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5482,8 +5555,8 @@ 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"
@@ -5529,7 +5602,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba pri\n"
" zápise Äi priradení."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5552,7 +5625,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5582,7 +5655,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5602,7 +5675,7 @@ msgstr ""
" Návratová hodnota:\n"
" Vráti 0 ak nebola zadaná neplatná voľba a nevyskytla sa chyba."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5660,7 +5733,7 @@ msgstr ""
" Vráti 0 ak nebola zadaná neplatná voľba a NÃZOV nemá definovanú\n"
" špecifikáciu dopĺňania."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5735,7 +5808,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:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5745,8 +5818,24 @@ msgstr ""
" \n"
" Synonymum k „mapfile“."
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Copyright (C) 2009 Free Software Foundation, Inc.\n"
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Copyright (C) 2011 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Vracia kontext aktuálneho volania podprocedúry.\n"
+#~ " \n"
+#~ " Bez EXPR, vracia "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: proces %5ld (%s) v the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Neznáme Äíslo signálu"
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/sl.gmo b/po/sl.gmo
index 696a4c38..db02245a 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 66448561..d1ad4135 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -9,89 +9,94 @@ msgid ""
msgstr ""
"Project-Id-Version: bash-4.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2013-03-09 20:21+0100\n"
"Last-Translator: Klemen Košir <klemen913@gmail.com>\n"
"Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
"%100==4 ? 3 : 0);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "slab podpis polja"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: ni mogoÄe pretvoriti zabeleženega polja v povezano polje"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: neveljaven kljuÄ povezanega polja"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: ni mogoÄe dodeliti v ne-Å¡tevilÄno kazalo"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: ni mogoÄe ustvariti: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: prvi znak brez presledka ni `\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "brez zakljuÄka `%c' v %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: manjka loÄilnik dvopiÄja"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': ni mogoÄe odvezati"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr ""
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr ""
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr ""
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': neveljaven vzdevek"
@@ -110,22 +115,22 @@ msgstr "`%s': neveljavno ime tipkovne razvrstitve"
msgid "%s: cannot read: %s"
msgstr "%s: ni mogoÄe brati: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': neznano ime funkcije"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s se lahko pokliÄe s pomoÄjo "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': ni mogoÄe odvezati"
@@ -139,29 +144,44 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "smiselno samo v `for', `while', ali `until' zanki"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
"Vrne vsebino trenutnega klica podprograma.\n"
" \n"
-" Brez EXPR vrne "
+" Brez IZRAZA vrne \"$line $filename\". Z IZRAZOM vrne\n"
+" \"$line $subroutine $filename\"; ta dodaten podatek se lahko uporabi\n"
+" za zagotovitev sledenja sklada.\n"
+" \n"
+" Vrednost IZRAZA nakazuje, koliko okvirjev klicev mora nazaj\n"
+" pred trenutnega; zgornji okvir je okvir 0.\n"
+" \n"
+" Stanje konÄanja:\n"
+" Vrne 0, razen Äe lupina ne izvrÅ¡uje funkcije lupine ali pa IZRAZ\n"
+" ni veljaven."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME ni nastavljen"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "preveÄ argumentov"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "ni druge mape"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD ni nastavljen"
@@ -180,7 +200,7 @@ msgstr "opozorilo: "
msgid "%s: usage: "
msgstr "%s: uporaba: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: možnost zahteva argument"
@@ -195,7 +215,7 @@ msgstr "%s: zahtevan je Å¡tevni argument"
msgid "%s: not found"
msgstr "%s: ni mogoÄe najti"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: neveljavna možnost"
@@ -205,7 +225,7 @@ msgstr "%s: neveljavna možnost"
msgid "%s: invalid option name"
msgstr "%s: neveljavno ime možnosti"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': neveljavno doloÄilo"
@@ -218,7 +238,7 @@ msgstr "neveljavno osmiško število"
msgid "invalid hex number"
msgstr "neveljavno šestnajstiško število"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "neveljavno Å¡tevilo"
@@ -294,73 +314,83 @@ msgstr "napaka med nastavljanjem atributov terminala: %s"
msgid "error getting terminal attributes: %s"
msgstr "napaka med pridobivanjem atributov terminala: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: napaka med pridobivanjem trenutne mape: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: dvoumno doloÄilo posla"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr ""
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: ni mogoÄe ponastaviti: samo za branje %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: ni mogoÄe ponastaviti"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: neveljavno ime dejanja"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ni doloÄila dopolnjevanja"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "trenutno se ne izvaja funkcija dopolnjevanja"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "se lahko uporabi samo v funkciji"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr ""
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr ""
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr ""
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': neveljaven vzdevek"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "ni mogoÄe uporabiti `-f' za ustvarjanje funkcij"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: funkcija samo za branje"
@@ -375,7 +405,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: na ta naÄin ni mogoÄe uniÄiti spremenljivk polja"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: ni mogoÄe pretvoriti povezanega polja v zabeleženo polje"
@@ -389,27 +419,32 @@ msgstr "dinamiÄno nalaganje ni na voljo"
msgid "cannot open shared object %s: %s"
msgstr "ni mogoÄe odpreti predmeta v souporabi %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: ni dinamiÄno naloženo"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: ni dinamiÄno naloženo"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: ni mogoÄe izbrisati: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: je mapa"
@@ -424,12 +459,12 @@ msgstr "%s: ni obiÄajna datoteka"
msgid "%s: file is too large"
msgstr "%s: datoteka je prevelika"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ni mogoÄe izvesti binarne datoteke"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: ni mogoÄe izvesti: %s"
@@ -453,15 +488,16 @@ msgstr "Obstajajo ustavljeni posli.\n"
msgid "There are running jobs.\n"
msgstr "Obstajajo posli, ki se izvajajo.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "najdenega ni nobenega ukaza"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "doloÄilo zgodovine"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: ni mogoÄe odpreti zaÄasne datoteke: %s"
@@ -489,12 +525,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "zadetki\tukaz\n"
@@ -507,13 +543,19 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, 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:224
#, c-format
@@ -541,21 +583,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "položaj zgodovine"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: neveljavno ime možnosti"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: razširitev zgodovine je spodletela"
@@ -578,7 +620,7 @@ msgstr "%s: argumenti morajo biti doloÄila opravila ali posla"
msgid "Unknown error"
msgstr "Neznana napaka"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "izraz je bil priÄakovan"
@@ -587,12 +629,12 @@ msgstr "izraz je bil priÄakovan"
msgid "%s: not an indexed array"
msgstr "%s: ni zabeleženo polje"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: neveljavno doloÄilo opisnika datoteke"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: neveljaven opisnik datoteke: %s"
@@ -620,36 +662,36 @@ msgstr "prazno ime spremenljivke polja"
msgid "array variable support required"
msgstr "potrebna podpora spremenljivke polja"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': manjka znak oblike"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': neveljavno doloÄilo vrste Äasa"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': neveljaven znak oblike"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "opozorilo: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr ""
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "manjka šestnajstiška števka za \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "manjka Å¡tevka s podporo unicode za \\%c"
@@ -800,12 +842,12 @@ msgstr ""
" \n"
" Ukaz lupine `dirs' prikaže sklad map."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: neveljavno doloÄilo Äasovne omejitve"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "napaka med branjem: %d: %s"
@@ -814,21 +856,11 @@ msgstr "napaka med branjem: %d: %s"
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:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "ni mogoÄe ponastaviti funkcije in spremenljivke hkrati"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: ni mogoÄe ponastaviti"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: ni mogoÄe ponastaviti: samo za branje %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ni spremenljivka polja"
@@ -843,7 +875,7 @@ msgstr "%s: ni funkcija"
msgid "%s: cannot export"
msgstr "%s: ni mogoÄe ponastaviti"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "Å¡tetje premika"
@@ -851,7 +883,7 @@ msgstr "Å¡tetje premika"
msgid "cannot set and unset shell options simultaneously"
msgstr "ni mogoÄe nastaviti in ponastaviti možnosti lupine hkrati"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: neveljavno ime možnosti lupine"
@@ -908,26 +940,26 @@ msgstr "%s je %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s je razpršeno (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: neveljaven argument omejitve"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': slab ukaz"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: ni mogoÄe dobiti omejitve: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "omejitev"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: ni mogoÄe spremeniti omejitve: %s"
@@ -987,76 +1019,75 @@ msgstr "slab skok"
msgid "%s: unbound variable"
msgstr "%s: nedoloÄena spremenljivka"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\apotekla je Äasovna omejitev med Äakanjem na vnos: samodejna odjava\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': neveljaven znak oblike"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "napaka cevi"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr ""
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: omejeno: ni mogoÄe doloÄiti `/' v imenih ukaza"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: ukaza ni mogoÄe najti"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: slab tolmaÄ"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, fuzzy, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ni mogoÄe izvesti binarne datoteke"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, fuzzy, c-format
msgid "`%s': is a special builtin"
msgstr "%s je vgrajena lupina\n"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "ni mogoÄe podvajati fd %d v fd %d"
@@ -1082,61 +1113,66 @@ msgstr "poskus dodelitve ne-spremenljivki"
msgid "syntax error in variable assignment"
msgstr "skladenjska napaka v izrazu"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "delitev z 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "hroÅ¡Ä: slab žeton expassign"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "`:' priÄakovano za pogojni izraz"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "eksponent je manjši kot 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "po predhodnem veÄanju ali manjÅ¡anju je priÄakovano doloÄilo"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "manjka `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "skladenjska napaka: priÄakovan operand"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "skladenjska napaka: neveljaven aritmetiÄni operand"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (žeton napake je \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "neveljavna aritmetiÄna zbirka"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: neveljavno Å¡tetje vrstic"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "vrednost je prevelika za zbirko"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: napaka izraza\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: ni mogoÄe dostopati do nadrejenih map"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "ni mogoÄe ponastaviti naÄina brez zakasnitve za fd %d"
@@ -1151,162 +1187,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: cev pgrp"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "brisanje ustavljenega posla %d s skupino opravila %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: opravilo %5ld (%s) v the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ni takÅ¡nega doloÄila opravila"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "KonÄano"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Zaustavljeno"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Zaustavljeno(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Se izvaja"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "KonÄano(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "KonÄaj %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Neznano stanje"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(izpis jedra) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "podrejeno opravilo setpgid (%ld v %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: ni zapisov o opravilu %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: posel %d je zaustavljen"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: ni takšnega posla"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: posel je uniÄen"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: posel %d se že izvaja v ozadju"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: vklop WNOHANG za prepreÄitev nedoloÄenosti bloka"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: vrstica %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (izpis jedra)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd zdaj: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp je spodletel"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: vrstiÄna disciplina"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: vrstiÄna disciplina"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "ni mogoÄe nastaviti skupine opravil terminala (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "brez nadzora posla v tej lupini"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: spodletela trditev: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1315,41 +1361,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: trditev je bila slabo izpeljana\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "neznano"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: vsebina bloka na prostem seznamu je bila prepisana"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: poklican z že sproÅ¡Äenim argumentom bloka"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: klic z nedodeljenim argumentom bloka"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr ""
"free: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se "
"razlikujejo"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: klic z nedodeljenim argumentom bloka"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: zaznana prekoraÄitev spodnje meje; mh_nbytes je izven dosega"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr ""
"realloc: velikosti zaÄetnih in konÄnih podatkovnih kosov \"chunk\" se "
@@ -1393,22 +1449,22 @@ msgstr "%s: slabo doloÄilo omrežne poti"
msgid "network operations not supported"
msgstr "omrežno opravilo ni podprto"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ni mogoÄe spremeniti jezikovne oznake (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: ni mogoÄe spremeniti jezikovne oznake (%s): %s"
@@ -1454,110 +1510,110 @@ msgstr "here-document v vrstici %d razmejen z end-of-file (želeno `%s')"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: navodilo preusmeritve `%d' je izven dosega"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr ""
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `%c'"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "skladenjska napaka v pogojnem izrazu: nepriÄakovan žeton `%s'"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "skladenjska napaka v pogojnem izrazu"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "nepriÄakovan žeton `%s', priÄakovan je bil `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "priÄakovan `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "nepriÄakovan argument `%s' do pogojnega enoslovnega operatorja"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "nepriÄakovan argument do pogojnega enoslovnega operatorja"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "nepriÄakovan žeton `%s', priÄakovan je binarni pogojni operator"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "priÄakovan je binarni pogojni operator"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "nepriÄakovan argument `%s' do pogojnega binarnega operatorja"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "nepriÄakovan argument do pogojnega binarnega operatorja"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "nepriÄakovan žeton `%c' v pogojnem ukazu"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "nepriÄakovan žeton `%s' v pogojnem ukazu"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "nepriÄakovan žeton %d v pogojnem ukazu"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "skladenjska napaka blizu nepriÄakovanega žetona `%s'"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "skladenjska napaka blizu `%s'"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "skladenjska napaka: nepriÄakovan konec datoteke"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "skladenjska napaka"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Uporabite \"%s\", Äe želite zapustiti lupino.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "nepriÄakovan konec datoteke med iskanjem ujemanja z `)'"
@@ -1600,89 +1656,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': neveljaven znak oblike"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "opisnik datoteke je izven dosega"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: dvoumna preusmeritev"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: ni mogoÄe prepisati obstojeÄe datoteke"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: omejitev: ni mogoÄe preusmeriti izhoda"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: ni mogoÄe dodeliti fd spremenljivki"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port ni podprt brez omrežja"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "napaka preusmeritve: ni mogoÄe podvajati fd"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "ni mogoÄe najti /tmp, ustvarite ga!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp mora biti veljavno ime mape"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: neveljavna možnost"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, fuzzy, c-format
msgid "%s: Is a directory"
msgstr "%s: je mapa"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ni imena!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, razliÄica %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1691,326 +1747,322 @@ msgstr ""
"Uporaba:\t%s [dolga možnost GNU] [možnost] ...\n"
"\t%s [dolga možnost GNU] [možnost] skriptni dokument ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Dolge možnosti GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Možnosti lupine:\n"
-#: shell.c:1988
+#: shell.c:2043
#, 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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ali možnost -o\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "Uporabite ukaz `bashbug' za poroÄanje hroÅ¡Äev.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr ""
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: neveljavno opravilo"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Lažen signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Odloži"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Prekini"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "KonÄaj"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Neveljaven ukaz"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ukaz ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "ukaz EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Izjema s plavajoÄo vejico"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "UniÄen"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Napaka vodila"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Napaka segmentacije"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Slab sistemski klic"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Prekinjena cev"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Budilka"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "ZakljuÄen"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Nujen pogoj IO"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Ustavljen (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Nadaljuj"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Podrejeno opravilo je uniÄeno ali zaustavljeno"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Ustavljen (vhod TTY)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Ustavljen (izhod TTY)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O je pripravljen"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "omejitev CPE"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "omejitev datoteke"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Budilka (navidezna)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Budilka (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Okno se je spremenilo"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Zaklep zapisa"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Signal uporabnika 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Signal uporabnika 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "vnos podatkov HFT je na Äakanju"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "izpad elektriÄnega toka je neizbežen"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "sesutje sistema je neizbežno"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "preseli opravilo na drug CPE"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "napaka programiranja"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "naÄin nadzora HFT je odobren"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "naÄin nadzora HFT je umaknjen"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "zaporedje zvoka HFT je konÄano"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "zahteva po podatkih"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Neznan signal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Neznan signal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "slaba zamenjava: ni zakljuÄka `%s' v %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: ni mogoÄe dodeliti seznama Älanu polja"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "ni mogoÄe ustvariti cevi za zamenjavo opravila"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo opravila"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "ni mogoÄe odpreti imenovane cevi %s za branje"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "ni mogoÄe odpreti imenovane cevi %s za pisanje"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "ni mogoÄe podvajati imenovane cevi %s kot fd %d"
-#: subst.c:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "ni mogoÄe ustvariti cevi za zamenjavo ukaza"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "ni mogoÄe ustvariti podrejenega opravila za zamenjavo ukaza"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: ni mogoÄe podvajati cevi kot fd 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, fuzzy, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, fuzzy, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: neveljavno Å¡tetje vrstic"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, fuzzy, c-format
msgid "%s: invalid variable name"
msgstr "`%s': neveljaven vzdevek"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parameter je prazen ali pa ni doloÄen"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parameter je prazen ali pa ni doloÄen"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: izraz podniza < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: slaba zamenjava"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: ni mogoÄe dodeliti na tak naÄin"
-#: subst.c:9485
+#: subst.c:9814
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:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "slaba zamenjava: ni zakljuÄka \"`\" v %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "ni ujemanja: %s"
@@ -2033,120 +2085,125 @@ msgstr "priÄakovan je `)'"
msgid "`)' expected, found %s"
msgstr "priÄakovan je `)', najden je %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: priÄakuje se enosnoven operator"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: priÄakuje se binarni operator"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: priÄakuje se enosnoven operator"
+
+#: test.c:881
msgid "missing `]'"
msgstr "manjka `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "skladenjska napaka: `;' nepriÄakovano"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "neveljavna Å¡tevka signala"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr ""
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: slab signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "napaka med uvozom doloÄila funkcije `%s'"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "raven lupine (%d) je previsoka, ponastavljanje na 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: v trenutnem dosegu ni vsebine funkcije"
-#: variables.c:2674
+#: variables.c:2693
#, fuzzy, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: ni mogoÄe dodeliti fd spremenljivki"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr ""
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: v trenutnem dosegu ni vsebine funkcije"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s ima prazen exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "neveljaven znak %d v exportstr za %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "ni `=' v exportstr za %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: glava shell_variables ni vsebina funkcije"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ni vsebine global_variables"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: glava shell_variables ni trenuten obseg okolja"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: ni mogoÄe odpreti kot DATOTEKO"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: neveljavna vrednost za opisnik sledenja datotek"
-#: variables.c:6322
+#: variables.c:6437
#, fuzzy, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s izven dosega"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n"
#: version.c:47 version2.c:47
msgid ""
@@ -2240,12 +2297,12 @@ msgstr "ukaz [-pVv] ukaz [arg ...]"
#: builtins.c:78
#, fuzzy
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilrtux] [-p] [ime[=vrednost] ...]"
#: builtins.c:80
#, fuzzy
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilrtux] [-p] ime[=vrednost] ..."
#: builtins.c:82
@@ -2269,11 +2326,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts niz_možnosti ime[arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a ime] [ukaz [argumenti ...]] [preusmeritev ...]"
#: builtins.c:100
@@ -2407,7 +2466,7 @@ msgstr "umask [-p] [-S] [naÄin]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [id]"
#: builtins.c:181
@@ -2502,7 +2561,7 @@ msgstr "printf [-v spremenljivka] oblika [argumenti]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o možnost] [-A dejanje] [-G "
@@ -2512,8 +2571,8 @@ msgstr ""
#: builtins.c:235
#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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] [-"
@@ -2956,6 +3015,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3018,7 +3079,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pride\n"
" do napake."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3029,7 +3090,7 @@ msgstr ""
" \n"
" Zastarelo. Oglejte si `help declare'."
-#: builtins.c:538
+#: builtins.c:540
#, fuzzy
msgid ""
"Define local variables.\n"
@@ -3056,7 +3117,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:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3124,7 +3185,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3146,7 +3207,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe pride do napake pri pisanju."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3198,7 +3259,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe IME ni vgrajena lupina ali Äe pride do napake."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3217,7 +3278,8 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje konÄanja ali uspeÅ¡no, Äe je ukaz prazen."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3250,8 +3312,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3295,7 +3357,7 @@ msgstr ""
" Vrne uspeÅ¡no, Äe je možnost najdena; neuspeÅ¡no, Äe pride\n"
" do konca možnosti ali do napake."
-#: builtins.c:692
+#: builtins.c:694
#, fuzzy
msgid ""
"Replace the shell with the given command.\n"
@@ -3335,7 +3397,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe UKAZ ni najden ali pride do napake preusmeritve."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3347,7 +3409,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3360,7 +3422,7 @@ msgstr ""
" KonÄa prijavno lupino s stanjem konÄanja N. Vrne napako, Äe se\n"
" ne izvede v prijavni lupini."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3414,7 +3476,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no ali stanje izvedenega ukaza; ne-niÄelno, Äe pride do napake."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3435,7 +3497,7 @@ msgstr ""
" Stanje ukaza, postavljenega v ospredje, ali neuspeÅ¡no, Äe se\n"
" pojavi napaka."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3458,7 +3520,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride\n"
" do napake."
-#: builtins.c:791
+#: builtins.c:793
#, fuzzy
msgid ""
"Remember or display program locations.\n"
@@ -3501,7 +3563,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe IME ni najdeno ali Äe je dana neveljavna možnost."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3542,7 +3604,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe VZOREC ni najden ali pa je dana neveljavna\n"
" možnost."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3611,7 +3673,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je podana neveljavna možnost ali Äe pride\n"
" do napake."
-#: builtins.c:877
+#: builtins.c:879
#, fuzzy
msgid ""
"Display status of jobs.\n"
@@ -3656,7 +3718,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n"
" napake. ÄŒe se uporabi -x, vrne stanje konÄanja UKAZA."
-#: builtins.c:904
+#: builtins.c:906
#, fuzzy
msgid ""
"Remove jobs from current shell.\n"
@@ -3689,7 +3751,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je dano\n"
" DOLOÄŒILO_POSLA."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3732,7 +3794,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n"
" napake."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3819,7 +3881,7 @@ msgstr ""
" Stanje konÄanja\n"
" ÄŒe zadnji ARG ovrednoti na 0, let vrne 1; sicer let vrne 0."
-#: builtins.c:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3912,7 +3974,7 @@ msgstr ""
" omejitev prekoraÄena ali Äe je dan neveljaven opisnik datotek kot\n"
" argument v -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3932,7 +3994,7 @@ msgstr ""
" Stanje konÄanja\n"
" Vrne N ali neuspeÅ¡no, Äe lupina ne izvede funkcije ali skripta."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4105,7 +4167,7 @@ msgstr ""
" Stanje konÄanja\n"
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost."
-#: builtins.c:1137
+#: builtins.c:1139
#, fuzzy
msgid ""
"Unset values and attributes of shell variables and functions.\n"
@@ -4144,7 +4206,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je IME samo\n"
" za branje."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4178,7 +4240,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n"
" neveljavno IME."
-#: builtins.c:1178
+#: builtins.c:1180
#, fuzzy
msgid ""
"Mark shell variables as unchangeable.\n"
@@ -4218,7 +4280,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe je\n"
" neveljavno IME."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4236,7 +4298,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je N negativen ali veÄji kot $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4260,7 +4322,7 @@ msgstr ""
" Vrne stanje zadnjega izvršenega ukaza v IMENU_DATOTEKE; vrne\n"
" neuspeÅ¡no, Äe IMENA_DATOTEKE ni mogoÄe brati."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4286,7 +4348,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe nadzor posla ni omogoÄen ali Äe pride do\n"
" napake."
-#: builtins.c:1259
+#: builtins.c:1261
#, fuzzy
msgid ""
"Evaluate conditional expression.\n"
@@ -4448,7 +4510,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4460,7 +4522,7 @@ msgstr ""
" To je sopomenka za vgrajeno lupino \"test\", toda zadnji argument\n"
" mora biti dobesedni `]' za ujemanje z uklepajem `['."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4479,7 +4541,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vedno uspešno."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4559,7 +4621,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je SIGSPEC neveljaven ali je dana neveljavna "
"možnost."
-#: builtins.c:1398
+#: builtins.c:1400
#, fuzzy
msgid ""
"Display information about command type.\n"
@@ -4617,7 +4679,7 @@ msgstr ""
" Vrne uspeÅ¡no, Äe so vsa IMENA najdena; vrne neuspeÅ¡no, Äe katero\n"
" ni najdeno."
-#: builtins.c:1429
+#: builtins.c:1431
#, fuzzy
msgid ""
"Modify shell resource limits.\n"
@@ -4649,6 +4711,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4709,7 +4772,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do\n"
" napake."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4743,7 +4806,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je NAÄŒIN neveljaven ali Äe je dana neveljavna\n"
" možnost."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4755,15 +4818,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"ÄŒaka na dokonÄanje posla in vrne stanje konÄanja.\n"
" \n"
@@ -4778,7 +4851,7 @@ msgstr ""
" Vrne stanje ID-ja; vrne neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n"
" neveljavna možnost."
-#: builtins.c:1523
+#: builtins.c:1533
#, fuzzy
msgid ""
"Wait for process completion and return exit status.\n"
@@ -4803,7 +4876,7 @@ msgstr ""
" Vrne stanje ID-ja; neuspeÅ¡no, Äe je ID neveljaven ali Äe je dana\n"
" neveljavna možnost."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4826,7 +4899,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4857,7 +4930,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4894,7 +4967,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4923,7 +4996,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Stanje konÄanja je stanje konÄanja CEVOVODA."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4941,7 +5014,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4975,7 +5048,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4993,7 +5066,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5011,7 +5084,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -5034,7 +5107,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje konÄanja UKAZA."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5058,7 +5131,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je IME samo za branje."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5076,7 +5149,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje zadnjega izvršenega ukaza."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5100,12 +5173,13 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne stanje obnovljenega posla."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5118,7 +5192,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne 1, Äe je IZRAZ enakovreden; sicer vrne 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5172,7 +5246,7 @@ msgstr ""
" Stanje konÄanja:\n"
" 0 ali 1, odvisno od vrednosti IZRAZA."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5276,7 +5350,7 @@ msgstr ""
" HISTIGNORE\tZ dvopiÄjem loÄen seznam vzorcev, ki so uporabljeni \n"
" \t\tza odloÄanje, kateri ukazi naj se shranijo na seznam zgodovine.\n"
-#: builtins.c:1811
+#: builtins.c:1821
#, fuzzy
msgid ""
"Add directories to stack.\n"
@@ -5333,7 +5407,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n"
" sprememba mape spodleti."
-#: builtins.c:1845
+#: builtins.c:1855
#, fuzzy
msgid ""
"Remove directories from stack.\n"
@@ -5384,7 +5458,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložen neveljaven argument ali Äe\n"
" sprememba mape spodleti."
-#: builtins.c:1875
+#: builtins.c:1885
#, fuzzy
msgid ""
"Display directory stack.\n"
@@ -5436,7 +5510,7 @@ msgstr ""
" Stanje konÄanja:\n"
" Vrne uspeÅ¡no, razen Äe je dana neveljavna možnost ali Äe pride do napake."
-#: builtins.c:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5473,7 +5547,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:1927
+#: builtins.c:1937
#, fuzzy
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
@@ -5491,8 +5565,8 @@ 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"
@@ -5539,7 +5613,7 @@ msgstr ""
"napake\n"
" branja ali dodelitve."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5562,7 +5636,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5595,7 +5669,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n"
" do napake."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5617,7 +5691,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali Äe pride\n"
" do napake."
-#: builtins.c:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5675,7 +5749,7 @@ msgstr ""
" Vrne uspeÅ¡no, razen Äe je predložena neveljavna možnost ali pa IME\n"
" nima doloÄenega doloÄila dopolnjevanja."
-#: builtins.c:2037
+#: builtins.c:2047
#, fuzzy
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
@@ -5753,7 +5827,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:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5763,8 +5837,24 @@ msgstr ""
" \n"
" Je sopomenka za `mapfile'."
-#~ msgid "Copyright (C) 2009 Free Software Foundation, Inc.\n"
-#~ msgstr "Avtorske pravice (C) 2009 Free Software Foundation, Inc.\n"
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Avtorske pravice (C) 2011 Free Software Foundation, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Vrne vsebino trenutnega klica podprograma.\n"
+#~ " \n"
+#~ " Brez EXPR vrne "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: opravilo %5ld (%s) v the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Neznan signal #"
#~ msgid ""
#~ "License GPLv2+: GNU GPL version 2 or later <http://gnu.org/licenses/gpl."
diff --git a/po/sr.gmo b/po/sr.gmo
index 60fa85c5..6e2fdf92 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index 624010a5..a5d5efd6 100644
--- a/po/sr.po
+++ b/po/sr.po
@@ -1,93 +1,99 @@
# Serbian translation for bash.
-# Copyright (C) 2014 Free Software Foundation, Inc.
+# Copyright © 2020 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
-# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2014—2016.
+# МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>, 2014—2020.
msgid ""
msgstr ""
-"Project-Id-Version: bash-4.4\n"
+"Project-Id-Version: bash-5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2016-10-01 19:25+0200\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-03-31 15:52+0200\n"
"Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
+"Language: sr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\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"
+"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: Virtaal 0.7.1\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "лош Ð¸Ð½Ð´ÐµÐºÑ Ð½Ð¸Ð·Ð°"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: уклањам атрибут упуте назива"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: не могу да претворим попиÑани низ у придружив"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: неиÑправан кључ придруживог низа"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: не могу да доделим у не-бројевни попиÑ"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: мора кориÑтити Ð¸Ð½Ð´ÐµÐºÑ Ð¿Ñ€Ð¸Ð»Ð¸ÐºÐ¾Ð¼ додељивања придруживог низа"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не могу да направим: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "баш_изврши_јуникÑ_наредбу: не могу да нађем мапу кључа за наредбу"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: први не-празан знак није \""
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "нема затварајућег „%c“ у %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: недоÑтаје раздвојник двотачке"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "„%s“: не могу да развежем"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "ширење заграде: не могу да доделим меморију за „%s“"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за %d елемента"
+msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за %u елемента"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "ширење заграде: ниÑам уÑпео да доделим меморију за „%s“"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "„%s“: неиÑправан назив алијаÑа"
@@ -106,22 +112,22 @@ msgstr "„%s“: неиÑправан назив мапе кључа"
msgid "%s: cannot read: %s"
msgstr "%s: не могу да читам: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "„%s“: непознат назив функције"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "„%s“ није привезано ни за један кључ.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "„%s“ не може бити призвано путем"
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "„%s“: не могу да развежем"
@@ -135,28 +141,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "једино има ÑмиÑла у петљи „for“, „while“, или „until“"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"%s%cИÑпиÑује контекÑÑ‚ текућег позива подрутине.\n"
-"\n"
-" Без „EXPR“, иÑпиÑује"
+"Даје Ñадржај текућег позива подрутине.\n"
+" \n"
+" Без ИЗРÐЗÐ, даје „$ред $назив_датотеке“. Са ИЗРÐЗОМ, даје\n"
+" „$ред $подрутина $назив_датотеке“; овај додатни податак може бити\n"
+" коришћен за обезбеђивање праћења Ñпремника.\n"
+" \n"
+" ВредноÑÑ‚ ИЗРÐЗРпоказује колико кадрова позива да Ñе иде уназад пре\n"
+" текућег; први кадар је кадар 0.\n"
+" \n"
+" Излазно Ñтање:\n"
+" Даје 0 оÑим ако шкољка не извршава функцију шкољке или ИЗРÐЗ\n"
+" није иÑправан."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "„HOME“ није подешено"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "превише аргумената"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "ништаван директоријум"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "„OLDPWD“ није подешено"
@@ -175,7 +196,7 @@ msgstr "упозорење:"
msgid "%s: usage: "
msgstr "%s: употреба:"
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: опција захтева аргумент"
@@ -190,7 +211,7 @@ msgstr "%s: потребан је бројевни аргумент"
msgid "%s: not found"
msgstr "%s: не поÑтоји"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: неиÑправна опција"
@@ -200,7 +221,7 @@ msgstr "%s: неиÑправна опција"
msgid "%s: invalid option name"
msgstr "%s: неиÑправан назив опције"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "„%s“: није иÑправан одредник"
@@ -213,7 +234,7 @@ msgstr "неиÑправан октални број"
msgid "invalid hex number"
msgstr "неиÑправан хекÑадецимални број"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "неиÑправан број"
@@ -289,73 +310,83 @@ msgstr "грешка подешавања оÑобина терминала: %s"
msgid "error getting terminal attributes: %s"
msgstr "грешка добављања оÑобина терминала: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: грешка довлачења текућег директоријума: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: нејаÑна одредба поÑла"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "помоћ није доÑтупна у овом издању"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: не могу да раÑподеÑим: „%s“ је Ñамо за читање"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: не могу да раÑподеÑим"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: неиÑправан назив радње"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: нема одредбе довршавања"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "упозорење: опција „-F“ можда неће радити како Ñте очекивали"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "упозорење: опција „-C“ можда неће радити како Ñте очекивали"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "тренутно не обавља функцију довршавања"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "може бити коришћено једино у функцији"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: променљива упуте не може бити низ"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: Ñамоупућивање променљиве упуте назива није дозвољено"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: кружна упута назива"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "%s: неиÑправан назив променљиве за упуту назива"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "не можете кориÑтити „-f“ да направите функције"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: функција Ñамо за читање"
@@ -370,7 +401,7 @@ msgstr "%s: додела низа цитираног Ñпоја је заÑтаÑ
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: не могу да уништим променљиве низа на овај начин"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: не могу да претворим придруживи низ у попиÑани"
@@ -384,27 +415,32 @@ msgstr "променљиво учитавање није доÑтупно"
msgid "cannot open shared object %s: %s"
msgstr "не могу да отворим дељени предмет „%s“: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не могу да нађем „%s“ у дељеном предмету „%s“: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: није динамички учитано"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "функција учитавања за „%s“ није уÑпела (%d): није учитано"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: није динамички учитано"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не могу да обришем: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: је директоријум"
@@ -419,12 +455,12 @@ msgstr "%s: није обична датотека"
msgid "%s: file is too large"
msgstr "%s: датотека је превелика"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не могу да извршим бинарну датотеку"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: не могу да извршим: %s"
@@ -448,15 +484,16 @@ msgstr "Има зауÑтављених поÑлова.\n"
msgid "There are running jobs.\n"
msgstr "Има покренутих поÑлова.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "нема такве наредбе"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "одредба иÑторијата"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: не могу да отворим привремену датотеку: %s"
@@ -484,12 +521,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "покреће\tнаредбу\n"
@@ -501,13 +538,19 @@ msgstr[0] "Ðаредбе шкољке које одговарају кључнÐ
msgstr[1] "Ðаредбе шкољке које одговарају кључним речима `"
msgstr[2] "Ðаредбе шкољке које одговарају кључним речима `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k %"
-"s“ или „info %s“."
+"нема тема помоћи које одговарају „%s“. Покушајте „help help“ или „man -k "
+"%s“ или „info %s“."
#: builtins/help.def:224
#, c-format
@@ -533,21 +576,21 @@ msgstr ""
"Звездица (*) поред назива значи да је наредба иÑкључена.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "не могу кориÑтити више од једног „-anrw“"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "положај иÑторијата"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: неиÑправна ознака времена"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: није уÑпело ширење иÑторијата"
@@ -570,7 +613,7 @@ msgstr "%s: аргументи морају бити процеÑи или ИБ-
msgid "Unknown error"
msgstr "Ðепозната грешка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "очекиван је израз"
@@ -579,12 +622,12 @@ msgstr "очекиван је израз"
msgid "%s: not an indexed array"
msgstr "%s: није попиÑани низ"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: неиÑправна одредба опиÑника датотеке"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: неиÑправан опиÑник датотеке: %s"
@@ -612,36 +655,36 @@ msgstr "празан назив променљиве низа"
msgid "array variable support required"
msgstr "потребна је подршка променљиве низа"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "„%s“: недоÑтаје знак запиÑа"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "„%c“: неиÑправна одредба запиÑа времена"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "„%c“: неиÑправан знак запиÑа"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "упозорење: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "проблем обраде запиÑа: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "недоÑтаје хекÑадецимална цифра за \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "недоÑтаје цифра уникода за \\%c"
@@ -794,12 +837,12 @@ msgstr ""
" \n"
" Уграђено „dirs“ приказује Ñпремник директоријума."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: неиÑправна одредба временÑког иÑтека"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "грешка читања: %d: %s"
@@ -808,21 +851,11 @@ msgstr "грешка читања: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "могу једино да „иÑпишем“ из функције или изворног ÑпиÑа"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "не могу иÑтовремено да раÑподеÑим функцију и променљиву"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: не могу да раÑподеÑим"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: не могу да раÑподеÑим: „%s“ је Ñамо за читање"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: није променљива низа"
@@ -837,7 +870,7 @@ msgstr "%s: није функција"
msgid "%s: cannot export"
msgstr "%s: не могу да извезем"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "број помака"
@@ -845,7 +878,7 @@ msgstr "број помака"
msgid "cannot set and unset shell options simultaneously"
msgstr "не могу иÑтовремено да подеÑим и да раÑподеÑим опције шкољке"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: неиÑправан назив опције шкољке"
@@ -902,26 +935,26 @@ msgstr "„%s“ јеÑте „%s“\n"
msgid "%s is hashed (%s)\n"
msgstr "„%s“ је хеширано (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: неиÑправан аргумент ограничења"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "„%c“: лоша наредба"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не могу да добавим ограничење: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "ограничење"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не могу да изменим ограничење: %s"
@@ -981,76 +1014,75 @@ msgstr "лош Ñкок"
msgid "%s: unbound variable"
msgstr "%s: неÑвезана променљива"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aиÑтекло је време чекајући на улаз: Ñам Ñе одјављујем\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не могу да преуÑмерим Ñтандардни улаз из „/dev/null:“: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "ЗÐПИСВРЕМЕÐÐ: „%c“: неиÑправан знак запиÑа"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "изврши_копроц: ÐºÐ¾Ð¿Ñ€Ð¾Ñ†ÐµÑ [%d:%s] још увек поÑтоји"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "грешка Ñпојке"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: премашен је највећи ниво угнежђивања извора (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: премашен је највећи ниво угнежђивања функције (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: ограничено: не могу да наведем / у називима наредби"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: нема такве наредбе"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: лош тумач"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не могу да извршим бинарну датотеку: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "„%s“: јеÑте поÑебна уграђеноÑÑ‚"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не могу да удвоÑтручим „fd %d“ у „fd %d“"
@@ -1072,65 +1104,69 @@ msgid "attempted assignment to non-variable"
msgstr "покушано је додељивање у не-променљиву"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "Ñадржајна грешка у изразу"
+msgstr "Ñадржајна грешка у додели променљиве"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "дељење 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "грешка: лош Ñимбол доделе израза"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "„:“ је очекивано за уÑловни израз"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "изложилац је мањи од 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "одредник је очекиван након пре-увећања или пре-умањења"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "недоÑтаје )"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "Ñадржајна грешка: очекиван је операнд"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "Ñадржајна грешка: неиÑправан аритметички оператор"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (Ñимбол грешке је „%s“)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "неиÑправна аритметичка оÑнова"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: неиÑправан број реда"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "вредноÑÑ‚ је превише велика за оÑнову"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: грешка израза\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: не могу да приÑтупим родитељÑком директоријуму"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не могу да поништим режим без-кашњења за фд „%d“"
@@ -1145,162 +1181,171 @@ msgstr "не могу да доделим нови опиÑник датотек
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: већ поÑтоји међумеморија за нови фд „%d“"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: „pgrp“ Ñпојка"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "иÑцепљени пиб „%d“ Ñе јавља у покренутом поÑлу „%d“"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "бришем зауÑтављени поÑао „%d“ Ñа групом процеÑа %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у Ñпојном_реду"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: пиб %5ld (%s) је означен да је још жив"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: нема таквог пиб-а"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Урађен"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "ЗауÑтављен"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "ЗауÑтављен(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Покренут"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Урађен(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Изађи из „%d“"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ðепознато Ñтање"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(језгрени избачај)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "Ñетпгиб порода (%ld у %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: пиб %ld није пород ове шкољке"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ðема запиÑа о процеÑу %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: поÑао „%d“ је зауÑтављен"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: нема таквог поÑла"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: поÑао је завршио"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: поÑао „%dд је већ у позадини"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: укључујем „WNOHANG“ да избегнем неодређени блок"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: ред %d:"
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (језгрени избачај)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(„wd“ Ñада: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: није уÑпело „getpgrp“"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: диÑциплина реда"
+msgstr "initialize_job_control: нема контроле поÑла у позадини"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: диÑциплина реда"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не могу да подеÑим групу процеÑа терминала (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "нема управљања поÑлом у овој шкољци"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: тврдња није уÑпела: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1309,39 +1354,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: тврдња је лоше изведена\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "непознато"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: блок на Ñлободном ÑпиÑку је препиÑан"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: позвана Ñа већ оÑлобођеним аргументом блока"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: позвана Ñа недодељеним аргументом блока"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: почетна и крајња величина дела Ñе разликују"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: позвана Ñа недодељеним аргументом блока"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: откривена је недовољноÑÑ‚ тока; mh_n-бајтова је ван опÑега"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: почетна и крајња величина дела Ñе разликују"
@@ -1383,22 +1438,22 @@ msgstr "%s: лоша одредба путање мреже"
msgid "network operations not supported"
msgstr "радње мреже ниÑу подржане"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не могу да изменим језик (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не могу да изменим језик (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не могу да изменим језик (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не могу да изменим језик (%s): %s"
@@ -1444,112 +1499,112 @@ msgstr "овде-документ у %d. реду је ограничен кра
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: упутÑво преуÑмерења „%d“ је ван опÑега"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила ÐÐЈВЕЋУ_ВЕЛИЧИÐУ (%"
-"lu): ред је Ñкраћен"
+"shell_getc: величина_реда_улаза_шкољке (%zu) је премашила ÐÐЈВЕЋУ_ВЕЛИЧИÐУ "
+"(%lu): ред је Ñкраћен"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "премашен је највећи број „овде-документ“"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "неочекивани крај датотеке приликом тражења поклапања „%c“"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "неочекивани крај датотеке приликом тражења „]]“"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "Ñадржајна грешка у уÑловном изразу: неочекивани Ñимбол „%s“"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "Ñадржајна грешка у уÑловном изразу"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочекивани Ñимбол „%s“, очекивана је )"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "очекивана је )"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочекивани аргумент „%s“ уÑловном једночланом оператору"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "неочекивани аргумент уÑловном једночланом оператору"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочекивани Ñимбол „%s“, очекиван је уÑловни двочлани оператор"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "очекиван је уÑловни двочлани оператор"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочекивани аргумент „%s“ уÑловном двочланом оператору"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "неочекивани аргумент уÑловном двочланом оператору"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочекивани Ñимбол „%c“ у уÑловној наредби"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочекивани Ñимбол „%s“ у уÑловној наредби"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочекивани Ñимбол „%d“ у уÑловној наредби"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "Ñадржајна грешка близу неочекиваног Ñимбола „%s“"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "Ñадржајна грешка близу „%s“"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "Ñадржајна грешка: неочекивани крај датотеке"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "Ñадржајна грешка"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "КориÑтите „%s“ да напуÑтите шкољку.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "неочекивани крај датотеке приликом тражења поклапајуће )"
@@ -1592,89 +1647,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: „%c“: неиÑправан знак запиÑа"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "опиÑник датотеке је ван опÑега"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: нејаÑно преуÑмерење"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: не могу да препишем поÑтојећу датотеку"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: ограничено: не могу да преуÑмерим излаз"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не могу да направим привремену датотеку за документ-овде: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не могу да доделим фд променљивој"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "„/dev/(tcp|udp)/домаћин/прикључник“ није подржано без умрежавања"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "грешка преуÑмерења: не могу да удвоÑтручим фд"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "не могу да нађем „/tmp“, направите га!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "„/tmp“ мора бити иÑправан назив директоријума"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
-msgstr ""
+msgstr "режим уредног иÑпиÑа је занемарен у међудејÑтвеним шкољкама"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: неиÑправна опција"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не могу да подеÑим јиб на %d: Ñтварни јиб %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не могу да подеÑим гиб на %d: Ñтварни гиб %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "не могу да покренем прочишћавача; режим прочишћавања је иÑкључен"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: је директоријум"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Ðемам назив!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "Гну баш, издање %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1683,323 +1738,319 @@ msgstr ""
"Употреба:\t%s [Гнуова дуга опција] [опција] ...\n"
" \t%s [Гнуова дуга опција] [опција] датотека-ÑпиÑа ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Гнуове дуге опције:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Опције шкољке:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t„-%s“ или опција „-o“\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Укуцајте „%s -c \"help set\"“ за више података о опцијама шкољке.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Укуцајте „%s -c help“ за више података о уграђеним наредбама шкољке.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr "КориÑтите наредбу „bashbug“ да извеÑтите о грешкама.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Матична Ñтраница баша: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "Општа помоћ коришћења Гну Ñофтвера: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: неиÑправна операција"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Ðетачан Ñигнал"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "ОбуÑтави"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Прекини"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Изађи"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "ÐеиÑправна инÑтрукција"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Прати/ухвати БПТ"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ИнÑтрукција „ABORT“"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "ИнÑтрукција „EMT“"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Изузетак покретног зареза"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Убијен"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Грешка Ñабирнице"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "ÐеуÑпех Ñегментације"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Лош ÑиÑтемÑки позив"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Сломљена Ñпојка"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Ðларм"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Окончано"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Хитан УИ уÑлов"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "ЗауÑтављен (Ñигнал)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "ÐаÑтави"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Пород је преминуо или зауÑтављен"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "ЗауÑтављен (улаз конзоле)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "ЗауÑтављен (излаз конзоле)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "Спреман на У/И"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Ограничење процеÑора"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Ограничење датотеке"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Ðларм (виртуелни)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Ðларм (профил)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Промењени прозор"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Закључавање Ñнимка"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "КориÑнички Ñигнал 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "КориÑнички Ñигнал 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Улазни ХФТ подаци на чекању"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "неизбежан пад напајања"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "неизбежан пад ÑиÑтема"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "пребацује Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° други процеÑор"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "грешка програмирања"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "ОÑигуран је режим ХФТ праћења"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Понови је иÑпраћен режим ХФТ праћења"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Ðиз ХФТ звука је завршен"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Захтев за подацима"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ðепознат Ñигнал #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðепознат Ñигнал #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "лоша замена: нема затварајуће „%s“ у „%s“"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: не могу да доделим ÑпиÑак члану низа"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "не могу да начиним Ñпојку за замену процеÑа"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "не могу да начиним пород за замену процеÑа"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не могу да отворим именовану Ñпојку „%s“ за читање"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не могу да отворим именовану Ñпојку „%s“ за пиÑање"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "не могу да удвоÑтручим именовану Ñпојку „%s“ као фд %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "замена наредбе: занемарих ништавни бајт у улазу"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "не могу да начиним Ñпојку за замену наредбе"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "не могу да начиним пород за замену наредбе"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: не могу да удвоÑтручим Ñпојку као фд 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: неиÑправан назив променљиве за упуту назива"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: неиÑправно поÑредно ширење"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: неиÑправан назив променљиве"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: параметар је ништаван или није подешен"
+msgstr "%s: параметар није подешен"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметар је ништаван или није подешен"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: израз подниÑке < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: лоша замена"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не могу дадоделим на овај начин"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr "будућа издања шкољке ће приморати процену као аритметичку замену"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "лоша замена: нема затварајућег „`“ у „%s“"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "нема поклапања: %s"
@@ -2022,35 +2073,40 @@ msgstr "очекивана је )"
msgid "`)' expected, found %s"
msgstr "очекивана је ), а пронађена %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: очекиван је једночлани оператор"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очекиван је двочлани оператор"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: очекиван је једночлани оператор"
+
+#: test.c:881
msgid "missing `]'"
msgstr "недоÑтаје ]"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "Ñадржајна грешка: није очекивано „;“"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "неиÑправан Ñигнални број"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "процена: премашен је највећи ниво угнежђивања процене (%d)"
+msgstr "руковалац изузетком: премашен је највећи ниво руковаоца изузецима (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: лоша вредноÑÑ‚ у „trap_list[%d]“: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2058,85 +2114,85 @@ msgstr ""
"run_pending_traps: руковалац Ñигналом је „SIG_DFL“, поново шаљем %d (%s) "
"мени Ñамом"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: лош Ñигнал %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "грешка увоза одреднице функције за „%s“"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "ниво шкољке (%d) је превиÑок, поново поÑтављам на 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: нема Ñадржаја функције на текућем доÑегу"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: вредноÑти не може бити додељена вредноÑÑ‚"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: додељујем цео број упути назива"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variable: нема Ñадржаја функције на текућем доÑегу"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s има ништавну ниÑку извоза"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "неиÑправан знак %d у ниÑци извоза за „%s“"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "нема = у ниÑци извоза за „%s“"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: глава променљивих шкољке није ÑадржајноÑÑ‚ функције"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: нема Ñадржаја општих променљивих"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: глава променљивих шкољке није привремени доÑег окружења"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не могу да отворим као ДÐТОТЕКУ"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: неиÑправна вредноÑÑ‚ за опиÑник праћења датотеке"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: вреднÑот ÑаглаÑноÑти је ван опÑега"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "ÐуторÑка права (C) 2016 Задужбина Ñлободног Ñофтвера, Доо."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "ÐуторÑка права (C) 2012 Задужбина Ñлободног Ñофтвера, Доо."
#: version.c:47 version2.c:47
msgid ""
@@ -2226,11 +2282,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [арг ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [назив[=вредноÑÑ‚] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] назив[=вредноÑÑ‚] ..."
#: builtins.c:82
@@ -2254,11 +2312,13 @@ msgid "eval [arg ...]"
msgstr "eval [арг ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts ниÑка_опција назив [арг]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a назив] [наредба [аргументи ...]] [преуÑмерење ...]"
#: builtins.c:100
@@ -2387,8 +2447,8 @@ msgstr "umask [-p] [-S] [режим]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [иб ...]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [иб ...]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2482,26 +2542,26 @@ msgstr "printf [-v променљива] format [аргументи]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"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 ÑуфикÑ] [назив ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o опција] [-A радња] [-G "
+"општапутања] [-W ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-"
+"P префикÑ] [-S ÑуфикÑ] [назив ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o опција] [-A радња] [-G општапутања] [-W "
"ÑпиÑакречи] [-F функција] [-C наредба] [-X путањауÑлова] [-P префикÑ] [-S "
"ÑуфикÑ] [реч]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o опција] [-DE] [назив ...]"
+msgstr "compopt [-o|+o опција] [-DEI] [назив ...]"
#: builtins.c:242
msgid ""
@@ -2512,13 +2572,12 @@ msgstr ""
"опозив] [-c количина] [низ]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C опозив] [-c "
-"количина] [низ]"
+"readarray [-d гранич] [-n број] [-O порекло] [-s број] [-t] [-u фд] [-C "
+"опозив] [-c количина] [низ]"
#: builtins.c:256
msgid ""
@@ -2701,7 +2760,6 @@ msgstr ""
" Излазно Ñтање је 0 оÑим ако N није веће или једнако 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2952,6 +3010,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3015,7 +3075,7 @@ msgstr ""
"ако\n"
" не дође до грешке доделе променљиве."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3025,7 +3085,7 @@ msgstr ""
" \n"
" Синоним за „declare“. Погледајте „help declare“."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3052,8 +3112,7 @@ msgstr ""
"дође\n"
" до грешке додељивања променљиве, или ако шкољка не извршава функцију."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3114,15 +3173,23 @@ msgstr ""
" \\t\tводоравни табулатор\n"
" \\v\tуÑправни табулатор\n"
" \\\\\tконтра коÑа црта\n"
-" \\0nnn\tзнак чији ÐСКРИ код јеÑте NNN (октално). NNN може бити од\n"
+" \\0nnn\tзнак чији ÐСКРИ код јеÑте „NNN“ (октално). „NNN“ може бити "
+"од\n"
" \t 0 до 3 окталне цифре\n"
-" \\xHH\tоÑмобитни знак чија вредноÑÑ‚ јеÑте HH (хекÑадецимално). HH\n"
+" \\xHH\tоÑмобитни знак чија вредноÑÑ‚ јеÑте „HH“ (хекÑадецимално). "
+"„HH“\n"
" може бити једна или две хекÑадецималне цифре\n"
-" \n"
+" \\uHHHH\tзнак Јуникода чија вредноÑÑ‚ јеÑте хекÑадецимална вредноÑÑ‚ "
+"„HHHH“.\n"
+" \t\t„HHHH“ може имати једну до четири хекÑадецималне цифре.\n"
+" \\UHHHHHHHH знак Јуникода чија вредноÑÑ‚ јеÑте хекÑадецимална вредноÑÑ‚\n"
+" \t\t„HHHHHHHH“. „HHHHHHHH“ може бити једна од оÑам хекÑадецималних "
+"цифара.\n"
+" \n"
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако не дође до грешке пиÑања."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3144,7 +3211,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако не дође до грешке пиÑања."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3196,7 +3263,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако ÐÐЗИВ није уграђеноÑÑ‚ шкољке или ако не "
"дође до грешке."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3215,7 +3282,8 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје излазно Ñтање наредбе или уÑпех ако је наредба ништавна."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3248,8 +3316,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3299,7 +3367,7 @@ msgstr ""
"на\n"
" крај опције или ако не дође до грешке."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3341,7 +3409,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако ÐÐРЕДБРније нађена или ако не дође до "
"грешке преуÑмеравања."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3353,7 +3421,7 @@ msgstr ""
" Ðапушта шкољку Ñа Ñтањем N. Ðко је N изоÑтављено, излазно Ñтање\n"
" је оно поÑледње извршене наредбе."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3367,7 +3435,7 @@ msgstr ""
"извршено\n"
" у шкољци пријављивања."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3424,7 +3492,7 @@ msgstr ""
" Даје позитиван резултат или Ñтање извршене наредбе; не-нулу ако дође до "
"грешке."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3444,7 +3512,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Стање наредбе поÑтављене у први план, или неуÑпех ако дође до грешке."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3468,7 +3536,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако "
"не дође до грешке."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3512,8 +3580,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако Ñе ÐÐЗИВ не нађе или ако је дата "
"неиÑправна опција."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3553,8 +3620,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако ШÐБЛОРније пронађен или ако је дата "
"неиÑправна опција."
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3608,7 +3674,7 @@ msgstr ""
" \t без Ñмештања на ÑпиÑак иÑторијата\n"
" -s\t додаје ÐРГ-те на ÑпиÑак иÑторијата као један уноÑ\n"
" \n"
-" Ðко је дата ДÐТОТЕКÐ, кориÑти Ñе као датотека иÑторијата. УÑупротном,\n"
+" Ðко је дата ДÐТОТЕКÐ, кориÑти Ñе као датотека иÑторијата. У Ñупротном,\n"
" ако ДÐТОТЕКÐ_ИСТОРИЈÐТРима вредноÑÑ‚, она Ñе кориÑти, другачије „~/."
"bash_history“.\n"
" \n"
@@ -3623,7 +3689,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не "
"дође до грешке."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3669,7 +3735,7 @@ msgstr ""
"дође до грешке.\n"
" Ðко Ñе кориÑти „-x“, даје излазно Ñтање ÐÐРЕДБЕ."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3701,7 +3767,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или "
"ОДРЕДБÐПОСЛÐ."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3747,7 +3813,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не "
"дође до грешке."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3831,8 +3897,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Ðко Ñе поÑледњи ÐРГ процени на 0, иÑпиÑује 1; у Ñупротном даје 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3932,7 +3997,7 @@ msgstr ""
" или ако Ñе не доÑтави неиÑправан опиÑник датотеке као аргумент опције „-"
"u“."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3952,7 +4017,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје N, или неуÑпех ако шкољка не извршава функцију или ÑпиÑ."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4124,7 +4189,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако није дата неиÑправна опција."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4165,7 +4230,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је "
"ÐÐЗИВ Ñамо за читање."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4199,7 +4264,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако је дата неиÑправна опција или је ÐÐЗИВ "
"неиÑправан."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4241,7 +4306,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако је "
"ÐÐЗИВ неиÑправан."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4259,7 +4324,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Резултати Ñу уÑпешни оÑим ако N није негативно иливеће од $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4283,7 +4348,7 @@ msgstr ""
" Даје Ñтање поÑледње извршене наредбе у ДÐТОТЕЦИ; не уÑпева\n"
" ако назив ДÐТОТЕКЕ не може бити прочитан."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4308,7 +4373,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није укључено управљање поÑлом или ако "
"не дође до грешке."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4472,7 +4537,7 @@ msgstr ""
"ИЗРÐЗ процени\n"
" на нетачно или ако је дат неиÑправан аргумент."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4484,7 +4549,7 @@ msgstr ""
" Ово је Ñиноним за уграђеноÑÑ‚ „test“, али поÑледњи аргумент мора\n"
" бити доÑловна ], да поклопи отворену [."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4503,7 +4568,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Увек уÑпешно."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4586,7 +4651,7 @@ msgstr ""
" Даје позитиван резултат оÑим за неиÑправну ОДРЕДБÐ_СИГÐÐЛРили за "
"неиÑправну опцију."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4646,7 +4711,8 @@ msgstr ""
" Даје позитиван резултат ако Ñу пронађени Ñви ÐÐЗИВИ; неуÑпех ако ниједан "
"није пронађен."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4677,6 +4743,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4741,7 +4808,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако "
"не дође до грешке."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4775,7 +4842,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако је РЕЖИМ неиÑправан или ако је дата "
"неиÑправна опција."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4787,15 +4854,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Чека на довршавање поÑла и даје излазно Ñтање.\n"
" \n"
@@ -4807,11 +4884,14 @@ msgstr ""
" Ðко је доÑтављена опција „-n“, чека на Ñледећи поÑао да заврши и\n"
" иÑпиÑује његово излазно Ñтање.\n"
" \n"
+" Ðко је доÑтављена опција „-f“, а контрола поÑла је укључена, чека на\n"
+" наведени ИБ да оконча, умеÑто да чека на њега да промени ÑтатуÑ.\n"
+" \n"
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледњег ИБ-а; неуÑпех ако је ИБ неиÑправан или ако је\n"
" дата неиÑправна опција."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4838,7 +4918,7 @@ msgstr ""
"дата\n"
" неиÑправна опција."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4860,7 +4940,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4891,7 +4971,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4927,7 +5007,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4956,7 +5036,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Стање резултата јеÑте Ñтање резултата СПОЈÐОГРЕДÐ."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4974,7 +5054,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5012,7 +5092,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5030,7 +5110,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5048,7 +5128,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5070,7 +5150,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Ðаредба копроцеÑа даје излазно Ñтање 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5096,7 +5176,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако је ÐÐЗИВ Ñамо за читање."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5114,7 +5194,7 @@ msgstr ""
" Излазно Ñтање:\n"
" ИÑпиÑује Ñтање поÑледње извршене наредбе."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5138,12 +5218,13 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје Ñтање наÑтављеног поÑла."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5156,7 +5237,7 @@ msgstr ""
" Излазно Ñтање:\n"
" Даје 1 ако Ñе ИЗРÐЗ процени на 0; у Ñупротном даје 0."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5209,7 +5290,7 @@ msgstr ""
" Излазно Ñтање:\n"
" 0 или 1 у завиÑноÑти од вредноÑÑ‚ ИЗРÐЗÐ."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5337,7 +5418,7 @@ msgstr ""
" о наредбама које требају бити Ñачуване на ÑпиÑку "
"иÑторијата.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5396,7 +5477,7 @@ msgstr ""
"замена\n"
" директоријума не уÑпе."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5449,7 +5530,7 @@ msgstr ""
"измена\n"
" директоријума не уÑпе."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5504,8 +5585,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако "
"не дође до грешке."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5528,8 +5608,8 @@ msgstr ""
" \n"
" Мења подешавање Ñваке оције шкољке ÐÐЗИВ_ОПЦИЈЕ. Без аргумената "
"опција,\n"
-" иÑпиÑује Ñве опције шкољке Ñа назнаком да ли је Ñвака подешена или "
-"није.\n"
+" иÑпиÑује Ñваки доÑтављени ÐÐЗИВ_ОПЦИЈЕ, или Ñве опције шкољке ако није\n"
+" дат ниједан ÐÐЗИВ_ОПЦИЈЕ, Ñа назнаком да ли је Ñвака подешена или није.\n"
" \n"
" Опције:\n"
" -o\tограничава ÐÐЗИВЕ_ОПЦИЈРна оне одређене за коришћење Ñа „set -o“\n"
@@ -5543,7 +5623,7 @@ msgstr ""
"дата\n"
" неиÑправна опција или ако је ÐÐЗИВ_ОПЦИЈЕ иÑкључен."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5560,8 +5640,8 @@ 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"
@@ -5610,7 +5690,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако није дата неиÑправна опција или ако не\n"
" дође до грешке пиÑања или доделе."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5633,7 +5713,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5656,15 +5736,17 @@ msgstr ""
" \t без одређеног поÑебног довршавања\n"
" -E\tпримењује довршавања и радње на „празне“ наредбе --\n"
" \t довршавање покушано на празном реду\n"
+" -I\tпримењује довршавања и радње на почетну (обично наредбу) реч\n"
" \n"
" Када Ñе покуша Ñа довршавањем, радње Ñе примењују по редоÑледу опција\n"
-" великих Ñлова наведених горе. Опција „-D“ има првенÑтво над „-E“.\n"
+" великих Ñлова наведених горе. Опција „-D“ има првенÑтво над „-E“, и обе "
+"имају предноÑÑ‚ у одноÑу на „-I“.\n"
" \n"
" Излазно Ñтање:\n"
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако "
"не дође до грешке."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5685,8 +5767,7 @@ msgstr ""
" Даје позитиван резултат оÑим ако Ñе не доÑтави неиÑправна опција или ако "
"не дође до грешке."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5727,6 +5808,7 @@ msgstr ""
" \t-o опција\tПодешава опцију довршавања ОПЦИЈРза Ñваки ÐÐЗИВ\n"
" \t-D\t\tМења опције за „оÑновно“ довршавање наредбе\n"
" \t-E\t\tМења опције за „празно“ довршавање наредбе\n"
+" \t-I\t\tМења опције за довршавање почетне речи\n"
" \n"
" Употреба „+o“ умеÑто „-o“ иÑкључује наведену опцију.\n"
" \n"
@@ -5743,7 +5825,7 @@ msgstr ""
"ÐÐЗИВ\n"
" нема одређену одредбу довршавања."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5824,7 +5906,7 @@ msgstr ""
"ÐИЗ Ñамо\n"
" за читање или није индекÑирани низ."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5834,6 +5916,25 @@ msgstr ""
" \n"
" Синоним за „mapfile“."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "ÐуторÑка права © 2018 Задужбина Ñлободног Ñофтвера, Доо."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "%s%cИÑпиÑује контекÑÑ‚ текућег позива подрутине.\n"
+#~ "\n"
+#~ " Без „EXPR“, иÑпиÑује"
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у Ñпојном_реду"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ðепознат Ñигнал #"
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "ÐуторÑка права (C) 2014 Задужбина Ñлободног Ñофтвера, Доо."
@@ -5848,6 +5949,3 @@ msgstr ""
#~ 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 2875f6fe..1b825f68 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index f9039217..7f5df528 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,97 +1,102 @@
# Swedish translation of bash
-# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018 Free Software Foundation, Inc.
+# Copyright © 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
-# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018.
+# Göran Uddeborg <goeran@uddeborg.se>, 2008, 2009, 2010, 2011, 2013, 2014, 2015, 2016, 2018, 2019.
#
-# $Revision: 1.24 $
+# $Revision: 1.26 $
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-03 21:31+0100\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-02-04 15:33+0100\n"
"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "felaktigt vektorindex"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: tar bort attributet namnreferens"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, 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:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: ogiltig nyckel till associativ vektor"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: det går inte att tilldela till ickenumeriska index"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: det går inte att skapa: %s"
-#: bashline.c:4144
+#: bashline.c:4310
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:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: första ickeblanka tecknet är inte '\"'"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "ingen avslutande â€%c†i %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: kolonseparator saknas"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "â€%sâ€: det gÃ¥r inte att avbinda"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "klammerexpansion: kan inte allokera minne för %s"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "klammerexpansion: misslyckades att allokera minne för %u element"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "klammerexpansion: misslyckades att allokera minne för â€%sâ€"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "â€%sâ€: ogiltigt aliasnamn"
@@ -110,22 +115,22 @@ msgstr "â€%sâ€: ogiltigt tangentbindningsnamn"
msgid "%s: cannot read: %s"
msgstr "%s: det går inte att läsa: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "â€%sâ€: okänt funktionsnamn"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s kan anropas via "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "â€%sâ€: det gÃ¥r inte att avbinda"
@@ -139,28 +144,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "endast meningsfullt i en â€forâ€-, â€whileâ€- eller â€untilâ€-slinga"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Returnera kontexten för det aktuella subrutinanropet.\n"
+"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"
+" att ge en stackspårning.\n"
" \n"
-" Utan UTTR, returnerar "
+" Värdet på UTTR indikerar hur många anropsramar att gå tillbaka före den\n"
+" aktuella, toppramen är ram 0.\n"
+" \n"
+" Slutstatus:\n"
+" Returnerar 0 om inte skalet inte kör en skalfunktion eller UTTR är\n"
+" ogiltigt."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME är inte satt"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "för många argument"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "null-katalog"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD är inte satt"
@@ -179,7 +199,7 @@ msgstr "varning: "
msgid "%s: usage: "
msgstr "%s: användning: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: flaggan kräver ett argument"
@@ -194,7 +214,7 @@ msgstr "%s: numeriskt argument krävs"
msgid "%s: not found"
msgstr "%s: finns inte"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: ogiltig flagga"
@@ -204,7 +224,7 @@ msgstr "%s: ogiltig flagga"
msgid "%s: invalid option name"
msgstr "%s: ogiltigt flaggnamn"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "â€%sâ€: inte en giltig identifierare"
@@ -217,7 +237,7 @@ msgstr "ogiltigt oktalt tal"
msgid "invalid hex number"
msgstr "ogiltigt hexadecimalt tal"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "ogiltigt tal"
@@ -293,73 +313,83 @@ msgstr "fel när terminalattribut ställdes in: %s"
msgid "error getting terminal attributes: %s"
msgstr "fel när terminalattribut hämtades: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: tvetydig jobbspecifikation"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "hjälp är inte tillgängligt i denna version"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: det går inte att ta bort tilldelning: endast läsbar %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: det går inte att ta bort tilldelning"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: ogiltigt åtgärdsnamn"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: ingen kompletteringsspecifikation"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "kör inte en kompletteringsfunktion"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "kan endast användas i en funktion"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: en referensvariabel kan inte vara en vektor"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: att en namnreferensvariabel självrefererar är inte tillåtet"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: cirkulär namnreferens"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "â€%sâ€: ogiltigt variabelnamn för referens"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "det gÃ¥r inte att använda â€-f†för att göra funktioner"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: endast läsbar funktion"
@@ -374,7 +404,7 @@ msgstr "%s: citerad sammansatt tilldelning av vektorer undanbedes"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: det går inte att förstöra vektorvariabler på detta sätt"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: det går inte att konvertera en associativ vektor till indexerad"
@@ -388,27 +418,32 @@ msgstr "dynamisk laddning är inte tillgängligt"
msgid "cannot open shared object %s: %s"
msgstr "det går inte att öppna delat objekt %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: inte dynamiskt laddad"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: inte dynamiskt laddad"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: kan inte ta bort: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: är en katalog"
@@ -423,12 +458,12 @@ msgstr "%s: inte en normal fil"
msgid "%s: file is too large"
msgstr "%s: filen är för stor"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: det går inte att köra binär fil"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: kan inte köra: %s"
@@ -452,15 +487,16 @@ msgstr "Det finns stoppade jobb.\n"
msgid "There are running jobs.\n"
msgstr "Det finns körande jobb.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "hittar inget kommando"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "historiespecifikation"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: det går inte att öppna temporärfil: %s"
@@ -488,12 +524,12 @@ msgstr "%s: flaggan kräver ett argument -- %c\n"
msgid "hashing disabled"
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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "träffar\tkommando\n"
@@ -504,6 +540,12 @@ msgid_plural "Shell commands matching keywords `"
msgstr[0] "Skalkommandon som matchar nyckelordet '"
msgstr[1] "Skalkommandon som matchar nyckelorden '"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -537,21 +579,21 @@ msgstr ""
"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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "historieposition"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: ogiltig tidsstämpel"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: historieexpansionen misslyckades"
@@ -574,7 +616,7 @@ msgstr "%s: argument måste vara processer eller jobb-id:n"
msgid "Unknown error"
msgstr "Okänt fel"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "uttryck förväntades"
@@ -583,12 +625,12 @@ msgstr "uttryck förväntades"
msgid "%s: not an indexed array"
msgstr "%s: inte en indexerad vektor"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: ogiltig filbeskrivarspecifikation"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: ogiltig filbeskrivare: %s"
@@ -616,36 +658,36 @@ msgstr "tomt vektorvariabelnamn"
msgid "array variable support required"
msgstr "stöd för vektorvariabler krävs"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "â€%sâ€: formateringstecken saknas"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "â€%câ€: ogiltig specifikation av tidsformat"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "â€%câ€: ogiltigt formateringstecken"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "varning: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "formattolkningsproblem: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "hexadecimal siffra saknas för \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "unicode-siffra saknas för \\%c"
@@ -797,12 +839,12 @@ msgstr ""
" \n"
" Den inbyggda â€dirs†visar katalogstacken."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: ogiltig tidsgränsspecifikation"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "läsfel: %d: %s"
@@ -812,21 +854,11 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"det gÃ¥r bara att göra â€return†frÃ¥n en funktion eller källinläst skript"
-#: builtins/set.def:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: det går inte att ta bort tilldelning"
-
-#: builtins/set.def:925 variables.c:3813
-#, 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:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: inte en vektorvariabel"
@@ -841,7 +873,7 @@ msgstr "%s: inte en funktion"
msgid "%s: cannot export"
msgstr "%s: det går inte att exportera"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "skiftantal"
@@ -849,7 +881,7 @@ msgstr "skiftantal"
msgid "cannot set and unset shell options simultaneously"
msgstr "det går inte att sätta och ta bort skalflaggor samtidigt"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: ogiltigt skalflaggsnamn"
@@ -906,26 +938,26 @@ msgstr "%s är %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s är hashad (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: ogiltigt gränsargument"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "â€%câ€: felaktigt kommando"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: kan inte avgöra gränsen: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "gräns"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: kan inte ändra gränsen: %s"
@@ -985,76 +1017,75 @@ msgstr "felaktigt hopp"
msgid "%s: unbound variable"
msgstr "%s: obunden variabel"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\atiden gick ut i väntan på indata: automatisk utloggning\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "det går inte att omdirigera standard in från /dev/null: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: â€%câ€: ogiltigt formateringstecken"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] finns fortfarande"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "rörfel"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: maximal nästning av eval överskriden (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: maximal nästning av source överskriden (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: maximal nästning av funktioner överskriden (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: begränsat: det gÃ¥r inte att ange â€/†i kommandonamn"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: kommandot finns inte"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: felaktig tolk"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, 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:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "â€%sâ€: är en speciell inbyggd"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "det går inte att duplicera fb %d till fb %d"
@@ -1079,61 +1110,66 @@ msgstr "försök att tilldela till en icke-variabel"
msgid "syntax error in variable assignment"
msgstr "syntaxfel i variabeltilldelning"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "division med 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "fel: felaktig expassign-symbol"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "â€:†förväntades i villkorligt uttryck"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "exponenten är mindre än 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "en identifierare förväntades efter pre-ökning eller pre-minskning"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "â€)†saknas"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "syntaxfel: en operand förväntades"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "syntaxfel: ogiltig aritmetisk operator"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (felsymbol är â€%sâ€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "ogiltig aritmetisk bas"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: ogiltigt radantal"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "värdet är för stort för basen"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: uttrycksfel\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: det går inte att komma åt föräldrakatalogen"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, 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"
@@ -1149,161 +1185,171 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp rör"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "avgrenad pid %d finns i körande jobb %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "tar bort stoppat jobb %d med processgrupp %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: process %5ld (%s) i the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ingen sådan pid"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Signal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Klart"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Stoppad"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Stoppad(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Kör"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Klart(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Avslut %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Okänd status"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(minnesutskrift skapad) "
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (ak: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "barns setpgid (%ld till %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ingen uppgift om process %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: jobb %d är stoppat"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: inget sådant jobb"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: jobbet har avslutat"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: jobb %d är redan i bakgrunden"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: slår på WNOHANG för att undvika oändlig blockering"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: rad %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (minnesutskrift skapad)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(ak nu: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp misslyckades"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: ingen jobbstyrning i bakgrunden"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: linjedisciplin"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "det går inte att sätta terminalprocessgrupp (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "ingen jobbstyrning i detta skal"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: försäkran misslyckades: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1312,39 +1358,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: försäkran gick fel\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "okänd"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: block på frilista överskrivet"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: anropad med redan frigjort block som argument"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: anropad med oallokerat block som argument"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: underspill upptäckt: mh_nbytes utanför giltigt intervall"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: start- och slutstyckesstorlekar skiljer"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: anropat med oallokerat block som argument"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: underspill upptäckt: mh_nbytes utanför giltigt intervall"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: start- och slutstyckesstorlekar skiljer"
@@ -1386,22 +1442,22 @@ msgstr "%s: felaktig specifikation av nätverkssökväg"
msgid "network operations not supported"
msgstr "nätverksoperationer stöds inte"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: det går inte att ändra lokal (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: det går inte att ändra lokal (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: det går inte att ändra lokal (%s): %s"
@@ -1448,7 +1504,7 @@ msgid "make_redirection: redirection instruction `%d' out of range"
msgstr ""
"make_redirection: omdirigeringsinstruktion â€%d†utanför giltigt intervall"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1457,103 +1513,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) överstiger SIZE_MAX (%lu): raden "
"avhuggen"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "maximalt antal av här-dokument överskridet"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "oväntat filslut vid sökning efter matchande â€%câ€"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "oväntat filslut vid sökning efter â€]]â€"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "syntaxfel i villkorligt uttryck: oväntad symbol â€%sâ€"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "syntaxfel i villkorligt uttryck"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "oväntad symbol â€%sâ€, â€)†förväntades"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "â€)†förväntades"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "oväntat argument â€%s†till villkorlig unär operator"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "oväntat argument till villkorlig unär operator"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "oväntad symbol â€%sâ€, villkorlig binär operator förväntades"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "villkorlig binär operator förväntades"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "oväntat argument â€%s†till villkorlig binär operator"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "oväntat argument till villkorlig binär operator"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "oväntad symbol â€%c†i villkorligt kommando"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "oväntad symbol â€%s†i villkorligt kommando"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "oväntad symbol %d i villkorligt kommando"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "syntaxfel nära den oväntade symbolen â€%sâ€"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "syntaxfel nära â€%sâ€"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "syntaxfel: oväntat filslut"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "syntaxfel"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Använd â€%s†för att lämna skalet.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "oväntat filslut när matchande â€)†söktes"
@@ -1596,89 +1652,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: â€%câ€: ogiltigt formateringstecken"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "filbeskrivare utanför giltigt intervall"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: tvetydig omdirigering"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: det går inte att skriva över en existerande fil"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: begränsat: det går inte att omdirigera utdata"
-#: redir.c:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: det går inte att tilldela fb till variabel"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port stöds inte utan nätverksfunktion"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "omdirigeringsfel: det går inte att duplicera fb"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "hittade inte /tmp, var god skapa!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp måste vara ett giltigt katalognamn"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "läget för snygg utskrift ignoreras i interaktiva skal"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: ogiltig flagga"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "kan inte starta felsökaren, felsökningsläge avaktiverat"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: är en katalog"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Jag har inget namn!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, version %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1687,315 +1743,311 @@ msgstr ""
"Användning:\t%s [GNU lång flagga] [flagga] ...\n"
"\t\t%s [GNU lång flagga] [flagga] skriptfil ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU långa flaggor:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Skalflaggor:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s eller -o flagga\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "Skriv â€%s -c 'help set'†för mer information om skalflaggor.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Skriv â€%s -c help†för mer information om inbyggda skalkommandon.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
"Använd kommandot â€bashbug†för att rapportera fel.\n"
"Skicka synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash hemsida: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Allmän hjälp i att använda GNU-program: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: ogiltig operation"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Felaktig signal"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Avringd"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Avbruten"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Lämnad"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Otillåten instruktion"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Brytpunkt/spårningsfälla"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ABORT-instruktion"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Emulatorfälla"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Flyttalsfel"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Dödad"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Bussfel"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Segmenteringsfel"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Felaktigt systemanrop"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Brutet rör"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Alarmklocka"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Avslutat"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Viktigt I/O-tillstånd"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Stoppad (signal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Ã…terupptagen"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Barn dött eller stoppat"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Stoppad (terminalläsning)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Stoppad (terminalskrivning)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O möjligt"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU-gräns"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Filgräns"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (virtuell tid)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profilering)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Ändrat fönster"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Postlås"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Användarsignal 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Användarsignal 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT-indata väntar"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "strömavbrott omedelbart förestående"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "systemkrasch omedelbart förestående"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "migrera process till en annan CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programmeringsfel"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT-övervakningsläge givet"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT-övervakare borttagen"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT-ljudsekvens har avslutat"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Informationsbegäran"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Okänd signal nr "
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Okänd signal nr %d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "felaktig substitution: ingen avslutande â€%s†i %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: det går inte att tilldela listor till vektormedlemmar"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "det går inte att skapa rör för processubstitution"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "det går inte att skapa barn för processubstitution"
-#: subst.c:5920
+#: subst.c:6059
#, 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:5922
+#: subst.c:6061
#, 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:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "kommandoersättning: ignorerade nollbyte i indata"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "det går inte att skapa rör för kommandosubstitution"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "det går inte att skapa barn för kommandosubstitution"
-#: subst.c:6259
+#: subst.c:6423
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:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: ogiltigt variabelnamn för referens"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: felaktig indirekt expansion"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: felaktigt variabelnamn"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s: parametern är inte satt"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametern tom eller inte satt"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: delstränguttryck < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: felaktig substitution"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: det går inte att tilldela på detta sätt"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2003,12 +2055,12 @@ msgstr ""
"framtida versioner av skalet kommer att framtvinga evaluering som en "
"aritmetisk substitution"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "felaktig ersättning: ingen avslutande â€`†i %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "ingen matchning: %s"
@@ -2031,35 +2083,40 @@ msgstr "â€)†förväntades"
msgid "`)' expected, found %s"
msgstr "â€)†förväntades, fann %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: unär operator förväntades"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: binär operator förväntades"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: unär operator förväntades"
+
+#: test.c:881
msgid "missing `]'"
msgstr "â€]†saknas"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "syntaxfel: oväntat â€;â€"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "ogiltigt signalnummer"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "fällhanterare: maximal nivå av fällhanterare överskriden (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2067,85 +2124,86 @@ msgstr ""
"run_pending_traps: signalhanterare är SIG_DFL, skickar om %d (%s) till mig "
"själv"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: felaktig signal %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "fel vid import av funktionsdefinition för â€%sâ€"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "skalnivå (%d) för hög, återställer till 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: ingen funktionskontext i aktuellt sammanhang"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: variabeln får inte tilldelas ett värde"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: tilldelar ett heltal till en namnreferens"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: ingen funktionskontext i aktuellt sammanhang"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s har tom exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "ogiltigt tecken %d i exportstr för %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "inget â€=†i exportstr för %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: ingen kontext global_variables"
-#: variables.c:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: går inte att öppna som FILE"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: ogiltigt värde för spårningsfilbeskrivare"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: kompatibilitetsvärde utanför giltigt intervall"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "Copyright © 2018 Free Software Foundation, Inc."
#: version.c:47 version2.c:47
@@ -2236,11 +2294,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] kommando [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [namn[=värde] …]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] namn[=värde] ..."
#: builtins.c:82
@@ -2264,11 +2324,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts flgsträng namn [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a namn] [kommando [argument ...]] [omdirigering ...]"
#: builtins.c:100
@@ -2397,7 +2459,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [rättigheter]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [id …]"
#: builtins.c:181
@@ -2489,9 +2552,10 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] format [argument]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o flagga] [-A åtgärd] [-G globmnst] "
@@ -2499,9 +2563,10 @@ msgstr ""
"suffix] [namn …]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 "
@@ -2941,6 +3006,7 @@ msgstr ""
" finns."
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2953,6 +3019,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3018,7 +3086,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel vid\n"
" variabeltilldelning inträffar."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3028,7 +3096,7 @@ msgstr ""
" \n"
" En synonym för â€declareâ€. Se â€help declareâ€."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3055,8 +3123,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges, ett fel vid\n"
" variabeltilldelning inträffar eller skalet inte exekverar en funktion."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3121,11 +3188,16 @@ msgstr ""
" \t\t0 till 3 oktala siffror\n"
" \\xHH\tdet åttabitarstecken vars värde är HH (hexadecimalt). HH\n"
" \t\tkan vara en eller två hexadecimala siffror\n"
+" \\uHHHH\tdet Unicode-tecken vars värde är det hexadeimala värdet "
+"HHHH.\n"
+" \t\tHHHH kan vara en till fyra hexadecimala siffror.\n"
+" \\UHHHHHHHH det Unicode-tecken vars värde är det hexadecimala värdet\n"
+" \t\tHHHHHHHH. HHHHHHHH kan vara en till åtta hexadecimala siffror.\n"
" \n"
" Slutstatus:\n"
" Returnerar framgång om inte ett skrivfel inträffar."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3147,7 +3219,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte ett skrivfel inträffar."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3201,7 +3273,7 @@ msgstr ""
" Returnerar framgång om inte NAMN inte är inbyggd i skalet eller ett fel\n"
" inträffar."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3221,7 +3293,8 @@ msgstr ""
" Slutstatus:\n"
" Returnerar slutstatus av kommandot eller framgång om kommandot är tomt."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3254,8 +3327,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3298,7 +3371,7 @@ msgstr ""
" Returnerar framgång om en flagga hittas, misslyckas om slutet av\n"
" flaggorna nås eller ett fel inträffar."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3339,7 +3412,7 @@ msgstr ""
" Returnerar framgång om inte KOMMANDO inte finns eller ett fel vid\n"
" omdirigering inträffar."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3351,7 +3424,7 @@ msgstr ""
" Avslutar skalet med statusen N. Om N utelämnas är slutstatusen den\n"
" hos det sist körda kommandot."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3364,7 +3437,7 @@ msgstr ""
" Avslutar ett inloggningsskal med slutstatus N. Returnerar ett fel om\n"
" det inte körs i ett inloggningsskal."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3419,7 +3492,7 @@ msgstr ""
" Returnerar framgång eller status på exekverat kommando, skilt från noll\n"
" om ett fel inträffar."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3440,7 +3513,7 @@ msgstr ""
" Status på kommandot som placerades i förgrunden, eller misslyckande om\n"
" ett fel inträffar."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3465,7 +3538,7 @@ msgstr ""
"fel\n"
" inträffar."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3508,7 +3581,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte NAMN inte hittas eller en ogiltig flagga ges."
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3549,7 +3622,7 @@ msgstr ""
" Returnerar framgång om inte MÖNSTER inte finns eller en ogiltig flagga "
"ges."
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3615,7 +3688,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
"inträffar."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3659,7 +3732,7 @@ msgstr ""
"inträffar.\n"
" Om -x används returneras slutstatus från KOMMANDO."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3689,7 +3762,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga eller JOBBSPEC ges."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3735,7 +3808,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga angivits eller ett fel\n"
" inträffar."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3823,7 +3896,7 @@ msgstr ""
" Om det sista ARG beräknas till 0, returnerar let 1; let returnerar 0 "
"annars."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3921,7 +3994,7 @@ msgstr ""
"eller\n"
" en ogiltig filbeskrivare ges som argument till -u."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3942,7 +4015,7 @@ msgstr ""
" Returnerar N, eller misslyckande om skalet inte kör en funktion eller\n"
" skript."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4116,7 +4189,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4156,7 +4229,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN endast är\n"
" läsbart."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4189,7 +4262,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4227,7 +4300,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN är ogiltigt."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4246,7 +4319,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte N är negativt eller större än $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4270,7 +4343,7 @@ msgstr ""
" Returnerar status på det sista kommandot som körs i FILNAMN, misslyckas\n"
" om FILNAMN inte kan läsas."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4296,7 +4369,7 @@ msgstr ""
"fel\n"
" inträffar."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4456,7 +4529,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:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4468,7 +4541,7 @@ msgstr ""
" Detta är en synonym till det inbyggda â€testâ€, men det sista argumentet\n"
" mÃ¥ste vara en bokstavlig â€]â€, för att matcha den inledande â€[â€."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4488,7 +4561,7 @@ msgstr ""
" Slutstatus:\n"
" Lyckas alltid."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4566,7 +4639,7 @@ msgstr ""
"flagga\n"
" ges."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4621,7 +4694,8 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om alla NAMNen finns, misslyckas om något inte finns."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4652,6 +4726,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4718,7 +4793,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga anges eller ett fel "
"inträffar."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4754,7 +4829,8 @@ msgstr ""
"flagga\n"
" ges."
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4765,15 +4841,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Vänta på att jobb blir färdiga och returnera slutstatus.\n"
" \n"
@@ -4794,7 +4880,7 @@ msgstr ""
" Returnerar status på den sista ID, misslyckas ifall ID är ogiltig\n"
" eller en ogiltig flagga ges."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4818,7 +4904,7 @@ msgstr ""
" Returnerar status på den sista PID, misslyckas ifall PID är ogiltig\n"
" eller en ogiltig flagga ges."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4840,7 +4926,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar status för det sist exekverade kommandot."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4870,7 +4956,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4905,7 +4991,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4934,7 +5020,7 @@ msgstr ""
" Slutstatus:\n"
" Returstatusen är returstatusen från RÖR."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4952,7 +5038,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4987,7 +5073,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar status från det sist exekverade kommandot."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5005,7 +5091,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5023,7 +5109,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5045,7 +5131,7 @@ msgstr ""
" Slutstatus:\n"
" Kommandot coproc returnerar slutstatusen 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5068,7 +5154,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar framgång om inte NAMN endast är läsbart."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5086,7 +5172,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen från det sist exekverade kommandot."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5110,12 +5196,13 @@ msgstr ""
" Slutstatus:\n"
" Returnerar statusen på det återupptagna jobbet."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5128,7 +5215,7 @@ msgstr ""
" Slutstatus:\n"
" Returnerar 1 om UTTRYCK beräknas till 0, returnerar 0 annars."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5180,7 +5267,7 @@ msgstr ""
" Slutstatus:\n"
" 0 eller 1 beroende på värdet av UTTRYCK."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5285,7 +5372,7 @@ msgstr ""
" HISTIGNORE\tEn kolonseparerad lista av mönster som används för att\n"
" \t\tbestämma vilka kommandon som skall sparas i historielistan.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5343,7 +5430,7 @@ msgstr ""
" Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
" katalog misslyckas."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5393,7 +5480,7 @@ msgstr ""
" Returnerar framgång om inte ett ogiltigt argument ges eller bytet av\n"
" katalog misslyckas."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5446,7 +5533,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
"inträffar."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5482,7 +5569,7 @@ msgstr ""
" Returnerar framgång om FLGNAMN är aktiverat, misslyckas om en ogiltig\n"
" flagga ges eller FLGNAMN är avaktiverat."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5499,8 +5586,8 @@ 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"
@@ -5550,7 +5637,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett skriv-\n"
" eller tilldelningsfel inträffar."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5573,7 +5660,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5605,7 +5692,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
"inträffar."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5627,7 +5714,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller ett fel "
"inträffar."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5687,7 +5774,7 @@ msgstr ""
" Returnerar framgång om inte en ogiltig flagga ges eller NAMN inte har\n"
" någon kompletteringsspecifikation definierad."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5764,7 +5851,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:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5773,3 +5860,18 @@ msgstr ""
"Läs rader från en fil till en vektorvariabel.\n"
" \n"
" En synonym till â€mapfileâ€."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Returnera kontexten för det aktuella subrutinanropet.\n"
+#~ " \n"
+#~ " Utan UTTR, returnerar "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: process %5ld (%s) i the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Okänd signal nr "
diff --git a/po/tr.gmo b/po/tr.gmo
index 81c67e71..49558623 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index a90faa88..cb0e0cb1 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -8,88 +8,93 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.4\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2017-05-05 11:49+0100\n"
"Last-Translator: Volkan Gezer <volkangezer@gmail.com>\n"
"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\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-Bugs: Report translation errors to the Language-Team address.\n"
"X-Generator: Lokalize 2.0\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "hatalı dizi indisi"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: removing nameref niteliği kaldırılıyor"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: indisli dizi, ilişkisel diziye dönüştürülemez"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: geçersiz ilişkisel dizi anahtarı"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: sayısal olmayan indise atama yapılamaz"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: ilişkisel bir dizi ataması yapılırken indis kullanılmalıdır"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: oluşturulamıyor: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: komut için kısayol bulunamıyor"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: boÅŸluk olmayan ilk karakter `\"' deÄŸil"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "%2$s içinde kapatan `%1$c' yok"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: ikinokta imi eksik"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "`%s': kısayol değiştirilemiyor"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "destek genişletme: %s için bellek ayrılamıyor"
-#: braces.c:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "destek genişletme: %d öge için bellek ayrılamıyor"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "destek genişletme: `%s' için bellek ayrılamıyor"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "`%s': geçersiz takma isim"
@@ -108,22 +113,22 @@ msgstr "`%s': kısayol ismi geçersiz"
msgid "%s: cannot read: %s"
msgstr "%s: okunamıyor: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "`%s': iÅŸlev ismi bilinmiyor"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s bunun üzerinden çağrılabilir: "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "`%s': kısayol değiştirilemiyor"
@@ -137,28 +142,44 @@ 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:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Geçerli altyordam çağrısının bağlamı döndürür.\n"
+"Geçerli alt yordam çağrısının bağlamını döndürür.\n"
" \n"
-" İFADE olmadan, şu döner "
+" İFADE olmadan, \"$satır $dosyaadı\" döndürür. İFADE ile "
+"kullanıldığında\n"
+" \"$satır $altyordam $dosyaadı\" döndürür; bu ek bilgi bir yığın izi "
+"saÄŸlamak\n"
+" için kullanılabilir.\n"
+" \n"
+" İFADE değeri, geçerli çerçeveden önce kaç tane çerçeve çağrılacağını\n"
+" belirtir. Üst çerçeve 0. çerçevedir. \n"
+" Çıkış Durumu:\n"
+" İFADE geçersiz olmadığı ve bir kabuk işlevi çalıştırmadığı durumda 0 "
+"döndürür."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME atanmamış"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "çok fazla argüman"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "boÅŸ dizini"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD boÅŸ"
@@ -177,7 +198,7 @@ msgstr "uyarı: "
msgid "%s: usage: "
msgstr "%s: kullanım: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: seçenek bir argüman gerektirir"
@@ -192,7 +213,7 @@ msgstr "%s: sayısal argüman gerekli"
msgid "%s: not found"
msgstr "%s:yok"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: seçenek geçersiz"
@@ -202,7 +223,7 @@ msgstr "%s: seçenek geçersiz"
msgid "%s: invalid option name"
msgstr "%s: seçenek ismi geçersiz"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "`%s': geçerli bir belirteç değil"
@@ -215,7 +236,7 @@ msgstr "geçersiz sekizli sayı"
msgid "invalid hex number"
msgstr "geçersiz onaltılık sayı"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "geçersiz sayı"
@@ -291,73 +312,83 @@ msgstr "uçbirim nitelikleri ayarlanırken hata: %s"
msgid "error getting terminal attributes: %s"
msgstr "uçbirim nitelikleri alınırken hata: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: iÅŸ belirtimi belirsiz"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "bu sürümde yardım kullanılamıyor"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s:unset yapılamaz: %s salt okunur"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: unset yapılamaz"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: eylem adı geçersiz"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: tamamlama belirtimi yok"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "uyarı: -F seçeneği umduğunuz gibi çalışmayabilir"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "uyarı: -C seçeneği umduğunuz gibi çalışmayabilir"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "şuan tamamlama işlevi çalıştırılmıyor"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "sadece bir işlevde kullanılabilir"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: referans deÄŸeri bir dizi olamaz"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: nameref değişkeninin kendine yaptığı referanslara izin verilmiyor"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: çembersel isim referansı"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "`%s': dosya izleme tanımlayıcısı için geçersiz değer"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "işlev yapmak için `-f' kullanılamaz"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: salt okunur iÅŸlev"
@@ -372,7 +403,7 @@ msgstr "%s: alıntılanmış bileşik dizi ataması artık kullanılmıyor"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: dizi deÄŸiÅŸkenleri bu yolla iptal edilemez"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: ilişkisel dizi, indisli diziye dönüştürülemez"
@@ -386,27 +417,32 @@ msgstr "özdevimli yükleme mümkün değil"
msgid "cannot open shared object %s: %s"
msgstr "%s paylaşımlı nesnesi açılamıyor: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: özdevimli olarak yüklenmemiş"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "%s için yükleme ifadesi hata döndürdü (%d): yüklenmedi"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: özdevimli olarak yüklenmemiş"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: silinemiyor: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: bir dizin"
@@ -421,12 +457,12 @@ msgstr "%s: bir dosya deÄŸil"
msgid "%s: file is too large"
msgstr "%s: dosya çok büyük"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: ikili dosya çalıştırılamıyor"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: çalıştırılamıyor: %s"
@@ -450,15 +486,16 @@ msgstr "DurmuÅŸ iÅŸler var.\n"
msgid "There are running jobs.\n"
msgstr "Çalışan görevler mevcut.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "komut yok"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "geçmiş belirtimi"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: geçici dosya açılamıyor: %s"
@@ -486,12 +523,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "eÅŸleÅŸme\tkomut\n"
@@ -502,6 +539,12 @@ 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:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -535,21 +578,21 @@ 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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "geçmiş konumu"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: geçersiz zaman damgası"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: geçmiş yorumlaması başarısız"
@@ -572,7 +615,7 @@ msgstr "%s: argümanlar süreç veya iş kimlikleri olmalı"
msgid "Unknown error"
msgstr "Bilinmeyen hata"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "ifade bekleniyordu"
@@ -581,12 +624,12 @@ msgstr "ifade bekleniyordu"
msgid "%s: not an indexed array"
msgstr "%s: bir sıralı dizi değil"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: dosya tanıtıcı belirtimi geçersiz"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: dosya tanıtıcı geçersiz: %s"
@@ -614,36 +657,36 @@ msgstr "boş bir dizi değişken adı"
msgid "array variable support required"
msgstr "dizi deÄŸiÅŸken desteÄŸi gerekli"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "`%s': biçim karakteri eksik"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "`%c': geçersiz zaman biçimi belirtimi"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "`%c': biçim karakteri geçersiz"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "uyarı: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "biçim ayıklama sorunu: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "\\x için onaltılık rakam eksik"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "evrensel kod rakamı eksik \\%c"
@@ -794,12 +837,12 @@ msgstr ""
" \n"
" Dizin yığıtını `dirs' komutuyla görebilirsiniz."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: zamanaşımı belirtimi geçersiz"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "okuma hatası: %d: %s"
@@ -808,21 +851,11 @@ msgstr "okuma hatası: %d: %s"
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:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: unset yapılamaz"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s:unset yapılamaz: %s salt okunur"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: bir dizi deÄŸiÅŸkeni deÄŸil"
@@ -837,7 +870,7 @@ msgstr "%s: bir iÅŸlev deÄŸil"
msgid "%s: cannot export"
msgstr "%s: export yapılamıyor"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "shift sayısı"
@@ -845,7 +878,7 @@ msgstr "shift sayısı"
msgid "cannot set and unset shell options simultaneously"
msgstr "kabuk seçenekleri aynı anda hem atanıp hem de iptal edilemez"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: kabuk seçenek ismi geçersiz"
@@ -902,26 +935,26 @@ msgstr "%s %s'dir\n"
msgid "%s is hashed (%s)\n"
msgstr "%s çitilmiş (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: sınırlama argümanı geçersiz"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "`%c': hatalı komut"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: sınır alınamıyor: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "sınır"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: sınır değiştirilemiyor: %s"
@@ -981,76 +1014,75 @@ msgstr "hatalı sıçrama"
msgid "%s: unbound variable"
msgstr "%s: bağlanmamış değişken"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\agirdi beklerken zamanaşımı: auto-logout\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: `%c': biçim karakteri geçersiz"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] hala mevcut"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "iletişim tüneli hatası"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: azami kaynak yuvalama sınırı aşıldı (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: azami fonksiyon yuvalama sınırı aşıldı (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: kısıtlı: komut adında `/' kullanamazsınız"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: komut yok"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: hatalı yorumlayıcı"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: ikili dosya çalıştırılamıyor: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "%s: bir kabuk yerleÅŸiÄŸidir"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "fd %d, fd %d olarak yinelenemiyor"
@@ -1076,61 +1108,66 @@ msgstr "değişken olmayana atama yapmaya çalışıldı"
msgid "syntax error in variable assignment"
msgstr "ifadede sözdizimi hatası"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "sıfırla bölme"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "yazılım hatası: bad expassign token"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "koşullu ifade için `:' bekleniyordu"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "üs sıfırdan küçük"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "belirteç ön-arttırım veya ön-eksiltim sonrası bekleniyordu"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "eksik `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "sözdizimi hatası: terim umuluyordu"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "sözdizimi hatası: geçersiz aritmetik işleci"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (hata belirtisi \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "geçersiz sayı tabanı"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: geçersiz satır sayısı"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "değer taban için fazla büyük"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: ifade hatası\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: üst dizinlere erişilemiyor"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "fd %d için geciktirmeme kipi sıfırlanamıyor"
@@ -1146,162 +1183,172 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp iletişim tüneli"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "durdurulan %2$ld süreç gruplu iş %1$d siliniyor"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: böyle bir pid yok"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Sinyal %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Bitti"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Durdu"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Durdu(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Çalışıyor"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Bitti(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Çıkış %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Bilinmeyen durum"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(çekirdek döküldü)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "alt setpgid (ÅŸuradan: %ld ÅŸuraya: %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: süreç %ld için kayıt yok"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: iÅŸ %d durdu"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: böyle bir iş yok"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: iş sonlanmış"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: iÅŸ %d zaten artalanda"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: belirsiz blok önlenmek için WNOHANG açılıyor"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: satır %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (çekirdek döküldü)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd artık: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp başarısız"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: satır düzeni"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: satır düzeni"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "uçbirim süreç grunu (%d) ayarlanamaz"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "bu kabukta iÅŸ denetimi yok"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: kanaat doğrulaması başarısız: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1310,39 +1357,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: kanaat doğrulaması battı\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "bilinmeyen"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: serbest bırakılmış liste üstünde blok üste yazdı"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: zaten serbest bırakılmış blok argümanı ile çağrıldı"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: ayrılmamış blok argümanı ile çağrıldı"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: alttan taşma saptandı; mh_nbytes aralık dışında"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: başlangıç ve son tomar boyutları farklı"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: ayrılmamış blok argümanı ile çağrıldı"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: alttan taşma saptandı; mh_nbytes aralık dışında"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: başlangıç ve son tomar boyutları farklı"
@@ -1384,22 +1441,22 @@ msgstr "%s: hatalı ağ yolu belirtimi"
msgid "network operations not supported"
msgstr "desteklenmeyen aÄŸ iÅŸlemleri"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: (%s) diline deÄŸiÅŸtirilemedi"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: ÅŸu dile (%s) deÄŸiÅŸtirilemedi: %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: yerel (%s) deÄŸiÅŸtirilemiyor"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: yerel (%s) deÄŸiÅŸtirilemiyor: %s"
@@ -1445,7 +1502,7 @@ msgstr "bu belgede %d satırında dosya sonu sonlandırılmış (istenen `%s')"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: yönlendirme yönergesi `%d' aralık dışında"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1454,103 +1511,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) SIZE_MAX değerini aşıyor (%lu): "
"satır kırpıldı"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "en fazla buraya belge sayısı aşıldı"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "`%c' için eşleşme aranırken beklenmedik dosya sonu"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "`]]' aranırken beklenmedik dosya sonu"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "koşullu ifadede sözdizimi hatası: beklenmedik dizgecik `%s'"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "koşullu ifadede sözdizimi hatası"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "beklenmedik dizgecik `%s', `)' umuluyordu"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "`)' umuluyordu"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "koşullu tek terimli işlece beklenmedik argüman `%s'"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "koşullu tek terimli işlece beklenmedik argüman"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "beklenmedik dizgecik `%s', koşullu iki terimli işleç umuluyordu"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "koşullu iki terimli işleç umuluyordu"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "koşullu iki terimli işlece beklenmedik argüman `%s'"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "koşullu iki terimli işlece beklenmedik argüman"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "koÅŸullu komutta beklenmeyen dizgecik `%c'"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "koÅŸullu komutta beklenmeyen dizgecik `%s'"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "koÅŸullu komutta beklenmeyen dizgecik %d"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "beklenmeyen dizgecik `%s' yakınında sözdizimi hatası"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "`%s' yakınında sözdizimi hatası"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "sözdizimi hatası: beklenmeyen dosya sonu"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "sözdizimi hatası"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Kabuğu bırakmak için \"%s\" kullanın.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "`)' için eşleşme aranırken beklenmedik dosya sonu"
@@ -1593,89 +1650,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': geçersiz biçim karakteri"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "dosya tanıtıcı aralık dışında"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: belirsiz yönlendirme"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: mevcut dosyanın üzerine yazılamıyor"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: kısıtlı: çıktı yönlendirilemiyor"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "belge için geçici dosya oluşturulamıyor: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: fd değişkene atanamıyor"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port ağ olmaksızın desteklenmiyor"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "yönlendirme hatası: fd yinelenemiyor"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "/tmp bulunamadı, lütfen oluşturun!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp geçerli bir dizinin adı olmalıdır"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: geçersiz seçenek"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "uid %d olarak ayarlanamıyor: etkin uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "gid %d olarak ayarlanamıyor: etkin gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "hata ayıklayıcı başlatılamadı, hata ayıklama devre dışı"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Bir dizin"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Hiç ismim yok!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, sürüm %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1684,318 +1741,314 @@ 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:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU uzun seçenekleri:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Kabuk seçenekleri:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-ilrsD veya -c KOMUT veya -O shopt_seçeneği\t\t(sadece çağrı için)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s ya da -o seçeneği\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Kabuk seçenekleriyle ilgili daha fazla bilgi için `%s -c \"help set\"' "
"yazın.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Kabuk yerleşik komutlarıyla ilgili bilgi almak için `%s -c help' yazın.\n"
-#: shell.c:2015
+#: shell.c:2070
#, 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 <gnu-tr@belgeler.org> adresine bildiriniz.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash ana sayfası: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"GNU yazılımı kullanımı hakkında genel yardım: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: geçersiz işlem"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Bogus sinyali"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Engelle"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Kes"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Çık"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Geçersiz talimat"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "BPT izle/tuzak"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Talimatı DURDUR"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "EMT talimatı"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Kayan nokta istisnası"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Öldürüldü"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Veriyolu hatası"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Bölünme hatası"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Bozuk sistem çağırımı"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Bozuk iletişim tüneli"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Çalar saat"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Sonlandırıldı"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Acil GÇ koşulu"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Durduruldu (sinyal)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Devam et"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Alt ölümü veya durdurulma"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Durduruldu (tty giriÅŸi)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Durduruldu (tty çıkışı)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "G/Ç hazır"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU sınırı"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Dosya sınırı"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Alarm (sanal)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Alarm (profil)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Pencere deÄŸiÅŸtirildi"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Kayıt kilidi"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Kullanıcı sinyali 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Kullanıcı sinyali 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT girdi verisi bekliyor"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "yakın güç başarısızlığı"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "yakın sistem çökmesi"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "süreci başka bir işlemciye aktar"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "programlama hatası"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "HFT izleyici kipine geçildi"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "HFT izleyici kipi kapatıldı"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "HFT ses sırası tamamlandı"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Bilgi talebi"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Bilinmeyen Sinyal #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Bilinmeyen Sinyal #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "hatalı ikame: %2$s içinde kapatan `%1$s' yok"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: dizi üyesine liste atanamaz"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "süreç ikamesi için borulama yapılamıyor"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "süreç ikamesi için alt süreç yapılamıyor"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "isimli boru %s okumak için açılamıyor"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "isimli boru %s yazmak için açılamıyor"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "isimli boru %s fd %d olarak yinelenemiyor"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "komut ikamesi: girdideki null bayt yoksayıldı"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "komut ikamesi için boru yapılamıyor"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "komut ikamesi için alt süreç yapılamıyor"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: boru fd 1 olarak yinelenemiyor"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, 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:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: geçersiz dolaylı yayılım"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: geçersiz değişken adı"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: parametre boş ya da değer atanmamış"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: parametre boş ya da değer atanmamış"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: altdizge ifadesi < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: hatalı ikame"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: bu yolla atama yapılmaz"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2003,12 +2056,12 @@ msgstr ""
"kabuk gelecekteki sürümlerinde, bir aritmetik ikame olarak değerlendirmeye "
"zorlayacak"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "hatalı ikame: %s içinde kapatan \"`\" yok"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "eÅŸleÅŸme yok: %s"
@@ -2031,121 +2084,126 @@ msgstr "`)' bekleniyordu"
msgid "`)' expected, found %s"
msgstr "`)' bekleniyordu, %s bulundu"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: tek terimli iÅŸleci bekleniyordu"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: iki terimli iÅŸleci bekleniyordu"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: tek terimli iÅŸleci bekleniyordu"
+
+#: test.c:881
msgid "missing `]'"
msgstr "eksik `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "sözdizimi hatası: `;' beklenmiyordu"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "geçersiz sinyal numarası"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: azami eval yuvalama sınırı aşıldı (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
msgstr ""
"run_pending_traps: sinyal yakalayıcı SIG_DFL'dir, kendime %d (%s) göndererek"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler:hatalı sinyal %d"
-#: variables.c:412
+#: variables.c:421
#, 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:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: değişkene değer atanmamış olabilir"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: isim referansına tamsayı ataması"
-#: variables.c:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s boş exportstr içeriyor"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, 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:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s için exportstr içinde `=' yok"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: genel değişkenler bağlamı yok"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: kabuk değişkenlerinin başı bir geçici ortam etki alanı değil"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: DOSYA olarak açılamaz"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: uyumlulukdeğeri aralık dışı"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş."
#: version.c:47 version2.c:47
msgid ""
@@ -2234,11 +2292,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] command [arg ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [isim[=deÄŸer] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] isim[=deÄŸer] ..."
#: builtins.c:82
@@ -2262,11 +2322,13 @@ msgid "eval [arg ...]"
msgstr "eval [arg ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts optstring isim [arg]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a isim] [komut [argümanlar ...]] [yönlendirme ...]"
#: builtins.c:100
@@ -2395,7 +2457,7 @@ msgstr "umask [-p] [-S] [kip]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id ...]"
#: builtins.c:181
@@ -2490,7 +2552,7 @@ msgstr "printf [-v var] biçim [argümanlar]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o seçenek] [-A işlem] [-G genelyol] [-"
@@ -2498,9 +2560,10 @@ msgstr ""
"[isim ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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] "
@@ -2954,6 +3017,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3021,7 +3086,7 @@ msgstr ""
"sürece\n"
" başarılı döner."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3031,7 +3096,7 @@ msgstr ""
" \n"
" `declare' ile eş anlamlıdır. Bkz. `help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3059,7 +3124,7 @@ msgstr ""
"veya\n"
" kabuk bir işlev çalıştırmıyorsa başarılı döner."
-#: builtins.c:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3130,7 +3195,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Yazma hatası oluşmadığı takdirde başarılı döner."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3152,7 +3217,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Bir hata oluşmadığı sürece başarılı döner."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3203,7 +3268,7 @@ msgstr ""
" Çıktı Durumu:\n"
" İSİM bir kabuk yerleşiği değilse ve hata oluşmazsa başarılı döner."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3223,7 +3288,8 @@ msgstr ""
" Çıkış Durumu:\n"
" Komutun çıkış durumunu döndürür veya komut boşsa başarılı döner."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3256,8 +3322,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3320,7 +3386,7 @@ msgstr ""
"bir hata oluştuğunda başarısız döner.\n"
" encountered or an error occurs."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3360,7 +3426,7 @@ msgstr ""
" Çıkış Durumu:\n"
" KOMUT bulunduğu ve bir yönlendirme hatası olmadığı sürece başarılı döner."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3372,7 +3438,7 @@ msgstr ""
" N durumu ile dönerek kabuk çıkar. N verilmezse son çalıştırılan komutun\n"
" çıkış durumu döner."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3385,7 +3451,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3442,7 +3508,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:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3462,7 +3528,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Ön plana yerleştirilmiş komutun durumu veya hata olduğunda başarısız."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3484,7 +3550,7 @@ msgstr ""
" İş kontrolü etkin olmadığı veya bir hata oluşmadığı sürece başarılı "
"döner."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3508,7 +3574,7 @@ msgid ""
" Returns success unless NAME is not found or an invalid option is given."
msgstr ""
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3549,7 +3615,7 @@ msgstr ""
" DESEN bulunmadığı veya geçersiz bir seçenek verilmediğinde başarılı "
"döner."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3616,7 +3682,7 @@ msgstr ""
" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
"başarılı döner."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3662,7 +3728,7 @@ msgstr ""
"başarılı döner.\n"
" -x kullanılmışsa, KOMUTun çıkış durumu döndürülür."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3694,7 +3760,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Geçersiz bir seçenek veya İŞTANIMı girilmedikçe başarılı döner."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3741,7 +3807,7 @@ msgstr ""
" Geçersiz bir seçenek belirtilmediği veya bir hata oluşmadığında başarılı "
"döner."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3827,7 +3893,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Son ifade'nin sonucu 0 ise dönüş durumu 1 dir, aksi takdirde 0 dır."
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3879,7 +3945,7 @@ msgid ""
" or an invalid file descriptor is supplied as the argument to -u."
msgstr ""
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3899,7 +3965,7 @@ msgstr ""
" Çıkış Durumu:\n"
" N veya kabul bir fonksiyon ya da betik çalıştırmıyorsa başarısız döner."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4084,7 +4150,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Geçersiz seçenek belirtilmediği sürece başarılı döner."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4106,7 +4172,7 @@ msgid ""
" Returns success unless an invalid option is given or a NAME is read-only."
msgstr ""
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4125,7 +4191,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4146,7 +4212,7 @@ msgid ""
" Returns success unless an invalid option is given or NAME is invalid."
msgstr ""
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4157,7 +4223,7 @@ msgid ""
" Returns success unless N is negative or greater than $#."
msgstr ""
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4184,7 +4250,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:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4198,7 +4264,7 @@ msgid ""
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4360,7 +4426,7 @@ msgstr ""
"geçersiz\n"
" argümanda başarısız döner."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4372,7 +4438,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:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4391,7 +4457,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Her zaman başarılı döner."
-#: builtins.c:1362
+#: builtins.c:1364
#, fuzzy
msgid ""
"Trap signals and other events.\n"
@@ -4452,7 +4518,7 @@ msgstr ""
" numaraları ile birlikte listelemesini sağlar. Kabuğa bir sinyal\n"
" göndermek isterseniz \"kill -SİGNAL $$\" sözdizimini kullanabilirsiniz."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4482,7 +4548,8 @@ msgid ""
"found."
msgstr ""
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4513,6 +4580,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4573,7 +4641,7 @@ msgstr ""
" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
"başarılı döner."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4591,7 +4659,7 @@ msgid ""
" Returns success unless MODE is invalid or an invalid option is given."
msgstr ""
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4603,15 +4671,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Sürecin tamamlanmasını bekle ve çıkış durumunu döndür.\n"
" \n"
@@ -4629,7 +4707,7 @@ msgstr ""
"verilmiÅŸse\n"
" başarısız olur."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4656,7 +4734,7 @@ msgstr ""
"verilmiÅŸse\n"
" başarısız olur."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4680,7 +4758,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4711,7 +4789,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4754,7 +4832,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4783,7 +4861,7 @@ msgstr ""
" Çıktı Durumu:\n"
" VERİYOLU döndürme değerini döndürür."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4801,7 +4879,7 @@ msgstr ""
" Çıkış Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4833,7 +4911,7 @@ msgstr ""
" doğru sonuç vermemişse sıfır döner. Çıkış Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4851,7 +4929,7 @@ msgstr ""
" Çıktı Durumu:\n"
" En son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4869,7 +4947,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4882,7 +4960,7 @@ msgid ""
" The coproc command returns an exit status of 0."
msgstr ""
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4896,7 +4974,7 @@ msgid ""
" Returns success unless NAME is readonly."
msgstr ""
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4914,7 +4992,7 @@ msgstr ""
" Çıktı Durumu:\n"
" Son çalıştırılan komutun durumunu döndürür."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4938,12 +5016,13 @@ msgstr ""
" Çıktı Durumu:\n"
" Devam edilen görevin durumunu döndürür."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4956,7 +5035,7 @@ msgstr ""
" Çıktı Durumu:\n"
" İFADE 0 olursa 1; aksi takdirde 0 döndürür."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5005,7 +5084,7 @@ msgstr ""
" Çıkış Durumu:\n"
" İFADE değerine göre 0 veya 1."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5118,7 +5197,7 @@ msgstr ""
" \t\tgerektiğine karar vermek için kullanılan kalıpların\n"
" \t\tikinokta imi ayraçlı listesi.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5176,7 +5255,7 @@ msgstr ""
" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
" olmadıkça başarılı döner."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5226,7 +5305,7 @@ msgstr ""
" Geçersiz bir argüman belirtilmediği veya dizin değişikliği başarısız\n"
" olmadıkça başarılı döner."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5280,7 +5359,7 @@ msgstr ""
" Geçersiz seçenek belirtilmediği veya bir hata oluşmadığı sürece başarılı "
"döner."
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5300,7 +5379,7 @@ msgid ""
" given or OPTNAME is disabled."
msgstr ""
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5317,8 +5396,8 @@ 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"
@@ -5374,7 +5453,7 @@ msgstr ""
"atama\n"
" hatası oluşmadığı sürece başarılı döner."
-#: builtins.c:1961
+#: builtins.c:1971
msgid ""
"Specify how arguments are to be completed by Readline.\n"
" \n"
@@ -5396,7 +5475,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5405,7 +5484,7 @@ msgid ""
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5427,7 +5506,7 @@ msgstr ""
" Geçersiz bir seçenek girilmediği veya bir hata oluşmadığı takdirde "
"başarılı döner."
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5459,7 +5538,7 @@ msgid ""
" have a completion specification defined."
msgstr ""
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5501,7 +5580,7 @@ msgid ""
" not an indexed array."
msgstr ""
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5511,8 +5590,24 @@ msgstr ""
" \n"
" `mapfile' ile eşanlamlıdır."
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "Telif Hakkı (C) 2012 Özgür Yazılım Vakfı A.Ş."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Telif Hakkı (C) 2016 Özgür Yazılım Vakfı A.Ş."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Geçerli altyordam çağrısının bağlamı döndürür.\n"
+#~ " \n"
+#~ " İFADE olmadan, şu döner "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: %5ld (%s) süreci iletişim_tünelinde"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Bilinmeyen Sinyal #"
#~ msgid ":"
#~ msgstr ":"
diff --git a/po/uk.gmo b/po/uk.gmo
index 448088dd..0e79dd2c 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index 9614255d..de3c9459 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -4,97 +4,102 @@
#
# Myhailo Danylenko <isbear@ukrpost.net>, 2009.
# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2010.
-# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015, 2016.
+# Yuri Chornoivan <yurchor@ukr.net>, 2011, 2013, 2014, 2015, 2016, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 4.4\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2016-09-16 17:46+0300\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-08 20:48+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"Language: uk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: uk\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
-"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
-"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Generator: Lokalize 1.5\n"
+"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 2.0\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "неправильний Ñ–Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñиву"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s: вилучаємо атрибут nameref"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: неможливо перетворити індекÑований маÑив на аÑоціативний"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: неправильний ключ аÑоціативного маÑиву"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½ÐµÑ‡Ð¸Ñлових елементів неможливе"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: при означенні аÑоціативних маÑивів Ñлід вказувати ключ"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: не вдалоÑÑ Ñтворити: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідне Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð»Ñ "
"команди"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: перший непробільний Ñимвол не Ñ” «\"»"
# c-format
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "нема заключної «%c» у %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: пропущено двокрапку-роздільник"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти призначеннÑ"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ пам’ÑÑ‚ÑŒ Ð´Ð»Ñ %s"
-#: braces.c:429
-#, fuzzy, c-format
+#: braces.c:406
+#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’ÑÑ‚Ñ– Ð´Ð»Ñ %d елементів"
+msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’ÑÑ‚Ñ– Ð´Ð»Ñ %u елементів"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð´ÑƒÐ¶Ð¾Ðº: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ об’єм пам’ÑÑ‚Ñ– Ð´Ð»Ñ Â«%s»"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "«%s»: некоректна назва замінника"
@@ -113,22 +118,22 @@ msgstr "«%s»: неправильна назва набору призначеÐ
msgid "%s: cannot read: %s"
msgstr "%s: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "«%s»: невідома назва функції"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s не призначено жодної клавіші.\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s можна запуÑтити за допомогою "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "«%s»: не вдалоÑÑ Ð·Ð½Ñти призначеннÑ"
@@ -142,28 +147,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "має ÑÐµÐ½Ñ Ð»Ð¸ÑˆÐµ уÑередині циклів `for', `while' та `until'"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Повертає контекÑÑ‚ поточної підпрограми.\n"
+"Повертає контекÑÑ‚ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ñ— підпрограми.\n"
" \n"
-" Якщо EXPR не вказано, повертає "
+" Якщо ВИРÐЗ не вказано, виводить \"$line $filename\". Інакше виводить\n"
+" \"$line $subroutine $filename\"; цю додаткову інформацію можна\n"
+" викориÑтовувати Ð´Ð»Ñ Ñ‚Ñ€Ð°ÑÑƒÐ²Ð°Ð½Ð½Ñ Ñтеку.\n"
+" \n"
+" Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð’Ð˜Ð ÐЗУ визначає на Ñкільки рівнів викликів піднÑтиÑÑ Ð²Ñ–Ð´\n"
+" поточного; поточний рівень є нульовим.\n"
+" \n"
+" Код завершеннÑ:\n"
+" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо оболонка зараз не виконує функцію\n"
+" або Ñкщо ВИРÐЗ Ñ” неправильним."
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "змінну HOME не вÑтановлено"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "забагато аргументів"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "порожній каталог"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "змінну OLDPWD не вÑтановлено"
@@ -182,7 +202,7 @@ msgstr "попередженнÑ: "
msgid "%s: usage: "
msgstr "%s: викориÑтовуйте: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: параметр потребує аргументу"
@@ -197,7 +217,7 @@ msgstr "%s: потрібен чиÑловий аргумент"
msgid "%s: not found"
msgstr "%s: не знайдено"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: неправильний параметр"
@@ -207,7 +227,7 @@ msgstr "%s: неправильний параметр"
msgid "%s: invalid option name"
msgstr "%s: некоректна назва параметра"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "«%s»: неправильний ідентифікатор"
@@ -220,7 +240,7 @@ msgstr "неправильне віÑімкове чиÑло"
msgid "invalid hex number"
msgstr "неправильне шіÑтнадцÑткове чиÑло"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "неправильне чиÑло"
@@ -296,73 +316,83 @@ msgstr "помилка вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² терміÐ
msgid "error getting terminal attributes: %s"
msgstr "помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² термінала: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s: помилка Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¾Ð³Ð¾ каталогу: %s: %s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾ неоднозначно"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "у цій верÑÑ–Ñ— не можна ÑкориÑтатиÑÑ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¾ÑŽ"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸: %s лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: неправильна назва дії"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: не вказано ÑÐ¿ÐµÑ†Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "попередженнÑ: можливо параметр -F працює не так, Ñк ви очікуєте"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "попередженнÑ: можливо параметр -C працює не так, Ñк ви очікуєте"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "наразі Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ€Ñдку не виконуєтьÑÑ"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "може викориÑтовуватиÑÑ Ð»Ð¸ÑˆÐµ уÑередині функції"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: еталонна змінна не може бути маÑивом"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: не можна викориÑтовувати циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñƒ змінній поÑиланнÑ"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: циклічне поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "«%s»: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "`-f' не викориÑтовуєтьÑÑ Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: незмінна функціÑ"
@@ -378,7 +408,7 @@ msgstr ""
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: неможливо знищити маÑив таким чином"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: неможливо перетворити аÑоціативний маÑив на індекÑований"
@@ -392,29 +422,34 @@ msgstr "динамічне Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½ÐµÐ´Ð¾Ñтупне"
msgid "cannot open shared object %s: %s"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ колективний об’єкт %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s у колективному об’єкті %s: %s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: завантажений не динамічно"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr ""
"функцією Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ %s повернуто Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‰Ð¾Ð´Ð¾ помилки (%d): не "
"завантажено"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: завантажений не динамічно"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: не вдалоÑÑ Ð²Ð¸Ð»ÑƒÑ‡Ð¸Ñ‚Ð¸: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: це каталог"
@@ -429,12 +464,12 @@ msgstr "%s: не є звичайним файлом"
msgid "%s: file is too large"
msgstr "%s: файл завеликий"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸: %s"
@@ -458,15 +493,16 @@ msgstr "ЗалишилиÑÑ Ð¿Ñ€Ð¸Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ñ– завданнÑ.\n"
msgid "There are running jobs.\n"
msgstr "Фонові Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð²Ñе ще виконуютьÑÑ.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "команду не знайдено"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "параметри журналу"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ тимчаÑовий файл: %s"
@@ -494,12 +530,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "влучень\tкоманда\n"
@@ -511,13 +547,19 @@ msgstr[0] "Команди оболонки, що відповідають Ñло
msgstr[1] "Команди оболонки, що відповідають Ñловам `"
msgstr[2] "Команди оболонки, що відповідають Ñловам `"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k %"
-"s' або `info %s'."
+"«%s» не відповідає жодний розділ довідки. Спробуйте `help help' чи `man -k "
+"%s' або `info %s'."
#: builtins/help.def:224
#, c-format
@@ -547,21 +589,21 @@ msgstr ""
"Зірочка (*) порÑд з назвою команди означає, що команда заборонена.\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "-anrw можуть зуÑтрічатиÑÑ Ð»Ð¸ÑˆÐµ один раз"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "Ð¿Ð¾Ð·Ð¸Ñ†Ñ–Ñ Ñƒ журналу команд"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s: некоректна чаÑова позначка"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: невдалий пошук по журналу команд"
@@ -584,7 +626,7 @@ msgstr "%s: аргументи мають бути ідентифікатораÐ
msgid "Unknown error"
msgstr "Ðевідома помилка"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "очікувавÑÑ Ð²Ð¸Ñ€Ð°Ð·"
@@ -593,12 +635,12 @@ msgstr "очікувавÑÑ Ð²Ð¸Ñ€Ð°Ð·"
msgid "%s: not an indexed array"
msgstr "%s: не Ñ” індекÑованим маÑивом"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: неправильно вказаний деÑкриптор файла"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: неправильний деÑкриптор файла: %s"
@@ -626,36 +668,36 @@ msgstr "Ð¿Ð¾Ñ€Ð¾Ð¶Ð½Ñ Ð½Ð°Ð·Ð²Ð° змінної-маÑиву"
msgid "array variable support required"
msgstr "змінні-маÑиви не підтримуютьÑÑ"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "«%s»: пропущено Ñимвол у шаблоні"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "«%c»: помилкове Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñƒ чаÑу"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "«%c»: помилковий Ñимвол у шаблоні"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "попередженнÑ: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "проблема з обробкою форматуваннÑ: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "пропущено шіÑтнадцÑткову цифру у \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "пропущено цифру Unicode у \\%c"
@@ -810,12 +852,12 @@ msgstr ""
" \n"
" Вбудована команда `dirs' показує Ñтек каталогів."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: некоректне Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу очікуваннÑ"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "помилка читаннÑ: %d: %s"
@@ -825,21 +867,11 @@ msgid "can only `return' from a function or sourced script"
msgstr ""
"`return' працює лише у функції чи Ñкрипті, запущеному за допомогою `source'"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "не можна одночаÑно знищити Ñ– функцію Ñ– змінну"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: не вдалоÑÑ Ð·Ð½Ð¸Ñ‰Ð¸Ñ‚Ð¸: %s лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: не Ñ” маÑивом"
@@ -854,7 +886,7 @@ msgstr "%s: не є функцією"
msgid "%s: cannot export"
msgstr "%s: не вдалоÑÑ ÐµÐºÑпортувати"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "кількіÑÑ‚ÑŒ зÑувів"
@@ -862,7 +894,7 @@ msgstr "кількіÑÑ‚ÑŒ зÑувів"
msgid "cannot set and unset shell options simultaneously"
msgstr "не можна одночаÑно вÑтановлювати й ÑкаÑовувати параметри оболонки"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: неправильна назва параметра оболонки"
@@ -921,26 +953,26 @@ msgstr "%s — це %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s знаходитьÑÑ Ð² кеші (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: помилковий аргумент обмеженнÑ"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "«%c»: неправильна команда"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ обмеженнÑ: %s"
@@ -1000,76 +1032,75 @@ msgstr "неправильний перехід"
msgid "%s: unbound variable"
msgstr "%s: неозначена змінна"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\aÑ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð²Ð¾Ð´Ñƒ вичерпано: автоматичний вихід\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÑпрÑмувати /dev/null на Ñтандартний ввід: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "TIMEFORMAT: «%c»: помилковий Ñимвол шаблону"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: coproc [%d:%s] вÑе ще Ñ–Ñнує"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "помилка каналу"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– eval (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– джерела (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– функцій (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s: обмеженнÑ: не можна вказувати `/' у назві команди"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: команду не знайдено"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: неправильний інтерпретатор"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: не вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ бінарний файл: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "%s Ñ” Ñпеціальною вбудованою командою оболонки"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "не вдалоÑÑ Ñтворити копію файлового деÑкриптору %d у %d"
@@ -1091,65 +1122,69 @@ msgid "attempted assignment to non-variable"
msgstr "Ñпроба Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ðµ-змінної"
#: expr.c:530
-#, fuzzy
msgid "syntax error in variable assignment"
-msgstr "ÑинтакÑична помилка у виразі"
+msgstr "ÑинтакÑична помилка при Ñпробі надати змінній значеннÑ"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "вада: неправильна лекÑема у виразі"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "очікувалаÑÑ `:' умовного виразу"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "екÑпонента менша за 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "пре-інкремент чи пре-декремент потребують ідентифікатор"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "відÑÑƒÑ‚Ð½Ñ `)'"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "ÑинтакÑична помилка: очікувавÑÑ Ð¾Ð¿ÐµÑ€Ð°Ð½Ð´"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "ÑинтакÑична помилка: помилковий арифметичний оператор"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (позначка помилки \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "некоректна арифметична оÑнова"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: неправильна кількіÑÑ‚ÑŒ Ñ€Ñдків"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "завелике Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñнови"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: помилка у виразі\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: не вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ доÑтуп до каталогів вищого рівнÑ"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "не вдалоÑÑ Ð¿ÐµÑ€ÐµÐ²Ñтановити режим без затримки файлового деÑкриптору %d"
@@ -1166,164 +1201,173 @@ msgstr ""
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ файлового деÑкриптору %d вже Ñ–Ñнує буфер"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr ""
"ідентифікатор відгалуженого процеÑу %d знайдено у поточному завданні %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐµÐ½Ð¾Ð³Ð¾ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d, що має групу процеÑів %ld"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr ""
"add_process: ідентифікатор процеÑу %5ld (%s) вказує на його працездатніÑÑ‚ÑŒ"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: ідентифікатор процеÑу не Ñ–Ñнує"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Сигнал %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Завершено"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Зупинено"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Зупинено(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Працює"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Зроблено(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Вихід %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Ðевідомий Ñтан"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(збережено знімок оперативної пам’ÑÑ‚Ñ–)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (РД: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "зміна групи дочірнього процеÑу (%ld на %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: Ð¿Ñ€Ð¾Ñ†ÐµÑ %ld не Ñ” відгалуженим від цієї оболонки"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wait_for: Ðема запиÑу Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу %ld"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d зупинене"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: нема такого завданнÑ"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐ¸Ð»Ð¾ÑÑ"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ %d вже працює в фоні"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: увімкнути WNOHANG, щоб уникнути неÑкінченного блокуваннÑ"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: Ñ€Ñдок %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (збережено знімок оперативної пам’ÑÑ‚Ñ–)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(тепер РД: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: помилка getpgrp"
-#: jobs.c:4247
-#, fuzzy
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
-msgstr "initialize_job_control: алгоритм реалізації Ñ€Ñдків"
+msgstr "initialize_job_control: немає ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми у тлі"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: алгоритм реалізації Ñ€Ñдків"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "не вдалоÑÑ Ð²Ñтановити групу процеÑу Ð´Ð»Ñ Ñ‚ÐµÑ€Ð¼Ñ–Ð½Ð°Ð»Ð° (%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "Ñ†Ñ Ð¾Ð±Ð¾Ð»Ð¾Ð½ÐºÐ° не може керувати завданнÑми"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: умова не виконуєтьÑÑ: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1332,43 +1376,57 @@ msgstr ""
"\r\n"
"malloc: %s:%d: потрібна умова не виконуєтьÑÑ\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "невідомий"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: зайнÑтий блок у ÑпиÑку вільних"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: аргумент є вже звільненим блоком"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: блок ще не виділено"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr ""
"free: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ "
"рамки"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr ""
+"free: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ "
+"рамки"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: блок ще не виділено"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr ""
"realloc: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ "
"рамки"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr ""
+"realloc: виÑвлено перехід за нижню границю блоку; mh_nbytes не вкладаєтьÑÑ Ñƒ "
+"рамки"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: розмір у запиÑах на початку та в кінці блоку відрізнÑєтьÑÑ"
@@ -1410,22 +1468,22 @@ msgstr "%s: неправильно вказаний мережевий шлÑÑ…"
msgid "network operations not supported"
msgstr "мережеві операції не підтримуютьÑÑ"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ локаль (%s): %s"
@@ -1471,7 +1529,7 @@ msgstr "here-document з Ñ€Ñдка %d закінчено кінцем файлÐ
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection: інÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ `%d' поза межами"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
@@ -1480,103 +1538,103 @@ msgstr ""
"shell_getc: shell_input_line_size (%zu) перевищує Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ SIZE_MAX (%lu): "
"Ñ€Ñдок обрізано"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "перевищено макÑимальну можливу кількіÑÑ‚ÑŒ here-document"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено відповідний «%c»"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "файл ÑкінчивÑÑ Ñ€Ð°Ð½Ñ–ÑˆÐµ, ніж було знайдено `]]'"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "ÑинтакÑична помилка в умовному виразі: неочікувана лекÑема «%s»"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "ÑинтакÑична помилка в умовному виразі"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "неочікувана лекÑема «%s», очікувалаÑÑ `)'"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "очікувалаÑÑ `)'"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "неочікуваний аргумент унарного умовного оператора «%s»"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "неочікуваний аргумент унарного умовного оператора"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "неочікувана лекÑема «%s», очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ умовний оператор"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "неочікуваний аргумент бінарного умовного оператора «%s»"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "неочікуваний аргумент бінарного умовного оператора"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "неочікувана лекÑема «%c» в умовній команді"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "неочікувана лекÑема «%s» в умовній команді"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "неочікувана лекÑема %d в умовній команді"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "ÑинтакÑична помилка коло неочікуваної лекÑеми «%s»"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "ÑинтакÑична помилка коло «%s»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "ÑинтакÑична помилка: раптово ÑкінчивÑÑ Ñ„Ð°Ð¹Ð»"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "ÑинтакÑична помилка"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "ВикориÑтовуйте \"%s\", щоб вийти з оболонки.\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "файл ÑкінчивÑÑ, перш ніж було знайдено відповідну `)'"
@@ -1613,97 +1671,99 @@ msgstr "xtrace_set: нульовий вказівник на файл"
#, c-format
msgid "xtrace fd (%d) != fileno xtrace fp (%d)"
msgstr ""
-"деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace (%"
-"d)"
+"деÑкриптор файла xtrace (%d) не дорівнює номеру файла у вказівнику xtrace "
+"(%d)"
#: print_cmd.c:1540
#, c-format
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: «%c»: неправильний Ñимвол шаблону"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "деÑкриптор файла поза можливими межами"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: неоднозначне переÑпрÑмуваннÑ"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: заборонено перезапиÑувати наÑвні файли"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: обмеженнÑ: переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ заборонене"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "не вдалоÑÑ Ñтворити тимчаÑовий файл Ð´Ð»Ñ here-document: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: не вдалоÑÑ Ð½Ð°Ð´Ð°Ñ‚Ð¸ змінній Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "/dev/(tcp|udp)/host/port не підтримуєтьÑÑ"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "помилка переÑпрÑмуваннÑ: не вдалоÑÑ Ñтворити копію деÑкриптора файла"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ /tmp, будь лаÑка Ñтворіть його!"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp має бути чинною назвою каталогу"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
+"режим форматованого Ð²Ð¸Ð²ÐµÐ´ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у інтерактивних оболонках буде "
+"проігноровано"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: помилковий параметр"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "не вдалоÑÑ Ð²Ñтановити uid %d: ефективним Ñ” uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "не вдалоÑÑ Ð²Ñтановити gid %d: ефективним Ñ” gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "не вдалоÑÑ Ð·Ð°Ð¿ÑƒÑтити заÑіб діагноÑтики: режим діагноÑÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ð¼ÐºÐ½ÐµÐ½Ð¾"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: це каталог"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "У мене нема назви!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, верÑÑ–Ñ %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1712,321 +1772,317 @@ msgstr ""
"ВикориÑтовуйте:\t%s [довгий параметр GNU] [параметр] ...\n"
"\t%s [довгий параметр GNU] [параметр] файл_Ñценарію ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Довгі параметри GNU:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Параметри оболонки:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s чи -o параметр\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr ""
"Введіть `%s -c \"help set\"', щоб отримати більше інформації про параметри "
"оболонки.\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr ""
"Введіть `%s -c help', щоб отримати більше інформації про вбудовані команди "
"оболонки.\n"
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
"Щоб повідомити про помилку в програмі, викориÑтовуйте команду `bashbug'.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка bash: <http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Загальна довідкова Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ‰Ð¾Ð´Ð¾ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð½Ð¾Ð³Ð¾ Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ "
"GNU: <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: некоректна операціÑ"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "ÐенаÑвний Ñигнал"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "ЗавиÑаннÑ"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "ПерериваннÑ"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Вихід"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Помилкова інÑтрукціÑ"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Точка зупину trace/trap"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ ABORT"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "ІнÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Помилка обчиÑлень з рухомою комою"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Вбитий"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Помилка шини"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Помилка адреÑуваннÑ"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Помилковий ÑиÑтемний виклик"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "Зламаний канал"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Таймер"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Припинено"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Ðевідкладні події Ð’/Ð’"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Зупинено (Ñигнал)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "ПродовженнÑ"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Зупинка чи Ð¿Ñ€Ð¸Ð¿Ð¸Ð½ÐµÐ½Ð½Ñ Ð´Ð¾Ñ‡Ñ–Ñ€Ð½ÑŒÐ¾Ð³Ð¾ процеÑу"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Зупинено (ввід з термінала)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Зупинено (вивід на термінал)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "В/В готовий"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ файла"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Таймер (віртуальний)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Таймер (профілюваннÑ)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Зміна вікна"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ‚Ñ€Ð°Ñ‡ÐµÐ½Ð¾"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Сигнал кориÑтувача 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Сигнал кориÑтувача 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Вхідні дані HFT очікують"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "наближаєтьÑÑ Ð²Ñ‚Ñ€Ð°Ñ‚Ð° живленнÑ"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "наближаєтьÑÑ Ð°Ð²Ð°Ñ€Ñ–Ð¹Ð½Ð° ÑитуаціÑ"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "перенеÑÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу на інший CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "помилка програмуваннÑ"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Режим монітору HFT надано"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Режим монітору HFT відкликано"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Завершено звукову поÑлідовніÑÑ‚ÑŒ HFT"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "Інформаційний запит"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Ðевідомий Ñигнал â„–"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Ðевідомий Ñигнал â„–%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "неправильна заміна: немає заключної «%s» у %s"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: неможливо означити елемент маÑиву ÑпиÑком"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑу"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ іменований канал %s Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "не вдалоÑÑ Ð·Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ñ‚Ð¸ іменований канал %s Ñк fd %d"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "заміна команди: проігноровано порожній байт у вхідних даних"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "не вдалоÑÑ Ñтворити канал Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "не вдалоÑÑ Ñтворити дочірній Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð´Ð»Ñ Ð¿Ñ–Ð´ÑтавлÑÐ½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr ""
"command_substitute: не вдалоÑÑ Ñтворити копію каналу із файловим "
"деÑкриптором 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: некоректна назва змінної Ð´Ð»Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð° назвою"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: некоректне непрÑме розгортаннÑ"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s: некоректна назва змінної"
-#: subst.c:7056
-#, fuzzy, c-format
+#: subst.c:7256
+#, c-format
msgid "%s: parameter not set"
-msgstr "%s: параметр нульової довжини чи не вказаний"
+msgstr "%s: параметр не вÑтановлено"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: параметр нульової довжини чи не вказаний"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: підрÑдок коротший за 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: неправильна заміна"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: не можна призначити таким чином"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
@@ -2034,12 +2090,12 @@ msgstr ""
"у наÑтупних верÑÑ–ÑÑ… оболонки буде виконуватиÑÑ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð·Ð°Ð¼Ñ–Ð½Ð¸ "
"арифметичних виразів"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "неправильна заміна: немає заключної \"`\" у %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "нема відповідника: %s"
@@ -2062,35 +2118,41 @@ msgstr "очікувалаÑÑ `)'"
msgid "`)' expected, found %s"
msgstr "очікувалаÑÑ `)', отримано %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: очікувавÑÑ ÑƒÐ½Ð°Ñ€Ð½Ð¸Ð¹ оператор"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: очікувавÑÑ Ð±Ñ–Ð½Ð°Ñ€Ð½Ð¸Ð¹ оператор"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: очікувавÑÑ ÑƒÐ½Ð°Ñ€Ð½Ð¸Ð¹ оператор"
+
+#: test.c:881
msgid "missing `]'"
msgstr "відÑÑƒÑ‚Ð½Ñ `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "ÑинтакÑична помилка: неочікувана `;'"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "неправильний номер Ñигналу"
-#: trap.c:320
-#, fuzzy, c-format
+#: trap.c:325
+#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
-msgstr "eval: перевищено макÑимальний рівень вкладеноÑÑ‚Ñ– eval (%d)"
+msgstr ""
+"обробник паÑток: доÑÑгнуто макÑимального Ñ€Ñ–Ð²Ð½Ñ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð¾Ð±Ð½Ð¸ÐºÐ° паÑток (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: неправильне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ trap_list[%d]: %p"
-#: trap.c:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2098,87 +2160,87 @@ msgstr ""
"run_pending_traps: обробник Ñигналу Ñ” SIG_DFL, %d (%s) повторно надÑилаєтьÑÑ "
"Ñобі"
-#: trap.c:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: неправильний Ñигнал %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "помилка Ñ–Ð¼Ð¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— «%s»"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "рівень оболонки (%d) занадто виÑокий, перевÑтановлено у 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: немає контекÑту функції у поточній облаÑÑ‚Ñ–"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: змінною не може бути значеннÑ, Ñке приймають інші змінні"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s: приÑÐ²Ð¾Ñ”Ð½Ð½Ñ Ñ†Ñ–Ð»Ð¾Ð³Ð¾ чиÑла поÑиланню з назвою"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: немає контекÑту функції у поточній облаÑÑ‚Ñ–"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s має нульове Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ€Ñдка екÑпортуваннÑ"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "Помилковий Ñимвол %d у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "немає `=' у Ñ€Ñдку екÑпорту Ð´Ð»Ñ %s"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr ""
"pop_var_context: перший елемент shell_variables не Ñ” контекÑтом функції"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: немає контекÑту global_variables"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr ""
"pop_scope: перший елемент shell_variables не Ñ” тимчаÑовим оточеннÑм виконаннÑ"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ ФÐЙЛ"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: некоректне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´ÐµÑкриптора файла траÑуваннÑ"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑуміÑноÑÑ‚Ñ– не належить припуÑтимому діапазону значень"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "© Free Software Foundation, Inc., 2016"
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "© Free Software Foundation, Inc., 2012"
#: version.c:47 version2.c:47
msgid ""
@@ -2269,11 +2331,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] команда [аргумент ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [назва[=значеннÑ] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] назва[=значеннÑ] ..."
#: builtins.c:82
@@ -2297,11 +2361,13 @@ msgid "eval [arg ...]"
msgstr "eval [аргумент ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts Ñ€Ñдок-параметрів назва [аргумент]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a назва] [команда [аргументи ...]] [переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ ...]"
#: builtins.c:100
@@ -2433,8 +2499,8 @@ msgstr "umask [-p] [-S] [режим-доÑтупу]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
-msgstr "wait [-n] [ідентифікатор]"
+msgid "wait [-fn] [-p var] [id ...]"
+msgstr "wait [-fn] [ідентифікатор]"
#: builtins.c:181
msgid "wait [pid ...]"
@@ -2528,26 +2594,26 @@ msgstr "printf [-v змінна] шаблон-Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ [аргу
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
-"complete [-abcdefgjksuv] [-pr] [-o параметр] [-A діÑ] [-G шаблон-оболонки] [-"
-"W ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-фільтруваннÑ] [-P "
-"префікÑ] [-S ÑуфікÑ] [назва ...]"
+"complete [-abcdefgjksuv] [-pr] [-DEI] [-o параметр] [-A діÑ] [-G шаблон-"
+"оболонки] [-W ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-"
+"фільтруваннÑ] [-P префікÑ] [-S ÑуфікÑ] [назва ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] [-"
+"F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
msgstr ""
"compgen [-abcdefgjksuv] [-o параметр] [-A діÑ] [-G шаблон-оболонки] [-W "
"ÑпиÑок-Ñлів] [-F функціÑ] [-C команда] [-X шаблон-фільтруваннÑ] [-P "
"префікÑ] [-S ÑуфікÑ] [Ñлово]"
#: builtins.c:239
-#, fuzzy
msgid "compopt [-o|+o option] [-DEI] [name ...]"
-msgstr "compopt [-o|+o параметр] [назва ...]"
+msgstr "compopt [-o|+o параметр] [-DEI] [назва ...]"
#: builtins.c:242
msgid ""
@@ -2558,13 +2624,12 @@ msgstr ""
"t] [-u деÑкриптор] [-C обробник] [-c крок] [маÑив]"
#: builtins.c:244
-#, fuzzy
msgid ""
"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C "
"callback] [-c quantum] [array]"
msgstr ""
-"readarray [-n кількіÑÑ‚ÑŒ] [-O початок-відліку] [-s кількіÑÑ‚ÑŒ] [-t] [-u "
-"деÑкриптор] [-C обробник] [-c крок] [маÑив]"
+"readarray [-d роздільник] [-n кількіÑÑ‚ÑŒ] [-O початок-відліку] [-s кількіÑÑ‚ÑŒ] "
+"[-t] [-u деÑкриптор] [-C обробник] [-c крок] [маÑив]"
#: builtins.c:256
msgid ""
@@ -2744,7 +2809,6 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше 1."
#: builtins.c:354
-#, fuzzy
msgid ""
"Execute shell builtins.\n"
" \n"
@@ -2996,6 +3060,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3040,10 +3106,12 @@ msgstr ""
" -A\tЗробити ÐÐЗВИ аÑоціативними маÑивами (Ñкщо підтримуєтьÑÑ).\n"
" -i\tÐадати ÐÐЗВРвлаÑтивіÑÑ‚ÑŒ `ціле чиÑло'.\n"
" -n\tЗробити ÐÐЗВУ поÑиланнÑм на змінну, вказану Ñк значеннÑ\n"
-" -l\tПереводити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ нижнього регіÑтру у разі Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐÐЗВИ.\n"
+" -l\tПереворити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— ÐÐЗВИ до нижнього регіÑтру, Ñкщо ÐÐЗВИ "
+"визначено.\n"
" -r\tЗробити ÐÐЗВИ незмінними (лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ).\n"
" -t\tÐадати ÐÐЗВÐÐœ влаÑтивіÑÑ‚ÑŒ `trace'.\n"
-" -u\tПереводити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ верхнього регіÑтру у разі Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐÐЗВ.\n"
+" -u\tПеретворити Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð¶Ð½Ð¾Ñ— ÐÐЗВИ до верхнього регіÑтру, Ñкщо "
+"ÐÐЗВИ визначено.\n"
" -x\tЕкÑпортувати ÐÐЗВИ.\n"
" \n"
" Замінивши `+' на `-' можна вимкнути відповідну влаÑтивіÑÑ‚ÑŒ.\n"
@@ -3059,7 +3127,7 @@ msgstr ""
"виникло\n"
" помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3069,7 +3137,7 @@ msgstr ""
" \n"
" Синонім `declare'. ДивітьÑÑ `help declare'."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3099,8 +3167,7 @@ msgstr ""
" помилка під Ñ‡Ð°Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ñ–Ð¹ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ Ñкщо оболонка не виконує "
"функцію."
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3167,11 +3234,17 @@ msgstr ""
" \t\tÐ½ÑƒÐ»Ñ Ð´Ð¾ трьох віÑімкових цифр\n"
" \\xHH\tвоÑьмибітовий Ñимвол із шіÑтнадцÑтковим кодом HH. HH\n"
" \t\tможе бути одною чи двома шіÑтнадцÑтковими цифрами\n"
+" \\uHHHH\tÑимвол Unicode, чиє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” шіÑтнадцÑтковим чиÑлом HHHH.\n"
+" \t\tHHHH може ÑкладатиÑÑ Ð· одної, двох, трьох або чотирьох "
+"шіÑтнадцÑткових цифр.\n"
+" \\UHHHHHHHH Ñимвол Unicode, чиє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ” шіÑтнадцÑтковим чиÑлом\n"
+" \t\tHHHHHHHH. HHHHHHHH може міÑтити від однією до воÑьми шіÑтнадцÑткових "
+"цифр.\n"
" \n"
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо виникне помилка запиÑу."
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3193,7 +3266,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу."
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3248,7 +3321,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРне Ñ” вбудованою командою\n"
" оболонки або Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3270,7 +3343,8 @@ msgstr ""
"команди\n"
" Ñ” порожнім Ñ€Ñдком, команда завершуєтьÑÑ ÑƒÑпішно."
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3303,8 +3377,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3356,7 +3430,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо знайдено параметр; помилково, Ñкщо\n"
" параметри ÑкінчилиÑÑ Ð°Ð±Ð¾ трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3397,7 +3471,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо команду не буде знайдено або Ñкщо\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° переÑпрÑмуваннÑ."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3409,7 +3483,7 @@ msgstr ""
" Виходить з оболонки, повертаючи ÑÑ‚Ð°Ñ‚ÑƒÑ N. Якщо N не вказано, беретьÑÑ\n"
" ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ñтанньої запущеної команди."
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3423,7 +3497,7 @@ msgstr ""
"команду\n"
" запущено не у оболонці ÑеанÑу."
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3478,7 +3552,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом запущених команд, або помилкою, Ñкщо\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3500,7 +3574,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ, що переведене\n"
" у пріоритетний режим, або помилкою, Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3525,7 +3599,7 @@ msgstr ""
"Ñкщо\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3569,8 +3643,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВУ не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ або Ñкщо\n"
" вказано помилковий параметр."
-#: builtins.c:816
-#, fuzzy
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3613,8 +3686,7 @@ msgstr ""
" помилковий параметр."
# WTF??? history list += history + history file ???
-#: builtins.c:840
-#, fuzzy
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3657,7 +3729,11 @@ msgstr ""
" \n"
" Параметри:\n"
" -c\tВилучити зі ÑпиÑку уÑÑ– збережені команди.\n"
-" -d позиціÑ\tВилучити Ñ€Ñдок у ПОЗИЦІЇ (відноÑній).\n"
+" -d позиціÑ\tВилучити Ñ€Ñдок у ПОЗИЦІЇ (відноÑній). Відлік від'ємних "
+"значень\n"
+" \t\tпозиції ведетьÑÑ Ð²Ñ–Ð´ ÐºÑ–Ð½Ñ†Ñ ÑпиÑку журналу\n"
+" \n"
+"\n"
" \n"
" -a\tДодати запиÑи з поточного ÑеанÑу до файла журналу.\n"
" -n\tДодати запиÑи, Ñких ще немає у ÑпиÑку з файла журналу, Ñ–\n"
@@ -3684,7 +3760,7 @@ msgstr ""
"виникло\n"
" помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3729,7 +3805,7 @@ msgstr ""
" виникло помилки під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ. При викориÑтанні -x команда\n"
" завершуєтьÑÑ Ð·Ñ– ÑтатуÑом Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÐšÐžÐœÐÐДИ."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3761,7 +3837,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n"
" ЗÐВДÐÐÐЯ."
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3805,7 +3881,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні аргументи та не\n"
" трапилоÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3891,8 +3967,7 @@ msgstr ""
" Якщо результатом обчиÑÐ»ÐµÐ½Ð½Ñ Ð¾Ñтаннього ÐРГУМЕÐТУ Ñ” 0, let повертає 1,\n"
" інакше — 0."
-#: builtins.c:992
-#, fuzzy
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3959,8 +4034,7 @@ msgstr ""
" \t\tпочинаючи з нульового.\n"
" -d роздільник\tЧитати ввід доки не знайдетьÑÑ Ñимвол РОЗДІЛЬÐИК\n"
" \t\t(заміÑÑ‚ÑŒ ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка, Ñк звичайно).\n"
-" -e\t\tВикориÑтовувати Readline Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ñдку у інтерактивній\n"
-" \t\tоболонці.\n"
+" -e\t\tВикориÑтовувати Readline Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ñдку.\n"
" -i текÑÑ‚\tВказати початковий ТЕКСТ Ð´Ð»Ñ Readline.\n"
" -n кількіÑÑ‚ÑŒ\tПрипинити піÑÐ»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐšÐ†Ð›Ð¬ÐšÐžÐ¡Ð¢Ð† Ñимволів, заміÑÑ‚ÑŒ\n"
" \t\tтого, щоб чекати на кінець Ñ€Ñдка.\n"
@@ -3990,7 +4064,7 @@ msgstr ""
" вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð¼Ñ–Ð½Ð½Ð¾Ñ—, або Ñкщо із -u вказано неправильний "
"файловий деÑкриптор."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -4011,7 +4085,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає N, або помилку, Ñкщо викликана не у функції чи Ñценарії."
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4192,7 +4266,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри."
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4233,7 +4307,7 @@ msgstr ""
"ÐÐЗВÐ\n"
" доÑтупна лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4267,7 +4341,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ."
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4306,7 +4380,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та ÐÐЗВИ."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4324,7 +4398,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо N менше за нуль чи більше за $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4348,7 +4422,7 @@ msgstr ""
"або\n"
" помилку, Ñкщо ФÐЙЛ не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸."
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4373,7 +4447,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо не ввімкнене ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми чи\n"
" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4538,7 +4612,7 @@ msgstr ""
"вказано\n"
" помилковий аргумент чи ВИРÐЗ хибний."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4551,7 +4625,7 @@ msgstr ""
"оÑтаннім\n"
" аргументом має бути `]'."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4570,7 +4644,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завжди уÑпішна."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4646,7 +4720,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказані правильні параметри та "
"СИГÐÐЛИ."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4698,7 +4772,8 @@ msgstr ""
"Ñкщо\n"
" хоч одне з них не вдаÑÑ‚ÑŒÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4729,6 +4804,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4794,7 +4870,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано неправильний параметр чи\n"
" трапилаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4828,7 +4904,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильну ÐœÐСКУ та параметри."
-#: builtins.c:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4840,15 +4916,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"Чекає Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñ‚Ð° повертає його код завершеннÑ.\n"
" \n"
@@ -4862,12 +4948,16 @@ msgstr ""
" Якщо вказано параметр -n, очікує на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½Ð°Ñтупного завданнÑ\n"
" Ñ– повертає його код завершеннÑ.\n"
" \n"
+" Якщо вказано параметр -f Ñ– увімкнено ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñми, очікує на\n"
+" вказаний ідентифікатор Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ, заміÑÑ‚ÑŒ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° зміну\n"
+" його Ñтану.\n"
+" \n"
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·Ð°Ð½Ð¾Ð³Ð¾ завданнÑ; помилку, Ñкщо "
"вказано\n"
" неправильні параметри чи ІДЕÐТИФІКÐТОР."
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4896,7 +4986,7 @@ msgstr ""
" Повертає код помилки, Ñкщо вказано неправильний ІДЕÐТИФІКÐТОР чи "
"параметр."
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4917,7 +5007,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4947,7 +5037,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4986,7 +5076,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -5014,7 +5104,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð›ÐÐЦЮЖКÐ-КОМÐÐД."
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -5032,7 +5122,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -5065,7 +5155,7 @@ msgstr ""
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди або нуль,\n"
" Ñкщо жодна з перевірених умов не була Ñ–Ñтинною."
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -5083,7 +5173,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -5102,7 +5192,7 @@ msgstr ""
" Команда повертає код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
# WTF? How can it return exit code of _asynchronous_ process...
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -5126,7 +5216,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда coproc повертає Ñтан виходу 0."
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5152,7 +5242,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо ÐÐЗВРє незмінною."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5171,7 +5261,7 @@ msgstr ""
" Код завершеннÑ:\n"
" КонÑÑ‚Ñ€ÑƒÐºÑ†Ñ–Ñ Ð¿Ð¾Ð²ÐµÑ€Ñ‚Ð°Ñ” код Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð¾Ñтанньої виконаної команди."
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5196,12 +5286,13 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда повертає ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ð´Ð¾Ð²Ð¶ÐµÐ½Ð¾Ð³Ð¾ завданнÑ."
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5214,7 +5305,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо результат обчиÑÐ»ÐµÐ½Ð½Ñ Ð½ÐµÐ½ÑƒÐ»ÑŒÐ¾Ð²Ð¸Ð¹."
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5263,7 +5354,7 @@ msgstr ""
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ВИРÐЗ Ñ–Ñтинний."
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5366,7 +5457,7 @@ msgstr ""
" HISTIGNORE\tРозділений двокрапкою ÑпиÑок шаблонів, що викориÑтовуютьÑÑ\n"
" \t\tпри визначенні, чи зберігати команду у ÑпиÑку журналу.\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5424,7 +5515,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказаний неправильний аргумент чи\n"
" Ñкщо не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточну каталог."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5476,7 +5567,7 @@ msgstr ""
" Команда завершуєтьÑÑ Ð½ÐµÐ²Ð´Ð°Ð»Ð¾, Ñкщо вказано помилковий аргумент чи Ñкщо\n"
" не вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ поточний каталог."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5530,8 +5621,7 @@ msgstr ""
"Ñкщо\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°."
-#: builtins.c:1906
-#, fuzzy
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5552,8 +5642,11 @@ msgid ""
msgstr ""
"Ð’Ñтановлює та Ñкидає параметри оболонки.\n"
" \n"
-" Змінює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐŸÐРÐМЕТРІВ. Якщо ПÐРÐМЕТРИ не вказані, виводить ÑпиÑок\n"
-" уÑÑ–Ñ… параметрів оболонки, вказуючи, чи параметр ввімкнений, чи ні.\n"
+" Змінює Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐŸÐРÐМЕТРІВ. Якщо аргументи ПÐРÐМЕТРИ не вказані, "
+"виводить\n"
+" ÑпиÑок уÑÑ–Ñ… вказаних параметрів оболонки. Якщо ж параметрів не вказано,\n"
+" виводить ÑпиÑок уÑÑ–Ñ… параметрів, вказуючи, чи параметр ввімкнений, чи "
+"ні.\n"
" \n"
" Параметри:\n"
" -o\tПриймати лише ПÐРÐМЕТРИ, з Ñкими працює `set -o'.\n"
@@ -5566,7 +5659,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо ПÐРÐМЕТР ввімкнено; невдало, Ñкщо\n"
" вказано неправильні параметри чи ПÐРÐМЕТР вимкнено."
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5583,8 +5676,8 @@ 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"
@@ -5638,7 +5731,7 @@ msgstr ""
"або\n"
" Ñкщо трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° запиÑу чи приÑвоєннÑ."
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5661,7 +5754,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5676,23 +5769,26 @@ msgstr ""
" придатній Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾ виконаннÑ.\n"
" \n"
" Параметри:\n"
-" -p\tВивеÑти вказівки Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñƒ формі, придатній до виконаннÑ.\n"
-" -r\tВилучити вказівки Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð´Ð»Ñ ÐÐЗВ (або, Ñкщо\n"
+" -p\tВивеÑти вказівки Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñƒ формі, придатній до виконаннÑ.\n"
+" -r\tВилучити вказівки Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ñ‚Ñ–Ð² Ð´Ð»Ñ ÐÐЗВ (або, Ñкщо\n"
" \t\tÐÐЗВ не вказано, уÑÑ– вказівки завершеннÑ).\n"
-" -D\tзаÑтоÑувати Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ‚Ð° дії Ñк типові Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´\n"
-" \tбез визначених вказівок щодо завершеннÑ.\n"
-" -E\tзаÑтоÑувати Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ñ‚Ð° дії до «порожніх» команд, Ñпроби --\n"
+" -D\tзаÑтоÑувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дії Ñк типові Ð´Ð»Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´\n"
+" \tбез визначених вказівок щодо доповненнÑ.\n"
+" -E\tзаÑтоÑувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дії до «порожніх» команд, Ñпроби --\n"
" \tÐ·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð½Ð° порожньому Ñ€Ñдку.\n"
+" -I\tзаÑтоÑовувати Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° дій до початкового Ñлова\n"
+" \t\t(зазвичай, команди)\n"
" \n"
-" Якщо виконуєтьÑÑ Ñпроба завершеннÑ, дії виконуютьÑÑ Ñƒ порÑдку, в Ñкому\n"
-" вказані наведені вище параметри у верхньому регіÑтрі. Параметр -D має\n"
-" пріоритет над параметром -E.\n"
+" Якщо виконуєтьÑÑ Ñпроба доповненнÑ, дії виконуютьÑÑ Ñƒ порÑдку, в Ñкому\n"
+" вказані наведені вище параметри у верхньому регіÑтрі. Якщо вказано\n"
+" декілька параметрів, параметр -D має пріоритет над параметром -E,\n"
+" а обидва ці параметри мають пріоритет над параметром -I.\n"
" \n"
" Код завершеннÑ:\n"
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та не\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5714,8 +5810,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри Ñ– не\n"
" трапитьÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ¸ під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ."
-#: builtins.c:2006
-#, fuzzy
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5755,6 +5850,9 @@ msgstr ""
" \n"
" Параметри:\n"
" \t-o параметр\tУвімкнути параметр Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… ÐÐЗВ.\n"
+" \t-D\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ \"типових\" команд\n"
+" \t-E\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ \"порожніх\" команд\n"
+" \t-I\t\tЗмінити параметри Ð´Ð»Ñ Ð´Ð¾Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ Ð·Ð° початковим Ñловом\n"
" \n"
" Параметри можна вимикати, викориÑтовуючи `+o' заміÑÑ‚ÑŒ `-o'.\n"
" \n"
@@ -5770,7 +5868,7 @@ msgstr ""
" Команда завершуєтьÑÑ ÑƒÑпішно, Ñкщо вказано правильні параметри та\n"
" вказівки завершень Ð´Ð»Ñ ÐÐЗВ Ñ–Ñнують."
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5853,7 +5951,7 @@ msgstr ""
"або\n"
" Ñкщо ÐœÐСИВ Ñ” незмінним."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5863,6 +5961,24 @@ msgstr ""
" \n"
" Синонім до `mapfile'."
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Повертає контекÑÑ‚ поточної підпрограми.\n"
+#~ " \n"
+#~ " Якщо EXPR не вказано, повертає "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: Ð¿Ñ€Ð¾Ñ†ÐµÑ %5ld (%s) у the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Ðевідомий Ñигнал â„–"
+
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "© Free Software Foundation, Inc., 2018"
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "© Free Software Foundation, Inc., 2014"
@@ -5878,9 +5994,6 @@ msgstr ""
#~ 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 25d892cc..256ec8ee 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index e04bace5..583c7050 100644
--- a/po/vi.po
+++ b/po/vi.po
@@ -10,89 +10,94 @@ msgid ""
msgstr ""
"Project-Id-Version: bash 4.4-beta1\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
"PO-Revision-Date: 2015-10-18 07:47+0700\n"
"Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\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"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Gtranslator 2.91.7\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "sai chỉ số mảng"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr ""
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, 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:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: khóa mảng liên kết không hợp lệ"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, 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:633
+#: arrayfunc.c:747
#, 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:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: không thể tạo: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr ""
"bash_execute_unix_command: không tìm thấy ánh xạ phím (keymap) cho câu lệnh"
-#: bashline.c:4254
+#: bashline.c:4459
#, 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:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "thiếu dấu đóng “%c†trong %s"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: thiếu dấu hai chấm phân cách"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "“%sâ€: không thể tháo"
+
+#: braces.c:327
#, 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:429
+#: braces.c:406
#, fuzzy, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "khai triển ngoặc ôm: gặp lỗi khi phân bổ bộ nhớ cho “%d†phần tử"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "khai triển ngoặc ôm: gặp lá»—i khi phân bổ bá»™ nhá»› cho “%sâ€"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "“%sâ€: tên bí danh không hợp lệ"
@@ -111,22 +116,22 @@ msgstr "“%sâ€: tên sÆ¡ đồ phím không hợp lệ"
msgid "%s: cannot read: %s"
msgstr "%s: không thể Ä‘á»c: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "“%sâ€: không hiểu tên hàm"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, 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:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s có thể được gá»i thông qua "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "“%sâ€: không thể tháo"
@@ -140,29 +145,43 @@ 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:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"Trả lại ngữ cảnh của cú gá»i thủ tục con hiện thá»i.\n"
+"Trả vá» ngữ cảnh của lệnh gá»i hàm hiện thá»i.\n"
"\n"
-" Nếu không có BTHỨC thì trả vỠ"
+" Không có BTHỨC thì trả lại \"$line $filename\". Có BTHỨC thì trả\n"
+" lại \"$line $subroutine $filename\"; thông tin bổ sung này có thể\n"
+" được dùng để cung cấp stack trace.\n"
+"\n"
+" Giá trị của BTHỨC thì ngụ ý bao nhiêu lần gá»i cần lùi lại đằng\n"
+" trÆ°á»›c lệnh gá»i hiện tại; khung gá»i đầu là khung 0.\n"
+"\n"
+" 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/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "ChÆ°a đặt biến môi trÆ°á»ng HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "quá nhiá»u đối số"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
#, fuzzy
msgid "null directory"
msgstr "không có thư mục khác"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "ChÆ°a đặt biến môi trÆ°á»ng OLDPWD"
@@ -181,7 +200,7 @@ msgstr "cảnh báo: "
msgid "%s: usage: "
msgstr "%s: cách dùng: "
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s: tùy chá»n cần má»™t đối số"
@@ -196,7 +215,7 @@ msgstr "%s: cần đối số thuộc kiểu số"
msgid "%s: not found"
msgstr "%s: không tìm thấy"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s: tùy chá»n không hợp lệ"
@@ -206,7 +225,7 @@ msgstr "%s: tùy chá»n không hợp lệ"
msgid "%s: invalid option name"
msgstr "%s: tên tùy chá»n không hợp lệ"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "“%sâ€: không phải là định danh hợp lệ"
@@ -219,7 +238,7 @@ msgstr "số bát phân không hợp lệ"
msgid "invalid hex number"
msgstr "số thập lục không hợp lệ"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "số không hợp lệ"
@@ -295,73 +314,83 @@ msgstr "lỗi đặt các thuộc tính thiết bị cuối: %s"
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:579
+#: builtins/common.c:635
#, 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:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s: đặc tả công việc chưa rõ ràng"
-#: builtins/common.c:908
+#: builtins/common.c:964
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:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: không thể hủy đặt: %s chỉ Ä‘á»c"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: không thể hủy đặt"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s: tên hành động không hợp lệ"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s: không có đặc tả tự hoàn thiện"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
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:735
+#: builtins/complete.def:690
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:883
+#: builtins/complete.def:838
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:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "chỉ có thể dùng trong một hàm"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, 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:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, 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:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: tên tham chiếu quẩn tròn"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, fuzzy, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "%s: tên biến không hợp lệ cho một tham chiếu tên"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "không thể dùng “-f†để tạo hàm"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s: hàm chỉ Ä‘á»c"
@@ -376,7 +405,7 @@ msgstr "%s: gán mảng phức hợp được trích dẫn đã lạc hậu"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: không thể hủy biến mảng bằng cách này"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, 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ố"
@@ -390,27 +419,32 @@ msgstr "không có chức năng nạp động"
msgid "cannot open shared object %s: %s"
msgstr "không thể mở đối tượng dùng chung %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, 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:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s không được tải động"
+
+#: builtins/enable.def:392
#, 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
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s không được tải động"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: không thể xóa: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: là thư mục"
@@ -425,12 +459,12 @@ msgstr "%s: không phải là tập tin thÆ°á»ng"
msgid "%s: file is too large"
msgstr "%s: tập tin quá lớn"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: không thể thực hiện tập tin nhị phân"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: không thể thực thi: %s"
@@ -454,15 +488,16 @@ msgstr "Có công việc bị dừng.\n"
msgid "There are running jobs.\n"
msgstr "Có công việc đang chạy.\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "không tìm thấy lệnh"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "đặc tả lịch sử"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s: không thể mở tập tin tạm: %s"
@@ -490,12 +525,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "gợi ý\tlệnh\n"
@@ -505,6 +540,12 @@ msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
msgstr[0] "Câu lệnh hệ vỠtương ứng với từ khóa “"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -538,21 +579,21 @@ msgstr ""
"Dấu sao (*) bên cạnh tên nghĩa là lệnh bị tắt.\n"
"\n"
-#: builtins/history.def: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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "vị trí lịch sử"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, fuzzy, c-format
msgid "%s: invalid timestamp"
msgstr "%s: đối số không hợp lệ"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: gặp lỗi khi khai triển lịch sử"
@@ -575,7 +616,7 @@ msgstr "%s: đối số phải là ID tiến trình hoặc công việc"
msgid "Unknown error"
msgstr "Lỗi không rõ"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "cần biểu thức"
@@ -584,12 +625,12 @@ msgstr "cần biểu thức"
msgid "%s: not an indexed array"
msgstr "%s: không phải là mảng chỉ số"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: đặc tả bộ mô tả tập tin không hợp lệ"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: bộ mô tả tập tin không hợp lệ: %s"
@@ -617,36 +658,36 @@ msgstr "tên biến mảng vẫn trống"
msgid "array variable support required"
msgstr "cần hỗ trợ biến mảng"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "“%sâ€: thiếu ký tá»± định dạng"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "“%câ€: đặc tả định dạng thá»i gian không đúng"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "“%câ€: ký tá»± định dạng không hợp lệ"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "cảnh báo: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "vấn đỠphân tích cú pháp định dạng: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "thiếu chữ số thập lục phân cho \\x"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "thiếu chữ số unicode cho \\%c"
@@ -794,12 +835,12 @@ msgstr ""
"\n"
" Lệnh “dirs†hiển thị ngăn xếp thư mục."
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: sai đặc tả thá»i gian chá» tối Ä‘a"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "lá»—i Ä‘á»c: %d: %s"
@@ -808,21 +849,11 @@ msgstr "lá»—i Ä‘á»c: %d: %s"
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:852
+#: builtins/set.def:869
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:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: không thể hủy đặt"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: không thể hủy đặt: %s chỉ Ä‘á»c"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: không phải biến mảng"
@@ -837,7 +868,7 @@ msgstr "%s: không phải hàm"
msgid "%s: cannot export"
msgstr "%s: không thể xuất"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "số lượng dịch"
@@ -845,7 +876,7 @@ msgstr "số lượng dịch"
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:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: tên tùy chá»n hệ vá» không hợp lệ"
@@ -902,26 +933,26 @@ msgstr "%s là %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s được băm (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s: đối số giới hạn không hợp lệ"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "“%câ€: câu lệnh sai"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s: không thể lấy giới hạn: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "giới hạn"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s: không thể sửa đổi giới hạn: %s"
@@ -981,76 +1012,75 @@ msgstr "nhảy sai"
msgid "%s: unbound variable"
msgstr "%s: biến chưa liên kết"
-#: eval.c:245
-#, c-format
+#: eval.c:242
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:536
+#: execute_cmd.c:537
#, 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:1306
+#: execute_cmd.c:1297
#, 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:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr ""
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "lỗi ống dẫn"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, 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:4683
+#: execute_cmd.c:4805
#, 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:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: vượt quá mức độ các hàm lồng nhau tối đa (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, 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:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s: không tìm thấy lệnh"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: bộ thông dịch sai"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, 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:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "“%sâ€: là lệnh tích hợp đặc biệt"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "không thể nhân đôi fd %d thành fd %d"
@@ -1076,61 +1106,66 @@ msgstr "thử gán cho thứ không phải biến"
msgid "syntax error in variable assignment"
msgstr "lỗi cú pháp trong biểu thức"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "chia cho không"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "lỗi: “token expassign†sai"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "cần “:†cho biểu thức Ä‘iá»u kiện"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "số mũ nhỠhơn 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "cần định danh sau tăng/giảm dần trước"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "thiếu “)â€"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "lỗi cú pháp: cần toán hạng"
-#: expr.c:1486
+#: expr.c:1489
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:1510
+#: expr.c:1513
#, 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:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "cÆ¡ số (toán há»c) không hợp lệ"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: sai số lượng dòng"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "cơ số có giá trị quá lớn"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: lỗi biểu thức\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: không thể truy cập thư mục cấp trên"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "không thể đặt lại chế độ “nodelay†cho fd %d"
@@ -1146,163 +1181,173 @@ 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:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: pgrp pipe"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, 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:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "đang xóa công việc bị dừng chạy %d với nhóm tiến trình %ld"
-#: jobs.c:1307
-#, 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:1310
+#: jobs.c:1511
#, 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:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: không có pid như vậy"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "Tín hiệu %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "Xong"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "Bị dừng"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "Bị dừng(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "Äang chạy"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "Xong(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "Thoát %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "Không rõ trạng thái"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(xuất ra core)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (wd: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "setpgid tiến trình con (%ld thành %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, 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:2695
+#: jobs.c:2893
#, 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:3055
+#: jobs.c:3236
#, 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:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s: không có công việc như vậy"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: công việc bị chấm dứt"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: công việc %d đã Ä‘ang chạy ná»n"
-#: jobs.c:3597
+#: jobs.c:3806
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:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: dòng %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (xuất ra core)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(wd ngay: %s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp bị lỗi"
-#: jobs.c:4247
+#: jobs.c:4447
#, fuzzy
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: kỷ luật dòng"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: kỷ luật dòng"
# Nghĩa chữ : dừng dịch
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, 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:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "không có Ä‘iá»u khiển công việc trong hệ vá» này"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: khẳng định gặp lỗi: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1311,41 +1356,51 @@ msgstr ""
"\r\n"
"malloc: %s:%d: khẳng định bị sai\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "không rõ"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr ""
"malloc (cấp phát bộ nhớ): khối bộ nhớ dành riêng trên danh sách các khối còn "
"trống bị ghi vào"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free: đã được gá»i vá»›i đối số khối đã được giải phóng"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: đã được gá»i vá»›i đối số khối chÆ°a cấp phát"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: phát hiện sự tràn ngược; mh_nbytes ở ngoại phạm vi"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: kích cỡ đoạn đầu và cuối không trùng"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc: đã được gá»i vá»›i đối số khối chÆ°a cấp phát"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: phát hiện sự tràn ngược; mh_nbytes nằm ngoài phạm vi cho phép"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: kích cỡ đoạn đầu và cuối không trùng"
@@ -1387,22 +1442,22 @@ msgstr "%s: đặc tả Ä‘Æ°á»ng dẫn mạng sai"
msgid "network operations not supported"
msgstr "không hỗ trợ thao tác mạng"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: không thể chuyển đổi miá»n địa phÆ°Æ¡ng (%s): %s"
@@ -1448,110 +1503,110 @@ msgstr "tài liệu này ở dòng %d định giới bằng kết thúc tập ti
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:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr ""
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "vượt quá số lượng tài-liệu-đây tối đa"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, 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:4606
+#: parse.y:4696
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:4611
+#: parse.y:4701
#, 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:4615
+#: parse.y:4705
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:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "gặp thẻ bài bất thÆ°á»ng “%sâ€, cần “)â€"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "cần “)â€"
-#: parse.y:4725
+#: parse.y:4815
#, 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:4729
+#: parse.y:4819
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:4775
+#: parse.y:4865
#, 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:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "cần toán tá»­ hai ngôi Ä‘iá»u kiện"
-#: parse.y:4801
+#: parse.y:4891
#, 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:4805
+#: parse.y:4895
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:4816
+#: parse.y:4906
#, 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:4819
+#: parse.y:4909
#, 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:4823
+#: parse.y:4913
#, 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:6245
+#: parse.y:6336
#, 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:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "lá»—i cú pháp ở gần “%sâ€"
-#: parse.y:6273
+#: parse.y:6365
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:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "lỗi cú pháp"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "Dùng \"%s\" để rá»i hệ vá».\n"
-#: parse.y:6497
+#: parse.y:6602
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"
@@ -1595,89 +1650,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: “%câ€: ký tá»± định dạng không hợp lệ"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "bộ mô tả tập tin ở ngoại phạm vi"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: chuyển hướng chưa rõ ràng"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: không thể ghi đè lên tập tin đã có"
-#: redir.c:183
+#: redir.c:213
#, 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:188
+#: redir.c:218
#, 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:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: không thể gán fd vào biến"
-#: redir.c:591
+#: redir.c:649
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:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "lỗi chuyển hướng: không thể nhân đôi fd"
-#: shell.c:343
+#: 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:347
+#: 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:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr ""
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: tùy chá»n không hợp lệ"
-#: shell.c:1299
+#: shell.c:1319
#, 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:1306
+#: shell.c:1330
#, 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:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr ""
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: Là một thư mục"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "Không có tên!"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash, phiên bản %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1686,328 +1741,324 @@ msgstr ""
"Cách dùng:\t%s [tùy chá»n GNU dài] [tùy chá»n] …\n"
"\t\t%s [tùy chá»n GNU dài] [tùy chá»n] tập-tin-văn-lệnh …\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "Tùy chá»n dài:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Tùy chá»n:\n"
-#: shell.c:1988
+#: shell.c:2043
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:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s hoặc -o tùy-chá»n\n"
-#: shell.c:2013
+#: shell.c:2068
#, 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:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "Gõ “%s -c help†để xem thông tin vỠcác lệnh hệ vỠtích hợp.\n"
-#: shell.c:2015
+#: shell.c:2070
#, 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: <http://translationproject.org/team/vi.html>.\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "Trang chủ bash: <http://www.gnu.org/software/bash/>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr ""
"Trợ giúp chung vá» cách sá»­ dụng phần má»m GNU : <http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: thao tác không hợp lệ"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "Tín hiệu giả"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "Treo"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "Ngắt"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "Thoát"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "Câu lệnh không được phép"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "Theo vết/đặt bẫy BPT"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "Câu lệnh HỦY BỎ"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "Câu lệnh EMT"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "Lỗi dấu chấm động"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "Bị giết"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "Lá»—i bus"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "Lỗi phân đoạn"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "Lá»—i lệnh gá»i hệ thống"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "á»ng dẫn há»ng"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "Äồng hồ báo thức"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "Bị chấm dứt"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "Äiá»u kiện IO gấp"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "Bị dừng (tín hiệu)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "Tiếp tục"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "Tiến trình con đã giết hoặc dừng"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "Bị dừng (tty nhập)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "Bị dừng (tty xuất)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O sẵn sàng"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "Giới hạn CPU"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "Giới hạn tập tin"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "Báo động (ảo)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "Báo động (hồ sơ)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "Cửa sổ bị thay đổi"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "Khóa bản ghi"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "Tín hiệu ngÆ°á»i dùng 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "Tín hiệu ngÆ°á»i dùng 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "Dữ liệu nhập HFT bị hoãn"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "sắp bị mất điện đột ngột"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "hệ thống sắp sụp đổ"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "chuyển tiến trình sang CPU khác"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "lỗi lập trình"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "Có chế độ màn hình HFT"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "Không có chế độ màn hình HFT"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "Äã hoàn thành chuá»—i âm thanh HFT"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "yêu cầu thông tin"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "Tín hiệu lạ #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "Tín hiệu lạ #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "sai chỉ số phụ: không có đóng “%s†trong %s"
-#: subst.c:3231
+#: subst.c:3281
#, 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:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "không thể tạo ống dẫn để thay thế tiến trình"
-#: subst.c:5851
+#: subst.c:5985
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:5920
+#: subst.c:6059
#, 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:5922
+#: subst.c:6061
#, 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:5945
+#: subst.c:6084
#, 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:6062
+#: subst.c:6213
#, fuzzy
msgid "command substitution: ignored null byte in input"
msgstr "sai thay thế: không có \"“\" đóng trong %s"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "không thể tạo ống dẫn để thay thế lệnh"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "không thể tạo tiến trình con để thay thế lệnh"
-#: subst.c:6259
+#: subst.c:6423
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:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, 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:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s: triển khai gián tiếp không hợp lệ"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "“%sâ€: tên biến không hợp lệ"
-#: subst.c:7056
+#: subst.c:7256
#, fuzzy, c-format
msgid "%s: parameter not set"
msgstr "%s: tham số null hoặc chưa được đặt"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: tham số null hoặc chưa được đặt"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: biểu thức chuỗi con < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s: thay thế sai"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: không thể gán bằng cách này"
-#: subst.c:9485
+#: subst.c:9814
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:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "sai thay thế: không có \"“\" đóng trong %s"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "không khớp: %s"
@@ -2030,35 +2081,40 @@ msgstr "cần “)â€"
msgid "`)' expected, found %s"
msgstr "cần “)†nhưng lại nhận được %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: cần toán tử một ngôi"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: cần toán tử hai ngôi"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: cần toán tử một ngôi"
+
+#: test.c:881
msgid "missing `]'"
msgstr "thiếu “]â€"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "lá»—i cú pháp: gặp dấu chấm phẩy “;†bất thÆ°á»ng"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "số thứ tự tín hiệu không hợp lệ"
-#: trap.c:320
+#: trap.c:325
#, fuzzy, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "eval: vượt quá mức độ eval lồng nhau tối đa (%d)"
-#: trap.c:408
+#: trap.c:414
#, 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:412
+#: trap.c:418
#, c-format
msgid ""
"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself"
@@ -2066,90 +2122,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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: tín hiệu sai %d"
-#: variables.c:412
+#: variables.c:421
#, 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:821
+#: variables.c:833
#, 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:2655
+#: variables.c:2674
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:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: không thể gán giá trị cho biến"
-#: variables.c:3453
+#: variables.c:3475
#, 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:4365
+#: variables.c:4404
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:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s có exportstr null"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "sai ký tự %d trong exportstr cho %s"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "không có “=†trong exportstr cho %s"
-#: variables.c:5243
+#: variables.c:5331
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:5256
+#: variables.c:5344
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:5336
+#: variables.c:5424
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:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: không thể mở như là TẬP-TIN"
-#: variables.c:6277
+#: variables.c:6392
#, 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:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: giá trị so sánh nằm ngoài phạm vi"
#: version.c:46 version2.c:46
#, fuzzy
-msgid "Copyright (C) 2018 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."
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "Tác quyá»n (C) năm 2014 của Tổ chức Quỹ Phần má»m Tá»± do, Inc."
#: version.c:47 version2.c:47
msgid ""
@@ -2237,11 +2293,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] LỆNH [Ä.SỠ…]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [TÊN[=GIÃ-TRỊ] …]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] TÊN[=GIÃ-TRỊ] …"
#: builtins.c:82
@@ -2265,11 +2323,13 @@ msgid "eval [arg ...]"
msgstr "eval [Ä.SỠ…]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts CHUá»–I-TÙY-CHỌN TÊN [Ä.Sá»]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a TÊN] [LỆNH [Äá»I-SỠ…]] [CHUYỂN-HƯỚNG …]"
#: builtins.c:100
@@ -2399,7 +2459,7 @@ msgstr "umask [-p] [-S] [CHẾ-ÄỘ]"
#: builtins.c:177
#, fuzzy
-msgid "wait [-fn] [id ...]"
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-n] [id …]"
#: builtins.c:181
@@ -2494,7 +2554,7 @@ msgstr "printf [-v BIẾN] ÄỊNH-DẠNG [CÃC-Äá»I-Sá»]"
#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DE] [-o TÙY-CHỌN] [-A HÀNH-ÄỘNG] [-G MẪU-"
@@ -2502,9 +2562,10 @@ msgstr ""
"HẬU-Tá»] [TÊN …]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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Ừ]"
@@ -2940,6 +3001,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -3001,7 +3064,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ khi Ä‘Æ°a ra tùy chá»n sai hoặc gặp lá»—i khi gán biến."
-#: builtins.c:530
+#: builtins.c:532
#, fuzzy
msgid ""
"Set variable values and attributes.\n"
@@ -3012,7 +3075,7 @@ msgstr ""
"\n"
" Lệnh này đã lạc hậu. Xem “help declareâ€."
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3038,7 +3101,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:555
+#: builtins.c:557
#, fuzzy
msgid ""
"Write arguments to the standard output.\n"
@@ -3106,7 +3169,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:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3128,7 +3191,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:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3178,7 +3241,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ khi TÊN không phải lệnh tích hợp hoặc gặp lỗi."
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3197,7 +3260,8 @@ 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:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3230,8 +3294,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3273,7 +3337,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:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3313,7 +3377,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ khi không tìm được LỆNH hoặc gặp lỗi chuyển hướng."
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3325,7 +3389,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:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3338,7 +3402,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:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3390,7 +3454,7 @@ msgstr ""
" Trả lại thành công hay trạng thái của câu lệnh được thực thi; gặp\n"
" lỗi thì khác số không."
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3411,7 +3475,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:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3434,7 +3498,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:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3478,7 +3542,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu tìm được TÊN và không Ä‘Æ°a ra tùy chá»n sai."
-#: builtins.c:816
+#: builtins.c:818
#, fuzzy
msgid ""
"Display information about builtin commands.\n"
@@ -3518,7 +3582,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu tìm được MẪU và không Ä‘Æ°a ra tùy chá»n sai."
-#: builtins.c:840
+#: builtins.c:842
#, fuzzy
msgid ""
"Display or manipulate the history list.\n"
@@ -3585,7 +3649,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i."
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3628,7 +3692,7 @@ msgstr ""
" Trả lại thành công nếu không gặp tùy chá»n sai hay gặp lá»—i.\n"
" ÄÆ°a ra “-x†thì trả lại trạng thái thoát của LỆNH."
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3659,7 +3723,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n hay ÄTCV sai."
-#: builtins.c:923
+#: builtins.c:925
#, fuzzy
msgid ""
"Send a signal to a job.\n"
@@ -3701,7 +3765,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:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3785,7 +3849,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:992
+#: builtins.c:994
#, fuzzy
msgid ""
"Read a line from the standard input and split it into fields.\n"
@@ -3880,7 +3944,7 @@ msgstr ""
" Mã trả lại là số không, nếu không gặp kết thúc tập tin, hay chỠquá\n"
" lâu, hoặc Ä‘Æ°a ra bá»™ mô tả tập tin sai làm đối số cho “-uâ€."
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3901,7 +3965,7 @@ msgstr ""
" Trả lại N, hoặc bị lỗi nếu hệ vỠkhông đang chạy một hàm hay văn\n"
" lệnh."
-#: builtins.c:1052
+#: builtins.c:1054
#, fuzzy
msgid ""
"Set or unset values of shell options and positional parameters.\n"
@@ -4074,7 +4138,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:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4113,7 +4177,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN chỉ-Ä‘á»c."
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4146,7 +4210,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n hay TÊN sai,"
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4184,7 +4248,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu không Ä‘Æ°a ra tùy chá»n sai hay TÊN không hợp lệ."
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4202,7 +4266,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công trừ khi N âm hay lớn hơn $#."
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4225,7 +4289,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:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4250,7 +4314,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:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4409,7 +4473,7 @@ msgstr ""
" Trả lại thành công nếu BTHỨC định giá là Äúng; không thành công\n"
" nếu BTHỨC định giá thành Sai hay đối số được chỉ ra sai."
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4421,7 +4485,7 @@ msgstr ""
" Lệnh này cùng chức năng lệnh tích hợp \"test\", nhưng đối số cuối\n"
" cùng phải là ký tự “]†để khớp với “[†ở đầu."
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4440,7 +4504,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Lúc nào cũng thành công."
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4517,7 +4581,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra ÄTTH sai hay tùy chá»n\n"
" sai."
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4574,7 +4638,8 @@ msgstr ""
" Trả lại thành công nếu tìm thấy tất cả các TÊN; bị lỗi nếu không tìm "
"thấy."
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4605,6 +4670,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4666,7 +4732,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:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4699,7 +4765,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:1499
+#: builtins.c:1502
#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
@@ -4711,15 +4777,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"ChỠcông việc chạy xong và trả vỠtrạng thái thoát.\n"
"\n"
@@ -4737,7 +4813,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:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4761,7 +4837,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:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4784,7 +4860,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:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4814,7 +4890,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:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4848,7 +4924,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:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4877,7 +4953,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:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4895,7 +4971,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:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4930,7 +5006,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:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4949,7 +5025,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:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4968,7 +5044,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:1661
+#: builtins.c:1671
#, fuzzy
msgid ""
"Create a coprocess named NAME.\n"
@@ -4990,7 +5066,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:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -5013,7 +5089,7 @@ msgstr ""
" Trạng thái thoát:\n"
" Trả lại thành công nếu TÊN không phải chỉ Ä‘á»c."
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -5031,7 +5107,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:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -5054,12 +5130,13 @@ 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:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -5072,7 +5149,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:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5121,7 +5198,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:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5225,7 +5302,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:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5279,7 +5356,7 @@ msgstr ""
" Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
" chuyển đổi thư mục."
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5327,7 +5404,7 @@ msgstr ""
" Trả lại thành công nếu không đưa ra đối số sai, cũng không sai\n"
" chuyển đổi thư mục."
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5380,7 +5457,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:1906
+#: builtins.c:1916
#, fuzzy
msgid ""
"Set and unset shell options.\n"
@@ -5417,7 +5494,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:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5434,8 +5511,8 @@ 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"
@@ -5483,7 +5560,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:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5506,7 +5583,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5535,7 +5612,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:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5556,7 +5633,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:2006
+#: builtins.c:2016
#, fuzzy
msgid ""
"Modify or display completion options.\n"
@@ -5615,7 +5692,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:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5688,7 +5765,7 @@ msgstr ""
" Trả lại thành công trừ phi Ä‘Æ°a ra tùy chá»n sai và MẢNG không phải\n"
" chỉ Ä‘á»c hay không là má»™t mảng chỉ số."
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5698,6 +5775,25 @@ msgstr ""
" \n"
" Giống vá»›i “mapfileâ€."
+#, fuzzy
+#~ msgid "Copyright (C) 2019 Free Software Foundation, Inc."
+#~ msgstr "Tác quyá»n (C) năm 2015 của Tổ chức Quỹ Phần má»m Tá»± do, Inc."
+
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "Trả lại ngữ cảnh của cú gá»i thủ tục con hiện thá»i.\n"
+#~ "\n"
+#~ " Nếu không có BTHỨC thì trả vỠ"
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: tiến trình %5ld (%s) trong the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "Tín hiệu lạ #"
+
#~ 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."
@@ -5713,9 +5809,6 @@ msgstr ""
#~ 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"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index 322296c2..9712f241 100644
--- a/po/zh_CN.gmo
+++ b/po/zh_CN.gmo
Binary files differ
diff --git a/po/zh_CN.po b/po/zh_CN.po
index 716fae5c..17b11c32 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -8,7 +8,7 @@
# Mingcong Bai <jeffbai@aosc.xyz>, 2015.
# liushuyu <liushuyu011@gmail.com>, 2016.
# Mingye Wang <arthur200126@gmail.com>, 2015, 2016.
-# Boyuan Yang <073plan@gmail.com>, 2018.
+# Boyuan Yang <073plan@gmail.com>, 2018, 2019.
#
# KNOWN DEFECTS (easy fixes, tedious work; sorted by priority):
# 0. Translation coverage when upstream sends new strings.
@@ -37,90 +37,95 @@
#
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-12-13 13:27-0500\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2019-01-08 15:20-0500\n"
"Last-Translator: Boyuan Yang <073plan@gmail.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_CN\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Poedit 2.2\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "数组下标ä¸æ­£ç¡®"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s:正在移除å称引用属性"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s:无法将索引数组转化为关è”数组"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s:无效的关è”数组键"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s:无法为éžæ•°å­—的索引赋值"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s:%s:为关è”数组赋值时必须使用下标"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s:无法创建: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
msgstr "bash_execute_unix_command: 无法为命令找到键映射"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s:第一个éžç©ºå­—符ä¸æ˜¯â€œ\"â€"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "%2$s 中没有闭åˆçš„“%1$câ€"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s:缺少冒å·åˆ†éš”符"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "“%sâ€: 无法解除绑定"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
msgstr "大括å·å±•å¼€ï¼šæ— æ³•ä¸º %s 分é…内存"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
msgstr "大括å·å±•å¼€ï¼šä¸º %u 个元素分é…内存失败"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
msgstr "大括å·å±•å¼€ï¼šä¸ºâ€œ%sâ€åˆ†é…内存失败"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "“%sâ€: 无效的别å"
@@ -139,23 +144,23 @@ msgstr "“%sâ€: 无效的键映射å"
msgid "%s: cannot read: %s"
msgstr "%s:无法读å–: %s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "“%sâ€: 未知函数å"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
msgstr "%s 未与任何键绑定。\n"
# Blame the source string.
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s å¯ä»¥è¢«è°ƒç”¨ï¼Œé€šè¿‡ "
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
msgstr "“%sâ€: 无法解除绑定"
@@ -169,28 +174,43 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "仅在 `for', `while', 或者`until' 循环中有æ„义"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"返回当å‰å­ä¾‹ç¨‹è°ƒç”¨çš„上下文\n"
+"返回当å‰å­è°ƒç”¨çš„上下文。\n"
+" \n"
+" ä¸å¸¦æœ‰ EXPR 时,返回 \"$line $filename\"。带有 EXPR 时,返回\n"
+" \"$line $subroutine $filename\";这个é¢å¤–çš„ä¿¡æ¯å¯ä»¥è¢«ç”¨äºŽæä¾›\n"
+" 栈追踪。\n"
+" \n"
+" EXPR 的值 显示了到当å‰è°ƒç”¨å¸§éœ€è¦å›žåŽ»å¤šå°‘个调用帧;顶部帧\n"
+" 是第 0 帧。\n"
" \n"
-" ä¸å¸¦ EXPR 时,返回 "
+" 退出状æ€ï¼š\n"
+" é™¤éž shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ª shell 函数或者 EXPR 无效,å¦åˆ™è¿”回结\n"
+" 果为0。"
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
msgstr "HOME 未设定"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
msgstr "å‚数太多"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "空目录"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
msgstr "OLDPWD 未设定"
@@ -209,7 +229,7 @@ msgstr "警告:"
msgid "%s: usage: "
msgstr "%s:用法:"
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
msgstr "%s:选项需è¦ä¸€ä¸ªå‚æ•°"
@@ -224,7 +244,7 @@ msgstr "%s:需è¦æ•°å­—å‚æ•°"
msgid "%s: not found"
msgstr "%s:未找到"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s:无效选项"
@@ -234,7 +254,7 @@ msgstr "%s:无效选项"
msgid "%s: invalid option name"
msgstr "%s:无效的选项å"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "“%sâ€: ä¸æ˜¯æœ‰æ•ˆçš„标识符"
@@ -247,7 +267,7 @@ msgstr "无效的八进制数"
msgid "invalid hex number"
msgstr "无效的å六进制数"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "无效数字"
@@ -323,73 +343,83 @@ msgstr "设定终端属性时出错: %s"
msgid "error getting terminal attributes: %s"
msgstr "获å–终端属性时出错: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
msgstr "%s:获å–当å‰ç›®å½•æ—¶å‡ºé”™: %s:%s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s:模糊的任务声明"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "此版本内帮助ä¸å¯ç”¨"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s:无法å–消设定: åªè¯» %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s:无法å–消设定"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s:无效的动作å"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s:没有补全声明"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
msgstr "警告: -F 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
msgstr "警告: -C 选项å¯èƒ½ä¸åƒæ‚¨é¢„期的那样工作"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
msgstr "当å‰æœªæ‰§è¡Œè¡¥å…¨åŠŸèƒ½"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "åªèƒ½åœ¨å‡½æ•°ä¸­ä½¿ç”¨"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s:引用å˜é‡ä¸èƒ½ä¸ºæ•°ç»„"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s:ä¸å…许å称引用å˜é‡å¼•ç”¨è‡ªèº«"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s:循环å˜é‡å引用"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "“%sâ€: 无效的å称引用å˜é‡å"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
msgstr "无法用 `-f' 生æˆå‡½æ•°"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s:åªè¯»å‡½æ•°"
@@ -404,7 +434,7 @@ msgstr "%s:引å·å†…çš„å¤åˆæ•°ç»„赋值已被弃用"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s:无法以这ç§æ–¹å¼é”€æ¯æ•°ç»„å˜é‡"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s:无法将关è”数组转化为索引数组"
@@ -418,27 +448,32 @@ msgstr "动æ€åŠ è½½ä¸å¯ç”¨"
msgid "cannot open shared object %s: %s"
msgstr "无法打开共享对象 %s:%s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "无法在共享对象 %2$s 中找到 %1$s: %3$s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s:未以动æ€æ–¹å¼åŠ è½½"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "为 %s 载入函数失败 (%d): 未载入"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s:未以动æ€æ–¹å¼åŠ è½½"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s:无法删除: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s:是一个目录"
@@ -453,12 +488,12 @@ msgstr "%s:ä¸æ˜¯å¸¸è§„文件"
msgid "%s: file is too large"
msgstr "%s:文件太大"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s:无法执行二进制文件"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s:无法执行: %s"
@@ -482,15 +517,16 @@ msgstr "有åœæ­¢çš„任务。\n"
msgid "There are running jobs.\n"
msgstr "有è¿è¡Œä¸­çš„任务。\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
msgstr "未找到命令"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "历å²å£°æ˜Ž"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
msgstr "%s:无法打开临时文件: %s"
@@ -518,12 +554,12 @@ 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:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
msgstr "命中\t命令\n"
@@ -533,6 +569,12 @@ msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
msgstr[0] "Shell 命令匹é…关键字“"
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
+
#: builtins/help.def:185
#, c-format
msgid ""
@@ -564,21 +606,21 @@ msgstr ""
"å称æ—边的星å·(*)表示该命令被ç¦ç”¨ã€‚\n"
"\n"
-#: builtins/history.def:154
+#: builtins/history.def:155
msgid "cannot use more than one of -anrw"
msgstr "最多åªèƒ½ä½¿ç”¨ -anrw 选项中的一个"
-#: builtins/history.def:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "历å²ä½ç½®"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s:无效时间戳"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s:历å²æ‰©å±•å¤±è´¥"
@@ -601,7 +643,7 @@ msgstr "%s:å‚数必须是进程或任务 ID"
msgid "Unknown error"
msgstr "未知错误"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "需è¦è¡¨è¾¾å¼"
@@ -610,12 +652,12 @@ msgstr "需è¦è¡¨è¾¾å¼"
msgid "%s: not an indexed array"
msgstr "%s:ä¸æ˜¯ä¸€ä¸ªç´¢å¼•æ•°ç»„"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s:无效的文件æ述符声明"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: 无效的文件æ述符: %s"
@@ -643,36 +685,36 @@ msgstr "空数组å˜é‡å"
msgid "array variable support required"
msgstr "需è¦æ•°ç»„å˜é‡æ”¯æŒ"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "“%sâ€: 缺少格å¼å­—符"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "“%câ€ï¼šæ— æ•ˆçš„时间格å¼å£°æ˜Ž"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "“%câ€ï¼šæ— æ•ˆæ ¼å¼å­—符"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "警告: %s:%s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "æ ¼å¼è§£æžé—®é¢˜: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "使用了 \\x 但缺少å六进制ä½"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "使用了 \\%c 但缺少 unicode 数"
@@ -824,12 +866,12 @@ msgstr ""
" \n"
" `dirs' 内建å˜é‡æ˜¾ç¤ºç›®å½•æ ˆã€‚"
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s:无效的超时声明"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "读错误: %d: %s"
@@ -838,21 +880,11 @@ msgstr "读错误: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "åªèƒ½ä»Žå‡½æ•°æˆ–者æºè„šæœ¬è¿”回(`return')"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "无法åŒæ—¶å–消设定一个函数和一个å˜é‡"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s:无法å–消设定"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s:无法å–消设定: åªè¯» %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s:ä¸æ˜¯æ•°ç»„å˜é‡"
@@ -867,7 +899,7 @@ msgstr "%s:ä¸æ˜¯å‡½æ•°"
msgid "%s: cannot export"
msgstr "%s:无法导出"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "ä½ç§»è®¡æ•°"
@@ -875,7 +907,7 @@ msgstr "ä½ç§»è®¡æ•°"
msgid "cannot set and unset shell options simultaneously"
msgstr "无法åŒæ—¶è®¾å®šå’Œå–消设定 shell 选项"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s:无效的 shell 选项å"
@@ -932,26 +964,26 @@ msgstr "%s 是 %s\n"
msgid "%s is hashed (%s)\n"
msgstr "%s 已被录入哈希表 (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
msgstr "%s:无效的 limit å‚æ•°"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
msgstr "“%câ€ï¼šå‘½ä»¤é”™è¯¯"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%sï¼šæ— æ³•èŽ·å– limit 值: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s:无法修改 limit 值: %s"
@@ -1011,76 +1043,75 @@ msgstr "错误的跳转"
msgid "%s: unbound variable"
msgstr "%s:未绑定的å˜é‡"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\a 等待输入超时:自动注销\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "无法从 /dev/null é‡å®šå‘标准输入: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "时间格å¼: `%c': 无效的格å¼å­—符"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc: 副进程 [%d:%s] ä»ç„¶å­˜åœ¨"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "管é“错误"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval: 超出最大 eval 嵌套层数 (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s:超出最大 source 嵌套层数 (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s:超出最大函数嵌套层数 (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
msgstr "%s:å—é™çš„: 无法在命令å中使用 `/'"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
msgstr "%s:未找到命令"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s:%s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s:%s:解释器错误"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s:无法执行二进制文件: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "“%sâ€: 特殊内建"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "无法å¤åˆ¶æ–‡ä»¶æ述符 %d 到文件æ述符 %d"
@@ -1105,61 +1136,66 @@ msgstr "å°è¯•ç»™éžå˜é‡èµ‹å€¼"
msgid "syntax error in variable assignment"
msgstr "å˜é‡èµ‹å€¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "除以 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "错误:表达å¼èµ‹å€¼ç¬¦å·é”™è¯¯"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼éœ€è¦ `:'"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "指数å°äºŽ 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
msgstr "预增符或预å‡ç¬¦åŽåº”跟有标识符"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "缺少“)â€"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "语法错误: 需è¦æ“作数"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "语法错误: 无效的算术è¿ç®—符"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s:%s (错误符å·æ˜¯ \"%s\")"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "无效的算术进制"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s:无效的行数"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "数值太大ä¸å¯ä¸ºç®—术进制的基"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s:表达å¼é”™è¯¯\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
msgstr "getcwd: 无法访问父目录"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
msgstr "无法为文件æ述符 %d é‡ç½®nodelay模å¼"
@@ -1174,161 +1210,171 @@ msgstr "无法从文件æ述符 %d 为 bash 的输入获å–一个新的文件æ
msgid "save_bash_input: buffer already exists for new fd %d"
msgstr "save_bash_input: å·²ç»å­˜åœ¨æ–°çš„文件æ述符 %d 的缓冲区"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: 进程组管é“"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
msgstr "å‰åˆ† (fork) å‡ºçš„çš„è¿›ç¨‹å· %d 出现在è¿è¡Œä¸­çš„任务 %d 中"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "删除进程组 %2$ld 中已åœæ­¢çš„任务 %1$d"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
msgstr "add_process: è¿›ç¨‹å· %5ld(%s) 标注为ä»æ´»ç€"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
msgstr "describe_pid: %ld: 无此进程å·"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "ä¿¡å· %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "已完æˆ"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
msgstr "å·²åœæ­¢"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "å·²åœæ­¢(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "è¿è¡Œä¸­"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "已完æˆ(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "退出 %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "未知状æ€"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(核心已转储)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (工作目录: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "å­è¿›ç¨‹ setpgid (%ld 到 %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
msgstr "wait: è¿›ç¨‹å· %ld ä¸æ˜¯å½“å‰ shell çš„å­è¿›ç¨‹"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
msgstr "wiat_for: 没有进程 %ld 的记录"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: 任务 %d å·²åœæ­¢"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s:无此任务"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s:任务已ç»ç»ˆæ­¢"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s:任务 %d 已在åŽå°"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: 打开 WNOHANG 以é¿å…æ— é™é˜»å¡ž"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s:行 %d: "
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (核心已转储)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
msgstr "(当å‰å·¥ä½œç›®å½•ï¼š%s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp 失败"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control: åŽå°æ— ä»»åŠ¡æŽ§åˆ¶"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: 行规则"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "无法设定终端进程组(%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "此 shell 中无任务控制"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: 断言失败: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1337,39 +1383,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d:断言已修补\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "未知"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: 空闲链表中的å—æŸå"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
msgstr "free:调用时用了已ç»é‡Šæ”¾çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
msgstr "free: 调用时用了未分é…çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: 检测到下溢;mh_nbytes 越界"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: 检测到下溢;mh_nbytes 越界"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: 其实和末尾å—大å°ä¸ä¸€è‡´"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
msgstr "realloc:调用时用了未分é…çš„å—作为å‚æ•°"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: 检测到下溢;mh_nbytes 越界"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: 检测到下溢;mh_nbytes 越界"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 其实和末尾å—大å°ä¸ä¸€è‡´"
@@ -1411,22 +1467,22 @@ msgstr "%s:错误的网络路径声明"
msgid "network operations not supported"
msgstr "ä¸æ”¯æŒç½‘络æ“作"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale:LC_ALL:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale:%s:无法改å˜åŒºåŸŸé€‰é¡¹ (%s):%s"
@@ -1472,110 +1528,110 @@ msgstr "ç«‹å³æ–‡æ¡£åœ¨ç¬¬ %d 行被文件结æŸç¬¦åˆ†éš” (需è¦â€œ%sâ€)"
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection:é‡å®šå‘指令“%dâ€è¶Šç•Œ"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr "shell_getc:shell_input_line_size (%zu) 超过 SIZE_MAX (%lu):行被截断"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "超出最大立å³æ–‡æ¡£æ•°é‡"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
msgstr "寻找匹é…的“%câ€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "寻找“]]â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•é”™è¯¯ï¼šæœªé¢„期的符å·â€œ%sâ€"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "æ¡ä»¶è¡¨è¾¾å¼ä¸­æœ‰è¯­æ³•é”™è¯¯"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "未预期的符å·â€œ%s†,需è¦â€œ)â€"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "需è¦â€œ)â€"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
msgstr "一元æ¡ä»¶è¿ç®—符使用了未预期的å‚数“%sâ€"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
msgstr "一元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•°"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "未预期的符å·â€œ%sâ€ï¼Œéœ€è¦äºŒå…ƒæ¡ä»¶è¿ç®—符"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "需è¦äºŒå…ƒæ¡ä»¶è¿ç®—符"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
msgstr "二元æ¡ä»¶è¿ç®—符使用了未预期的å‚数“%sâ€"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
msgstr "二元æ¡ä»¶è¿ç®—符使用了未预期的å‚æ•°"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%câ€"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„期的符å·â€œ%sâ€"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
msgstr "æ¡ä»¶å‘½ä»¤ä¸­æœ‰æœªé¢„æœŸçš„ç¬¦å· %d"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "未预期的符å·â€œ%sâ€é™„近有语法错误"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "“%sâ€é™„近有语法错误"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "语法错误: 未预期的文件结尾"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "语法错误"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
msgstr "使用 \"%s\" 退出 shell 。\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
msgstr "寻找匹é…的“)â€æ—¶é‡åˆ°äº†æœªé¢„期的文件结æŸç¬¦"
@@ -1618,90 +1674,90 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf: `%c': 无效的格å¼å­—符"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "文件æ述符超出范围"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s:模糊的é‡å®šå‘"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s:无法覆盖已存在的文件"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s:å—é™çš„: 无法é‡å®šå‘输出"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
msgstr "无法为立å³æ–‡æ¡£åˆ›å»ºä¸´æ—¶æ–‡ä»¶: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s:无法将文件æ述符赋值给å˜é‡"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "没有网络时ä¸æ”¯æŒ /dev/(tcp|udp)/host/port"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "é‡å®šå‘错误: 无法å¤åˆ¶æ–‡ä»¶æ述符"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
msgstr "无法找到 /tmp ,请创建ï¼"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp 必须为有效的目录å"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "åœ¨äº¤äº’å¼ shell 中将忽略美化输出模å¼"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c: 无效的选项"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "无法将 uid 设为 %d: 有效 uid %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "无法将 gid 设为 %d: 有效 gid %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "无法å¯åŠ¨è°ƒè¯•å™¨ï¼›è°ƒè¯•æ¨¡å¼å·²ç¦ç”¨"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s:是一个目录"
# 这个是查看用户的 /etc/passwd ä¿¡æ¯å¾—到的å字。既然是用户的å字,就å«åšæ— åæ°å§ã€‚(有点想写“红领巾â€æ¥ç€ã€‚)
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "æ— åæ°ï¼"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash,版本 %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1710,327 +1766,323 @@ msgstr ""
"用法:\t%s [GNU 长选项] [选项] ...\n"
"\t%s [GNU 长选项] [选项] 脚本文件 ...\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU 长选项:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Shell 选项:\n"
-#: shell.c:1988
+#: shell.c:2043
msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n"
msgstr "\t-irsD 或 -c <命令> 或 -O <shopt 选项>\t\t(仅适åˆè°ƒç”¨)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s 或 -o <选项>\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "请输入`%s -c \"help set\"' 以获得关于 shell 选项的更多信æ¯\n"
-#: shell.c:2014
+#: shell.c:2069
#, c-format
msgid "Type `%s -c help' for more information about shell builtin commands.\n"
msgstr "请输入 `%s -c help' 以获得关于 shell 内建命令的更多信æ¯.\n"
# 写如何报告程åºé”™è¯¯çš„地方应该æ到如何报告翻译问题。
-#: shell.c:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
msgstr ""
"请使用“bashbugâ€å‘½ä»¤æ¥æŠ¥å‘Šç¨‹åºé”™è¯¯ã€‚\n"
"请将翻译错误报告到 <i18n-zh@googlegroups.com>。\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash 首页:<http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "使用 GNU 软件的通用帮助:<http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
msgstr "sigprocmask: %d: 无效的æ“作"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "伪信å·"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
msgstr "挂断"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
msgstr "中断"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
msgstr "退出"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
msgstr "éžæ³•çš„指令"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "断点追踪/陷阱"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "放弃指令"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "模拟器陷阱指令"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
msgstr "浮点数异常"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
msgstr "å·²æ€æ­»"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "总线错误"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
msgstr "段错误"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
msgstr "错误的系统调用"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
msgstr "管é“破裂"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "闹钟"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
msgstr "已终止"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "紧急 I/O 状况"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
msgstr "å·²åœæ­¢(ä¿¡å·)"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "继续"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "å­è¿›ç¨‹å·²æ­»æˆ–者åœæ­¢"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
msgstr "å·²åœæ­¢(tty 输入)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
msgstr "å·²åœæ­¢(tty 输出)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O 就绪"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU é™åˆ¶"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "文件é™åˆ¶"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "报警(虚拟)"
# Personally I treat this as something coming from alarm() by a profiler.
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "报警(分æž)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
msgstr "窗å£å·²æ”¹å˜"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "记录é”"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "用户信å·1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "用户信å·2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT 待输入数æ®"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "å³å°†åœç”µ"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "系统å³å°†å´©æºƒ"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "è¿ç§»è¿›ç¨‹è‡³å¦ä¸€ä¸ª CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "编程错误"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "已授予 HFT 监视模å¼"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
msgstr "已撤销 HFT 监视模å¼"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "å·²å®Œæˆ HFT 声音åºåˆ—"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "ä¿¡æ¯è¯·æ±‚"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "æœªçŸ¥ä¿¡å· #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "æœªçŸ¥ä¿¡å· #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
msgstr "错误的替æ¢: 在 %2$s 中没有闭åˆçš„ `%1$s'"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s:无法将链表赋值给数组æˆå‘˜"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
msgstr "无法为进程替æ¢åˆ›å»ºç®¡é“"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
msgstr "无法为进程替æ¢åˆ›å»ºå­è¿›ç¨‹"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "无法打开命åç®¡é“ %s 以读å–"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "无法打开命åç®¡é“ %s 进行写入"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "无法将命åç®¡é“ %s 作为文件æ述符 %d å¤åˆ¶"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
msgstr "命令替æ¢ï¼šå¿½ç•¥è¾“入中的 null 字节"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
msgstr "无法为命令替æ¢åˆ›å»ºç®¡é“"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
msgstr "无法为命令替æ¢åˆ›å»ºå­è¿›ç¨‹"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: 无法将管é“å¤åˆ¶ä¸ºæ–‡ä»¶æ述符 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s:无效的引用å˜é‡å"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
msgstr "%s:无效的间接展开"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s:无效的å˜é‡å"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s:å‚数未设置"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s:å‚数为空或未设置"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s:å­ä¸²è¡¨è¾¾å¼ < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
msgstr "%s:错误的替æ¢"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s:无法这样赋值"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
msgstr "未æ¥ç‰ˆæœ¬çš„ shell 会强制估值为算术替æ¢"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
msgstr "错误的替æ¢: 在 %s 中没有闭åˆçš„ \"`\""
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
msgstr "无匹é…: %s"
@@ -2053,119 +2105,124 @@ msgstr "需è¦â€œ)â€"
msgid "`)' expected, found %s"
msgstr "需è¦â€œ)â€ï¼Œå´æ‰¾åˆ° %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s:需è¦ä¸€å…ƒè¡¨è¾¾å¼"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s:需è¦äºŒå…ƒè¡¨è¾¾å¼"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s:需è¦ä¸€å…ƒè¡¨è¾¾å¼"
+
+#: test.c:881
msgid "missing `]'"
msgstr "缺少 `]'"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "è¯­æ³•é”™è¯¯ï¼šéœ€è¦ `;'"
+
+#: trap.c:220
msgid "invalid signal number"
msgstr "无效的信å·æ•°"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "trap handler: 超出最大的 trap handler 层次 (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d] 中的错误值: %p"
-#: trap.c:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
msgstr "trap_handler: é”™è¯¯çš„ä¿¡å· %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "“%sâ€å‡½æ•°å®šä¹‰å¯¼å…¥é”™è¯¯"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
msgstr "shell 层次 (%d) 太高,é‡ç½®ä¸º 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
msgstr "make_local_variable: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s:å˜é‡ä¸å¯èµ‹å€¼"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s:将整数赋值给å称引用"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
msgstr "all_local_variables: 当å‰ä½œç”¨åŸŸä¸­æ²¡æœ‰å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s 的 exportstr 为空"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s 的 exportstr 中有无效的字符 %1$d"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s çš„ exportstr 中没有“=â€"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables 的头部ä¸æ˜¯å‡½æ•°ä¸Šä¸‹æ–‡"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: 没有 global_variables 上下文"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables 的头部ä¸æ˜¯ä¸´æ—¶çŽ¯å¢ƒä½œç”¨åŸŸ"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s:%s:无法作为文件打开"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s:%s:追踪文件æ述符的值无效"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s:%s:兼容版本数值越界"
-# Inc. 的 . 是个缩写
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
-msgstr "版æƒæ‰€æœ‰ (C) 2018 自由软件基金会"
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
+msgstr "版æƒæ‰€æœ‰ (C) 2013 自由软件基金会."
#: version.c:47 version2.c:47
msgid ""
@@ -2253,11 +2310,13 @@ msgid "command [-pVv] command [arg ...]"
msgstr "command [-pVv] 命令 [å‚æ•° ...]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [å称[=值] ...]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] å称[=值] ..."
#: builtins.c:82
@@ -2281,11 +2340,13 @@ msgid "eval [arg ...]"
msgstr "eval [å‚æ•° ...]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
msgstr "getopts 选项字符串 å称 [å‚æ•°]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
msgstr "exec [-cl] [-a å称] [命令 [å‚æ•° ...]] [é‡å®šå‘ ...]"
#: builtins.c:100
@@ -2413,7 +2474,8 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [模å¼]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [ç¼–å· ...]"
#: builtins.c:181
@@ -2503,18 +2565,20 @@ msgid "printf [-v var] format [arguments]"
msgstr "printf [-v var] æ ¼å¼ [å‚æ•°]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o 选项] [-A 动作] [-G 全局模å¼] [-W "
"è¯è¯­åˆ—表] [-F 函数] [-C 命令] [-X 过滤模å¼] [-P å‰ç¼€] [-S åŽç¼€] [å称 ...]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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 åŽç¼€] [è¯è¯­]"
@@ -2920,6 +2984,7 @@ msgstr ""
" 返回 COMMAND 命令的返回状æ€ï¼Œæˆ–者当找ä¸åˆ° COMMAND 命令时失败。"
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2932,6 +2997,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2991,7 +3058,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžæ供了无效选项或者å‘生å˜é‡èµ‹å€¼é”™è¯¯ã€‚"
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -3001,7 +3068,7 @@ msgstr ""
" \n"
" `declare' 的等价形å¼ã€‚å‚è§ `help declare'。"
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -3027,8 +3094,7 @@ msgstr ""
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项ã€å‘生了赋值错误或者 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½"
"数。"
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3077,7 +3143,7 @@ msgstr ""
" -E\t显å¼åœ°æŠ‘制对于åæ–œæ è½¬ä¹‰çš„解释\n"
" \n"
" `echo' 对下列åæ–œæ å­—符进行转义:\n"
-" \\a\t警告(å“铃)\n"
+" \a\t警告(å“铃)\n"
" \\b\t退格\n"
" \\c\t抑制更多的输出\n"
" \\e\t转义字符\n"
@@ -3087,14 +3153,19 @@ msgstr ""
" \\t\t横å‘制表符\n"
" \\v\t纵å‘制表符\n"
" \\\\\tåæ–œæ \n"
-" \\0nnn\t以 NNN (八进制)为 ASCII ç çš„字符。 NNN å¯ä»¥æ˜¯ 0 到 3 个八进制"
+" \\0nnn\t以 NNN(八进制)为 ASCII ç çš„字符。NNN å¯ä»¥æ˜¯ 0 到 3 个八进制"
+"ä½\n"
+" \\xHH\t以 HH(å六进制)为值的八比特字符。HH å¯ä»¥æ˜¯ä¸€ä¸ªæˆ–两个å六进制"
"ä½\n"
-" \\xHH\t以 HH (å六进制)为值的八按ä½å­—符。HHå¯ä»¥æ˜¯ä¸€ä¸ªæˆ–两个å六进制ä½\n"
+" \\uHHHH\t以 HHHH(å六进制)为值的 Unicode 字符。HHHH å¯ä»¥æ˜¯ä¸€ä¸ªåˆ°\n"
+" \t\t四个å六进制ä½ã€‚\n"
+" \\UHHHHHHHH 以 HHHHHHHH(å六进制)为值的 Unicode 字符。\n"
+" \t\tHHHHHHHH å¯ä»¥æ˜¯ä¸€åˆ°å…«ä¸ªå六进制ä½ã€‚\n"
" \n"
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éžæœ‰å†™é”™è¯¯å‘生。"
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3116,7 +3187,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 除éžå†™é”™è¯¯å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚"
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3166,7 +3237,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éž NAME ä¸æ˜¯ä¸€ä¸ª shell 内建或者有错误å‘生。"
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3185,7 +3256,8 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 以命令的状æ€é€€å‡ºï¼Œæˆ–者在命令为空的情况下返回æˆåŠŸã€‚"
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3218,8 +3290,8 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, they are parsed instead.\n"
" \n"
" Exit Status:\n"
" Returns success if an option is found; fails if the end of options is\n"
@@ -3263,7 +3335,7 @@ msgstr ""
" 如果一个选项被找到则返回æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é€‰é¡¹çš„结尾或者\n"
" 有错误å‘生则返回失败。"
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3302,7 +3374,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éž COMMAND 命令没有找到或者出现一个é‡å®šå‘错误。"
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3314,7 +3386,7 @@ msgstr ""
" ä»¥çŠ¶æ€ N 退出 shell。 如果 N 被çœç•¥ï¼Œåˆ™é€€å‡ºçŠ¶æ€\n"
" 为最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的退出状æ€ã€‚"
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3327,7 +3399,7 @@ msgstr ""
" ä»¥çŠ¶æ€ N 退出一个登录 shell。如果ä¸åœ¨ç™»å½• shell 中执行,则\n"
" 返回一个错误。"
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3380,7 +3452,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œæˆ–者执行的命令的状æ€ï¼›å¦‚果错误å‘生则返回éžé›¶ã€‚"
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3400,7 +3472,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 放至å‰å°çš„命令状æ€ï¼Œæˆ–者当错误å‘生时为失败。"
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3422,7 +3494,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éžä»»åŠ¡ç®¡ç†æ²¡æœ‰å¯ç”¨æˆ–者错误å‘生。"
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3466,7 +3538,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éž NAME 命令没有找到或者使用了无效的选项。"
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3505,7 +3577,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžæœªæ‰¾åˆ° PATTERN 模å¼æ²¡æœ‰æ‰¾åˆ°æˆ–者使用了无效选项。"
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3568,7 +3640,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。"
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3610,7 +3682,7 @@ msgstr ""
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。\n"
" 如果使用 -x 选项,则返回 COMMAND 命令的退出状æ€ã€‚"
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3640,7 +3712,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 JOBSPEC 声明。"
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3680,7 +3752,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者有错误å‘生。"
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3762,7 +3834,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 如果最åŽä¸€ä¸ª ARG å‚数估值为 0,则 let 返回 1ï¼› å¦åˆ™ let 返回 0。"
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3851,7 +3923,7 @@ msgstr ""
" 返回ç ä¸ºé›¶ï¼Œé™¤éžé‡åˆ°äº†æ–‡ä»¶ç»“æŸç¬¦ã€è¯»è¶…时(且返回ç ä¸å¤§äºŽ128)ã€\n"
" 出现了å˜é‡èµ‹å€¼é”™è¯¯æˆ–者无效的文件æ述符作为å‚数传递给了 -u 选项。"
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3871,7 +3943,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回 N,或者如果 shell ä¸åœ¨æ‰§è¡Œä¸€ä¸ªå‡½æ•°æˆ–引用脚本时,失败。"
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -4035,7 +4107,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数。"
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4073,7 +4145,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称为åªè¯»ã€‚"
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4106,7 +4178,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。"
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4142,7 +4214,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称。"
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4160,7 +4232,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éž N 为负或者大于 $#。"
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4182,7 +4254,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回 FILENAME 文件中最åŽä¸€ä¸ªå‘½ä»¤çš„状æ€ï¼›å¦‚æžœ FILENAME 文件ä¸å¯è¯»åˆ™å¤±è´¥ã€‚"
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4206,7 +4278,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžæ²¡æœ‰å¯ç”¨ä»»åŠ¡æŽ§åˆ¶æˆ–者有错误å‘生。"
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4360,7 +4432,7 @@ msgstr ""
" 如果 EXPR 表达å¼ä¼°å€¼ä¸ºçœŸåˆ™è¿”回æˆåŠŸï¼›å¦‚æžœ EXPR 表达å¼ä¼°å€¼\n"
" 为å‡æˆ–者使用了无效的å‚数则返回失败。"
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4372,7 +4444,7 @@ msgstr ""
" 是内建命令 \"test\" çš„åŒä¹‰è¯ï¼Œä½†æ˜¯æœ€åŽä¸€ä¸ªå‚数必须是\n"
" 字符 `]',以匹é…起始的 `['。"
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4393,7 +4465,7 @@ msgstr ""
# EXIT and DEBUG should be as-is. Use before you translate, please.
# The -signal is only an example; Read carefully.
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4464,7 +4536,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 SIGSPEC。"
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4516,7 +4588,8 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 如果所有的 NAME 命令都找到则返回æˆåŠŸï¼›ä»»ä½•ä¸€ä¸ªæ‰¾ä¸åˆ°åˆ™å¤±è´¥ã€‚"
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4547,6 +4620,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4606,7 +4680,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。"
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4638,7 +4712,8 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„ MODE 模å¼æˆ–者选项。"
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4649,15 +4724,25 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"等待任务完æˆå¹¶è¿”回退出状æ€ã€‚\n"
" \n"
@@ -4673,7 +4758,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ª ID 进程的状æ€ï¼›å¦‚果使用了无效的 ID 或者选项则失败。"
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4695,7 +4780,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回进程 ID 的状æ€ï¼›å¦‚æžœ PID 是无效的进程å·æˆ–者指定了无效的选项则失败。"
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4716,7 +4801,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4746,7 +4831,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4779,7 +4864,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4807,7 +4892,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回状æ€å³PIPELINE 的返回状æ€ã€‚"
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4825,7 +4910,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4856,7 +4941,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4874,7 +4959,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4892,7 +4977,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4914,7 +4999,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" å‰¯è¿›ç¨‹ä¼šè¿”å›žé€€å‡ºçŠ¶æ€ 0。"
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4937,7 +5022,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸé™¤éž NAME 为åªè¯»ã€‚"
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4955,7 +5040,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回最åŽä¸€ä¸ªæ‰§è¡Œçš„命令的状æ€ã€‚"
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4979,12 +5064,13 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回被继续的任务的状æ€ã€‚"
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4997,7 +5083,7 @@ msgstr ""
" 退出状æ€\n"
" 如果表达å¼ä¼°å€¼ä¸º0则返回 1ï¼›å¦åˆ™è¿”回0。"
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -5045,7 +5131,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" æ ¹æ® EXPRESSION 的值为0或1。"
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5140,7 +5226,7 @@ msgstr ""
" HISTIGNORE\t用于决定哪些命令被存入历å²æ–‡ä»¶çš„模å¼\n"
" \t\t列表,以冒å·åˆ†éš”。\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5193,7 +5279,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数或者目录转æ¢å¤±è´¥ã€‚"
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5240,7 +5326,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„å‚数或者目录å˜æ¢å¤±è´¥ã€‚"
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5289,7 +5375,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者å‘生错误。"
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5325,7 +5411,7 @@ msgstr ""
" 如果 OPTNAME 选项被å¯ç”¨åˆ™è¿”回æˆåŠŸï¼›å¦‚果是\n"
" 无效的选项或 OPTNAME 被ç¦ç”¨åˆ™å¤±è´¥ã€‚"
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5342,8 +5428,8 @@ 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"
@@ -5381,7 +5467,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者写或赋值错误å‘生。"
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5404,7 +5490,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5432,7 +5518,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者错误å‘生。"
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5453,7 +5539,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 除éžä½¿ç”¨äº†æ— æ•ˆé€‰é¡¹æˆ–者错误å‘生,å¦åˆ™è¿”回æˆåŠŸã€‚"
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5507,7 +5593,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项或者 NAME å称没有定义补全声明。"
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5574,7 +5660,7 @@ msgstr ""
" 退出状æ€ï¼š\n"
" 返回æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†æ— æ•ˆçš„选项,或者 ARRAY å˜é‡åªè¯»æˆ–ä¸æ˜¯ä¸‹æ ‡æ•°ç»„。"
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5584,12 +5670,28 @@ msgstr ""
" \n"
" 一个 `mapfile'çš„åŒä¹‰è¯ã€‚"
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "返回当å‰å­ä¾‹ç¨‹è°ƒç”¨çš„上下文\n"
+#~ " \n"
+#~ " ä¸å¸¦ EXPR 时,返回 "
+
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: 进程 %5ld(%s) 进入 the_pipeline"
+
+#~ msgid "Unknown Signal #"
+#~ msgstr "æœªçŸ¥ä¿¡å· #"
+
+# Inc. 的 . 是个缩写
+#~ msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#~ msgstr "版æƒæ‰€æœ‰ (C) 2018 自由软件基金会"
+
#~ msgid "Copyright (C) 2014 Free Software Foundation, Inc."
#~ msgstr "版æƒæ‰€æœ‰ (C) 2014 自由软件基金会."
-#~ 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 79a6a4aa..f566ab31 100644
--- a/po/zh_TW.gmo
+++ b/po/zh_TW.gmo
Binary files differ
diff --git a/po/zh_TW.po b/po/zh_TW.po
index e83e8735..457e876a 100644
--- a/po/zh_TW.po
+++ b/po/zh_TW.po
@@ -1,97 +1,102 @@
# Traditional Chinese translations for bash package.
-# Copyright (C) 2008 Free Software Foundation, Inc.
+# Copyright (C) 2019 Free Software Foundation, Inc.
# This file is distributed under the same license as the bash package.
#
# Zi-You Dai <ioppooster@gmail.com>, 2008.
# Mingye Wang (Arthur2e5) <arthur200126@hotmail.com>, 2015.
# Wei-Lun Chao <bluebat@member.fsf.org>, 2015.
-# pan93412 <pan93412@gmail.com>, 2018.
+# pan93412 <pan93412@gmail.com>, 2018, 2019.
msgid ""
msgstr ""
-"Project-Id-Version: bash 5.0-beta2\n"
+"Project-Id-Version: bash 5.0\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-12-19 15:52-0500\n"
-"PO-Revision-Date: 2018-11-29 20:02+0800\n"
+"POT-Creation-Date: 2020-11-28 12:51-0500\n"
+"PO-Revision-Date: 2020-01-19 00:50+0800\n"
"Last-Translator: pan93412 <pan93412@gmail.com>\n"
-"Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
+"Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n"
+"Language: zh_TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Language: zh_TW\n"
"X-Bugs: Report translation errors to the Language-Team address.\n"
"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Manual Edit && Poedit 2.0.2\n"
+"X-Generator: Lokalize 19.04.3\n"
-#: arrayfunc.c:58
+#: arrayfunc.c:66
msgid "bad array subscript"
msgstr "陣列下標ä¸æ­£ç¢º"
-#: arrayfunc.c:377 builtins/declare.def:638 variables.c:2254 variables.c:2280
-#: variables.c:3108
+#: arrayfunc.c:421 builtins/declare.def:638 variables.c:2274 variables.c:2300
+#: variables.c:3133
#, c-format
msgid "%s: removing nameref attribute"
msgstr "%s:正在移除 nameref 屬性"
-#: arrayfunc.c:402 builtins/declare.def:851
+#: arrayfunc.c:446 builtins/declare.def:851
#, c-format
msgid "%s: cannot convert indexed to associative array"
msgstr "%s: 無法將索引陣列轉化為關è¯é™£åˆ—"
-#: arrayfunc.c:586
+#: arrayfunc.c:700
#, c-format
msgid "%s: invalid associative array key"
msgstr "%s: 無效的關è¯é™£åˆ—éµå€¼"
-#: arrayfunc.c:588
+#: arrayfunc.c:702
#, c-format
msgid "%s: cannot assign to non-numeric index"
msgstr "%s: 無法指派為éžæ•¸å­—的索引"
-#: arrayfunc.c:633
+#: arrayfunc.c:747
#, c-format
msgid "%s: %s: must use subscript when assigning associative array"
msgstr "%s: %s: 指派為關è¯é™£åˆ—時必須使用下標"
-#: bashhist.c:451
+#: bashhist.c:452
#, c-format
msgid "%s: cannot create: %s"
msgstr "%s: 無法建立: %s"
-#: bashline.c:4144
+#: bashline.c:4310
msgid "bash_execute_unix_command: cannot find keymap for command"
-msgstr "bash_execute_unix_command: 無法為命令找到éµå°æ˜ "
+msgstr "bash_execute_unix_command: 無法為指令找到按éµæ˜ å°„"
-#: bashline.c:4254
+#: bashline.c:4459
#, c-format
msgid "%s: first non-whitespace character is not `\"'"
msgstr "%s: 第一個éžç©ºå­—å…ƒä¸æ˜¯ã€Œ\"ã€"
-#: bashline.c:4283
+#: bashline.c:4488
#, c-format
msgid "no closing `%c' in %s"
msgstr "%2$s 中沒有閉åˆçš„「%1$cã€"
-#: bashline.c:4317
+#: bashline.c:4519
#, c-format
msgid "%s: missing colon separator"
msgstr "%s: 缺少冒號分隔符"
-#: braces.c:331
+#: bashline.c:4555
+#, fuzzy, c-format
+msgid "`%s': cannot unbind in command keymap"
+msgstr "「%sã€: 無法解除ç¶å®š"
+
+#: braces.c:327
#, c-format
msgid "brace expansion: cannot allocate memory for %s"
-msgstr "大括號展開: 無法為 %s 分é…記憶體"
+msgstr "大括號展開:無法為 %s 分é…記憶體"
-#: braces.c:429
+#: braces.c:406
#, c-format
msgid "brace expansion: failed to allocate memory for %u elements"
-msgstr "大括號展開: 為 %u 個元素分é…記憶體失敗"
+msgstr "大括號展開:為 %u 個元素分é…記憶體失敗"
-#: braces.c:474
+#: braces.c:451
#, c-format
msgid "brace expansion: failed to allocate memory for `%s'"
-msgstr "大括號展開: 為「%sã€åˆ†é…記憶體失敗"
+msgstr "大括號展開:為「%sã€åˆ†é…記憶體失敗"
-#: builtins/alias.def:131 variables.c:1842
+#: builtins/alias.def:131 variables.c:1844
#, c-format
msgid "`%s': invalid alias name"
msgstr "「%sã€: 無效的別å"
@@ -103,32 +108,32 @@ msgstr "未啟用列編輯"
#: builtins/bind.def:212
#, c-format
msgid "`%s': invalid keymap name"
-msgstr "「%sã€: 無效的éµå°æ˜ å"
+msgstr "「%sã€: 無效的按éµæ˜ å°„å"
#: builtins/bind.def:252
#, c-format
msgid "%s: cannot read: %s"
-msgstr "%s:ä¸èƒ½è®€å–: %s"
+msgstr "%s:ä¸èƒ½è®€å–:%s"
-#: builtins/bind.def:304 builtins/bind.def:334
+#: builtins/bind.def:328 builtins/bind.def:358
#, c-format
msgid "`%s': unknown function name"
msgstr "「%sã€ï¼šä¸æ˜Žå‡½æ•¸å稱"
-#: builtins/bind.def:312
+#: builtins/bind.def:336
#, c-format
msgid "%s is not bound to any keys.\n"
-msgstr "%s 未與任何éµç¹«çµã€‚\n"
+msgstr "%s 未與任何按éµç¶å®šã€‚\n"
-#: builtins/bind.def:316
+#: builtins/bind.def:340
#, c-format
msgid "%s can be invoked via "
msgstr "%s å¯ä»¥è¢«å‘¼å«ï¼Œè—‰ç”±"
-#: builtins/bind.def:353 builtins/bind.def:368
+#: builtins/bind.def:378 builtins/bind.def:395
#, c-format
msgid "`%s': cannot unbind"
-msgstr "「%sã€: 無法解除繫çµ"
+msgstr "「%sã€: 無法解除ç¶å®š"
#: builtins/break.def:77 builtins/break.def:119
msgid "loop count"
@@ -139,30 +144,45 @@ msgid "only meaningful in a `for', `while', or `until' loop"
msgstr "僅在「forã€ï¼Œã€Œwhileã€ï¼Œ 或者「untilã€è¿´åœˆä¸­æœ‰æ„義"
#: builtins/caller.def:136
+#, fuzzy
msgid ""
"Returns the context of the current subroutine call.\n"
" \n"
-" Without EXPR, returns "
+" 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."
msgstr ""
-"回傳當å‰å­ä¾‹ç¨‹å‘¼å«çš„語境\n"
+"回傳目å‰å­å‘¼å«çš„語境。\n"
" \n"
-" ä¸å¸¶ EXPR 時,回傳"
+" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n"
+" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n"
+" 堆疊追蹤。\n"
+" \n"
+" EXPR 的值顯示了到目å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘個呼å«æ¡†æ ¼ï¼›é ‚部框格\n"
+" 是第 0 框格。\n"
+" \n"
+" 退出狀態:\n"
+" é™¤éž shell ä¸åœ¨åŸ·è¡Œä¸€å€‹ shell 函數或者 EXPR 無效,å¦å‰‡å›žå‚³çµ\n"
+" 果為 0。"
-#: builtins/cd.def:326
+#: builtins/cd.def:327
msgid "HOME not set"
-msgstr "HOME 沒有設置"
+msgstr "未設定 HOME"
-#: builtins/cd.def:334 builtins/common.c:161 test.c:891
+#: builtins/cd.def:335 builtins/common.c:161 test.c:901
msgid "too many arguments"
-msgstr "太多引數"
+msgstr "太多åƒæ•¸"
-#: builtins/cd.def:341
+#: builtins/cd.def:342
msgid "null directory"
msgstr "空的目錄"
-#: builtins/cd.def:352
+#: builtins/cd.def:353
msgid "OLDPWD not set"
-msgstr "OLDPWD 沒有設置"
+msgstr "未設定 OLDPWD"
#: builtins/common.c:96
#, c-format
@@ -177,24 +197,24 @@ msgstr "警告:"
#: builtins/common.c:148
#, c-format
msgid "%s: usage: "
-msgstr "%s: 用法:"
+msgstr "%s:用法:"
-#: builtins/common.c:193 shell.c:510 shell.c:838
+#: builtins/common.c:193 shell.c:516 shell.c:844
#, c-format
msgid "%s: option requires an argument"
-msgstr "%s:é¸é …需è¦ä¸€å€‹å¼•æ•¸"
+msgstr "%s:é¸é …需è¦ä¸€å€‹åƒæ•¸"
#: builtins/common.c:200
#, c-format
msgid "%s: numeric argument required"
-msgstr "%s:需è¦æ•¸å­—引數"
+msgstr "%s:需è¦æ•¸å­—åƒæ•¸"
#: builtins/common.c:207
#, c-format
msgid "%s: not found"
msgstr "%s:沒有找到"
-#: builtins/common.c:216 shell.c:851
+#: builtins/common.c:216 shell.c:857
#, c-format
msgid "%s: invalid option"
msgstr "%s:無效é¸é …"
@@ -204,7 +224,7 @@ msgstr "%s:無效é¸é …"
msgid "%s: invalid option name"
msgstr "%s:無效é¸é …å稱"
-#: builtins/common.c:230 execute_cmd.c:2372 general.c:352 general.c:357
+#: builtins/common.c:230 execute_cmd.c:2373 general.c:368 general.c:373
#, c-format
msgid "`%s': not a valid identifier"
msgstr "「%sã€ï¼šä¸æ˜¯ä¸€å€‹æœ‰æ•ˆçš„識別符"
@@ -217,14 +237,14 @@ msgstr "無效的八進ä½æ•¸å­—"
msgid "invalid hex number"
msgstr "無效的å六進ä½æ•¸å­—"
-#: builtins/common.c:244 expr.c:1564
+#: builtins/common.c:244 expr.c:1569
msgid "invalid number"
msgstr "無效數字"
#: builtins/common.c:252
#, c-format
msgid "%s: invalid signal specification"
-msgstr "%s:無效的信號è¦æ ¼"
+msgstr "%s:無效的訊號è¦æ ¼"
#: builtins/common.c:259
#, c-format
@@ -243,7 +263,7 @@ msgstr "%s:%s 超出範åœ"
#: builtins/common.c:274 builtins/common.c:276
msgid "argument"
-msgstr "引數"
+msgstr "åƒæ•¸"
#: builtins/common.c:276
#, c-format
@@ -281,85 +301,95 @@ msgstr "%s:ä¸æ˜¯ä¸€å€‹å…§å»º shell"
#: builtins/common.c:323
#, c-format
msgid "write error: %s"
-msgstr "寫入錯誤: %s"
+msgstr "寫入時發生錯誤:%s"
#: builtins/common.c:331
#, c-format
msgid "error setting terminal attributes: %s"
-msgstr "設定終端屬性時出錯: %s"
+msgstr "設定終端屬性時發生錯誤: %s"
#: builtins/common.c:333
#, c-format
msgid "error getting terminal attributes: %s"
-msgstr "ç²å–終端屬性時出錯: %s"
+msgstr "å–得終端屬性時發生錯誤: %s"
-#: builtins/common.c:579
+#: builtins/common.c:635
#, c-format
msgid "%s: error retrieving current directory: %s: %s\n"
-msgstr "%s:錯誤檢索當å‰ç›®éŒ„: %s: %s\n"
+msgstr "%s:檢索目å‰ç›®éŒ„時發生錯誤:%s:%s\n"
-#: builtins/common.c:645 builtins/common.c:647
+#: builtins/common.c:701 builtins/common.c:703
#, c-format
msgid "%s: ambiguous job spec"
msgstr "%s:模稜兩å¯çš„工作è¦æ ¼"
-#: builtins/common.c:908
+#: builtins/common.c:964
msgid "help not available in this version"
msgstr "這個版本沒有å¯ç”¨çš„說明"
-#: builtins/complete.def:281
+#: builtins/common.c:1008 builtins/set.def:953 variables.c:3839
+#, c-format
+msgid "%s: cannot unset: readonly %s"
+msgstr "%s: 無法å–消設定: 唯讀 %s"
+
+#: builtins/common.c:1013 builtins/set.def:932 variables.c:3844
+#, c-format
+msgid "%s: cannot unset"
+msgstr "%s: 無法å–消設定"
+
+#: builtins/complete.def:287
#, c-format
msgid "%s: invalid action name"
msgstr "%s:無效的功能å稱"
-#: builtins/complete.def:474 builtins/complete.def:679
-#: builtins/complete.def:910
+#: builtins/complete.def:486 builtins/complete.def:634
+#: builtins/complete.def:865
#, c-format
msgid "%s: no completion specification"
msgstr "%s:沒有完æˆçš„è¦æ ¼"
-#: builtins/complete.def:733
+#: builtins/complete.def:688
msgid "warning: -F option may not work as you expect"
-msgstr "警告: -F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
+msgstr "警告:-F é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
-#: builtins/complete.def:735
+#: builtins/complete.def:690
msgid "warning: -C option may not work as you expect"
-msgstr "警告: -C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
+msgstr "警告:-C é¸é …å¯èƒ½ç„¡æ³•æŒ‰é æœŸå·¥ä½œ"
-#: builtins/complete.def:883
+#: builtins/complete.def:838
msgid "not currently executing completion function"
-msgstr "當å‰æœªåŸ·è¡Œè£œå®ŒåŠŸèƒ½"
+msgstr "ç›®å‰æœªåŸ·è¡Œè£œå®ŒåŠŸèƒ½"
-#: builtins/declare.def:132
+#: builtins/declare.def:134
msgid "can only be used in a function"
msgstr "åªèƒ½ç”¨åœ¨å‡½æ•¸ä¸­"
-#: builtins/declare.def:369 builtins/declare.def:756
+#: builtins/declare.def:363 builtins/declare.def:756
#, c-format
msgid "%s: reference variable cannot be an array"
msgstr "%s: 引用變數ä¸èƒ½ç‚ºé™£åˆ—"
-#: builtins/declare.def:380 variables.c:3363
+#: builtins/declare.def:374 variables.c:3385
#, c-format
msgid "%s: nameref variable self references not allowed"
msgstr "%s: ä¸å…許å稱引用變數引用自身"
-#: builtins/declare.def:385 variables.c:2084 variables.c:3272 variables.c:3285
-#: variables.c:3360
+#: builtins/declare.def:379 variables.c:2104 variables.c:3304 variables.c:3312
+#: variables.c:3382
#, c-format
msgid "%s: circular name reference"
msgstr "%s: 迴圈變數å引用"
-#: builtins/declare.def:390 builtins/declare.def:762 builtins/declare.def:773
+#: builtins/declare.def:384 builtins/declare.def:762 builtins/declare.def:773
#, c-format
msgid "`%s': invalid variable name for name reference"
msgstr "「%sã€ï¼šç„¡æ•ˆçš„引用變數å"
-#: builtins/declare.def:520
+#: builtins/declare.def:514
msgid "cannot use `-f' to make functions"
-msgstr "無法用「-fã€ç”Ÿæˆå‡½æ•¸"
+msgstr "無法用「-fã€ç”¢ç”Ÿå‡½æ•¸"
-#: builtins/declare.def:532 execute_cmd.c:5852
+#: builtins/declare.def:526 execute_cmd.c:5986
#, c-format
msgid "%s: readonly function"
msgstr "%s:唯讀函數"
@@ -374,7 +404,7 @@ msgstr "%s:ä¸å»ºè­°ä½¿ç”¨å¼•ç”¨çš„複åˆé™£åˆ—指定"
msgid "%s: cannot destroy array variables in this way"
msgstr "%s: 無法以這種方å¼éŠ·æ¯€é™£åˆ—變數"
-#: builtins/declare.def:845 builtins/read.def:788
+#: builtins/declare.def:845 builtins/read.def:815
#, c-format
msgid "%s: cannot convert associative to indexed array"
msgstr "%s: 無法將關è¯é™£åˆ—轉化為索引陣列"
@@ -388,27 +418,32 @@ msgstr "動態載入ä¸å¯ç”¨"
msgid "cannot open shared object %s: %s"
msgstr "無法開啟共享物件 %s: %s"
-#: builtins/enable.def:369
+#: builtins/enable.def:371
#, c-format
msgid "cannot find %s in shared object %s: %s"
msgstr "無法在共享物件 %2$s 中找到 %1$s: %3$s"
-#: builtins/enable.def:387
+#: builtins/enable.def:388
+#, fuzzy, c-format
+msgid "%s: dynamic builtin already loaded"
+msgstr "%s: 未以動態方å¼è¼‰å…¥"
+
+#: builtins/enable.def:392
#, c-format
msgid "load function for %s returns failure (%d): not loaded"
msgstr "為 %s 載入函å¼æ™‚回傳錯誤 (%d):尚未載入"
-#: builtins/enable.def:512
+#: builtins/enable.def:517
#, c-format
msgid "%s: not dynamically loaded"
msgstr "%s: 未以動態方å¼è¼‰å…¥"
-#: builtins/enable.def:538
+#: builtins/enable.def:543
#, c-format
msgid "%s: cannot delete: %s"
msgstr "%s: 無法刪除: %s"
-#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5684
+#: builtins/evalfile.c:138 builtins/hash.def:185 execute_cmd.c:5818
#, c-format
msgid "%s: is a directory"
msgstr "%s: 是一個目錄"
@@ -416,19 +451,19 @@ msgstr "%s: 是一個目錄"
#: builtins/evalfile.c:144
#, c-format
msgid "%s: not a regular file"
-msgstr "%s: ä¸æ˜¯å¸¸è¦æª”案"
+msgstr "%s: ä¸æ˜¯ä¸€èˆ¬æª”案"
#: builtins/evalfile.c:153
#, c-format
msgid "%s: file is too large"
msgstr "%s: 檔案太大"
-#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623
+#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1647
#, c-format
msgid "%s: cannot execute binary file"
msgstr "%s: 無法執行二進ä½æª”案"
-#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:243
+#: builtins/exec.def:158 builtins/exec.def:160 builtins/exec.def:246
#, c-format
msgid "%s: cannot execute: %s"
msgstr "%s: 無法執行: %s"
@@ -452,22 +487,23 @@ msgstr "有åœæ­¢çš„工作。\n"
msgid "There are running jobs.\n"
msgstr "有執行中的工作。\n"
-#: builtins/fc.def:265
+#: builtins/fc.def:275 builtins/fc.def:373 builtins/fc.def:417
msgid "no command found"
-msgstr "未找到命令"
+msgstr "未找到指令"
-#: builtins/fc.def:323 builtins/fc.def:372
+#: builtins/fc.def:363 builtins/fc.def:368 builtins/fc.def:407
+#: builtins/fc.def:412
msgid "history specification"
msgstr "æ­·å²è¨˜éŒ„è¦æ ¼"
-#: builtins/fc.def:393
+#: builtins/fc.def:444
#, c-format
msgid "%s: cannot open temp file: %s"
-msgstr "%s: 無法開啟臨時檔案: %s"
+msgstr "%s: 無法開啟暫存檔案: %s"
#: builtins/fg_bg.def:152 builtins/jobs.def:284
msgid "current"
-msgstr "當å‰"
+msgstr "ç›®å‰"
#: builtins/fg_bg.def:161
#, c-format
@@ -477,38 +513,44 @@ msgstr "在ä¸å¸¶å·¥ä½œæŽ§åˆ¶çš„情æ³ä¸‹å•Ÿå‹•äº†å·¥ä½œ %d"
#: builtins/getopt.c:110
#, c-format
msgid "%s: illegal option -- %c\n"
-msgstr "%s: éžæ³•é¸é … -- %c\n"
+msgstr "%s:ä¸åˆæ³•çš„é¸é … ─ %c\n"
#: builtins/getopt.c:111
#, c-format
msgid "%s: option requires an argument -- %c\n"
-msgstr "%s: é¸é …需è¦ä¸€å€‹å¼•æ•¸ -- %c\n"
+msgstr "%s: é¸é …需è¦ä¸€å€‹åƒæ•¸ -- %c\n"
#: builtins/hash.def:91
msgid "hashing disabled"
msgstr "å·²åœç”¨é›œæ¹Š"
-#: builtins/hash.def:138
+#: builtins/hash.def:139
#, c-format
msgid "%s: hash table empty\n"
msgstr "%s: 雜湊表為空\n"
-#: builtins/hash.def:266
+#: builtins/hash.def:267
#, c-format
msgid "hits\tcommand\n"
-msgstr "命中\t命令\n"
+msgstr "命中\t指令\n"
#: builtins/help.def:133
msgid "Shell commands matching keyword `"
msgid_plural "Shell commands matching keywords `"
-msgstr[0] "Shell 命令,匹é…é—œéµè©ž `"
+msgstr[0] "Shell 指令,符åˆé—œéµå­— `"
+
+#: builtins/help.def:135
+msgid ""
+"'\n"
+"\n"
+msgstr ""
#: builtins/help.def:185
#, c-format
msgid ""
"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'."
msgstr ""
-"沒有與「%sã€åŒ¹é…的說明主題。嘗試「help helpã€æˆ–「man -k %sã€æˆ–「info %sã€ã€‚"
+"沒有與「%sã€ç¬¦åˆçš„說明主題。嘗試「help helpã€æˆ–「man -k %sã€æˆ–「info %sã€ã€‚"
#: builtins/help.def:224
#, c-format
@@ -526,29 +568,29 @@ msgid ""
"A star (*) next to a name means that the command is disabled.\n"
"\n"
msgstr ""
-"這些 shell 命令是內部定義的。請輸入「helpã€ä»¥ç²å–一個列表。\n"
+"這些 shell 指令是內部定義的。請輸入「helpã€ä»¥å–得一個列表。\n"
"輸入「help å稱ã€ä»¥å¾—到有關函數「å稱ã€çš„更多資訊。\n"
"使用「info bashã€ä¾†ç²å¾—關於 shell 的更多一般性資訊。\n"
-"使用「man -kã€æˆ–「infoã€ä¾†ç²å–ä¸åœ¨åˆ—表中命令的更多資訊。\n"
+"使用「man -kã€æˆ–「infoã€ä¾†å–å¾—ä¸åœ¨åˆ—表中指令的更多資訊。\n"
"\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:187 builtins/history.def:197 builtins/history.def:212
-#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248
+#: builtins/history.def:188 builtins/history.def:198 builtins/history.def:213
+#: builtins/history.def:230 builtins/history.def:242 builtins/history.def:249
msgid "history position"
msgstr "æ­·å²è¨˜éŒ„ä½ç½®"
-#: builtins/history.def:331
+#: builtins/history.def:340
#, c-format
msgid "%s: invalid timestamp"
msgstr "%s:無效時間戳"
-#: builtins/history.def:442
+#: builtins/history.def:451
#, c-format
msgid "%s: history expansion failed"
msgstr "%s: æ­·å²è¨˜éŒ„擴充套件失敗"
@@ -565,13 +607,13 @@ msgstr "其他é¸é …ä¸èƒ½èˆ‡ã€Œ-xã€åŒæ™‚使用"
#: builtins/kill.def:211
#, c-format
msgid "%s: arguments must be process or job IDs"
-msgstr "%s: 引數必須是行程或工作 ID"
+msgstr "%s: åƒæ•¸å¿…須是行程或工作 ID"
#: builtins/kill.def:274
msgid "Unknown error"
-msgstr "ä¸æ˜ŽéŒ¯èª¤"
+msgstr "未知錯誤"
-#: builtins/let.def:97 builtins/let.def:122 expr.c:638 expr.c:656
+#: builtins/let.def:97 builtins/let.def:122 expr.c:639 expr.c:657
msgid "expression expected"
msgstr "需è¦è¡¨ç¤ºå¼"
@@ -580,12 +622,12 @@ msgstr "需è¦è¡¨ç¤ºå¼"
msgid "%s: not an indexed array"
msgstr "%s: ä¸æ˜¯ä¸€å€‹ç´¢å¼•é™£åˆ—"
-#: builtins/mapfile.def:271 builtins/read.def:307
+#: builtins/mapfile.def:271 builtins/read.def:308
#, c-format
msgid "%s: invalid file descriptor specification"
msgstr "%s: 無效的檔案æ述符è¦æ ¼"
-#: builtins/mapfile.def:279 builtins/read.def:314
+#: builtins/mapfile.def:279 builtins/read.def:315
#, c-format
msgid "%d: invalid file descriptor: %s"
msgstr "%d: 無效的檔案æ述符: %s"
@@ -613,36 +655,36 @@ msgstr "空陣列變數å"
msgid "array variable support required"
msgstr "需è¦é™£åˆ—變數支æ´"
-#: builtins/printf.def:420
+#: builtins/printf.def:419
#, c-format
msgid "`%s': missing format character"
msgstr "「%sã€: 缺少格å¼å­—å…ƒ"
-#: builtins/printf.def:475
+#: builtins/printf.def:474
#, c-format
msgid "`%c': invalid time format specification"
msgstr "「%cã€: 無效的時間格å¼è¦æ ¼"
-#: builtins/printf.def:677
+#: builtins/printf.def:676
#, c-format
msgid "`%c': invalid format character"
msgstr "「%cã€: 無效格å¼å­—å…ƒ"
-#: builtins/printf.def:703
+#: builtins/printf.def:702
#, c-format
msgid "warning: %s: %s"
msgstr "警告: %s: %s"
-#: builtins/printf.def:789
+#: builtins/printf.def:788
#, c-format
msgid "format parsing problem: %s"
msgstr "æ ¼å¼è§£æžå•é¡Œ: %s"
-#: builtins/printf.def:886
+#: builtins/printf.def:885
msgid "missing hex digit for \\x"
msgstr "使用了 \\x 但缺少å六進ä½æ•¸å­—"
-#: builtins/printf.def:901
+#: builtins/printf.def:900
#, c-format
msgid "missing unicode digit for \\%c"
msgstr "使用了 \\%c 但缺少è¬åœ‹ç¢¼æ•¸å­—"
@@ -654,11 +696,11 @@ msgstr "無其他目錄"
#: builtins/pushd.def:360
#, c-format
msgid "%s: invalid argument"
-msgstr "%s: 無效引數"
+msgstr "%s: 無效åƒæ•¸"
#: builtins/pushd.def:480
msgid "<no current directory>"
-msgstr "<無當å‰ç›®éŒ„>"
+msgstr "<ç„¡ç›®å‰ç›®éŒ„>"
#: builtins/pushd.def:524
msgid "directory stack empty"
@@ -691,9 +733,9 @@ msgid ""
"by\n"
"\tdirs when invoked without options, starting with zero."
msgstr ""
-"顯示當å‰è¨˜ä½çš„目錄列表。 目錄\n"
-" 藉由「pushdã€å‘½ä»¤åŠ å…¥é€™å€‹åˆ—表;您å¯ä»¥\n"
-" 使用「popdã€å‘½ä»¤å°åˆ—表進行é歷。\n"
+"顯示目å‰è¨˜ä½çš„目錄列表。 目錄\n"
+" 藉由「pushdã€æŒ‡ä»¤åŠ å…¥é€™å€‹åˆ—表;您å¯ä»¥\n"
+" 使用「popdã€æŒ‡ä»¤å°åˆ—表進行é歷。\n"
" \n"
" é¸é …:\n"
" -c\t刪除所有元素以清除目錄堆疊\n"
@@ -703,7 +745,7 @@ msgstr ""
" -v\t以堆疊ä½ç½®ç‚ºå­—首,æ¯åˆ—一個æ¢ç›®\n"
" \tå°å‡ºç›®éŒ„堆疊\n"
" \n"
-" 引數:\n"
+" åƒæ•¸:\n"
" +N\t以 dirs ä¸å¸¶é¸é …輸出的順åºï¼Œå¾žå·¦èµ·ç¬¬ N 個æ¢ç›®é¡¯ç¤ºåˆ—表,\n"
" \t從 0 開始。\n"
" \n"
@@ -735,14 +777,14 @@ msgid ""
" The `dirs' builtin displays the directory stack."
msgstr ""
"在目錄堆疊頂部加入一個目錄,或者論詢\n"
-" 目錄堆疊,是當å‰å·¥ä½œç›®éŒ„æˆç‚ºæ–°çš„堆疊頂端\n"
-" ä¸å¸¶å¼•æ•¸æ™‚,交æ›å †ç–Šé ‚端的兩個目錄。\n"
+" 目錄堆疊,是目å‰å·¥ä½œç›®éŒ„æˆç‚ºæ–°çš„堆疊頂端\n"
+" ä¸å¸¶åƒæ•¸æ™‚,交æ›å †ç–Šé ‚端的兩個目錄。\n"
" \n"
" é¸é …:\n"
" -n\t抑制增加堆疊中目錄時通常變更目錄的æ“作,\n"
" \t從而åªæœ‰å †ç–Šè¢«æ“作。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" +N\t輪轉堆疊使得第 N 個目錄(「dirsã€çš„\n"
" \t輸出列表中左起,從 0 開始)\n"
" \tå‡è‡³å †ç–Šé ‚端。\n"
@@ -752,9 +794,9 @@ msgstr ""
" \tå‡è‡³å †ç–Šé ‚端\n"
" \n"
" dir\t新增目錄至堆疊頂端,並\n"
-" \t使其æˆç‚ºæ–°çš„當å‰å·¥ä½œç›®éŒ„。\n"
+" \t使其æˆç‚ºæ–°çš„ç›®å‰å·¥ä½œç›®éŒ„。\n"
" \n"
-" 「dirsã€å…§å»ºå‘½ä»¤é¡¯ç¤ºç›®éŒ„堆疊。"
+" 「dirsã€å…§å»ºæŒ‡ä»¤é¡¯ç¤ºç›®éŒ„堆疊。"
#: builtins/pushd.def:748
msgid ""
@@ -776,14 +818,14 @@ msgid ""
" \n"
" The `dirs' builtin displays the directory stack."
msgstr ""
-"從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶å¼•æ•¸æ™‚,刪除\n"
+"從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,刪除\n"
" 堆疊頂端目錄並變更至新的堆疊頂端目錄。\n"
" \n"
" é¸é …:\n"
" -n\t抑制從堆疊中刪除目錄時通常變更目錄æ“作,\n"
" \t從而åªæœ‰å †ç–Šè¢«æ“作。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" +N\t從「dirsã€è¼¸å‡ºçš„列表中,\n"
" \t刪除左起第 N 個æ¢ç›®ï¼Œè¨ˆæ•¸å¾ž 0 開始。例如:「popd +0ã€\n"
" \t刪除第一個目錄,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n"
@@ -794,12 +836,12 @@ msgstr ""
" \n"
" 「dirsã€å…§å»ºè®Šæ•¸é¡¯ç¤ºç›®éŒ„堆疊。"
-#: builtins/read.def:279
+#: builtins/read.def:280
#, c-format
msgid "%s: invalid timeout specification"
msgstr "%s: 無效的逾時è¦æ ¼"
-#: builtins/read.def:733
+#: builtins/read.def:755
#, c-format
msgid "read error: %d: %s"
msgstr "讀å–錯誤: %d: %s"
@@ -808,21 +850,11 @@ msgstr "讀å–錯誤: %d: %s"
msgid "can only `return' from a function or sourced script"
msgstr "åªèƒ½å¾žå‡½æ•¸æˆ–者原始指令稿「returnã€"
-#: builtins/set.def:852
+#: builtins/set.def:869
msgid "cannot simultaneously unset a function and a variable"
msgstr "無法åŒæ™‚å–消設定一個函數和一個變數"
-#: builtins/set.def:904
-#, c-format
-msgid "%s: cannot unset"
-msgstr "%s: 無法å–消設定"
-
-#: builtins/set.def:925 variables.c:3813
-#, c-format
-msgid "%s: cannot unset: readonly %s"
-msgstr "%s: 無法å–消設定: 唯讀 %s"
-
-#: builtins/set.def:938
+#: builtins/set.def:966
#, c-format
msgid "%s: not an array variable"
msgstr "%s: ä¸æ˜¯é™£åˆ—變數"
@@ -835,9 +867,9 @@ msgstr "%s: ä¸æ˜¯å‡½æ•¸"
#: builtins/setattr.def:194
#, c-format
msgid "%s: cannot export"
-msgstr "%s:無法會出"
+msgstr "%s:無法匯出"
-#: builtins/shift.def:73 builtins/shift.def:79
+#: builtins/shift.def:72 builtins/shift.def:79
msgid "shift count"
msgstr "ä½ç§»è¨ˆæ•¸"
@@ -845,14 +877,14 @@ msgstr "ä½ç§»è¨ˆæ•¸"
msgid "cannot set and unset shell options simultaneously"
msgstr "無法åŒæ™‚設定和å–消設定 shell é¸é …"
-#: builtins/shopt.def:420
+#: builtins/shopt.def:428
#, c-format
msgid "%s: invalid shell option name"
msgstr "%s: 無效的 shell é¸é …å稱"
#: builtins/source.def:128
msgid "filename argument required"
-msgstr "需è¦æª”å引數"
+msgstr "需è¦æª”ååƒæ•¸"
#: builtins/source.def:154
#, c-format
@@ -861,11 +893,11 @@ msgstr "%s: 檔案未找到"
#: builtins/suspend.def:102
msgid "cannot suspend"
-msgstr "無法懸置"
+msgstr "無法暫åœ"
#: builtins/suspend.def:112
msgid "cannot suspend a login shell"
-msgstr "無法將登入 shell 懸置"
+msgstr "無法暫åœç™»å…¥ shell"
#: builtins/type.def:235
#, c-format
@@ -885,12 +917,12 @@ msgstr "%s 是一個函數\n"
#: builtins/type.def:299
#, c-format
msgid "%s is a special shell builtin\n"
-msgstr "%s 是特別的 shell 內建\n"
+msgstr "%s 是特別的 shell 內建物件\n"
#: builtins/type.def:301
#, c-format
msgid "%s is a shell builtin\n"
-msgstr "%s 是 shell 內建\n"
+msgstr "%s 是 shell 內建物件\n"
#: builtins/type.def:323 builtins/type.def:408
#, c-format
@@ -900,28 +932,28 @@ msgstr "%s 是 %s\n"
#: builtins/type.def:343
#, c-format
msgid "%s is hashed (%s)\n"
-msgstr "%s 已進行雜湊æ“作(%s)\n"
+msgstr "%s 已進行雜湊æ“作 (%s)\n"
-#: builtins/ulimit.def:396
+#: builtins/ulimit.def:400
#, c-format
msgid "%s: invalid limit argument"
-msgstr "%s: 無效的 limit 引數"
+msgstr "%s: 無效的 limit åƒæ•¸"
-#: builtins/ulimit.def:422
+#: builtins/ulimit.def:426
#, c-format
msgid "`%c': bad command"
-msgstr "「%cã€ï¼šä¸ç•¶çš„命令"
+msgstr "「%cã€ï¼šä¸ç•¶çš„指令"
-#: builtins/ulimit.def:451
+#: builtins/ulimit.def:455
#, c-format
msgid "%s: cannot get limit: %s"
msgstr "%s:ä¸èƒ½å¾—到 limit: %s"
-#: builtins/ulimit.def:477
+#: builtins/ulimit.def:481
msgid "limit"
msgstr "limit"
-#: builtins/ulimit.def:489 builtins/ulimit.def:789
+#: builtins/ulimit.def:493 builtins/ulimit.def:793
#, c-format
msgid "%s: cannot modify limit: %s"
msgstr "%s:ä¸èƒ½ä¿®æ”¹ limit: %s"
@@ -947,7 +979,7 @@ msgstr " 列 "
#: error.c:164
#, c-format
msgid "last command: %s\n"
-msgstr "最後的命令: %s\n"
+msgstr "最後的指令:%s\n"
#: error.c:172
#, c-format
@@ -962,11 +994,11 @@ msgstr "通知:"
#: error.c:462
msgid "unknown command error"
-msgstr "ä¸æ˜Žå‘½ä»¤éŒ¯èª¤"
+msgstr "ä¸æ˜ŽæŒ‡ä»¤éŒ¯èª¤"
#: error.c:463
msgid "bad command type"
-msgstr "ä¸ç•¶çš„命令類型"
+msgstr "ä¸ç•¶çš„指令類型"
#: error.c:464
msgid "bad connector"
@@ -979,78 +1011,77 @@ msgstr "錯誤的跳轉"
#: error.c:503
#, c-format
msgid "%s: unbound variable"
-msgstr "%s: 未繫çµçš„變數"
+msgstr "%s: 未ç¶å®šçš„變數"
-#: eval.c:245
-#, c-format
+#: eval.c:242
msgid "\atimed out waiting for input: auto-logout\n"
msgstr "\a 等待輸入逾時:自動登出\n"
-#: execute_cmd.c:536
+#: execute_cmd.c:537
#, c-format
msgid "cannot redirect standard input from /dev/null: %s"
msgstr "無法從 /dev/null é‡å®šå‘標準輸入: %s"
-#: execute_cmd.c:1306
+#: execute_cmd.c:1297
#, c-format
msgid "TIMEFORMAT: `%c': invalid format character"
msgstr "時間格å¼:「%cã€: 無效的格å¼å­—å…ƒ"
-#: execute_cmd.c:2361
+#: execute_cmd.c:2362
#, c-format
msgid "execute_coproc: coproc [%d:%s] still exists"
msgstr "execute_coproc:coproc [%d:%s] ä»ç„¶å­˜åœ¨"
-#: execute_cmd.c:2485
+#: execute_cmd.c:2486
msgid "pipe error"
msgstr "管é“錯誤"
-#: execute_cmd.c:4671
+#: execute_cmd.c:4793
#, c-format
msgid "eval: maximum eval nesting level exceeded (%d)"
msgstr "eval:超出最大 eval 巢狀層數 (%d)"
-#: execute_cmd.c:4683
+#: execute_cmd.c:4805
#, c-format
msgid "%s: maximum source nesting level exceeded (%d)"
msgstr "%s: 超出最大來æºå·¢ç‹€å±¤æ•¸ (%d)"
-#: execute_cmd.c:4791
+#: execute_cmd.c:4913
#, c-format
msgid "%s: maximum function nesting level exceeded (%d)"
msgstr "%s: 超出最大函數巢狀層數 (%d)"
-#: execute_cmd.c:5340
+#: execute_cmd.c:5467
#, c-format
msgid "%s: restricted: cannot specify `/' in command names"
-msgstr "%s: å—é™çš„: 無法在命令å稱中使用「/ã€"
+msgstr "%s: å—é™çš„: 無法在指令å稱中使用「/ã€"
-#: execute_cmd.c:5438
+#: execute_cmd.c:5574
#, c-format
msgid "%s: command not found"
-msgstr "%s:命令找ä¸åˆ°"
+msgstr "%s:指令找ä¸åˆ°"
-#: execute_cmd.c:5682
+#: execute_cmd.c:5816
#, c-format
msgid "%s: %s"
msgstr "%s: %s"
-#: execute_cmd.c:5720
+#: execute_cmd.c:5854
#, c-format
msgid "%s: %s: bad interpreter"
msgstr "%s: %s: ä¸ç•¶çš„直譯器"
-#: execute_cmd.c:5757
+#: execute_cmd.c:5891
#, c-format
msgid "%s: cannot execute binary file: %s"
msgstr "%s: 無法執行二進ä½æª”案: %s"
-#: execute_cmd.c:5843
+#: execute_cmd.c:5977
#, c-format
msgid "`%s': is a special builtin"
msgstr "「%sã€: 特殊內建"
-#: execute_cmd.c:5895
+#: execute_cmd.c:6029
#, c-format
msgid "cannot duplicate fd %d to fd %d"
msgstr "無法複製檔案æ述符 %d 到檔案æ述符 %d"
@@ -1075,230 +1106,245 @@ msgstr "嘗試指派給éžè®Šæ•¸"
msgid "syntax error in variable assignment"
msgstr "變數定義語法錯誤"
-#: expr.c:544 expr.c:910
+#: expr.c:544 expr.c:911
msgid "division by 0"
msgstr "除 0"
-#: expr.c:591
+#: expr.c:592
msgid "bug: bad expassign token"
msgstr "錯誤:ä¸ç•¶çš„表示å¼å­—組"
-#: expr.c:645
+#: expr.c:646
msgid "`:' expected for conditional expression"
msgstr "æ¢ä»¶è¡¨ç¤ºå¼éœ€è¦ã€Œ:ã€"
-#: expr.c:971
+#: expr.c:972
msgid "exponent less than 0"
msgstr "指數å°æ–¼ 0"
-#: expr.c:1028
+#: expr.c:1029
msgid "identifier expected after pre-increment or pre-decrement"
-msgstr "é å¢žç¬¦æˆ–é æ¸›ç¬¦å¾Œæ‡‰è·Ÿæœ‰æ¨™è­˜ç¬¦"
+msgstr "é å¢žç¬¦æˆ–é æ¸›ç¬¦å¾Œæ‡‰è·Ÿæœ‰è­˜åˆ¥ç¬¦"
-#: expr.c:1055
+#: expr.c:1056
msgid "missing `)'"
msgstr "缺少「)ã€"
-#: expr.c:1106 expr.c:1484
+#: expr.c:1107 expr.c:1487
msgid "syntax error: operand expected"
msgstr "語法錯誤: 需è¦é‹ç®—å…ƒ"
-#: expr.c:1486
+#: expr.c:1489
msgid "syntax error: invalid arithmetic operator"
msgstr "語法錯誤: 無效的算術é‹ç®—å­"
-#: expr.c:1510
+#: expr.c:1513
#, c-format
msgid "%s%s%s: %s (error token is \"%s\")"
msgstr "%s%s%s: %s (錯誤字組是「%sã€)"
-#: expr.c:1568
+#: expr.c:1573
msgid "invalid arithmetic base"
msgstr "無效的算術進ä½"
-#: expr.c:1588
+#: expr.c:1582
+#, fuzzy
+msgid "invalid integer constant"
+msgstr "%s: 無效的列數"
+
+#: expr.c:1598
msgid "value too great for base"
msgstr "數值太大ä¸å¯ç‚ºç®—術進ä½çš„基底"
-#: expr.c:1637
+#: expr.c:1647
#, c-format
msgid "%s: expression error\n"
msgstr "%s: 表示å¼éŒ¯èª¤\n"
-#: general.c:69
+#: general.c:70
msgid "getcwd: cannot access parent directories"
-msgstr "getcwd: 無法訪å•ä¸Šå±¤ç›®éŒ„"
+msgstr "getcwd: 無法存å–上層目錄"
-#: input.c:99 subst.c:5930
+#: input.c:99 subst.c:6069
#, c-format
msgid "cannot reset nodelay mode for fd %d"
-msgstr "無法為檔案æ述符 %d é‡ç½®ç„¡å»¶é²æ¨¡å¼"
+msgstr "無法為檔案æ述符 %d é‡è¨­ç„¡å»¶é²æ¨¡å¼"
#: input.c:266
#, c-format
msgid "cannot allocate new file descriptor for bash input from fd %d"
-msgstr "無法從檔案æ述符 %d 為 bash 的輸入ç²å–一個新的檔案æ述符"
+msgstr "無法為來自 fd %d çš„ bash 輸入分é…新的檔案æ述符"
#: input.c:274
#, c-format
msgid "save_bash_input: buffer already exists for new fd %d"
-msgstr "save_bash_input: 已經存在新的檔案æ述符 %d çš„ç·©è¡å€"
+msgstr "save_bash_input: 已經存在æ供給新 fd %d çš„ç·©è¡å€"
-#: jobs.c:529
+#: jobs.c:543
msgid "start_pipeline: pgrp pipe"
msgstr "start_pipeline: 行程群組管é“"
-#: jobs.c:1084
+#: jobs.c:906
+#, c-format
+msgid "bgp_delete: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:959
+#, c-format
+msgid "bgp_search: LOOP: psi (%d) == storage[psi].bucket_next"
+msgstr ""
+
+#: jobs.c:1283
#, c-format
msgid "forked pid %d appears in running job %d"
-msgstr "生æˆçš„行程識別號 %d 顯示為執行中的工作 %d"
+msgstr "產生的行程識別碼 %d 顯示為執行中的工作 %d"
-#: jobs.c:1203
+#: jobs.c:1402
#, c-format
msgid "deleting stopped job %d with process group %ld"
msgstr "刪除行程群組 %2$ld 中已åœæ­¢çš„工作 %1$d"
-#: jobs.c:1307
-#, c-format
-msgid "add_process: process %5ld (%s) in the_pipeline"
-msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline"
-
-#: jobs.c:1310
+#: jobs.c:1511
#, c-format
msgid "add_process: pid %5ld (%s) marked as still alive"
-msgstr "add_process: 行程識別號 %5ld(%s) 標註為ä»æ´»è‘—"
+msgstr "add_process: 行程識別碼 %5ld(%s) 標註為ä»æ´»è‘—"
-#: jobs.c:1639
+#: jobs.c:1850
#, c-format
msgid "describe_pid: %ld: no such pid"
-msgstr "describe_pid: %ld: 無此行程識別號"
+msgstr "describe_pid: %ld: 無此行程識別碼"
-#: jobs.c:1654
+#: jobs.c:1865
#, c-format
msgid "Signal %d"
msgstr "訊號 %d"
-#: jobs.c:1668 jobs.c:1694
+#: jobs.c:1879 jobs.c:1905
msgid "Done"
msgstr "已完æˆ"
-#: jobs.c:1673 siglist.c:123
+#: jobs.c:1884 siglist.c:122
msgid "Stopped"
-msgstr "å·²åœæ­¢"
+msgstr "åœæ­¢"
-#: jobs.c:1677
+#: jobs.c:1888
#, c-format
msgid "Stopped(%s)"
msgstr "å·²åœæ­¢(%s)"
-#: jobs.c:1681
+#: jobs.c:1892
msgid "Running"
msgstr "執行中"
-#: jobs.c:1698
+#: jobs.c:1909
#, c-format
msgid "Done(%d)"
msgstr "已完æˆ(%d)"
-#: jobs.c:1700
+#: jobs.c:1911
#, c-format
msgid "Exit %d"
msgstr "退出 %d"
-#: jobs.c:1703
+#: jobs.c:1914
msgid "Unknown status"
msgstr "ä¸æ˜Žç‹€æ…‹"
-#: jobs.c:1790
+#: jobs.c:2001
#, c-format
msgid "(core dumped) "
msgstr "(核心已傾å°)"
-#: jobs.c:1809
+#: jobs.c:2020
#, c-format
msgid " (wd: %s)"
msgstr " (工作目錄: %s)"
-#: jobs.c:2037
+#: jobs.c:2259
#, c-format
msgid "child setpgid (%ld to %ld)"
msgstr "å­è¡Œç¨‹ setpgid (%ld 到 %ld)"
-#: jobs.c:2399 nojobs.c:657
+#: jobs.c:2617 nojobs.c:664
#, c-format
msgid "wait: pid %ld is not a child of this shell"
-msgstr "wait: 行程識別號 %ld ä¸æ˜¯ç•¶å‰ shell çš„å­è¡Œç¨‹"
+msgstr "wait: 行程識別碼 %ld ä¸æ˜¯ç›®å‰ shell çš„å­è¡Œç¨‹"
-#: jobs.c:2695
+#: jobs.c:2893
#, c-format
msgid "wait_for: No record of process %ld"
-msgstr "wiat_for: 沒有行程 %ld 的記錄"
+msgstr "wiat_for: 沒有行程 %ld 的紀錄"
-#: jobs.c:3055
+#: jobs.c:3236
#, c-format
msgid "wait_for_job: job %d is stopped"
msgstr "wait_for_job: 工作 %d å·²åœæ­¢"
-#: jobs.c:3362
+#: jobs.c:3564
+#, fuzzy, c-format
+msgid "%s: no current jobs"
+msgstr "%s:沒有此類工作"
+
+#: jobs.c:3571
#, c-format
msgid "%s: job has terminated"
msgstr "%s: 工作已經終止"
-#: jobs.c:3371
+#: jobs.c:3580
#, c-format
msgid "%s: job %d already in background"
msgstr "%s: 工作 %d 已在背景執行"
-#: jobs.c:3597
+#: jobs.c:3806
msgid "waitchld: turning on WNOHANG to avoid indefinite block"
msgstr "waitchld: é–‹å•Ÿ WNOHANG 以é¿å…ç„¡é™é˜»å¡ž"
-#: jobs.c:4120
+#: jobs.c:4320
#, c-format
msgid "%s: line %d: "
msgstr "%s: 第 %d 列:"
-#: jobs.c:4134 nojobs.c:900
+#: jobs.c:4334 nojobs.c:919
#, c-format
msgid " (core dumped)"
msgstr " (核心已傾å°)"
-#: jobs.c:4146 jobs.c:4159
+#: jobs.c:4346 jobs.c:4359
#, c-format
msgid "(wd now: %s)\n"
-msgstr "(當å‰å·¥ä½œç›®éŒ„:%s)\n"
+msgstr "(ç›®å‰å·¥ä½œç›®éŒ„:%s)\n"
-#: jobs.c:4191
+#: jobs.c:4391
msgid "initialize_job_control: getpgrp failed"
msgstr "initialize_job_control: getpgrp 失敗"
-#: jobs.c:4247
+#: jobs.c:4447
msgid "initialize_job_control: no job control in background"
msgstr "initialize_job_control:背景中沒有工作控制"
-#: jobs.c:4263
+#: jobs.c:4463
msgid "initialize_job_control: line discipline"
msgstr "initialize_job_control: 列è¦å¾‹"
-#: jobs.c:4273
+#: jobs.c:4473
msgid "initialize_job_control: setpgid"
msgstr "initialize_job_control: setpgid"
-#: jobs.c:4294 jobs.c:4303
+#: jobs.c:4494 jobs.c:4503
#, c-format
msgid "cannot set terminal process group (%d)"
msgstr "無法設定終端行程群組(%d)"
-#: jobs.c:4308
+#: jobs.c:4508
msgid "no job control in this shell"
msgstr "此 shell 中無工作控制"
-#: lib/malloc/malloc.c:331
+#: lib/malloc/malloc.c:353
#, c-format
msgid "malloc: failed assertion: %s\n"
msgstr "malloc: 主張失敗: %s\n"
-#: lib/malloc/malloc.c:347
+#: lib/malloc/malloc.c:369
#, c-format
msgid ""
"\r\n"
@@ -1307,39 +1353,49 @@ msgstr ""
"\r\n"
"malloc: %s:%d: 主張已修補\r\n"
-#: lib/malloc/malloc.c:348
+#: lib/malloc/malloc.c:370 lib/malloc/malloc.c:933
msgid "unknown"
msgstr "ä¸æ˜Ž"
-#: lib/malloc/malloc.c:855
+#: lib/malloc/malloc.c:882
msgid "malloc: block on free list clobbered"
msgstr "malloc: 空閒串列中的å€å¡Šæ壞"
-#: lib/malloc/malloc.c:932
+#: lib/malloc/malloc.c:972
msgid "free: called with already freed block argument"
-msgstr "free: 用已經釋放的å€å¡Šåšç‚ºå‘¼å«å¼•æ•¸"
+msgstr "free: 用已經釋放的å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:935
+#: lib/malloc/malloc.c:975
msgid "free: called with unallocated block argument"
-msgstr "free: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«å¼•æ•¸"
+msgstr "free: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:954
+#: lib/malloc/malloc.c:994
msgid "free: underflow detected; mh_nbytes out of range"
msgstr "free: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
-#: lib/malloc/malloc.c:960
+#: lib/malloc/malloc.c:1001
+#, fuzzy
+msgid "free: underflow detected; magic8 corrupted"
+msgstr "free: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
+
+#: lib/malloc/malloc.c:1009
msgid "free: start and end chunk sizes differ"
msgstr "free: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´"
-#: lib/malloc/malloc.c:1070
+#: lib/malloc/malloc.c:1119
msgid "realloc: called with unallocated block argument"
-msgstr "realloc: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«å¼•æ•¸"
+msgstr "realloc: 用未分é…çš„å€å¡Šåšç‚ºå‘¼å«åƒæ•¸"
-#: lib/malloc/malloc.c:1085
+#: lib/malloc/malloc.c:1134
msgid "realloc: underflow detected; mh_nbytes out of range"
msgstr "realloc: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
-#: lib/malloc/malloc.c:1091
+#: lib/malloc/malloc.c:1141
+#, fuzzy
+msgid "realloc: underflow detected; magic8 corrupted"
+msgstr "realloc: 檢測到下é™æº¢ä½ï¼›mh_nbytes 超出範åœ"
+
+#: lib/malloc/malloc.c:1150
msgid "realloc: start and end chunk sizes differ"
msgstr "realloc: 啟始和末尾å€å¡Šå¤§å°ä¸ä¸€è‡´"
@@ -1379,24 +1435,24 @@ msgstr "%s:ä¸ç•¶çš„網路路徑è¦æ ¼"
#: lib/sh/netopen.c:347
msgid "network operations not supported"
-msgstr "ä¸æ”¯æŒç¶²è·¯æ“作"
+msgstr "ä¸æ”¯æ´ç¶²è·¯æ“作"
-#: locale.c:205
+#: locale.c:217
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s)"
msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s)"
-#: locale.c:207
+#: locale.c:219
#, c-format
msgid "setlocale: LC_ALL: cannot change locale (%s): %s"
msgstr "setlocale: LC_ALL: 無法變更語å€é¸é … (%s): %s"
-#: locale.c:272
+#: locale.c:292
#, c-format
msgid "setlocale: %s: cannot change locale (%s)"
msgstr "setlocale: %s: 無法變更語å€é¸é … (%s)"
-#: locale.c:274
+#: locale.c:294
#, c-format
msgid "setlocale: %s: cannot change locale (%s): %s"
msgstr "setlocale: %s: 無法變更語å€é¸é … (%s): %s"
@@ -1435,119 +1491,119 @@ msgstr "make_here_document:ä¸ç•¶çš„指示類型 %d"
#: make_cmd.c:657
#, c-format
msgid "here-document at line %d delimited by end-of-file (wanted `%s')"
-msgstr "ç«‹å³æ–‡ä»¶åœ¨ç¬¬ %d 列被檔案çµæŸç¬¦åˆ†éš” (需è¦ã€Œ%sã€)"
+msgstr "ç«‹å³æª”案在第 %d 列被檔案çµæŸç¬¦åˆ†éš” (需è¦ã€Œ%sã€)"
#: make_cmd.c:756
#, c-format
msgid "make_redirection: redirection instruction `%d' out of range"
msgstr "make_redirection:é‡æ–°å°Žå‘指示「%dã€è¶…出範åœ"
-#: parse.y:2380
+#: parse.y:2393
#, c-format
msgid ""
"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line "
"truncated"
msgstr "shell_getc: shell_input_line_size (%zu) è¶…éŽ SIZE_MAX (%lu):列被截斷"
-#: parse.y:2786
+#: parse.y:2826
msgid "maximum here-document count exceeded"
msgstr "超éŽæ­¤è™•æª”案上é™æœ€å¤§å€¼"
-#: parse.y:3536 parse.y:3906
+#: parse.y:3581 parse.y:3957 parse.y:4556
#, c-format
msgid "unexpected EOF while looking for matching `%c'"
-msgstr "尋找匹é…的「%cã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
+msgstr "尋找符åˆçš„「%cã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
-#: parse.y:4606
+#: parse.y:4696
msgid "unexpected EOF while looking for `]]'"
msgstr "尋找「]]ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
-#: parse.y:4611
+#: parse.y:4701
#, c-format
msgid "syntax error in conditional expression: unexpected token `%s'"
msgstr "æ¢ä»¶è¡¨ç¤ºå¼ä¸­æœ‰èªžæ³•éŒ¯èª¤: 未é æœŸçš„字組「%sã€"
-#: parse.y:4615
+#: parse.y:4705
msgid "syntax error in conditional expression"
msgstr "語法錯誤,在有æ¢ä»¶çš„表示å¼"
-#: parse.y:4693
+#: parse.y:4783
#, c-format
msgid "unexpected token `%s', expected `)'"
msgstr "未é æœŸçš„字組「%sã€ï¼Œéœ€è¦ã€Œ)ã€"
-#: parse.y:4697
+#: parse.y:4787
msgid "expected `)'"
msgstr "é æœŸã€Œ)ã€"
-#: parse.y:4725
+#: parse.y:4815
#, c-format
msgid "unexpected argument `%s' to conditional unary operator"
-msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數「%sã€"
+msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€"
-#: parse.y:4729
+#: parse.y:4819
msgid "unexpected argument to conditional unary operator"
-msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數"
+msgstr "一元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸"
-#: parse.y:4775
+#: parse.y:4865
#, c-format
msgid "unexpected token `%s', conditional binary operator expected"
msgstr "未é æœŸçš„字組「%sã€ï¼Œéœ€è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­"
-#: parse.y:4779
+#: parse.y:4869
msgid "conditional binary operator expected"
msgstr "需è¦äºŒå…ƒæ¢ä»¶é‹ç®—å­"
-#: parse.y:4801
+#: parse.y:4891
#, c-format
msgid "unexpected argument `%s' to conditional binary operator"
-msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數「%sã€"
+msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸ã€Œ%sã€"
-#: parse.y:4805
+#: parse.y:4895
msgid "unexpected argument to conditional binary operator"
-msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„引數"
+msgstr "二元æ¢ä»¶é‹ç®—å­ä½¿ç”¨äº†æœªé æœŸçš„åƒæ•¸"
-#: parse.y:4816
+#: parse.y:4906
#, c-format
msgid "unexpected token `%c' in conditional command"
-msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%cã€"
+msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%cã€"
-#: parse.y:4819
+#: parse.y:4909
#, c-format
msgid "unexpected token `%s' in conditional command"
-msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%sã€"
+msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組「%sã€"
-#: parse.y:4823
+#: parse.y:4913
#, c-format
msgid "unexpected token %d in conditional command"
-msgstr "æ¢ä»¶å‘½ä»¤ä¸­æœ‰æœªé æœŸçš„字組 %d"
+msgstr "æ¢ä»¶æŒ‡ä»¤ä¸­æœ‰æœªé æœŸçš„字組 %d"
-#: parse.y:6245
+#: parse.y:6336
#, c-format
msgid "syntax error near unexpected token `%s'"
msgstr "未é æœŸçš„字組「%sã€é™„近有語法錯誤"
-#: parse.y:6263
+#: parse.y:6355
#, c-format
msgid "syntax error near `%s'"
msgstr "「%sã€é™„近有語法錯誤"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error: unexpected end of file"
msgstr "語法錯誤: 未é æœŸçš„檔案çµå°¾"
-#: parse.y:6273
+#: parse.y:6365
msgid "syntax error"
msgstr "語法錯誤"
-#: parse.y:6335
+#: parse.y:6428
#, c-format
msgid "Use \"%s\" to leave the shell.\n"
-msgstr "使用「%sã€é€€å‡º shell 。\n"
+msgstr "使用「%sã€é€€å‡º shell。\n"
-#: parse.y:6497
+#: parse.y:6602
msgid "unexpected EOF while looking for matching `)'"
-msgstr "尋找匹é…的「)ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
+msgstr "尋找符åˆçš„「)ã€æ™‚é‡åˆ°äº†æœªé æœŸçš„檔案çµæŸç¬¦"
#: pcomplete.c:1132
#, c-format
@@ -1588,89 +1644,89 @@ msgstr "xtrace fd (%d) != fileno xtrace fp (%d)"
msgid "cprintf: `%c': invalid format character"
msgstr "cprintf:「%cã€: 無效的格å¼å­—å…ƒ"
-#: redir.c:121 redir.c:167
+#: redir.c:149 redir.c:197
msgid "file descriptor out of range"
msgstr "檔案æ述符超出範åœ"
-#: redir.c:174
+#: redir.c:204
#, c-format
msgid "%s: ambiguous redirect"
msgstr "%s: 模稜兩å¯çš„é‡å®šå‘"
-#: redir.c:178
+#: redir.c:208
#, c-format
msgid "%s: cannot overwrite existing file"
msgstr "%s: 無法覆寫已存在的檔案"
-#: redir.c:183
+#: redir.c:213
#, c-format
msgid "%s: restricted: cannot redirect output"
msgstr "%s: å—é™çš„: 無法é‡å®šå‘輸出"
-#: redir.c:188
+#: redir.c:218
#, c-format
msgid "cannot create temp file for here-document: %s"
-msgstr "無法為立å³æ–‡ä»¶å»ºç«‹è‡¨æ™‚檔案: %s"
+msgstr "無法為立å³æª”案建立暫存檔案: %s"
-#: redir.c:192
+#: redir.c:222
#, c-format
msgid "%s: cannot assign fd to variable"
msgstr "%s: 無法將檔案æ述符指派給變數"
-#: redir.c:591
+#: redir.c:649
msgid "/dev/(tcp|udp)/host/port not supported without networking"
msgstr "沒有網路時ä¸æ”¯æ´ /dev/(tcp|udp)/host/port"
-#: redir.c:875 redir.c:990 redir.c:1051 redir.c:1221
+#: redir.c:938 redir.c:1053 redir.c:1114 redir.c:1284
msgid "redirection error: cannot duplicate fd"
msgstr "é‡å®šå‘錯誤: 無法複製檔案æ述符"
-#: shell.c:343
+#: shell.c:347
msgid "could not find /tmp, please create!"
-msgstr "無法找到 /tmp ,請建立"
+msgstr "無法找到 /tmp,請建立"
-#: shell.c:347
+#: shell.c:351
msgid "/tmp must be a valid directory name"
msgstr "/tmp 必須為有效的目錄å稱"
-#: shell.c:798
+#: shell.c:804
msgid "pretty-printing mode ignored in interactive shells"
msgstr "å·²åœ¨äº’å‹•å¼ shell 中忽略美化輸出模å¼"
-#: shell.c:940
+#: shell.c:948
#, c-format
msgid "%c%c: invalid option"
msgstr "%c%c:無效é¸é …"
-#: shell.c:1299
+#: shell.c:1319
#, c-format
msgid "cannot set uid to %d: effective uid %d"
msgstr "無法設定 UID 至 %d:有效的 UID %d"
-#: shell.c:1306
+#: shell.c:1330
#, c-format
msgid "cannot set gid to %d: effective gid %d"
msgstr "無法設定 GID 至 %d:有效的 GID %d"
-#: shell.c:1494
+#: shell.c:1518
msgid "cannot start debugger; debugging mode disabled"
msgstr "無法開啟åµéŒ¯å™¨ï¼›åµéŒ¯æ¨¡å¼å·²åœç”¨"
-#: shell.c:1608
+#: shell.c:1632
#, c-format
msgid "%s: Is a directory"
msgstr "%s: 是一個目錄"
-#: shell.c:1826
+#: shell.c:1881
msgid "I have no name!"
msgstr "我沒有åå­—ï¼"
-#: shell.c:1980
+#: shell.c:2035
#, c-format
msgid "GNU bash, version %s-(%s)\n"
msgstr "GNU bash,版本 %s-(%s)\n"
-#: shell.c:1981
+#: shell.c:2036
#, c-format
msgid ""
"Usage:\t%s [GNU long option] [option] ...\n"
@@ -1679,330 +1735,326 @@ msgstr ""
"用法:\t%s [GNU é•·é¸é …] [é¸é …] …\n"
"\t%s [GNU é•·é¸é …] [é¸é …] 指令稿檔案 …\n"
-#: shell.c:1983
+#: shell.c:2038
msgid "GNU long options:\n"
msgstr "GNU é•·é¸é …:\n"
-#: shell.c:1987
+#: shell.c:2042
msgid "Shell options:\n"
msgstr "Shell é¸é …:\n"
-#: shell.c:1988
+#: shell.c:2043
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 <shopt é¸é …>\t\t(僅é©åˆå‘¼å«)\n"
-#: shell.c:2007
+#: shell.c:2062
#, c-format
msgid "\t-%s or -o option\n"
msgstr "\t-%s or -o é¸é …\n"
-#: shell.c:2013
+#: shell.c:2068
#, c-format
msgid "Type `%s -c \"help set\"' for more information about shell options.\n"
msgstr "輸入「%s -c \"help set\"ã€æ›´å¤šé—œæ–¼ shell é¸é …的訊æ¯ã€‚\n"
-#: shell.c:2014
+#: shell.c:2069
#, 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:2015
+#: shell.c:2070
#, c-format
msgid "Use the `bashbug' command to report bugs.\n"
-msgstr "使用「bashbugã€å‘½ä»¤é€šå ±ç¨‹å¼éŒ¯èª¤ã€‚\n"
+msgstr "使用「bashbugã€æŒ‡ä»¤é€šå ±ç¨‹å¼éŒ¯èª¤ã€‚\n"
-#: shell.c:2017
+#: shell.c:2072
#, c-format
msgid "bash home page: <http://www.gnu.org/software/bash>\n"
msgstr "bash 官網:<http://www.gnu.org/software/bash>\n"
-#: shell.c:2018
+#: shell.c:2073
#, c-format
msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
msgstr "GNU 軟體的常見使用說明:<http://www.gnu.org/gethelp/>\n"
-#: sig.c:730
+#: sig.c:757
#, c-format
msgid "sigprocmask: %d: invalid operation"
-msgstr "sigprocmask: %d:無效æ“作"
+msgstr "sigprocmask:%d:無效æ“作"
-#: siglist.c:48
+#: siglist.c:47
msgid "Bogus signal"
msgstr "å½è¨Šè™Ÿ"
-#: siglist.c:51
+#: siglist.c:50
msgid "Hangup"
-msgstr "çµæŸé€šè©±"
+msgstr "掛斷"
-#: siglist.c:55
+#: siglist.c:54
msgid "Interrupt"
-msgstr "中斷"
+msgstr "中止"
-#: siglist.c:59
+#: siglist.c:58
msgid "Quit"
-msgstr "退出"
+msgstr "çµæŸ"
-#: siglist.c:63
+#: siglist.c:62
msgid "Illegal instruction"
-msgstr "éžæ³•çš„指令"
+msgstr "無效指令"
-#: siglist.c:67
+#: siglist.c:66
msgid "BPT trace/trap"
msgstr "斷點追蹤/陷阱"
-#: siglist.c:75
+#: siglist.c:74
msgid "ABORT instruction"
msgstr "放棄指令"
-#: siglist.c:79
+#: siglist.c:78
msgid "EMT instruction"
msgstr "模擬器陷阱指令"
-#: siglist.c:83
+#: siglist.c:82
msgid "Floating point exception"
-msgstr "浮點數異常"
+msgstr "期望浮點數"
-#: siglist.c:87
+#: siglist.c:86
msgid "Killed"
-msgstr "å·²ç é™¤"
+msgstr "強制çµæŸ"
-#: siglist.c:91
+#: siglist.c:90
msgid "Bus error"
msgstr "匯æµæŽ’錯誤"
-#: siglist.c:95
+#: siglist.c:94
msgid "Segmentation fault"
-msgstr "å€æ®µéŒ¯èª¤"
+msgstr "程å¼è¨˜æ†¶é«”å€æ®µéŒ¯èª¤"
-#: siglist.c:99
+#: siglist.c:98
msgid "Bad system call"
-msgstr "錯誤的系統呼å«"
+msgstr "無效系統呼å«"
-#: siglist.c:103
+#: siglist.c:102
msgid "Broken pipe"
-msgstr "管é“中斷"
+msgstr "管線æ壞"
-#: siglist.c:107
+#: siglist.c:106
msgid "Alarm clock"
msgstr "鬧é˜"
-#: siglist.c:111
+#: siglist.c:110
msgid "Terminated"
-msgstr "已終止"
+msgstr "終止"
-#: siglist.c:115
+#: siglist.c:114
msgid "Urgent IO condition"
msgstr "緊急 I/O ç‹€æ³"
-#: siglist.c:119
+#: siglist.c:118
msgid "Stopped (signal)"
-msgstr "å·²åœæ­¢(訊號)"
+msgstr "åœæ­¢ï¼ˆä¿¡è™Ÿï¼‰"
-#: siglist.c:127
+#: siglist.c:126
msgid "Continue"
msgstr "繼續"
-#: siglist.c:135
+#: siglist.c:134
msgid "Child death or stop"
msgstr "å­è¡Œç¨‹å·²æ­»æˆ–者åœæ­¢"
-#: siglist.c:139
+#: siglist.c:138
msgid "Stopped (tty input)"
-msgstr "å·²åœæ­¢(tty 輸入)"
+msgstr "åœæ­¢ï¼ˆtty 輸入)"
-#: siglist.c:143
+#: siglist.c:142
msgid "Stopped (tty output)"
-msgstr "å·²åœæ­¢(tty 輸出)"
+msgstr "åœæ­¢ï¼ˆtty 輸出)"
-#: siglist.c:147
+#: siglist.c:146
msgid "I/O ready"
msgstr "I/O 就緒"
-#: siglist.c:151
+#: siglist.c:150
msgid "CPU limit"
msgstr "CPU é™åˆ¶"
-#: siglist.c:155
+#: siglist.c:154
msgid "File limit"
msgstr "檔案é™åˆ¶"
-#: siglist.c:159
+#: siglist.c:158
msgid "Alarm (virtual)"
msgstr "警報(虛擬)"
-#: siglist.c:163
+#: siglist.c:162
msgid "Alarm (profile)"
msgstr "警報(å´å¯«)"
-#: siglist.c:167
+#: siglist.c:166
msgid "Window changed"
-msgstr "視窗已變更"
+msgstr "已變更視窗"
-#: siglist.c:171
+#: siglist.c:170
msgid "Record lock"
msgstr "記錄鎖"
-#: siglist.c:175
+#: siglist.c:174
msgid "User signal 1"
msgstr "使用者訊號 1"
-#: siglist.c:179
+#: siglist.c:178
msgid "User signal 2"
msgstr "使用者訊號 2"
-#: siglist.c:183
+#: siglist.c:182
msgid "HFT input data pending"
msgstr "HFT 待輸入資料"
-#: siglist.c:187
+#: siglist.c:186
msgid "power failure imminent"
msgstr "å³å°‡åœæ­¢é›»æº"
-#: siglist.c:191
+#: siglist.c:190
msgid "system crash imminent"
msgstr "系統å³å°‡å´©æ½°"
-#: siglist.c:195
+#: siglist.c:194
msgid "migrate process to another CPU"
msgstr "é·ç§»è¡Œç¨‹è‡³å¦ä¸€å€‹ CPU"
-#: siglist.c:199
+#: siglist.c:198
msgid "programming error"
msgstr "程å¼è¨­è¨ˆéŒ¯èª¤"
-#: siglist.c:203
+#: siglist.c:202
msgid "HFT monitor mode granted"
msgstr "已授予 HFT 監視模å¼"
-#: siglist.c:207
+#: siglist.c:206
msgid "HFT monitor mode retracted"
-msgstr "已撤銷 HFT 監視模å¼"
+msgstr "已復原 HFT 監視模å¼"
-#: siglist.c:211
+#: siglist.c:210
msgid "HFT sound sequence has completed"
msgstr "å·²å®Œæˆ HFT è²éŸ³åºåˆ—"
-#: siglist.c:215
+#: siglist.c:214
msgid "Information request"
msgstr "資訊請求"
-#: siglist.c:223
-msgid "Unknown Signal #"
-msgstr "ä¸æ˜Žè¨Šè™Ÿ #"
-
-#: siglist.c:225
+#: siglist.c:222 siglist.c:224
#, c-format
msgid "Unknown Signal #%d"
msgstr "ä¸æ˜Žè¨Šè™Ÿ #%d"
-#: subst.c:1454 subst.c:1644
+#: subst.c:1476 subst.c:1666
#, c-format
msgid "bad substitution: no closing `%s' in %s"
-msgstr "錯誤的替æ›: 在 %2$s 中沒有閉åˆçš„「%1$sã€"
+msgstr "錯誤的å–代: 在 %2$s 中沒有閉åˆçš„「%1$sã€"
-#: subst.c:3231
+#: subst.c:3281
#, c-format
msgid "%s: cannot assign list to array member"
msgstr "%s: 無法將串列指派給陣列æˆå“¡"
-#: subst.c:5789 subst.c:5805
+#: subst.c:5910 subst.c:5926
msgid "cannot make pipe for process substitution"
-msgstr "無法為行程替æ›å»ºç«‹ç®¡é“"
+msgstr "無法為行程å–代建立管é“"
-#: subst.c:5851
+#: subst.c:5985
msgid "cannot make child for process substitution"
-msgstr "無法為行程替æ›å»ºç«‹å­è¡Œç¨‹"
+msgstr "無法為行程å–代建立å­è¡Œç¨‹"
-#: subst.c:5920
+#: subst.c:6059
#, c-format
msgid "cannot open named pipe %s for reading"
msgstr "無法開啟命åç®¡é“ %s 進 readline-"
-#: subst.c:5922
+#: subst.c:6061
#, c-format
msgid "cannot open named pipe %s for writing"
msgstr "無法開啟命åç®¡é“ %s 進行寫入"
-#: subst.c:5945
+#: subst.c:6084
#, c-format
msgid "cannot duplicate named pipe %s as fd %d"
msgstr "無法將命åç®¡é“ %s åšç‚ºæª”案æ述符 %d 複製"
-#: subst.c:6062
+#: subst.c:6213
msgid "command substitution: ignored null byte in input"
-msgstr "指令替æ›ï¼šåœ¨è¼¸å…¥ä¸­å¿½ç•¥äº†ç©ºä½å…ƒçµ„"
+msgstr "指令å–代:在輸入中忽略了空ä½å…ƒçµ„"
-#: subst.c:6190
+#: subst.c:6353
msgid "cannot make pipe for command substitution"
-msgstr "無法為命令替æ›å»ºç«‹ç®¡é“"
+msgstr "無法為指令å–代建立管é“"
-#: subst.c:6233
+#: subst.c:6397
msgid "cannot make child for command substitution"
-msgstr "無法為命令替æ›å»ºç«‹å­è¡Œç¨‹"
+msgstr "無法為指令å–代建立å­è¡Œç¨‹"
-#: subst.c:6259
+#: subst.c:6423
msgid "command_substitute: cannot duplicate pipe as fd 1"
msgstr "command_substitute: 無法將管é“複製為檔案æ述符 1"
-#: subst.c:6710 subst.c:9623
+#: subst.c:6883 subst.c:9952
#, c-format
msgid "%s: invalid variable name for name reference"
msgstr "%s: 無效的引用變數å"
-#: subst.c:6806 subst.c:6824 subst.c:6979
+#: subst.c:6979 subst.c:6997 subst.c:7169
#, c-format
msgid "%s: invalid indirect expansion"
-msgstr "%s: 無效的間接擴展"
+msgstr "%s: 無效的間接擴充"
-#: subst.c:6840 subst.c:6987
+#: subst.c:7013 subst.c:7177
#, c-format
msgid "%s: invalid variable name"
msgstr "%s:無效的變數å稱"
-#: subst.c:7056
+#: subst.c:7256
#, c-format
msgid "%s: parameter not set"
msgstr "%s:åƒæ•¸æœªè¨­å®š"
-#: subst.c:7058
+#: subst.c:7258
#, c-format
msgid "%s: parameter null or not set"
msgstr "%s: åƒæ•¸ç‚ºç©ºæˆ–未設定"
-#: subst.c:7295 subst.c:7310
+#: subst.c:7503 subst.c:7518
#, c-format
msgid "%s: substring expression < 0"
msgstr "%s: å­ä¸²è¡¨ç¤ºå¼ < 0"
-#: subst.c:8973 subst.c:8994
+#: subst.c:9281 subst.c:9302
#, c-format
msgid "%s: bad substitution"
-msgstr "%s: 錯誤的替æ›"
+msgstr "%s: 錯誤的å–代"
-#: subst.c:9082
+#: subst.c:9390
#, c-format
msgid "$%s: cannot assign in this way"
msgstr "$%s: 無法如此指派"
-#: subst.c:9485
+#: subst.c:9814
msgid ""
"future versions of the shell will force evaluation as an arithmetic "
"substitution"
-msgstr "未來版本的 shell 會強制以算術替æ›æ±‚值"
+msgstr "未來版本的 shell 會強制以算術å–代求值"
-#: subst.c:10043
+#: subst.c:10367
#, c-format
msgid "bad substitution: no closing \"`\" in %s"
-msgstr "錯誤的替æ›: 在 %s 中沒有閉åˆçš„「`ã€"
+msgstr "錯誤的å–代: 在 %s 中沒有閉åˆçš„「`ã€"
-#: subst.c:11070
+#: subst.c:11434
#, c-format
msgid "no match: %s"
-msgstr "無匹é…: %s"
+msgstr "無符åˆ: %s"
#: test.c:147
msgid "argument expected"
-msgstr "需è¦å¼•æ•¸"
+msgstr "需è¦åƒæ•¸"
#: test.c:156
#, c-format
@@ -2018,117 +2070,123 @@ msgstr "需è¦ã€Œ)ã€"
msgid "`)' expected, found %s"
msgstr "需è¦ã€Œ)ã€ï¼Œå¾—到 %s"
-#: test.c:282 test.c:750 test.c:753
-#, c-format
-msgid "%s: unary operator expected"
-msgstr "%s: 需è¦ä¸€å…ƒè¡¨ç¤ºå¼"
-
-#: test.c:469 test.c:793
+#: test.c:466 test.c:799
#, c-format
msgid "%s: binary operator expected"
msgstr "%s: 需è¦äºŒå…ƒè¡¨ç¤ºå¼"
-#: test.c:875
+#: test.c:756 test.c:759
+#, c-format
+msgid "%s: unary operator expected"
+msgstr "%s: 需è¦ä¸€å…ƒè¡¨ç¤ºå¼"
+
+#: test.c:881
msgid "missing `]'"
msgstr "缺少「]ã€"
-#: trap.c:216
+#: test.c:899
+#, fuzzy, c-format
+msgid "syntax error: `%s' unexpected"
+msgstr "語法錯誤:「;ã€æ„外"
+
+#: trap.c:220
msgid "invalid signal number"
-msgstr "無效信號數字"
+msgstr "無效訊號數字"
-#: trap.c:320
+#: trap.c:325
#, c-format
msgid "trap handler: maximum trap handler level exceeded (%d)"
msgstr "æ•æ‰è™•ç†å‡½å¼ï¼šé”到最大æ•æ‰è™•ç†å‡½å¼ç­‰ç´š (%d)"
-#: trap.c:408
+#: trap.c:414
#, c-format
msgid "run_pending_traps: bad value in trap_list[%d]: %p"
msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p"
-#: trap.c:412
+#: trap.c:418
#, 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:470
+#: trap.c:487
#, c-format
msgid "trap_handler: bad signal %d"
-msgstr "trap_handler:ä¸ç•¶çš„信號 %d"
+msgstr "trap_handler:ä¸ç•¶çš„訊號 %d"
-#: variables.c:412
+#: variables.c:421
#, c-format
msgid "error importing function definition for `%s'"
msgstr "錯誤,輸入的函數定義為「%sã€"
-#: variables.c:821
+#: variables.c:833
#, c-format
msgid "shell level (%d) too high, resetting to 1"
-msgstr "shell 層次 (%d) 太高,é‡ç½®ç‚º 1"
+msgstr "shell 層次 (%d) 太高,é‡è¨­ç‚º 1"
-#: variables.c:2655
+#: variables.c:2674
msgid "make_local_variable: no function context at current scope"
-msgstr "make_local_variable: 當å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
+msgstr "make_local_variable: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
-#: variables.c:2674
+#: variables.c:2693
#, c-format
msgid "%s: variable may not be assigned value"
msgstr "%s: 變數ä¸å¯æŒ‡æ´¾å€¼"
-#: variables.c:3453
+#: variables.c:3475
#, c-format
msgid "%s: assigning integer to name reference"
msgstr "%s:指定數字至å稱åƒè€ƒ"
-#: variables.c:4365
+#: variables.c:4404
msgid "all_local_variables: no function context at current scope"
-msgstr "all_local_variables: 當å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
+msgstr "all_local_variables: ç›®å‰ä½œç”¨åŸŸä¸­æ²’有函數語境"
-#: variables.c:4698
+#: variables.c:4771
#, c-format
msgid "%s has null exportstr"
msgstr "%s 有空的 exportstr"
-#: variables.c:4703 variables.c:4712
+#: variables.c:4776 variables.c:4785
#, c-format
msgid "invalid character %d in exportstr for %s"
msgstr "%2$s 的 exportstr 中有無效的字元 %1$d"
-#: variables.c:4718
+#: variables.c:4791
#, c-format
msgid "no `=' in exportstr for %s"
msgstr "%s çš„ exportstr 中沒有「=ã€"
-#: variables.c:5243
+#: variables.c:5331
msgid "pop_var_context: head of shell_variables not a function context"
msgstr "pop_var_context: shell_variables çš„å‰ç«¯ä¸æ˜¯å‡½æ•¸èªžå¢ƒ"
-#: variables.c:5256
+#: variables.c:5344
msgid "pop_var_context: no global_variables context"
msgstr "pop_var_context: 沒有 global_variables 語境"
-#: variables.c:5336
+#: variables.c:5424
msgid "pop_scope: head of shell_variables not a temporary environment scope"
msgstr "pop_scope: shell_variables çš„å‰ç«¯ä¸æ˜¯è‡¨æ™‚環境作用域"
-#: variables.c:6272
+#: variables.c:6387
#, c-format
msgid "%s: %s: cannot open as FILE"
msgstr "%s: %s: 無法åšç‚ºæª”案開啟"
-#: variables.c:6277
+#: variables.c:6392
#, c-format
msgid "%s: %s: invalid value for trace file descriptor"
msgstr "%s: %s: 追蹤檔案æ述符的值無效"
-#: variables.c:6322
+#: variables.c:6437
#, c-format
msgid "%s: %s: compatibility value out of range"
msgstr "%s: %s: 相容版本數值超出範åœ"
#: version.c:46 version2.c:46
-msgid "Copyright (C) 2018 Free Software Foundation, Inc."
+#, fuzzy
+msgid "Copyright (C) 2020 Free Software Foundation, Inc."
msgstr "著作權所有 (C) 2018 自由軟體基金會"
#: version.c:47 version2.c:47
@@ -2136,8 +2194,8 @@ msgid ""
"License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl."
"html>\n"
msgstr ""
-"許å¯è­‰ GPLv3+: GNU GPL 許å¯è­‰ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 <http://gnu.org/licenses/gpl."
-"html>\n"
+"授權æ¢æ¬¾ GPLv3+: GNU GPL 授權æ¢æ¬¾ç¬¬ä¸‰ç‰ˆæˆ–者更新版本 <http://gnu.org/licenses/"
+"gpl.html>\n"
#: version.c:86 version2.c:86
#, c-format
@@ -2146,7 +2204,7 @@ 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."
@@ -2185,8 +2243,8 @@ msgid ""
"bind [-lpsvPSVX] [-m keymap] [-f filename] [-q name] [-u name] [-r keyseq] [-"
"x keyseq:shell-command] [keyseq:readline-function or readline-command]"
msgstr ""
-"bind [-lpvsPSVX] [-m éµå°æ˜ ] [-f 檔å] [-q å稱] [-u å稱] [-r éµåºåˆ—] [-x éµ"
-"åºåˆ—:shell- 命令] [éµåºåˆ—:readline- 函數 或 readline- 命令]"
+"bind [-lpvsPSVX] [-m 按éµæ˜ å°„] [-f 檔å] [-q å稱] [-u å稱] [-r 按éµåºåˆ—] [-"
+"x 按éµåºåˆ—:shell-指令] [按éµåºåˆ—:readline-函數 或 readline-指令]"
#: builtins.c:56
msgid "break [n]"
@@ -2198,7 +2256,7 @@ msgstr "continue [n]"
#: builtins.c:60
msgid "builtin [shell-builtin [arg ...]]"
-msgstr "builtin [shell 內建 [引數 …]]"
+msgstr "builtin [shell 內建物件 [åƒæ•¸ …]]"
#: builtins.c:63
msgid "caller [expr]"
@@ -2214,14 +2272,16 @@ msgstr "pwd [-LP]"
#: builtins.c:76
msgid "command [-pVv] command [arg ...]"
-msgstr "command [-pVv] 命令 [引數 …]"
+msgstr "command [-pVv] 指令 [åƒæ•¸ …]"
#: builtins.c:78
-msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]"
+#, fuzzy
+msgid "declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]"
msgstr "declare [-aAfFgilnrtux] [-p] [å稱[=值] …]"
#: builtins.c:80
-msgid "typeset [-aAfFgilnrtux] [-p] name[=value] ..."
+#, fuzzy
+msgid "typeset [-aAfFgiIlnrtux] [-p] name[=value] ..."
msgstr "typeset [-aAfFgilnrtux] [-p] å稱[=值] ..."
#: builtins.c:82
@@ -2230,11 +2290,11 @@ msgstr "local [option] å稱[=值] …"
#: builtins.c:85
msgid "echo [-neE] [arg ...]"
-msgstr "echo [-neE] [引數 …]"
+msgstr "echo [-neE] [åƒæ•¸ …]"
#: builtins.c:89
msgid "echo [-n] [arg ...]"
-msgstr "echo [-n] [引數 …]"
+msgstr "echo [-n] [åƒæ•¸ …]"
#: builtins.c:92
msgid "enable [-a] [-dnps] [-f filename] [name ...]"
@@ -2242,15 +2302,17 @@ msgstr "enable [-a] [-dnps] [-f 檔å] [å稱 …]"
#: builtins.c:94
msgid "eval [arg ...]"
-msgstr "eval [引數 …]"
+msgstr "eval [åƒæ•¸ …]"
#: builtins.c:96
-msgid "getopts optstring name [arg]"
-msgstr "getopts é¸é …字串 å稱 [引數]"
+#, fuzzy
+msgid "getopts optstring name [arg ...]"
+msgstr "getopts é¸é …字串 å稱 [åƒæ•¸]"
#: builtins.c:98
-msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]"
-msgstr "exec [-cl] [-a å稱] [命令 [引數 …]] [é‡å®šå‘ …]"
+#, fuzzy
+msgid "exec [-cl] [-a name] [command [argument ...]] [redirection ...]"
+msgstr "exec [-cl] [-a å稱] [指令 [åƒæ•¸ …]] [é‡å®šå‘ …]"
#: builtins.c:100
msgid "exit [n]"
@@ -2262,7 +2324,7 @@ msgstr "logout [n]"
#: builtins.c:105
msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]"
-msgstr "fc [-e 編輯器å] [-lnr] [起始] [終çµ] 或 fc -s [模å¼=替æ›ä¸²] [命令]"
+msgstr "fc [-e 編輯器å] [-lnr] [起始] [終止] 或 fc -s [模å¼=å–代串] [指令]"
#: builtins.c:109
msgid "fg [job_spec]"
@@ -2285,12 +2347,12 @@ msgid ""
"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg "
"[arg...]"
msgstr ""
-"history [-c] [-d å移é‡] [n] 或 history -anrw [檔å] 或 history -ps 引數 [åƒ"
+"history [-c] [-d å移é‡] [n] 或 history -anrw [檔å] 或 history -ps åƒæ•¸ [åƒ"
"數…]"
#: builtins.c:127
msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]"
-msgstr "jobs [-lnprs] [工作è¦æ ¼ …] 或 jobs -x 命令 [引數]"
+msgstr "jobs [-lnprs] [工作è¦æ ¼ …] 或 jobs -x 指令 [åƒæ•¸]"
#: builtins.c:131
msgid "disown [-h] [-ar] [jobspec ... | pid ...]"
@@ -2301,12 +2363,12 @@ msgid ""
"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l "
"[sigspec]"
msgstr ""
-"kill [-s 訊號è¦æ ¼ | -n 訊號編號 | - 訊號è¦æ ¼] 行程識別號 | 工作è¦æ ¼ … 或 "
-"kill -l [訊號è¦æ ¼]"
+"kill [-s 訊號è¦æ ¼ | -n 訊號編號 | -訊號è¦æ ¼] 行程識別碼 | 工作è¦æ ¼ … 或 kill "
+"-l [訊號è¦æ ¼]"
#: builtins.c:136
msgid "let arg [arg ...]"
-msgstr "let 引數 [引數 …]"
+msgstr "let åƒæ•¸ [åƒæ•¸ …]"
#: builtins.c:138
msgid ""
@@ -2314,7 +2376,7 @@ msgid ""
"prompt] [-t timeout] [-u fd] [name ...]"
msgstr ""
"read [-ers] [-a 陣列] [-d 分隔符] [-i ç·©è¡å€æ–‡å­—] [-n 讀å–字元數] [-N 讀å–å­—"
-"符數] [-p æ示符] [-t 逾時] [-u 檔案æ述符] [å稱 …]"
+"元數] [-p æ示符] [-t 逾時] [-u 檔案æ述符] [å稱 …]"
#: builtins.c:140
msgid "return [n]"
@@ -2322,7 +2384,7 @@ msgstr "return [n]"
#: builtins.c:142
msgid "set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]"
-msgstr "set [--abefhkmnptuvxBCHP] [-o é¸é …å] [--] [引數 …]"
+msgstr "set [--abefhkmnptuvxBCHP] [-o é¸é …å] [--] [åƒæ•¸ …]"
#: builtins.c:144
msgid "unset [-f] [-v] [-n] [name ...]"
@@ -2342,11 +2404,11 @@ msgstr "shift [n]"
#: builtins.c:152
msgid "source filename [arguments]"
-msgstr "source 檔å [引數]"
+msgstr "source 檔å [åƒæ•¸]"
#: builtins.c:154
msgid ". filename [arguments]"
-msgstr "。檔å [引數]"
+msgstr ". 檔å [åƒæ•¸]"
#: builtins.c:157
msgid "suspend [-f]"
@@ -2358,11 +2420,11 @@ msgstr "test [表示å¼]"
#: builtins.c:162
msgid "[ arg... ]"
-msgstr "[ 引數… ]"
+msgstr "[ åƒæ•¸â€¦ ]"
#: builtins.c:166
msgid "trap [-lp] [[arg] signal_spec ...]"
-msgstr "trap [-lp] [[引數] 訊號è¦æ ¼ …]"
+msgstr "trap [-lp] [[åƒæ•¸] 訊號è¦æ ¼ …]"
#: builtins.c:168
msgid "type [-afptP] name [name ...]"
@@ -2377,24 +2439,25 @@ msgid "umask [-p] [-S] [mode]"
msgstr "umask [-p] [-S] [模å¼]"
#: builtins.c:177
-msgid "wait [-fn] [id ...]"
+#, fuzzy
+msgid "wait [-fn] [-p var] [id ...]"
msgstr "wait [-fn] [編號 …]"
#: builtins.c:181
msgid "wait [pid ...]"
-msgstr "wait [行程識別號 …]"
+msgstr "wait [行程識別碼 …]"
#: builtins.c:184
msgid "for NAME [in WORDS ... ] ; do COMMANDS; done"
-msgstr "for å稱 [in å­—è©ž … ] ; do 命令 ; done"
+msgstr "for å稱 [in å­—è©ž … ] ; do 指令 ; done"
#: builtins.c:186
msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done"
-msgstr "for (( 表示å¼1; 表示å¼2; 表示å¼3 )); do 命令 ; done"
+msgstr "for (( 表示å¼1; 表示å¼2; 表示å¼3 )); do 指令 ; done"
#: builtins.c:188
msgid "select NAME [in WORDS ... ;] do COMMANDS; done"
-msgstr "select NAME [in 字詞 … ;] do 命令 ; done"
+msgstr "select NAME [in 字詞 … ;] do 指令 ; done"
#: builtins.c:190
msgid "time [-p] pipeline"
@@ -2402,33 +2465,33 @@ msgstr "time [-p] 管é“"
#: builtins.c:192
msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac"
-msgstr "case è©ž in [æ¨¡å¼ [| 模å¼]…) 命令 ;;]… esac"
+msgstr "case è©ž in [æ¨¡å¼ [| 模å¼]…) 指令 ;;]… esac"
#: builtins.c:194
msgid ""
"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else "
"COMMANDS; ] fi"
-msgstr "if 命令 ; then 命令 ; [ elif 命令 ; then 命令 ; ]… [ else 命令 ; ] fi"
+msgstr "if 指令 ; then 指令 ; [ elif 指令 ; then 指令 ; ]… [ else 指令 ; ] fi"
#: builtins.c:196
msgid "while COMMANDS; do COMMANDS; done"
-msgstr "while 命令 ; do 命令 ; done"
+msgstr "while 指令 ; do 指令 ; done"
#: builtins.c:198
msgid "until COMMANDS; do COMMANDS; done"
-msgstr "until 命令 ; do 命令 ; done"
+msgstr "until 指令 ; do 指令 ; done"
#: builtins.c:200
msgid "coproc [NAME] command [redirections]"
-msgstr "coproc [å稱] 命令 [é‡å®šå‘]"
+msgstr "coproc [å稱] 指令 [é‡å®šå‘]"
#: builtins.c:202
msgid "function name { COMMANDS ; } or name () { COMMANDS ; }"
-msgstr "function å稱 { 命令 ; } 或 name () { 命令 ; }"
+msgstr "function å稱 { 指令 ; } 或 name () { 指令 ; }"
#: builtins.c:204
msgid "{ COMMANDS ; }"
-msgstr "{ 命令 ; }"
+msgstr "{ 指令 ; }"
#: builtins.c:206
msgid "job_spec [&]"
@@ -2464,21 +2527,23 @@ msgstr "shopt [-pqsu] [-o] [é¸é …å …]"
#: builtins.c:228
msgid "printf [-v var] format [arguments]"
-msgstr "printf [-v var] æ ¼å¼ [引數]"
+msgstr "printf [-v var] æ ¼å¼ [åƒæ•¸]"
#: builtins.c:231
+#, fuzzy
msgid ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o option] [-A action] [-G globpat] [-"
-"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
+"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S "
"suffix] [name ...]"
msgstr ""
"complete [-abcdefgjksuv] [-pr] [-DEI] [-o é¸é …] [-A 動作] [-G 全域模å¼] [-W "
-"詞語列表] [-F 函數] [-C 命令] [-X éŽæ¿¾æ¨¡å¼] [-P 字首] [-S å­—å°¾] [å稱 …]"
+"詞語列表] [-F 函數] [-C 指令] [-X éŽæ¿¾æ¨¡å¼] [-P 字首] [-S å­—å°¾] [å稱 …]"
#: builtins.c:235
+#, fuzzy
msgid ""
-"compgen [-abcdefgjksuv] [-o option] [-A action] [-G globpat] [-W wordlist] "
-"[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] [word]"
+"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]"
@@ -2524,18 +2589,18 @@ msgid ""
msgstr ""
"定義或顯示別å。\n"
" \n"
-" ä¸å¸¶å¼•æ•¸æ™‚,「aliasã€ä»¥å¯é‡ç”¨çš„æ ¼å¼\n"
+" ä¸å¸¶åƒæ•¸æ™‚,「aliasã€ä»¥å¯é‡ç”¨çš„æ ¼å¼\n"
" 「alias å稱=值ã€åœ¨æ¨™æº–輸出è£ç½®ä¸Šå°å‡ºåˆ¥å列表。\n"
" \n"
-" å¦å‰‡ï¼Œå°æ–¼æ¯å€‹çµ¦å®šå€¼çš„å稱定義一個別å。\n"
+" å¦å‰‡ï¼Œå°æ–¼æ¯å€‹æŒ‡å®šå€¼çš„å稱定義一個別å。\n"
" 值末尾的空格會使下一個字詞被檢測\n"
-" åšç‚ºåˆ¥å替æ›å±•é–‹ã€‚\n"
+" åšç‚ºåˆ¥åå–代展開。\n"
" \n"
" é¸é …:\n"
" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºæ‰€æœ‰çš„已定義別å\n"
" \n"
" 退出狀態:\n"
-" 除éžä¸€å€‹æ²’有定義的å字被åšç‚ºå¼•æ•¸æ供,å¦å‰‡ alias \n"
+" 除éžä¸€å€‹æ²’有定義的å字被åšç‚ºåƒæ•¸æ供,å¦å‰‡ alias \n"
" 回傳值為真。"
#: builtins.c:278
@@ -2547,12 +2612,12 @@ msgid ""
" \n"
" Return success unless a NAME is not an existing alias."
msgstr ""
-"從別å定義列表中刪除æ¯ä¸€å€‹ NAME。\n"
+"從別å定義列表中刪除æ¯ä¸€å€‹ <å稱>。\n"
" \n"
" é¸é …:\n"
" -a\t刪除所有的別å定義\n"
" \n"
-" 回傳æˆåŠŸï¼Œé™¤éž NAME ä¸æ˜¯ä¸€å€‹å·²å­˜åœ¨çš„別å。"
+" 回傳æˆåŠŸï¼Œé™¤éž <å稱> ä¸æ˜¯ä¸€å€‹å·²å­˜åœ¨çš„別å。"
#: builtins.c:291
msgid ""
@@ -2595,36 +2660,36 @@ msgid ""
" Exit Status:\n"
" bind returns 0 unless an unrecognized option is given or an error occurs."
msgstr ""
-"設定 Readline éµç¹«çµå’Œè®Šæ•¸ã€‚\n"
+"設定 Readline 按éµç¶å®šå’Œè®Šæ•¸ã€‚\n"
" \n"
-" 繫çµä¸€å€‹éµåºåˆ—到一個 Readline 函數或者巨集,或者設定一個\n"
-" Readline 變數。éžé¸é …引數的語法和 ~/.inputrc 檔案中的等\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-"
+" -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"
+" -P 列出函數å稱和ç¶å®šã€‚\n"
+" -p 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出函數å稱和ç¶å®šã€‚\n"
+" -S 列出å¯ä»¥å•Ÿå‹•å·¨é›†çš„按éµåºåˆ—以åŠå®ƒå€‘的值\n"
" -s 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出å¯ä»¥å•Ÿå‹•å·¨é›†çš„éµä»¥åŠå®ƒå€‘çš„"
"值。\n"
" -V 列出變數å稱和它們的值\n"
" -v 以å¯ä»¥é‡æ–°ç”¨ä½œè¼¸å…¥çš„æ ¼å¼åˆ—出變數的å稱和它們的值\n"
" -q 函數å 查詢指定的函數å¯ä»¥ç”±å“ªäº›éµå•Ÿå‹•ã€‚\n"
-" -u 函數å å繫çµæ‰€æœ‰ç¹«çµè‡³æŒ‡å®šå‡½æ•¸çš„éµã€‚\n"
-" -r éµåºåˆ— å–消指定éµåºåˆ—的繫çµã€‚\n"
-" -f 檔å 從指定檔案中讀å–éµç¹«çµã€‚\n"
-" -x éµåºåˆ—:shell 命令\t當指定的éµåºåˆ—被輸入時,執行指定的 shell 命"
+" -u 函數å åç¶å®šæ‰€æœ‰ç¶å®šè‡³æŒ‡å®šå‡½æ•¸çš„éµã€‚\n"
+" -r 按éµåºåˆ— å–消指定按éµåºåˆ—çš„ç¶å®šã€‚\n"
+" -f 檔å 從指定檔案中讀å–按éµç¶å®šã€‚\n"
+" -x 按éµåºåˆ—:shell 指令\t當指定的按éµåºåˆ—被輸入時,執行指定的 shell 指"
"令。\n"
-" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x 繫çµçš„éµåºåˆ—和命令。\n"
+" -X 以å¯è¢«é‡ç”¨çš„å½¢å¼åˆ—出用 -x ç¶å®šçš„按éµåºåˆ—和指令。\n"
" \n"
" 退出狀態:\n"
-" 除éžä½¿ç”¨äº†ç„¡æ³•è¾¨èªçš„é¸é …或者錯誤發生,å¦å‰‡å›žå‚³ 0。"
+" 除éžä½¿ç”¨äº†ç„¡æ³•è­˜åˆ¥çš„é¸é …或者錯誤發生,å¦å‰‡å›žå‚³ 0。"
#: builtins.c:330
msgid ""
@@ -2656,8 +2721,8 @@ msgid ""
msgstr ""
"繼續 forã€while 或 until 迴圈。\n"
" \n"
-" ç¹¼çºŒç•¶å‰ FORã€WHILE 或 UNTIL 迴圈的下一步。\n"
-" 如果指定了 N, 則繼續當å‰çš„第 N é‡è¿´åœˆã€‚\n"
+" ç¹¼çºŒç›®å‰ FORã€WHILE 或 UNTIL 迴圈的下一步。\n"
+" 如果指定了 N, 則繼續目å‰çš„第 N é‡è¿´åœˆã€‚\n"
" \n"
" 退出狀態:\n"
" 退出狀態為 0 é™¤éž N ä¸å¤§æ–¼æˆ–等於 1。"
@@ -2675,15 +2740,15 @@ msgid ""
" Returns the exit status of SHELL-BUILTIN, or false if SHELL-BUILTIN is\n"
" not a shell builtin."
msgstr ""
-"執行 shell 內建。\n"
+"執行 shell 內建物件。\n"
" \n"
-" 帶 <åƒæ•¸> 執行 <shell 內建> 而ä¸åšå‘½ä»¤æŸ¥è©¢\n"
-" 在希望以 shell 函數的形å¼ä¾†é‡æ–°å¯¦ç¾ shell 內建,\n"
-" 但需è¦åœ¨å‡½æ•¸ä¹‹å…§åŸ·è¡Œè©² shell 內建的情æ³ä¸‹æœ‰ç”¨è™•ã€‚\n"
+" 帶 <åƒæ•¸> 執行 <shell 內建物件> 而ä¸åšæŒ‡ä»¤æŸ¥è©¢\n"
+" 在希望以 shell 函數的形å¼ä¾†é‡æ–°å¯¦ç¾ shell 內建物件,\n"
+" 但需è¦åœ¨å‡½æ•¸ä¹‹å…§åŸ·è¡Œè©² shell 內建物件的情æ³ä¸‹æœ‰ç”¨è™•ã€‚\n"
" \n"
" 退出狀態:\n"
-" 以 <shell 內建> 的退出狀態為準,或者如果 <shell 內建> ä¸æ˜¯ä¸€å€‹ shell 內建"
-"時\n"
+" 以 <shell 內建物件> 的退出狀態為準,或者如果 <shell 內建物件> ä¸æ˜¯ä¸€å€‹ "
+"shell 內建物件時\n"
" 回傳 false。"
#: builtins.c:369
@@ -2701,13 +2766,13 @@ msgid ""
" Returns 0 unless the shell is not executing a shell function or EXPR\n"
" is invalid."
msgstr ""
-"回傳當å‰å­å‘¼å«çš„語境。\n"
+"回傳目å‰å­å‘¼å«çš„語境。\n"
" \n"
" ä¸å¸¶æœ‰ EXPR 時,回傳「$line $filenameã€ã€‚帶有 EXPR 時,回傳\n"
" 「$line $subroutine $filenameã€ï¼›é€™å€‹é¡å¤–的資訊å¯ä»¥è¢«ç”¨æ–¼æä¾›\n"
" 堆疊追蹤。\n"
" \n"
-" EXPR 的值顯示了到當å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘個呼å«æ¡†æ ¼ï¼›é ‚部框格\n"
+" EXPR 的值顯示了到目å‰å‘¼å«æ¡†æ ¼éœ€è¦å›žåŽ»å¤šå°‘個呼å«æ¡†æ ¼ï¼›é ‚部框格\n"
" 是第 0 框格。\n"
" \n"
" 退出狀態:\n"
@@ -2760,30 +2825,30 @@ msgid ""
msgstr ""
"變更 shell 工作目錄。\n"
" \n"
-" 變更當å‰ç›®éŒ„至 DIR 目錄。é è¨­çš„ DIR 目錄是 shell 變數 HOME\n"
+" 變更目å‰ç›®éŒ„至 <目錄>。é è¨­çš„ <目錄> 是 shell 變數 HOME\n"
" 的值。\n"
" \n"
-" 變數 CDPATH 定義了å«æœ‰ DIR 的目錄æœå°‹è·¯å¾‘,其中ä¸åŒçš„目錄å稱由冒號 (:)分"
-"隔。\n"
-" 一個空的目錄å稱表示當å‰ç›®éŒ„。如果è¦åˆ‡æ›åˆ°çš„ DIR 由斜線 (/) 開頭,則 "
+" 變數 CDPATH 定義了å«æœ‰ <目錄> 的目錄æœå°‹è·¯å¾‘,其中ä¸åŒçš„目錄å稱由冒號 "
+"(:)分隔。\n"
+" 一個空的目錄å稱表示目å‰ç›®éŒ„。如果è¦åˆ‡æ›åˆ°çš„ <目錄> 由斜線 (/) 開頭,則 "
"CDPATH\n"
" 變數ä¸æœƒè¢«ä½¿ç”¨ã€‚\n"
" \n"
-" 如果路徑找ä¸åˆ°ï¼Œä¸¦ä¸” shell é¸é …「cdable_varsã€è¢«è¨­å®šï¼Œå‰‡å¼•æ•¸è©žè¢«å‡å®šç‚ºä¸€"
+" 如果路徑找ä¸åˆ°ï¼Œä¸¦ä¸” shell é¸é …「cdable_varsã€è¢«è¨­å®šï¼Œå‰‡åƒæ•¸è©žè¢«å‡å®šç‚ºä¸€"
"個\n"
-" 變數åã€‚å¦‚æžœè©²è®Šæ•¸æœ‰å€¼ï¼Œå‰‡å®ƒçš„å€¼è¢«ç•¶åš DIR 目錄。\n"
+" 變數åã€‚å¦‚æžœè©²è®Šæ•¸æœ‰å€¼ï¼Œå‰‡å®ƒçš„å€¼è¢«ç•¶åš <目錄>。\n"
" \n"
" é¸é …:\n"
-" -L\t強制跟隨符號éˆçµ: 在處ç†ã€Œ..ã€ä¹‹å¾Œè§£æž DIR 中的符號éˆçµã€‚\n"
-" -P\t使用實體目錄çµæ§‹è€Œä¸è·Ÿéš¨ç¬¦è™Ÿéˆçµ: 在處ç†ã€Œ..ã€ä¹‹å‰è§£æž DIR 中的符"
-"號éˆçµã€‚\n"
-" -e\t如果使用了 -P 引數,但ä¸èƒ½æˆåŠŸç¢ºå®šç•¶å‰å·¥ä½œç›®éŒ„時,回傳éžé›¶çš„回傳"
+" -L\t強制跟隨符號連çµ: 在處ç†ã€Œ..ã€ä¹‹å¾Œè§£æž <目錄> 中的符號連çµã€‚\n"
+" -P\t使用實體目錄çµæ§‹è€Œä¸è·Ÿéš¨ç¬¦è™Ÿé€£çµ: 在處ç†ã€Œ..ã€ä¹‹å‰è§£æž <目錄> 中"
+"的符號連çµã€‚\n"
+" -e\t如果使用了 -P åƒæ•¸ï¼Œä½†ä¸èƒ½æˆåŠŸç¢ºå®šç›®å‰å·¥ä½œç›®éŒ„時,回傳éžé›¶çš„回傳"
"值。\n"
-" -@\t在支æ´æ“´å±•å±¬æ€§çš„系統上,將一個有這些屬性的檔案當åšæœ‰æª”案屬性的目"
+" -@\t在支æ´æ“´å……屬性的系統上,將一個有這些屬性的檔案當åšæœ‰æª”案屬性的目"
"錄。\n"
" \n"
-" é è¨­æƒ…æ³ä¸‹è·Ÿéš¨ç¬¦è™Ÿéˆçµï¼Œå¦‚åŒæŒ‡å®šã€Œ-Lã€ã€‚\n"
-" 「..ã€ä½¿ç”¨ç§»é™¤å‘å‰ç›¸é„°ç›®éŒ„åæˆå“¡ç›´åˆ° DIR 開始或一個斜線的方å¼è™•ç†ã€‚\n"
+" é è¨­æƒ…æ³ä¸‹è·Ÿéš¨ç¬¦è™Ÿé€£çµï¼Œå¦‚åŒæŒ‡å®šã€Œ-Lã€ã€‚\n"
+" 「..ã€ä½¿ç”¨ç§»é™¤å‘å‰ç›¸é„°ç›®éŒ„åæˆå“¡ç›´åˆ° <目錄> 開始或一個斜線的方å¼è™•ç†ã€‚\n"
" \n"
" 退出狀態:\n"
" 如果目錄變更,或在使用 -P é¸é …時 $PWD 修改æˆåŠŸæ™‚回傳 0,å¦å‰‡éžé›¶ã€‚"
@@ -2803,16 +2868,16 @@ msgid ""
" Returns 0 unless an invalid option is given or the current directory\n"
" cannot be read."
msgstr ""
-"å°å‡ºç•¶å‰å·¥ä½œç›®éŒ„çš„å字。\n"
+"å°å‡ºç›®å‰å·¥ä½œç›®éŒ„çš„å字。\n"
" \n"
" é¸é …:\n"
-" -L\tå°å‡º $PWD 變數的值,如果它包å«äº†ç•¶å‰çš„工作目錄\n"
-" -P\tå°å‡ºç•¶å‰çš„實體路徑,ä¸å¸¶æœ‰ä»»ä½•çš„符號éˆçµ\n"
+" -L\tå°å‡º $PWD 變數的值,如果它包å«äº†ç›®å‰çš„工作目錄\n"
+" -P\tå°å‡ºç›®å‰çš„實體路徑,ä¸å¸¶æœ‰ä»»ä½•çš„符號連çµ\n"
" \n"
" é è¨­æƒ…æ³ä¸‹ï¼Œã€Œpwdã€çš„行為和帶「-Lã€é¸é …一致\n"
" \n"
" 退出狀態:\n"
-" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者當å‰ç›®éŒ„ä¸å¯è®€ï¼Œå¦å‰‡å›žå‚³ç‹€æ…‹ç‚º 0。"
+" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者目å‰ç›®éŒ„ä¸å¯è®€ï¼Œå¦å‰‡å›žå‚³ç‹€æ…‹ç‚º 0。"
#: builtins.c:442
msgid ""
@@ -2823,9 +2888,9 @@ msgid ""
" Exit Status:\n"
" Always succeeds."
msgstr ""
-"空的命令。\n"
+"空的指令。\n"
" \n"
-" 沒有效果; 此命令ä¸åšä»»ä½•æ“作。\n"
+" 沒有效果;此指令ä¸åšä»»ä½•æ“作。\n"
" \n"
" 退出狀態:\n"
" 一律æˆåŠŸã€‚"
@@ -2872,21 +2937,22 @@ msgid ""
" Exit Status:\n"
" Returns exit status of COMMAND, or failure if COMMAND is not found."
msgstr ""
-"執行一個簡單命令或者顯示命令的相關資訊。\n"
+"執行一個簡單指令或者顯示指令的相關資訊。\n"
" \n"
-" 帶 ARGS 引數執行 COMMAND 命令且抑制 shell 函數查詢,或顯示\n"
-" 指定的 COMMAND 命令的資訊。å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå稱函數定義的\n"
-" 情æ³ä¸‹è¢«ç”¨æ–¼å•Ÿå‹•ç£ç¢Ÿä¸Šçš„命令。\n"
+" 帶 ARGS åƒæ•¸åŸ·è¡Œ COMMAND 指令且抑制 shell 函數查詢,或顯示\n"
+" 指定的 COMMAND 指令的資訊。å¯ä»¥åœ¨å­˜åœ¨ç›¸åŒå稱函數定義的\n"
+" 情æ³ä¸‹è¢«ç”¨æ–¼å•Ÿå‹•ç£ç¢Ÿä¸Šçš„指令。\n"
" \n"
" é¸é …:\n"
" -p\t使用 PATH 變數的一個é è¨­å€¼ä»¥ç¢ºä¿æ‰€æœ‰çš„標準工具都能被找到。\n"
-" -v\tå°å‡º COMMAND 命令的æ述,和「typeã€å…§å»ºç›¸ä¼¼\n"
-" -V\tå°å‡ºæ¯å€‹ COMMAND 命令的詳細æè¿°\n"
+" -v\tå°å‡º COMMAND 指令的æ述,和「typeã€å…§å»ºç›¸ä¼¼\n"
+" -V\tå°å‡ºæ¯å€‹ COMMAND 指令的詳細æè¿°\n"
" \n"
" 退出狀態:\n"
-" 回傳 COMMAND 命令的回傳狀態,或者當找ä¸åˆ° COMMAND 命令時失敗。"
+" 回傳 COMMAND 指令的回傳狀態,或者當找ä¸åˆ° COMMAND 指令時失敗。"
#: builtins.c:490
+#, fuzzy
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2899,6 +2965,8 @@ msgid ""
" \t\tsource file when debugging)\n"
" -g\tcreate global variables when used in a shell function; otherwise\n"
" \t\tignored\n"
+" -I\tif creating a local variable, inherit the attributes and value\n"
+" \t\tof a variable with the same name at a previous scope\n"
" -p\tdisplay the attributes and value of each NAME\n"
" \n"
" Options which set attributes:\n"
@@ -2927,7 +2995,7 @@ msgid ""
msgstr ""
"設定變數值和屬性。\n"
" \n"
-" è¦ç¯„變數並且賦予它們屬性。如果沒用給定å稱,\n"
+" è¦ç¯„變數並且賦予它們屬性。如果沒用指定å稱,\n"
" 則顯示所有變數的屬性和值。\n"
" \n"
" é¸é …:\n"
@@ -2950,15 +3018,15 @@ msgstr ""
" 用「+ã€ä»£æ›¿ã€Œ-ã€æœƒé—œé–‰æŒ‡å®šé¸é …。\n"
" \n"
" 帶有整數屬性的變數在指派時將使用算術求值(見\n"
-" 「letã€å‘½ä»¤)\n"
+" 「letã€æŒ‡ä»¤)\n"
" \n"
-" 在函數中使用時,「declareã€ä½¿ <å稱> æˆç‚ºæœ¬åœ°è®Šæ•¸ï¼Œå’Œã€Œlocalã€\n"
-" 命令一致。「-gã€é¸é …壓制這個行為\n"
+" 在函數中使用時,「declareã€ä½¿ <å稱> æˆç‚ºæœ¬æ©Ÿè®Šæ•¸ï¼Œå’Œã€Œlocalã€\n"
+" 指令一致。「-gã€é¸é …壓制這個行為\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者發生錯誤。"
-#: builtins.c:530
+#: builtins.c:532
msgid ""
"Set variable values and attributes.\n"
" \n"
@@ -2968,7 +3036,7 @@ msgstr ""
" \n"
" 功能相åŒæ–¼ã€Œdeclareã€ã€‚åƒè¦‹ã€Œhelp declareã€ã€‚"
-#: builtins.c:538
+#: builtins.c:540
msgid ""
"Define local variables.\n"
" \n"
@@ -2982,20 +3050,19 @@ msgid ""
" Returns success unless an invalid option is supplied, a variable\n"
" assignment error occurs, or the shell is not executing a function."
msgstr ""
-"定義本地變數。\n"
+"定義本機變數。\n"
" \n"
-" 建立一個以 NAME 為å稱的變數,並且將 VALUE 指派給它。\n"
+" 建立一個以 <å稱> 為å稱的變數,並且將 VALUE 指派給它。\n"
" OPTION é¸é …å¯ä»¥æ˜¯ä»»ä½•èƒ½è¢«ã€Œdeclareã€æŽ¥å—çš„é¸é …。\n"
" \n"
-" 本地變數åªèƒ½åœ¨å‡½æ•¸å…§éƒ¨è¢«ä½¿ç”¨ï¼Œå®ƒå€‘åªèƒ½åœ¨å®šç¾©å®ƒå€‘的函數內\n"
+" 本機變數åªèƒ½åœ¨å‡½æ•¸å…§éƒ¨è¢«ä½¿ç”¨ï¼Œå®ƒå€‘åªèƒ½åœ¨å®šç¾©å®ƒå€‘的函數內\n"
" 部以åŠå­å‡½æ•¸ä¸­å¯è¦‹ã€‚\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …ã€ç™¼ç”Ÿäº†æŒ‡æ´¾éŒ¯èª¤æˆ–者 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½"
"數。"
-#: builtins.c:555
-#, fuzzy
+#: builtins.c:557
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3034,9 +3101,9 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
-"將引數寫入標準輸出。\n"
+"å°‡åƒæ•¸å¯«å…¥æ¨™æº–輸出。\n"
" \n"
-" 在標準輸出上,顯示用空格分割的 ARG 引數後跟一個æ›åˆ—。\n"
+" 在標準輸出上,顯示用空格分割的 ARG åƒæ•¸å¾Œè·Ÿä¸€å€‹æ›åˆ—。\n"
" \n"
" é¸é …:\n"
" -n\tä¸è¦è¿½åŠ æ›åˆ—\n"
@@ -3058,11 +3125,15 @@ msgstr ""
"å­—\n"
" \\xHH\t以 HH (å六進ä½)為值的八進ä½å­—元。HH å¯ä»¥æ˜¯ä¸€å€‹æˆ–兩個å六進ä½æ•¸"
"å­—\n"
+" \\uHHHH\t以åå…­é€²ä½ HHHH 為值的 Unicode 字元。\n"
+" \t\tHHHH å¯ç‚ºä¸€å€‹åˆ°å››å€‹å六進ä½æ•¸å­—。\n"
+" \\UHHHHHHHH 以åå…­é€²ä½ HHHHHHHH 為值的 Unicode 字元。\n"
+" \t\tHHHHHHHH å¯ç‚ºä¸€å€‹åˆ°å…«å€‹å六進ä½æ•¸å­—。\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸé™¤éžæœ‰å¯«å…¥éŒ¯èª¤ç™¼ç”Ÿã€‚"
-#: builtins.c:595
+#: builtins.c:597
msgid ""
"Write arguments to the standard output.\n"
" \n"
@@ -3074,9 +3145,9 @@ msgid ""
" Exit Status:\n"
" Returns success unless a write error occurs."
msgstr ""
-"寫入引數至標準輸出è£ç½®ã€‚\n"
+"寫入åƒæ•¸è‡³æ¨™æº–輸出è£ç½®ã€‚\n"
" \n"
-" 在標準輸出è£ç½®ä¸Šé¡¯ç¤º ARGs 引數和一個æ›åˆ—。\n"
+" 在標準輸出è£ç½®ä¸Šé¡¯ç¤º <åƒæ•¸> 和一個æ›åˆ—。\n"
" \n"
" é¸é …:\n"
" -n\tä¸é™„加æ›åˆ—\n"
@@ -3084,7 +3155,7 @@ msgstr ""
" 退出狀態:\n"
" 除éžå¯«éŒ¯èª¤ç™¼ç”Ÿï¼Œå¦å‰‡å›žå‚³æˆåŠŸã€‚"
-#: builtins.c:610
+#: builtins.c:612
msgid ""
"Enable and disable shell builtins.\n"
" \n"
@@ -3110,31 +3181,31 @@ msgid ""
" Exit Status:\n"
" Returns success unless NAME is not a shell builtin or an error occurs."
msgstr ""
-"啟用和åœç”¨ shell 內建。\n"
+"啟用和åœç”¨ shell 內建物件。\n"
" \n"
-" 啟用和åœç”¨ shell 的內建命令。åœç”¨ä½¿æ‚¨èƒ½å¤ åŸ·è¡Œä¸€å€‹å’Œå…§å»º\n"
-" 命令åŒåç£ç¢Ÿä¸Šçš„命令,而無須使用完整的路徑å。\n"
+" 啟用和åœç”¨ shell 的內建指令。åœç”¨ä½¿æ‚¨èƒ½å¤ åŸ·è¡Œä¸€å€‹å’Œå…§å»º\n"
+" 指令åŒåç£ç¢Ÿä¸Šçš„指令,而無須使用完整的路徑å。\n"
" \n"
" \n"
" é¸é …:\n"
" -a\tå°å‡ºä¸€å€‹å…§å»ºçš„列表,並顯示其中æ¯ä¸€å€‹æ˜¯å¦å•Ÿç”¨\n"
-" -n\tåœç”¨æ¯ä¸€å€‹ NAME 內建或者顯示一個被åœç”¨çš„內建列表\n"
+" -n\tåœç”¨æ¯ä¸€å€‹ <å稱> 內建或者顯示一個被åœç”¨çš„內建列表\n"
" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºä¸€å€‹å…§å»ºçš„列表\n"
" -s\t僅å°å‡º Posix「special〠內建的å稱\n"
" \n"
" 控制動態載入的é¸é …:\n"
-" -f\t從共享物件 FILENAME 檔案中載入 NAME 內建\n"
+" -f\t從共享物件 <檔å> 檔案中載入 <å稱> 內建\n"
" -d\t刪除以 -f é¸é …載入的內建\n"
" \n"
-" ä¸å¸¶é¸é …時,æ¯ä¸€å€‹ NAME 內建都被啟用。\n"
+" ä¸å¸¶é¸é …時,æ¯ä¸€å€‹ <å稱> 內建都被啟用。\n"
" \n"
-" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建的版本,\n"
+" 如果è¦ä½¿ç”¨ $PATH 中找到的「testã€è€Œä¸æ˜¯ shell 內建物件的版本,\n"
" 輸入「enable -n testã€ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éž NAME ä¸æ˜¯ä¸€å€‹ shell 內建或者有錯誤發生。"
+" 回傳æˆåŠŸï¼Œé™¤éž <å稱> ä¸æ˜¯ä¸€å€‹ shell 內建物件或者有錯誤發生。"
-#: builtins.c:638
+#: builtins.c:640
msgid ""
"Execute arguments as a shell command.\n"
" \n"
@@ -3145,15 +3216,16 @@ msgid ""
" Exit Status:\n"
" Returns exit status of command or success if command is null."
msgstr ""
-"將引數åšç‚º shell 命令執行。\n"
+"å°‡åƒæ•¸åšç‚º shell 指令執行。\n"
" \n"
-" å°‡ ARGs åˆæˆä¸€å€‹å­—串,用çµæžœåšç‚º shell 的輸入,\n"
-" 並且執行得到的命令。\n"
+" å°‡ <åƒæ•¸> åˆæˆä¸€å€‹å­—串,用çµæžœåšç‚º shell 的輸入,\n"
+" 並且執行得到的指令。\n"
" \n"
" 退出狀態:\n"
-" 以命令的狀態退出,或者在命令為空的情æ³ä¸‹å›žå‚³æˆåŠŸã€‚"
+" 以指令的狀態退出,或者在指令為空的情æ³ä¸‹å›žå‚³æˆåŠŸã€‚"
-#: builtins.c:650
+#: builtins.c:652
+#, fuzzy
msgid ""
"Parse option arguments.\n"
" \n"
@@ -3186,52 +3258,52 @@ msgid ""
" 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"
+" Getopts normally parses the positional parameters, but if arguments\n"
+" are supplied as ARG values, 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 ""
-"解æžé¸é …引數。\n"
+"解æžé¸é …åƒæ•¸ã€‚\n"
" \n"
" Getopts 被 shell éŽç¨‹ç”¨æ–¼è§£æžå¯å®šä½çš„åƒæ•¸åšç‚ºé¸é …。\n"
" \n"
" \n"
-" OPTSTRING 字串包å«å¾…識別的é¸é …å­—æ¯ï¼›å¦‚果一個字æ¯å¾Œé¢è·Ÿ\n"
-" 著分號,則該é¸é …需è¦ä¸€å€‹å¼•æ•¸ï¼Œè€Œè©²å¼•æ•¸æ‡‰ç”¨ç©ºæ ¼èˆ‡é¸é …分開。\n"
+" <é¸é …字串> 字串包å«å¾…識別的é¸é …å­—æ¯ï¼›å¦‚果一個字æ¯å¾Œé¢è·Ÿ\n"
+" 著分號,則該é¸é …需è¦ä¸€å€‹åƒæ•¸ï¼Œè€Œè©²åƒæ•¸æ‡‰ç”¨ç©ºæ ¼èˆ‡é¸é …分開。\n"
" \n"
" \n"
" æ¯æ¬¡å•Ÿå‹•æ™‚,getopts 會將下一個é¸é …放到 shell 變數 $name\n"
" 中,如果 name 變數ä¸å­˜åœ¨å‰‡å…ˆå°‡å…¶åˆå§‹åŒ–,而下一個待處\n"
-" ç†çš„引數åºè™Ÿæ”¾å…¥ shell 變數 OPTIND 中。OPTIND 變數在æ¯\n"
+" ç†çš„åƒæ•¸åºè™Ÿæ”¾å…¥ shell 變數 OPTIND 中。OPTIND 變數在æ¯\n"
" 次 shell 或者 shell 指令稿啟動時都被åˆå§‹åŒ–為 1。當一個é¸é …è¦\n"
-" 求有一個引數時,getopts 將引數放入 shell 變數 OPTARG\n"
+" 求有一個åƒæ•¸æ™‚,getopts å°‡åƒæ•¸æ”¾å…¥ shell 變數 OPTARG\n"
" 中。\n"
" \n"
-" getopts 有兩種通報錯誤的方法。如果 OPTSTRING 變數的第\n"
+" getopts 有兩種通報錯誤的方法。如果 <é¸é …字串> 變數的第\n"
" 一個字元是冒號,getopts 使用沉默錯誤通報。在這種模å¼\n"
-" 下,ä¸æœƒå°å‡ºéŒ¯èª¤è¨Šæ¯ã€‚如果看到了一個無效的é¸é …,\n"
+" 下,ä¸æœƒå°ç™¼ç”ŸéŒ¯èª¤èª¤è¨Šæ¯ã€‚如果看到了一個無效的é¸é …,\n"
" getopts 將找到的é¸é …字元放至 OPTARG 變數中。如果一個必\n"
-" 須的é¸é …沒有找到,getopts 放一個「:ã€åˆ° NAME 變數中並且設\n"
+" 須的é¸é …沒有找到,getopts 放一個「:ã€åˆ° <å稱> 變數中並且設\n"
" ç½® OPTARG 變數為找到的é¸é …字元。如果 getopts ä¸åœ¨æ²‰é»˜æ¨¡\n"
-" å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,getopts 放置一個「?ã€åˆ° NAME \n"
+" å¼ä¸­ï¼Œä¸¦ä¸”é‡åˆ°äº†ä¸€å€‹ç„¡æ•ˆçš„é¸é …,getopts 放置一個「?ã€åˆ° <å稱> \n"
" 變數中並且å–消設定 OPTARG 變數。如果必須的é¸é …沒有找到,\n"
-" 一個「?ã€æœƒè¢«æ”¾å…¥ NAME 變數中,OPTARG 將被å–消設定,並且會\n"
+" 一個「?ã€æœƒè¢«æ”¾å…¥ <å稱> 變數中,OPTARG 將被å–消設定,並且會\n"
" å°å‡ºä¸€å€‹è¨ºæ–·è³‡è¨Šã€‚\n"
" \n"
" 如果 shell 變數 OPTERR 的值為 0,getopts åœç”¨\n"
-" 錯誤資訊的å°å‡ºï¼Œå³ä½¿ OPTSTRING 變數的第一個字元ä¸æ˜¯ä¸€\n"
+" 錯誤資訊的å°å‡ºï¼Œå³ä½¿ <é¸é …字串> 變數的第一個字元ä¸æ˜¯ä¸€\n"
" 個冒號。OPTERR çš„é è¨­å€¼ç‚º 1。\n"
" \n"
-" Getopts 通常解æžå¯å®šä½çš„引數($0 - $9),ä¸éŽå¦‚æžœæ供了\n"
-" 更多的引數,它們å而會被解æžã€‚\n"
+" Getopts 通常解æžå¯å®šä½çš„åƒæ•¸($0 - $9),ä¸éŽå¦‚æžœæ供了\n"
+" 更多的åƒæ•¸ï¼Œå®ƒå€‘å而會被解æžã€‚\n"
" \n"
" 退出狀態:\n"
" 如果一個é¸é …被找到則回傳æˆåŠŸï¼›å¦‚æžœé‡åˆ°äº†é¸é …çš„çµå°¾æˆ–者\n"
" 有錯誤發生則回傳失敗。"
-#: builtins.c:692
+#: builtins.c:694
msgid ""
"Replace the shell with the given command.\n"
" \n"
@@ -3253,24 +3325,24 @@ msgid ""
" Returns success unless COMMAND is not found or a redirection error "
"occurs."
msgstr ""
-"ä½¿ç”¨æŒ‡å®šå‘½ä»¤æ›¿æ› shell。\n"
+"使用指定指令å–代 shell。\n"
" \n"
-" 執行 COMMAND 命令,以指定的程å¼æ›¿æ›é€™å€‹ shell。\n"
-" ARGUMENTS 引數æˆç‚º COMMAND 命令的引數。如果\n"
-" 沒有指定 COMMAND 命令,則任何的é‡å®šå‘åœ¨ç•¶å‰ shell 中生效。\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"
+" -a å稱\tåšç‚ºç¬¬ 0 個åƒæ•¸å‚³éžçµ¦ COMMAND 指令\n"
+" -c\t\t在空環境中執行 COMMAND 指令\n"
+" -l\t\t在 COMMAND 指令的第 0 個åƒæ•¸ä¸­åŠ ä¸€å€‹çŸ­ç·š\n"
" \n"
-" 如果命令ä¸èƒ½è¢«åŸ·è¡Œï¼Œå‰‡é€€å‡ºä¸€å€‹éžäº’å‹•å¼çš„ shell,除éž\n"
+" 如果指令ä¸èƒ½è¢«åŸ·è¡Œï¼Œå‰‡é€€å‡ºä¸€å€‹éžäº’å‹•å¼çš„ shell,除éž\n"
" shell é¸é …「execfailã€å·²ç¶“設定。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸé™¤éž COMMAND 命令沒有找到或者出ç¾ä¸€å€‹é‡å®šå‘錯誤。"
+" 回傳æˆåŠŸé™¤éž COMMAND 指令沒有找到或者出ç¾ä¸€å€‹é‡å®šå‘錯誤。"
-#: builtins.c:713
+#: builtins.c:715
msgid ""
"Exit the shell.\n"
" \n"
@@ -3280,9 +3352,9 @@ msgstr ""
"退出 shell。\n"
" \n"
" 以狀態 N 退出 shell。 如果 N 被çœç•¥ï¼Œå‰‡é€€å‡ºç‹€æ…‹\n"
-" 為最後一個執行命令的退出狀態。"
+" 為最後一個執行指令的退出狀態。"
-#: builtins.c:722
+#: builtins.c:724
msgid ""
"Exit a login shell.\n"
" \n"
@@ -3295,7 +3367,7 @@ msgstr ""
" 以狀態 N 退出一個登入 shell。如果ä¸åœ¨ç™»å…¥ shell 中執行,則\n"
" 回傳一個錯誤。"
-#: builtins.c:732
+#: builtins.c:734
msgid ""
"Display or execute commands from the history list.\n"
" \n"
@@ -3324,11 +3396,11 @@ msgid ""
" Returns success or status of executed command; non-zero if an error "
"occurs."
msgstr ""
-"從歷å²è¨˜éŒ„列表中顯示或者執行命令。\n"
+"從歷å²è¨˜éŒ„列表中顯示或者執行指令。\n"
" \n"
-" fc 被用於從歷å²è¨˜éŒ„列表中列出或者é‡æ–°ç·¨è¼¯ä¸¦åŸ·è¡Œå‘½ä»¤ã€‚\n"
+" fc 被用於從歷å²è¨˜éŒ„列表中列出或者é‡æ–°ç·¨è¼¯ä¸¦åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" FIRST å’Œ LAST 變數å¯ä»¥æ˜¯æ•¸å­—用於指定範åœï¼Œæˆ–者 FIRST å¯ä»¥æ˜¯\n"
-" 字串,æ„味著以這個字串開頭的最近一個命令。\n"
+" 字串,æ„味著以這個字串開頭的最近一個指令。\n"
" \n"
" \n"
" é¸é …:\n"
@@ -3338,17 +3410,17 @@ msgstr ""
" -n\t列舉時çœç•¥åˆ—號\n"
" -r\tå轉列的順åº(最新列在å‰)\n"
" \n"
-" 用「fc -s [模å¼=æ›¿æ› â€¦] [命令]ã€çš„æ ¼å¼ï¼ŒCOMMAND 命令會在 OLD=NEW\n"
-" 替æ›ä¹‹å¾Œè¢«é‡æ–°åŸ·è¡Œã€‚\n"
+" 用「fc -s [模å¼=å–代 …] [指令]ã€çš„æ ¼å¼ï¼ŒCOMMAND 指令會在 OLD=NEW\n"
+" å–代之後被é‡æ–°åŸ·è¡Œã€‚\n"
" \n"
" r=「fc -sã€æ˜¯ä¸€å€‹æœ‰ç”¨çš„別å,這樣的話輸入「r ccã€æœƒåŸ·è¡Œæœ€å¾Œä¸€å€‹ä»¥ã€Œccã€\n"
-" 開頭的命令,輸入「rã€æœƒé‡æ–°åŸ·è¡Œæœ€å¾Œä¸€å€‹å‘½ä»¤ã€‚\n"
+" 開頭的指令,輸入「rã€æœƒé‡æ–°åŸ·è¡Œæœ€å¾Œä¸€å€‹æŒ‡ä»¤ã€‚\n"
" \n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œæˆ–者執行命令的狀態;如果錯誤發生則回傳éžé›¶ã€‚"
+" 回傳æˆåŠŸï¼Œæˆ–者執行指令的狀態;如果錯誤發生則回傳éžé›¶ã€‚"
-#: builtins.c:762
+#: builtins.c:764
msgid ""
"Move job to the foreground.\n"
" \n"
@@ -3361,14 +3433,14 @@ msgid ""
msgstr ""
"將工作移至å‰è‡ºã€‚\n"
" \n"
-" 將以 JOB_SPEC 標識的工作放至å‰è‡ºï¼Œä½¿å…¶æˆç‚º\n"
-" 當å‰å·¥ä½œã€‚如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的當å‰å·¥ä½œ \n"
+" 將以 JOB_SPEC 識別的工作放至å‰è‡ºï¼Œä½¿å…¶æˆç‚º\n"
+" ç›®å‰å·¥ä½œã€‚如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的目å‰å·¥ä½œ \n"
" 將被使用。\n"
" \n"
" 退出狀態:\n"
-" 放至å‰è‡ºçš„命令狀態,或者當錯誤發生時為失敗。"
+" 放至å‰è‡ºçš„指令狀態,或者當錯誤發生時為失敗。"
-#: builtins.c:777
+#: builtins.c:779
msgid ""
"Move jobs to the background.\n"
" \n"
@@ -3383,14 +3455,14 @@ msgid ""
msgstr ""
"移動工作至後臺。\n"
" \n"
-" å°‡ JOB_SPEC 標識的工作放至後臺,就åƒå®ƒå€‘\n"
+" å°‡ JOB_SPEC 識別的工作放至後臺,就åƒå®ƒå€‘\n"
" 是帶「&ã€å•Ÿå‹•çš„一樣。如果 JOB_SPEC ä¸å­˜åœ¨ï¼Œshell 觀念中的\n"
-" 當å‰å·¥ä½œå°‡æœƒè¢«ä½¿ç”¨ã€‚\n"
+" ç›®å‰å·¥ä½œå°‡æœƒè¢«ä½¿ç”¨ã€‚\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸé™¤éžå·¥ä½œç®¡ç†æ²’有啟用或者錯誤發生。"
-#: builtins.c:791
+#: builtins.c:793
msgid ""
"Remember or display program locations.\n"
" \n"
@@ -3415,26 +3487,26 @@ msgid ""
msgstr ""
"記ä½æˆ–顯示程å¼ä½ç½®ã€‚\n"
" \n"
-" 確定並記ä½æ¯ä¸€å€‹çµ¦å®š NAME å稱命令的完整路徑。\n"
-" 如果ä¸æ供引數,則顯示已經記ä½å‘½ä»¤çš„資訊。\n"
+" 確定並記ä½æ¯ä¸€å€‹æŒ‡å®š <å稱> 指令的完整路徑。\n"
+" 如果ä¸æä¾›åƒæ•¸ï¼Œå‰‡é¡¯ç¤ºå·²ç¶“記ä½æŒ‡ä»¤çš„資訊。\n"
" \n"
" é¸é …:\n"
-" -d\t\t忘記æ¯ä¸€å€‹å·²ç¶“記ä½çš„ NAME çš„ä½ç½®\n"
+" -d\t\t忘記æ¯ä¸€å€‹å·²ç¶“記ä½çš„ <å稱> çš„ä½ç½®\n"
" -l\t\t以å¯åšç‚ºè¼¸å…¥é‡ç”¨çš„æ ¼å¼é¡¯ç¤º\n"
-" -p pathname\t使用 pathname 路徑åšç‚º NAME 命令的全路徑\n"
+" -p pathname\t使用 pathname 路徑åšç‚º <å稱> 指令的全路徑\n"
" -r\t\t忘記所有記ä½çš„ä½ç½®\n"
-" -t\t\tå°å‡ºè¨˜ä½çš„æ¯ä¸€å€‹ NAME å稱的ä½ç½®ï¼Œå¦‚果指定了多個\n"
-" \t\tNAME å稱,則æ¯å€‹ä½ç½®å‰é¢æœƒåŠ ä¸Šç›¸æ‡‰çš„ NAME å稱\n"
+" -t\t\tå°å‡ºè¨˜ä½çš„æ¯ä¸€å€‹ <å稱> çš„ä½ç½®ï¼Œå¦‚果指定了多個\n"
+" \t\t<å稱>,則æ¯å€‹ä½ç½®å‰é¢æœƒåŠ ä¸Šç›¸æ‡‰çš„ <å稱> \n"
" \t\t\n"
-" 引數:\n"
-" NAME\t\tæ¯å€‹ NAME å稱會在 $PATH 路徑變數中被æœå°‹ï¼Œä¸¦ä¸”新增到記ä½çš„命"
+" åƒæ•¸ï¼š\n"
+" <å稱>\t\tæ¯å€‹ <å稱> 會在 $PATH 路徑變數中被æœå°‹ï¼Œä¸¦ä¸”新增到記ä½çš„指"
"令\n"
" 列表中。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éž NAME 命令沒有找到或者使用了無效的é¸é …。"
+" 回傳æˆåŠŸï¼Œé™¤éž <å稱> 指令沒有找到或者使用了無效的é¸é …。"
-#: builtins.c:816
+#: builtins.c:818
msgid ""
"Display information about builtin commands.\n"
" \n"
@@ -3455,25 +3527,25 @@ msgid ""
" Returns success unless PATTERN is not found or an invalid option is "
"given."
msgstr ""
-"顯示內建命令的相關資訊。\n"
+"顯示內建指令的相關資訊。\n"
" \n"
-" 顯示內建命令的簡略資訊。如果指定了 PATTERN 模å¼ï¼Œ\n"
-" çµ¦å‡ºæ‰€æœ‰åŒ¹é… PATTERN 模å¼å‘½ä»¤çš„詳細說明,å¦å‰‡å°å‡º\n"
+" 顯示內建指令的簡略資訊。如果指定了 PATTERN 模å¼ï¼Œ\n"
+" çµ¦å‡ºæ‰€æœ‰ç¬¦åˆ PATTERN 模å¼æŒ‡ä»¤çš„詳細說明,å¦å‰‡å°å‡º\n"
" 一個說明主題列表\n"
" \n"
" é¸é …:\n"
" -d\t輸出æ¯å€‹ä¸»é¡Œçš„簡短æè¿°\n"
" -m\tä»¥å½ man 手冊的格å¼é¡¯ç¤ºä½¿ç”¨æ–¹æ³•\n"
-" -s\t為æ¯ä¸€å€‹åŒ¹é… PATTERN 模å¼çš„主題僅顯示一個用法\n"
+" -s\t為æ¯ä¸€å€‹ç¬¦åˆ PATTERN 模å¼çš„主題僅顯示一個用法\n"
" \t簡介\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" PATTERN\tPattern 模å¼æŒ‡å®šä¸€å€‹èªªæ˜Žä¸»é¡Œ\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éž PATTERN 模å¼æ²’有找到或者使用了無效é¸é …。"
-#: builtins.c:840
+#: builtins.c:842
msgid ""
"Display or manipulate the history list.\n"
" \n"
@@ -3510,23 +3582,23 @@ msgstr ""
"顯示或æ“縱歷å²è¨˜éŒ„列表。\n"
" \n"
" 帶列號顯示歷å²è¨˜éŒ„列表,將æ¯å€‹è¢«ä¿®æ”¹çš„æ¢ç›®åŠ ä¸Šå­—首「*ã€ã€‚\n"
-" 引數 N 會僅列出最後的 N 個æ¢ç›®ã€‚\n"
+" åƒæ•¸ N 會僅列出最後的 N 個æ¢ç›®ã€‚\n"
" \n"
" é¸é …:\n"
" -c\t刪除所有æ¢ç›®å¾žè€Œæ¸…空歷å²è¨˜éŒ„列表。\n"
" -d å移é‡\t從指定ä½ç½®åˆªé™¤æ­·å²è¨˜éŒ„列表。負數å移é‡æœƒå¾žæ­·å²è¨˜éŒ„列表\n"
" \t\t的尾端數回來。\n"
" \n"
-" -a\t將當å‰æœƒè©±çš„æ­·å²è¨˜éŒ„列追加到歷å²è¨˜éŒ„檔案中\n"
+" -a\t將目å‰å·¥ä½œéšŽæ®µçš„æ­·å²è¨˜éŒ„列追加到歷å²è¨˜éŒ„檔案中\n"
" -n\t從歷å²è¨˜éŒ„檔案中讀å–所有未被讀å–的列\n"
"\t\t並且將它們追加到歷å²åˆ—表 -r\t讀å–æ­·å²è¨˜éŒ„檔案並將內容追加到歷å²è¨˜éŒ„"
"列表中\n"
-" -w\t將當å‰æ­·å²è¨˜éŒ„寫入到歷å²è¨˜éŒ„檔案中,並追加到歷å²è¨˜éŒ„列表中\n"
+" -w\t將目å‰æ­·å²è¨˜éŒ„寫入到歷å²è¨˜éŒ„檔案中,並追加到歷å²è¨˜éŒ„列表中\n"
" \n"
-" -p\tå°æ¯ä¸€å€‹ ARG 引數展開歷å²è¨˜éŒ„並顯示çµæžœï¼Œè€Œä¸å„²å­˜åˆ°æ­·å²è¨˜éŒ„列表中\n"
-" -s\t以單æ¢è¨˜éŒ„追加 ARG 到歷å²è¨˜éŒ„列表中\n"
+" -p\tå°æ¯ä¸€å€‹ <åƒæ•¸> 展開歷å²è¨˜éŒ„並顯示çµæžœï¼Œè€Œä¸å„²å­˜åˆ°æ­·å²è¨˜éŒ„列表中\n"
+" -s\t以單æ¢ç´€éŒ„追加 <åƒæ•¸> 到歷å²è¨˜éŒ„列表中\n"
" \n"
-" 如果給定了 FILENAME 檔å,則它將被åšç‚ºæ­·å²è¨˜éŒ„檔案。å¦å‰‡\n"
+" 如果指定了 <檔å>,則它將被åšç‚ºæ­·å²è¨˜éŒ„檔案。å¦å‰‡\n"
" 如果 $HISTFILE 變數有值的話使用之,ä¸ç„¶ä½¿ç”¨ ~/.bash_history 檔案。\n"
" \n"
" 如果 $HISTTIMEFORMAT 變數被設定並且ä¸ç‚ºç©ºï¼Œå®ƒçš„值會被用於\n"
@@ -3536,7 +3608,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。"
-#: builtins.c:877
+#: builtins.c:879
msgid ""
"Display status of jobs.\n"
" \n"
@@ -3565,20 +3637,20 @@ msgstr ""
" ä¸å¸¶é¸é …時,所有活動工作的狀態都會顯示。\n"
" \n"
" é¸é …:\n"
-" -l\t在正常資訊基礎上列出行程識別號\n"
+" -l\t在正常資訊基礎上列出行程識別碼\n"
" -n\t僅列出上次通告之後變更了狀態的行程\n"
-" -p\t僅列出行程識別號\n"
+" -p\t僅列出行程識別碼\n"
" -r\té™åˆ¶åƒ…輸出執行中的工作\n"
" -s\té™åˆ¶åƒ…輸出åœæ­¢çš„工作\n"
" \n"
-" 如果使用了 -x é¸é …,ARG 引數中的所有工作è¦æ ¼æœƒè¢«æ›¿æ›ç‚ºè©²å·¥ä½œ\n"
-" 的行程群組首領的行程識別號,然後執行 COMMAND 命令。\n"
+" 如果使用了 -x é¸é …,<åƒæ•¸> 中的所有工作è¦æ ¼æœƒè¢«å–代為該工作\n"
+" 的行程群組首領的行程識別碼,然後執行 COMMAND 指令。\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。\n"
-" 如果使用 -x é¸é …,則回傳 COMMAND 命令的退出狀態。"
+" 如果使用 -x é¸é …,則回傳 COMMAND 指令的退出狀態。"
-#: builtins.c:904
+#: builtins.c:906
msgid ""
"Remove jobs from current shell.\n"
" \n"
@@ -3594,21 +3666,21 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option or JOBSPEC is given."
msgstr ""
-"å¾žç•¶å‰ shell 中刪除工作。\n"
+"å¾žç›®å‰ shell 中刪除工作。\n"
" \n"
-" 從活動工作表中刪除æ¯ä¸€å€‹ JOBSPEC 引數。ä¸å¸¶ä»»ä½•\n"
-" JOBSPEC 引數時,shell 使用觀念中的當å‰å·¥ä½œã€‚\n"
+" 從活動工作表中刪除æ¯ä¸€å€‹ JOBSPEC åƒæ•¸ã€‚ä¸å¸¶ä»»ä½•\n"
+" JOBSPEC åƒæ•¸æ™‚,shell 使用觀念中的目å‰å·¥ä½œã€‚\n"
" \n"
" é¸é …:\n"
-" -a\t如果ä¸æä¾› JOBSPEC 引數,則刪除所有工作\n"
-" -h\t標識æ¯å€‹ JOBSPEC 工作,從而當 shell 接收到 SIGHUP\n"
+" -a\t如果ä¸æä¾› JOBSPEC åƒæ•¸ï¼Œå‰‡åˆªé™¤æ‰€æœ‰å·¥ä½œ\n"
+" -h\t識別æ¯å€‹ JOBSPEC 工作,從而當 shell 接收到 SIGHUP\n"
" \t訊號時ä¸å‚³é€ SIGHUP 給指定工作\n"
" -r\t僅刪除執行中的工作\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 JOBSPEC è¦æ ¼ã€‚"
-#: builtins.c:923
+#: builtins.c:925
msgid ""
"Send a signal to a job.\n"
" \n"
@@ -3632,23 +3704,24 @@ msgid ""
msgstr ""
"å‘一個工作傳é€ä¸€å€‹è¨Šè™Ÿã€‚\n"
" \n"
-" å‘以 PID 行程識別號或者 JOBSPEC 工作è¦æ ¼æŒ‡å®šçš„行程傳é€ä¸€å€‹ä»¥\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"
+" -l\t列出訊號å稱;如果åƒæ•¸å¾Œè·Ÿã€Œ-lã€å‰‡è¢«å‡è¨­ç‚ºè¨Šè™Ÿç·¨è™Ÿï¼Œ\n"
" \t而相應的訊號å稱會被列出\n"
" \n"
-" Kill æˆç‚º shell 內建有兩個ç†ç”±ï¼šå®ƒå…許使用工作編號而ä¸æ˜¯è¡Œç¨‹è­˜åˆ¥è™Ÿï¼Œ\n"
+" Kill æˆç‚º shell 內建物件有兩個ç†ç”±ï¼šå®ƒå…許使用工作編號而ä¸æ˜¯è¡Œç¨‹è­˜åˆ¥"
+"碼,\n"
" 並且在å¯ä»¥å»ºç«‹çš„行程數上é™é”到時å…許行程被ç é™¤ã€‚\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者有錯誤發生。"
-#: builtins.c:947
+#: builtins.c:949
msgid ""
"Evaluate arithmetic expressions.\n"
" \n"
@@ -3694,7 +3767,7 @@ msgid ""
msgstr ""
"求值算術表示å¼ã€‚\n"
" \n"
-" å°‡æ¯å€‹ ARG åƒè³½åšç‚ºç®—術表示å¼ä¾†æ±‚值。求值的計算以定寬的整\n"
+" å°‡æ¯å€‹ <åƒæ•¸> åšç‚ºç®—術表示å¼ä¾†æ±‚值。求值的計算以定寬的整\n"
" 數完æˆï¼Œä¸å¸¶æº¢ä½æª¢æ¸¬ï¼Œä¸éŽé™¤ 0 是被置陷阱的並且會報一個錯\n"
" 誤。下列é‹ç®—å­è¢«æŒ‰ç…§ç›¸åŒçš„算術優先順åºçµ„åˆã€‚列表的順åºæŒ‰ç…§\n"
" 優先順åºå¾žé«˜è‡³ä½Žã€‚\n"
@@ -3728,9 +3801,9 @@ msgstr ""
"å¼è¦å‰‡ã€‚\n"
" \n"
" 退出狀態:\n"
-" 如果最後一個 ARG 引數求值為 0,則 let 回傳 1ï¼› å¦å‰‡ let 回傳 0。"
+" 如果最後一個 <åƒæ•¸> 求值為 0,則 let 回傳 1ï¼›å¦å‰‡ let 回傳 0。"
-#: builtins.c:992
+#: builtins.c:994
msgid ""
"Read a line from the standard input and split it into fields.\n"
" \n"
@@ -3785,18 +3858,18 @@ msgstr ""
" \n"
" 從標準輸入讀å–å–®ç¨çš„一列,或者如果使用了 -u é¸é …,從檔案æ述符 FD 中讀"
"å–。\n"
-" 該列被分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 NAME 變"
-"數,第二\n"
-" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後"
-"一個 NAME\n"
+" 該列被分割æˆå€åŸŸï¼Œå¦‚åŒå­—詞分割一樣,並且第一個字詞被指派給第一個 <å稱> "
+"變數,第二\n"
+" 個字詞被指派給第二個 <å稱> 變數,如此繼續,直到剩下所有的字詞被指派給最"
+"後一個 <å稱>\n"
" 變數。åªæœ‰ $IFS 變數中的字元被èªåšæ˜¯å­—詞分隔符。\n"
" \n"
-" 如果沒有æä¾› NAME 變數,則讀å–的列被存放在 REPLY 變數中。\n"
+" 如果沒有æä¾› <å稱> 變數,則讀å–的列被存放在 REPLY 變數中。\n"
" \n"
" é¸é …:\n"
" -a array\t將字詞指派給 ARRAY 陣列變數的åºåˆ—索引æˆå“¡ï¼Œå¾žé›¶é–‹å§‹ã€‚\n"
" -d delim\tæŒçºŒè®€å–直到讀入 DELIM 變數中的第一個字元,而ä¸æ˜¯æ›åˆ—符\n"
-" -e\t使用 Readline ç²å–列\n"
+" -e\t使用 Readline å–得列\n"
" -i text\t使用 TEXT 文字åšç‚º Readline çš„åˆå§‹æ–‡å­—\n"
" -n nchars\tè®€å– nchars 個字元之後回傳,而ä¸æ˜¯ç­‰åˆ°è®€å–æ›åˆ—符。\n"
" \t\t但是分隔符ä»ç„¶æœ‰æ•ˆï¼Œå¦‚æžœé‡åˆ°åˆ†éš”符之å‰è®€å–了ä¸è¶³ nchars 個字元。\n"
@@ -3817,9 +3890,9 @@ msgstr ""
" \n"
" 退出狀態:\n"
" 回傳碼為零,除éžé‡åˆ°äº†æª”案çµæŸç¬¦ï¼Œè®€å–逾時,或者無效的文\n"
-" 件æ述符åšç‚ºå¼•æ•¸å‚³éžçµ¦äº† -u é¸é …。"
+" 件æ述符åšç‚ºåƒæ•¸å‚³éžçµ¦äº† -u é¸é …。"
-#: builtins.c:1039
+#: builtins.c:1041
msgid ""
"Return from a shell function.\n"
" \n"
@@ -3834,12 +3907,12 @@ msgstr ""
" \n"
" 使一個函數或者被引用的指令稿以指定的回傳值 N 退出。\n"
" 如果 N 被çœç•¥ï¼Œå‰‡å›žå‚³ç‹€æ…‹å°±æ˜¯\n"
-" 函數或指令稿中的最後一個執行命令的狀態。\n"
+" 函數或指令稿中的最後一個執行指令的狀態。\n"
" \n"
" 退出狀態:\n"
" 回傳 N,或者如果 shell ä¸åœ¨åŸ·è¡Œä¸€å€‹å‡½æ•¸æˆ–引用指令稿時,失敗。"
-#: builtins.c:1052
+#: builtins.c:1054
msgid ""
"Set or unset values of shell options and positional parameters.\n"
" \n"
@@ -3926,19 +3999,19 @@ msgid ""
msgstr ""
"設定或å–消設定 shell é¸é …å’Œä½ç½®åƒæ•¸çš„值。\n"
" \n"
-" 變更 shell é¸é …å’Œä½ç½®å¼•æ•¸çš„值,或者顯示 shell 變數的\n"
+" 變更 shell é¸é …å’Œä½ç½®åƒæ•¸çš„值,或者顯示 shell 變數的\n"
" å稱和值。\n"
" \n"
" é¸é …:\n"
" -a 標記修改或者建立的變數為匯出。\n"
-" -b ç«‹å³é€šå‘Šå·¥ä½œçµ‚çµã€‚\n"
-" -e 如果一個命令以éžé›¶ç‹€æ…‹é€€å‡ºï¼Œå‰‡ç«‹å³é€€å‡ºã€‚\n"
-" -f åœç”¨æª”å生æˆ(模å¼åŒ¹é…)。\n"
-" -h 當查詢命令時記ä½å®ƒå€‘çš„ä½ç½®\n"
-" -k 所有的指派引數被放在命令的環境中,而ä¸åƒ…僅是\n"
-" 命令å稱之å‰çš„引數。\n"
+" -b ç«‹å³é€šå‘Šå·¥ä½œçµ‚止。\n"
+" -e 如果一個指令以éžé›¶ç‹€æ…‹é€€å‡ºï¼Œå‰‡ç«‹å³é€€å‡ºã€‚\n"
+" -f åœç”¨æª”å產生(模å¼ç¬¦åˆ)。\n"
+" -h 當查詢指令時記ä½å®ƒå€‘çš„ä½ç½®\n"
+" -k 所有的指派åƒæ•¸è¢«æ”¾åœ¨æŒ‡ä»¤çš„環境中,而ä¸åƒ…僅是\n"
+" 指令å稱之å‰çš„åƒæ•¸ã€‚\n"
" -m 啟用工作控制。\n"
-" -n 讀å–命令但ä¸åŸ·è¡Œ\n"
+" -n 讀å–指令但ä¸åŸ·è¡Œ\n"
" -o é¸é …å\n"
" 設定與é¸é …åå°æ‡‰çš„變數:\n"
" allexport 與 -a 相åŒ\n"
@@ -3949,10 +4022,10 @@ msgstr ""
" functrace 與 -T 相åŒ\n"
" hashall 與 -h 相åŒ\n"
" histexpand 與 -H 相åŒ\n"
-" history 啟用命令歷å²è¨˜éŒ„\n"
+" history 啟用指令歷å²è¨˜éŒ„\n"
" ignoreeof shell 讀å–檔案çµæŸç¬¦æ™‚ä¸æœƒé€€å‡º\n"
" interactive-comments\n"
-" å…許在互動å¼å‘½ä»¤ä¸­é¡¯ç¤ºè¨»é‡‹\n"
+" å…許在互動å¼æŒ‡ä»¤ä¸­é¡¯ç¤ºè¨»é‡‹\n"
" keyword 與 -k 相åŒ\n"
" monitor 與 -m 相åŒ\n"
" noclobber 與 -C 相åŒ\n"
@@ -3963,44 +4036,44 @@ msgstr ""
" nounset 與 -u 相åŒ\n"
" onecmd 與 -t 相åŒ\n"
" physical 與 -P 相åŒ\n"
-" pipefail 管é“的回傳值是最後一個éžé›¶å›žå‚³å€¼å‘½ä»¤çš„回傳çµæžœï¼Œ\n"
-" 或者當所有命令都回傳零時也為零。\n"
+" pipefail 管é“的回傳值是最後一個éžé›¶å›žå‚³å€¼æŒ‡ä»¤çš„回傳çµæžœï¼Œ\n"
+" 或者當所有指令都回傳零時也為零。\n"
" posix 變更é è¨­æ™‚å’Œ Posix 標準ä¸åŒçš„ bash 行為\n"
-" 以匹é…標準\n"
+" 以符åˆæ¨™æº–\n"
" privileged 與 -p 相åŒ\n"
" verbose 與 -v 相åŒ\n"
" vi 使用 vi 風格的列編輯介é¢\n"
" xtrace 與 -x 相åŒ\n"
-" -p 無論何時當真實的有效使用者身分ä¸åŒ¹é…時開啟。\n"
+" -p 無論何時當真實的有效使用者身分ä¸ç¬¦åˆæ™‚開啟。\n"
" åœç”¨å° $ENV 檔案的處ç†ä»¥åŠåŒ¯å…¥ shell 函數。\n"
" 關閉此é¸é …會導致有效的使用者編號和群組編號設定\n"
" 為真實的使用者編號和群組編號\n"
-" -t 讀å–並執行一個命令之後退出。\n"
-" -u 替æ›æ™‚將為設定的變數當åšéŒ¯èª¤å°å¾…。\n"
+" -t 讀å–並執行一個指令之後退出。\n"
+" -u å–代時將為設定的變數當åšéŒ¯èª¤å°å¾…。\n"
" -v è®€å– shell 輸入列時將它們å°å‡ºã€‚\n"
-" -x 執行命令時å°å‡ºå®ƒå€‘以åŠå¼•æ•¸ã€‚\n"
+" -x 執行指令時å°å‡ºå®ƒå€‘以åŠåƒæ•¸ã€‚\n"
" -B shell 將執行大括號擴充套件。\n"
" -C 設定之後ç¦æ­¢ä»¥é‡å®šå‘輸出的方å¼è¦†è“‹å¸¸\n"
" è¦æª”案。\n"
" -E 設定之後 ERR 陷阱會被 shell 函數繼承。\n"
-" -H 啟用 ! 風格的歷å²è¨˜éŒ„替æ›ã€‚當 shell 是互動å¼çš„\n"
-" 時候這個標識ä½é è¨­é–‹å•Ÿã€‚\n"
-" -P 設定之後類似 cd 的會變更當å‰ç›®éŒ„的命令ä¸\n"
-" 追蹤符號éˆçµã€‚\n"
+" -H 啟用 ! 風格的歷å²è¨˜éŒ„å–代。當 shell 是互動å¼çš„\n"
+" 時候這個識別ä½é è¨­é–‹å•Ÿã€‚\n"
+" -P 設定之後類似 cd 的會變更目å‰ç›®éŒ„的指令嗎\n"
+" 追蹤符號連çµã€‚\n"
" -T 設定之後 DEBUG 和 RETURN 陷阱會被 shell 函數繼承。\n"
-" - 任何剩餘的引數會被指派給ä½ç½®å¼•æ•¸ã€‚\n"
+" - 任何剩餘的åƒæ•¸æœƒè¢«æŒ‡æ´¾çµ¦ä½ç½®åƒæ•¸ã€‚\n"
" -x å’Œ -v é¸é …已關閉。\n"
" \n"
" 使用 + 而ä¸æ˜¯ - 會使標誌ä½è¢«é—œé–‰ã€‚標誌ä½ä¹Ÿå¯ä»¥åœ¨\n"
-" shell 被啟動時使用。當å‰çš„標誌ä½è¨­å®šå¯ä»¥åœ¨ $- 變\n"
-" é‡ä¸­æ‰¾åˆ°ã€‚剩餘的 ARG 引數是ä½ç½®å¼•æ•¸ä¸¦ä¸”是按照\n"
-" $1,$2,.。$n çš„é †åºè¢«æŒ‡æ´¾çš„。如果沒有給定 ARG\n"
-" 引數,則å°å‡ºæ‰€æœ‰çš„ shell 變數。\n"
+" shell 被啟動時使用。目å‰çš„標誌ä½è¨­å®šå¯ä»¥åœ¨ $- 變\n"
+" é‡ä¸­æ‰¾åˆ°ã€‚剩餘的 <åƒæ•¸> 是ä½ç½®åƒæ•¸ä¸¦ä¸”是按照\n"
+" $1,$2,.。$n çš„é †åºè¢«æŒ‡æ´¾çš„。如果沒有指定 <åƒæ•¸>\n"
+" åƒæ•¸ï¼Œå‰‡å°å‡ºæ‰€æœ‰çš„ shell 變數。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數。"
+" 回傳æˆåŠŸé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸ã€‚"
-#: builtins.c:1137
+#: builtins.c:1139
msgid ""
"Unset values and attributes of shell variables and functions.\n"
" \n"
@@ -4023,12 +4096,12 @@ msgid ""
msgstr ""
"å–消設定 shell 變數和函數的值和屬性。\n"
" \n"
-" å°æ¯ä¸€å€‹ NAME å稱,刪除å°æ‡‰çš„變數或函數。\n"
+" å°æ¯ä¸€å€‹ <å稱>,刪除å°æ‡‰çš„變數或函數。\n"
" \n"
" é¸é …:\n"
-" -f\tå°‡æ¯å€‹ NAME 視為函數\n"
-" -v\tå°‡æ¯å€‹ NAME 視為變數\n"
-" -n\tå°‡æ¯å€‹ NAME 視為å稱引用,åªå–消其本身而éžå…¶æŒ‡å‘的變數\n"
+" -f\tå°‡æ¯å€‹ <å稱> 視為函數\n"
+" -v\tå°‡æ¯å€‹ <å稱> 視為變數\n"
+" -n\tå°‡æ¯å€‹ <å稱> 視為å稱引用,åªå–消其本身而éžå…¶æŒ‡å‘的變數\n"
" \n"
" ä¸å¸¶é¸é …時,unset 首先嘗試å–消設定一個變數,如果失敗,å†å˜—試å–消設定一個"
"函數。\n"
@@ -4038,7 +4111,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱為唯讀。"
-#: builtins.c:1159
+#: builtins.c:1161
msgid ""
"Set export attribute for shell variables.\n"
" \n"
@@ -4058,20 +4131,20 @@ msgid ""
msgstr ""
"為 shell 變數設定匯出屬性。\n"
" \n"
-" 標記æ¯å€‹ NAME å稱為自動匯出到後續命令執行的環境。如果æ供了 VALUE\n"
+" 標記æ¯å€‹ <å稱> 為自動匯出到後續指令執行的環境。如果æ供了 VALUE\n"
" 則匯出å‰å°‡ VALUE åšç‚ºæŒ‡æ´¾ã€‚\n"
" \n"
" é¸é …:\n"
" -f\t指 shell 函數\n"
-" -n\t刪除æ¯å€‹ NAME å稱的匯出屬性\n"
+" -n\t刪除æ¯å€‹ <å稱> 的匯出屬性\n"
" -p\t顯示所有匯出的變數和函數的列表\n"
" \n"
-" 「--ã€çš„引數åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n"
+" 「--ã€çš„åƒæ•¸åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱。"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。"
-#: builtins.c:1178
+#: builtins.c:1180
msgid ""
"Mark shell variables as unchangeable.\n"
" \n"
@@ -4093,7 +4166,7 @@ msgid ""
msgstr ""
"標記 shell 變數為ä¸å¯è®Šæ›´ã€‚\n"
" \n"
-" 標記æ¯ä¸€å€‹ NAME å稱為唯讀;這些 NAME 變數的值將ä¸å¯ä»¥è¢«å¾ŒçºŒçš„指派\n"
+" 標記æ¯ä¸€å€‹ <å稱> 為唯讀;這些 <å稱> 變數的值將ä¸å¯ä»¥è¢«å¾ŒçºŒçš„指派\n"
" æ“作所變更。如果æ供了 VALUE,則在標記為唯讀之å‰å°‡ VALUE 值指派給變數。\n"
" \n"
" é¸é …:\n"
@@ -4102,12 +4175,12 @@ msgstr ""
" -f\t指 shell 函數\n"
" -p\t顯示唯讀變數或函數列表,å–決於是å¦æ供了 -f é¸é …\n"
" \n"
-" 「--ã€çš„引數åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n"
+" 「--ã€çš„åƒæ•¸åœç”¨é€²ä¸€æ­¥çš„é¸é …處ç†ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱。"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱>。"
-#: builtins.c:1200
+#: builtins.c:1202
msgid ""
"Shift positional parameters.\n"
" \n"
@@ -4119,13 +4192,13 @@ msgid ""
msgstr ""
"移ä½ä½ç½®åƒæ•¸ã€‚\n"
" \n"
-" é‡æ–°å‘½åä½ç½®å¼•æ•¸ $N+1ã€$N+2 … 到 $1ã€$2 … 如果沒有給定 N,\n"
+" é‡æ–°å‘½åä½ç½®åƒæ•¸ $N+1ã€$N+2 … 到 $1ã€$2 … 如果沒有指定 N,\n"
" 則å‡è¨­ç‚º 1。\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éž N 為負或者大於 $#。"
-#: builtins.c:1212 builtins.c:1227
+#: builtins.c:1214 builtins.c:1229
msgid ""
"Execute commands from a file in the current shell.\n"
" \n"
@@ -4138,16 +4211,16 @@ msgid ""
" Returns the status of the last command executed in FILENAME; fails if\n"
" FILENAME cannot be read."
msgstr ""
-"åœ¨ç•¶å‰ shell 中執行一個檔案中的命令。\n"
+"åœ¨ç›®å‰ shell 中執行一個檔案中的指令。\n"
" \n"
-" åœ¨ç•¶å‰ shell 中讀å–並執行 FILENAME 檔案中的命令。$PATH 變數中的\n"
-" æ¢ç›®è¢«ç”¨æ–¼å°‹æ‰¾åŒ…å« FILENAME 檔案的目錄。如果æ供了任何的 ARGUMENTS\n"
-" 引數,則它們將æˆç‚º FILENAME 檔案執行時的ä½ç½®åƒæ•¸ã€‚\n"
+" åœ¨ç›®å‰ shell 中讀å–並執行 <檔å> 檔案中的指令。$PATH 變數中的\n"
+" æ¢ç›®è¢«ç”¨æ–¼å°‹æ‰¾åŒ…å« <檔å> 檔案的目錄。如果æ供了任何的 <åƒæ•¸>\n"
+" åƒæ•¸ï¼Œå‰‡å®ƒå€‘å°‡æˆç‚º <檔å> 檔案執行時的ä½ç½®åƒæ•¸ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案ä¸å¯è®€å‰‡å¤±æ•—。"
+" 回傳 <檔å> 檔案中最後一個指令的狀態;如果 <檔å> 檔案ä¸å¯è®€å‰‡å¤±æ•—。"
-#: builtins.c:1243
+#: builtins.c:1245
msgid ""
"Suspend shell execution.\n"
" \n"
@@ -4160,18 +4233,18 @@ msgid ""
" Exit Status:\n"
" Returns success unless job control is not enabled or an error occurs."
msgstr ""
-"懸置 shell 執行。\n"
+"æš«åœ shell 執行。\n"
" \n"
-" 懸置 shell 的執行直到收到 SIGCONT 訊號。\n"
-" 登入 shell ä¸å¯ä»¥è¢«æ‡¸ç½®ï¼Œé™¤éžå¼·åˆ¶åŸ·è¡Œã€‚\n"
+" æš«åœ shell 的執行直到收到 SIGCONT 訊號。\n"
+" 登入 shell ä¸å¯ä»¥è¢«æš«åœï¼Œé™¤éžå¼·åˆ¶åŸ·è¡Œã€‚\n"
" \n"
" é¸é …:\n"
-" -f\t強制懸置,å³ä½¿æ˜¯ç™»å…¥ shell。\n"
+" -f\t強制暫åœï¼Œå³ä½¿æ˜¯ç™»å…¥ shell。\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžæ²’有啟用工作控制或者有錯誤發生。"
-#: builtins.c:1259
+#: builtins.c:1261
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4266,15 +4339,15 @@ msgstr ""
" -c 檔案 如果檔案為字元特殊檔案則為真。\n"
" -d 檔案 如果檔案為目錄則為真。\n"
" -e 檔案 如果檔案存在則為真。\n"
-" -f 檔案 如果檔案存在且為常è¦æª”案則為真。\n"
+" -f 檔案 如果檔案存在且為一般檔案則為真。\n"
" -g 檔案 如果檔案的群組屬性設定開啟則為真。\n"
-" -h 檔案 如果檔案為符號éˆçµå‰‡ç‚ºçœŸã€‚\n"
-" -L 檔案 如果檔案為符號éˆçµå‰‡ç‚ºçœŸã€‚\n"
-" -k 檔案 如果檔案的粘著ä½å…ƒå·²è¨­å®šå‰‡ç‚ºçœŸã€‚\n"
+" -h 檔案 如果檔案為符號連çµå‰‡ç‚ºçœŸã€‚\n"
+" -L 檔案 如果檔案為符號連çµå‰‡ç‚ºçœŸã€‚\n"
+" -k 檔案 如果檔案的é»è‘—ä½å…ƒå·²è¨­å®šå‰‡ç‚ºçœŸã€‚\n"
" -p 檔案 如果檔案為命å管é“則為真。\n"
" -r 檔案 如果檔案å°æ–¼æ‚¨æ˜¯å¯è®€çš„則為真。\n"
" -s 檔案 如果檔案存在且ä¸ç‚ºç©ºå‰‡ç‚ºçœŸã€‚\n"
-" -S 檔案 如果檔案是套接字則為真。\n"
+" -S 檔案 如果檔案是通訊端則為真。\n"
" -t 檔案æ述符 如果檔案æ述符在終端上開啟則為真。\n"
" -u 檔案 如果檔案的使用者數列設定開啟則為真。\n"
" -w 檔案 如果檔案å°æ‚¨æ˜¯å¯å¯«çš„則為真\n"
@@ -4288,7 +4361,7 @@ msgstr ""
" \n"
" FILE1 -ot FILE2 如果 file1 檔案舊於 file2 檔案則為真。\n"
" \n"
-" FILE1 -ef FILE2 如果 file1 檔案是 file2 檔案的硬å¼éˆçµå‰‡ç‚ºçœŸã€‚\n"
+" FILE1 -ef FILE2 如果 file1 檔案是 file2 檔案的硬å¼é€£çµå‰‡ç‚ºçœŸã€‚\n"
" \n"
" 字串é‹ç®—å­\n"
" \n"
@@ -4318,14 +4391,14 @@ msgstr ""
" arg1 OP arg2 算術測試。OP é‹ç®—å­å¯ä»¥æ˜¯ -eqã€-neã€\n"
" -ltã€-leã€-gtã€æˆ– -ge 之一。\n"
" \n"
-" 二元算術é‹ç®—回傳真,如果 ARG1 引數等於ã€ä¸ç­‰æ–¼ã€\n"
-" å°æ–¼ã€å°æ–¼ç­‰æ–¼ã€å¤§æ–¼ã€æˆ–者大於等於 ARG2 引數。\n"
+" 二元算術é‹ç®—回傳真,如果 ARG1 åƒæ•¸ç­‰æ–¼ã€ä¸ç­‰æ–¼ã€\n"
+" å°æ–¼ã€å°æ–¼ç­‰æ–¼ã€å¤§æ–¼ã€æˆ–者大於等於 ARG2 åƒæ•¸ã€‚\n"
" \n"
" 退出狀態:\n"
" 如果 EXPR 表示å¼æ±‚值為真則回傳æˆåŠŸï¼›å¦‚æžœ EXPR 表示å¼æ±‚值\n"
-" 為å‡æˆ–者使用了無效的引數則回傳失敗。"
+" 為å‡æˆ–者使用了無效的åƒæ•¸å‰‡å›žå‚³å¤±æ•—。"
-#: builtins.c:1341
+#: builtins.c:1343
msgid ""
"Evaluate conditional expression.\n"
" \n"
@@ -4334,10 +4407,10 @@ msgid ""
msgstr ""
"求值æ¢ä»¶è¡¨ç¤ºå¼ã€‚\n"
" \n"
-" 是內建命令「testã€çš„åŒç¾©è©žï¼Œä½†æ˜¯æœ€å¾Œä¸€å€‹å¼•æ•¸å¿…須是\n"
-" 字元「]ã€ï¼Œä»¥åŒ¹é…起始的「[ã€ã€‚"
+" 是內建指令「testã€çš„åŒç¾©è©žï¼Œä½†æ˜¯æœ€å¾Œä¸€å€‹åƒæ•¸å¿…須是\n"
+" 字元「]ã€ï¼Œä»¥ç¬¦åˆèµ·å§‹çš„「[ã€ã€‚"
-#: builtins.c:1350
+#: builtins.c:1352
msgid ""
"Display process times.\n"
" \n"
@@ -4356,7 +4429,7 @@ msgstr ""
" 退出狀態:\n"
" 一律æˆåŠŸã€‚"
-#: builtins.c:1362
+#: builtins.c:1364
msgid ""
"Trap signals and other events.\n"
" \n"
@@ -4403,22 +4476,22 @@ msgstr ""
" \n"
" 定義一個處ç†å™¨ï¼Œåœ¨ shell 接收到訊號和其他æ¢ä»¶ä¸‹åŸ·è¡Œã€‚\n"
" \n"
-" ARG 引數是當 shell 接收到 SIGNAL_SPEC 訊號時讀å–和執行的命令。\n"
-" 如果沒有指定 ARG 引數 (並且åªçµ¦å‡ºä¸€å€‹ SIGNAL_SPEC 訊號) 或者\n"
-" ARG 引數為\n"
-" 「-ã€ï¼Œæ¯ä¸€å€‹æŒ‡å®šçš„引數會被é‡ç½®ç‚ºåŽŸå§‹å€¼ã€‚如果 ARG 引數是一個空串,則æ¯ä¸€"
+" <åƒæ•¸> 是當 shell 接收到 SIGNAL_SPEC 訊號時讀å–和執行的指令。\n"
+" 如果沒有指定 <åƒæ•¸> (並且åªçµ¦å‡ºä¸€å€‹ SIGNAL_SPEC 訊號) 或者\n"
+" <åƒæ•¸> 為\n"
+" 「-ã€ï¼Œæ¯ä¸€å€‹æŒ‡å®šçš„åƒæ•¸æœƒè¢«é‡è¨­ç‚ºåŽŸå§‹å€¼ã€‚如果 <åƒæ•¸> 是一個空串,則æ¯ä¸€"
"個\n"
-" SIGNAL_SPEC 訊號會被 shell 和它啟動的命令忽略。\n"
+" SIGNAL_SPEC 訊號會被 shell 和它啟動的指令忽略。\n"
" \n"
-" 如果一個 SIGNAL_SPEC 訊號是 EXIT (0) ,則 ARG 命令會在 shell 退出時被\n"
-" 執行。如果一個 SIGNAL_SPEC 訊號是 DEBUG,則 ARG 命令會在æ¯ä¸€å€‹ç°¡å–®å‘½\n"
+" 如果一個 SIGNAL_SPEC 訊號是 EXIT (0),則 <åƒæ•¸> 指令會在 shell 退出時被\n"
+" 執行。如果一個 SIGNAL_SPEC 訊號是 DEBUG,則 <åƒæ•¸> 指令會在æ¯ä¸€å€‹ç°¡å–®å‘½\n"
" 令之å‰åŸ·è¡Œã€‚\n"
" \n"
-" 如果ä¸æ供引數,trap å°å‡ºåˆ—表顯示æ¯ä¸€å€‹èˆ‡æ¯ä¸€å€‹è¨Šè™Ÿç›¸é—œè¯çš„命令。\n"
+" 如果ä¸æä¾›åƒæ•¸ï¼Œtrap å°å‡ºåˆ—表顯示æ¯ä¸€å€‹èˆ‡æ¯ä¸€å€‹è¨Šè™Ÿç›¸é—œè¯çš„指令。\n"
" \n"
" é¸é …:\n"
" -l\tå°å‡ºä¸€å€‹è¨Šè™Ÿå稱和它們å°æ‡‰çš„編號列表\n"
-" -p\tå°å‡ºèˆ‡æ¯å€‹ SIGNAL_SPEC 訊號相關è¯çš„陷阱命令\n"
+" -p\tå°å‡ºèˆ‡æ¯å€‹ SIGNAL_SPEC 訊號相關è¯çš„陷阱指令\n"
" \n"
" æ¯ä¸€å€‹ SIGNAL_SPEC 訊號å¯ä»¥æ˜¯ <signal.h> 中的訊號å稱或者訊號編號。\n"
" 訊號å稱大å°å¯«ç›¸ç¬¦ä¸”å¯ä»¥ä½¿ç”¨ SIG 字首。訊號å¯ç”¨ã€Œkill - 訊號 $$ã€\n"
@@ -4427,7 +4500,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 SIGSPEC。"
-#: builtins.c:1398
+#: builtins.c:1400
msgid ""
"Display information about command type.\n"
" \n"
@@ -4456,30 +4529,31 @@ msgid ""
" Returns success if all of the NAMEs are found; fails if any are not "
"found."
msgstr ""
-"顯示命令類型的資訊。\n"
+"顯示指令類型的資訊。\n"
" \n"
-" å°æ–¼æ¯ä¸€å€‹ NAME å稱,指示如果åšç‚ºå‘½ä»¤å®ƒå°‡å¦‚何被解釋。\n"
+" å°æ–¼æ¯ä¸€å€‹ <å稱>,指示如果åšç‚ºæŒ‡ä»¤å®ƒå°‡å¦‚何被解釋。\n"
" \n"
" é¸é …:\n"
-" -a\t顯示所有包å«å稱為 NAME çš„å¯åŸ·è¡Œæª”案的ä½ç½®ï¼›\n"
+" -a\t顯示所有包å«å稱為 <å稱> çš„å¯åŸ·è¡Œæª”案的ä½ç½®ï¼›\n"
" \t包括別åã€å…§å»ºå’Œå‡½æ•¸ã€‚僅當「-pã€é¸é …沒有使用時\n"
" -f\t抑制 shell 函數查詢\n"
-" -P\t為æ¯å€‹ NAME å稱驚醒 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n"
+" -P\t為æ¯å€‹ <å稱> 驚醒 PATH 路徑æœå°‹ï¼Œå³ä½¿å®ƒæ˜¯åˆ¥åã€\n"
" \t內建或函數,並且回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱。\n"
-" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者當「type -t NAMEã€\n"
+" -p\t回傳將被執行的ç£ç¢Ÿä¸Šæª”案的å稱,或者當「type -t <å稱>ã€\n"
" \tä¸å›žå‚³ã€Œfileã€æ™‚,ä¸å›žå‚³ä»»ä½•å€¼ã€‚\n"
" -t\t回傳下列詞中的任何一個「aliasã€ã€ã€Œkeywordã€ã€\n"
-" \t「functionã€ã€ã€Œbuiltinã€ã€ã€Œfileã€æˆ–者「ã€ï¼Œå¦‚æžœ NAME 是相應的\n"
-" \t一個別åã€shell ä¿ç•™å­—ã€shell 函數ã€shell 內建ã€\n"
+" \t「functionã€ã€ã€Œbuiltinã€ã€ã€Œfileã€æˆ–者「ã€ï¼Œå¦‚æžœ <å稱> 是相應的\n"
+" \t一個別åã€shell ä¿ç•™å­—ã€shell 函數ã€shell 內建物件ã€\n"
" \tç£ç¢Ÿæª”案或沒有找到。\n"
" \n"
-" 引數:\n"
-" NAME\tå°‡è¦è§£æžçš„命令。\n"
+" åƒæ•¸ï¼š\n"
+" <å稱>\tå°‡è¦è§£æžçš„指令。\n"
" \n"
" 退出狀態:\n"
-" 如果所有的 NAME 命令都找到則回傳æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°å‰‡å¤±æ•—。"
+" 如果所有的 <å稱> 指令都找到則回傳æˆåŠŸï¼›ä»»ä½•æ‰¾ä¸åˆ°å‰‡å¤±æ•—。"
-#: builtins.c:1429
+#: builtins.c:1431
+#, fuzzy
msgid ""
"Modify shell resource limits.\n"
" \n"
@@ -4510,6 +4584,7 @@ msgid ""
" -v\tthe size of virtual memory\n"
" -x\tthe maximum number of file locks\n"
" -P\tthe maximum number of pseudoterminals\n"
+" -R\tthe maximum time a real-time process can run before blocking\n"
" -T\tthe maximum number of threads\n"
" \n"
" Not all options are available on all platforms.\n"
@@ -4535,20 +4610,20 @@ msgstr ""
" é¸é …:\n"
" -S\t使用軟 (「softã€) 資æºé™åˆ¶\n"
" -H\t使用硬 (「hardã€) 資æºé™åˆ¶\n"
-" -a\t所有當å‰é™åˆ¶éƒ½è¢«é€šå ±\n"
-" -b\t套接字快å–尺寸\n"
+" -a\t所有目å‰é™åˆ¶éƒ½è¢«é€šå ±\n"
+" -b\t通訊端快å–尺寸\n"
" -c\t建立核心檔案的最大尺寸\n"
" -d\t一個行程的資料å€æœ€å¤§å°ºå¯¸\n"
" -e\tæœ€é«˜çš„æŽ’ç¨‹å„ªå…ˆé †åº (「niceã€)\n"
" -f\t有 shell åŠå…¶å­è¡Œç¨‹å¯ä»¥å¯«å…¥çš„最大檔案尺寸\n"
-" -i\t最多å¯ä»¥æ‡¸ç½®çš„訊號數\n"
+" -i\t最多å¯ä»¥æš«åœçš„訊號數\n"
" -k\t為這個進程所分é…的最大 kqueues 數é‡\n"
" -l\t一個行程å¯ä»¥éŽ–定的最大記憶體尺寸\n"
" -m\t最大的記憶體進é§å°ºå¯¸\n"
" -n\t最多開啟的檔案æ述符個數\n"
" -p\t管é“ç·©è¡å€å°ºå¯¸\n"
" -q\tPOSIX 資訊佇列的最大ä½å…ƒçµ„數\n"
-" -r\t實時排程的最大優先順åº\n"
+" -r\tå³æ™‚排程的最大優先順åº\n"
" -s\t最大堆疊尺寸\n"
" -P\tå½çµ‚端的最大數é‡\n"
" -t\t最大的 CPU 時間,以秒為單ä½\n"
@@ -4560,9 +4635,9 @@ msgstr ""
" 並éžæ‰€æœ‰é¸é …在所有系統上å¯ç”¨ã€‚\n"
" \n"
" 如果æ供了 LIMIT 變數,則它為指定資æºçš„新值;特別的 LIMIT 值為\n"
-" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç•¶å‰çš„軟é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œç„¡é™"
+" 「softã€ã€ã€Œhardã€å’Œã€Œunlimitedã€ï¼Œåˆ†åˆ¥è¡¨ç¤ºç›®å‰çš„軟é™åˆ¶ï¼Œç¡¬é™åˆ¶å’Œç„¡é™"
"制。\n"
-" å¦å‰‡å°å‡ºæŒ‡å®šè³‡æºçš„當å‰é™åˆ¶å€¼ï¼Œä¸å¸¶é¸é …則å‡å®šç‚º -f\n"
+" å¦å‰‡å°å‡ºæŒ‡å®šè³‡æºçš„ç›®å‰é™åˆ¶å€¼ï¼Œä¸å¸¶é¸é …則å‡å®šç‚º -f\n"
" \n"
" å–值都是 1024 ä½å…ƒçµ„為單ä½ï¼Œé™¤äº† -t 以秒為單ä½ï¼Œ-p 以 512 ä½å…ƒçµ„éžå¢žï¼Œ\n"
" -u 為無尺度的行程數é‡ã€‚\n"
@@ -4570,7 +4645,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。"
-#: builtins.c:1479
+#: builtins.c:1482
msgid ""
"Display or set file mode mask.\n"
" \n"
@@ -4590,7 +4665,7 @@ msgstr ""
"顯示或設定檔案模å¼é®ç½©ã€‚\n"
" \n"
" 設定使用者檔案建立é®ç½©ç‚º MODE 模å¼ã€‚如果çœç•¥äº† MODE,則\n"
-" å°å‡ºç•¶å‰é®ç½©çš„值。\n"
+" å°å‡ºç›®å‰é®ç½©çš„值。\n"
" \n"
" 如果 MODE 模å¼ä»¥æ•¸å­—開頭,則被當åšå…«é€²ä½æ•¸å­—解æžï¼›å¦å‰‡æ˜¯ä¸€å€‹\n"
" chmod(1) å¯æŽ¥æ”¶çš„符號模å¼ä¸²ã€‚\n"
@@ -4602,7 +4677,8 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„ MODE 模å¼æˆ–者é¸é …。"
-#: builtins.c:1499
+#: builtins.c:1502
+#, fuzzy
msgid ""
"Wait for job completion and return exit status.\n"
" \n"
@@ -4613,32 +4689,42 @@ msgid ""
" status is zero. If ID is a job specification, waits for all processes\n"
" in that job's pipeline.\n"
" \n"
-" If the -n option is supplied, waits for the next job to terminate and\n"
-" returns its exit status.\n"
+" If the -n option is supplied, waits for a single job from the list of "
+"IDs,\n"
+" or, if no IDs are supplied, for the next job to complete and returns "
+"its\n"
+" exit status.\n"
+" \n"
+" If the -p option is supplied, the process or job identifier of the job\n"
+" for which the exit status is returned is assigned to the variable VAR\n"
+" named by the option argument. The variable will be unset initially, "
+"before\n"
+" any assignment. This is useful only when the -n option is supplied.\n"
" \n"
" If the -f option is supplied, and job control is enabled, waits for the\n"
" specified ID to terminate, instead of waiting for it to change status.\n"
" \n"
" Exit Status:\n"
" Returns the status of the last ID; fails if ID is invalid or an invalid\n"
-" option is given."
+" option is given, or if -n is supplied and the shell has no unwaited-for\n"
+" children."
msgstr ""
"等待工作完æˆä¸¦å›žå‚³é€€å‡ºç‹€æ…‹ã€‚\n"
" \n"
" 等待以 ID 編號識別的行程,其中 ID å¯ä»¥æ˜¯è¡Œç¨‹ç·¨è™Ÿæˆ–者工作è¦æ ¼ï¼Œ\n"
-" 並通報它的終止狀態。如果 ID 沒有給出,則等待所有的當å‰æ´»èºå­\n"
+" 並通報它的終止狀態。如果 ID 沒有給出,則等待所有的目å‰æ´»èºå­\n"
" 行程,並且回傳狀態為零。如果 ID 是工作è¦æ ¼ï¼Œç­‰å¾…工作管é“中的\n"
" 所有行程。\n"
" \n"
-" 若給定了 -n é¸é …,等待下一個工作完æˆä¸¦å›žå‚³å…¶ç‹€æ…‹ã€‚\n"
+" 若指定了 -n é¸é …,等待下一個工作完æˆä¸¦å›žå‚³å…¶ç‹€æ…‹ã€‚\n"
" \n"
-" 如果給定了 -f é¸é …且啟用工作管ç†ï¼Œå‰‡ç­‰å¾…指定 ID 終止,而éž\n"
+" 如果指定了 -f é¸é …且啟用工作管ç†ï¼Œå‰‡ç­‰å¾…指定 ID 終止,而éž\n"
" 等到其變更狀態。\n"
" \n"
" 退出狀態:\n"
" 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者é¸é …則失敗。"
-#: builtins.c:1523
+#: builtins.c:1533
msgid ""
"Wait for process completion and return exit status.\n"
" \n"
@@ -4654,14 +4740,14 @@ msgid ""
msgstr ""
"等待行程完æˆä¸¦ä¸”回傳退出狀態。\n"
" \n"
-" 等待指定行程並通報它的終止狀態。如果沒有æä¾› PID,則當å‰æ‰€æœ‰çš„æ´»èº\n"
-" å­è¡Œç¨‹éƒ½æœƒè¢«ç­‰å¾…,並且回傳碼為零。PID 必須為行程識別號。\n"
+" 等待指定行程並通報它的終止狀態。如果沒有æä¾› PID,則目å‰æ‰€æœ‰çš„æ´»èº\n"
+" å­è¡Œç¨‹éƒ½æœƒè¢«ç­‰å¾…,並且回傳碼為零。PID 必須為行程識別碼。\n"
" \n"
" 退出狀態:\n"
-" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的é¸é …則失"
+" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別碼或者指定了無效的é¸é …則失"
"敗。"
-#: builtins.c:1538
+#: builtins.c:1548
msgid ""
"Execute commands for each member in a list.\n"
" \n"
@@ -4673,16 +4759,16 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"為列表中的æ¯å€‹æˆå“¡åŸ·è¡Œå‘½ä»¤ã€‚\n"
+"為列表中的æ¯å€‹æˆå“¡åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" 「forã€è¿´åœˆç‚ºåˆ—表中的æ¯å€‹æˆå“¡åŸ·è¡Œä¸€ç³»åˆ—的命令。如果沒有\n"
+" 「forã€è¿´åœˆç‚ºåˆ—表中的æ¯å€‹æˆå“¡åŸ·è¡Œä¸€ç³»åˆ—的指令。如果沒有\n"
" 「in WORDS ...;ã€å‰‡å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚å°æ–¼ WORDS 中的æ¯\n"
-" 個元素,NAME 被設定為該元素,並且執行 COMMANDS 命令。\n"
+" 個元素,<å稱> 被設定為該元素,並且執行 <指令>。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後執行命令的狀態。"
+" 回傳最後執行指令的狀態。"
-#: builtins.c:1552
+#: builtins.c:1562
msgid ""
"Arithmetic for loop.\n"
" \n"
@@ -4703,16 +4789,16 @@ msgstr ""
" 等價於\n"
" \t(( EXP1 ))\n"
" \twhile (( EXP2 )); do\n"
-" \t\tCOMMANDS\n"
+" \t\t<指令>\n"
" \t\t(( EXP3 ))\n"
" \tdone\n"
" EXP1ã€EXP2 å’Œ EXP3 都是算術表示å¼ã€‚如果çœç•¥ä»»ä½•è¡¨ç¤ºå¼ï¼Œ\n"
" 則等åŒæ–¼ä½¿ç”¨äº†æ±‚值為 1 的表示å¼ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳最後執行命令的狀態。"
+" 回傳最後執行指令的狀態。"
-#: builtins.c:1570
+#: builtins.c:1580
msgid ""
"Select words from a list and execute commands.\n"
" \n"
@@ -4731,21 +4817,21 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"從列表中é¸å–詞並且執行命令。\n"
+"從列表中é¸å–詞並且執行指令。\n"
" \n"
-" WORDS 變數被展開,生æˆä¸€å€‹å­—詞的列表。展開的字詞集åˆè¢«å°å‡º\n"
+" WORDS 變數被展開,產生一個字詞的列表。展開的字詞集åˆè¢«å°å‡º\n"
" 在標準錯誤輸出è£ç½®ä¸Šï¼Œæ¯å€‹ä»¥ä¸€å€‹æ•¸å­—åšå­—首。如果沒有「in WORDSã€\n"
" 則å‡å®šä½¿ç”¨ã€Œin \"$@\"ã€ã€‚PS3 æ示符會被顯示並且從標準輸入讀入一列\n"
-" 如果該列由被顯示字詞å°æ‡‰çš„數字組æˆï¼Œå‰‡ NAME 變數被設定為相應\n"
+" 如果該列由被顯示字詞å°æ‡‰çš„數字組æˆï¼Œå‰‡ <å稱> 變數被設定為相應\n"
" 的字詞。如果列為空,則 WORDS 變數和æ示符被é‡æ–°é¡¯ç¤ºã€‚如果讀å–了\n"
-" 檔案çµæŸç¬¦ï¼Œå‰‡å‘½ä»¤å®Œæˆã€‚讀入任何其他的值會導致 NAME 變數被設定\n"
-" 為空。讀入的列被存放在變數 REPLY 中。COMMANDS 命令在æ¯æ¬¡é¸æ“‡\n"
-" 之後執行直到執行一個 break 命令。\n"
+" 檔案çµæŸç¬¦ï¼Œå‰‡æŒ‡ä»¤å®Œæˆã€‚讀入任何其他的值會導致 <å稱> 變數被設定\n"
+" 為空。讀入的列被存放在變數 REPLY 中。<指令> 在æ¯æ¬¡é¸æ“‡\n"
+" 之後執行直到執行一個 break 指令。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1591
+#: builtins.c:1601
msgid ""
"Report time consumed by pipeline's execution.\n"
" \n"
@@ -4762,7 +4848,7 @@ msgid ""
msgstr ""
"通報管é“執行的消耗時間。\n"
" \n"
-" 執行 PIPELINE 並且å°å‡º PIPELINE 終çµæ™‚實際時間ã€ä½¿ç”¨è€… CPU 時間和系統\n"
+" 執行 PIPELINE 並且å°å‡º PIPELINE 終止時實際時間ã€ä½¿ç”¨è€… CPU 時間和系統\n"
" CPU 時間的總çµã€‚\n"
" \n"
" é¸é …:\n"
@@ -4773,7 +4859,7 @@ msgstr ""
" 退出狀態:\n"
" å›žå‚³ç‹€æ…‹å³ PIPELINE 的回傳狀態。"
-#: builtins.c:1608
+#: builtins.c:1618
msgid ""
"Execute commands based on pattern matching.\n"
" \n"
@@ -4783,15 +4869,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"基於模å¼åŒ¹é…來執行命令。\n"
+"基於模å¼ç¬¦åˆä¾†åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" 基於 PATTERN 模å¼åŒ¹é…çš„å­—è©ž WORD,有é¸æ“‡çš„執行 COMMANDS 命令。\n"
+" 基於 PATTERN 模å¼ç¬¦åˆçš„å­—è©ž WORD,有é¸æ“‡çš„執行 <指令>。\n"
" 「|ã€ç”¨æ–¼åˆ†éš”多個模å¼ã€‚\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1620
+#: builtins.c:1630
msgid ""
"Execute commands based on conditional.\n"
" \n"
@@ -4811,18 +4897,18 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"根據æ¢ä»¶åŸ·è¡Œå‘½ä»¤ã€‚\n"
+"根據æ¢ä»¶åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" 「if COMMANDSã€åˆ—表被執行。如果退出狀態為零,則執行「then COMMANDSã€\n"
-" 列表。å¦å‰‡æŒ‰é †åºåŸ·è¡Œæ¯å€‹ã€Œelif COMMANDSã€åˆ—表,並且如果它的退出狀態為\n"
-" 零,則執行å°æ‡‰çš„「then COMMANDSã€åˆ—表並且 if 命令終止。å¦å‰‡å¦‚果存在的\n"
-" 情æ³ä¸‹ï¼ŒåŸ·è¡Œã€Œelse COMMANDSã€åˆ—表。整個çµæ§‹çš„退出狀態是最後一個執行\n"
-" 命令的狀態,或者如果沒有æ¢ä»¶æ¸¬è©¦ç‚ºçœŸçš„話,則為零。\n"
+" 「if <指令>ã€åˆ—表被執行。如果退出狀態為零,則執行「then <指令>ã€\n"
+" 列表。å¦å‰‡æŒ‰é †åºåŸ·è¡Œæ¯å€‹ã€Œelif <指令>ã€åˆ—表,並且如果它的退出狀態為\n"
+" 零,則執行å°æ‡‰çš„「then <指令>ã€åˆ—表並且 if 指令終止。å¦å‰‡å¦‚果存在的\n"
+" 情æ³ä¸‹ï¼ŒåŸ·è¡Œã€Œelse <指令>ã€åˆ—表。整個çµæ§‹çš„退出狀態是最後一個執行\n"
+" 指令的狀態,或者如果沒有æ¢ä»¶æ¸¬è©¦ç‚ºçœŸçš„話,則為零。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1637
+#: builtins.c:1647
msgid ""
"Execute commands as long as a test succeeds.\n"
" \n"
@@ -4832,15 +4918,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"åªè¦æ¸¬è©¦æˆåŠŸå³åŸ·è¡Œå‘½ä»¤ã€‚\n"
+"åªè¦æ¸¬è©¦æˆåŠŸå³åŸ·è¡ŒæŒ‡ä»¤ã€‚\n"
" \n"
-" åªè¦åœ¨ã€Œwhileã€COMMANDS 中的最終命令回傳çµæžœç‚º 0,則\n"
-" 展開並執行 COMMANDS 命令。\n"
+" åªè¦åœ¨ã€Œwhileã€<指令> 中的最終指令回傳çµæžœç‚º 0,則\n"
+" 展開並執行 <指令>。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1649
+#: builtins.c:1659
msgid ""
"Execute commands as long as a test does not succeed.\n"
" \n"
@@ -4850,15 +4936,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"當測試ä¸åŒéŽæ™‚執行命令。\n"
+"當測試ä¸åŒéŽæ™‚執行指令。\n"
" \n"
-" 「untilã€COMMANDS 命令的最終命令回傳狀態ä¸ç‚º 0 時,\n"
-" 展開並執行 COMMANDS 命令。\n"
+" 「untilã€<指令> 的最終指令回傳狀態ä¸ç‚º 0 時,\n"
+" 展開並執行 <指令>。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1661
+#: builtins.c:1671
msgid ""
"Create a coprocess named NAME.\n"
" \n"
@@ -4870,17 +4956,17 @@ msgid ""
" Exit Status:\n"
" The coproc command returns an exit status of 0."
msgstr ""
-"建立一個以 NAME 為å的副行程。\n"
+"建立一個以 <å稱> 為å的副行程。\n"
" \n"
-" éžåŒæ­¥åŸ·è¡Œ COMMANDS 命令,在執行 shell 中的陣列變數 NAME\n"
-" çš„ 0 號和 1 號元素åšç‚ºæª”案æ述符,以一個管é“連接命令\n"
-" 分別åšç‚ºå‘½ä»¤çš„標準輸出和輸入è£ç½®ã€‚\n"
-" é è¨­çš„ NAME 是「COPROCã€ã€‚\n"
+" éžåŒæ­¥åŸ·è¡Œ <指令>,在執行 shell 中的陣列變數 <å稱>\n"
+" çš„ 0 號和 1 號元素åšç‚ºæª”案æ述符,以一個管é“連接指令\n"
+" 分別åšç‚ºæŒ‡ä»¤çš„標準輸出和輸入è£ç½®ã€‚\n"
+" é è¨­çš„ <å稱> 是「COPROCã€ã€‚\n"
" \n"
" 退出狀態:\n"
" coprc 指令回傳離開代碼 0。"
-#: builtins.c:1675
+#: builtins.c:1685
msgid ""
"Define shell function.\n"
" \n"
@@ -4895,15 +4981,15 @@ msgid ""
msgstr ""
"定義 shell 函數。\n"
" \n"
-" 建立一個以 NAME 為åçš„ shell 函數。當åšç‚ºä¸€å€‹ç°¡å–®çš„命令啟用時,\n"
-" NAME å‡½æ•¸åŸ·è¡Œå‘¼å« shell 語境中的 COMMANDs 命令。當 NAME\n"
-" 被啟用時,引數åšç‚º $1…$n 被傳éžçµ¦å‡½æ•¸ï¼Œå‡½æ•¸çš„å字儲存在變數\n"
+" 建立一個以 <å稱> 為åçš„ shell 函數。當åšç‚ºä¸€å€‹ç°¡å–®çš„指令啟用時,\n"
+" <å稱> å‡½æ•¸åŸ·è¡Œå‘¼å« shell 語境中的 COMMANDs 指令。當 <å稱>\n"
+" 被啟用時,åƒæ•¸åšç‚º $1…$n 被傳éžçµ¦å‡½æ•¸ï¼Œå‡½æ•¸çš„å字儲存在變數\n"
" $FUNCNAME 中。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸé™¤éž NAME 為唯讀。"
+" 回傳æˆåŠŸé™¤éž <å稱> 為唯讀。"
-#: builtins.c:1689
+#: builtins.c:1699
msgid ""
"Group commands as a unit.\n"
" \n"
@@ -4913,15 +4999,15 @@ msgid ""
" Exit Status:\n"
" Returns the status of the last command executed."
msgstr ""
-"將命令組åˆç‚ºä¸€å€‹å–®å…ƒã€‚\n"
+"將指令組åˆç‚ºä¸€å€‹å–®å…ƒã€‚\n"
" \n"
-" 執行群組中的命令集åˆã€‚這是å°æ•´å€‹å‘½ä»¤é›†åˆ\n"
+" 執行群組中的指令集åˆã€‚這是å°æ•´å€‹æŒ‡ä»¤é›†åˆ\n"
" åšé‡å®šå‘的方法之一。\n"
" \n"
" 退出狀態:\n"
-" 回傳最後一個執行命令的狀態。"
+" 回傳最後一個執行指令的狀態。"
-#: builtins.c:1701
+#: builtins.c:1711
msgid ""
"Resume job in foreground.\n"
" \n"
@@ -4936,21 +5022,22 @@ msgid ""
msgstr ""
"在å‰è‡ºç¹¼çºŒå·¥ä½œ\n"
" \n"
-" å°æ–¼ JOB_SPEC 引數來說和「fgã€å‘½ä»¤ç­‰åŒã€‚繼續一個\n"
+" å°æ–¼ JOB_SPEC åƒæ•¸ä¾†èªªå’Œã€Œfgã€æŒ‡ä»¤ç­‰åŒã€‚繼續一個\n"
" åœæ­¢çš„或者後臺工作。JOB_SPEC å¯ä»¥æŒ‡å®šä¸€å€‹å·¥ä½œ\n"
" å字或工作號。在 JOB_SPEC 後加上一個「&ã€å°‡æœƒæŠŠ\n"
-" 工作放至後臺,就åƒå·¥ä½œè¦æ ¼è¢«åšç‚ºã€Œbgã€å‘½ä»¤çš„引數\n"
+" 工作放至後臺,就åƒå·¥ä½œè¦æ ¼è¢«åšç‚ºã€Œbgã€æŒ‡ä»¤çš„åƒæ•¸\n"
" 執行一樣。\n"
" \n"
" 退出狀態:\n"
" 回傳被繼續的工作狀態。"
-#: builtins.c:1716
+#: builtins.c:1726
+#, fuzzy
msgid ""
"Evaluate arithmetic expression.\n"
" \n"
" The EXPRESSION is evaluated according to the rules for arithmetic\n"
-" evaluation. Equivalent to \"let EXPRESSION\".\n"
+" evaluation. Equivalent to `let \"EXPRESSION\"'.\n"
" \n"
" Exit Status:\n"
" Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise."
@@ -4963,7 +5050,7 @@ msgstr ""
" 退出狀態:\n"
" 如果表示å¼æ±‚值為 0 則回傳 1ï¼›å¦å‰‡å›žå‚³ 0。"
-#: builtins.c:1728
+#: builtins.c:1738
msgid ""
"Execute conditional command.\n"
" \n"
@@ -4990,7 +5077,7 @@ msgid ""
" Exit Status:\n"
" 0 or 1 depending on value of EXPRESSION."
msgstr ""
-"執行æ¢ä»¶å‘½ä»¤ã€‚\n"
+"執行æ¢ä»¶æŒ‡ä»¤ã€‚\n"
" \n"
" 根據æ¢ä»¶è¡¨ç¤ºå¼ EXPRESSION 的求值回傳狀態 0 或 1。表示å¼æŒ‰ç…§\n"
" 「testã€å…§å»ºçš„相åŒæ¢ä»¶çµ„æˆï¼Œæˆ–者å¯ä»¥æœ‰ä¸‹åˆ—é‹ç®—å­é€£æŽ¥è€Œæˆï¼š\n"
@@ -5002,8 +5089,8 @@ msgstr ""
"å‡\n"
" \n"
" 當使用「==ã€å’Œã€Œ!=ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„字串被用作模å¼ä¸¦ä¸”執行一個\n"
-" 匹é…。當使用「=~ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„字串被當åšæ­£å‰‡è¡¨ç¤ºå¼ä¾†é€²è¡Œ\n"
-" 匹é…。\n"
+" 符åˆã€‚當使用「=~ã€é‹ç®—å­æ™‚,é‹ç®—å­å³é‚Šçš„字串被當åšæ­£è¦è¡¨ç¤ºå¼ä¾†é€²è¡Œ\n"
+" 符åˆã€‚\n"
" \n"
" é‹ç®—å­ && å’Œ || å°‡ä¸å° EXPR2 表示å¼é€²è¡Œæ±‚值,如果 EXPR1 表示å¼è¶³å¤ ç¢ºå®š\n"
" 整個表示å¼çš„值。\n"
@@ -5011,7 +5098,7 @@ msgstr ""
" 退出狀態:\n"
" 根據 EXPRESSION 的值為 0 或 1。"
-#: builtins.c:1754
+#: builtins.c:1764
msgid ""
"Common shell variable names and usage.\n"
" \n"
@@ -5066,47 +5153,47 @@ msgid ""
msgstr ""
"常用 shell 變數å稱和使用。\n"
" \n"
-" BASH_VERSION\tç•¶å‰ Bash 的版本資訊。\n"
-" CDPATH\t用於「cdã€å‘½ä»¤å¼•æ•¸æœå°‹åˆ†è™Ÿåˆ†éš”的目錄列表\n"
-" GLOBIGNORE\t路徑擴充套件時忽略的檔å匹é…模å¼åˆ—表,\n"
+" BASH_VERSION\tç›®å‰ Bash 的版本資訊。\n"
+" CDPATH\t用於「cdã€æŒ‡ä»¤åƒæ•¸æœå°‹åˆ†è™Ÿåˆ†éš”的目錄列表\n"
+" GLOBIGNORE\t路徑擴充套件時忽略的檔å符åˆæ¨¡å¼åˆ—表,\n"
" \t\t以分號分隔。\n"
-" HISTFILE\t您的命令歷å²è¨˜éŒ„存放的檔案å稱。\n"
+" HISTFILE\t您的指令歷å²è¨˜éŒ„存放的檔案å稱。\n"
" HISTFILESIZE\tæ­·å²è¨˜éŒ„檔案最多å¯ä»¥å„²å­˜çš„列數。\n"
-" HISTSIZE\t一個執行的 shell 最多å¯ä»¥è¨ªå•çš„æ­·å²è¨˜éŒ„命令列數。\n"
+" HISTSIZE\t一個執行的 shell 最多å¯ä»¥è¨ªå•çš„æ­·å²è¨˜éŒ„指令列數。\n"
" HOME\t您登入目錄的完整路徑。\n"
-" HOSTNAME\t當å‰ä¸»æ©Ÿçš„主機å。\n"
-" HOSTTYPE\t當å‰ç‰ˆæœ¬çš„ BASH 在其之上執行的 CPU 類型。\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"
+" MACHTYPE\tæè¿°ç›®å‰åŸ·è¡Œ Bash 的系統字串。\n"
" MAILCHECK\tBash 檢測新郵件的頻率,以秒為單ä½ã€‚\n"
" MAILPATH\tBash 從中檢測新郵件的檔案列表,以分號分隔。\n"
" OSTYPE\t執行 Bash 的 Unix 版本。\n"
-" PATH\t當尋找命令時æœå°‹çš„目錄列表,以冒號分隔。\n"
+" PATH\t當尋找指令時æœå°‹çš„目錄列表,以冒號分隔。\n"
" PROMPT_COMMAND\tå°å‡ºæ¯ä¸€å€‹ä¸»æ示符之å‰åŸ·è¡Œçš„命\n"
" \t\t令。\n"
" PS1\t\t主æ示符字串。\n"
" PS2\t\t從æ示符字串。\n"
-" PWD\t\t當å‰ç›®éŒ„的完整路徑。\n"
+" PWD\t\tç›®å‰ç›®éŒ„的完整路徑。\n"
" SHELLOPTS\t已啟用的 shell é¸é …列表,以冒號分隔。\n"
-" TERM\t當å‰çµ‚端類型的å稱。\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"
+" 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"
+" histchars\t控制歷å²è¨˜éŒ„展開和快速å–代的字元。第一個字元是\n"
+" \t\tæ­·å²è¨˜éŒ„å–代字元,通常是「!ã€ã€‚第二個字元是快速å–代字元,\n"
" \t\t通常是「^ã€ã€‚第三個是歷å²è¨˜éŒ„註釋字元,通常是「#ã€ã€‚\n"
-" HISTIGNORE\t用於決定哪些命令被存入歷å²è¨˜éŒ„檔案的模å¼\n"
+" HISTIGNORE\t用於決定哪些指令被存入歷å²è¨˜éŒ„檔案的模å¼\n"
" \t\t列表,以冒號分隔。\n"
-#: builtins.c:1811
+#: builtins.c:1821
msgid ""
"Add directories to stack.\n"
" \n"
@@ -5138,14 +5225,14 @@ msgid ""
msgstr ""
"從堆疊中建立目錄。\n"
" \n"
-" 從目錄堆疊中建立æ¢ç›®ã€‚ä¸å¸¶å¼•æ•¸æ™‚,建立堆疊頂端目錄,並變更至新的堆疊\n"
+" 從目錄堆疊中建立æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,建立堆疊頂端目錄,並變更至新的堆疊\n"
" 頂端目錄。\n"
" \n"
" é¸é …:\n"
" -n\t抑制從堆疊中刪除目錄時通常的目錄變æ›æ“作,從而僅å°å †ç–Š\n"
" \t進行æ“作。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n"
" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n"
" \n"
@@ -5155,9 +5242,9 @@ msgstr ""
" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數或者目錄變æ›å¤±æ•—。"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。"
-#: builtins.c:1845
+#: builtins.c:1855
msgid ""
"Remove directories from stack.\n"
" \n"
@@ -5185,14 +5272,14 @@ msgid ""
msgstr ""
"從堆疊中刪除目錄。\n"
" \n"
-" 從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶å¼•æ•¸æ™‚,刪除堆疊頂端目錄,並變更至新的堆疊\n"
+" 從目錄堆疊中刪除æ¢ç›®ã€‚ä¸å¸¶åƒæ•¸æ™‚,刪除堆疊頂端目錄,並變更至新的堆疊\n"
" 頂端目錄。\n"
" \n"
" é¸é …:\n"
" -n\t抑制從堆疊中刪除目錄時通常的目錄變æ›æ“作,從而僅å°å †ç–Š\n"
" \t進行æ“作。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" +N\t刪除第 N 個目錄 (「dirsã€é¡¯ç¤ºçš„目錄列表中左起,從零開始)。\n"
" \t例如:「popd +0ã€åˆªé™¤ç¬¬ä¸€å€‹ç›®éŒ„,「popd +1ã€åˆªé™¤ç¬¬äºŒå€‹ã€‚\n"
" \n"
@@ -5202,9 +5289,9 @@ msgstr ""
" 「dirsã€å…§å»ºé¡¯ç¤ºç›®éŒ„堆疊。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„引數或者目錄變æ›å¤±æ•—。"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„åƒæ•¸æˆ–者目錄變æ›å¤±æ•—。"
-#: builtins.c:1875
+#: builtins.c:1885
msgid ""
"Display directory stack.\n"
" \n"
@@ -5234,8 +5321,8 @@ msgid ""
msgstr ""
"顯示目錄堆疊。\n"
" \n"
-" 顯示當å‰è¨˜ä½çš„目錄列表。藉由「pushdã€å‘½ä»¤å¯ä»¥å°‡ç›®éŒ„存入列表\n"
-" 中;「popdã€å‘½ä»¤å¯ç”¨æ–¼é歷彈出列表。\n"
+" 顯示目å‰è¨˜ä½çš„目錄列表。藉由「pushdã€æŒ‡ä»¤å¯ä»¥å°‡ç›®éŒ„存入列表\n"
+" 中;「popdã€æŒ‡ä»¤å¯ç”¨æ–¼é歷彈出列表。\n"
" \n"
" é¸é …:\n"
" -c\t刪除所有元素以清空目錄堆疊\n"
@@ -5243,7 +5330,7 @@ msgstr ""
" -p\tæ¯åˆ—一個æ¢ç›®å°å‡ºç›®éŒ„堆疊\n"
" -v\tæ¯åˆ—一個æ¢ç›®ï¼Œä»¥å †ç–Šä¸­ä½ç½®ç‚ºå­—首å°å‡ºç›®éŒ„堆疊\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" +N\t顯示 dirs ä¸å¸¶é¸é …啟動時顯示的目錄列表左起中第\n"
" \tN 個目錄,從零開始。\n"
" \n"
@@ -5253,7 +5340,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生錯誤。"
-#: builtins.c:1906
+#: builtins.c:1916
msgid ""
"Set and unset shell options.\n"
" \n"
@@ -5274,22 +5361,22 @@ msgid ""
msgstr ""
"設定和å–消設定 shell é¸é …。\n"
" \n"
-" 變更æ¯å€‹ shell <é¸é …å稱> 的設定。ä¸å¸¶é¸é …引數時,\n"
+" 變更æ¯å€‹ shell <é¸é …å稱> 的設定。ä¸å¸¶é¸é …åƒæ•¸æ™‚,\n"
" 顯示æ¯å€‹æ供的 <é¸é …å稱> 或所有 shell é¸é … (如果沒有\n"
" 傳入任何 <é¸é …å稱>) 和是å¦æ¯å€‹éƒ½æœ‰è¨­å®šåˆ°çš„指示。\n"
" \n"
" é¸é …:\n"
-" -o\té™åˆ¶ OPTNAME 為定義用於「set -oã€çš„é¸é …\n"
+" -o\té™åˆ¶ <é¸é …å稱> 為定義用於「set -oã€çš„é¸é …\n"
" -p\tå°å‡ºæ¯å€‹ shell é¸é …並標註它的狀態。\n"
" -q\t抑制輸出\n"
-" -s\t啟用(設定)æ¯å€‹ OPTNAME é¸é …\n"
-" -u\tåœç”¨(å–消設定)æ¯å€‹ OPTNAME é¸é …\n"
+" -s\t啟用(設定)æ¯å€‹ <é¸é …å稱> é¸é …\n"
+" -u\tåœç”¨(å–消設定)æ¯å€‹ <é¸é …å稱> é¸é …\n"
" \n"
" 退出狀態:\n"
-" 如果 OPTNAME é¸é …被啟用則回傳æˆåŠŸï¼›å¦‚果是\n"
-" 無效的é¸é …或 OPTNAME 被åœç”¨å‰‡å¤±æ•—。"
+" 如果 <é¸é …å稱> é¸é …被啟用則回傳æˆåŠŸï¼›å¦‚果是\n"
+" 無效的é¸é …或 <é¸é …å稱> 被åœç”¨å‰‡å¤±æ•—。"
-#: builtins.c:1927
+#: builtins.c:1937
msgid ""
"Formats and prints ARGUMENTS under control of the FORMAT.\n"
" \n"
@@ -5306,8 +5393,8 @@ 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"
@@ -5327,24 +5414,24 @@ msgid ""
"assignment\n"
" error occurs."
msgstr ""
-"在 FORMAT 的控制下格å¼åŒ–並å°å‡º ARGUMENTS 引數。\n"
+"在 <æ ¼å¼> 的控制下格å¼åŒ–並å°å‡º <åƒæ•¸>。\n"
" \n"
" é¸é …:\n"
" -v var\t將輸出指派給 shell 變數 VAR 而ä¸é¡¯ç¤ºåœ¨æ¨™æº–輸出上\n"
" \n"
-" FORMAT 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字串:簡單地被複製到標準輸出的普通字元;\n"
-" 被變æ›ä¹‹å¾Œè¤‡è£½åˆ°æ¨™æº–輸入的逸出字元;以åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹å¼•æ•¸çš„å°å‡ºæ ¼å¼"
+" <æ ¼å¼> 是包å«ä¸‰ç¨®ç‰©ä»¶çš„字串:簡單地被複製到標準輸出的普通字元;\n"
+" 被變æ›ä¹‹å¾Œè¤‡è£½åˆ°æ¨™æº–輸入的逸出字元;以åŠæ¯å€‹éƒ½æœƒå½±éŸ¿åˆ°ä¸‹å€‹åƒæ•¸çš„å°å‡ºæ ¼å¼"
"化è¦æ ¼ã€‚\n"
" \n"
" 在 printf(1) 中æ述的標準控制è¦æ ¼ä¹‹å¤–,printf 解æžï¼š\n"
-"〠\n"
-" %b\t擴充套件å°æ‡‰å¼•æ•¸ä¸­çš„å斜線逸出åºåˆ—\n"
-" %q\t以å¯åšç‚º shell 輸入的格å¼å¼•ç”¨å¼•æ•¸\n"
+" \n"
+" %b\t擴充套件å°æ‡‰åƒæ•¸ä¸­çš„å斜線逸出åºåˆ—\n"
+" %q\t以å¯åšç‚º shell 輸入的格å¼å¼•ç”¨åƒæ•¸\n"
" %(fmt)T\t以 FMT 為æä¾› strftime(3) çš„æ ¼å¼è¼¸å‡ºæ—¥æœŸèˆ‡æ™‚間字串 \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者發生寫入或指派錯誤。"
-#: builtins.c:1961
+#: builtins.c:1971
#, fuzzy
msgid ""
"Specify how arguments are to be completed by Readline.\n"
@@ -5367,7 +5454,7 @@ msgid ""
" \t\tcommand) word\n"
" \n"
" When completion is attempted, the actions are applied in the order the\n"
-" uppercase-letter options are listed above. If multiple options are "
+" uppercase-letter options are listed above. If multiple options are "
"supplied,\n"
" the -D option takes precedence over -E, and both take precedence over -"
"I.\n"
@@ -5375,17 +5462,17 @@ msgid ""
" Exit Status:\n"
" Returns success unless an invalid option is supplied or an error occurs."
msgstr ""
-"è¦ç¯„ readline 如何完æˆè®€å–引數。\n"
+"è¦ç¯„ readline 如何完æˆè®€å–åƒæ•¸ã€‚\n"
" \n"
-" è¦æ ¼å°æ–¼æ¯ä¸€å€‹<å稱>如何完æˆè®€å–引數。如果ä¸å¸¶é¸é …,\n"
+" è¦æ ¼å°æ–¼æ¯ä¸€å€‹<å稱>如何完æˆè®€å–åƒæ•¸ã€‚如果ä¸å¸¶é¸é …,\n"
" ç¾æœ‰çš„補完è¦æ ¼æœƒä»¥å¯ä»¥é‡ç”¨ç‚ºè¼¸å…¥çš„æ ¼å¼å°å‡ºã€‚\n"
" \n"
" é¸é …:\n"
" -p\t以å¯é‡ç”¨çš„æ ¼å¼å°å‡ºç¾æœ‰çš„補完è¦æ ¼ã€‚\n"
" -r\tå°æ–¼æ¯å€‹<å稱>刪除補完è¦æ ¼ï¼Œæˆ–者如果沒有æä¾›<å稱>\n"
" \tå稱,刪除所有的補完è¦æ ¼ã€‚\n"
-" -D\tå°æ–¼æ²’有補完è¦æ ¼å®šç¾©çš„命令,設定é è¨­çš„補完動作\n"
-" -E\tå°æ–¼ã€Œemptyã€å‘½ä»¤è¨­å®šè£œå®Œå‹•ä½œï¼Œâ€”— å°æ–¼ç©ºåˆ—的補完。\n"
+" -D\tå°æ–¼æ²’有補完è¦æ ¼å®šç¾©çš„指令,設定é è¨­çš„補完動作\n"
+" -E\tå°æ–¼ã€Œemptyã€æŒ‡ä»¤è¨­å®šè£œå®Œå‹•ä½œï¼Œâ€”— å°æ–¼ç©ºåˆ—的補完。\n"
" -I\t套用補完和動作到首個 (通常是指令) 單詞\n"
" \n"
" 嘗試補完時,按照上述大寫字æ¯é¸é …çš„é †åºé€²è¡Œå‹•ä½œã€‚ 如果傳入了多個é¸é …,\n"
@@ -5394,7 +5481,7 @@ msgstr ""
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者錯誤發生。"
-#: builtins.c:1991
+#: builtins.c:2001
msgid ""
"Display possible completions depending on the options.\n"
" \n"
@@ -5409,13 +5496,13 @@ msgstr ""
"ä¾æ“šé¸é …顯示å¯èƒ½çš„補完。\n"
" \n"
" æ„圖在能產生å¯èƒ½çš„補完 shell 函數內部使用。\n"
-" 如果æ供了å¯é¸çš„ WORD 引數,則產生按照 WORD\n"
-" 進行的匹é…。\n"
+" 如果æ供了å¯é¸çš„ WORD åƒæ•¸ï¼Œå‰‡ç”¢ç”ŸæŒ‰ç…§ WORD\n"
+" 進行的符åˆã€‚\n"
" \n"
" 退出狀態:\n"
" 除éžä½¿ç”¨äº†ç„¡æ•ˆé¸é …或者錯誤發生,å¦å‰‡å›žå‚³æˆåŠŸã€‚"
-#: builtins.c:2006
+#: builtins.c:2016
msgid ""
"Modify or display completion options.\n"
" \n"
@@ -5448,28 +5535,27 @@ msgid ""
msgstr ""
"修改或顯示補完é¸é …。\n"
" \n"
-" 修改æ¯å€‹ NAME å稱的補完é¸é …,或如果沒有æä¾› NAME å稱,執行當å‰çš„補"
-"完。\n"
-" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ NAME å稱的補完é¸é …或當å‰çš„補完è¦æ ¼ã€‚\n"
+" 修改æ¯å€‹ <å稱> 的補完é¸é …,或如果沒有æä¾› <å稱>,執行目å‰çš„補完。\n"
+" 如果ä¸å¸¶é¸é …,å°å‡ºæ¯å€‹ <å稱> 的補完é¸é …或目å‰çš„補完è¦æ ¼ã€‚\n"
" \n"
" é¸é …:\n"
-" \t-o option\t為æ¯å€‹ NAME å稱設定補完é¸é … option\n"
-" \t-D\t\t為「defaultã€å‘½ä»¤è£œå®Œè®Šæ›´é¸é …\n"
-" \t-E\t\t為「emptyã€å‘½ä»¤è£œå®Œè®Šæ›´é¸é …\n"
+" \t-o option\t為æ¯å€‹ <å稱> 設定補完é¸é … option\n"
+" \t-D\t\t為「defaultã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n"
+" \t-E\t\t為「emptyã€æŒ‡ä»¤è£œå®Œè®Šæ›´é¸é …\n"
" \t-I\t\t為首單詞上的補完變更é¸é …\n"
" \n"
" 使用「+oã€è€Œä¸æ˜¯ã€Œ-oã€å¯ä»¥é—œé–‰æŒ‡å®šçš„é¸é …。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" \n"
-" æ¯å€‹ NAME å稱都å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è£œå®Œè¦æ ¼çš„\n"
-" 命令。如果ä¸æä¾› NAME å稱,當å‰ç”Ÿæˆè£œå®Œçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n"
-" 並且當å‰åŸ·è¡Œçš„補完生æˆå™¨é¸é …會被修改。\n"
+" æ¯å€‹ <å稱> 都å°æ‡‰ä¸€å€‹ä¹‹å‰ä»¥è—‰ç”±ã€Œcompleteã€å…§å»ºå®šç¾©äº†è£œå®Œè¦æ ¼çš„\n"
+" 指令。如果ä¸æä¾› <å稱>,目å‰ç”¢ç”Ÿè£œå®Œçš„å‡½æ•¸å¿…é ˆå‘¼å« compopt,\n"
+" 並且目å‰åŸ·è¡Œçš„補完產生器é¸é …會被修改。\n"
" \n"
" 退出狀態:\n"
-" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 NAME å稱沒有定義補完è¦æ ¼ã€‚"
+" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …或者 <å稱> 沒有定義補完è¦æ ¼ã€‚"
-#: builtins.c:2037
+#: builtins.c:2047
msgid ""
"Read lines from the standard input into an indexed array variable.\n"
" \n"
@@ -5525,18 +5611,18 @@ msgstr ""
" -C callback\tæ¯ QUANTUM æ¬¡è®€åˆ—ä¹‹å¾Œå° CALLBACK 回呼求值。\n"
" -c quantum\t定義æ¯æ¬¡å‘¼å« CALLBACK 回呼之間讀å–的列數。\n"
" \n"
-" 引數:\n"
+" åƒæ•¸ï¼š\n"
" ARRAY\t\t儲存資料使用的陣列變數\n"
" \n"
" 如果使用了 -C 而沒有 -c,é è¨­çš„定é‡æ˜¯ 5000ã€‚ç•¶å° CALLBACK 求值時,\n"
-" 下一個將被指派的陣列元素索引åšç‚ºé¡å¤–引數被傳éžã€‚\n"
+" 下一個將被指派的陣列元素索引åšç‚ºé¡å¤–åƒæ•¸è¢«å‚³éžã€‚\n"
" \n"
" 如果沒有顯å¼æŒ‡å®šèµ·å§‹ç´¢å¼•ï¼Œmapfile 將在指派å‰æ¸…空 ARRAY 變數。\n"
" \n"
" 退出狀態:\n"
" 回傳æˆåŠŸï¼Œé™¤éžä½¿ç”¨äº†ç„¡æ•ˆçš„é¸é …,或者 ARRAY 變數唯讀或ä¸æ˜¯ç´¢å¼•é™£åˆ—。"
-#: builtins.c:2073
+#: builtins.c:2083
msgid ""
"Read lines from a file into an array variable.\n"
" \n"
@@ -5546,26 +5632,17 @@ msgstr ""
" \n"
" 一個「mapfileã€çš„åŒç¾©è©žã€‚"
-#~ msgid "Copyright (C) 2012 Free Software Foundation, Inc."
-#~ msgstr "著作權所有 (C) 2013 自由軟體基金會。"
-
-#~ msgid ":"
-#~ msgstr ":"
-
-#~ msgid "true"
-#~ msgstr "true"
-
-#~ msgid "false"
-#~ msgstr "false"
-
-#~ msgid "times"
-#~ msgstr "times"
-
-#~ msgid "requesting resize"
-#~ msgstr "è¦æ±‚調整"
+#~ msgid ""
+#~ "Returns the context of the current subroutine call.\n"
+#~ " \n"
+#~ " Without EXPR, returns "
+#~ msgstr ""
+#~ "回傳目å‰å­ä¾‹ç¨‹å‘¼å«çš„語境\n"
+#~ " \n"
+#~ " ä¸å¸¶ <表示å¼> 時,回傳"
-#~ msgid "just resized"
-#~ msgstr "åªæ˜¯èª¿æ•´å¤§å°"
+#~ msgid "add_process: process %5ld (%s) in the_pipeline"
+#~ msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline"
-#~ msgid "bug: unknown operation"
-#~ msgstr "bug:ä¸æ˜Žæ“作"
+#~ msgid "Unknown Signal #"
+#~ msgstr "ä¸æ˜Žè¨Šè™Ÿ #"
diff --git a/print_cmd.c b/print_cmd.c
index 9aa6557d..3c8c2d8f 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-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -50,58 +50,58 @@
#include "builtins/common.h"
#if !HAVE_DECL_PRINTF
-extern int printf __P((const char *, ...)); /* Yuck. Double yuck. */
+extern int printf PARAMS((const char *, ...)); /* Yuck. Double yuck. */
#endif
static int indentation;
static int indentation_amount = 4;
#if defined (PREFER_STDARG)
-typedef void PFUNC __P((const char *, ...));
+typedef void PFUNC PARAMS((const char *, ...));
-static void cprintf __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
-static void xprintf __P((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+static void cprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
+static void xprintf PARAMS((const char *, ...)) __attribute__((__format__ (printf, 1, 2)));
#else
#define PFUNC VFunction
static void cprintf ();
static void xprintf ();
#endif
-static void reset_locals __P((void));
-static void newline __P((char *));
-static void indent __P((int));
-static void semicolon __P((void));
-static void the_printed_command_resize __P((int));
-
-static void make_command_string_internal __P((COMMAND *));
-static void _print_word_list __P((WORD_LIST *, char *, PFUNC *));
-static void command_print_word_list __P((WORD_LIST *, char *));
-static void print_case_clauses __P((PATTERN_LIST *));
-static void print_redirection_list __P((REDIRECT *));
-static void print_redirection __P((REDIRECT *));
-static void print_heredoc_header __P((REDIRECT *));
-static void print_heredoc_body __P((REDIRECT *));
-static void print_heredocs __P((REDIRECT *));
-static void print_heredoc_bodies __P((REDIRECT *));
-static void print_deferred_heredocs __P((const char *));
-
-static void print_for_command __P((FOR_COM *));
+static void reset_locals PARAMS((void));
+static void newline PARAMS((char *));
+static void indent PARAMS((int));
+static void semicolon PARAMS((void));
+static void the_printed_command_resize PARAMS((int));
+
+static void make_command_string_internal PARAMS((COMMAND *));
+static void _print_word_list PARAMS((WORD_LIST *, char *, PFUNC *));
+static void command_print_word_list PARAMS((WORD_LIST *, char *));
+static void print_case_clauses PARAMS((PATTERN_LIST *));
+static void print_redirection_list PARAMS((REDIRECT *));
+static void print_redirection PARAMS((REDIRECT *));
+static void print_heredoc_header PARAMS((REDIRECT *));
+static void print_heredoc_body PARAMS((REDIRECT *));
+static void print_heredocs PARAMS((REDIRECT *));
+static void print_heredoc_bodies PARAMS((REDIRECT *));
+static void print_deferred_heredocs PARAMS((const char *));
+
+static void print_for_command PARAMS((FOR_COM *));
#if defined (ARITH_FOR_COMMAND)
-static void print_arith_for_command __P((ARITH_FOR_COM *));
+static void print_arith_for_command PARAMS((ARITH_FOR_COM *));
#endif
#if defined (SELECT_COMMAND)
-static void print_select_command __P((SELECT_COM *));
+static void print_select_command PARAMS((SELECT_COM *));
#endif
-static void print_group_command __P((GROUP_COM *));
-static void print_case_command __P((CASE_COM *));
-static void print_while_command __P((WHILE_COM *));
-static void print_until_command __P((WHILE_COM *));
-static void print_until_or_while __P((WHILE_COM *, char *));
-static void print_if_command __P((IF_COM *));
+static void print_group_command PARAMS((GROUP_COM *));
+static void print_case_command PARAMS((CASE_COM *));
+static void print_while_command PARAMS((WHILE_COM *));
+static void print_until_command PARAMS((WHILE_COM *));
+static void print_until_or_while PARAMS((WHILE_COM *, char *));
+static void print_if_command PARAMS((IF_COM *));
#if defined (COND_COMMAND)
-static void print_cond_node __P((COND_COM *));
+static void print_cond_node PARAMS((COND_COM *));
#endif
-static void print_function_def __P((FUNCTION_DEF *));
+static void print_function_def PARAMS((FUNCTION_DEF *));
#define PRINTED_COMMAND_INITIAL_SIZE 64
#define PRINTED_COMMAND_GROW_SIZE 128
@@ -1312,7 +1312,7 @@ print_function_def (func)
make_command_string_internal (cmdcopy->type == cm_group
? cmdcopy->value.Group->command
: cmdcopy);
- /* XXX - PRINT_DEFERRED_HEREDOCS (""); ? */
+ PRINT_DEFERRED_HEREDOCS ("");
remove_unwind_protect ();
indentation -= indentation_amount;
@@ -1388,7 +1388,7 @@ named_function_string (name, command, flags)
make_command_string_internal (cmdcopy->type == cm_group
? cmdcopy->value.Group->command
: cmdcopy);
- /* XXX - PRINT_DEFERRED_HEREDOCS (""); ? */
+ PRINT_DEFERRED_HEREDOCS ("");
indentation = old_indent;
indentation_amount = old_amount;
diff --git a/redir.c b/redir.c
index 0c0c9f2b..fa92b4d4 100644
--- a/redir.c
+++ b/redir.c
@@ -1,6 +1,6 @@
/* redir.c -- Functions to perform input and output redirection. */
-/* Copyright (C) 1997-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -58,6 +58,33 @@ extern int errno;
# include "input.h"
#endif
+#include "builtins/pipesize.h"
+
+/* FreeBSD 13 can reliably handle atomic writes at this capacity without
+ hanging. */
+#if __FreeBSD__ && !defined (HEREDOC_PIPESIZE)
+# define HEREDOC_PIPESIZE 4096
+#endif
+
+/* Normally set by a build process command that computes pipe capacity */
+#ifndef PIPESIZE
+# ifdef PIPE_BUF
+# define PIPESIZE PIPE_BUF
+# else
+# define PIPESIZE 4096
+# endif
+#endif
+
+#ifndef HEREDOC_PIPESIZE
+# define HEREDOC_PIPESIZE PIPESIZE
+#endif
+
+#if defined (HEREDOC_PIPEMAX)
+# if HEREDOC_PIPESIZE > HEREDOC_PIPEMAX
+# define HEREDOC_PIPESIZE HEREDOC_PIPEMAX
+# endif
+#endif
+
#define SHELL_FD_BASE 10
int expanding_redir;
@@ -66,24 +93,24 @@ extern REDIRECT *redirection_undo_list;
extern REDIRECT *exec_redirection_undo_list;
/* Static functions defined and used in this file. */
-static void add_exec_redirect __P((REDIRECT *));
-static int add_undo_redirect __P((int, enum r_instruction, int));
-static int add_undo_close_redirect __P((int));
-static int expandable_redirection_filename __P((REDIRECT *));
-static int stdin_redirection __P((enum r_instruction, int));
-static int undoablefd __P((int));
-static int do_redirection_internal __P((REDIRECT *, int));
+static void add_exec_redirect PARAMS((REDIRECT *));
+static int add_undo_redirect PARAMS((int, enum r_instruction, int));
+static int add_undo_close_redirect PARAMS((int));
+static int expandable_redirection_filename PARAMS((REDIRECT *));
+static int stdin_redirection PARAMS((enum r_instruction, int));
+static int undoablefd PARAMS((int));
+static int do_redirection_internal PARAMS((REDIRECT *, int, char **));
-static int write_here_document __P((int, WORD_DESC *));
-static int write_here_string __P((int, WORD_DESC *));
-static int here_document_to_fd __P((WORD_DESC *, enum r_instruction));
+static char *heredoc_expand PARAMS((WORD_DESC *, enum r_instruction, size_t *));
+static int heredoc_write PARAMS((int, char *, size_t));
+static int here_document_to_fd PARAMS((WORD_DESC *, enum r_instruction));
-static int redir_special_open __P((int, char *, int, int, enum r_instruction));
-static int noclobber_open __P((char *, int, int, enum r_instruction));
-static int redir_open __P((char *, int, int, enum r_instruction));
+static int redir_special_open PARAMS((int, char *, int, int, enum r_instruction));
+static int noclobber_open PARAMS((char *, int, int, enum r_instruction));
+static int redir_open PARAMS((char *, int, int, enum r_instruction));
-static int redir_varassign __P((REDIRECT *, int));
-static int redir_varvalue __P((REDIRECT *));
+static int redir_varassign PARAMS((REDIRECT *, int));
+static int redir_varvalue PARAMS((REDIRECT *));
/* Spare redirector used when translating [N]>&WORD[-] or [N]<&WORD[-] to
a new redirection and when creating the redirection undo list. */
@@ -99,15 +126,16 @@ do { \
{ \
if (fd >= 0) \
close (fd); \
- last_command_exit_value = EXECUTION_FAILURE;\
+ set_exit_status (EXECUTION_FAILURE);\
return ((e) == 0 ? EINVAL : (e));\
} \
} while (0)
void
-redirection_error (temp, error)
+redirection_error (temp, error, fn)
REDIRECT *temp;
int error;
+ char *fn; /* already-expanded filename */
{
char *filename, *allocname;
int oflags;
@@ -152,6 +180,8 @@ redirection_error (temp, error)
}
}
#endif
+ else if (fn)
+ filename = fn;
else if (expandable_redirection_filename (temp))
{
oflags = temp->redirectee.filename->flags;
@@ -213,6 +243,7 @@ do_redirections (list, flags)
{
int error;
REDIRECT *temp;
+ char *fn;
if (flags & RX_UNDOABLE)
{
@@ -227,12 +258,15 @@ do_redirections (list, flags)
for (temp = list; temp; temp = temp->next)
{
- error = do_redirection_internal (temp, flags);
+ fn = 0;
+ error = do_redirection_internal (temp, flags, &fn);
if (error)
{
- redirection_error (temp, error);
+ redirection_error (temp, error, fn);
+ FREE (fn);
return (error);
}
+ FREE (fn);
}
return (0);
}
@@ -309,19 +343,45 @@ redirection_expand (word)
return (result);
}
-static int
-write_here_string (fd, redirectee)
- int fd;
+/* Expand a here-document or here-string (determined by RI) contained in
+ REDIRECTEE and return the expanded document. If LENP is non-zero, put
+ the length of the returned string into *LENP.
+
+ This captures everything about expanding here-documents and here-strings:
+ the returned document should be written directly to whatever file
+ descriptor is specified. In particular, it adds a newline to the end of
+ a here-string to preserve previous semantics. */
+static char *
+heredoc_expand (redirectee, ri, lenp)
WORD_DESC *redirectee;
+ enum r_instruction ri;
+ size_t *lenp;
{
- char *herestr;
- int herelen, n, e, old;
+ char *document;
+ size_t dlen;
+ int old;
+
+ if (redirectee->word == 0 || redirectee->word[0] == '\0')
+ {
+ if (lenp)
+ *lenp = 0;
+ return (redirectee->word);
+ }
+ /* Quoted here documents are not expanded */
+ if (ri != r_reading_string && (redirectee->flags & W_QUOTED))
+ {
+ if (lenp)
+ *lenp = STRLEN (redirectee->word);
+ return (redirectee->word);
+ }
+
expanding_redir = 1;
/* 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_unsplit_to_string (redirectee->word, 0);
+ document = (ri == r_reading_string) ? expand_assignment_string_to_string (redirectee->word, 0)
+ : expand_string_to_string (redirectee->word, Q_HERE_DOCUMENT);
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
@@ -332,136 +392,119 @@ write_here_string (fd, redirectee)
sv_ifs ("IFS");
executing_builtin = old;
- herelen = STRLEN (herestr);
-
- n = write (fd, herestr, herelen);
- if (n == herelen)
+ dlen = STRLEN (document);
+ /* XXX - Add trailing newline to here-string */
+ if (ri == r_reading_string)
{
- n = write (fd, "\n", 1);
- herelen = 1;
+ document = xrealloc (document, dlen + 2);
+ document[dlen++] = '\n';
+ document[dlen] = '\0';
}
+ if (lenp)
+ *lenp = dlen;
+
+ return document;
+}
+
+/* Write HEREDOC (of length HDLEN) to FD, returning 0 on success and ERRNO on
+ error. Don't handle interrupts. */
+static int
+heredoc_write (fd, heredoc, herelen)
+ int fd;
+ char *heredoc;
+ size_t herelen;
+{
+ ssize_t nw;
+ int e;
+
+ errno = 0;
+ nw = write (fd, heredoc, herelen);
e = errno;
- FREE (herestr);
- if (n != herelen)
+ if (nw != herelen)
{
if (e == 0)
e = ENOSPC;
return e;
}
return 0;
-}
+}
-/* Write the text of the here document pointed to by REDIRECTEE to the file
- descriptor FD, which is already open to a temp file. Return 0 if the
- write is successful, otherwise return errno. */
+/* Create a temporary file or pipe holding the text of the here document
+ pointed to by REDIRECTEE, and return a file descriptor open for reading
+ to it. Return -1 on any error, and make sure errno is set appropriately. */
static int
-write_here_document (fd, redirectee)
- int fd;
+here_document_to_fd (redirectee, ri)
WORD_DESC *redirectee;
+ enum r_instruction ri;
{
+ char *filename;
+ int r, fd, fd2, herepipe[2];
char *document;
- int document_len, fd2, old;
- FILE *fp;
- register WORD_LIST *t, *tlist;
+ size_t document_len;
+#if HEREDOC_PARANOID
+ struct stat st1, st2;
+#endif
- /* Expand the text if the word that was specified had
- no quoting. The text that we expand is treated
- exactly as if it were surrounded by double quotes. */
+ /* Expand the here-document/here-string first and then decide what to do. */
+ document = heredoc_expand (redirectee, ri, &document_len);
- if (redirectee->flags & W_QUOTED)
+ /* If we have a zero-length document, don't mess with a temp file */
+ if (document_len == 0)
{
- document = redirectee->word;
- document_len = strlen (document);
- /* Set errno to something reasonable if the write fails. */
- if (write (fd, document, document_len) < document_len)
- {
- if (errno == 0)
- errno = ENOSPC;
- return (errno);
- }
- else
- return 0;
+ fd = open ("/dev/null", O_RDONLY);
+ r = errno;
+ if (document != redirectee->word)
+ FREE (document);
+ errno = r;
+ return fd;
}
- expanding_redir = 1;
- /* 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");
- tlist = expand_string (redirectee->word, Q_HERE_DOCUMENT);
- 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
- executing_builtin to 1. This is what makes `read' get the right values
- for the IFS-related cached variables, for example. */
- old = executing_builtin;
- executing_builtin = 1;
- sv_ifs ("IFS");
- executing_builtin = old;
-
- if (tlist)
+#if defined (HEREDOC_PIPESIZE)
+ /* Try to use a pipe internal to this process if the document is shorter
+ than the system's pipe capacity (computed at build time). We want to
+ write the entire document without write blocking. */
+ if (document_len <= HEREDOC_PIPESIZE)
{
- /* Try using buffered I/O (stdio) and writing a word
- at a time, letting stdio do the work of buffering
- for us rather than managing our own strings. Most
- stdios are not particularly fast, however -- this
- may need to be reconsidered later. */
- if ((fd2 = dup (fd)) < 0 || (fp = fdopen (fd2, "w")) == NULL)
+ if (pipe (herepipe) < 0)
{
- old = errno;
- if (fd2 >= 0)
- close (fd2);
- dispose_words (tlist);
- errno = old;
- return (errno);
- }
- errno = 0;
- for (t = tlist; t; t = t->next)
- {
- /* This is essentially the body of
- string_list_internal expanded inline. */
- document = t->word->word;
- document_len = strlen (document);
- if (t != tlist)
- putc (' ', fp); /* separator */
- fwrite (document, document_len, 1, fp);
- if (ferror (fp))
- {
- if (errno == 0)
- errno = ENOSPC;
- fd2 = errno;
- fclose(fp);
- dispose_words (tlist);
- return (fd2);
- }
+ r = errno;
+ if (document != redirectee->word)
+ free (document);
+ errno = r;
+ return (-1);
}
- dispose_words (tlist);
- if (fclose (fp) != 0)
+
+#if defined (F_GETPIPE_SZ)
+ if (fcntl (herepipe[1], F_GETPIPE_SZ, 0) < document_len)
+ goto use_tempfile;
+#endif
+
+ r = heredoc_write (herepipe[1], document, document_len);
+ if (document != redirectee->word)
+ free (document);
+ close (herepipe[1]);
+ if (r) /* write error */
{
- if (errno == 0)
- errno = ENOSPC;
- return (errno);
+ close (herepipe[0]);
+ errno = r;
+ return (-1);
}
+ return (herepipe[0]);
}
- return 0;
-}
+#endif
-/* Create a temporary file holding the text of the here document pointed to
- by REDIRECTEE, and return a file descriptor open for reading to the temp
- file. Return -1 on any error, and make sure errno is set appropriately. */
-static int
-here_document_to_fd (redirectee, ri)
- WORD_DESC *redirectee;
- enum r_instruction ri;
-{
- char *filename;
- int r, fd, fd2;
+use_tempfile:
fd = sh_mktmpfd ("sh-thd", MT_USERANDOM|MT_USETMPDIR, &filename);
/* If we failed for some reason other than the file existing, abort */
if (fd < 0)
{
+ r = errno;
FREE (filename);
+ if (document != redirectee->word)
+ FREE (document);
+ errno = r;
return (fd);
}
@@ -469,10 +512,9 @@ here_document_to_fd (redirectee, ri)
SET_CLOSE_ON_EXEC (fd);
errno = r = 0; /* XXX */
- /* write_here_document returns 0 on success, errno on failure. */
- if (redirectee->word)
- r = (ri != r_reading_string) ? write_here_document (fd, redirectee)
- : write_here_string (fd, redirectee);
+ r = heredoc_write (fd, document, document_len);
+ if (document != redirectee->word)
+ FREE (document);
if (r)
{
@@ -498,6 +540,22 @@ here_document_to_fd (redirectee, ri)
return -1;
}
+#if HEREDOC_PARANOID
+ /* We can use same_file here to check whether or not fd and fd2 refer to
+ the same file, but we don't do that unless HEREDOC_PARANOID is defined. */
+ if (fstat (fd, &st1) < 0 || S_ISREG (st1.st_mode) == 0 ||
+ fstat (fd2, &st2) < 0 || S_ISREG (st2.st_mode) == 0 ||
+ same_file (filename, filename, &st1, &st2) == 0)
+ {
+ unlink (filename);
+ free (filename);
+ close (fd);
+ close (fd2);
+ errno = EEXIST;
+ return -1;
+ }
+#endif
+
close (fd);
if (unlink (filename) < 0)
{
@@ -718,11 +776,13 @@ undoablefd (fd)
produce the appropriate side effects. flags & RX_UNDOABLE, if non-zero,
says to remember how to undo each redirection. If flags & RX_CLEXEC is
non-zero, then we set all file descriptors > 2 that we open to be
- close-on-exec. */
+ close-on-exec. FNP, if non-null is a pointer to a location where the
+ expanded filename is stored. The caller will free it. */
static int
-do_redirection_internal (redirect, flags)
+do_redirection_internal (redirect, flags, fnp)
REDIRECT *redirect;
int flags;
+ char **fnp;
{
WORD_DESC *redirectee;
int redir_fd, fd, redirector, r, oflags;
@@ -857,7 +917,10 @@ do_redirection_internal (redirect, flags)
#endif /* RESTRICTED_SHELL */
fd = redir_open (redirectee_word, redirect->flags, 0666, ri);
- free (redirectee_word);
+ if (fnp)
+ *fnp = redirectee_word;
+ else
+ free (redirectee_word);
if (fd == NOCLOBBER_REDIRECT || fd == RESTRICTED_REDIRECT)
return (fd);
diff --git a/redir.h b/redir.h
index 0e117840..64a3d266 100644
--- a/redir.h
+++ b/redir.h
@@ -1,6 +1,6 @@
/* redir.h - functions from redir.c. */
-/* Copyright (C) 1997, 2001, 2005, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -32,9 +32,9 @@
#define RX_SAVCLEXEC 0x20 /* set close-on-exec off in restored fd even though saved on has it on */
#define RX_SAVEFD 0x40 /* fd used to save another even if < SHELL_FD_BASE */
-extern void redirection_error __P((REDIRECT *, int));
-extern int do_redirections __P((REDIRECT *, int));
-extern char *redirection_expand __P((WORD_DESC *));
-extern int stdin_redirects __P((REDIRECT *));
+extern void redirection_error PARAMS((REDIRECT *, int, char *));
+extern int do_redirections PARAMS((REDIRECT *, int));
+extern char *redirection_expand PARAMS((WORD_DESC *));
+extern int stdin_redirects PARAMS((REDIRECT *));
#endif /* _REDIR_H_ */
diff --git a/shell.c b/shell.c
index a2b2a55e..ce8087f7 100644
--- a/shell.c
+++ b/shell.c
@@ -1,6 +1,6 @@
/* shell.c -- GNU's idea of the POSIX shell specification. */
-/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2019 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -62,8 +62,8 @@
#include "jobs.h"
#else
extern int running_in_background;
-extern int initialize_job_control __P((int));
-extern int get_tty_state __P((void));
+extern int initialize_job_control PARAMS((int));
+extern int get_tty_state PARAMS((void));
#endif /* JOB_CONTROL */
#include "input.h"
@@ -179,6 +179,7 @@ char *shell_name = (char *)NULL;
/* time in seconds when the shell was started */
time_t shell_start_time;
+struct timeval shellstart;
/* Are we running in an emacs shell window? */
int running_under_emacs;
@@ -303,35 +304,38 @@ static FILE *default_input;
static STRING_INT_ALIST *shopt_alist;
static int shopt_ind = 0, shopt_len = 0;
-static int parse_long_options __P((char **, int, int));
-static int parse_shell_options __P((char **, int, int));
-static int bind_args __P((char **, int, int, int));
+static int parse_long_options PARAMS((char **, int, int));
+static int parse_shell_options PARAMS((char **, int, int));
+static int bind_args PARAMS((char **, int, int, int));
-static void start_debugger __P((void));
+static void start_debugger PARAMS((void));
-static void add_shopt_to_alist __P((char *, int));
-static void run_shopt_alist __P((void));
+static void add_shopt_to_alist PARAMS((char *, int));
+static void run_shopt_alist PARAMS((void));
-static void execute_env_file __P((char *));
-static void run_startup_files __P((void));
-static int open_shell_script __P((char *));
-static void set_bash_input __P((void));
-static int run_one_command __P((char *));
+static void execute_env_file PARAMS((char *));
+static void run_startup_files PARAMS((void));
+static int open_shell_script PARAMS((char *));
+static void set_bash_input PARAMS((void));
+static int run_one_command PARAMS((char *));
#if defined (WORDEXP_OPTION)
-static int run_wordexp __P((char *));
+static int run_wordexp PARAMS((char *));
#endif
-static int uidget __P((void));
+static int uidget PARAMS((void));
-static void init_interactive __P((void));
-static void init_noninteractive __P((void));
-static void init_interactive_script __P((void));
+static void set_option_defaults PARAMS((void));
+static void reset_option_defaults PARAMS((void));
-static void set_shell_name __P((char *));
-static void shell_initialize __P((void));
-static void shell_reinitialize __P((void));
+static void init_interactive PARAMS((void));
+static void init_noninteractive PARAMS((void));
+static void init_interactive_script PARAMS((void));
-static void show_shell_usage __P((FILE *, int));
+static void set_shell_name PARAMS((char *));
+static void shell_initialize PARAMS((void));
+static void shell_reinitialize PARAMS((void));
+
+static void show_shell_usage PARAMS((FILE *, int));
#ifdef __CYGWIN__
static void
@@ -455,7 +459,9 @@ main (argc, argv, env)
shell_environment = env;
set_shell_name (argv[0]);
- shell_start_time = NOW; /* NOW now defined in general.h */
+
+ gettimeofday (&shellstart, 0);
+ shell_start_time = shellstart.tv_sec;
/* Parse argument flags from the input line. */
@@ -907,7 +913,9 @@ parse_shell_options (argv, arg_start, arg_end)
o_option = argv[next_arg];
if (o_option == 0)
{
+ set_option_defaults ();
list_minus_o_opts (-1, (on_or_off == '-') ? 0 : 1);
+ reset_option_defaults ();
break;
}
if (set_minus_o_option (on_or_off, o_option) != EXECUTION_SUCCESS)
@@ -973,7 +981,7 @@ exit_shell (s)
s = run_exit_trap ();
#if defined (PROCESS_SUBSTITUTION)
- unlink_fifo_list ();
+ unlink_all_fifos ();
#endif /* PROCESS_SUBSTITUTION */
#if defined (HISTORY)
@@ -1038,6 +1046,13 @@ subshell_exit (s)
sh_exit (s);
}
+void
+set_exit_status (s)
+ int s;
+{
+ set_pipestatus_from_exit (last_command_exit_value = s);
+}
+
/* Source the bash startup files. If POSIXLY_CORRECT is non-zero, we obey
the Posix.2 startup file rules: $ENV is expanded, and if the file it
names exists, that file is sourced. The Posix.2 rules are in effect
@@ -1257,6 +1272,7 @@ maybe_make_restricted (name)
set_var_read_only ("SHELL");
set_var_read_only ("ENV");
set_var_read_only ("BASH_ENV");
+ set_var_read_only ("HISTFILE");
restricted = 1;
}
return (restricted);
@@ -1293,7 +1309,11 @@ disable_priv_mode ()
{
int e;
+#if HAVE_SETRESUID
+ if (setresuid (current_user.uid, current_user.uid, current_user.uid) < 0)
+#else
if (setuid (current_user.uid) < 0)
+#endif
{
e = errno;
sys_error (_("cannot set uid to %d: effective uid %d"), current_user.uid, current_user.euid);
@@ -1302,7 +1322,11 @@ disable_priv_mode ()
exit (e);
#endif
}
+#if HAVE_SETRESGID
+ if (setresgid (current_user.gid, current_user.gid, current_user.gid) < 0)
+#else
if (setgid (current_user.gid) < 0)
+#endif
sys_error (_("cannot set gid to %d: effective gid %d"), current_user.gid, current_user.egid);
current_user.euid = current_user.uid;
@@ -1413,7 +1437,7 @@ run_one_command (command)
command_error ("run_one_command", CMDERR_BADJUMP, code, 0);
}
}
- return (parse_and_execute (savestring (command), "-c", SEVAL_NOHIST));
+ return (parse_and_execute (savestring (command), "-c", SEVAL_NOHIST|SEVAL_RESETLINE));
}
#endif /* ONESHOT */
@@ -1763,14 +1787,39 @@ set_shell_name (argv0)
shell_name = PROGRAM;
}
+/* Some options are initialized to -1 so we have a way to determine whether
+ they were set on the command line. This is an issue when listing the option
+ values at invocation (`bash -o'), so we set the defaults here and reset
+ them after the call to list_minus_o_options (). */
+/* XXX - could also do this for histexp_flag, jobs_m_flag */
+static void
+set_option_defaults ()
+{
+#if defined (HISTORY)
+ enable_history_list = 0;
+#endif
+}
+
+static void
+reset_option_defaults ()
+{
+#if defined (HISTORY)
+ enable_history_list = -1;
+#endif
+}
+
static void
init_interactive ()
{
expand_aliases = interactive_shell = startup_state = 1;
interactive = 1;
#if defined (HISTORY)
- remember_on_history = enable_history_list = 1; /* XXX */
+ if (enable_history_list == -1)
+ enable_history_list = 1; /* set default */
+ remember_on_history = enable_history_list;
+# if defined (BANG_HISTORY)
histexp_flag = history_expansion; /* XXX */
+# endif
#endif
}
@@ -1778,6 +1827,8 @@ static void
init_noninteractive ()
{
#if defined (HISTORY)
+ if (enable_history_list == -1) /* set default */
+ enable_history_list = 0;
bash_history_reinit (0);
#endif /* HISTORY */
interactive_shell = startup_state = interactive = 0;
@@ -1793,10 +1844,14 @@ init_noninteractive ()
static void
init_interactive_script ()
{
+#if defined (HISTORY)
+ if (enable_history_list == -1)
+ enable_history_list = 1;
+#endif
init_noninteractive ();
expand_aliases = interactive_shell = startup_state = 1;
#if defined (HISTORY)
- remember_on_history = enable_history_list = 1; /* XXX */
+ remember_on_history = enable_history_list; /* XXX */
#endif
}
diff --git a/shell.h b/shell.h
index 80726052..8b41792f 100644
--- a/shell.h
+++ b/shell.h
@@ -1,6 +1,6 @@
/* shell.h -- The data structures used by the shell */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -213,13 +213,17 @@ typedef struct _sh_input_line_state_t {
size_t input_line_index;
size_t input_line_size;
size_t input_line_len;
+#if defined (HANDLE_MULTIBYTE)
+ char *input_property;
+ size_t input_propsize;
+#endif
} sh_input_line_state_t;
/* Let's try declaring these here. */
-extern char *parser_remaining_input __P((void));
+extern char *parser_remaining_input PARAMS((void));
-extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *));
-extern void restore_parser_state __P((sh_parser_state_t *));
+extern sh_parser_state_t *save_parser_state PARAMS((sh_parser_state_t *));
+extern void restore_parser_state PARAMS((sh_parser_state_t *));
-extern sh_input_line_state_t *save_input_line_state __P((sh_input_line_state_t *));
-extern void restore_input_line_state __P((sh_input_line_state_t *));
+extern sh_input_line_state_t *save_input_line_state PARAMS((sh_input_line_state_t *));
+extern void restore_input_line_state PARAMS((sh_input_line_state_t *));
diff --git a/sig.c b/sig.c
index f8a0e0f7..6964d862 100644
--- a/sig.c
+++ b/sig.c
@@ -1,6 +1,6 @@
/* sig.c - interface for shell signal handlers and signal initialization. */
-/* Copyright (C) 1994-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1994-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -58,7 +58,7 @@
extern void initialize_siglist ();
#if !defined (JOB_CONTROL)
-extern void initialize_job_signals __P((void));
+extern void initialize_job_signals PARAMS((void));
#endif
/* Non-zero after SIGINT. */
@@ -92,7 +92,7 @@ int terminate_immediately = 0;
static SigHandler *old_winch = (SigHandler *)SIG_DFL;
#endif
-static void initialize_shell_signals __P((void));
+static void initialize_shell_signals PARAMS((void));
void
initialize_signals (reinit)
@@ -309,7 +309,11 @@ initialize_shell_signals ()
sigemptyset (&top_level_mask);
sigprocmask (SIG_BLOCK, (sigset_t *)NULL, &top_level_mask);
# if defined (SIGCHLD)
- sigdelset (&top_level_mask, SIGCHLD);
+ if (sigismember (&top_level_mask, SIGCHLD))
+ {
+ sigdelset (&top_level_mask, SIGCHLD);
+ sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
+ }
# endif
#endif /* JOB_CONTROL || HAVE_POSIX_SIGNALS */
@@ -320,8 +324,7 @@ initialize_shell_signals ()
{
set_signal_handler (SIGINT, sigint_sighandler);
get_original_signal (SIGTERM);
- if (signal_is_hard_ignored (SIGTERM) == 0)
- set_signal_handler (SIGTERM, sigterm_sighandler);
+ set_signal_handler (SIGTERM, SIG_IGN);
set_sigwinch_handler ();
}
}
@@ -394,6 +397,7 @@ throw_to_top_level ()
{
if (last_command_exit_value < 128)
last_command_exit_value = 128 + SIGINT;
+ set_pipestatus_from_exit (last_command_exit_value);
print_newline = 1;
DELINTERRUPT;
}
@@ -404,9 +408,10 @@ throw_to_top_level ()
last_command_exit_signal = (last_command_exit_value > 128) ?
(last_command_exit_value - 128) : 0;
last_command_exit_value |= 128;
+ set_pipestatus_from_exit (last_command_exit_value);
/* Run any traps set on SIGINT, mostly for interactive shells */
- if (signal_is_trapped (SIGINT))
+ if (signal_is_trapped (SIGINT) && signal_is_pending (SIGINT))
run_interrupt_trap (1);
/* Clean up string parser environment. */
@@ -414,17 +419,18 @@ throw_to_top_level ()
parse_and_execute_cleanup (-1);
if (running_trap > 0)
- run_trap_cleanup (running_trap - 1);
+ {
+ run_trap_cleanup (running_trap - 1);
+ running_trap = 0;
+ }
#if defined (JOB_CONTROL)
give_terminal_to (shell_pgrp, 0);
#endif /* JOB_CONTROL */
-#if defined (JOB_CONTROL) || defined (HAVE_POSIX_SIGNALS)
/* This needs to stay because jobs.c:make_child() uses it without resetting
the signal mask. */
- sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
-#endif
+ restore_sigmask ();
reset_parser ();
@@ -464,6 +470,14 @@ jump_to_top_level (value)
sh_longjmp (top_level, value);
}
+void
+restore_sigmask ()
+{
+#if defined (JOB_CONTROL) || defined (HAVE_POSIX_SIGNALS)
+ sigprocmask (SIG_SETMASK, &top_level_mask, (sigset_t *)NULL);
+#endif
+}
+
sighandler
termsig_sighandler (sig)
int sig;
@@ -512,7 +526,6 @@ termsig_sighandler (sig)
terminating_signal = sig;
- /* XXX - should this also trigger when interrupt_immediately is set? */
if (terminate_immediately)
{
#if defined (HISTORY)
@@ -580,7 +593,10 @@ termsig_handler (sig)
#endif /* JOB_CONTROL */
#if defined (PROCESS_SUBSTITUTION)
- unlink_fifo_list ();
+ unlink_all_fifos ();
+# if defined (JOB_CONTROL)
+ procsub_clear ();
+# endif
#endif /* PROCESS_SUBSTITUTION */
/* Reset execution context */
@@ -591,7 +607,11 @@ termsig_handler (sig)
/* We don't change the set of blocked signals. If a user starts the shell
with a terminating signal blocked, we won't get here (and if by some
- magic chance we do, we'll exit below). */
+ magic chance we do, we'll exit below). What we do is to restore the
+ top-level signal mask, in case this is called from a terminating signal
+ handler context, in which case the signal is blocked. */
+ restore_sigmask ();
+
set_signal_handler (sig, SIG_DFL);
kill (getpid (), sig);
@@ -644,14 +664,21 @@ sigint_sighandler (sig)
if (wait_intr_flag)
{
last_command_exit_value = 128 + sig;
+ set_pipestatus_from_exit (last_command_exit_value);
wait_signal_received = sig;
SIGRETURN (0);
}
-
+
+ /* In interactive shells, we will get here instead of trap_handler() so
+ note that we have a trap pending. */
+ if (signal_is_trapped (sig))
+ set_trap_state (sig);
+
+ /* This is no longer used, but this code block remains as a reminder. */
if (interrupt_immediately)
{
interrupt_immediately = 0;
- last_command_exit_value = 128 + sig;
+ set_exit_status (128 + sig);
throw_to_top_level ();
}
#if defined (READLINE)
diff --git a/sig.h b/sig.h
index 4e5b4644..a564e3cd 100644
--- a/sig.h
+++ b/sig.h
@@ -32,7 +32,7 @@
#endif
#define sighandler RETSIGTYPE
-typedef RETSIGTYPE SigHandler __P((int));
+typedef RETSIGTYPE SigHandler PARAMS((int));
#if defined (VOID_SIGHANDLER)
# define SIGRETURN(n) return
@@ -46,7 +46,7 @@ typedef RETSIGTYPE SigHandler __P((int));
#if !defined (HAVE_POSIX_SIGNALS)
# define set_signal_handler(sig, handler) (SigHandler *)signal (sig, handler)
#else
-extern SigHandler *set_signal_handler __P((int, SigHandler *)); /* in sig.c */
+extern SigHandler *set_signal_handler PARAMS((int, SigHandler *)); /* in sig.c */
#endif /* _POSIX_VERSION */
#if !defined (SIGCHLD) && defined (SIGCLD)
@@ -113,25 +113,28 @@ extern int interrupt_immediately; /* no longer used */
extern int terminate_immediately;
/* Functions from sig.c. */
-extern sighandler termsig_sighandler __P((int));
-extern void termsig_handler __P((int));
-extern sighandler sigint_sighandler __P((int));
-extern void initialize_signals __P((int));
-extern void initialize_terminating_signals __P((void));
-extern void reset_terminating_signals __P((void));
-extern void top_level_cleanup __P((void));
-extern void throw_to_top_level __P((void));
-extern void jump_to_top_level __P((int)) __attribute__((__noreturn__));
-
-extern sighandler sigwinch_sighandler __P((int));
-extern void set_sigwinch_handler __P((void));
-extern void unset_sigwinch_handler __P((void));
-
-extern sighandler sigterm_sighandler __P((int));
+extern sighandler termsig_sighandler PARAMS((int));
+extern void termsig_handler PARAMS((int));
+extern sighandler sigint_sighandler PARAMS((int));
+extern void initialize_signals PARAMS((int));
+extern void initialize_terminating_signals PARAMS((void));
+extern void reset_terminating_signals PARAMS((void));
+extern void top_level_cleanup PARAMS((void));
+extern void throw_to_top_level PARAMS((void));
+extern void jump_to_top_level PARAMS((int)) __attribute__((__noreturn__));
+extern void restore_sigmask PARAMS((void));
+
+extern sighandler sigwinch_sighandler PARAMS((int));
+extern void set_sigwinch_handler PARAMS((void));
+extern void unset_sigwinch_handler PARAMS((void));
+
+extern sighandler sigterm_sighandler PARAMS((int));
/* Functions defined in trap.c. */
-extern SigHandler *set_sigint_handler __P((void));
-extern SigHandler *trap_to_sighandler __P((int));
-extern sighandler trap_handler __P((int));
+extern SigHandler *set_sigint_handler PARAMS((void));
+extern SigHandler *trap_to_sighandler PARAMS((int));
+extern sighandler trap_handler PARAMS((int));
+extern int block_trapped_signals PARAMS((sigset_t *, sigset_t *));
+extern int unblock_trapped_signals PARAMS((sigset_t *));
#endif /* _SIG_H_ */
diff --git a/siglist.c b/siglist.c
index 0e51b836..d8361dd7 100644
--- a/siglist.c
+++ b/siglist.c
@@ -23,7 +23,7 @@
#if !defined (HAVE_SYS_SIGLIST) && !defined (HAVE_UNDER_SYS_SIGLIST) && !defined (HAVE_STRSIGNAL)
#include <stdio.h>
-#include "bashtypes.h"
+#include "general.h"
#include <signal.h>
#include "siglist.h"
@@ -33,7 +33,6 @@
#endif
#include "bashintl.h"
-#include "xmalloc.h"
char *sys_siglist[NSIG];
@@ -220,7 +219,7 @@ initialize_siglist ()
if (!sys_siglist[i])
{
sys_siglist[i] =
- (char *)xmalloc (10 + strlen (_("Unknown Signal #")));
+ (char *)xmalloc (INT_STRLEN_BOUND (int) + 1 + strlen (_("Unknown Signal #%d")));
sprintf (sys_siglist[i], _("Unknown Signal #%d"), i);
}
diff --git a/siglist.h b/siglist.h
index 4cb65308..321c20c4 100644
--- a/siglist.h
+++ b/siglist.h
@@ -1,6 +1,6 @@
/* siglist.h -- encapsulate various definitions for sys_siglist */
-/* Copyright (C) 1993, 2001, 2005, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993, 2001, 2005, 2008-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -38,7 +38,7 @@ extern char *sys_siglist[];
#endif /* !strsignal && !HAVE_STRSIGNAL */
#if !defined (strsignal) && !HAVE_DECL_STRSIGNAL
-extern char *strsignal __P((int));
+extern char *strsignal PARAMS((int));
#endif
#endif /* _SIGLIST_H */
diff --git a/subst.c b/subst.c
index 843c9d39..9ccbf336 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-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -143,7 +143,7 @@ extern int errno;
/* 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
expand_string_if_necessary(). */
-typedef WORD_LIST *EXPFUNC __P((char *, int));
+typedef WORD_LIST *EXPFUNC PARAMS((char *, int));
/* Process ID of the last command executed within command substitution. */
pid_t last_command_subst_pid = NO_PID;
@@ -195,7 +195,7 @@ extern PROCESS *last_procsub_child;
#endif
#if !defined (HAVE_WCSDUP) && defined (HANDLE_MULTIBYTE)
-extern wchar_t *wcsdup __P((const wchar_t *));
+extern wchar_t *wcsdup PARAMS((const wchar_t *));
#endif
#if 0
@@ -226,137 +226,140 @@ static int expand_no_split_dollar_star = 0;
without any leading variable assignments. */
static WORD_LIST *garglist = (WORD_LIST *)NULL;
-static char *quoted_substring __P((char *, int, int));
-static int quoted_strlen __P((char *));
-static char *quoted_strchr __P((char *, int, int));
+static char *quoted_substring PARAMS((char *, int, int));
+static int quoted_strlen PARAMS((char *));
+static char *quoted_strchr PARAMS((char *, int, int));
-static char *expand_string_if_necessary __P((char *, int, EXPFUNC *));
-static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC *));
-static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
-static WORD_LIST *expand_string_internal __P((char *, int));
-static WORD_LIST *expand_string_leave_quoted __P((char *, int));
-static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int, int *, int *));
-static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *));
+static char *expand_string_if_necessary PARAMS((char *, int, EXPFUNC *));
+static inline char *expand_string_to_string_internal PARAMS((char *, int, EXPFUNC *));
+static WORD_LIST *call_expand_word_internal PARAMS((WORD_DESC *, int, int, int *, int *));
+static WORD_LIST *expand_string_internal PARAMS((char *, int));
+static WORD_LIST *expand_string_leave_quoted PARAMS((char *, int));
+static WORD_LIST *expand_string_for_rhs PARAMS((char *, int, int, int, int *, int *));
+static WORD_LIST *expand_string_for_pat PARAMS((char *, int, int *, int *));
-static char *quote_escapes_internal __P((const char *, int));
+static char *quote_escapes_internal PARAMS((const char *, int));
-static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
-static WORD_LIST *list_dequote_escapes __P((WORD_LIST *));
+static WORD_LIST *list_quote_escapes PARAMS((WORD_LIST *));
+static WORD_LIST *list_dequote_escapes PARAMS((WORD_LIST *));
-static char *make_quoted_char __P((int));
-static WORD_LIST *quote_list __P((WORD_LIST *));
+static char *make_quoted_char PARAMS((int));
+static WORD_LIST *quote_list PARAMS((WORD_LIST *));
-static int unquoted_substring __P((char *, char *));
-static int unquoted_member __P((int, char *));
+static int unquoted_substring PARAMS((char *, char *));
+static int unquoted_member PARAMS((int, char *));
#if defined (ARRAY_VARS)
-static SHELL_VAR *do_compound_assignment __P((char *, char *, int));
+static SHELL_VAR *do_compound_assignment PARAMS((char *, char *, int));
#endif
-static int do_assignment_internal __P((const WORD_DESC *, int));
+static int do_assignment_internal PARAMS((const WORD_DESC *, int));
-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, 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));
+static char *string_extract_verbatim PARAMS((char *, size_t, int *, char *, int));
+static char *string_extract PARAMS((char *, int *, char *, int));
+static char *string_extract_double_quoted PARAMS((char *, int *, int));
+static inline char *string_extract_single_quoted PARAMS((char *, int *));
+static inline int skip_single_quoted PARAMS((const char *, size_t, int, int));
+static int skip_double_quoted PARAMS((char *, size_t, int, int));
+static char *extract_delimited_string PARAMS((char *, int *, char *, char *, char *, int));
+static char *extract_dollar_brace_string PARAMS((char *, int *, int, int));
+static int skip_matched_pair PARAMS((const char *, int, int, int, int));
-static char *pos_params __P((char *, int, int, int));
+static char *pos_params PARAMS((char *, int, int, int, int));
-static unsigned char *mb_getcharlens __P((char *, int));
+static unsigned char *mb_getcharlens PARAMS((char *, int));
-static char *remove_upattern __P((char *, char *, int));
+static char *remove_upattern PARAMS((char *, char *, int));
#if defined (HANDLE_MULTIBYTE)
-static wchar_t *remove_wpattern __P((wchar_t *, size_t, wchar_t *, int));
+static wchar_t *remove_wpattern PARAMS((wchar_t *, size_t, wchar_t *, int));
#endif
-static char *remove_pattern __P((char *, char *, int));
+static char *remove_pattern PARAMS((char *, char *, int));
-static int match_upattern __P((char *, char *, int, char **, char **));
+static int match_upattern PARAMS((char *, char *, int, char **, char **));
#if defined (HANDLE_MULTIBYTE)
-static int match_wpattern __P((wchar_t *, char **, size_t, wchar_t *, int, char **, char **));
+static int match_wpattern PARAMS((wchar_t *, char **, size_t, wchar_t *, int, char **, char **));
#endif
-static int match_pattern __P((char *, char *, int, char **, char **));
-static int getpatspec __P((int, char *));
-static char *getpattern __P((char *, int, int));
-static char *variable_remove_pattern __P((char *, char *, int, int));
-static char *list_remove_pattern __P((WORD_LIST *, char *, int, int, int));
-static char *parameter_list_remove_pattern __P((int, char *, int, int));
+static int match_pattern PARAMS((char *, char *, int, char **, char **));
+static int getpatspec PARAMS((int, char *));
+static char *getpattern PARAMS((char *, int, int));
+static char *variable_remove_pattern PARAMS((char *, char *, int, int));
+static char *list_remove_pattern PARAMS((WORD_LIST *, char *, int, int, int));
+static char *parameter_list_remove_pattern PARAMS((int, char *, int, int));
#ifdef ARRAY_VARS
-static char *array_remove_pattern __P((SHELL_VAR *, char *, int, char *, int));
+static char *array_remove_pattern PARAMS((SHELL_VAR *, char *, int, int, int));
#endif
-static char *parameter_brace_remove_pattern __P((char *, char *, int, char *, int, int, int));
+static char *parameter_brace_remove_pattern PARAMS((char *, char *, int, char *, int, int, int));
-static char *string_var_assignment __P((SHELL_VAR *, char *));
+static char *string_var_assignment PARAMS((SHELL_VAR *, char *));
#if defined (ARRAY_VARS)
-static char *array_var_assignment __P((SHELL_VAR *, int, int));
+static char *array_var_assignment PARAMS((SHELL_VAR *, int, 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));
+static char *pos_params_assignment PARAMS((WORD_LIST *, int, int));
+static char *string_transform PARAMS((int, SHELL_VAR *, char *));
+static char *list_transform PARAMS((int, SHELL_VAR *, WORD_LIST *, int, int));
+static char *parameter_list_transform PARAMS((int, int, int));
#if defined ARRAY_VARS
-static char *array_transform __P((int, SHELL_VAR *, char *, int));
+static char *array_transform PARAMS((int, SHELL_VAR *, int, int));
#endif
-static char *parameter_brace_transform __P((char *, char *, int, char *, int, int, int, int));
+static char *parameter_brace_transform PARAMS((char *, char *, int, char *, int, int, int, int));
+static int valid_parameter_transform PARAMS((char *));
-static char *process_substitute __P((char *, int));
+static char *process_substitute PARAMS((char *, int));
-static char *read_comsub __P((int, int, int, int *));
+static char *read_comsub PARAMS((int, int, int, int *));
#ifdef ARRAY_VARS
-static arrayind_t array_length_reference __P((char *));
+static arrayind_t array_length_reference PARAMS((char *));
#endif
-static int valid_brace_expansion_word __P((char *, int));
-static int chk_atstar __P((char *, int, int *, int *));
-static int chk_arithsub __P((const char *, int));
+static int valid_brace_expansion_word PARAMS((char *, int));
+static int chk_atstar PARAMS((char *, int, int, int *, int *));
+static int chk_arithsub PARAMS((const char *, int));
-static WORD_DESC *parameter_brace_expand_word __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 *, int *));
-static void parameter_brace_expand_error __P((char *, char *, int));
+static WORD_DESC *parameter_brace_expand_word PARAMS((char *, int, int, int, arrayind_t *));
+static char *parameter_brace_find_indir PARAMS((char *, int, int, int));
+static WORD_DESC *parameter_brace_expand_indir PARAMS((char *, int, int, int, int *, int *));
+static WORD_DESC *parameter_brace_expand_rhs PARAMS((char *, char *, int, int, int, int *, int *));
+static void parameter_brace_expand_error PARAMS((char *, char *, int));
-static int valid_length_expression __P((char *));
-static intmax_t parameter_brace_expand_length __P((char *));
+static int valid_length_expression PARAMS((char *));
+static intmax_t parameter_brace_expand_length PARAMS((char *));
-static char *skiparith __P((char *, int));
-static int verify_substring_values __P((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *));
-static int get_var_and_type __P((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **));
-static char *mb_substring __P((char *, int, int));
-static char *parameter_brace_substring __P((char *, char *, int, char *, int, int, int));
+static char *skiparith PARAMS((char *, int));
+static int verify_substring_values PARAMS((SHELL_VAR *, char *, char *, int, intmax_t *, intmax_t *));
+static int get_var_and_type PARAMS((char *, char *, arrayind_t, int, int, SHELL_VAR **, char **));
+static char *mb_substring PARAMS((char *, int, int));
+static char *parameter_brace_substring PARAMS((char *, char *, int, char *, int, int, int));
-static int shouldexp_replacement __P((char *));
+static int shouldexp_replacement PARAMS((char *));
-static char *pos_params_pat_subst __P((char *, char *, char *, int));
+static char *pos_params_pat_subst PARAMS((char *, char *, char *, int));
-static char *parameter_brace_patsub __P((char *, char *, int, char *, int, int, int));
+static char *parameter_brace_patsub PARAMS((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, int));
+static char *pos_params_casemod PARAMS((char *, char *, int, int));
+static char *parameter_brace_casemod PARAMS((char *, char *, int, int, char *, int, int, int));
-static WORD_DESC *parameter_brace_expand __P((char *, int *, int, int, int *, int *));
-static WORD_DESC *param_expand __P((char *, int *, int, int *, int *, int *, int *, int));
+static WORD_DESC *parameter_brace_expand PARAMS((char *, int *, int, int, int *, int *));
+static WORD_DESC *param_expand PARAMS((char *, int *, int, int *, int *, int *, int *, int));
-static WORD_LIST *expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
+static WORD_LIST *expand_word_internal PARAMS((WORD_DESC *, int, int, int *, int *));
-static WORD_LIST *word_list_split __P((WORD_LIST *));
+static WORD_LIST *word_list_split PARAMS((WORD_LIST *));
-static void exp_jump_to_top_level __P((int));
+static void exp_jump_to_top_level PARAMS((int));
-static WORD_LIST *separate_out_assignments __P((WORD_LIST *));
-static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int));
+static WORD_LIST *separate_out_assignments PARAMS((WORD_LIST *));
+static WORD_LIST *glob_expand_word_list PARAMS((WORD_LIST *, int));
#ifdef BRACE_EXPANSION
-static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int));
+static WORD_LIST *brace_expand_word_list PARAMS((WORD_LIST *, int));
#endif
#if defined (ARRAY_VARS)
-static int make_internal_declare __P((char *, char *, char *));
+static int make_internal_declare PARAMS((char *, char *, char *));
+static void expand_compound_assignment_word PARAMS((WORD_LIST *, int));
+static WORD_LIST *expand_declaration_argument PARAMS((WORD_LIST *, WORD_LIST *));
#endif
-static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int));
-static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int));
+static WORD_LIST *shell_expand_word_list PARAMS((WORD_LIST *, int));
+static WORD_LIST *expand_word_list_internal PARAMS((WORD_LIST *, int));
/* **************************************************************** */
/* */
@@ -428,10 +431,10 @@ dump_word_flags (flags)
f &= ~W_COMPASSIGN;
fprintf (stderr, "W_COMPASSIGN%s", f ? "|" : "");
}
- if (f & W_NOEXPAND)
+ if (f & W_EXPANDRHS)
{
- f &= ~W_NOEXPAND;
- fprintf (stderr, "W_NOEXPAND%s", f ? "|" : "");
+ f &= ~W_EXPANDRHS;
+ fprintf (stderr, "W_EXPANDRHS%s", f ? "|" : "");
}
if (f & W_ITILDE)
{
@@ -523,7 +526,12 @@ dump_word_flags (flags)
f &= ~W_CHKLOCAL;
fprintf (stderr, "W_CHKLOCAL%s", f ? "|" : "");
}
-
+ if (f & W_FORCELOCAL)
+ {
+ f &= ~W_FORCELOCAL;
+ fprintf (stderr, "W_FORCELOCAL%s", f ? "|" : "");
+ }
+
fprintf (stderr, "\n");
fflush (stderr);
}
@@ -964,7 +972,9 @@ add_one_character:
temp[j] = ret[t];
temp[j] = string[si];
- if (string[si])
+ if (si < i + 2) /* we went back? */
+ i += 2;
+ else if (string[si])
{
j++;
i = si + 1;
@@ -1153,6 +1163,18 @@ string_extract_verbatim (string, slen, sindex, charlist, flags)
return temp;
}
+ /* This can never be called with charlist == NULL. If *charlist == NULL,
+ we can skip the loop and just return a copy of the string, updating
+ *sindex */
+ if (*charlist == 0)
+ {
+ temp = string + *sindex;
+ c = (*sindex == 0) ? slen : STRLEN (temp);
+ temp = savestring (temp);
+ *sindex += c;
+ return temp;
+ }
+
i = *sindex;
#if defined (HANDLE_MULTIBYTE)
wcharlist = 0;
@@ -2350,7 +2372,7 @@ split_at_delims (string, slen, delims, sentinel, flags, nwp, cwp)
token = substring (string, ts, te);
- ret = add_string_to_list (token, ret);
+ ret = add_string_to_list (token, ret); /* XXX */
free (token);
nw++;
@@ -2674,11 +2696,13 @@ string_list_dollar_at (list, quoted, flags)
the various subtleties of using the first character of $IFS as the
separator. Calls string_list_dollar_at, string_list_dollar_star, and
string_list as appropriate. */
+/* This needs to fully understand the additional contexts where word
+ splitting does not occur (W_ASSIGNRHS, etc.) */
char *
-string_list_pos_params (pchar, list, quoted)
+string_list_pos_params (pchar, list, quoted, pflags)
int pchar;
WORD_LIST *list;
- int quoted;
+ int quoted, pflags;
{
char *ret;
WORD_LIST *tlist;
@@ -2697,6 +2721,8 @@ string_list_pos_params (pchar, list, quoted)
}
else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */
ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */
+ else if (pchar == '*' && quoted == 0 && (pflags & PF_ASSIGNRHS)) /* XXX */
+ ret = expand_no_split_dollar_star ? string_list_dollar_star (list, quoted, 0) : string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */
else if (pchar == '*')
{
/* Even when unquoted, string_list_dollar_star does the right thing
@@ -2715,6 +2741,8 @@ string_list_pos_params (pchar, list, quoted)
ret = string_list_dollar_at (list, quoted, 0);
else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */
ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */
+ else if (pchar == '@' && quoted == 0 && (pflags & PF_ASSIGNRHS))
+ ret = string_list_dollar_at (list, quoted, pflags); /* Posix interp 888 */
else if (pchar == '@')
ret = string_list_dollar_star (list, quoted, 0);
else
@@ -2770,7 +2798,7 @@ list_string (string, separators, quoted)
WORD_LIST *result;
WORD_DESC *t;
char *current_word, *s;
- int sindex, sh_style_split, whitesep, xflags;
+ int sindex, sh_style_split, whitesep, xflags, free_word;
size_t slen;
if (!string || !*string)
@@ -2792,7 +2820,14 @@ list_string (string, separators, quoted)
STRING is quoted or if there are no separator characters. We use the
Posix definition of whitespace as a member of the space character
class in the current locale. */
+#if 0
if (!quoted || !separators || !*separators)
+#else
+ /* issep() requires that separators be non-null, and always returns 0 if
+ separator is the empty string, so don't bother if we get an empty string
+ for separators. We already returned NULL above if STRING is empty. */
+ if (!quoted && separators && *separators)
+#endif
{
for (s = string; *s && issep (*s) && ifs_whitespace (*s); s++);
@@ -2816,6 +2851,8 @@ list_string (string, separators, quoted)
if (current_word == 0)
break;
+ free_word = 1; /* If non-zero, we free current_word */
+
/* If we have a quoted empty string, add a quoted null argument. We
want to preserve the quoted null character iff this is a quoted
empty string; otherwise the quoted null characters are removed
@@ -2832,10 +2869,22 @@ list_string (string, separators, quoted)
/* If we have something, then add it regardless. However,
perform quoted null character removal on the current word. */
remove_quoted_nulls (current_word);
- result = add_string_to_list (current_word, result);
+
+ /* We don't want to set the word flags based on the string contents
+ here -- that's mostly for the parser -- so we just allocate a
+ WORD_DESC *, assign current_word (noting that we don't want to
+ free it), and skip all of make_word. */
+ t = alloc_word_desc ();
+ t->word = current_word;
+ result = make_word_list (t, result);
+ free_word = 0;
result->word->flags &= ~W_HASQUOTEDNULL; /* just to be sure */
if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
result->word->flags |= W_QUOTED;
+ /* If removing quoted null characters leaves an empty word, note
+ that we saw this for the caller to act on. */
+ if (current_word == 0 || current_word[0] == '\0')
+ result->word->flags |= W_SAWQUOTEDNULL;
}
/* If we're not doing sequences of separators in the traditional
@@ -2848,7 +2897,8 @@ list_string (string, separators, quoted)
result = make_word_list (t, result);
}
- free (current_word);
+ if (free_word)
+ free (current_word);
/* Note whether or not the separator is IFS whitespace, used later. */
whitesep = string[sindex] && ifs_whitesep (string[sindex]);
@@ -3251,14 +3301,17 @@ do_assignment_internal (word, expand)
#endif /* ARRAY_VARS */
entry = bind_variable (name, value, aflags);
- stupidly_hack_special_variables (name);
+ if (entry)
+ stupidly_hack_special_variables (entry->name); /* might be a nameref */
+ else
+ stupidly_hack_special_variables (name);
/* Return 1 if the assignment seems to have been performed correctly. */
if (entry == 0 || readonly_p (entry))
retval = 0; /* assignment failure */
else if (noassign_p (entry))
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
retval = 1; /* error status, but not assignment failure */
}
else
@@ -3330,19 +3383,6 @@ list_rest_of_args ()
return (REVERSE_LIST (list, WORD_LIST *));
}
-int
-number_of_args ()
-{
- register WORD_LIST *list;
- int n;
-
- for (n = 0; n < 9 && dollar_vars[n+1]; n++)
- ;
- for (list = rest_of_args; list; list = list->next)
- n++;
- return n;
-}
-
/* Return the value of a positional parameter. This handles values > 10. */
char *
get_dollar_var_value (ind)
@@ -3385,9 +3425,9 @@ string_rest_of_args (dollar_star)
Q_HERE_DOCUMENT or Q_DOUBLE_QUOTES, this returns a quoted list, otherwise
no quoting chars are added. */
static char *
-pos_params (string, start, end, quoted)
+pos_params (string, start, end, quoted, pflags)
char *string;
- int start, end, quoted;
+ int start, end, quoted, pflags;
{
WORD_LIST *save, *params, *h, *t;
char *ret;
@@ -3421,7 +3461,7 @@ pos_params (string, start, end, quoted)
}
t->next = (WORD_LIST *)NULL;
- ret = string_list_pos_params (string[0], h, quoted);
+ ret = string_list_pos_params (string[0], h, quoted, pflags);
if (t != params)
t->next = params;
@@ -3565,6 +3605,10 @@ expand_arith_string (string, quoted)
/* This is expanded version of expand_string_internal as it's called by
expand_string_leave_quoted */
td.flags = W_NOPROCSUB|W_NOTILDE; /* don't want process substitution or tilde expansion */
+#if 0 /* TAG: bash-5.2 */
+ if (quoted & Q_ARRAYSUB)
+ td.flags |= W_NOCOMSUB;
+#endif
td.word = savestring (string);
list = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
/* This takes care of the calls from expand_string_leave_quoted and
@@ -3749,7 +3793,7 @@ expand_string_unsplit (string, quoted)
{
if (value->word)
{
- remove_quoted_nulls (value->word->word);
+ remove_quoted_nulls (value->word->word); /* XXX */
value->word->flags &= ~W_HASQUOTEDNULL;
}
dequote_list (value);
@@ -3791,7 +3835,7 @@ expand_string_assignment (string, quoted)
{
if (value->word)
{
- remove_quoted_nulls (value->word->word);
+ remove_quoted_nulls (value->word->word); /* XXX */
value->word->flags &= ~W_HASQUOTEDNULL;
}
dequote_list (value);
@@ -3833,7 +3877,7 @@ expand_prompt_string (string, quoted, wflags)
{
if (value->word)
{
- remove_quoted_nulls (value->word->word);
+ remove_quoted_nulls (value->word->word); /* XXX */
value->word->flags &= ~W_HASQUOTEDNULL;
}
dequote_list (value);
@@ -3890,6 +3934,7 @@ expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
depending on whether or not are are going to be splitting: if the expansion
is quoted, if the OP is `=', or if IFS is set to the empty string, we
are not going to be splitting, so we set expand_no_split_dollar_star to
+ note this to callees.
We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an
assignment statement. */
/* The updated treatment of $* is the result of Posix interp 888 */
@@ -3897,7 +3942,8 @@ expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
in Posix bug 1129 */
old_nosplit = expand_no_split_dollar_star;
expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */
- td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
+ td.flags = W_EXPANDRHS; /* expanding RHS of ${paramOPword} */
+ td.flags |= W_NOSPLIT2; /* no splitting, remove "" and '' */
if (pflags & PF_ASSIGNRHS) /* pass through */
td.flags |= W_ASSIGNRHS;
if (op == '=')
@@ -4785,6 +4831,8 @@ match_upattern (string, pat, mtype, sp, ep)
end = string + len;
mlen = umatchlen (pat, len);
+ if (mlen > (int)len)
+ return (0);
switch (mtype)
{
@@ -4940,6 +4988,8 @@ match_wpattern (wstring, indices, wstrlen, wpat, mtype, sp, ep)
return (0);
mlen = wmatchlen (wpat, wstrlen);
+ if (mlen > (int)wstrlen)
+ return (0);
/* itrace("wmatchlen (%ls) -> %d", wpat, mlen); */
switch (mtype)
@@ -5160,7 +5210,7 @@ list_remove_pattern (list, pattern, patspec, itype, quoted)
}
l = REVERSE_LIST (new, WORD_LIST *);
- tword = string_list_pos_params (itype, l, quoted);
+ tword = string_list_pos_params (itype, l, quoted, 0);
dispose_words (l);
return (tword);
@@ -5185,11 +5235,11 @@ parameter_list_remove_pattern (itype, pattern, patspec, quoted)
#if defined (ARRAY_VARS)
static char *
-array_remove_pattern (var, pattern, patspec, varname, quoted)
+array_remove_pattern (var, pattern, patspec, starsub, quoted)
SHELL_VAR *var;
char *pattern;
int patspec;
- char *varname; /* so we can figure out how it's indexed */
+ int starsub; /* so we can figure out how it's indexed */
int quoted;
{
ARRAY *a;
@@ -5199,14 +5249,9 @@ array_remove_pattern (var, pattern, patspec, varname, quoted)
WORD_LIST *list;
SHELL_VAR *v;
- /* compute itype from varname here */
- v = array_variable_part (varname, 0, &ret, 0);
-
- /* XXX */
- if (v && invisible_p (v))
- return ((char *)NULL);
+ v = var; /* XXX - for now */
- itype = ret[0];
+ itype = starsub ? '*' : '@';
a = (v && array_p (v)) ? array_cell (v) : 0;
h = (v && assoc_p (v)) ? assoc_cell (v) : 0;
@@ -5277,7 +5322,7 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
break;
#if defined (ARRAY_VARS)
case VT_ARRAYVAR:
- temp1 = array_remove_pattern (v, pattern, patspec, varname, quoted);
+ temp1 = array_remove_pattern (v, pattern, patspec, starsub, quoted);
if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
{
val = quote_escapes (temp1);
@@ -5309,6 +5354,8 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
#if defined (PROCESS_SUBSTITUTION)
+static void reap_some_procsubs PARAMS((int));
+
/*****************************************************************/
/* */
/* Hacking Process Substitution */
@@ -5318,8 +5365,11 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
#if !defined (HAVE_DEV_FD)
/* Named pipes must be removed explicitly with `unlink'. This keeps a list
of FIFOs the shell has open. unlink_fifo_list will walk the list and
- unlink all of them. add_fifo_list adds the name of an open FIFO to the
- list. NFIFO is a count of the number of FIFOs in the list. */
+ unlink the ones that don't have a living process on the other end.
+ unlink_all_fifos will walk the list and unconditionally unlink them, trying
+ to open and close the FIFO first to release any child processes sleeping on
+ the FIFO. add_fifo_list adds the name of an open FIFO to the list.
+ NFIFO is a count of the number of FIFOs in the list. */
#define FIFO_INCR 20
/* PROC value of -1 means the process has been reaped and the FIFO needs to
@@ -5336,6 +5386,16 @@ static int fifo_list_size;
void
clear_fifo_list ()
{
+ int i;
+
+ for (i = 0; i < fifo_list_size; i++)
+ {
+ if (fifo_list[i].file)
+ free (fifo_list[i].file);
+ fifo_list[i].file = NULL;
+ fifo_list[i].proc = 0;
+ }
+ nfifo = 0;
}
void *
@@ -5425,6 +5485,26 @@ unlink_fifo_list ()
nfifo = 0;
}
+void
+unlink_all_fifos ()
+{
+ int i, fd;
+
+ if (nfifo == 0)
+ return;
+
+ for (i = 0; i < nfifo; i++)
+ {
+ fifo_list[i].proc = (pid_t)-1;
+ fd = open (fifo_list[i].file, O_RDWR|O_NONBLOCK);
+ unlink_fifo (i);
+ if (fd >= 0)
+ close (fd);
+ }
+
+ nfifo = 0;
+}
+
/* Take LIST, which is a bitmap denoting active FIFOs in fifo_list
from some point in the past, and close all open FIFOs in fifo_list
that are not marked as active in LIST. If LIST is NULL, close
@@ -5476,17 +5556,26 @@ set_procsub_status (ind, pid, status)
/* If we've marked the process for this procsub as dead, close the
associated file descriptor and delete the FIFO. */
-void
-reap_procsubs ()
+static void
+reap_some_procsubs (max)
+ int max;
{
int i;
- for (i = 0; i < nfifo; i++)
+ for (i = 0; i < max; i++)
if (fifo_list[i].proc == (pid_t)-1) /* reaped */
unlink_fifo (i);
}
void
+reap_procsubs ()
+{
+ reap_some_procsubs (nfifo);
+}
+
+#if 0
+/* UNUSED */
+void
wait_procsubs ()
{
int i, r;
@@ -5495,11 +5584,13 @@ wait_procsubs ()
{
if (fifo_list[i].proc != (pid_t)-1 && fifo_list[i].proc > 0)
{
- r = wait_for (fifo_list[i].proc);
+ r = wait_for (fifo_list[i].proc, 0);
+ save_proc_status (fifo_list[i].proc, r);
fifo_list[i].proc = (pid_t)-1;
}
}
}
+#endif
int
fifos_pending ()
@@ -5648,6 +5739,12 @@ unlink_fifo_list ()
nfds = 0;
}
+void
+unlink_all_fifos ()
+{
+ unlink_fifo_list ();
+}
+
/* Take LIST, which is a snapshot copy of dev_fd_list from some point in
the past, and close all open fds in dev_fd_list that are not marked
as open in LIST. If LIST is NULL, close everything in dev_fd_list.
@@ -5703,17 +5800,26 @@ set_procsub_status (ind, pid, status)
/* If we've marked the process for this procsub as dead, close the
associated file descriptor. */
-void
-reap_procsubs ()
+static void
+reap_some_procsubs (max)
+ int max;
{
int i;
- for (i = 0; nfds > 0 && i < totfds; i++)
+ for (i = 0; nfds > 0 && i < max; i++)
if (dev_fd_list[i] == (pid_t)-1)
unlink_fifo (i);
}
void
+reap_procsubs ()
+{
+ reap_some_procsubs (totfds);
+}
+
+#if 0
+/* UNUSED */
+void
wait_procsubs ()
{
int i, r;
@@ -5722,11 +5828,13 @@ wait_procsubs ()
{
if (dev_fd_list[i] != (pid_t)-1 && dev_fd_list[i] > 0)
{
- r = wait_for (dev_fd_list[i]);
+ r = wait_for (dev_fd_list[i], 0);
+ save_proc_status (dev_fd_list[i], r);
dev_fd_list[i] = (pid_t)-1;
}
}
}
+#endif
#if defined (NOTDEF)
print_dev_fd_list ()
@@ -5828,16 +5936,29 @@ process_substitute (string, open_for_read_in_child)
save_pipeline (1);
#endif /* JOB_CONTROL */
- pid = make_child ((char *)NULL, 1);
+ pid = make_child ((char *)NULL, FORK_ASYNC);
if (pid == 0)
{
+#if 0
+ int old_interactive;
+
+ old_interactive = interactive;
+#endif
+ /* The currently-executing shell is not interactive */
+ interactive = 0;
+
reset_terminating_signals (); /* XXX */
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 0
+ if (open_for_read_in_child == 0 && old_interactive && (bash_input.type == st_stdin || bash_input.type == st_stream))
+ async_redirect_stdin ();
+#endif
+
+ subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB|SUBSHELL_ASYNC;
/* We don't inherit the verbose option for command substitutions now, so
let's try it for process substitutions. */
@@ -5876,9 +5997,11 @@ process_substitute (string, open_for_read_in_child)
if (pid > 0)
{
#if defined (JOB_CONTROL)
- if (last_procsub_child)
- discard_last_procsub_child ();
last_procsub_child = restore_pipeline (0);
+ /* We assume that last_procsub_child->next == last_procsub_child because
+ of how jobs.c:add_process() works. */
+ last_procsub_child->next = 0;
+ procsub_add (last_procsub_child);
#endif
#if defined (HAVE_DEV_FD)
@@ -5906,6 +6029,9 @@ process_substitute (string, open_for_read_in_child)
/* make sure we don't have any job control */
set_job_control (0);
+ /* Clear out any existing list of process substitutions */
+ procsub_clear ();
+
/* The idea is that we want all the jobs we start from an async process
substitution to be in the same process group, but not the same pgrp
as our parent shell, since we don't want to affect our parent shell's
@@ -5988,6 +6114,11 @@ process_substitute (string, open_for_read_in_child)
remove_quoted_escapes (string);
+#if 0 /* TAG: bash-5.2 */
+ startup_state = 2; /* see if we can avoid a fork */
+ parse_and_execute_level = 0;
+#endif
+
/* Give process substitution a place to jump back to on failure,
so we don't go back up to main (). */
result = setjmp_nosigs (top_level);
@@ -6038,11 +6169,18 @@ read_comsub (fd, quoted, flags, rflag)
int fd, quoted, flags;
int *rflag;
{
- char *istring, buf[128], *bufp;
+ char *istring, buf[512], *bufp;
int istring_index, c, tflag, skip_ctlesc, skip_ctlnul;
+ int mb_cur_max;
size_t istring_size;
ssize_t bufn;
int nullbyte;
+#if defined (HANDLE_MULTIBYTE)
+ mbstate_t ps;
+ wchar_t wc;
+ size_t mblen;
+ int i;
+#endif
istring = (char *)NULL;
istring_index = istring_size = bufn = tflag = 0;
@@ -6050,10 +6188,10 @@ read_comsub (fd, quoted, flags, rflag)
skip_ctlesc = ifs_cmap[CTLESC];
skip_ctlnul = ifs_cmap[CTLNUL];
+ mb_cur_max = MB_CUR_MAX;
nullbyte = 0;
- /* Read the output of the command through the pipe. This may need to be
- changed to understand multibyte characters in the future. */
+ /* Read the output of the command through the pipe. */
while (1)
{
if (fd < 0)
@@ -6080,7 +6218,7 @@ read_comsub (fd, quoted, flags, rflag)
}
/* Add the character to ISTRING, possibly after resizing it. */
- RESIZE_MALLOCED_BUFFER (istring, istring_index, 2, istring_size, DEFAULT_ARRAY_SIZE);
+ RESIZE_MALLOCED_BUFFER (istring, istring_index, mb_cur_max+1, istring_size, 512);
/* This is essentially quote_string inline */
if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) /* || c == CTLESC || c == CTLNUL */)
@@ -6095,17 +6233,28 @@ read_comsub (fd, quoted, flags, rflag)
else if ((skip_ctlnul == 0 && c == CTLNUL) || (c == ' ' && (ifs_value && *ifs_value == 0)))
istring[istring_index++] = CTLESC;
- istring[istring_index++] = c;
-
-#if 0
-#if defined (__CYGWIN__)
- if (c == '\n' && istring_index > 1 && istring[istring_index - 2] == '\r')
- {
- istring_index--;
- istring[istring_index - 1] = '\n';
+#if defined (HANDLE_MULTIBYTE)
+ if ((locale_utf8locale && (c & 0x80)) ||
+ (locale_utf8locale == 0 && mb_cur_max > 1 && (unsigned char)c > 127))
+ {
+ /* read a multibyte character from buf */
+ /* punt on the hard case for now */
+ memset (&ps, '\0', sizeof (mbstate_t));
+ mblen = mbrtowc (&wc, bufp-1, bufn+1, &ps);
+ if (MB_INVALIDCH (mblen) || mblen == 0 || mblen == 1)
+ istring[istring_index++] = c;
+ else
+ {
+ istring[istring_index++] = c;
+ for (i = 0; i < mblen-1; i++)
+ istring[istring_index++] = *bufp++;
+ bufn -= mblen - 1;
+ }
+ continue;
}
#endif
-#endif
+
+ istring[istring_index++] = c;
}
if (istring)
@@ -6157,8 +6306,9 @@ command_substitute (string, quoted, flags)
{
pid_t pid, old_pid, old_pipeline_pgrp, old_async_pid;
char *istring, *s;
- int result, fildes[2], function_value, pflags, rc, tflag;
+ int result, fildes[2], function_value, pflags, rc, tflag, fork_flags;
WORD_DESC *ret;
+ sigset_t set, oset;
istring = (char *)NULL;
@@ -6213,7 +6363,8 @@ command_substitute (string, quoted, flags)
#endif /* JOB_CONTROL */
old_async_pid = last_asynchronous_pid;
- pid = make_child ((char *)NULL, subshell_environment&SUBSHELL_ASYNC);
+ fork_flags = (subshell_environment&SUBSHELL_ASYNC) ? FORK_ASYNC : 0;
+ pid = make_child ((char *)NULL, fork_flags|FORK_NOTERM);
last_asynchronous_pid = old_async_pid;
if (pid == 0)
@@ -6364,19 +6515,31 @@ command_substitute (string, quoted, flags)
}
else
{
+ int dummyfd;
+
#if defined (JOB_CONTROL) && defined (PGRP_PIPE)
close_pgrp_pipe ();
#endif /* JOB_CONTROL && PGRP_PIPE */
close (fildes[1]);
+ begin_unwind_frame ("read-comsub");
+ dummyfd = fildes[0];
+ add_unwind_protect (close, dummyfd);
+
+ /* Block SIGINT while we're reading from the pipe. If the child
+ process gets a SIGINT, it will either handle it or die, and the
+ read will return. */
+ BLOCK_SIGNAL (SIGINT, set, oset);
tflag = 0;
istring = read_comsub (fildes[0], quoted, flags, &tflag);
close (fildes[0]);
+ discard_unwind_frame ("read-comsub");
+ UNBLOCK_SIGNAL (oset);
current_command_subst_pid = pid;
- last_command_exit_value = wait_for (pid);
+ last_command_exit_value = wait_for (pid, JWAIT_NOTERM);
last_command_subst_pid = pid;
last_made_pid = old_pid;
@@ -6386,20 +6549,6 @@ command_substitute (string, quoted, flags)
SIGINT to ourselves. This will break out of loops, for instance. */
if (last_command_exit_value == (128 + SIGINT) && last_command_exit_signal == SIGINT)
kill (getpid (), SIGINT);
-
- /* wait_for gives the terminal back to shell_pgrp. If some other
- process group should have it, give it away to that group here.
- 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. 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 */
ret = alloc_word_desc ();
@@ -6438,7 +6587,7 @@ array_length_reference (s)
{
c = *--t;
*t = '\0';
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (s);
*t = c;
return (-1);
@@ -6519,9 +6668,9 @@ valid_brace_expansion_word (name, var_is_special)
}
static int
-chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
+chk_atstar (name, quoted, pflags, quoted_dollar_atp, contains_dollar_at)
char *name;
- int quoted;
+ int quoted, pflags;
int *quoted_dollar_atp, *contains_dollar_at;
{
char *temp1;
@@ -6546,7 +6695,9 @@ chk_atstar (name, quoted, quoted_dollar_atp, contains_dollar_at)
}
else if (name[0] == '*' && name[1] == '\0' && quoted == 0)
{
- if (contains_dollar_at)
+ /* Need more checks here that parallel what string_list_pos_params and
+ param_expand do. Check expand_no_split_dollar_star and ??? */
+ if (contains_dollar_at && expand_no_split_dollar_star == 0)
*contains_dollar_at = 1;
return 1;
}
@@ -6685,7 +6836,15 @@ expand_arrayref:
if (var_isset (var) && invisible_p (var) == 0)
{
#if defined (ARRAY_VARS)
- if (assoc_p (var))
+ /* We avoid a memory leak by saving TT as the memory allocated by
+ assoc_to_string or array_to_string and leaving it 0 otherwise,
+ then freeing TT after quoting temp. */
+ tt = (char *)NULL;
+ if ((pflags & PF_ALLINDS) && assoc_p (var))
+ tt = temp = assoc_empty (assoc_cell (var)) ? (char *)NULL : assoc_to_string (assoc_cell (var), " ", quoted);
+ else if ((pflags & PF_ALLINDS) && array_p (var))
+ tt = temp = array_empty (array_cell (var)) ? (char *)NULL : array_to_string (array_cell (var), " ", quoted);
+ else if (assoc_p (var))
temp = assoc_reference (assoc_cell (var), "0");
else if (array_p (var))
temp = array_reference (array_cell (var), 0);
@@ -6700,6 +6859,7 @@ expand_arrayref:
? quote_string (temp)
: ((pflags & PF_ASSIGNRHS) ? quote_rhs (temp)
: quote_escapes (temp));
+ FREE (tt);
}
else
temp = (char *)NULL;
@@ -6719,7 +6879,7 @@ expand_arrayref:
/* y=2 ; typeset -n x=y; echo ${x} is not the same as echo ${2} in ksh */
if (temp && *temp && legal_identifier (temp) == 0)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: invalid variable name for name reference"), temp);
temp = &expand_param_error;
}
@@ -6785,9 +6945,9 @@ parameter_brace_find_indir (name, var_is_special, quoted, find_nameref)
/* Expand an indirect reference to a variable: ${!NAME} expands to the
value of the variable whose name is the value of NAME. */
static WORD_DESC *
-parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at)
+parameter_brace_expand_indir (name, var_is_special, quoted, pflags, quoted_dollar_atp, contains_dollar_at)
char *name;
- int var_is_special, quoted;
+ int var_is_special, quoted, pflags;
int *quoted_dollar_atp, *contains_dollar_at;
{
char *t;
@@ -6825,7 +6985,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c
t = parameter_brace_find_indir (name, var_is_special, quoted, 0);
- chk_atstar (t, quoted, quoted_dollar_atp, contains_dollar_at);
+ chk_atstar (t, quoted, pflags, quoted_dollar_atp, contains_dollar_at);
#if defined (ARRAY_VARS)
/* Array references to unset variables are also an error */
@@ -6858,7 +7018,7 @@ parameter_brace_expand_indir (name, var_is_special, quoted, quoted_dollar_atp, c
return (w);
}
- w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, 0, 0);
+ w = parameter_brace_expand_word (t, SPECIAL_VAR(t, 0), quoted, pflags, 0);
free (t);
return w;
@@ -6874,7 +7034,7 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
int op, quoted, pflags, *qdollaratp, *hasdollarat;
{
WORD_DESC *w;
- WORD_LIST *l;
+ WORD_LIST *l, *tl;
char *t, *t1, *temp, *vname;
int l_hasdollat, sindex;
SHELL_VAR *v;
@@ -6899,6 +7059,23 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
*hasdollarat = l_hasdollat || (l && l->next);
if (temp != value)
free (temp);
+
+ /* list_string takes multiple CTLNULs and turns them into an empty word
+ with W_SAWQUOTEDNULL set. Turn it back into a single CTLNUL for the
+ rest of this function and the caller. */
+ for (tl = l; tl; tl = tl->next)
+ {
+ if (tl->word && (tl->word->word == 0 || tl->word->word[0] == 0) &&
+ (tl->word->flags | W_SAWQUOTEDNULL))
+ {
+ t = make_quoted_char ('\0');
+ FREE (tl->word->word);
+ tl->word->word = t;
+ tl->word->flags |= W_QUOTED|W_HASQUOTEDNULL;
+ tl->word->flags &= ~W_SAWQUOTEDNULL;
+ }
+ }
+
if (l)
{
/* If l->next is not null, we know that TEMP contained "$@", since that
@@ -7039,8 +7216,18 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
splitting, we want to quote the value we return appropriately, like
the other expansions this function handles. */
w->word = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) ? quote_string (t1) : quote_escapes (t1);
+ /* If we have something that's non-null, that's not a quoted null string,
+ and we're not going to be performing word splitting (we know we're not
+ because the operator is `='), we can forget we saw a quoted null. */
+ if (w->word && w->word[0] && QUOTED_NULL (w->word) == 0)
+ w->flags &= ~W_SAWQUOTEDNULL;
free (t1);
+ /* If we convert a null string into a quoted null, make sure the caller
+ knows it. */
+ if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) && QUOTED_NULL (w->word))
+ w->flags |= W_HASQUOTEDNULL;
+
return w;
}
@@ -7056,7 +7243,7 @@ parameter_brace_expand_error (name, value, check_null)
WORD_LIST *l;
char *temp;
- last_command_exit_value = EXECUTION_FAILURE; /* ensure it's non-zero */
+ set_exit_status (EXECUTION_FAILURE); /* ensure it's non-zero */
if (value && *value)
{
l = expand_string (value, 0);
@@ -7100,9 +7287,9 @@ parameter_brace_expand_length (name)
char *t, *newname;
intmax_t number, arg_index;
WORD_LIST *list;
-#if defined (ARRAY_VARS)
SHELL_VAR *var;
-#endif
+
+ var = (SHELL_VAR *)NULL;
if (name[1] == '\0') /* ${#} */
number = number_of_args ();
@@ -7163,6 +7350,15 @@ parameter_brace_expand_length (name)
number = MB_STRLEN (t);
}
#endif
+ /* Fast path for the common case of taking the length of a non-dynamic
+ scalar variable value. */
+ else if ((var || (var = find_variable (name + 1))) &&
+ invisible_p (var) == 0 &&
+ array_p (var) == 0 && assoc_p (var) == 0 &&
+ var->dynamic_value == 0)
+ number = value_cell (var) ? MB_STRLEN (value_cell (var)) : 0;
+ else if (var == 0 && unbound_vars_is_error == 0)
+ number = 0;
else /* ${#PS1} */
{
newname = savestring (name);
@@ -7300,8 +7496,7 @@ verify_substring_values (v, value, substr, vtype, e1p, e2p)
from end of positional parameters? */
#if 1
if ((vtype == VT_ARRAYVAR || vtype == VT_POSPARMS) && *e2p < 0)
-#else
- /* XXX - TAG: bash-5.1 */
+#else /* TAG: bash-5.2 */
if (vtype == VT_ARRAYVAR && *e2p < 0)
#endif
{
@@ -7417,7 +7612,7 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp)
vtype = VT_VARIABLE;
*varp = v;
if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT))
- *valp = value ? dequote_string (value) : savestring ("");
+ *valp = value ? dequote_string (value) : (char *)NULL;
else
*valp = value ? dequote_escapes (value) : (char *)NULL;
}
@@ -7469,10 +7664,15 @@ string_var_assignment (v, s)
char flags[MAX_ATTRIBUTES], *ret, *val;
int i;
- val = sh_quote_reusable (s, 0);
+ val = (v && (invisible_p (v) || var_isset (v) == 0)) ? (char *)NULL : 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)
+ if (i == 0 && val == 0)
+ return (char *)NULL;
+
+ ret = (char *)xmalloc (i + STRLEN (val) + strlen (v->name) + 16 + MAX_ATTRIBUTES);
+ if (i > 0 && val == 0)
+ sprintf (ret, "declare -%s %s", flags, v->name);
+ else if (i > 0)
sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
else
sprintf (ret, "%s=%s", v->name, val);
@@ -7482,18 +7682,25 @@ string_var_assignment (v, s)
#if defined (ARRAY_VARS)
static char *
-array_var_assignment (v, itype, quoted)
+array_var_assignment (v, itype, quoted, atype)
SHELL_VAR *v;
- int itype, quoted;
+ int itype, quoted, atype;
{
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)
+ if (atype == 2)
+ val = array_p (v) ? array_to_kvpair (array_cell (v), 0)
+ : assoc_to_kvpair (assoc_cell (v), 0);
+ else
+ val = array_p (v) ? array_to_assign (array_cell (v), 0)
+ : assoc_to_assign (assoc_cell (v), 0);
+
+ if (val == 0 && (invisible_p (v) || var_isset (v) == 0))
+ ; /* placeholder */
+ else if (val == 0)
{
val = (char *)xmalloc (3);
val[0] = LPAREN;
@@ -7506,9 +7713,16 @@ array_var_assignment (v, itype, quoted)
free (val);
val = ret;
}
+
+ if (atype == 2)
+ return val;
+
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);
+ ret = (char *)xmalloc (i + STRLEN (val) + strlen (v->name) + 16);
+ if (val)
+ sprintf (ret, "declare -%s %s=%s", flags, v->name, val);
+ else
+ sprintf (ret, "declare -%s %s", flags, v->name);
free (val);
return ret;
}
@@ -7540,7 +7754,9 @@ string_transform (xc, v, s)
char *ret, flags[MAX_ATTRIBUTES], *t;
int i;
- if (((xc == 'A' || xc == 'a') && v == 0) || (xc != 'a' && s == 0))
+ if (((xc == 'A' || xc == 'a') && v == 0))
+ return (char *)NULL;
+ else if (xc != 'a' && xc != 'A' && s == 0)
return (char *)NULL;
switch (xc)
@@ -7553,6 +7769,9 @@ string_transform (xc, v, s)
case 'A':
ret = string_var_assignment (v, s);
break;
+ case 'K':
+ ret = sh_quote_reusable (s, 0);
+ break;
/* Transformations that modify the variable's value */
case 'E':
t = ansiexpand (s, 0, strlen (s), (int *)0);
@@ -7565,6 +7784,15 @@ string_transform (xc, v, s)
case 'Q':
ret = sh_quote_reusable (s, 0);
break;
+ case 'U':
+ ret = sh_modcase (s, 0, CASE_UPPER);
+ break;
+ case 'u':
+ ret = sh_modcase (s, 0, CASE_UPFIRST); /* capitalize */
+ break;
+ case 'L':
+ ret = sh_modcase (s, 0, CASE_LOWER);
+ break;
default:
ret = (char *)NULL;
break;
@@ -7599,7 +7827,7 @@ list_transform (xc, v, list, itype, quoted)
if (itype == '*' && expand_no_split_dollar_star && ifs_is_null)
qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */
- tword = string_list_pos_params (itype, l, qflags);
+ tword = string_list_pos_params (itype, l, qflags, 0);
dispose_words (l);
return (tword);
@@ -7627,10 +7855,10 @@ parameter_list_transform (xc, itype, quoted)
#if defined (ARRAY_VARS)
static char *
-array_transform (xc, var, varname, quoted)
+array_transform (xc, var, starsub, quoted)
int xc;
SHELL_VAR *var;
- char *varname; /* so we can figure out how it's indexed */
+ int starsub; /* so we can figure out how it's indexed */
int quoted;
{
ARRAY *a;
@@ -7640,21 +7868,28 @@ array_transform (xc, var, varname, quoted)
WORD_LIST *list;
SHELL_VAR *v;
- /* compute itype from varname here */
- v = array_variable_part (varname, 0, &ret, 0);
+ v = var; /* XXX - for now */
- /* XXX */
- if (v && invisible_p (v))
- return ((char *)NULL);
-
- itype = ret[0];
+ itype = starsub ? '*' : '@';
if (xc == 'A')
- return (array_var_assignment (v, itype, quoted));
+ return (array_var_assignment (v, itype, quoted, 1));
+ else if (xc == 'K')
+ return (array_var_assignment (v, itype, quoted, 2));
+
+ /* special case for unset arrays and attributes */
+ if (xc == 'a' && (invisible_p (v) || var_isset (v) == 0))
+ {
+ char flags[MAX_ATTRIBUTES];
+ int i;
+
+ i = var_attribute_string (v, 0, flags);
+ return ((i > 0) ? savestring (flags) : (char *)NULL);
+ }
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);
@@ -7665,6 +7900,31 @@ array_transform (xc, var, varname, quoted)
}
#endif /* ARRAY_VARS */
+static int
+valid_parameter_transform (xform)
+ char *xform;
+{
+ if (xform[1])
+ return 0;
+
+ /* check for valid values of xform[0] */
+ switch (xform[0])
+ {
+ case 'a': /* expand to a string with just attributes */
+ case 'A': /* expand as an assignment statement with attributes */
+ case 'K': /* expand assoc array to list of key/value pairs */
+ case 'E': /* expand like $'...' */
+ case 'P': /* expand like prompt string */
+ case 'Q': /* quote reusably */
+ case 'U': /* transform to uppercase */
+ case 'u': /* tranform by capitalizing */
+ case 'L': /* transform to lowercase */
+ return 1;
+ default:
+ return 0;
+ }
+}
+
static char *
parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, flags)
char *varname, *value;
@@ -7672,7 +7932,7 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, fl
char *xform;
int rtype, quoted, pflags, flags;
{
- int vtype, xc;
+ int vtype, xc, starsub;
char *temp1, *val, *oname;
SHELL_VAR *v;
@@ -7690,27 +7950,26 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, fl
return ((char *)NULL);
}
- /* check for valid values of xc */
- switch (xc)
+ if (valid_parameter_transform (xform) == 0)
{
- case 'a': /* expand to a string with just attributes */
- case 'A': /* expand as an assignment statement with attributes */
- case 'E': /* expand like $'...' */
- case 'P': /* expand like prompt string */
- case 'Q': /* quote reusably */
- break;
- default:
this_command_name = oname;
+#if 0 /* TAG: bash-5.2 Martin Schulte <gnu@schrader-schulte.de> 10/2020 */
+ return (interactive_shell ? &expand_param_error : &expand_param_fatal);
+#else
return &expand_param_error;
+#endif
}
+ starsub = vtype & VT_STARSUB;
+ vtype &= ~VT_STARSUB;
+
/* If we are asked to display the attributes of an unset variable, V will
be NULL after the call to get_var_and_type. Double-check here. */
- if (xc == 'a' && vtype == VT_VARIABLE && varname && v == 0)
+ if ((xc == 'a' || xc == 'A') && vtype == VT_VARIABLE && varname && v == 0)
v = find_variable (varname);
temp1 = (char *)NULL; /* shut up gcc */
- switch (vtype & ~VT_STARSUB)
+ switch (vtype)
{
case VT_VARIABLE:
case VT_ARRAYMEMBER:
@@ -7728,7 +7987,7 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, pflags, fl
break;
#if defined (ARRAY_VARS)
case VT_ARRAYVAR:
- temp1 = array_transform (xc, v, varname, quoted);
+ temp1 = array_transform (xc, v, starsub, quoted);
if (temp1 && quoted == 0 && ifs_is_null)
{
/* Posix interp 888 */
@@ -7860,20 +8119,20 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
case VT_POSPARMS:
case VT_ARRAYVAR:
if (vtype == VT_POSPARMS)
- tt = pos_params (varname, e1, e2, quoted);
+ tt = pos_params (varname, e1, e2, quoted, pflags);
#if defined (ARRAY_VARS)
/* assoc_subrange and array_subrange both call string_list_pos_params,
so we can treat this case just like VT_POSPARAMS. */
else if (assoc_p (v))
/* we convert to list and take first e2 elements starting at e1th
element -- officially undefined for now */
- tt = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted);
+ tt = assoc_subrange (assoc_cell (v), e1, e2, starsub, quoted, pflags);
else
/* We want E2 to be the number of elements desired (arrays can be
sparse, so verify_substring_values just returns the numbers
specified and we rely on array_subrange to understand how to
deal with them). */
- tt = array_subrange (array_cell (v), e1, e2, starsub, quoted);
+ tt = array_subrange (array_cell (v), e1, e2, starsub, quoted, pflags);
#endif
/* We want to leave this alone in every case where pos_params/
string_list_pos_params quotes the list members */
@@ -7881,6 +8140,10 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags)
{
temp = tt; /* Posix interp 888 */
}
+ else if (tt && quoted == 0 && (pflags & PF_ASSIGNRHS))
+ {
+ temp = tt; /* Posix interp 888 */
+ }
else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
{
temp = tt ? quote_escapes (tt) : (char *)NULL;
@@ -7926,16 +8189,17 @@ pat_subst (string, pat, rep, mflags)
char *string, *pat, *rep;
int mflags;
{
- char *ret, *s, *e, *str, *rstr, *mstr;
+ char *ret, *s, *e, *str, *rstr, *mstr, *send;
int rptr, mtype, rxpand, mlen;
size_t rsize, l, replen, rslen;
+ DECLARE_MBSTATE;
if (string == 0)
return (savestring (""));
mtype = mflags & MATCH_TYPEMASK;
-#if 0 /* bash-4.2 ? */
+#if 0 /* TAG: bash-5.2? */
rxpand = (rep && *rep) ? shouldexp_replacement (rep) : 0;
#else
rxpand = 0;
@@ -7982,6 +8246,7 @@ pat_subst (string, pat, rep, mflags)
ret = (char *)xmalloc (rsize = 64);
ret[0] = '\0';
+ send = string + strlen (string);
for (replen = STRLEN (rep), rptr = 0, str = string; *str;)
{
@@ -8035,9 +8300,20 @@ pat_subst (string, pat, rep, mflags)
{
/* On a zero-length match, make sure we copy one character, since
we increment one character to avoid infinite recursion. */
- RESIZE_MALLOCED_BUFFER (ret, rptr, 1, rsize, 64);
+ char *p, *origp, *origs;
+ size_t clen;
+
+ RESIZE_MALLOCED_BUFFER (ret, rptr, locale_mb_cur_max, rsize, 64);
+#if defined (HANDLE_MULTIBYTE)
+ p = origp = ret + rptr;
+ origs = str;
+ COPY_CHAR_P (p, str, send);
+ rptr += p - origp;
+ e += str - origs;
+#else
ret[rptr++] = *str++;
e++; /* avoid infinite recursion on zero-length match */
+#endif
}
}
@@ -8062,7 +8338,7 @@ pos_params_pat_subst (string, pat, rep, mflags)
WORD_LIST *save, *params;
WORD_DESC *w;
char *ret;
- int pchar, qflags;
+ int pchar, qflags, pflags;
save = params = list_rest_of_args ();
if (save == 0)
@@ -8079,13 +8355,14 @@ pos_params_pat_subst (string, pat, rep, mflags)
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0;
/* If we are expanding in a context where word splitting will not be
performed, treat as quoted. This changes how $* will be expanded. */
if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && expand_no_split_dollar_star && ifs_is_null)
qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */
- ret = string_list_pos_params (pchar, save, qflags);
+ ret = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words (save);
return (ret);
@@ -8233,6 +8510,10 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
{
/* Posix interp 888 */
}
+ else if (temp && quoted == 0 && (pflags & PF_ASSIGNRHS))
+ {
+ /* Posix interp 888 */
+ }
else if (temp && (mflags & MATCH_QUOTED) == 0)
{
tt = quote_escapes (temp);
@@ -8294,7 +8575,7 @@ pos_params_modcase (string, pat, modop, mflags)
WORD_LIST *save, *params;
WORD_DESC *w;
char *ret;
- int pchar, qflags;
+ int pchar, qflags, pflags;
save = params = list_rest_of_args ();
if (save == 0)
@@ -8311,13 +8592,14 @@ pos_params_modcase (string, pat, modop, mflags)
pchar = (mflags & MATCH_STARSUB) == MATCH_STARSUB ? '*' : '@';
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
+ pflags = (mflags & MATCH_ASSIGNRHS) == MATCH_ASSIGNRHS ? PF_ASSIGNRHS : 0;
/* If we are expanding in a context where word splitting will not be
performed, treat as quoted. This changes how $* will be expanded. */
if (pchar == '*' && (mflags & MATCH_ASSIGNRHS) && ifs_is_null)
qflags |= Q_DOUBLE_QUOTES; /* Posix interp 888 */
- ret = string_list_pos_params (pchar, save, qflags);
+ ret = string_list_pos_params (pchar, save, qflags, pflags);
dispose_words (save);
return (ret);
@@ -8516,17 +8798,18 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
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;
+ int want_substring, want_indir, want_patsub, want_casemod, want_attributes;
char *name, *value, *temp, *temp1;
WORD_DESC *tdesc, *ret;
- int t_index, sindex, c, tflag, modspec, all_element_arrayref;
+ int t_index, sindex, c, tflag, modspec, local_pflags, all_element_arrayref;
intmax_t number;
arrayind_t ind;
temp = temp1 = value = (char *)NULL;
var_is_set = var_is_null = var_is_special = check_nullness = 0;
- want_substring = want_indir = want_patsub = want_casemod = 0;
+ want_substring = want_indir = want_patsub = want_casemod = want_attributes = 0;
+ local_pflags = 0;
all_element_arrayref = 0;
sindex = *indexp;
@@ -8537,12 +8820,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
else
#if defined (CASEMOD_EXPANSIONS)
/* To enable case-toggling expansions using the `~' operator character
- change the 1 to 0. */
-# if defined (CASEMOD_CAPCASE)
+ define CASEMOD_TOGGLECASE in config-top.h */
+# if defined (CASEMOD_TOGGLECASE)
name = string_extract (string, &t_index, "#%^,~:-=?+/@}", SX_VARNAME);
# else
name = string_extract (string, &t_index, "#%^,:-=?+/@}", SX_VARNAME);
-# endif /* CASEMOD_CAPCASE */
+# endif /* CASEMOD_TOGGLECASE */
#else
name = string_extract (string, &t_index, "#%:-=?+/@}", SX_VARNAME);
#endif /* CASEMOD_EXPANSIONS */
@@ -8620,6 +8903,12 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
want_casemod = 1;
}
#endif
+ else if (c == '@' && (string[sindex] == 'a' || string[sindex] == 'A') && string[sindex+1] == RBRACE)
+ {
+ /* special case because we do not want to shortcut foo as foo[0] here */
+ want_attributes = 1;
+ local_pflags |= PF_ALLINDS;
+ }
/* Catch the valid and invalid brace expressions that made it through the
tests above. */
@@ -8672,7 +8961,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
number = parameter_brace_expand_length (name);
if (number == INTMAX_MIN && unbound_vars_is_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (name+1);
free (name);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
@@ -8752,7 +9041,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
FREE (x);
if (ALL_ELEMENT_SUB (x1[0]) && x1[1] == RBRACK)
{
- temp = array_keys (temp1, quoted); /* handles assoc vars too */
+ temp = array_keys (temp1, quoted, pflags); /* handles assoc vars too */
if (x1[0] == '@')
{
if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) && quoted_dollar_atp)
@@ -8787,7 +9076,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
if (want_indir)
{
- tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at);
+ tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, pflags|local_pflags, quoted_dollar_atp, contains_dollar_at);
if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal)
{
temp = (char *)NULL;
@@ -8800,7 +9089,10 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
tdesc->flags &= ~W_ARRAYIND;
}
else
- tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind);
+ {
+ local_pflags |= PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS));
+ tdesc = parameter_brace_expand_word (name, var_is_special, quoted, local_pflags, &ind);
+ }
if (tdesc == &expand_wdesc_error || tdesc == &expand_wdesc_fatal)
{
@@ -8844,7 +9136,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
if (expand_no_split_dollar_star && t[1] == '*') /* XXX */
qflags |= Q_DOUBLE_QUOTES;
}
- chk_atstar (name, qflags, quoted_dollar_atp, contains_dollar_at);
+ chk_atstar (name, qflags, pflags, quoted_dollar_atp, contains_dollar_at);
}
#endif
@@ -8859,7 +9151,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
(quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) &&
QUOTED_NULL (temp) &&
valid_array_reference (name, 0) &&
- chk_atstar (name, 0, (int *)0, (int *)0);
+ chk_atstar (name, 0, 0, (int *)0, (int *)0);
#endif
/* Get the rest of the stuff inside the braces. */
@@ -8880,11 +9172,11 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
/* All the cases where an expansion can possibly generate an unbound
variable error. */
- if (want_substring || want_patsub || want_casemod || c == '#' || c == '%' || c == RBRACE)
+ if (want_substring || want_patsub || want_casemod || c == '@' || c == '#' || c == '%' || c == RBRACE)
{
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;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (name);
FREE (value);
FREE (temp);
@@ -8912,10 +9204,13 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
"$@" to take a different code path. In fact, we make sure at the end
of expand_word_internal that we're only looking at these flags if
quoted_dollar_at == 0. */
- if (temp1 &&
+ if (temp1 &&
(quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
+ else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 &&
+ (pflags & PF_ASSIGNRHS))
+ ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
@@ -8982,7 +9277,7 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
default:
case '\0':
bad_substitution:
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: bad substitution"), string ? string : "??");
FREE (value);
FREE (temp);
@@ -9003,7 +9298,7 @@ bad_substitution:
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
free (name);
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: bad substitution"), string ? string : "??");
return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
}
@@ -9091,7 +9386,7 @@ bad_substitution:
temp = (char *)NULL;
if (c == '=' && var_is_special)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("$%s: cannot assign in this way"), name);
free (name);
free (value);
@@ -9155,9 +9450,9 @@ param_expand (string, sindex, quoted, expanded_something,
unsigned char c;
intmax_t number;
SHELL_VAR *var;
- WORD_LIST *list;
+ WORD_LIST *list, *l;
WORD_DESC *tdesc, *ret;
- int tflag;
+ int tflag, nullarg;
/*itrace("param_expand: `%s' pflags = %d", string+*sindex, pflags);*/
zindex = *sindex;
@@ -9188,7 +9483,7 @@ param_expand (string, sindex, quoted, expanded_something,
uerror[0] = '$';
uerror[1] = c;
uerror[2] = '\0';
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
@@ -9236,7 +9531,7 @@ param_expand (string, sindex, quoted, expanded_something,
uerror[0] = '$';
uerror[1] = c;
uerror[2] = '\0';
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
@@ -9263,7 +9558,7 @@ param_expand (string, sindex, quoted, expanded_something,
uerror[0] = '$';
uerror[1] = '*';
uerror[2] = '\0';
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
@@ -9301,9 +9596,14 @@ param_expand (string, sindex, quoted, expanded_something,
identical to $@ */
if (expand_no_split_dollar_star && quoted == 0 && ifs_is_set == 0 && (pflags & PF_ASSIGNRHS))
{
- /* Posix interp 888: RHS of assignment, IFS unset */
- temp = string_list_dollar_at (list, Q_DOUBLE_QUOTES, pflags);
- tflag |= W_SPLITSPACE;
+ /* Posix interp 888: RHS of assignment, IFS unset: no splitting,
+ separate with space */
+ temp1 = string_list_dollar_star (list, quoted, pflags);
+ temp = temp1 ? quote_string (temp1) : temp1;
+ /* XXX - tentative - note that we saw a quoted null here */
+ if (temp1 && *temp1 == 0 && QUOTED_NULL (temp))
+ tflag |= W_SAWQUOTEDNULL;
+ FREE (temp1);
}
else if (expand_no_split_dollar_star && quoted == 0 && ifs_is_null && (pflags & PF_ASSIGNRHS))
{
@@ -9317,6 +9617,10 @@ param_expand (string, sindex, quoted, expanded_something,
/* Posix interp 888: RHS of assignment, IFS set to non-null value */
temp1 = string_list_dollar_star (list, quoted, pflags);
temp = temp1 ? quote_string (temp1) : temp1;
+
+ /* XXX - tentative - note that we saw a quoted null here */
+ if (temp1 && *temp1 == 0 && QUOTED_NULL (temp))
+ tflag |= W_SAWQUOTEDNULL;
FREE (temp1);
}
/* XXX - should we check ifs_is_set here as well? */
@@ -9377,12 +9681,18 @@ param_expand (string, sindex, quoted, expanded_something,
uerror[0] = '$';
uerror[1] = '@';
uerror[2] = '\0';
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (uerror);
return (interactive_shell ? &expand_wdesc_error : &expand_wdesc_fatal);
}
#endif
+ for (nullarg = 0, l = list; l; l = l->next)
+ {
+ if (l->word && (l->word->word == 0 || l->word->word[0] == 0))
+ nullarg = 1;
+ }
+
/* We want to flag the fact that we saw this. We can't turn
off quoting entirely, because other characters in the
string might need it (consider "\"$@\""), but we need some
@@ -9401,12 +9711,18 @@ param_expand (string, sindex, quoted, expanded_something,
parameters no matter what IFS is set to. */
/* XXX - what to do when in a context where word splitting is not
performed? Even when IFS is not the default, posix seems to imply
- that we behave like unquoted $* ? See below for how we use
- PF_NOSPLIT2 here. */
+ that we have to expand $@ to all the positional parameters and
+ separate them with spaces, which are preserved because word splitting
+ doesn't take place. See below for how we use PF_NOSPLIT2 here. */
/* These are the cases where word splitting will not be performed. */
if (pflags & PF_ASSIGNRHS)
- temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags);
+ {
+ temp = string_list_dollar_at (list, (quoted|Q_DOUBLE_QUOTES), pflags);
+ if (nullarg)
+ tflag |= W_HASQUOTEDNULL; /* we know quoting produces quoted nulls */
+ }
+
/* This needs to match what expand_word_internal does with non-quoted $@
does with separating with spaces. Passing Q_DOUBLE_QUOTES means that
the characters in LIST will be quoted, and PF_ASSIGNRHS ensures that
@@ -9516,7 +9832,7 @@ arithsub:
{
if (interactive_shell == 0 && posixly_correct)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
return (&expand_wdesc_fatal);
}
else
@@ -9632,7 +9948,7 @@ comsub:
/* y=2 ; typeset -n x=y; echo $x is not the same as echo $2 in ksh */
if (temp && *temp && legal_identifier (temp) == 0)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("%s: invalid variable name for name reference"), temp);
return (&expand_wdesc_error); /* XXX */
}
@@ -9645,7 +9961,7 @@ comsub:
unbound_variable:
if (unbound_vars_is_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
err_unboundvar (temp1);
}
else
@@ -9655,7 +9971,7 @@ unbound_variable:
}
free (temp1);
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
return ((unbound_vars_is_error && interactive_shell == 0)
? &expand_wdesc_fatal
: &expand_wdesc_error);
@@ -9853,7 +10169,7 @@ add_string:
{
/* XXX - technically this should only be expanded at the start
of a word */
- if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)) || posixly_correct)
+ if (string[++sindex] != LPAREN || (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (word->flags & (W_DQUOTE|W_NOPROCSUB)))
{
sindex--; /* add_character: label increments sindex */
goto add_character;
@@ -9895,20 +10211,16 @@ add_string:
goto add_character;
}
/* If we're not in posix mode or forcing assignment-statement tilde
- expansion, note where the `=' appears in the word and prepare to
- do tilde expansion following the first `='. */
+ expansion, note where the first `=' appears in the word and prepare
+ to do tilde expansion following the first `='. We have to keep
+ track of the first `=' (using assignoff) to avoid being confused
+ by an `=' in the rhs of the assignment statement. */
if ((word->flags & W_ASSIGNMENT) &&
(posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
assignoff == -1 && sindex > 0)
assignoff = sindex;
if (sindex == assignoff && string[sindex+1] == '~') /* XXX */
word->flags |= W_ITILDE;
-#if 0
- else if ((word->flags & W_ASSIGNMENT) &&
- (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
- string[sindex+1] == '~')
- word->flags |= W_ITILDE;
-#endif
if (word->flags & W_ASSIGNARG)
word->flags |= W_ASSIGNRHS; /* affects $@ */
@@ -9930,7 +10242,8 @@ add_string:
goto add_character;
}
- if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS|W_TILDEEXP)) &&
+ if ((word->flags & (W_ASSIGNMENT|W_ASSIGNRHS)) &&
+ (posixly_correct == 0 || (word->flags & W_TILDEEXP)) &&
string[sindex+1] == '~')
word->flags |= W_ITILDE;
@@ -10000,6 +10313,7 @@ add_string:
pflags |= PF_ASSIGNRHS;
if (word->flags & W_COMPLETE)
pflags |= PF_COMPLETE;
+
tword = param_expand (string, &sindex, quoted, expanded_something,
&temp_has_dollar_at, &quoted_dollar_at,
&had_quoted_null, pflags);
@@ -10049,7 +10363,7 @@ add_string:
sindex = t_index;
goto add_character;
}
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
report_error (_("bad substitution: no closing \"`\" in %s") , string+t_index);
free (string);
free (istring);
@@ -10086,7 +10400,12 @@ add_string:
c = string[++sindex];
- if (quoted & Q_HERE_DOCUMENT)
+ /* "However, the double-quote character ( '"' ) shall not be treated
+ specially within a here-document, except when the double-quote
+ appears within "$()", "``", or "${}"." */
+ if ((quoted & Q_HERE_DOCUMENT) && (quoted & Q_DOLBRACE) && c == '"')
+ tflag = CBSDQUOTE; /* special case */
+ else if (quoted & Q_HERE_DOCUMENT)
tflag = CBSHDOC;
else if (quoted & Q_DOUBLE_QUOTES)
tflag = CBSDQUOTE;
@@ -10172,6 +10491,9 @@ add_twochars:
if (word->flags & W_NOPROCSUB)
tword->flags |= W_NOPROCSUB;
+ if (word->flags & W_ASSIGNRHS)
+ tword->flags |= W_ASSIGNRHS;
+
temp = (char *)NULL;
temp_has_dollar_at = 0; /* does this quoted (sub)string include $@? */
@@ -10210,13 +10532,8 @@ add_twochars:
disable the special handling that "$@" gets. */
if (list && list->word && list->next == 0 && (list->word->flags & W_HASQUOTEDNULL))
{
- /* If we already saw a quoted null, we don't need to add
- another one */
if (had_quoted_null && temp_has_dollar_at)
- {
- quoted_dollar_at++;
- break;
- }
+ quoted_dollar_at++;
had_quoted_null = 1; /* XXX */
}
@@ -10225,9 +10542,7 @@ add_twochars:
a special case; it's the only case where a quoted string
can expand into more than one word. It's going to come back
from the above call to expand_word_internal as a list with
- a single word, in which all characters are quoted and
- separated by blanks. What we want to do is to turn it back
- into a list for the next piece of code. */
+ multiple words. */
if (list)
dequote_list (list);
@@ -10303,6 +10618,13 @@ add_twochars:
this is when we are going to be performing word splitting,
since we have to preserve a null argument if the next character
will cause word splitting. */
+ if (temp == 0 && quoted_state == PARTIALLY_QUOTED && quoted == 0 && (word->flags & (W_NOSPLIT|W_EXPANDRHS|W_ASSIGNRHS)) == W_EXPANDRHS)
+ {
+ c = CTLNUL;
+ sindex--;
+ had_quoted_null = 1;
+ goto add_character;
+ }
if (temp == 0 && quoted_state == PARTIALLY_QUOTED && (word->flags & (W_NOSPLIT|W_NOSPLIT2)))
continue;
@@ -10354,7 +10676,14 @@ add_twochars:
/* We do not want to add quoted nulls to strings that are only
partially quoted; such nulls are discarded. See above for the
exception, which is when the string is going to be split.
- Posix interp 888 */
+ Posix interp 888/1129 */
+ if (temp == 0 && quoted_state == PARTIALLY_QUOTED && quoted == 0 && (word->flags & (W_NOSPLIT|W_EXPANDRHS|W_ASSIGNRHS)) == W_EXPANDRHS)
+ {
+ c = CTLNUL;
+ sindex--;
+ goto add_character;
+ }
+
if (temp == 0 && (quoted_state == PARTIALLY_QUOTED) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)))
continue;
@@ -10370,13 +10699,30 @@ add_twochars:
/* break; */
+ case ' ':
+ /* If we are in a context where the word is not going to be split, but
+ we need to account for $@ and $* producing one word for each
+ positional parameter, add quoted spaces so the spaces in the
+ expansion of "$@", if any, behave correctly. We still may need to
+ split if we are expanding the rhs of a word expansion. */
+ if (ifs_is_null || split_on_spaces || ((word->flags & (W_NOSPLIT|W_NOSPLIT2|W_ASSIGNRHS)) && (word->flags & W_EXPANDRHS) == 0))
+ {
+ if (string[sindex])
+ sindex++;
+ twochars[0] = CTLESC;
+ twochars[1] = c;
+ goto add_twochars;
+ }
+ /* FALLTHROUGH */
+
default:
/* This is the fix for " $@ " */
- add_ifs_character:
+add_ifs_character:
if ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) || (isexp == 0 && isifs (c) && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0))
{
if ((quoted&(Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0)
has_quoted_ifs++;
+add_quoted_character:
if (string[sindex]) /* from old goto dollar_add_string */
sindex++;
if (c == 0)
@@ -10408,7 +10754,7 @@ add_twochars:
SADD_MBCHAR (temp, string, sindex, string_size);
- add_character:
+add_character:
RESIZE_MALLOCED_BUFFER (istring, istring_index, 1, istring_size,
DEFAULT_ARRAY_SIZE);
istring[istring_index++] = c;
@@ -10485,12 +10831,21 @@ finished_with_string:
tword->flags |= W_NOGLOB; /* XXX */
if (word->flags & W_NOBRACE)
tword->flags |= W_NOBRACE; /* XXX */
- if (word->flags & W_NOEXPAND)
- tword->flags |= W_NOEXPAND; /* XXX */
if (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES))
tword->flags |= W_QUOTED;
list = make_word_list (tword, (WORD_LIST *)NULL);
}
+ else if (word->flags & W_ASSIGNRHS)
+ {
+ list = list_string (istring, "", quoted);
+ tword = list->word;
+ if (had_quoted_null && QUOTED_NULL (istring))
+ tword->flags |= W_HASQUOTEDNULL;
+ free (list);
+ free (istring);
+ istring = 0; /* avoid later free() */
+ goto set_word_flags;
+ }
else
{
char *ifs_chars;
@@ -10566,7 +10921,7 @@ finished_with_string:
tword->word = remove_quoted_ifs (istring);
else
tword->word = istring;
- if (had_quoted_null && QUOTED_NULL (istring))
+ if (had_quoted_null && QUOTED_NULL (istring)) /* should check for more than one */
tword->flags |= W_HASQUOTEDNULL; /* XXX */
else if (had_quoted_null)
tword->flags |= W_SAWQUOTEDNULL; /* XXX */
@@ -10584,8 +10939,6 @@ set_word_flags:
tword->flags |= W_NOGLOB;
if (word->flags & W_NOBRACE)
tword->flags |= W_NOBRACE;
- if (word->flags & W_NOEXPAND)
- tword->flags |= W_NOEXPAND;
list = make_word_list (tword, (WORD_LIST *)NULL);
}
}
@@ -11017,6 +11370,7 @@ glob_expand_word_list (tlist, eflags)
register int glob_index;
WORD_LIST *glob_list, *output_list, *disposables, *next;
WORD_DESC *tword;
+ int x;
output_list = disposables = (WORD_LIST *)NULL;
glob_array = (char **)NULL;
@@ -11040,7 +11394,7 @@ glob_expand_word_list (tlist, eflags)
if ((tlist->word->flags & W_NOGLOB) == 0 &&
unquoted_glob_pattern_p (tlist->word->word))
{
- glob_array = shell_glob_filename (tlist->word->word);
+ glob_array = shell_glob_filename (tlist->word->word, QGLOB_CTLESC); /* XXX */
/* Handle error cases.
I don't think we should report errors like "No such file
@@ -11192,8 +11546,10 @@ brace_expand_word_list (tlist, eflags)
#endif
#if defined (ARRAY_VARS)
-/* Take WORD, a compound associative array assignment, and internally run
- 'declare -A w', where W is the variable name portion of WORD. */
+/* Take WORD, a compound array assignment, and internally run (for example),
+ 'declare -A w', where W is the variable name portion of WORD. OPTION is
+ the list of options to supply to `declare'. CMD is the declaration command
+ we are expanding right now; it's unused currently. */
static int
make_internal_declare (word, option, cmd)
char *word;
@@ -11222,7 +11578,259 @@ make_internal_declare (word, option, cmd)
dispose_words (wl);
return r;
}
-#endif
+
+/* Expand VALUE in NAME[+]=( VALUE ) to a list of words. FLAGS is 1 if NAME
+ is an associative array.
+
+ If we are processing an indexed array, expand_compound_array_assignment
+ will expand all the individual words and quote_compound_array_list will
+ single-quote them. If we are processing an associative array, we use
+ parse_string_to_word_list to split VALUE into a list of words instead of
+ faking up a shell variable and calling expand_compound_array_assignment.
+ expand_and_quote_assoc_word expands and single-quotes each word in VALUE
+ together so we don't have problems finding the end of the subscript when
+ quoting it.
+
+ Words in VALUE can be individual words, which are expanded and single-quoted,
+ or words of the form [IND]=VALUE, which end up as explained below, as
+ ['expanded-ind']='expanded-value'. */
+
+static WORD_LIST *
+expand_oneword (value, flags)
+ char *value;
+ int flags;
+{
+ WORD_LIST *l, *nl;
+ char *t;
+
+ if (flags == 0)
+ {
+ /* Indexed array */
+ l = expand_compound_array_assignment ((SHELL_VAR *)NULL, value, flags);
+ /* Now we quote the results of the expansion above to prevent double
+ expansion. */
+ quote_compound_array_list (l, flags);
+ return l;
+ }
+ else
+ {
+ /* Associative array */
+ l = parse_string_to_word_list (value, 1, "array assign");
+ /* For associative arrays, with their arbitrary subscripts, we have to
+ expand and quote in one step so we don't have to search for the
+ closing right bracket more than once. */
+ for (nl = l; nl; nl = nl->next)
+ {
+ if ((nl->word->flags & W_ASSIGNMENT) == 0)
+ t = sh_single_quote (nl->word->word ? nl->word->word : "");
+ else
+ t = expand_and_quote_assoc_word (nl->word->word, flags);
+ free (nl->word->word);
+ nl->word->word = t;
+ }
+ return l;
+ }
+}
+
+/* Expand a single compound assignment argument to a declaration builtin.
+ This word takes the form NAME[+]=( VALUE ). The NAME[+]= is passed through
+ unchanged. The VALUE is expanded and each word in the result is single-
+ quoted. Words of the form [key]=value end up as
+ ['expanded-key']='expanded-value'. Associative arrays have special
+ handling, see expand_oneword() above. The return value is
+ NAME[+]=( expanded-and-quoted-VALUE ). */
+static void
+expand_compound_assignment_word (tlist, flags)
+ WORD_LIST *tlist;
+ int flags;
+{
+ WORD_LIST *l;
+ int wlen, oind, t;
+ char *value, *temp;
+
+/*itrace("expand_compound_assignment_word: original word = -%s-", tlist->word->word);*/
+ t = assignment (tlist->word->word, 0);
+
+ /* value doesn't have the open and close parens */
+ oind = 1;
+ value = extract_array_assignment_list (tlist->word->word + t + 1, &oind);
+ /* This performs one round of expansion on the index/key and value and
+ single-quotes each word in the result. */
+ l = expand_oneword (value, flags);
+ free (value);
+
+ value = string_list (l);
+ wlen = STRLEN (value);
+
+ /* Now, let's rebuild the string */
+ temp = xmalloc (t + 3 + wlen + 1); /* name[+]=(value) */
+ memcpy (temp, tlist->word->word, ++t);
+ temp[t++] = '(';
+ if (value)
+ memcpy (temp + t, value, wlen);
+ t += wlen;
+ temp[t++] = ')';
+ temp[t] = '\0';
+/*itrace("expand_compound_assignment_word: reconstructed word = -%s-", temp);*/
+
+ free (tlist->word->word);
+ tlist->word->word = temp;
+
+ free (value);
+}
+
+/* Expand and process an argument to a declaration command. We have already
+ set flags in TLIST->word->flags depending on the declaration command
+ (declare, local, etc.) and the options supplied to it (-a, -A, etc.).
+ TLIST->word->word is of the form NAME[+]=( VALUE ).
+
+ This does several things, all using pieces of other functions to get the
+ evaluation sequence right. It's called for compound array assignments with
+ the W_ASSIGNMENT flag set (basically, valid identifier names on the lhs).
+ It parses out which flags need to be set for declare to create the variable
+ correctly, then calls declare internally (make_internal_declare) to make
+ sure the variable exists with the correct attributes. Before the variable
+ is created, it calls expand_compound_assignment_word to expand VALUE to a
+ list of words, appropriately quoted for further evaluation. This preserves
+ the semantics of word-expansion-before-calling-builtins. Finally, it calls
+ do_word_assignment to perform the expansion and assignment with the same
+ expansion semantics as a standalone assignment statement (no word splitting,
+ etc.) even though the word is single-quoted so all that needs to happen is
+ quote removal. */
+static WORD_LIST *
+expand_declaration_argument (tlist, wcmd)
+ WORD_LIST *tlist, *wcmd;
+{
+ char opts[16], omap[128];
+ int t, opti, oind, skip, inheriting;
+ WORD_LIST *l;
+
+ inheriting = localvar_inherit;
+ opti = 0;
+ if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY))
+ opts[opti++] = '-';
+
+ if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL))
+ {
+ opts[opti++] = 'g';
+ opts[opti++] = 'A';
+ }
+ else if (tlist->word->flags & W_ASSIGNASSOC)
+ {
+ opts[opti++] = 'A';
+ }
+ else if ((tlist->word->flags & (W_ASSIGNARRAY|W_ASSNGLOBAL)) == (W_ASSIGNARRAY|W_ASSNGLOBAL))
+ {
+ opts[opti++] = 'g';
+ opts[opti++] = 'a';
+ }
+ else if (tlist->word->flags & W_ASSIGNARRAY)
+ {
+ opts[opti++] = 'a';
+ }
+ else if (tlist->word->flags & W_ASSNGLOBAL)
+ opts[opti++] = 'g';
+
+ if (tlist->word->flags & W_CHKLOCAL)
+ opts[opti++] = 'G';
+
+ /* If we have special handling note the integer attribute and others
+ that transform the value upon assignment. What we do is take all
+ of the option arguments and scan through them looking for options
+ that cause such transformations, and add them to the `opts' array. */
+
+ memset (omap, '\0', sizeof (omap));
+ for (l = wcmd->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':
+ inheriting = 1;
+ 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;
+
+ /* If there are no -a/-A options, but we have a compound assignment,
+ we have a choice: we can set opts[0]='-', opts[1]='a', since the
+ default is to create an indexed array, and call
+ make_internal_declare with that, or we can just skip the -a and let
+ declare_builtin deal with it. Once we're here, we're better set
+ up for the latter, since we don't want to deal with looking up
+ any existing variable here -- better to let declare_builtin do it.
+ We need the variable created, though, especially if it's local, so
+ we get the scoping right before we call do_word_assignment.
+ To ensure that make_local_declare gets called, we add `--' if there
+ aren't any options. */
+ if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSIGNARRAY)) == 0)
+ {
+ if (opti == 0)
+ {
+ opts[opti++] = '-';
+ opts[opti++] = '-';
+ }
+ }
+ opts[opti] = '\0';
+
+ /* This isn't perfect, but it's a start. Improvements later. We expand
+ tlist->word->word and single-quote the results to avoid multiple
+ expansions by, say, do_assignment_internal(). We have to weigh the
+ cost of reconstructing the compound assignment string with its single
+ quoting and letting the declare builtin handle it. The single quotes
+ will prevent any unwanted additional expansion or word splitting. */
+ expand_compound_assignment_word (tlist, (tlist->word->flags & W_ASSIGNASSOC) ? 1 : 0);
+
+ skip = 0;
+ if (opti > 0)
+ {
+ t = make_internal_declare (tlist->word->word, opts, wcmd ? wcmd->word->word : (char *)0);
+ if (t != EXECUTION_SUCCESS)
+ {
+ last_command_exit_value = t;
+ if (tlist->word->flags & W_FORCELOCAL) /* non-fatal error */
+ skip = 1;
+ else
+ exp_jump_to_top_level (DISCARD);
+ }
+ }
+
+ if (skip == 0)
+ {
+ t = do_word_assignment (tlist->word, 0);
+ if (t == 0)
+ {
+ last_command_exit_value = EXECUTION_FAILURE;
+ exp_jump_to_top_level (DISCARD);
+ }
+ }
+
+ /* 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);
+
+ return (tlist);
+}
+#endif /* ARRAY_VARS */
static WORD_LIST *
shell_expand_word_list (tlist, eflags)
@@ -11233,13 +11841,13 @@ shell_expand_word_list (tlist, eflags)
int expanded_something, has_dollar_at;
/* 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;
+ wcmd = new_list = (WORD_LIST *)NULL;
for (orig_list = tlist; tlist; tlist = next)
{
+ if (wcmd == 0 && (tlist->word->flags & W_ASSNBLTIN))
+ wcmd = tlist;
+
next = tlist->next;
#if defined (ARRAY_VARS)
@@ -11250,98 +11858,7 @@ shell_expand_word_list (tlist, eflags)
because `declare' does some evaluation of compound assignments on
its own. */
if ((tlist->word->flags & (W_COMPASSIGN|W_ASSIGNARG)) == (W_COMPASSIGN|W_ASSIGNARG))
- {
- int t;
- char opts[16];
- int opti;
-
- opti = 0;
- if (tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL|W_CHKLOCAL|W_ASSIGNARRAY))
- opts[opti++] = '-';
-
- if ((tlist->word->flags & (W_ASSIGNASSOC|W_ASSNGLOBAL)) == (W_ASSIGNASSOC|W_ASSNGLOBAL))
- {
- opts[opti++] = 'g';
- opts[opti++] = 'A';
- }
- else if (tlist->word->flags & W_ASSIGNASSOC)
- opts[opti++] = 'A';
- else if ((tlist->word->flags & (W_ASSIGNARRAY|W_ASSNGLOBAL)) == (W_ASSIGNARRAY|W_ASSNGLOBAL))
- {
- opts[opti++] = 'g';
- opts[opti++] = 'a';
- }
- else if (tlist->word->flags & W_ASSIGNARRAY)
- opts[opti++] = 'a';
- else if (tlist->word->flags & W_ASSNGLOBAL)
- opts[opti++] = 'g';
-
- if (tlist->word->flags & W_CHKLOCAL)
- opts[opti++] = 'G';
-
- /* If we have special handling note the integer attribute and others
- that transform the value upon assignment. What we do is take all
- of the option arguments and scan through them looking for options
- 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, wcmd ? wcmd->word->word : (char *)0);
- if (t != EXECUTION_SUCCESS)
- {
- last_command_exit_value = t;
- exp_jump_to_top_level (DISCARD);
- }
- }
-
- t = do_word_assignment (tlist->word, 0);
- if (t == 0)
- {
- last_command_exit_value = EXECUTION_FAILURE;
- exp_jump_to_top_level (DISCARD);
- }
-
- /* 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);
- }
+ expand_declaration_argument (tlist, wcmd);
#endif
expanded_something = 0;
diff --git a/subst.h b/subst.h
index faf831bd..13476515 100644
--- a/subst.h
+++ b/subst.h
@@ -54,6 +54,7 @@
#define ASS_NOEXPAND 0x0080 /* don't expand associative array subscripts */
#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */
#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */
+#define ASS_NOINVIS 0x0400 /* don't resolve local invisible variables */
/* Flags for the string extraction functions. */
#define SX_NOALLOC 0x0001 /* just skip; don't return substring */
@@ -71,229 +72,228 @@
/* Remove backslashes which are quoting backquotes from STRING. Modifies
STRING, and returns a pointer to it. */
-extern char * de_backslash __P((char *));
+extern char * de_backslash PARAMS((char *));
/* Replace instances of \! in a string with !. */
-extern void unquote_bang __P((char *));
+extern void unquote_bang PARAMS((char *));
/* Extract the $( construct in STRING, and return a new string.
Start extracting at (SINDEX) as if we had just seen "$(".
Make (SINDEX) get the position just after the matching ")".
XFLAGS is additional flags to pass to other extraction functions, */
-extern char *extract_command_subst __P((char *, int *, int));
+extern char *extract_command_subst PARAMS((char *, int *, int));
/* Extract the $[ construct in STRING, and return a new string.
Start extracting at (SINDEX) as if we had just seen "$[".
Make (SINDEX) get the position just after the matching "]". */
-extern char *extract_arithmetic_subst __P((char *, int *));
+extern char *extract_arithmetic_subst PARAMS((char *, int *));
#if defined (PROCESS_SUBSTITUTION)
/* Extract the <( or >( construct in STRING, and return a new string.
Start extracting at (SINDEX) as if we had just seen "<(".
Make (SINDEX) get the position just after the matching ")". */
-extern char *extract_process_subst __P((char *, char *, int *, int));
+extern char *extract_process_subst PARAMS((char *, char *, int *, int));
#endif /* PROCESS_SUBSTITUTION */
/* Extract the name of the variable to bind to from the assignment string. */
-extern char *assignment_name __P((char *));
+extern char *assignment_name PARAMS((char *));
/* Return a single string of all the words present in LIST, separating
each word with SEP. */
-extern char *string_list_internal __P((WORD_LIST *, char *));
+extern char *string_list_internal PARAMS((WORD_LIST *, char *));
/* Return a single string of all the words present in LIST, separating
each word with a space. */
-extern char *string_list __P((WORD_LIST *));
+extern char *string_list PARAMS((WORD_LIST *));
/* Turn $* into a single string, obeying POSIX rules. */
-extern char *string_list_dollar_star __P((WORD_LIST *, int, int));
+extern char *string_list_dollar_star PARAMS((WORD_LIST *, int, int));
/* Expand $@ into a single string, obeying POSIX rules. */
-extern char *string_list_dollar_at __P((WORD_LIST *, int, int));
+extern char *string_list_dollar_at PARAMS((WORD_LIST *, int, int));
-/* Turn the positional paramters into a string, understanding quoting and
+/* Turn the positional parameters into a string, understanding quoting and
the various subtleties of using the first character of $IFS as the
separator. Calls string_list_dollar_at, string_list_dollar_star, and
string_list as appropriate. */
-extern char *string_list_pos_params __P((int, WORD_LIST *, int));
+extern char *string_list_pos_params PARAMS((int, WORD_LIST *, int, int));
/* Perform quoted null character removal on each element of LIST.
This modifies LIST. */
-extern void word_list_remove_quoted_nulls __P((WORD_LIST *));
+extern void word_list_remove_quoted_nulls PARAMS((WORD_LIST *));
/* This performs word splitting and quoted null character removal on
STRING. */
-extern WORD_LIST *list_string __P((char *, char *, int));
+extern WORD_LIST *list_string PARAMS((char *, char *, int));
-extern char *ifs_firstchar __P((int *));
-extern char *get_word_from_string __P((char **, char *, char **));
-extern char *strip_trailing_ifs_whitespace __P((char *, char *, int));
+extern char *ifs_firstchar PARAMS((int *));
+extern char *get_word_from_string PARAMS((char **, char *, char **));
+extern char *strip_trailing_ifs_whitespace PARAMS((char *, char *, int));
/* Given STRING, an assignment string, get the value of the right side
of the `=', and bind it to the left side. If EXPAND is true, then
perform tilde expansion, parameter expansion, command substitution,
and arithmetic expansion on the right-hand side. Do not perform word
splitting on the result of expansion. */
-extern int do_assignment __P((char *));
-extern int do_assignment_no_expand __P((char *));
-extern int do_word_assignment __P((WORD_DESC *, int));
+extern int do_assignment PARAMS((char *));
+extern int do_assignment_no_expand PARAMS((char *));
+extern int do_word_assignment PARAMS((WORD_DESC *, int));
/* Append SOURCE to TARGET at INDEX. SIZE is the current amount
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 *, size_t *));
+extern char *sub_append_string PARAMS((char *, char *, int *, size_t *));
/* Append the textual representation of NUMBER to TARGET.
INDEX and SIZE are as in SUB_APPEND_STRING. */
-extern char *sub_append_number __P((intmax_t, char *, int *, int *));
+extern char *sub_append_number PARAMS((intmax_t, char *, int *, int *));
/* Return the word list that corresponds to `$*'. */
-extern WORD_LIST *list_rest_of_args __P((void));
+extern WORD_LIST *list_rest_of_args PARAMS((void));
/* Make a single large string out of the dollar digit variables,
and the rest_of_args. If DOLLAR_STAR is 1, then obey the special
case of "$*" with respect to IFS. */
-extern char *string_rest_of_args __P((int));
-
-extern int number_of_args __P((void));
+extern char *string_rest_of_args PARAMS((int));
/* Expand STRING by performing parameter expansion, command substitution,
and arithmetic expansion. Dequote the resulting WORD_LIST before
returning it, but do not perform word splitting. The call to
remove_quoted_nulls () is made here because word splitting normally
takes care of quote removal. */
-extern WORD_LIST *expand_string_unsplit __P((char *, int));
+extern WORD_LIST *expand_string_unsplit PARAMS((char *, int));
/* Expand the rhs of an assignment statement. */
-extern WORD_LIST *expand_string_assignment __P((char *, int));
+extern WORD_LIST *expand_string_assignment PARAMS((char *, int));
/* Expand a prompt string. */
-extern WORD_LIST *expand_prompt_string __P((char *, int, int));
+extern WORD_LIST *expand_prompt_string PARAMS((char *, int, int));
/* Expand STRING just as if you were expanding a word. This also returns
a list of words. Note that filename globbing is *NOT* done for word
or string expansion, just when the shell is expanding a command. This
does parameter expansion, command substitution, arithmetic expansion,
and word splitting. Dequote the resultant WORD_LIST before returning. */
-extern WORD_LIST *expand_string __P((char *, int));
+extern WORD_LIST *expand_string PARAMS((char *, int));
/* Convenience functions that expand strings to strings, taking care of
converting the WORD_LIST * returned by the expand_string* functions
to a string and deallocating the WORD_LIST *. */
-extern char *expand_string_to_string __P((char *, int));
-extern char *expand_string_unsplit_to_string __P((char *, int));
-extern char *expand_assignment_string_to_string __P((char *, int));
+extern char *expand_string_to_string PARAMS((char *, int));
+extern char *expand_string_unsplit_to_string PARAMS((char *, int));
+extern char *expand_assignment_string_to_string PARAMS((char *, int));
/* Expand an arithmetic expression string */
-extern char *expand_arith_string __P((char *, int));
+extern char *expand_arith_string PARAMS((char *, int));
/* De-quote quoted characters in STRING. */
-extern char *dequote_string __P((char *));
+extern char *dequote_string PARAMS((char *));
/* De-quote CTLESC-escaped CTLESC or CTLNUL characters in STRING. */
-extern char *dequote_escapes __P((const char *));
+extern char *dequote_escapes PARAMS((const char *));
-extern WORD_DESC *dequote_word __P((WORD_DESC *));
+extern WORD_DESC *dequote_word PARAMS((WORD_DESC *));
/* De-quote quoted characters in each word in LIST. */
-extern WORD_LIST *dequote_list __P((WORD_LIST *));
+extern WORD_LIST *dequote_list PARAMS((WORD_LIST *));
/* Expand WORD, performing word splitting on the result. This does
parameter expansion, command substitution, arithmetic expansion,
word splitting, and quote removal. */
-extern WORD_LIST *expand_word __P((WORD_DESC *, int));
+extern WORD_LIST *expand_word PARAMS((WORD_DESC *, int));
/* Expand WORD, but do not perform word splitting on the result. This
does parameter expansion, command substitution, arithmetic expansion,
and quote removal. */
-extern WORD_LIST *expand_word_unsplit __P((WORD_DESC *, int));
-extern WORD_LIST *expand_word_leave_quoted __P((WORD_DESC *, int));
+extern WORD_LIST *expand_word_unsplit PARAMS((WORD_DESC *, int));
+extern WORD_LIST *expand_word_leave_quoted PARAMS((WORD_DESC *, int));
/* Return the value of a positional parameter. This handles values > 10. */
-extern char *get_dollar_var_value __P((intmax_t));
+extern char *get_dollar_var_value PARAMS((intmax_t));
/* Quote a string to protect it from word splitting. */
-extern char *quote_string __P((char *));
+extern char *quote_string PARAMS((char *));
-/* Quote escape characters (characters special to interals of expansion)
+/* Quote escape characters (characters special to internals of expansion)
in a string. */
-extern char *quote_escapes __P((const char *));
+extern char *quote_escapes PARAMS((const char *));
/* And remove such quoted special characters. */
-extern char *remove_quoted_escapes __P((char *));
+extern char *remove_quoted_escapes PARAMS((char *));
/* Remove CTLNUL characters from STRING unless they are quoted with CTLESC. */
-extern char *remove_quoted_nulls __P((char *));
+extern char *remove_quoted_nulls PARAMS((char *));
/* Perform quote removal on STRING. If QUOTED > 0, assume we are obeying the
backslash quoting rules for within double quotes. */
-extern char *string_quote_removal __P((char *, int));
+extern char *string_quote_removal PARAMS((char *, int));
/* Perform quote removal on word WORD. This allocates and returns a new
WORD_DESC *. */
-extern WORD_DESC *word_quote_removal __P((WORD_DESC *, int));
+extern WORD_DESC *word_quote_removal PARAMS((WORD_DESC *, int));
/* Perform quote removal on all words in LIST. If QUOTED is non-zero,
the members of the list are treated as if they are surrounded by
double quotes. Return a new list, or NULL if LIST is NULL. */
-extern WORD_LIST *word_list_quote_removal __P((WORD_LIST *, int));
+extern WORD_LIST *word_list_quote_removal PARAMS((WORD_LIST *, int));
/* Called when IFS is changed to maintain some private variables. */
-extern void setifs __P((SHELL_VAR *));
+extern void setifs PARAMS((SHELL_VAR *));
/* Return the value of $IFS, or " \t\n" if IFS is unset. */
-extern char *getifs __P((void));
+extern char *getifs PARAMS((void));
/* This splits a single word into a WORD LIST on $IFS, but only if the word
is not quoted. list_string () performs quote removal for us, even if we
don't do any splitting. */
-extern WORD_LIST *word_split __P((WORD_DESC *, char *));
+extern WORD_LIST *word_split PARAMS((WORD_DESC *, char *));
/* Take the list of words in LIST and do the various substitutions. Return
a new list of words which is the expanded list, and without things like
variable assignments. */
-extern WORD_LIST *expand_words __P((WORD_LIST *));
+extern WORD_LIST *expand_words PARAMS((WORD_LIST *));
/* Same as expand_words (), but doesn't hack variable or environment
variables. */
-extern WORD_LIST *expand_words_no_vars __P((WORD_LIST *));
+extern WORD_LIST *expand_words_no_vars PARAMS((WORD_LIST *));
/* Perform the `normal shell expansions' on a WORD_LIST. These are
brace expansion, tilde expansion, parameter and variable substitution,
command substitution, arithmetic expansion, and word splitting. */
-extern WORD_LIST *expand_words_shellexp __P((WORD_LIST *));
+extern WORD_LIST *expand_words_shellexp PARAMS((WORD_LIST *));
-extern WORD_DESC *command_substitute __P((char *, int, int));
-extern char *pat_subst __P((char *, char *, char *, int));
+extern WORD_DESC *command_substitute PARAMS((char *, int, int));
+extern char *pat_subst PARAMS((char *, char *, char *, int));
#if defined (PROCESS_SUBSTITUTION)
-extern int fifos_pending __P((void));
-extern int num_fifos __P((void));
-extern void unlink_fifo_list __P((void));
-extern void unlink_fifo __P((int));
+extern int fifos_pending PARAMS((void));
+extern int num_fifos PARAMS((void));
+extern void unlink_fifo_list PARAMS((void));
+extern void unlink_all_fifos PARAMS((void));
+extern void unlink_fifo PARAMS((int));
-extern void *copy_fifo_list __P((int *));
-extern void close_new_fifos __P((void *, int));
+extern void *copy_fifo_list PARAMS((int *));
+extern void close_new_fifos PARAMS((void *, int));
-extern void clear_fifo_list __P((void));
+extern void clear_fifo_list PARAMS((void));
-extern int find_procsub_child __P((pid_t));
-extern void set_procsub_status __P((int, pid_t, int));
+extern int find_procsub_child PARAMS((pid_t));
+extern void set_procsub_status PARAMS((int, pid_t, int));
-extern void wait_procsubs __P((void));
-extern void reap_procsubs __P((void));
+extern void wait_procsubs PARAMS((void));
+extern void reap_procsubs PARAMS((void));
#endif
-extern WORD_LIST *list_string_with_quotes __P((char *));
+extern WORD_LIST *list_string_with_quotes PARAMS((char *));
#if defined (ARRAY_VARS)
-extern char *extract_array_assignment_list __P((char *, int *));
+extern char *extract_array_assignment_list PARAMS((char *, int *));
#endif
#if defined (COND_COMMAND)
-extern char *remove_backslashes __P((char *));
-extern char *cond_expand_word __P((WORD_DESC *, int));
+extern char *remove_backslashes PARAMS((char *));
+extern char *cond_expand_word PARAMS((WORD_DESC *, int));
#endif
/* Flags for skip_to_delim */
@@ -309,16 +309,16 @@ extern char *cond_expand_word __P((WORD_DESC *, int));
#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));
+extern int skip_to_delim PARAMS((char *, int, char *, int));
#if defined (BANG_HISTORY)
-extern int skip_to_histexp __P((char *, int, char *, int));
+extern int skip_to_histexp PARAMS((char *, int, char *, int));
#endif
#if defined (READLINE)
-extern int char_is_quoted __P((char *, int));
-extern int unclosed_pair __P((char *, int, char *));
-extern WORD_LIST *split_at_delims __P((char *, int, char *, int, int, int *, int *));
+extern int char_is_quoted PARAMS((char *, int));
+extern int unclosed_pair PARAMS((char *, int, char *));
+extern WORD_LIST *split_at_delims PARAMS((char *, int, char *, int, int, int *, int *));
#endif
/* Variables used to keep track of the characters in IFS. */
@@ -349,6 +349,6 @@ extern pid_t last_command_subst_pid;
/* 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));
+extern void invalidate_cached_quoted_dollar_at PARAMS((void));
#endif /* !_SUBST_H_ */
diff --git a/support/bashbug.sh b/support/bashbug.sh
index 29ce1341..01e9f014 100644
--- a/support/bashbug.sh
+++ b/support/bashbug.sh
@@ -7,7 +7,7 @@
# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
# Other versions send mail to bug-bash@gnu.org.
#
-# Copyright (C) 1996-2004 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@ export PATH
#Securely create a temporary directory for the temporary files
TEMPDIR=$TMPDIR/bbug.$$
-(umask 077 && mkdir $TEMPDIR) || {
+(umask 077 && mkdir "$TEMPDIR") || {
echo "$0: could not create temporary directory" >&2
exit 1
}
@@ -132,6 +132,8 @@ if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
DEFEDITOR=emacs
elif [ -x /usr/bin/xemacs ]; then
DEFEDITOR=xemacs
+ elif [ -x /usr/bin/nano ]; then
+ DEFEDITOR=nano
elif [ -x /usr/contrib/bin/jove ]; then
DEFEDITOR=jove
elif [ -x /usr/local/bin/jove ]; then
diff --git a/support/bashbug.sh.in b/support/bashbug.sh.in
index 5e92b995..d4b48c90 100644
--- a/support/bashbug.sh.in
+++ b/support/bashbug.sh.in
@@ -7,7 +7,7 @@
# chet@cwru.edu and, optionally, to bash-testers@cwru.edu.
# Other versions send mail to bug-bash@gnu.org.
#
-# Copyright (C) 1996-2004 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -43,7 +43,7 @@ export PATH
#Securely create a temporary directory for the temporary files
TEMPDIR=$TMPDIR/bbug.$$
-(umask 077 && mkdir $TEMPDIR) || {
+(umask 077 && mkdir "$TEMPDIR") || {
echo "$0: could not create temporary directory" >&2
exit 1
}
@@ -132,6 +132,8 @@ if [ -z "$DEFEDITOR" ] && [ -z "$EDITOR" ]; then
DEFEDITOR=emacs
elif [ -x /usr/bin/xemacs ]; then
DEFEDITOR=xemacs
+ elif [ -x /usr/bin/nano ]; then
+ DEFEDITOR=nano
elif [ -x /usr/contrib/bin/jove ]; then
DEFEDITOR=jove
elif [ -x /usr/local/bin/jove ]; then
diff --git a/support/bashversion.c b/support/bashversion.c
index 59c2321e..4f86b134 100644
--- a/support/bashversion.c
+++ b/support/bashversion.c
@@ -1,6 +1,6 @@
/* bashversion.c -- Display bash version information. */
-/* Copyright (C) 2001 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -47,8 +47,8 @@ extern char *optarg;
extern char *dist_version;
extern int patch_level;
-extern char *shell_version_string __P((void));
-extern void show_shell_version __P((int));
+extern char *shell_version_string PARAMS((void));
+extern void show_shell_version PARAMS((int));
char *shell_name = "bash";
char *progname;
diff --git a/support/config.guess b/support/config.guess
index 18f8edc0..0fc11edb 100755
--- a/support/config.guess
+++ b/support/config.guess
@@ -1,8 +1,8 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-08-29'
+timestamp='2020-11-07'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -32,7 +32,7 @@ timestamp='2018-08-29'
# Please send patches to <config-patches@gnu.org>.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION]
@@ -50,7 +50,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -96,13 +96,14 @@ fi
tmp=
# shellcheck disable=SC2172
-trap 'test -z "$tmp" || rm -fr "$tmp"' 1 2 13 15
-trap 'exitcode=$?; test -z "$tmp" || rm -fr "$tmp"; exit $exitcode' 0
+trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15
set_cc_for_build() {
+ # prevent multiple calls if $tmp is already set
+ test "$tmp" && return 0
: "${TMPDIR=/tmp}"
# shellcheck disable=SC2039
- { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
+ { tmp=$( (umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null) && test -n "$tmp" && test -d "$tmp" ; } ||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } ||
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } ||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; }
@@ -130,10 +131,10 @@ if test -f /.attbin/uname ; then
PATH=$PATH:/.attbin ; export PATH
fi
-UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
-UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
-UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
-UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
+UNAME_MACHINE=$( (uname -m) 2>/dev/null) || UNAME_MACHINE=unknown
+UNAME_RELEASE=$( (uname -r) 2>/dev/null) || UNAME_RELEASE=unknown
+UNAME_SYSTEM=$( (uname -s) 2>/dev/null) || UNAME_SYSTEM=unknown
+UNAME_VERSION=$( (uname -v) 2>/dev/null) || UNAME_VERSION=unknown
case "$UNAME_SYSTEM" in
Linux|GNU|GNU/*)
@@ -149,17 +150,15 @@ Linux|GNU|GNU/*)
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
+ #include <stdarg.h>
+ #ifdef __DEFINED_va_list
+ LIBC=musl
+ #else
LIBC=gnu
#endif
+ #endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`"
-
- # If ldd exists, use it to detect musl libc.
- if command -v ldd >/dev/null && \
- ldd --version 2>&1 | grep -q ^musl
- then
- LIBC=musl
- fi
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g')"
;;
esac
@@ -178,19 +177,20 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# Note: NetBSD doesn't particularly care about the vendor
# portion of the name. We always set it to "unknown".
sysctl="sysctl -n hw.machine_arch"
- UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \
+ UNAME_MACHINE_ARCH=$( (uname -p 2>/dev/null || \
"/sbin/$sysctl" 2>/dev/null || \
"/usr/sbin/$sysctl" 2>/dev/null || \
- echo unknown)`
+ echo unknown))
case "$UNAME_MACHINE_ARCH" in
+ aarch64eb) machine=aarch64_be-unknown ;;
armeb) machine=armeb-unknown ;;
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
sh5el) machine=sh5le-unknown ;;
earmv*)
- arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'`
- endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'`
+ arch=$(echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,')
+ endian=$(echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p')
machine="${arch}${endian}"-unknown
;;
*) machine="$UNAME_MACHINE_ARCH"-unknown ;;
@@ -221,7 +221,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
case "$UNAME_MACHINE_ARCH" in
earm*)
expr='s/^earmv[0-9]/-eabi/;s/eb$//'
- abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"`
+ abi=$(echo "$UNAME_MACHINE_ARCH" | sed -e "$expr")
;;
esac
# The OS release
@@ -234,7 +234,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
release='-gnu'
;;
*)
- release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2`
+ release=$(echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2)
;;
esac
# Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
@@ -243,15 +243,15 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo "$machine-${os}${release}${abi-}"
exit ;;
*:Bitrig:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/Bitrig.//')
echo "$UNAME_MACHINE_ARCH"-unknown-bitrig"$UNAME_RELEASE"
exit ;;
*:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/OpenBSD.//')
echo "$UNAME_MACHINE_ARCH"-unknown-openbsd"$UNAME_RELEASE"
exit ;;
*:LibertyBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'`
+ UNAME_MACHINE_ARCH=$(arch | sed 's/^.*BSD\.//')
echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE"
exit ;;
*:MidnightBSD:*:*)
@@ -263,6 +263,9 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:SolidBSD:*:*)
echo "$UNAME_MACHINE"-unknown-solidbsd"$UNAME_RELEASE"
exit ;;
+ *:OS108:*:*)
+ echo "$UNAME_MACHINE"-unknown-os108_"$UNAME_RELEASE"
+ exit ;;
macppc:MirBSD:*:*)
echo powerpc-unknown-mirbsd"$UNAME_RELEASE"
exit ;;
@@ -272,26 +275,29 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
*:Sortix:*:*)
echo "$UNAME_MACHINE"-unknown-sortix
exit ;;
+ *:Twizzler:*:*)
+ echo "$UNAME_MACHINE"-unknown-twizzler
+ exit ;;
*:Redox:*:*)
echo "$UNAME_MACHINE"-unknown-redox
exit ;;
mips:OSF1:*.*)
- echo mips-dec-osf1
- exit ;;
+ echo mips-dec-osf1
+ exit ;;
alpha:OSF1:*:*)
case $UNAME_RELEASE in
*4.0)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $3}')
;;
*5.*)
- UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'`
+ UNAME_RELEASE=$(/usr/sbin/sizer -v | awk '{print $4}')
;;
esac
# According to Compaq, /usr/sbin/psrinfo has been available on
# OSF/1 and Tru64 systems produced since 1995. I hope that
# covers most systems running today. This code pipes the CPU
# types through head -n 1, so we only detect the type of CPU 0.
- ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1`
+ ALPHA_CPU_TYPE=$(/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1)
case "$ALPHA_CPU_TYPE" in
"EV4 (21064)")
UNAME_MACHINE=alpha ;;
@@ -329,7 +335,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
- echo "$UNAME_MACHINE"-dec-osf"`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`"
+ echo "$UNAME_MACHINE"-dec-osf"$(echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)"
# Reset EXIT trap before exiting to avoid spurious non-zero exit code.
exitcode=$?
trap '' 0
@@ -363,7 +369,7 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
exit ;;
Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
- if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ if test "$( (/bin/universe) 2>/dev/null)" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
@@ -376,54 +382,59 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
echo sparc-icl-nx6
exit ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
- case `/usr/bin/uname -p` in
+ case $(/usr/bin/uname -p) in
sparc) echo sparc-icl-nx7; exit ;;
esac ;;
s390x:SunOS:*:*)
- echo "$UNAME_MACHINE"-ibm-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+ echo "$UNAME_MACHINE"-ibm-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
exit ;;
sun4H:SunOS:5.*:*)
- echo sparc-hal-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo sparc-hal-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
- echo sparc-sun-solaris2"`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
+ echo sparc-sun-solaris2"$(echo "$UNAME_RELEASE" | sed -e 's/[^.]*//')"
exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*)
echo i386-pc-auroraux"$UNAME_RELEASE"
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
- UNAME_REL="`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'`"
- case `isainfo -b` in
- 32)
- echo i386-pc-solaris2"$UNAME_REL"
- ;;
- 64)
- echo x86_64-pc-solaris2"$UNAME_REL"
- ;;
- esac
+ set_cc_for_build
+ SUN_ARCH=i386
+ # If there is a compiler, see if it is configured for 64-bit objects.
+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
+ # This test works for both compilers.
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ SUN_ARCH=x86_64
+ fi
+ fi
+ echo "$SUN_ARCH"-pc-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
- echo sparc-sun-solaris3"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo sparc-sun-solaris3"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
sun4*:SunOS:*:*)
- case "`/usr/bin/arch -k`" in
+ case "$(/usr/bin/arch -k)" in
Series*|S4*)
- UNAME_RELEASE=`uname -v`
+ UNAME_RELEASE=$(uname -v)
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
- echo sparc-sun-sunos"`echo "$UNAME_RELEASE"|sed -e 's/-/_/'`"
+ echo sparc-sun-sunos"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/')"
exit ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos"$UNAME_RELEASE"
exit ;;
sun*:*:4.2BSD:*)
- UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ UNAME_RELEASE=$( (sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null)
test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3
- case "`/bin/arch`" in
+ case "$(/bin/arch)" in
sun3)
echo m68k-sun-sunos"$UNAME_RELEASE"
;;
@@ -503,8 +514,8 @@ case "$UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION" in
}
EOF
$CC_FOR_BUILD -o "$dummy" "$dummy.c" &&
- dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` &&
- SYSTEM_NAME=`"$dummy" "$dummyarg"` &&
+ dummyarg=$(echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p') &&
+ SYSTEM_NAME=$("$dummy" "$dummyarg") &&
{ echo "$SYSTEM_NAME"; exit; }
echo mips-mips-riscos"$UNAME_RELEASE"
exit ;;
@@ -531,11 +542,11 @@ EOF
exit ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
- UNAME_PROCESSOR=`/usr/bin/uname -p`
- if [ "$UNAME_PROCESSOR" = mc88100 ] || [ "$UNAME_PROCESSOR" = mc88110 ]
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
+ if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110
then
- if [ "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx ] || \
- [ "$TARGET_BINARY_INTERFACE"x = x ]
+ if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \
+ test "$TARGET_BINARY_INTERFACE"x = x
then
echo m88k-dg-dgux"$UNAME_RELEASE"
else
@@ -559,17 +570,17 @@ EOF
echo m68k-tektronix-bsd
exit ;;
*:IRIX*:*:*)
- echo mips-sgi-irix"`echo "$UNAME_RELEASE"|sed -e 's/-/_/g'`"
+ echo mips-sgi-irix"$(echo "$UNAME_RELEASE"|sed -e 's/-/_/g')"
exit ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
- exit ;; # Note that: echo "'`uname -s`'" gives 'AIX '
+ exit ;; # Note that: echo "'$(uname -s)'" gives 'AIX '
i*86:AIX:*:*)
echo i386-ibm-aix
exit ;;
ia64:AIX:*:*)
- if [ -x /usr/bin/oslevel ] ; then
- IBM_REV=`/usr/bin/oslevel`
+ if test -x /usr/bin/oslevel ; then
+ IBM_REV=$(/usr/bin/oslevel)
else
IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
@@ -589,7 +600,7 @@ EOF
exit(0);
}
EOF
- if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"`
+ if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy")
then
echo "$SYSTEM_NAME"
else
@@ -602,15 +613,15 @@ EOF
fi
exit ;;
*:AIX:*:[4567])
- IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ IBM_CPU_ID=$(/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }')
if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
- if [ -x /usr/bin/lslpp ] ; then
- IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc |
- awk -F: '{ print $3 }' | sed s/[0-9]*$/0/`
+ if test -x /usr/bin/lslpp ; then
+ IBM_REV=$(/usr/bin/lslpp -Lqc bos.rte.libc |
+ awk -F: '{ print $3 }' | sed s/[0-9]*$/0/)
else
IBM_REV="$UNAME_VERSION.$UNAME_RELEASE"
fi
@@ -638,14 +649,14 @@ EOF
echo m68k-hp-bsd4.4
exit ;;
9000/[34678]??:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
case "$UNAME_MACHINE" in
9000/31?) HP_ARCH=m68000 ;;
9000/[34]??) HP_ARCH=m68k ;;
9000/[678][0-9][0-9])
- if [ -x /usr/bin/getconf ]; then
- sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
- sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ if test -x /usr/bin/getconf; then
+ sc_cpu_version=$(/usr/bin/getconf SC_CPU_VERSION 2>/dev/null)
+ sc_kernel_bits=$(/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null)
case "$sc_cpu_version" in
523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0
528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1
@@ -657,7 +668,7 @@ EOF
esac ;;
esac
fi
- if [ "$HP_ARCH" = "" ]; then
+ if test "$HP_ARCH" = ""; then
set_cc_for_build
sed 's/^ //' << EOF > "$dummy.c"
@@ -692,11 +703,11 @@ EOF
exit (0);
}
EOF
- (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"`
+ (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=$("$dummy")
test -z "$HP_ARCH" && HP_ARCH=hppa
fi ;;
esac
- if [ "$HP_ARCH" = hppa2.0w ]
+ if test "$HP_ARCH" = hppa2.0w
then
set_cc_for_build
@@ -720,7 +731,7 @@ EOF
echo "$HP_ARCH"-hp-hpux"$HPUX_REV"
exit ;;
ia64:HP-UX:*:*)
- HPUX_REV=`echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//'`
+ HPUX_REV=$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*.[0B]*//')
echo ia64-hp-hpux"$HPUX_REV"
exit ;;
3050*:HI-UX:*:*)
@@ -750,7 +761,7 @@ EOF
exit (0);
}
EOF
- $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` &&
+ $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=$("$dummy") &&
{ echo "$SYSTEM_NAME"; exit; }
echo unknown-hitachi-hiuxwe2
exit ;;
@@ -770,7 +781,7 @@ EOF
echo hppa1.0-hp-osf
exit ;;
i*86:OSF1:*:*)
- if [ -x /usr/sbin/sysversion ] ; then
+ if test -x /usr/sbin/sysversion ; then
echo "$UNAME_MACHINE"-unknown-osf1mk
else
echo "$UNAME_MACHINE"-unknown-osf1
@@ -819,14 +830,14 @@ EOF
echo craynv-cray-unicosmp"$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'
exit ;;
F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*)
- FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'`
+ FUJITSU_PROC=$(uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz)
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | sed -e 's/ /_/')
echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
5000:UNIX_System_V:4.*:*)
- FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'`
- FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'`
+ FUJITSU_SYS=$(uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///')
+ FUJITSU_REL=$(echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/')
echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit ;;
i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*)
@@ -839,25 +850,25 @@ EOF
echo "$UNAME_MACHINE"-unknown-bsdi"$UNAME_RELEASE"
exit ;;
arm:FreeBSD:*:*)
- UNAME_PROCESSOR=`uname -p`
+ UNAME_PROCESSOR=$(uname -p)
set_cc_for_build
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabi
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabi
else
- echo "${UNAME_PROCESSOR}"-unknown-freebsd"`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`"-gnueabihf
+ echo "${UNAME_PROCESSOR}"-unknown-freebsd"$(echo ${UNAME_RELEASE}|sed -e 's/[-(].*//')"-gnueabihf
fi
exit ;;
*:FreeBSD:*:*)
- UNAME_PROCESSOR=`/usr/bin/uname -p`
+ UNAME_PROCESSOR=$(/usr/bin/uname -p)
case "$UNAME_PROCESSOR" in
amd64)
UNAME_PROCESSOR=x86_64 ;;
i386)
UNAME_PROCESSOR=i586 ;;
esac
- echo "$UNAME_PROCESSOR"-unknown-freebsd"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+ echo "$UNAME_PROCESSOR"-unknown-freebsd"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
exit ;;
i*:CYGWIN*:*)
echo "$UNAME_MACHINE"-pc-cygwin
@@ -893,15 +904,15 @@ EOF
echo x86_64-pc-cygwin
exit ;;
prep*:SunOS:5.*:*)
- echo powerpcle-unknown-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`"
+ echo powerpcle-unknown-solaris2"$(echo "$UNAME_RELEASE"|sed -e 's/[^.]*//')"
exit ;;
*:GNU:*:*)
# the GNU system
- echo "`echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,'`-unknown-$LIBC`echo "$UNAME_RELEASE"|sed -e 's,/.*$,,'`"
+ echo "$(echo "$UNAME_MACHINE"|sed -e 's,[-/].*$,,')-unknown-$LIBC$(echo "$UNAME_RELEASE"|sed -e 's,/.*$,,')"
exit ;;
*:GNU/*:*:*)
# other systems with GNU libc and userland
- echo "$UNAME_MACHINE-unknown-`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`-$LIBC"
+ echo "$UNAME_MACHINE-unknown-$(echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]")$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')-$LIBC"
exit ;;
*:Minix:*:*)
echo "$UNAME_MACHINE"-unknown-minix
@@ -914,7 +925,7 @@ EOF
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
exit ;;
alpha:Linux:*:*)
- case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ case $(sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null) in
EV5) UNAME_MACHINE=alphaev5 ;;
EV56) UNAME_MACHINE=alphaev56 ;;
PCA56) UNAME_MACHINE=alphapca56 ;;
@@ -981,22 +992,50 @@ EOF
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
set_cc_for_build
+ IS_GLIBC=0
+ test x"${LIBC}" = xgnu && IS_GLIBC=1
sed 's/^ //' << EOF > "$dummy.c"
#undef CPU
- #undef ${UNAME_MACHINE}
- #undef ${UNAME_MACHINE}el
+ #undef mips
+ #undef mipsel
+ #undef mips64
+ #undef mips64el
+ #if ${IS_GLIBC} && defined(_ABI64)
+ LIBCABI=gnuabi64
+ #else
+ #if ${IS_GLIBC} && defined(_ABIN32)
+ LIBCABI=gnuabin32
+ #else
+ LIBCABI=${LIBC}
+ #endif
+ #endif
+
+ #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa64r6
+ #else
+ #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6
+ CPU=mipsisa32r6
+ #else
+ #if defined(__mips64)
+ CPU=mips64
+ #else
+ CPU=mips
+ #endif
+ #endif
+ #endif
+
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
- CPU=${UNAME_MACHINE}el
+ MIPS_ENDIAN=el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
- CPU=${UNAME_MACHINE}
+ MIPS_ENDIAN=
#else
- CPU=
+ MIPS_ENDIAN=
#endif
#endif
EOF
- eval "`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU'`"
- test "x$CPU" != x && { echo "$CPU-unknown-linux-$LIBC"; exit; }
+ eval "$($CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI')"
+ test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; }
;;
mips64el:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1015,7 +1054,7 @@ EOF
exit ;;
parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level
- case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ case $(grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2) in
PA7*) echo hppa1.1-unknown-linux-"$LIBC" ;;
PA8*) echo hppa2.0-unknown-linux-"$LIBC" ;;
*) echo hppa-unknown-linux-"$LIBC" ;;
@@ -1055,7 +1094,17 @@ EOF
echo "$UNAME_MACHINE"-dec-linux-"$LIBC"
exit ;;
x86_64:Linux:*:*)
- echo "$UNAME_MACHINE"-pc-linux-"$LIBC"
+ set_cc_for_build
+ LIBCABI=$LIBC
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_X32 >/dev/null
+ then
+ LIBCABI="$LIBC"x32
+ fi
+ fi
+ echo "$UNAME_MACHINE"-pc-linux-"$LIBCABI"
exit ;;
xtensa*:Linux:*:*)
echo "$UNAME_MACHINE"-unknown-linux-"$LIBC"
@@ -1095,7 +1144,7 @@ EOF
echo "$UNAME_MACHINE"-pc-msdosdjgpp
exit ;;
i*86:*:4.*:*)
- UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'`
+ UNAME_REL=$(echo "$UNAME_RELEASE" | sed 's/\/MP$//')
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo "$UNAME_MACHINE"-univel-sysv"$UNAME_REL"
else
@@ -1104,19 +1153,19 @@ EOF
exit ;;
i*86:*:5:[678]*)
# UnixWare 7.x, OpenUNIX and OpenServer 6.
- case `/bin/uname -X | grep "^Machine"` in
+ case $(/bin/uname -X | grep "^Machine") in
*486*) UNAME_MACHINE=i486 ;;
*Pentium) UNAME_MACHINE=i586 ;;
*Pent*|*Celeron) UNAME_MACHINE=i686 ;;
esac
- echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}{$UNAME_VERSION}"
+ echo "$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}"
exit ;;
i*86:*:3.2:*)
if test -f /usr/options/cb.name; then
- UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
+ UNAME_REL=$(sed -n 's/.*Version //p' </usr/options/cb.name)
echo "$UNAME_MACHINE"-pc-isc"$UNAME_REL"
elif /bin/uname -X 2>/dev/null >/dev/null ; then
- UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')`
+ UNAME_REL=$( (/bin/uname -X|grep Release|sed -e 's/.*= //'))
(/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
@@ -1166,7 +1215,7 @@ EOF
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1177,7 +1226,7 @@ EOF
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
- && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ && OS_REL=.$(sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3"$OS_REL"; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
@@ -1210,7 +1259,7 @@ EOF
exit ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
echo "$UNAME_MACHINE"-sni-sysv4
else
echo ns32k-sni-sysv
@@ -1244,7 +1293,7 @@ EOF
echo mips-sony-newsos6
exit ;;
R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*)
- if [ -d /usr/nec ]; then
+ if test -d /usr/nec; then
echo mips-nec-sysv"$UNAME_RELEASE"
else
echo mips-unknown-sysv"$UNAME_RELEASE"
@@ -1292,44 +1341,48 @@ EOF
*:Rhapsody:*:*)
echo "$UNAME_MACHINE"-apple-rhapsody"$UNAME_RELEASE"
exit ;;
+ arm64:Darwin:*:*)
+ echo aarch64-apple-darwin"$UNAME_RELEASE"
+ exit ;;
*:Darwin:*:*)
- UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
- set_cc_for_build
- if test "$UNAME_PROCESSOR" = unknown ; then
- UNAME_PROCESSOR=powerpc
+ UNAME_PROCESSOR=$(uname -p)
+ case $UNAME_PROCESSOR in
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ if command -v xcode-select > /dev/null 2> /dev/null && \
+ ! xcode-select --print-path > /dev/null 2> /dev/null ; then
+ # Avoid executing cc if there is no toolchain installed as
+ # cc will be a stub that puts up a graphical alert
+ # prompting the user to install developer tools.
+ CC_FOR_BUILD=no_compiler_found
+ else
+ set_cc_for_build
fi
- if test "`echo "$UNAME_RELEASE" | sed -e 's/\..*//'`" -le 10 ; then
- if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
- if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_64BIT_ARCH >/dev/null
- then
- case $UNAME_PROCESSOR in
- i386) UNAME_PROCESSOR=x86_64 ;;
- powerpc) UNAME_PROCESSOR=powerpc64 ;;
- esac
- fi
- # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
- if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
- (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
- grep IS_PPC >/dev/null
- then
- UNAME_PROCESSOR=powerpc
- fi
+ if test "$CC_FOR_BUILD" != no_compiler_found; then
+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_64BIT_ARCH >/dev/null
+ then
+ case $UNAME_PROCESSOR in
+ i386) UNAME_PROCESSOR=x86_64 ;;
+ powerpc) UNAME_PROCESSOR=powerpc64 ;;
+ esac
+ fi
+ # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
+ if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
+ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
+ grep IS_PPC >/dev/null
+ then
+ UNAME_PROCESSOR=powerpc
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
- # Avoid executing cc on OS X 10.9, as it ships with a stub
- # that puts up a graphical alert prompting to install
- # developer tools. Any system running Mac OS X 10.7 or
- # later (Darwin 11 and later) is required to have a 64-bit
- # processor. This is not true of the ARM version of Darwin
- # that Apple uses in portable devices.
- UNAME_PROCESSOR=x86_64
+ # uname -m returns i386 or x86_64
+ UNAME_PROCESSOR=$UNAME_MACHINE
fi
echo "$UNAME_PROCESSOR"-apple-darwin"$UNAME_RELEASE"
exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*)
- UNAME_PROCESSOR=`uname -p`
+ UNAME_PROCESSOR=$(uname -p)
if test "$UNAME_PROCESSOR" = x86; then
UNAME_PROCESSOR=i386
UNAME_MACHINE=pc
@@ -1397,10 +1450,10 @@ EOF
echo mips-sei-seiux"$UNAME_RELEASE"
exit ;;
*:DragonFly:*:*)
- echo "$UNAME_MACHINE"-unknown-dragonfly"`echo "$UNAME_RELEASE"|sed -e 's/[-(].*//'`"
+ echo "$UNAME_MACHINE"-unknown-dragonfly"$(echo "$UNAME_RELEASE"|sed -e 's/[-(].*//')"
exit ;;
*:*VMS:*:*)
- UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ UNAME_MACHINE=$( (uname -p) 2>/dev/null)
case "$UNAME_MACHINE" in
A*) echo alpha-dec-vms ; exit ;;
I*) echo ia64-dec-vms ; exit ;;
@@ -1410,7 +1463,7 @@ EOF
echo i386-pc-xenix
exit ;;
i*86:skyos:*:*)
- echo "$UNAME_MACHINE"-pc-skyos"`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'`"
+ echo "$UNAME_MACHINE"-pc-skyos"$(echo "$UNAME_RELEASE" | sed -e 's/ .*$//')"
exit ;;
i*86:rdos:*:*)
echo "$UNAME_MACHINE"-pc-rdos
@@ -1424,8 +1477,148 @@ EOF
amd64:Isilon\ OneFS:*:*)
echo x86_64-unknown-onefs
exit ;;
+ *:Unleashed:*:*)
+ echo "$UNAME_MACHINE"-unknown-unleashed"$UNAME_RELEASE"
+ exit ;;
esac
+# No uname command or uname output not recognized.
+set_cc_for_build
+cat > "$dummy.c" <<EOF
+#ifdef _SEQUENT_
+#include <sys/types.h>
+#include <sys/utsname.h>
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#include <signal.h>
+#if defined(_SIZE_T_) || defined(SIGLOST)
+#include <sys/utsname.h>
+#endif
+#endif
+#endif
+main ()
+{
+#if defined (sony)
+#if defined (MIPSEB)
+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
+ I don't know.... */
+ printf ("mips-sony-bsd\n"); exit (0);
+#else
+#include <sys/param.h>
+ printf ("m68k-sony-newsos%s\n",
+#ifdef NEWSOS4
+ "4"
+#else
+ ""
+#endif
+ ); exit (0);
+#endif
+#endif
+
+#if defined (NeXT)
+#if !defined (__ARCHITECTURE__)
+#define __ARCHITECTURE__ "m68k"
+#endif
+ int version;
+ version=$( (hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null);
+ if (version < 4)
+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
+ else
+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
+ exit (0);
+#endif
+
+#if defined (MULTIMAX) || defined (n16)
+#if defined (UMAXV)
+ printf ("ns32k-encore-sysv\n"); exit (0);
+#else
+#if defined (CMU)
+ printf ("ns32k-encore-mach\n"); exit (0);
+#else
+ printf ("ns32k-encore-bsd\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (__386BSD__)
+ printf ("i386-pc-bsd\n"); exit (0);
+#endif
+
+#if defined (sequent)
+#if defined (i386)
+ printf ("i386-sequent-dynix\n"); exit (0);
+#endif
+#if defined (ns32000)
+ printf ("ns32k-sequent-dynix\n"); exit (0);
+#endif
+#endif
+
+#if defined (_SEQUENT_)
+ struct utsname un;
+
+ uname(&un);
+ if (strncmp(un.version, "V2", 2) == 0) {
+ printf ("i386-sequent-ptx2\n"); exit (0);
+ }
+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
+ printf ("i386-sequent-ptx1\n"); exit (0);
+ }
+ printf ("i386-sequent-ptx\n"); exit (0);
+#endif
+
+#if defined (vax)
+#if !defined (ultrix)
+#include <sys/param.h>
+#if defined (BSD)
+#if BSD == 43
+ printf ("vax-dec-bsd4.3\n"); exit (0);
+#else
+#if BSD == 199006
+ printf ("vax-dec-bsd4.3reno\n"); exit (0);
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#endif
+#else
+ printf ("vax-dec-bsd\n"); exit (0);
+#endif
+#else
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname un;
+ uname (&un);
+ printf ("vax-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("vax-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__)
+#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__)
+#if defined(_SIZE_T_) || defined(SIGLOST)
+ struct utsname *un;
+ uname (&un);
+ printf ("mips-dec-ultrix%s\n", un.release); exit (0);
+#else
+ printf ("mips-dec-ultrix\n"); exit (0);
+#endif
+#endif
+#endif
+
+#if defined (alliant) && defined (i860)
+ printf ("i860-alliant-bsd\n"); exit (0);
+#endif
+
+ exit (1);
+}
+EOF
+
+$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=$($dummy) &&
+ { echo "$SYSTEM_NAME"; exit; }
+
+# Apollos put the system type in the environment.
+test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; }
+
echo "$0: unable to guess system type" >&2
case "$UNAME_MACHINE:$UNAME_SYSTEM" in
@@ -1448,6 +1641,12 @@ copies of config.guess and config.sub with the latest versions from:
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
and
https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
+EOF
+
+year=$(echo $timestamp | sed 's,-.*,,')
+# shellcheck disable=SC2003
+if test "$(expr "$(date +%Y)" - "$year")" -lt 3 ; then
+ cat >&2 <<EOF
If $0 has already been updated, send the following data and any
information you think might be pertinent to config-patches@gnu.org to
@@ -1455,26 +1654,27 @@ provide the necessary information to handle your system.
config.guess timestamp = $timestamp
-uname -m = `(uname -m) 2>/dev/null || echo unknown`
-uname -r = `(uname -r) 2>/dev/null || echo unknown`
-uname -s = `(uname -s) 2>/dev/null || echo unknown`
-uname -v = `(uname -v) 2>/dev/null || echo unknown`
+uname -m = $( (uname -m) 2>/dev/null || echo unknown)
+uname -r = $( (uname -r) 2>/dev/null || echo unknown)
+uname -s = $( (uname -s) 2>/dev/null || echo unknown)
+uname -v = $( (uname -v) 2>/dev/null || echo unknown)
-/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null`
-/bin/uname -X = `(/bin/uname -X) 2>/dev/null`
+/usr/bin/uname -p = $( (/usr/bin/uname -p) 2>/dev/null)
+/bin/uname -X = $( (/bin/uname -X) 2>/dev/null)
-hostinfo = `(hostinfo) 2>/dev/null`
-/bin/universe = `(/bin/universe) 2>/dev/null`
-/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null`
-/bin/arch = `(/bin/arch) 2>/dev/null`
-/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null`
-/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null`
+hostinfo = $( (hostinfo) 2>/dev/null)
+/bin/universe = $( (/bin/universe) 2>/dev/null)
+/usr/bin/arch -k = $( (/usr/bin/arch -k) 2>/dev/null)
+/bin/arch = $( (/bin/arch) 2>/dev/null)
+/usr/bin/oslevel = $( (/usr/bin/oslevel) 2>/dev/null)
+/usr/convex/getsysinfo = $( (/usr/convex/getsysinfo) 2>/dev/null)
UNAME_MACHINE = "$UNAME_MACHINE"
UNAME_RELEASE = "$UNAME_RELEASE"
UNAME_SYSTEM = "$UNAME_SYSTEM"
UNAME_VERSION = "$UNAME_VERSION"
EOF
+fi
exit 1
diff --git a/support/config.sub b/support/config.sub
index f208558e..c874b7a9 100755
--- a/support/config.sub
+++ b/support/config.sub
@@ -1,8 +1,8 @@
#! /bin/sh
# Configuration validation subroutine script.
-# Copyright 1992-2018 Free Software Foundation, Inc.
+# Copyright 1992-2020 Free Software Foundation, Inc.
-timestamp='2018-08-29'
+timestamp='2020-11-07'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ timestamp='2018-08-29'
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
-me=`echo "$0" | sed -e 's,.*/,,'`
+me=$(echo "$0" | sed -e 's,.*/,,')
usage="\
Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright 1992-2018 Free Software Foundation, Inc.
+Copyright 1992-2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -111,7 +111,8 @@ case $# in
esac
# Split fields of configuration type
-IFS="-" read -r field1 field2 field3 field4 <<EOF
+# shellcheck disable=SC2162
+IFS="-" read field1 field2 field3 field4 <<EOF
$1
EOF
@@ -123,28 +124,27 @@ case $1 in
;;
*-*-*-*)
basic_machine=$field1-$field2
- os=$field3-$field4
+ basic_os=$field3-$field4
;;
*-*-*)
# Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two
# parts
maybe_os=$field2-$field3
case $maybe_os in
- nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc \
- | linux-newlib* | linux-musl* | linux-uclibc* | uclinux-uclibc* \
+ nto-qnx* | linux-* | uclinux-uclibc* \
| uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \
| netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \
| storm-chaos* | os2-emx* | rtmk-nova*)
basic_machine=$field1
- os=$maybe_os
+ basic_os=$maybe_os
;;
android-linux)
basic_machine=$field1-unknown
- os=linux-android
+ basic_os=linux-android
;;
*)
basic_machine=$field1-$field2
- os=$field3
+ basic_os=$field3
;;
esac
;;
@@ -153,7 +153,7 @@ case $1 in
case $field1-$field2 in
decstation-3100)
basic_machine=mips-dec
- os=
+ basic_os=
;;
*-*)
# Second component is usually, but not always the OS
@@ -161,7 +161,7 @@ case $1 in
# Prevent following clause from handling this valid os
sun*os*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
# Manufacturers
dec* | mips* | sequent* | encore* | pc533* | sgi* | sony* \
@@ -174,11 +174,11 @@ case $1 in
| microblaze* | sim | cisco \
| oki | wec | wrs | winbond)
basic_machine=$field1-$field2
- os=
+ basic_os=
;;
*)
basic_machine=$field1
- os=$field2
+ basic_os=$field2
;;
esac
;;
@@ -190,450 +190,451 @@ case $1 in
case $field1 in
386bsd)
basic_machine=i386-pc
- os=bsd
+ basic_os=bsd
;;
a29khif)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
adobe68k)
basic_machine=m68010-adobe
- os=scout
+ basic_os=scout
;;
alliant)
basic_machine=fx80-alliant
- os=
+ basic_os=
;;
altos | altos3068)
basic_machine=m68k-altos
- os=
+ basic_os=
;;
am29k)
basic_machine=a29k-none
- os=bsd
+ basic_os=bsd
;;
amdahl)
basic_machine=580-amdahl
- os=sysv
+ basic_os=sysv
;;
amiga)
basic_machine=m68k-unknown
- os=
+ basic_os=
;;
amigaos | amigados)
basic_machine=m68k-unknown
- os=amigaos
+ basic_os=amigaos
;;
amigaunix | amix)
basic_machine=m68k-unknown
- os=sysv4
+ basic_os=sysv4
;;
apollo68)
basic_machine=m68k-apollo
- os=sysv
+ basic_os=sysv
;;
apollo68bsd)
basic_machine=m68k-apollo
- os=bsd
+ basic_os=bsd
;;
aros)
basic_machine=i386-pc
- os=aros
+ basic_os=aros
;;
aux)
basic_machine=m68k-apple
- os=aux
+ basic_os=aux
;;
balance)
basic_machine=ns32k-sequent
- os=dynix
+ basic_os=dynix
;;
blackfin)
basic_machine=bfin-unknown
- os=linux
+ basic_os=linux
;;
cegcc)
basic_machine=arm-unknown
- os=cegcc
+ basic_os=cegcc
;;
convex-c1)
basic_machine=c1-convex
- os=bsd
+ basic_os=bsd
;;
convex-c2)
basic_machine=c2-convex
- os=bsd
+ basic_os=bsd
;;
convex-c32)
basic_machine=c32-convex
- os=bsd
+ basic_os=bsd
;;
convex-c34)
basic_machine=c34-convex
- os=bsd
+ basic_os=bsd
;;
convex-c38)
basic_machine=c38-convex
- os=bsd
+ basic_os=bsd
;;
cray)
basic_machine=j90-cray
- os=unicos
+ basic_os=unicos
;;
crds | unos)
basic_machine=m68k-crds
- os=
+ basic_os=
;;
da30)
basic_machine=m68k-da30
- os=
+ basic_os=
;;
decstation | pmax | pmin | dec3100 | decstatn)
basic_machine=mips-dec
- os=
+ basic_os=
;;
delta88)
basic_machine=m88k-motorola
- os=sysv3
+ basic_os=sysv3
;;
dicos)
basic_machine=i686-pc
- os=dicos
+ basic_os=dicos
;;
djgpp)
basic_machine=i586-pc
- os=msdosdjgpp
+ basic_os=msdosdjgpp
;;
ebmon29k)
basic_machine=a29k-amd
- os=ebmon
+ basic_os=ebmon
;;
es1800 | OSE68k | ose68k | ose | OSE)
basic_machine=m68k-ericsson
- os=ose
+ basic_os=ose
;;
gmicro)
basic_machine=tron-gmicro
- os=sysv
+ basic_os=sysv
;;
go32)
basic_machine=i386-pc
- os=go32
+ basic_os=go32
;;
h8300hms)
basic_machine=h8300-hitachi
- os=hms
+ basic_os=hms
;;
h8300xray)
basic_machine=h8300-hitachi
- os=xray
+ basic_os=xray
;;
h8500hms)
basic_machine=h8500-hitachi
- os=hms
+ basic_os=hms
;;
harris)
basic_machine=m88k-harris
- os=sysv3
+ basic_os=sysv3
;;
- hp300)
+ hp300 | hp300hpux)
basic_machine=m68k-hp
+ basic_os=hpux
;;
hp300bsd)
basic_machine=m68k-hp
- os=bsd
- ;;
- hp300hpux)
- basic_machine=m68k-hp
- os=hpux
+ basic_os=bsd
;;
hppaosf)
basic_machine=hppa1.1-hp
- os=osf
+ basic_os=osf
;;
hppro)
basic_machine=hppa1.1-hp
- os=proelf
+ basic_os=proelf
;;
i386mach)
basic_machine=i386-mach
- os=mach
- ;;
- vsta)
- basic_machine=i386-pc
- os=vsta
+ basic_os=mach
;;
isi68 | isi)
basic_machine=m68k-isi
- os=sysv
+ basic_os=sysv
;;
m68knommu)
basic_machine=m68k-unknown
- os=linux
+ basic_os=linux
;;
magnum | m3230)
basic_machine=mips-mips
- os=sysv
+ basic_os=sysv
;;
merlin)
basic_machine=ns32k-utek
- os=sysv
+ basic_os=sysv
;;
mingw64)
basic_machine=x86_64-pc
- os=mingw64
+ basic_os=mingw64
;;
mingw32)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
mingw32ce)
basic_machine=arm-unknown
- os=mingw32ce
+ basic_os=mingw32ce
;;
monitor)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
morphos)
basic_machine=powerpc-unknown
- os=morphos
+ basic_os=morphos
;;
moxiebox)
basic_machine=moxie-unknown
- os=moxiebox
+ basic_os=moxiebox
;;
msdos)
basic_machine=i386-pc
- os=msdos
+ basic_os=msdos
;;
msys)
basic_machine=i686-pc
- os=msys
+ basic_os=msys
;;
mvs)
basic_machine=i370-ibm
- os=mvs
+ basic_os=mvs
;;
nacl)
basic_machine=le32-unknown
- os=nacl
+ basic_os=nacl
;;
ncr3000)
basic_machine=i486-ncr
- os=sysv4
+ basic_os=sysv4
;;
netbsd386)
basic_machine=i386-pc
- os=netbsd
+ basic_os=netbsd
;;
netwinder)
basic_machine=armv4l-rebel
- os=linux
+ basic_os=linux
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
- os=newsos
+ basic_os=newsos
;;
news1000)
basic_machine=m68030-sony
- os=newsos
+ basic_os=newsos
;;
necv70)
basic_machine=v70-nec
- os=sysv
+ basic_os=sysv
;;
nh3000)
basic_machine=m68k-harris
- os=cxux
+ basic_os=cxux
;;
nh[45]000)
basic_machine=m88k-harris
- os=cxux
+ basic_os=cxux
;;
nindy960)
basic_machine=i960-intel
- os=nindy
+ basic_os=nindy
;;
mon960)
basic_machine=i960-intel
- os=mon960
+ basic_os=mon960
;;
nonstopux)
basic_machine=mips-compaq
- os=nonstopux
+ basic_os=nonstopux
;;
os400)
basic_machine=powerpc-ibm
- os=os400
+ basic_os=os400
;;
OSE68000 | ose68000)
basic_machine=m68000-ericsson
- os=ose
+ basic_os=ose
;;
os68k)
basic_machine=m68k-none
- os=os68k
+ basic_os=os68k
;;
paragon)
basic_machine=i860-intel
- os=osf
+ basic_os=osf
;;
parisc)
basic_machine=hppa-unknown
- os=linux
+ basic_os=linux
+ ;;
+ psp)
+ basic_machine=mipsallegrexel-sony
+ basic_os=psp
;;
pw32)
basic_machine=i586-unknown
- os=pw32
+ basic_os=pw32
;;
rdos | rdos64)
basic_machine=x86_64-pc
- os=rdos
+ basic_os=rdos
;;
rdos32)
basic_machine=i386-pc
- os=rdos
+ basic_os=rdos
;;
rom68k)
basic_machine=m68k-rom68k
- os=coff
+ basic_os=coff
;;
sa29200)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
sei)
basic_machine=mips-sei
- os=seiux
+ basic_os=seiux
;;
sequent)
basic_machine=i386-sequent
- os=
+ basic_os=
;;
sps7)
basic_machine=m68k-bull
- os=sysv2
+ basic_os=sysv2
;;
st2000)
basic_machine=m68k-tandem
- os=
+ basic_os=
;;
stratus)
basic_machine=i860-stratus
- os=sysv4
+ basic_os=sysv4
;;
sun2)
basic_machine=m68000-sun
- os=
+ basic_os=
;;
sun2os3)
basic_machine=m68000-sun
- os=sunos3
+ basic_os=sunos3
;;
sun2os4)
basic_machine=m68000-sun
- os=sunos4
+ basic_os=sunos4
;;
sun3)
basic_machine=m68k-sun
- os=
+ basic_os=
;;
sun3os3)
basic_machine=m68k-sun
- os=sunos3
+ basic_os=sunos3
;;
sun3os4)
basic_machine=m68k-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4)
basic_machine=sparc-sun
- os=
+ basic_os=
;;
sun4os3)
basic_machine=sparc-sun
- os=sunos3
+ basic_os=sunos3
;;
sun4os4)
basic_machine=sparc-sun
- os=sunos4
+ basic_os=sunos4
;;
sun4sol2)
basic_machine=sparc-sun
- os=solaris2
+ basic_os=solaris2
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
- os=
+ basic_os=
;;
sv1)
basic_machine=sv1-cray
- os=unicos
+ basic_os=unicos
;;
symmetry)
basic_machine=i386-sequent
- os=dynix
+ basic_os=dynix
;;
t3e)
basic_machine=alphaev5-cray
- os=unicos
+ basic_os=unicos
;;
t90)
basic_machine=t90-cray
- os=unicos
+ basic_os=unicos
;;
toad1)
basic_machine=pdp10-xkl
- os=tops20
+ basic_os=tops20
;;
tpf)
basic_machine=s390x-ibm
- os=tpf
+ basic_os=tpf
;;
udi29k)
basic_machine=a29k-amd
- os=udi
+ basic_os=udi
;;
ultra3)
basic_machine=a29k-nyu
- os=sym1
+ basic_os=sym1
;;
v810 | necv810)
basic_machine=v810-nec
- os=none
+ basic_os=none
;;
vaxv)
basic_machine=vax-dec
- os=sysv
+ basic_os=sysv
;;
vms)
basic_machine=vax-dec
- os=vms
+ basic_os=vms
+ ;;
+ vsta)
+ basic_machine=i386-pc
+ basic_os=vsta
;;
vxworks960)
basic_machine=i960-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks68)
basic_machine=m68k-wrs
- os=vxworks
+ basic_os=vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
- os=vxworks
+ basic_os=vxworks
;;
xbox)
basic_machine=i686-pc
- os=mingw32
+ basic_os=mingw32
;;
ymp)
basic_machine=ymp-cray
- os=unicos
+ basic_os=unicos
;;
*)
basic_machine=$1
- os=
+ basic_os=
;;
esac
;;
@@ -685,17 +686,17 @@ case $basic_machine in
bluegene*)
cpu=powerpc
vendor=ibm
- os=cnk
+ basic_os=cnk
;;
decsystem10* | dec10*)
cpu=pdp10
vendor=dec
- os=tops10
+ basic_os=tops10
;;
decsystem20* | dec20*)
cpu=pdp10
vendor=dec
- os=tops20
+ basic_os=tops20
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
@@ -705,7 +706,7 @@ case $basic_machine in
dpx2*)
cpu=m68k
vendor=bull
- os=sysv3
+ basic_os=sysv3
;;
encore | umax | mmax)
cpu=ns32k
@@ -714,7 +715,7 @@ case $basic_machine in
elxsi)
cpu=elxsi
vendor=elxsi
- os=${os:-bsd}
+ basic_os=${basic_os:-bsd}
;;
fx2800)
cpu=i860
@@ -727,7 +728,7 @@ case $basic_machine in
h3050r* | hiux*)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
hp3k9[0-9][0-9] | hp9[0-9][0-9])
cpu=hppa1.0
@@ -768,38 +769,38 @@ case $basic_machine in
vendor=hp
;;
i*86v32)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv32
+ basic_os=sysv32
;;
i*86v4*)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv4
+ basic_os=sysv4
;;
i*86v)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=sysv
+ basic_os=sysv
;;
i*86sol2)
- cpu=`echo "$1" | sed -e 's/86.*/86/'`
+ cpu=$(echo "$1" | sed -e 's/86.*/86/')
vendor=pc
- os=solaris2
+ basic_os=solaris2
;;
j90 | j90-cray)
cpu=j90
vendor=cray
- os=${os:-unicos}
+ basic_os=${basic_os:-unicos}
;;
iris | iris4d)
cpu=mips
vendor=sgi
- case $os in
+ case $basic_os in
irix*)
;;
*)
- os=irix4
+ basic_os=irix4
;;
esac
;;
@@ -810,24 +811,26 @@ case $basic_machine in
*mint | mint[0-9]* | *MiNT | *MiNT[0-9]*)
cpu=m68k
vendor=atari
- os=mint
+ basic_os=mint
;;
news-3600 | risc-news)
cpu=mips
vendor=sony
- os=newsos
+ basic_os=newsos
;;
next | m*-next)
cpu=m68k
vendor=next
- case $os in
- nextstep* )
+ case $basic_os in
+ openstep*)
+ ;;
+ nextstep*)
;;
ns2*)
- os=nextstep2
+ basic_os=nextstep2
;;
*)
- os=nextstep3
+ basic_os=nextstep3
;;
esac
;;
@@ -838,12 +841,12 @@ case $basic_machine in
op50n-* | op60c-*)
cpu=hppa1.1
vendor=oki
- os=proelf
+ basic_os=proelf
;;
pa-hitachi)
cpu=hppa1.1
vendor=hitachi
- os=hiuxwe2
+ basic_os=hiuxwe2
;;
pbd)
cpu=sparc
@@ -880,12 +883,12 @@ case $basic_machine in
sde)
cpu=mipsisa32
vendor=sde
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
simso-wrs)
cpu=sparclite
vendor=wrs
- os=vxworks
+ basic_os=vxworks
;;
tower | tower-32)
cpu=m68k
@@ -902,7 +905,7 @@ case $basic_machine in
w89k-*)
cpu=hppa1.1
vendor=winbond
- os=proelf
+ basic_os=proelf
;;
none)
cpu=none
@@ -914,11 +917,12 @@ case $basic_machine in
;;
leon-*|leon[3-9]-*)
cpu=sparc
- vendor=`echo "$basic_machine" | sed 's/-.*//'`
+ vendor=$(echo "$basic_machine" | sed 's/-.*//')
;;
*-*)
- IFS="-" read -r cpu vendor <<EOF
+ # shellcheck disable=SC2162
+ IFS="-" read cpu vendor <<EOF
$basic_machine
EOF
;;
@@ -954,11 +958,11 @@ case $cpu-$vendor in
# some cases the only manufacturer, in others, it is the most popular.
craynv-unknown)
vendor=cray
- os=${os:-unicosmp}
+ basic_os=${basic_os:-unicosmp}
;;
c90-unknown | c90-cray)
vendor=cray
- os=${os:-unicos}
+ basic_os=${Basic_os:-unicos}
;;
fx80-unknown)
vendor=alliant
@@ -1002,7 +1006,7 @@ case $cpu-$vendor in
dpx20-unknown | dpx20-bull)
cpu=rs6000
vendor=bull
- os=${os:-bosx}
+ basic_os=${basic_os:-bosx}
;;
# Here we normalize CPU types irrespective of the vendor
@@ -1011,7 +1015,7 @@ case $cpu-$vendor in
;;
blackfin-*)
cpu=bfin
- os=linux
+ basic_os=linux
;;
c54x-*)
cpu=tic54x
@@ -1024,7 +1028,7 @@ case $cpu-$vendor in
;;
e500v[12]-*)
cpu=powerpc
- os=$os"spe"
+ basic_os=${basic_os}"spe"
;;
mips3*-*)
cpu=mips64
@@ -1034,7 +1038,7 @@ case $cpu-$vendor in
;;
m68knommu-*)
cpu=m68k
- os=linux
+ basic_os=linux
;;
m9s12z-* | m68hcs12z-* | hcs12z-* | s12z-*)
cpu=s12z
@@ -1044,7 +1048,7 @@ case $cpu-$vendor in
;;
parisc-*)
cpu=hppa
- os=linux
+ basic_os=linux
;;
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
cpu=i586
@@ -1080,7 +1084,7 @@ case $cpu-$vendor in
cpu=mipsisa64sb1el
;;
sh5e[lb]-*)
- cpu=`echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/'`
+ cpu=$(echo "$cpu" | sed 's/^\(sh.\)e\(.\)$/\1\2e/')
;;
spur-*)
cpu=spur
@@ -1098,13 +1102,16 @@ case $cpu-$vendor in
cpu=x86_64
;;
xscale-* | xscalee[bl]-*)
- cpu=`echo "$cpu" | sed 's/^xscale/arm/'`
+ cpu=$(echo "$cpu" | sed 's/^xscale/arm/')
+ ;;
+ arm64-*)
+ cpu=aarch64
;;
# Recognize the canonical CPU Types that limit and/or modify the
# company names they are paired with.
cr16-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
crisv32-* | etraxfs*-*)
cpu=crisv32
@@ -1115,7 +1122,7 @@ case $cpu-$vendor in
vendor=axis
;;
crx-*)
- os=${os:-elf}
+ basic_os=${basic_os:-elf}
;;
neo-tandem)
cpu=neo
@@ -1137,16 +1144,12 @@ case $cpu-$vendor in
cpu=nsx
vendor=tandem
;;
- s390-*)
- cpu=s390
- vendor=ibm
- ;;
- s390x-*)
- cpu=s390x
- vendor=ibm
+ mipsallegrexel-sony)
+ cpu=mipsallegrexel
+ vendor=sony
;;
tile*-*)
- os=${os:-linux-gnu}
+ basic_os=${basic_os:-linux-gnu}
;;
*)
@@ -1161,13 +1164,14 @@ case $cpu-$vendor in
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \
| alphapca5[67] | alpha64pca5[67] \
| am33_2.0 \
+ | amdgcn \
| arc | arceb \
- | arm | arm[lb]e | arme[lb] | armv* \
+ | arm | arm[lb]e | arme[lb] | armv* \
| avr | avr32 \
| asmjs \
| ba \
| be32 | be64 \
- | bfin | bs2000 \
+ | bfin | bpf | bs2000 \
| c[123]* | c30 | [cjt]90 | c4x \
| c8051 | clipper | craynv | csky | cydra \
| d10v | d30v | dlx | dsp16xx \
@@ -1182,13 +1186,13 @@ case $cpu-$vendor in
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle \
- | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k | v70 | w65 \
- | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip \
+ | m5200 | m68000 | m680[012346]0 | m68360 | m683?2 | m68k \
+ | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \
| m88110 | m88k | maxq | mb | mcore | mep | metag \
| microblaze | microblazeel \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
- | mips64 | mips64el \
+ | mips64 | mips64eb | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
@@ -1215,19 +1219,22 @@ case $cpu-$vendor in
| nds32 | nds32le | nds32be \
| nfp \
| nios | nios2 | nios2eb | nios2el \
- | none | np1 | ns16k | ns32k \
+ | none | np1 | ns16k | ns32k | nvptx \
| open8 \
| or1k* \
| or32 \
| orion \
+ | picochip \
| pdp10 | pdp11 | pj | pjl | pn | power \
| powerpc | powerpc64 | powerpc64le | powerpcle | powerpcspe \
| pru \
| pyramid \
| riscv | riscv32 | riscv64 \
| rl78 | romp | rs6000 | rx \
+ | s390 | s390x \
| score \
- | sh | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
+ | sh | shl \
+ | sh[1234] | sh[24]a | sh[24]ae[lb] | sh[23]e | she[lb] | sh[lb]e \
| sh[1234]e[lb] | sh[12345][lb]e | sh[23]ele | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet \
| sparclite \
@@ -1237,10 +1244,11 @@ case $cpu-$vendor in
| tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \
| tron \
| ubicom32 \
- | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
+ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \
| vax \
| visium \
- | wasm32 \
+ | w65 \
+ | wasm32 | wasm64 \
| we32k \
| x86 | x86_64 | xc16x | xgate | xps100 \
| xstormy16 | xtensa* \
@@ -1270,8 +1278,47 @@ esac
# Decode manufacturer-specific aliases for certain operating systems.
-if [ x$os != x ]
+if test x$basic_os != x
then
+
+# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just
+# set os.
+case $basic_os in
+ gnu/linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|gnu/linux|gnu|')
+ ;;
+ os2-emx)
+ kernel=os2
+ os=$(echo $basic_os | sed -e 's|os2-emx|emx|')
+ ;;
+ nto-qnx*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto-qnx|qnx|')
+ ;;
+ *-*)
+ # shellcheck disable=SC2162
+ IFS="-" read kernel os <<EOF
+$basic_os
+EOF
+ ;;
+ # Default OS when just kernel was specified
+ nto*)
+ kernel=nto
+ os=$(echo $basic_os | sed -e 's|nto|qnx|')
+ ;;
+ linux*)
+ kernel=linux
+ os=$(echo $basic_os | sed -e 's|linux|gnu|')
+ ;;
+ *)
+ kernel=
+ os=$basic_os
+ ;;
+esac
+
+# Now, normalize the OS (knowing we just have one component, it's not a kernel,
+# etc.)
case $os in
# First match some system type aliases that might get confused
# with valid system types.
@@ -1283,7 +1330,7 @@ case $os in
os=cnk
;;
solaris1 | solaris1.*)
- os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ os=$(echo $os | sed -e 's|solaris1|sunos4|')
;;
solaris)
os=solaris2
@@ -1291,9 +1338,6 @@ case $os in
unixware*)
os=sysv4.2uw
;;
- gnu/linux*)
- os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
- ;;
# es1800 is here to avoid being matched by es* (a different OS)
es1800*)
os=ose
@@ -1315,12 +1359,9 @@ case $os in
os=sco3.2v4
;;
sco3.2.[4-9]*)
- os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
- ;;
- sco3.2v[4-9]* | sco5v6*)
- # Don't forget version if it is 3.2v4 or newer.
+ os=$(echo $os | sed -e 's/sco3.2./sco3.2v/')
;;
- scout)
+ sco*v* | scout)
# Don't match below
;;
sco*)
@@ -1329,78 +1370,26 @@ case $os in
psos*)
os=psos
;;
- # Now accept the basic system types.
- # The portable systems comes first.
- # Each alternative MUST end in a * to match a version number.
- # sysv* is not here because it comes later, after sysvr4.
- gnu* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
- | *vms* | esix* | aix* | cnk* | sunos | sunos[34]*\
- | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
- | sym* | kopensolaris* | plan9* \
- | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
- | aos* | aros* | cloudabi* | sortix* \
- | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
- | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
- | knetbsd* | mirbsd* | netbsd* \
- | bitrig* | openbsd* | solidbsd* | libertybsd* \
- | ekkobsd* | kfreebsd* | freebsd* | riscix* | lynxos* \
- | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
- | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
- | udi* | eabi* | lites* | ieee* | go32* | aux* | hcos* \
- | chorusrdb* | cegcc* | glidix* \
- | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
- | midipix* | mingw32* | mingw64* | linux-gnu* | linux-android* \
- | linux-newlib* | linux-musl* | linux-uclibc* \
- | uxpv* | beos* | mpeix* | udk* | moxiebox* \
- | interix* | uwin* | mks* | rhapsody* | darwin* \
- | openstep* | oskit* | conix* | pw32* | nonstopux* \
- | storm-chaos* | tops10* | tenex* | tops20* | its* \
- | os2* | vos* | palmos* | uclinux* | nucleus* \
- | morphos* | superux* | rtmk* | windiss* \
- | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
- | skyos* | haiku* | rdos* | toppers* | drops* | es* \
- | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
- | midnightbsd*)
- # Remember, each alternative MUST END IN *, to match a version number.
- ;;
qnx*)
- case $cpu in
- x86 | i*86)
- ;;
- *)
- os=nto-$os
- ;;
- esac
+ os=qnx
;;
hiux*)
os=hiuxwe2
;;
- nto-qnx*)
- ;;
- nto*)
- os=`echo $os | sed -e 's|nto|nto-qnx|'`
- ;;
- sim | xray | os68k* | v88r* \
- | windows* | osx | abug | netware* | os9* \
- | macos* | mpw* | magic* | mmixware* | mon960* | lnews*)
- ;;
- linux-dietlibc)
- os=linux-dietlibc
- ;;
- linux*)
- os=`echo $os | sed -e 's|linux|linux-gnu|'`
- ;;
lynx*178)
os=lynxos178
;;
lynx*5)
os=lynxos5
;;
+ lynxos*)
+ # don't get caught up in next wildcard
+ ;;
lynx*)
os=lynxos
;;
- mac*)
- os=`echo "$os" | sed -e 's|mac|macos|'`
+ mac[0-9]*)
+ os=$(echo "$os" | sed -e 's|mac|macos|')
;;
opened*)
os=openedition
@@ -1409,10 +1398,10 @@ case $os in
os=os400
;;
sunos5*)
- os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
+ os=$(echo "$os" | sed -e 's|sunos5|solaris2|')
;;
sunos6*)
- os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
+ os=$(echo "$os" | sed -e 's|sunos6|solaris3|')
;;
wince*)
os=wince
@@ -1444,12 +1433,9 @@ case $os in
ns2)
os=nextstep2
;;
- nsk*)
- os=nsk
- ;;
# Preserve the version number of sinix5.
sinix5.*)
- os=`echo $os | sed -e 's|sinix|sysv|'`
+ os=$(echo $os | sed -e 's|sinix|sysv|')
;;
sinix*)
os=sysv4
@@ -1472,18 +1458,12 @@ case $os in
sysvr4)
os=sysv4
;;
- # This must come after sysvr4.
- sysv*)
- ;;
ose*)
os=ose
;;
*mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
os=mint
;;
- zvmoe)
- os=zvmoe
- ;;
dicos*)
os=dicos
;;
@@ -1500,19 +1480,11 @@ case $os in
;;
esac
;;
- nacl*)
- ;;
- ios)
- ;;
- none)
- ;;
- *-eabi)
- ;;
*)
- echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
- exit 1
+ # No normalization, but not necessarily accepted, that comes below.
;;
esac
+
else
# Here we handle the default operating systems that come with various machines.
@@ -1525,6 +1497,7 @@ else
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
+kernel=
case $cpu-$vendor in
score-*)
os=elf
@@ -1536,7 +1509,8 @@ case $cpu-$vendor in
os=riscix1.2
;;
arm*-rebel)
- os=linux
+ kernel=linux
+ os=gnu
;;
arm*-semi)
os=aout
@@ -1702,84 +1676,173 @@ case $cpu-$vendor in
os=none
;;
esac
+
fi
+# Now, validate our (potentially fixed-up) OS.
+case $os in
+ # Sometimes we do "kernel-abi", so those need to count as OSes.
+ musl* | newlib* | uclibc*)
+ ;;
+ # Likewise for "kernel-libc"
+ eabi | eabihf | gnueabi | gnueabihf)
+ ;;
+ # Now accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST end in a * to match a version number.
+ gnu* | android* | bsd* | mach* | minix* | genix* | ultrix* | irix* \
+ | *vms* | esix* | aix* | cnk* | sunos | sunos[34]* \
+ | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \
+ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \
+ | hiux* | abug | nacl* | netware* | windows* \
+ | os9* | macos* | osx* | ios* \
+ | mpw* | magic* | mmixware* | mon960* | lnews* \
+ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \
+ | aos* | aros* | cloudabi* | sortix* | twizzler* \
+ | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \
+ | clix* | riscos* | uniplus* | iris* | isc* | rtu* | xenix* \
+ | mirbsd* | netbsd* | dicos* | openedition* | ose* \
+ | bitrig* | openbsd* | solidbsd* | libertybsd* | os108* \
+ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \
+ | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \
+ | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \
+ | udi* | lites* | ieee* | go32* | aux* | hcos* \
+ | chorusrdb* | cegcc* | glidix* \
+ | cygwin* | msys* | pe* | moss* | proelf* | rtems* \
+ | midipix* | mingw32* | mingw64* | mint* \
+ | uxpv* | beos* | mpeix* | udk* | moxiebox* \
+ | interix* | uwin* | mks* | rhapsody* | darwin* \
+ | openstep* | oskit* | conix* | pw32* | nonstopux* \
+ | storm-chaos* | tops10* | tenex* | tops20* | its* \
+ | os2* | vos* | palmos* | uclinux* | nucleus* | morphos* \
+ | scout* | superux* | sysv* | rtmk* | tpf* | windiss* \
+ | powermax* | dnix* | nx6 | nx7 | sei* | dragonfly* \
+ | skyos* | haiku* | rdos* | toppers* | drops* | es* \
+ | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
+ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
+ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx*)
+ ;;
+ # This one is extra strict with allowed versions
+ sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
+ # Don't forget version if it is 3.2v4 or newer.
+ ;;
+ none)
+ ;;
+ *)
+ echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+
+# As a final step for OS-related things, validate the OS-kernel combination
+# (given a valid OS), if there is a kernel.
+case $kernel-$os in
+ linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* | linux-musl* | linux-uclibc* )
+ ;;
+ uclinux-uclibc* )
+ ;;
+ -dietlibc* | -newlib* | -musl* | -uclibc* )
+ # These are just libc implementations, not actual OSes, and thus
+ # require a kernel.
+ echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2
+ exit 1
+ ;;
+ kfreebsd*-gnu* | kopensolaris*-gnu*)
+ ;;
+ nto-qnx*)
+ ;;
+ os2-emx)
+ ;;
+ *-eabi* | *-gnueabi*)
+ ;;
+ -*)
+ # Blank kernel with real OS is always fine.
+ ;;
+ *-*)
+ echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2
+ exit 1
+ ;;
+esac
+
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
case $vendor in
unknown)
- case $os in
- riscix*)
+ case $cpu-$os in
+ *-riscix*)
vendor=acorn
;;
- sunos*)
+ *-sunos*)
vendor=sun
;;
- cnk*|-aix*)
+ *-cnk* | *-aix*)
vendor=ibm
;;
- beos*)
+ *-beos*)
vendor=be
;;
- hpux*)
+ *-hpux*)
vendor=hp
;;
- mpeix*)
+ *-mpeix*)
vendor=hp
;;
- hiux*)
+ *-hiux*)
vendor=hitachi
;;
- unos*)
+ *-unos*)
vendor=crds
;;
- dgux*)
+ *-dgux*)
vendor=dg
;;
- luna*)
+ *-luna*)
vendor=omron
;;
- genix*)
+ *-genix*)
vendor=ns
;;
- clix*)
+ *-clix*)
vendor=intergraph
;;
- mvs* | opened*)
+ *-mvs* | *-opened*)
+ vendor=ibm
+ ;;
+ *-os400*)
vendor=ibm
;;
- os400*)
+ s390-* | s390x-*)
vendor=ibm
;;
- ptx*)
+ *-ptx*)
vendor=sequent
;;
- tpf*)
+ *-tpf*)
vendor=ibm
;;
- vxsim* | vxworks* | windiss*)
+ *-vxsim* | *-vxworks* | *-windiss*)
vendor=wrs
;;
- aux*)
+ *-aux*)
vendor=apple
;;
- hms*)
+ *-hms*)
vendor=hitachi
;;
- mpw* | macos*)
+ *-mpw* | *-macos*)
vendor=apple
;;
- *mint | mint[0-9]* | *MiNT | MiNT[0-9]*)
+ *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*)
vendor=atari
;;
- vos*)
+ *-vos*)
vendor=stratus
;;
esac
;;
esac
-echo "$cpu-$vendor-$os"
+echo "$cpu-$vendor-${kernel:+$kernel-}$os"
exit
# Local variables:
diff --git a/support/man2html.c b/support/man2html.c
index b10cb959..e6f441b4 100644
--- a/support/man2html.c
+++ b/support/man2html.c
@@ -49,8 +49,8 @@
* * Tables are converted but some features are not possible in html.
* * The tabbing environment is converted by counting characters and adding
* spaces. This might go wrong (outside <PRE>)
- * * Some pages look beter if man2html works in troff mode, especially pages
- * with tables. You can deside at compile time which made you want to use.
+ * * Some pages look better if man2html works in troff mode, especially pages
+ * with tables. You can decide at compile time which made you want to use.
*
* -DNROFF=0 troff mode
* -DNROFF=1 nroff mode (default)
@@ -3805,7 +3805,7 @@ scan_troff(char *c, int san, char **result)
&& *(h + 1) && islower(*(h + 1))
&& *(h + 2) && isspace(*(h + 2))) {
/*
- * BSD imbedded command eg ".It Fl Ar arg1 Fl Ar
+ * BSD embedded command eg ".It Fl Ar arg1 Fl Ar
* arg2"
*/
FLUSHIBP;
diff --git a/support/mksignames.c b/support/mksignames.c
index 5618879a..ba87ae8b 100644
--- a/support/mksignames.c
+++ b/support/mksignames.c
@@ -1,7 +1,7 @@
/* mksignames.c -- Create and write `signames.h', which contains an array of
signal names. */
-/* Copyright (C) 1992-2006 Free Software Foundation, Inc.
+/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -57,7 +57,7 @@ write_signames (stream)
"/* A translation list so we can be polite to our users. */\n");
#if defined (CROSS_COMPILING)
fprintf (stream, "extern char *signal_names[];\n\n");
- fprintf (stream, "extern void initialize_signames __P((void));\n\n");
+ fprintf (stream, "extern void initialize_signames PARAMS((void));\n\n");
#else
fprintf (stream, "char *signal_names[NSIG + 4] = {\n");
diff --git a/support/mkversion.sh b/support/mkversion.sh
index 08a5d981..5960a425 100755
--- a/support/mkversion.sh
+++ b/support/mkversion.sh
@@ -5,7 +5,7 @@
# in the makefile. This creates a file named by the -o option,
# otherwise everything is echoed to the standard output.
-# Copyright (C) 1996-2002 Free Software Foundation, Inc.
+# Copyright (C) 1996-2020 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -153,8 +153,8 @@ echo "#define SCCSVERSION \"@(#)Bash version ${sccs_string}\""
# extern function declarations
#echo
#echo '/* Functions from version.c. */'
-#echo 'extern char *shell_version_string __P((void));'
-#echo 'extern void show_shell_version __P((int));'
+#echo 'extern char *shell_version_string PARAMS((void));'
+#echo 'extern void show_shell_version PARAMS((int));'
if [ -n "$inc_build" ]; then
# Make sure we can write to .build
diff --git a/support/shobj-conf b/support/shobj-conf
index 7920f1b5..5a3f9776 100755
--- a/support/shobj-conf
+++ b/support/shobj-conf
@@ -10,7 +10,7 @@
# Chet Ramey
# chet@po.cwru.edu
-# Copyright (C) 1996-2014 Free Software Foundation, Inc.
+# Copyright (C) 1996-2019 Free Software Foundation, Inc.
#
# This file is part of GNU Bash, the Bourne Again SHell.
#
@@ -65,7 +65,7 @@ while [ $# -gt 0 ]; do
done
case "${host_os}-${SHOBJ_CC}-${host_vendor}" in
-nsk-cc-tandem)
+nsk-cc-tandem|nsk-c99-tandem)
SHOBJ_CFLAGS=-Wglobalized
case `uname -m` in
NSR*)
@@ -123,7 +123,7 @@ sunos5*|solaris2*)
;;
# All versions of Linux (including Gentoo/FreeBSD) or the semi-mythical GNU Hurd.
-linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo)
+linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*|dragonfly*)
SHOBJ_CFLAGS=-fPIC
SHOBJ_LD='${CC}'
SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
@@ -132,44 +132,6 @@ linux*-*|gnu*-*|k*bsd*-gnu-*|freebsd*-gentoo)
SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
;;
-freebsd2*)
- SHOBJ_CFLAGS=-fpic
- SHOBJ_LD=ld
- SHOBJ_LDFLAGS='-x -Bshareable'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- ;;
-
-# FreeBSD-3.x ELF
-freebsd3*|freebsdaout*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
-
- if [ -x /usr/bin/objformat ] && [ "`/usr/bin/objformat`" = "elf" ]; then
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
-
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- else
- SHOBJ_LDFLAGS='-shared'
-
- SHLIB_XLDFLAGS='-R$(libdir)'
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)$(SHLIB_MINOR)'
- fi
- ;;
-
-# FreeBSD-4.x and later have only ELF
-freebsd[4-9]*|freebsd1[0-9]*|freebsdelf*|dragonfly*)
- SHOBJ_CFLAGS=-fPIC
- SHOBJ_LD='${CC}'
-
- SHOBJ_LDFLAGS='-shared -Wl,-soname,$@'
- SHLIB_XLDFLAGS='-Wl,-rpath,$(libdir)'
-
- SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
- ;;
-
# Darwin/MacOS X
darwin*)
# Common definitions for all darwin/mac os x versions
@@ -402,18 +364,15 @@ hpux11*)
SHLIB_STATUS=unsupported
# If you are using the HP ANSI C compiler, you can uncomment and use
- # this code (I have not tested it)
-# SHOBJ_STATUS=supported
-# SHLIB_STATUS=supported
-#
+ # this code from michael.osipov@siemens.com (I have not tested it)
# SHOBJ_CFLAGS='+z'
-# SHOBJ_LD='ld'
-# SHOBJ_LDFLAGS='-b +s +h $@'
+# SHOBJ_LD='$(CC)'
+# SHOBJ_LDFLAGS='-b -Wl,+s -Wl,+h,$@'
#
-# SHLIB_XLDFLAGS='+b $(libdir)'
-# SHLIB_LIBSUFF='sl'
+# SHLIB_XLDFLAGS='-Wl,+b,$(libdir)'
+# SHLIB_LIBSUFF='so'
# SHLIB_LIBVERSION='$(SHLIB_LIBSUFF).$(SHLIB_MAJOR)'
-
+# SHLIB_LIBS='$(TERMCAP_LIB)'
;;
sysv4*-*gcc*)
diff --git a/support/signames.c b/support/signames.c
index d2978089..aba4842a 100644
--- a/support/signames.c
+++ b/support/signames.c
@@ -1,6 +1,6 @@
/* signames.c -- Create an array of signal names. */
-/* Copyright (C) 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -159,10 +159,18 @@ initialize_signames ()
signal_names[SIGPRE] = "SIGPRE";
#endif
+#if defined (SIGPHONE) /* Phone interrupt */
+ signal_names[SIGPHONE] = "SIGPHONE";
+#endif
+
#if defined (SIGVIRT) /* AIX virtual time alarm */
signal_names[SIGVIRT] = "SIGVIRT";
#endif
+#if defined (SIGTINT) /* Interrupt */
+ signal_names[SIGTINT] = "SIGTINT";
+#endif
+
#if defined (SIGALRM1) /* m:n condition variables */
signal_names[SIGALRM1] = "SIGALRM1";
#endif
@@ -191,6 +199,18 @@ initialize_signames ()
signal_names[SIGSAK] = "SIGSAK";
#endif
+#if defined (SIGCPUFAIL) /* Predictive processor deconfiguration */
+ signal_names[SIGCPUFAIL] = "SIGCPUFAIL";
+#endif
+
+#if defined (SIGAIO) /* Asynchronous I/O */
+ signal_names[SIGAIO] = "SIGAIO";
+#endif
+
+#if defined (SIGLAB) /* Security label changed */
+ signal_names[SIGLAB] = "SIGLAB";
+#endif
+
/* SunOS5 */
#if defined (SIGLWP) /* Solaris: special signal used by thread library */
signal_names[SIGLWP] = "SIGLWP";
@@ -220,6 +240,31 @@ initialize_signames ()
signal_names[SIGJVM2] = "SIGJVM2";
#endif
+#if defined (SIGDGTIMER1)
+ signal_names[SIGDGTIMER1] = "SIGDGTIMER1";
+#endif
+
+#if defined (SIGDGTIMER2)
+ signal_names[SIGDGTIMER2] = "SIGDGTIMER2";
+#endif
+
+#if defined (SIGDGTIMER3)
+ signal_names[SIGDGTIMER3] = "SIGDGTIMER3";
+#endif
+
+#if defined (SIGDGTIMER4)
+ signal_names[SIGDGTIMER4] = "SIGDGTIMER4";
+#endif
+
+#if defined (SIGDGNOTIFY)
+ signal_names[SIGDGNOTIFY] = "SIGDGNOTIFY";
+#endif
+
+/* Apollo */
+#if defined (SIGAPOLLO)
+ signal_names[SIGAPOLLO] = "SIGAPOLLO";
+#endif
+
/* HP-UX */
#if defined (SIGDIL) /* DIL signal (?) */
signal_names[SIGDIL] = "SIGDIL";
diff --git a/support/texi2dvi b/support/texi2dvi
index 173e8ab4..17f43557 100755
--- a/support/texi2dvi
+++ b/support/texi2dvi
@@ -1,10 +1,7 @@
#! /bin/sh
# texi2dvi --- produce DVI (or PDF) files from Texinfo (or (La)TeX) sources.
-# $Id: texi2dvi 5704 2014-07-07 17:45:16Z karl $
#
-# 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.
+# Copyright 1992-2019 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,20 +33,17 @@ 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!.*/!!'`
build_mode=${TEXI2DVI_BUILD_MODE:-local}
build_dir=${TEXI2DVI_BUILD_DIRECTORY:-.}
+orig_pwd=`pwd`
+
# 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.
action=compile
-batch=false # interact normally
-catcode_special=maybe
debug=false
escape="\\"
expand=false # true for expansion via makeinfo
@@ -68,13 +62,11 @@ 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
+# We need space, tab and newline, in precisely that order. And don't leave
# trailing blanks.
space=' '
tab=' '
@@ -82,70 +74,176 @@ 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 -- except for Cygwin et al., where COMSPEC
+# directories in TEXINPUTS -- except for Cygwin and Msys, where COMSPEC
# might be inherited, but : is used.
+
+# In the case of Msys, uname returns a value derived from MSYSTEM, as
+# MSYSTEM is user configurable, it is not so safe to use it to detect
+# Msys. It is safer to use OSTYPE, this is why we set MSYSTEM to
+# $OSTYPE before calling uname
if test -n "$COMSPEC$ComSpec" \
- && uname | $EGREP -iv 'cygwin|mingw|djgpp' >/dev/null; then
+ && MSYSTEM=$OSTYPE uname | $EGREP -iv 'cygwin|msys' >/dev/null; then
path_sep=";"
else
path_sep=":"
fi
+
# Pacify verbose cds.
CDPATH=${ZSH_VERSION+.}$path_sep
-# If $TEX is set to a directory, don't use it.
-test -n "$TEX" && test -d "$TEX" && unset TEX
-#
-## --------------------- ##
-## 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
+# Now we define numerous functions, with no other executable code.
+# The main program is at the end of the file.
+
+
+# Standard help and version functions.
#
-# local foo="$bar"
-(
- foo=bar
- test_local () {
- local foo=foo
- }
- test_local >/dev/null 2>&1
- test $foo = bar
-) || eval '
-local () {
+# usage - display usage and exit successfully.
+usage ()
+{
+ cat <<EOF
+Usage: $program [OPTION]... FILE...
+ or: texi2pdf [OPTION]... FILE...
+ or: pdftexi2dvi [OPTION]... FILE...
+
+Run each Texinfo or (La)TeX 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 ((La)TeX or Texinfo). To process
+(e)plain TeX files, set the environment variable LATEX=tex.
+
+When invoked as \`texi2pdf' or given the option --pdf generate PDF output.
+Otherwise, generate DVI.
+
+General options:
+ -D, --debug turn on shell debugging (set -x)
+ -h, --help display this help and exit successfully
+ -o, --output=OFILE leave output in OFILE; only one input FILE is allowed
+ -q, --quiet no output unless errors
+ -v, --version display version information and exit successfully
+ -V, --verbose report on what is done
+ --max-iterations=N don't process files more than N times [$max_iters]
+ --mostly-clean remove auxiliary files or directories from
+ previous runs (but not the output)
+
+Output format:
+ --dvi output a DVI file [default]
+ --dvipdf output a PDF file via DVI (using a dvi-to-pdf program)
+ --html output an HTML file from LaTeX, using HeVeA
+ --info output an Info file from LaTeX, using HeVeA
+ -p, --pdf use pdftex or pdflatex for processing
+ --ps output a PostScript file via DVI (using dvips)
+ --text output a plain text file from LaTeX, using HeVeA
+
+TeX tuning:
+ -E, --expand macro expansion using makeinfo
+ -I DIR search DIR for Texinfo files
+ -l, --language=LANG specify LANG for FILE, either latex or texinfo
+ --no-line-error do not pass --file-line-error to TeX
+ --shell-escape pass --shell-escape to TeX
+ --src-specials pass --src-specials to TeX
+ --translate-file=FILE use given charset translation file for TeX
+ -t, --command=CMD insert CMD in copy of input file
+
+Build modes:
+ --build=MODE specify the treatment of auxiliary files [$build_mode]
+ --tidy same as --build=tidy
+ -c, --clean same as --build=clean
+ --build-dir=DIR specify where the tidy compilation is performed;
+ implies --tidy;
+ defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir]
+
+The MODE specifies where the TeX compilation takes place, and, as a
+consequence, how auxiliary files are treated. The build mode can also
+be set using the environment variable TEXI2DVI_BUILD_MODE.
+
+Valid values of MODE are:
+ \`local' compile in the current directory, leaving all the auxiliary
+ files around. This is the traditional TeX use.
+ \`tidy' compile in a local *.t2d directory, where the auxiliary files
+ are left. Output files are copied back to the original file.
+ \`clean' same as \`tidy', but remove the auxiliary directory afterwards.
+ Every compilation therefore requires the full cycle.
+
+The values of these environment variables are used to run the
+corresponding commands, if they are set:
+
+ BIBER BIBTEX DVIPDF DVIPS EGREP HEVEA LATEX MAKEINDEX MAKEINFO
+ PDFLATEX PDFTEX SED T4HT TEX TEX4HT TEXINDEX TEXINDY THUMBPDF_CMD
+
+Regarding --dvipdf, if DVIPDF is not set in the environment, the
+following programs are looked for (in this order): dvipdfmx dvipdfm
+dvipdf dvi2pdf dvitopdf.
+
+If Texinfo is installed on your site, then the command
+
+ info texi2dvi
+
+should give you access to more documentation.
+
+Report bugs to bug-texinfo@gnu.org,
+general questions and discussion to help-texinfo@gnu.org.
+GNU Texinfo home page: <http://www.gnu.org/software/texinfo/>
+General help using GNU software: <http://www.gnu.org/gethelp/>
+EOF
+ exit 0
+}
+
+
+# version - Display version info and exit successfully.
+version ()
+{
+ cat <<EOF
+texi2dvi (GNU Texinfo 6.7)
+
+Copyright (C) 2019 Free Software Foundation, Inc.
+License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
+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
+}
+
+
+# Generic auxiliary functions.
+
+# Used to access files and directories after we have changed directory
+# (for --tidy).
+rel=
+
+# Change directory, updating some relative paths.
+cd_dir ()
+{
+ cd "$1"
+
+ # Check if argument or input file is absolute, and if so, make all the path
+ # variables absolute.
+ use_absolute=false
case $1 in
- *=*) eval "$1";;
+ [\\/]* | ?:[\\/]*) # absolute path
+ use_absolute=true ;;
+ esac
+ case $in_input in
+ [\\/]* | ?:[\\/]*)
+ use_absolute=true ;;
esac
-}
-'
+ if $use_absolute ; then
+ for cdd_dir in work_build workdir t2ddir work_bak in_input in_dir; do
+ eval "$cdd_dir=\`absolute \$$cdd_dir\`"
+ done
+ return
+ fi
+
+ # Replace each path component with ".." and add a single trailing slash.
+ rel=`echo "$1" | \$SED -e 's/[^/\\][^/\\]*/../g' -e 's/[/\\]*$/\//'`
+}
-# cd_orig
-# -------
-# Return to the original directory.
+# cd_orig - Return to the original directory.
cd_orig ()
{
# In case $orig_pwd is on a different drive (for DOS).
@@ -155,11 +253,12 @@ cd_orig ()
# - the next file is processed in correct conditions
# - the temporary file can be removed
cd "$orig_pwd" || exit 1
+
+ rel=
}
-# func_dirname FILE
-# -----------------
-# Return the directory part of FILE.
+
+# func_dirname FILE - Return the directory part of FILE.
func_dirname ()
{
dirname "$1" 2>/dev/null \
@@ -167,18 +266,15 @@ func_dirname ()
}
-# noexit FILE
-# -----------
-# Return FILE with one extension remove. foo.bar.baz -> foo.bar.
+# noext FILE - Return FILE with one extension removed:
+# foo.bar.baz -> foo.bar
noext ()
{
echo "$1" | $SED -e 's/\.[^/.][^/.]*$//'
}
-# absolute NAME -> ABS-NAME
-# -------------------------
-# Return an absolute path to NAME.
+# absolute NAME - Return an absolute path to NAME.
absolute ()
{
case $1 in
@@ -186,26 +282,21 @@ absolute ()
# 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")
+ *) absolute_slashes=`echo "$1" | $SED -n 's,.*[^/]\(/*\)$,\1,p'`
+ absolute_rel=$orig_pwd/`func_dirname "$1"`
+ if test -d "$absolute_rel"; then
+ (cd "$absolute_rel" 2>/dev/null \
+ && absolute_name=`pwd`/`basename "$1"`"$absolute_slashes"
+ echo "$absolute_name")
else
- error 1 "not a directory: $rel"
+ error 1 "not a directory: $absolute_rel"
fi
;;
esac
}
-# ensure_dir DIR1 DIR2...
-# -----------------------
-# Make sure the directories exist.
+# ensure_dir DIR1 DIR2... - Make sure given directories exist.
ensure_dir ()
{
for dir
@@ -221,26 +312,23 @@ ensure_dir ()
}
-# error EXIT_STATUS LINE1 LINE2...
-# --------------------------------
-# Report an error and exit with failure if EXIT_STATUS is non-null.
+# error EXIT_STATUS LINE1 LINE2... - Report an error and exit with
+# failure if EXIT_STATUS is non-null.
error ()
{
- local s="$1"
+ error_status="$1"
shift
report "$@"
- if test "$s" != 0; then
- exit $s
+ if test "$error_status" != 0; then
+ exit $error_status
fi
}
-# findprog PROG
-# -------------
-# Return true if PROG is somewhere in PATH, else false.
+# findprog PROG - Return true if PROG is somewhere in PATH, else false.
findprog ()
{
- local saveIFS="$IFS"
+ saveIFS="$IFS"
IFS=$path_sep # break path components at the path separator
for dir in $PATH; do
IFS=$saveIFS
@@ -261,9 +349,7 @@ findprog ()
return 1
}
-# report LINE1 LINE2...
-# ---------------------
-# Report some information on stderr.
+# report LINE1 LINE2... - Echo each argument to stderr.
report ()
{
for i in "$@"
@@ -273,9 +359,7 @@ report ()
}
-# run COMMAND-LINE
-# ----------------
-# Run the COMMAND-LINE verbosely, and catching errors as failures.
+# run COMMAND-LINE - Run COMMAND-LINE verbosely, catching errors as failures.
run ()
{
verbose "Running $@"
@@ -284,135 +368,7 @@ run ()
}
-# 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 <<EOF
-Usage: $program [OPTION]... FILE...
- or: texi2pdf [OPTION]... FILE...
- or: pdftexi2dvi [OPTION]... FILE...
-
-Run each Texinfo or (La)TeX 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 ((La)TeX or Texinfo). To process
-(e)plain TeX files, set the environment variable LATEX=tex.
-
-In order to make texi2dvi a drop-in replacement of TeX/LaTeX in AUC-TeX,
-the FILE may also be composed of the following simple TeX commands.
- \`\\input{FILE}' the actual file to compile
- \`\\nonstopmode' same as --batch
-
-When invoked as \`texi2pdf' or \`pdftexi2dvi', or given the option --pdf
-or --dvipdf, generate PDF output. Otherwise, generate DVI.
-
-General options:
- -b, --batch no interaction
- -D, --debug turn on shell debugging (set -x)
- -h, --help display this help and exit successfully
- -o, --output=OFILE leave output in OFILE; only one input FILE is allowed
- -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
-
-Output format:
- --dvi output a DVI file [default]
- --dvipdf output a PDF file via DVI (using a dvi-to-pdf program)
- --html output an HTML file from LaTeX, using HeVeA
- --info output an Info file from LaTeX, using HeVeA
- -p, --pdf use pdftex or pdflatex for processing
- --ps output a PostScript file via DVI (using dvips)
- --text output a plain text file from LaTeX, using HeVeA
-
-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 LANG for FILE, either latex or texinfo
- --no-line-error do not pass --file-line-error to TeX
- --shell-escape pass --shell-escape to TeX
- --src-specials pass --src-specials to TeX
- -t, --command=CMD insert CMD in copy of input file
- or --texinfo=CMD multiple values accumulate
- --translate-file=FILE use given charset translation file for TeX
-
-Build modes:
- --build=MODE specify the treatment of auxiliary files [$build_mode]
- --tidy same as --build=tidy
- -c, --clean same as --build=clean
- --build-dir=DIR specify where the tidy compilation is performed;
- implies --tidy;
- defaults to TEXI2DVI_BUILD_DIRECTORY [$build_dir]
- --mostly-clean remove the auxiliary files and directories
- but not the output
- --max-iterations=N don't process files more than N times [$max_iters]
-
-The MODE specifies where the TeX compilation takes place, and, as a
-consequence, how auxiliary files are treated. The build mode
-can also be set using the environment variable TEXI2DVI_BUILD_MODE.
-
-Valid MODEs are:
- \`local' compile in the current directory, leaving all the auxiliary
- files around. This is the traditional TeX use.
- \`tidy' compile in a local *.t2d directory, where the auxiliary files
- are left. Output files are copied back to the original file.
- \`clean' same as \`tidy', but remove the auxiliary directory afterwards.
- Every compilation therefore requires the full cycle.
-
-Using the \`tidy' mode brings several advantages:
- - the current directory is not cluttered with plethora of temporary files.
- - clutter can be even further reduced using --build-dir=dir: all the *.t2d
- directories are stored there.
- - clutter can be reduced to zero using, e.g., --build-dir=/tmp/\$USER.t2d
- or --build-dir=\$HOME/.t2d.
- - the output file is updated after every successful TeX run, for
- sake of concurrent visualization of the output. In a \`local' build
- the viewer stops during the whole TeX run.
- - if the compilation fails, the previous state of the output file
- is preserved.
- - PDF and DVI compilation are kept in separate subdirectories
- preventing any possibility of auxiliary file incompatibility.
-
-On the other hand, because \`tidy' compilation takes place in another
-directory, occasionally TeX won't be able to find some files (e.g., when
-using \\graphicspath): in that case, use -I to specify the additional
-directories to consider.
-
-The values of the BIBER, BIBTEX, DVIPDF, DVIPS, HEVEA, LATEX, MAKEINDEX,
-MAKEINFO, PDFLATEX, PDFTEX, SED, T4HT, TEX, TEX4HT, TEXINDEX, and THUMBPDF_CMD
-environment variables are used to run those commands, if they are set.
-
-Regarding --dvipdf, if DVIPDF is not set in the environment, the
-following programs are looked for (in this order): dvipdfmx dvipdfm
-dvipdf dvi2pdf dvitopdf.
-
-Any CMD strings are added after @setfilename for Texinfo input, or in
-the first line for LaTeX input.
-
-Report bugs to bug-texinfo@gnu.org,
-general questions and discussion to help-texinfo@gnu.org.
-GNU Texinfo home page: <http://www.gnu.org/software/texinfo/>
-General help using GNU software: <http://www.gnu.org/gethelp/>
-EOF
- exit 0
-}
-
-
-# verbose WORD1 WORD2
-# -------------------
-# Report some verbose information.
+# verbose WORD1 WORD2... - Echo concatenated WORDs to stderr, if $verb.
verbose ()
{
if $verb; then
@@ -421,69 +377,45 @@ verbose ()
}
-# version
-# -------
-# Display version info and exit successfully.
-version ()
-{
- cat <<EOF
-texi2dvi (GNU Texinfo 5.2) $rcs_version
-
-Copyright (C) 2014 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-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.
+# Handling lists.
+#
+# list_append LIST-NAME ELEM - Append ELEM to (the contents of) LIST-NAME.
list_append ()
{
- local la_l="$1"
+ list_name="$1"
shift
- eval set X \$$la_l "$@"
+ eval set X \$$list_name "$@"
shift
- eval $la_l=\""$@"\"
+ eval $list_name=\""$@"\"
}
-# 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 LIST-NAME DIR-LIST - Append to LIST-NAME all the
+# components (including empty ones) from the $path_sep-separated list
+# DIR-LIST. Make the paths absolute.
list_concat_dirs ()
{
- local lcd_list="$1"
+ 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'"
+ lcd_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${path_sep}/g'"
save_IFS=$IFS
IFS=$path_sep
- set x `echo "$2" | eval $SED $replace_EMPTY`; shift
+ set x `echo "$2" | eval $SED $lcd_replace_EMPTY`; shift
IFS=$save_IFS
- local dir
- for dir
+ for lcd_dir
do
- case $dir in
+ case $lcd_dir in
EMPTY)
list_append $lcd_list ""
;;
*)
- if test -d $dir; then
- dir=`absolute "$dir"`
- list_append $lcd_list "$dir"
+ if test -d $lcd_dir; then
+ dir=`absolute "$lcd_dir"`
+ list_append $lcd_list "$lcd_dir"
fi
;;
esac
@@ -491,64 +423,54 @@ list_concat_dirs ()
}
-# list_prefix LIST-NAME SEP -> STRING
-# -----------------------------------
-# Return a string that is composed of the LIST-NAME with each item
-# preceded by SEP.
+# list_prefix LIST-NAME SEP -> STRING - Return string with each element
+# of LIST-NAME preceded by SEP.
list_prefix ()
{
- local lp_p="$2"
+ lp_separator="$2"
eval set X \$$1
shift
- local lp_res
+ lp_result=''
for i
do
- lp_res="$lp_res \"$lp_p\" \"$i\""
+ lp_result="$lp_result \"$lp_separator\" \"$i\""
done
- echo "$lp_res"
+ echo "$lp_result"
}
-# list_infix LIST-NAME SEP -> STRING
-# ----------------------------------
-# Same as list_prefix, but a separator.
+# list_infix LIST-NAME SEP -> STRING - Same as list_prefix, but a separator.
list_infix ()
{
eval set X \$$1
shift
- local la_IFS="$IFS"
+ save_IFS="$IFS"
IFS=$path_sep
echo "$*"
- IFS=$la_IFS
+ IFS=$save_IFS
}
-# list_dir_to_abs LIST-NAME
-# -------------------------
-# Convert the list to using only absolute dir names.
+# list_dir_to_abs LIST-NAME - Convert 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
+ ldta_list="$1"
+ eval set X \$$ldta_list
shift
- local ld_res
+ ldta_result=''
for dir
do
dir=`absolute "$dir"`
test -d "$dir" || continue
- ld_res="$ld_res \"$dir\""
+ ldta_result="$ldata_result \"$dir\""
done
- set X $ld_res; shift
- eval $ld_l=\"$@\"
+ set X $ldta_result; shift
+ eval $ldta_list=\"$@\"
}
-## ------------------------------ ##
-## Language auxiliary functions. ##
-## ------------------------------ ##
-
-
-# out_lang_set LANG
-# -----------------
+# Language auxiliary functions.
+#
+# out_lang_set LANG - set $out_lang to LANG (dvi, pdf, etc.), or error.
out_lang_set ()
{
case $1 in
@@ -557,10 +479,7 @@ out_lang_set ()
esac
}
-
-# out_lang_tex
-# ------------
-# Return the tex output language (DVI or PDF) for $OUT_LANG.
+# out_lang_tex - Return the tex output language (DVI or PDF) for $out_lang.
out_lang_tex ()
{
case $out_lang in
@@ -571,10 +490,7 @@ out_lang_tex ()
esac
}
-
-# out_lang_ext
-# ------------
-# Return the extension for $OUT_LANG.
+# out_lang_ext - Return the extension for $out_lang (pdf, dvi, etc.).
out_lang_ext ()
{
case $out_lang in
@@ -585,83 +501,64 @@ out_lang_ext ()
}
-## ------------------------- ##
-## 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 ".".
+# TeX file auxiliary functions.
+#
+# absolute_filenames TEX-PATH -> TEX-PATH - Convert relative paths to
+# absolute, so we can run in another directory (e.g., in tidy build
+# mode, or during the macro-support detection).
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`
+ af_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${path_sep}/g'"
+ af_result=`echo "$1" | eval $SED $af_replace_empty`
save_IFS=$IFS
IFS=$path_sep
- set x $res; shift
- res=.
+ set x $af_result; shift
+ af_result=
+ af_path_sep=
for dir
do
case $dir in
EMPTY)
- res=$res$path_sep
+ af_result=$af_result$af_path_sep
;;
*)
if test -d "$dir"; then
- res=$res$path_sep`absolute "$dir"`
+ af_result=$af_result$af_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
+ af_result=$af_result$af_path_sep$dir
fi
;;
esac
+ af_path_sep=$path_sep
done
- echo "$res"
+ echo "$af_result"
}
-# output_base_name FILE
-# ---------------------
-# The name of FILE, possibly renamed to satisfy --output.
-# FILE is local, there is no directory part.
+# output_base_name FILE - Return the name of FILE, possibly renamed to
+# satisfy --output. FILE is local, i.e., without any 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"
+ *) obn_out_noext=`noext "$oname"`
+ obn_file_ext=`echo "$1" | $SED 's/^.*\.//'`
+ echo "$obn_out_noext.$obn_file_ext"
;;
esac
}
-# destdir
-# -------
-# Return the name of the directory where the output is expected.
+# destdir - Return the directory where the output is expected.
destdir ()
{
case $oname in
@@ -671,15 +568,13 @@ destdir ()
}
-# 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.)
+# move_to_dest FILE... - Move FILE(s) to the place where the user expects.
+# 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.
+# 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"
@@ -690,23 +585,17 @@ move_to_dest ()
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"`;;
+ true:) mtd_destdir=$orig_pwd
+ mtd_destfile=$mtd_destdir/$file;;
+ true:*) mtd_destfile=`output_base_name "$file"`
+ mtd_destdir=`dirname "$mtd_destfile"`;;
+ false:*) mtd_destfile=$oname
+ mtd_destdir=`dirname "$mtd_destfile"`;;
esac
# We want to compare the source location and the output location,
@@ -716,45 +605,39 @@ move_to_dest ()
# 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"
+ mtd_destdir=`cd "$mtd_destdir" && pwd`
+ mtd_destbase=`basename "$mtd_destfile"`
+
+ mtd_sourcedir=`dirname "$file"`
+ mtd_sourcedir=`cd "$mtd_sourcedir" && pwd`
+ mtd_sourcebase=`basename "$file"`
+
+ if test "$mtd_sourcedir/$mtd_sourcebase" != "$mtd_destdir/$mtd_destbase"
+ then
+ verbose "Moving $file to $mtd_destfile"
+ rm -f "$mtd_destfile"
+ mv "$file" "$mtd_destfile"
fi
done
}
-## --------------------- ##
-## Managing xref files. ##
-## --------------------- ##
-
-# aux_file_p FILE
-# ---------------
-# Return with success if FILE is an aux file.
+# Managing xref files.
+#
+# aux_file_p FILE - Echo FILE if FILE is an aux file.
aux_file_p ()
{
- test -f "$1" || return 1
+ test -f "$1" || return 0
case $1 in
- *.aux) return 0;;
- *) return 1;;
+ *.aux) echo "$1";;
+ *) return 0;;
esac
}
-# bibaux_file_p FILE
-# ------------------
-# Return with success if FILE is an aux file containing citation
-# requests.
+# bibaux_file_p FILE - Echo FILE if FILE contains citation requests.
bibaux_file_p ()
{
- test -s "$1" || return 1
+ test -s "$1" || return 0
if (grep '^\\bibstyle[{]' "$1" \
&& grep '^\\bibdata[{]' "$1" \
## The following line is suspicious: fails when there
@@ -763,17 +646,15 @@ bibaux_file_p ()
## && grep '^\\citation[{]' "$f"
) >&6 2>&1;
then
- return 0
+ echo "$1"
fi
- return 1
+ return 0
}
-# index_file_p FILE
-# -----------------
-# Return with success if FILE is an index file.
+# index_file_p FILE - Echo FILE if FILE is an index file.
index_file_p ()
{
- test -f "$1" || return 1
+ test -f "$1" || return 0
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
@@ -781,20 +662,21 @@ index_file_p ()
# 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;;
+ latex:tex4ht:html:"\\beforeentry {"*) echo $1;;
# When index.sty is used, there is a space before the brace.
- latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) return 0;;
-
- texinfo:*:*:"\\entry{"*) return 0;;
+ latex:*:*:"\\indexentry{"*|latex:*:*:"\\indexentry {"*) echo $1;;
- *) return 1;;
+ texinfo:*:*:"\\entry{"*) echo $1;;
+ texinfo:*:*:"@entry{"*) echo $1;;
+ # @entry is output from newer versions of texinfo.tex
esac
+ return 0
}
-# xref_file_p FILE
-# ----------------
-# Return with success if FILE is an xref file (indexes, tables and lists).
+########### not used currently
+# xref_file_p FILE - Return success if FILE is an xref file (indexes,
+# tables and lists).
xref_file_p ()
{
test -f "$1" || return 1
@@ -810,67 +692,52 @@ xref_file_p ()
}
-# generated_files_get FILENAME-NOEXT [PREDICATE-FILTER]
-# -----------------------------------------------------
-# Return the list of files generated by the TeX compilation of FILENAME-NOEXT.
-generated_files_get ()
+# Used in generated_files_get
+generated_files_get_from_log ()
{
- local filter=true
- if test -n "$2"; then
- filter=$2
+ if test -f "$1.log"; then
+ # Usually the output is like: \openout1 = `foobar.tex'.
+ # (including the final period)
+ # but luatex outputs: \openout1 = foobar.tex
+ # (no quotes, no period).
+ # So we have to make the punctuation optional.
+ grep '^\\openout[0-9]' "$1.log" \
+ | $SED -e "s/\\\\openout[^=]*= *[\`']*//" \
+ -e "s/'\.$//"
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
+# Used in generated_files_get
+generated_files_get_from_fls ()
+{
+ if test -f "$1.fls"; then
+ grep '^OUTPUT ' "$1.fls" | cut -b 8- \
+ | grep -v '\.dvi$' | grep -v '\.log$' | grep -v '\.pdf$' || true
+ fi
+}
+
+# generated_files_get - Output the list of files generated by the TeX
+# compilation.
+generated_files_get ()
+{
+ $generated_files_get_method "$in_noext"
+ if test $generated_files_get_method = generated_files_get_from_fls; then
+ if test -r "$in_noext.fl"; then
+ report 'WARNING!! The fl index may typeset as garbage!' # goes to stderr
+ report 'Try upgrading your version of texinfo.tex, or else try setting'
+ report 'the environment variable TEXI2DVI_USE_RECORDER to '\''no'\''.'
+report 'Once you'\''ve done that, delete the file with an '\''fl'\'' extension.'
fi
- done |
- sort |
- # Some files are opened several times, e.g., listings.sty's *.vrb.
- uniq
+ fi
}
-# xref_files_save
-# ---------------
-# Save the xref files.
+# xref_files_save - set xref_files_orig from xref_files_new, and save xref
+# files in $work_bak.
xref_files_save ()
{
# Save copies of auxiliary files for later comparison.
- xref_files_orig=`generated_files_get "$in_noext" xref_file_p`
+ xref_files_orig=$xref_files_new
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"'
@@ -880,14 +747,24 @@ xref_files_save ()
# 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 -)
+ tar cf - $xref_files_orig | (cd "$rel$work_bak" && tar xf -)
+ fi
+
+ # Remove auxiliary files in same directory as main input file. Otherwise,
+ # these will likely be read instead of those in the build dir.
+ if $tidy ; then
+ secondary_xref_files=`sorted_index_files`
+ for f in $xref_files_new $secondary_xref_files ; do
+ if test -f "$rel$in_dir/$f" ; then
+ remove $rel$in_dir/$f
+ fi
+ done
fi
}
-# xref_files_changed
-# ------------------
-# Whether the xref files were changed since the previous run.
+# xref_files_changed - Return success if the xref files have changed
+# since the previous run.
xref_files_changed ()
{
# LaTeX (and the package changebar) report in the LOG file if it
@@ -898,14 +775,14 @@ xref_files_changed ()
if grep "Rerun to get" "$in_noext.log" >&6 2>&1; then
return 0
fi
- # biblatex report of whether rerunning is needed.
+ # Similarly, check for 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`
+ xref_files_new=`generated_files_get`
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
@@ -916,31 +793,32 @@ xref_files_changed ()
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
+ if cmp -s "$this_file" "$rel$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"
+ diff -u "$rel$work_bak/$this_file" "$this_file"
fi
return 0
fi
done
+ secondary_xref_files=`sorted_index_files`
+ verbose "Secondary xref files = $secondary_xref_files"
+ for this_file in $secondary_xref_files; do
+ if test -f $this_file; then :; else
+ verbose "$this_file missing ..."
+ 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 ()
+# Running the TeX suite.
+#
+# Set tex_cmd variable, for running TeX.
+make_tex_cmd ()
{
case $in_lang:$latex2html:`out_lang_tex` in
latex:*:dvi|latex:tex4ht:html)
@@ -955,18 +833,9 @@ run_tex ()
*) 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
@@ -981,7 +850,7 @@ run_tex ()
esac
# Note that this will be used via an eval: quote properly.
- local cmd="$tex"
+ tex_cmd="$tex"
# If possible, make TeX report error locations in GNU format.
if $line_error; then
@@ -995,98 +864,90 @@ run_tex ()
# 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";;
+ *file-line-error*) tex_cmd="$tex_cmd --file-line-error";;
esac
fi
+ # Tell TeX about -recorder option, if specified
+ # recorder_option_maybe is in { " -recorder", "" }
+ tex_cmd="$tex_cmd$recorder_option_maybe"
+
+
# Tell TeX about TCX file, if specified.
- test -n "$translate_file" && cmd="$cmd --translate-file=$translate_file"
+ test -n "$translate_file" \
+ && tex_cmd="$tex_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"
+ test -n "$src_specials" && tex_cmd="$tex_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 </dev/null '${escape}nonstopmode'"
- fi
+ test -n "$shell_escape" && tex_cmd="$tex_cmd $shell_escape"
- # we'd like to handle arbitrary input file names, especially
- # foo~bar/a~b.tex, since Debian likes ~ characters.
- if $catcode_special; then
- # $normaltilde is just to reduce line length in this source file.
- # The idea is to define \normaltilde as a catcode other ~ character,
- # then make the active ~ be equivalent to that, instead of the plain
- # TeX tie. Then when the active ~ appears in the filename, it will
- # be expanded to itself, as far as \input will see. (This is the
- # same thing that texinfo.tex does in general, BTW.)
- normaltilde="${escape}catcode126=12 ${escape}def${escape}normaltilde{~}"
- cmd="$cmd '$normaltilde${escape}catcode126=13 ${escape}let~\normaltilde '"
- fi
- # Other special (non-active) characters could be supported by
- # resetting their catcodes to other on the command line and changing
- # texinfo.tex to initialize everything to plain catcodes. Maybe someday.
-
- # append the \input command.
- cmd="$cmd '${escape}input'"
-
- # TeX's \input does not (easily or reliably) support whitespace
- # characters or other special characters in file names. Our intensive
- # use of absolute file names makes this worse: the enclosing directory
- # names may include white spaces. Improve the situation using a
- # symbolic link to the filename in the current directory, in tidy mode
- # only. Do not alter in_input.
- #
- # The filename is almost always tokenized using plain TeX conventions
- # (the exception would be if the user made a texinfo.fmt file). Not
- # all the plain TeX special characters cause trouble, but there's no
- # harm in making the link.
- #
- case $tidy:`func_dirname "$in_input"` in
- true:*["$space$tab$newline\"#\$%\\^_{}~"]*)
- _run_tex_file_name=`basename "$in_input"`
- if test ! -f "$_run_tex_file_name"; then
- # It might not be a file, clear it.
- run rm -f "$_run_tex_file_name"
- run ln -s "$in_input"
- fi
- cmd="$cmd '$_run_tex_file_name'"
- ;;
+ # Run without interaction.
+ # \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.
+ tex_cmd="$tex_cmd </dev/null '${escape}nonstopmode'"
+}
- *)
- cmd="$cmd '$in_input'"
- ;;
- esac
- verbose "$0: Running $cmd ..."
- if eval "$cmd" >&5; then
+# run_tex - Run TeX, taking care of errors and logs.
+run_tex ()
+{
+ # Check for any unusual characters in the filename.
+ # However, >, \ and any whitespace characters are not supported
+ # filenames.
+ in_input_funnies=`echo "$in_input" \
+ | $SED -e 's![^}#$%&^_{~]!!g' -e 's!\(.\)!\1\''
+!g' | uniq`
+
+ if test -n "$in_input_funnies" ; then
+ # Make > an end group character, as it's unlikely to appear in
+ # a filename.
+ tex_cmd="$tex_cmd '${escape}bgroup${escape}catcode62=2${escape}relax'"
+
+ # If the filename has funny characters, change the TeX category codes of
+ # some characters within a group, and use \expandafter to input the file
+ # outside of the group.
+ for w in $in_input_funnies ; do
+ tex_cmd="$tex_cmd '${escape}catcode\`${escape}$w=12${escape}relax'"
+ done
+
+ # Set \toks0 to "\input FILENAME\relax"
+ tex_cmd="$tex_cmd '${escape}toks0${escape}bgroup${escape}input' '$rel$in_input' '${escape}relax>"
+
+ # Expand \toks0 after the end of the group
+ tex_cmd="$tex_cmd${escape}expandafter${escape}egroup"
+ tex_cmd="$tex_cmd${escape}the${escape}toks0${escape}relax'"
+ else
+ # In the case of a simple filename, just pass the filename
+ # with no funny tricks.
+ tex_cmd="$tex_cmd '${escape}input' '$rel$in_input'"
+ fi
+
+ verbose "$0: Running $tex_cmd ..."
+ if (eval "$tex_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."
+ tex_failed=true
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
+
+# run_bibtex - Run bibtex (or biber) on current file
+# - if its input (AUX) exists,
+# - or if some citations are missing (LOG contains `Citation'),
+# - or if 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),
+# 2. 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 ()
@@ -1109,7 +970,7 @@ run_bibtex ()
&& grep '^\\bibdata' "$in_noext.aux") ) \
>&6 2>&1; \
then
- bibtex_aux=`generated_files_get "$in_noext" bibaux_file_p`
+ bibtex_aux=`filter_files bibaux_file_p`
for f in $bibtex_aux; do
run $bibtex "$f"
done
@@ -1122,16 +983,31 @@ run_bibtex ()
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.
+
+# filter_file PREDICATE - Go through the list of files in xref_files_new
+# and use PREDICATE on each one to optionally print it or print other files
+# based on the filename.
+filter_files ()
+{
+ test -n "$xref_files_new" || return 0
+ echo "$xref_files_new" |
+ # Filter existing files matching the criterion.
+ #
+ while read file; do
+ $1 "$file"
+ done |
+ sort |
+ # Some files are opened several times, e.g., listings.sty's *.vrb.
+ uniq
+}
+
+# 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`
+ index_files=`filter_files index_file_p`
test -n "$index_files" \
|| return 0
@@ -1139,8 +1015,6 @@ run_index ()
: ${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
@@ -1168,16 +1042,14 @@ run_index ()
}
-# 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.
+# 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.
+# difficult to install the output files in a second step, we
+# tell t4ht to install the output files.
run_tex4ht ()
{
case $in_lang:$latex2html:`out_lang_tex` in
@@ -1191,8 +1063,7 @@ run_tex4ht ()
}
-# run_thumbpdf ()
-# ---------------
+# run_thumbpdf - Run thumbpdf.
run_thumbpdf ()
{
if test `out_lang_tex` = pdf \
@@ -1212,14 +1083,15 @@ run_thumbpdf ()
}
-# run_dvipdf FILE.dvi
-# -------------------
-# Convert FILE.dvi to FILE.pdf.
+# 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 test -n "$DVIPDF"; then
+ dvipdf=$DVIPDF # user envvar, use it without checking
+
+ elif test -z "$dvipdf"; then
+ for i in dvipdfmx dvipdfm dvipdf dvi2pdf dvitopdf; do
if findprog $i; then
dvipdf=$i
fi
@@ -1234,31 +1106,39 @@ run_dvipdf ()
fi
}
-# run_tex_suite ()
-# ----------------
-# Run the TeX tools until a fix point is reached.
+# run_tex_suite - Run the TeX tools until a stable point is reached.
run_tex_suite ()
{
+ make_tex_cmd
+
# Move to the working directory.
if $tidy; then
verbose "cd $work_build"
- cd "$work_build" || exit 1
+ cd_dir "$work_build" || exit 1
fi
# Count the number of cycles.
- local cycle=0
+ suite_cycle=0
+
+ # Start by checking the log files for what files were created last
+ # time. This will mean that if they don't change, we finish in 1 cycle.
+ xref_files_new=`generated_files_get`
+ xref_files_save
while :; do
- # check for probably LaTeX loop (e.g. varioref)
- if test $cycle -eq "$max_iters"; then
+ # check for (probably) LaTeX loop (e.g. varioref)
+ if test $suite_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"
+ suite_cycle=`expr $suite_cycle + 1`
+ verbose "Cycle $suite_cycle for $command_line_filename"
+ tex_failed=false
+ run_core_conversion
+ xref_files_changed || break
xref_files_save
# We run bibtex first, because it's more likely for the indexes
@@ -1266,11 +1146,13 @@ run_tex_suite ()
# would be rare.
run_bibtex
run_index
- run_core_conversion
-
- xref_files_changed || break
done
+ if $tex_failed ; then
+ # TeX failed, and the xref files did not change.
+ error 1 "$tex exited with bad status, quitting."
+ fi
+
# If we were using thumbpdf and producing PDF, then run thumbpdf
# and TeX one last time.
run_thumbpdf
@@ -1295,53 +1177,11 @@ run_tex_suite ()
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.
+# TeX processing auxiliary tools.
#
-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
+# 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 ()
@@ -1395,15 +1235,14 @@ to tex itself simply not working."
work_src=$workdir/src
ensure_dir "$work_src"
in_src=$work_src/$in_base
- local miincludes
- miincludes=`list_prefix includes -I`
+ run_mi_includes=`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 \
+ | eval $makeinfo --footnote-style=end -I "$in_dir" $run_mi_includes \
-o /dev/null --macro-expand=- \
| $SED "$uncomment_iftex" >"$in_src"
# Continue only if everything succeeded.
@@ -1416,9 +1255,62 @@ to tex itself simply not working."
fi
}
-# insert_commands ()
-# ------------------
-# Used most commonly for @finalout, @smallbook, etc.
+# Unfortunately, makeinfo --iftex --no-ifinfo doesn't work well enough
+# in versions before 5.0, as makeinfo can't parse the TeX commands
+# inside @tex blocks, so work around with sed.
+#
+# This sed script 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.
+# Similarly, preserve the @top node to avoid makeinfo complaining about
+# it being missed. Comment it out after preprocessing, so that it does
+# not appear in the generated document.
+#
+# We assume that `@c _texi2dvi' or `@c (_texi2dvi)' starting a line is
+# not present in the document. Additionally, conditionally defined
+# macros inside the @top node may end up with the wrong value, although
+# this is unlikely in practice.
+#
+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)/
+ /^@c (_texi2dvi)@node Top/,/^@c (_texi2dvi)@end ifnottex/ {
+ /^@c (_texi2dvi)@end ifnottex/b
+ 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/'
+
+# Uncomment @iftex blocks by removing any leading `@c texi2dvi' (repeated
+# copies can sneak in via macro invocations). Likewise, comment out
+# the @top node inside a @ifnottex block.
+uncomment_iftex=\
+'s/^@c _texi2dvi\(@c _texi2dvi\)*//
+/^@c (_texi2dvi)@ifnottex/,/^@c (_texi2dvi)@end ifnottex/{
+ s/^/@c (_texi2dvi)/
+}'
+
+
+# insert_commands - Insert $textra commands at the beginning of the file.
+# Recommended to be used for @finalout, @smallbook, etc.
insert_commands ()
{
if test -n "$textra"; then
@@ -1427,10 +1319,15 @@ insert_commands ()
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';;
+ texinfo)
+ textra_cmd='/^\\input texinfo/a'
+ # insert after @setfilename line if present
+ if head -n 10 $in_input | grep '^@setfilename' ; then
+ textra_cmd='/^@setfilename/a'
+ fi
+ ;;
*) error 1 "internal error, unknown language: $in_lang";;
esac
$SED "$textra_cmd\\
@@ -1453,10 +1350,9 @@ $textra" "$in_input" >"$in_xtr"
esac
}
-# compute_language FILENAME
-# -------------------------
-# Return the short string describing the language in which FILENAME
-# is written: `texinfo' or `latex'.
+
+# compute_language FILENAME - Return the short string for the language
+# in which FILENAME is written: `texinfo' or `latex'.
compute_language ()
{
# If the user explicitly specified the language, use that.
@@ -1477,9 +1373,7 @@ compute_language ()
}
-# run_hevea (MODE)
-# ----------------
-# Convert to HTML/INFO/TEXT.
+# 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
@@ -1490,27 +1384,27 @@ compute_language ()
# to handle images some day.
run_hevea ()
{
- local hevea="${HEVEA:-hevea}"
- local run_hevea="$hevea"
+ run_hevea_name="${HEVEA:-hevea}"
+ run_hevea_cmd="$run_hevea_name"
case $1 in
html) ;;
- text|info) run_hevea="$run_hevea -$1";;
- *) error 1 "run_hevea: invalid argument: $1";;
+ text|info) run_hevea_cmd="$run_hevea_cmd -$1";;
+ *) error 1 "run_hevea_cmd: 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'"
+ run_hevea_cmd="$run_hevea_cmd -fix -O -o '$out_base'"
+ run_hevea_cmd="$run_hevea_cmd `list_prefix includes -I` -I '$orig_pwd' "
+ run_hevea_cmd="$run_hevea_cmd '$rel$in_input'"
if $debug; then
- run_hevea="$run_hevea -v -v"
+ run_hevea_cmd="$run_hevea_cmd -v -v"
fi
- verbose "running $run_hevea"
- if eval "$run_hevea" >&5; then
+ verbose "running $run_hevea_cmd"
+ if eval "$run_hevea_cmd" >&5; then
# hevea leaves trailing white spaces, this is annoying.
case $1 in text|info)
perl -pi -e 's/[ \t]+$//g' "$out_base"*;;
@@ -1521,14 +1415,12 @@ run_hevea ()
move_to_dest "$out_base"*;;
esac
else
- error 1 "$hevea exited with bad status, quitting."
+ error 1 "$run_hevea_name exited with bad status, quitting."
fi
}
-# run_core_conversion ()
-# ----------------------
-# Run the TeX (or HeVeA).
+# run_core_conversion - Run TeX (or HeVeA).
run_core_conversion ()
{
case $in_lang:$latex2html:`out_lang_tex` in
@@ -1542,23 +1434,22 @@ run_core_conversion ()
}
-# compile ()
-# ----------
-# Run the full compilation chain, from pre-processing to installation
-# of the output at its expected location.
+# 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.
+ # Set include path for tools:
+ # . Include current directory in case there are files there already, so
+ # we don't have more TeX runs than necessary. orig_pwd is used in case
+ # we are in clean build mode, where we have cd'd to a temp directory.
+ # . Include directory containing file, in case there are other
+ # files @include'd.
+ # . Keep a final path_sep to get the default (system) TeX
+ # directories included.
+ # . If we have any includes, put those at the end.
+
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"
#
@@ -1566,7 +1457,7 @@ compile ()
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.
+ # detection).
val=`absolute_filenames "$val"`
eval $var="\"$val\""
export $var
@@ -1579,13 +1470,137 @@ compile ()
# --command, --texinfo
insert_commands
- # Run until a fix point is reached.
+ # Run until a fixed point is reached.
run_tex_suite
}
+# make_openout_test FLAGS EXTENSION
+# - Run TeX with an input file that performs an \openout. Pass FLAGS to TeX.
+#
+make_openout_test ()
+{
+ recorder_option_maybe="$1"
+ make_tex_cmd
+
+ ensure_dir "$workdir"/check_recorder
+ cd_dir "$workdir"/check_recorder
+
+ cat > openout.tex <<EOF
+\newwrite\ourwrite
+\immediate\openout\ourwrite dum.dum
+\bye
+EOF
+ # \bye doesn't work for LaTeX, but it will cause latex
+ # to exit with an input error.
+ tex_cmd="$tex_cmd '${escape}input' ./openout.tex"
+ # ./ in case . isn't in path
+ verbose "$0: running $tex_cmd ..."
+ rm -fr "openout.$2"
+ (eval "$tex_cmd" >/dev/null 2>&1)
+}
+
+# Check tex supports -recorder option
+check_recorder_support ()
+{
+ verbose "Checking TeX recorder support..."
+ make_openout_test " -recorder" fls
+ if test -f openout.fls && grep '^OUTPUT dum.dum$' openout.fls > /dev/null
+ then
+ cd_orig
+ verbose "Checking TeX recorder support... yes"
+ return 0
+ else
+ cd_orig
+ verbose "Checking TeX recorder support... no"
+ return 1
+ fi
+}
+
+# Check tex supports \openout traces in log
+check_openout_in_log_support ()
+{
+ verbose "Checking TeX \openout in log support..."
+ make_openout_test "" log
+ if test -f openout.log \
+ && grep '^\\openout..\? *= *`\?dum\.dum'\''\?' openout.log >/dev/null
+ then
+ cd_orig
+ verbose "Checking TeX \openout in log support... yes"
+ return 0
+ else
+ cd_orig
+ verbose "Checking TeX \openout in log support... no"
+ return 1
+ fi
+}
+
+# Set that output auxiliary files are detected with the -recorder option,
+# which creates a file JOBNAME.fls which is a machine-readable listing of
+# files read and written during the job.
+set_aux_files_from_fls ()
+{
+ recorder_option_maybe=" -recorder"
+ generated_files_get_method=generated_files_get_from_fls
+}
+
+# Set that output auxiliary files are detected with searching for \openout
+# in the log file.
+set_aux_files_from_log ()
+{
+ recorder_option_maybe=''
+ generated_files_get_method=generated_files_get_from_log
+}
+
+# Decide whether output auxiliary files are detected with the -recorder
+# option, or by searching for \openout in the log file.
+decide_aux_files_method ()
+{
+ # Select output file detection method
+ # Valid values of TEXI2DVI_USE_RECORDER are:
+ # yes use the -recorder option, no checks.
+ # no scan for \openout in the log file, no checks.
+ # yesmaybe check whether -recorder option is supported, and if yes
+ # use it, otherwise check for tracing \openout in the
+ # log file is supported, and if yes use it, else it is an
+ # error.
+ # nomaybe same as `yesmaybe', except that the \openout trace in
+ # log file is checked first.
+ #
+ # The default behaviour is `nomaybe'.
+
+ test -n "$TEXI2DVI_USE_RECORDER" || TEXI2DVI_USE_RECORDER=nomaybe
+
+ case $TEXI2DVI_USE_RECORDER in
+ yes) set_aux_files_from_fls;;
+
+ no) set_aux_files_from_log;;
+
+ yesmaybe)
+ if check_recorder_support; then
+ set_aux_files_from_fls
+ elif check_openout_in_log_support; then
+ set_aux_files_from_log
+ else
+ error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file"
+ fi
+ ;;
+
+ nomaybe)
+ if check_openout_in_log_support; then
+ set_aux_files_from_log
+ elif check_recorder_support; then
+ set_aux_files_from_fls
+ else
+ error 1 "TeX neither supports -recorder nor outputs \\openout lines in its log file"
+ fi
+ ;;
+
+ *) error 1 "Invalid value of TEXI2DVI_USE_RECORDER environment variable : $TEXI2DVI_USE_RECORDER.";;
-# remove FILES
-# ------------
+ esac
+}
+
+# remove FILE...
remove ()
{
verbose "Removing" "$@"
@@ -1593,42 +1608,154 @@ remove ()
}
-# mostly_clean
-# ------------
-# Remove auxiliary files and directories. Changes the current directory.
+# all_files - Echo the names of all files generated, including those by
+# auxiliary tools like texindex.
+all_files ()
+{
+ echo $in_noext.log
+ echo $in_noext.fls
+ echo $xref_files_new
+ echo `sorted_index_files`
+}
+
+sorted_index_files ()
+{
+ filter_files sorted_index_filter
+}
+
+# Print the name of a generated file based on FILE if there is one.
+sorted_index_filter ()
+{
+ case $in_lang in
+ texinfo)
+ # texindex: texinfo.cp -> texinfo.cps
+ if test -n "`index_file_p $1`" ; then
+ echo $1s
+ fi
+ ;;
+ esac
+}
+
+
+# Not currently used - use with filter_files to add secondary files created by
+# bibtex
+bibtex_secondary_files ()
+{
+ case $in_lang in
+ latex)
+ if test -n "`aux_file_p $1`"; then
+ # bibtex: *.aux -> *.bbl and *.blg.
+ echo $1 | $SED 's/^\(.*\)\.aux$/\1.bbl/'
+ echo $1 | $SED 's/^\(.*\)\.aux$/\1.blg/'
+ fi
+ ;;
+ esac
+}
+
+# mostly_clean - Remove auxiliary files and directories. Changes back to
+# the original 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"`
+ set X ${1+"$@"} `all_files`
shift
}
remove ${1+"$@"}
}
-# cleanup ()
-# ----------
-# Remove what should be removed according to options.
+# 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) ;;
+ case $clean:$tidy in
+ true:true) mostly_clean ;; # build mode is "clean"
+ false:false) cd_orig; remove "$t2ddir";; # build mode is "local"
esac
}
+# input_file_name_decode - Decode COMMAND_LINE_FILENAME, and set the
+# following shell variables:
+#
+# - COMMAND_LINE_FILENAME
+# The filename given on the commmand line, but cleaned of TeX commands.
+# - IN_DIR
+# The directory containing the input file.
+# - IN_BASE
+# The input file base name (no directory part).
+# - IN_NOEXT
+# The input file name with neither file extensions nor directory part.
+# - IN_INPUT
+# The path to the input file for passing as a command-line argument
+# to TeX. Defaults to COMMAND_LINE_FILENAME, but might change if the
+# input is preprocessed.
+input_file_name_decode ()
+{
+ 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" | 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.
+ test -r "$command_line_filename" \
+ || error 1 "cannot read $command_line_filename, skipping."
+
+ # Get the name of the current directory.
+ in_dir=`func_dirname "$command_line_filename"`
+
+ # Strip directory part but leave extension.
+ in_base=`basename "$command_line_filename"`
+ # Strip extension.
+ in_noext=`noext "$in_base"`
+
+ # 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
+
+
+ # Compute the output file name.
+ if test x"$oname" != x; then
+ out_name=$oname
+ else
+ 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"`
+}
+
+
+#
+#################### Main program starts ##########################
-## ---------------------- ##
-## Command line parsing. ##
-## ---------------------- ##
+# Initialize more variables.
+#
+# 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
# Push a token among the arguments that will be used to notice when we
# ended options/arguments parsing.
@@ -1640,10 +1767,7 @@ cleanup ()
arg_sep="$$--$$"
set dummy ${1+"$@"} "$arg_sep"; shift
-#
-# Parse command line arguments.
while test x"$1" != x"$arg_sep"; do
-
# Handle --option=value by splitting apart and putting back on argv.
case "$1" in
--*=*)
@@ -1656,9 +1780,8 @@ while test x"$1" != x"$arg_sep"; do
case "$1" in
-@ ) escape=@;;
- -~ ) catcode_special=false;;
- # Silently and without documentation accept -b and --b[atch] as synonyms.
- -b | --batch) batch=true;;
+ -~ ) verbose "Option -~ is obsolete: texi2dvi ignores it.";;
+ -b | --batch) ;; # Obsolete
--build) shift; build_mode=$1;;
--build-dir) shift; build_dir=$1; build_mode=tidy;;
-c | --clean) build_mode=clean;;
@@ -1681,7 +1804,7 @@ while test x"$1" != x"$arg_sep"; do
out_lang_set `echo "x$1" | $SED 's/^x--//'`;;
-p) out_lang_set pdf;;
- -q | -s | --quiet | --silent) quiet=true; batch=true;;
+ -q | -s | --quiet | --silent) quiet=true;;
--src-specials) src_specials=--src-specials;;
--shell-escape) shell_escape=--shell-escape;;
--tex4ht) latex2html=tex4ht;;
@@ -1733,9 +1856,15 @@ esac
# We can't do much without tex.
+# End up with the TEX and PDFTEX variables set to what we are going to use.
#
-if findprog ${TEX:-tex}; then :; else cat <<EOM
-You don't have a working TeX binary (${TEX:-tex}) installed anywhere in
+# If $TEX is set to a directory, don't use it.
+test -n "$TEX" && test -d "$TEX" && unset TEX
+
+# But otherwise, use $TEX if it is set.
+if test -z "$TEX"; then
+ if findprog tex; then :; else cat <<EOM >&2
+You don't have a working TeX binary (tex) installed anywhere in
your PATH, and texi2dvi cannot proceed without one. If you want to use
this script, you'll need to install TeX (if you don't have it) or change
your PATH or TEX environment variable (if you do). See the --help
@@ -1744,20 +1873,19 @@ output for more details.
For information about obtaining TeX, please see http://tug.org/texlive,
or do a web search for TeX and your operating system or distro.
EOM
- exit 1
-fi
-
+ exit 1
+ fi
-# We want to use etex (or pdftex) if they are available, and the user
-# didn't explicitly specify. We don't check for elatex and pdfelatex
-# because (as of 2003), the LaTeX team has asked that new distributions
-# use etex by default anyway.
-#
-# End up with the TEX and PDFTEX variables set to what we are going to use.
-if test -z "$TEX"; then
+ # We want to use etex (or pdftex) if they are available, and the user
+ # didn't explicitly specify. We don't check for elatex and pdfelatex
+ # because (as of 2003), the LaTeX team has asked that new distributions
+ # use etex by default anyway.
+ #
if findprog etex; then TEX=etex; else TEX=tex; fi
fi
-#
+
+# For many years, the pdftex binary has included the e-tex extensions,
+# but for those people with ancient TeX distributions ...
if test -z "$PDFTEX"; then
if findprog pdfetex; then PDFTEX=pdfetex; else PDFTEX=pdftex; fi
fi
@@ -1767,12 +1895,9 @@ fi
# 0 standard input
# 1 standard output (--verbose messages)
# 2 standard error
-# 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.)
-
# Main tools' output (TeX, etc.) that TeX users are used to seeing.
#
# If quiet, discard, else redirect to the message flow.
@@ -1797,87 +1922,8 @@ else
exec 6>/dev/null
fi
-#
-
-# 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" | 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.
- test -r "$command_line_filename" \
- || error 1 "cannot read $command_line_filename, skipping."
-
- # 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.
- in_base=`basename "$command_line_filename"`
- # Strip extension.
- in_noext=`noext "$in_base"`
-
- # 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
-
-
- # Compute the output file name.
- if test x"$oname" != x; then
- out_name=$oname
- else
- 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. ##
-## -------------- ##
+# Main program main loop - TeXify each file in turn.
for command_line_filename
do
verbose "Processing $command_line_filename ..."
@@ -1905,8 +1951,6 @@ do
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.
@@ -1927,6 +1971,9 @@ do
# Make those directories.
ensure_dir "$work_build" "$work_bak"
+ # Decide how to find auxiliary files created by TeX.
+ decide_aux_files_method
+
case $action in
compile)
# Compile the document.
@@ -1935,6 +1982,7 @@ do
;;
mostly-clean)
+ xref_files_new=`generated_files_get`
mostly_clean
;;
esac
@@ -1942,3 +1990,7 @@ done
verbose "done."
exit 0 # exit successfully, not however we ended the loop.
+# Local Variables:
+# sh-basic-offset: 2
+# sh-indentation: 2
+# End:
diff --git a/syntax.h b/syntax.h
index 9a9a2fa7..34f54964 100644
--- a/syntax.h
+++ b/syntax.h
@@ -1,6 +1,6 @@
/* syntax.h -- Syntax definitions for the shell */
-/* Copyright (C) 2000, 2001, 2005, 2008,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005, 2008, 2009-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
diff --git a/test.c b/test.c
index 4cb3343c..e2fd78b3 100644
--- a/test.c
+++ b/test.c
@@ -2,7 +2,7 @@
/* Modified to run with the GNU shell Apr 25, 1988 by bfox. */
-/* Copyright (C) 1987-2010 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -103,31 +103,31 @@ static int test_error_return;
#define test_exit(val) \
do { test_error_return = val; sh_longjmp (test_exit_buf, 1); } while (0)
-extern int sh_stat __P((const char *, struct stat *));
+extern int sh_stat PARAMS((const char *, struct stat *));
static int pos; /* The offset of the current argument in ARGV. */
static int argc; /* The number of arguments present in ARGV. */
static char **argv; /* The argument list. */
static int noeval;
-static void test_syntax_error __P((char *, char *)) __attribute__((__noreturn__));
-static void beyond __P((void)) __attribute__((__noreturn__));
-static void integer_expected_error __P((char *)) __attribute__((__noreturn__));
+static void test_syntax_error PARAMS((char *, char *)) __attribute__((__noreturn__));
+static void beyond PARAMS((void)) __attribute__((__noreturn__));
+static void integer_expected_error PARAMS((char *)) __attribute__((__noreturn__));
-static int unary_operator __P((void));
-static int binary_operator __P((void));
-static int two_arguments __P((void));
-static int three_arguments __P((void));
-static int posixtest __P((void));
+static int unary_operator PARAMS((void));
+static int binary_operator PARAMS((void));
+static int two_arguments PARAMS((void));
+static int three_arguments PARAMS((void));
+static int posixtest PARAMS((void));
-static int expr __P((void));
-static int term __P((void));
-static int and __P((void));
-static int or __P((void));
+static int expr PARAMS((void));
+static int term PARAMS((void));
+static int and PARAMS((void));
+static int or PARAMS((void));
-static int filecomp __P((char *, char *, int));
-static int arithcomp __P((char *, char *, int, int));
-static int patcomp __P((char *, char *, int));
+static int filecomp PARAMS((char *, char *, int));
+static int arithcomp PARAMS((char *, char *, int, int));
+static int patcomp PARAMS((char *, char *, int));
static void
test_syntax_error (format, arg)
@@ -273,14 +273,11 @@ term ()
if ((pos + 3 <= argc) && test_binop (argv[pos + 1]))
value = binary_operator ();
- /* Might be a switch type argument */
- else if (argv[pos][0] == '-' && argv[pos][1] && argv[pos][2] == '\0')
- {
- if (test_unop (argv[pos]))
- value = unary_operator ();
- else
- test_syntax_error (_("%s: unary operator expected"), argv[pos]);
- }
+ /* Might be a switch type argument -- make sure we have enough arguments for
+ the unary operator and argument */
+ else if ((pos + 2) <= argc && test_unop (argv[pos]))
+ value = unary_operator ();
+
else
{
value = argv[pos][0] != '\0';
@@ -344,10 +341,10 @@ arithcomp (s, t, op, flags)
if (flags & TEST_ARITHEXP)
{
- l = evalexp (s, 0, &expok);
+ l = evalexp (s, EXP_EXPANDED, &expok);
if (expok == 0)
return (FALSE); /* should probably longjmp here */
- r = evalexp (t, 0, &expok);
+ r = evalexp (t, EXP_EXPANDED, &expok);
if (expok == 0)
return (FALSE); /* ditto */
}
@@ -518,6 +515,7 @@ unary_test (op, arg)
{
intmax_t r;
struct stat stat_buf;
+ struct timespec mtime, atime;
SHELL_VAR *v;
switch (op[1])
@@ -544,8 +542,11 @@ unary_test (op, arg)
(gid_t) current_user.egid == (gid_t) stat_buf.st_gid);
case 'N':
- return (sh_stat (arg, &stat_buf) == 0 &&
- stat_buf.st_atime <= stat_buf.st_mtime);
+ if (sh_stat (arg, &stat_buf) < 0)
+ return (FALSE);
+ atime = get_stat_atime (&stat_buf);
+ mtime = get_stat_mtime (&stat_buf);
+ return (timespec_cmp (mtime, atime) > 0);
case 'f': /* File is a file? */
if (sh_stat (arg, &stat_buf) < 0)
@@ -626,13 +627,18 @@ unary_test (op, arg)
if (valid_array_reference (arg, 0))
{
char *t;
- int rtype, ret;
- t = array_value (arg, 0, 0, &rtype, (arrayind_t *)0);
+ int rtype, ret, flags;
+
+ /* Let's assume that this has already been expanded once. */
+ flags = assoc_expand_once ? AV_NOEXPAND : 0;
+ t = array_value (arg, 0, flags, &rtype, (arrayind_t *)0);
ret = t ? TRUE : FALSE;
if (rtype > 0) /* subscript is * or @ */
free (t);
return ret;
}
+ else if (legal_number (arg, &r)) /* -v n == is $n set? */
+ return ((r >= 0 && r <= number_of_args()) ? TRUE : FALSE);
v = find_variable (arg);
if (v && invisible_p (v) == 0 && array_p (v))
{
@@ -888,7 +894,12 @@ test_command (margc, margv)
value = posixtest ();
if (pos != argc)
- test_syntax_error (_("too many arguments"), (char *)NULL);
+ {
+ if (pos < argc && argv[pos][0] == '-')
+ test_syntax_error (_("syntax error: `%s' unexpected"), argv[pos]);
+ else
+ test_syntax_error (_("too many arguments"), (char *)NULL);
+ }
test_exit (SHELL_BOOLEAN (value));
}
diff --git a/test.h b/test.h
index 626edc43..ea3c33e9 100644
--- a/test.h
+++ b/test.h
@@ -1,6 +1,6 @@
/* test.h -- external interface to the conditional command code. */
-/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -28,12 +28,12 @@
#define TEST_ARITHEXP 0x02
#define TEST_LOCALE 0x04
-extern int test_unop __P((char *));
-extern int test_binop __P((char *));
+extern int test_unop PARAMS((char *));
+extern int test_binop PARAMS((char *));
-extern int unary_test __P((char *, char *));
-extern int binary_test __P((char *, char *, char *, int));
+extern int unary_test PARAMS((char *, char *));
+extern int binary_test PARAMS((char *, char *, char *, int));
-extern int test_command __P((int, char **));
+extern int test_command PARAMS((int, char **));
#endif /* _TEST_H_ */
diff --git a/tests/alias.right b/tests/alias.right
index 3ab9a717..9e33036b 100644
--- a/tests/alias.right
+++ b/tests/alias.right
@@ -1,6 +1,6 @@
alias: 0
alias: 0
-./alias.tests: line 25: qfoo: command not found
+./alias.tests: line 38: qfoo: command not found
quux
bar
value
@@ -30,3 +30,13 @@ a b
a a b
ok 3
ok 4
+bar
+bad
+0
+<|cat>
+foo
+bar
+baz
+foo
+bar
+baz
diff --git a/tests/alias.tests b/tests/alias.tests
index 6aa1218b..0280c16d 100644
--- a/tests/alias.tests
+++ b/tests/alias.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# place holder for future alias testing
shopt -s expand_aliases
@@ -40,3 +53,4 @@ ${THIS_SH} ./alias1.sub
${THIS_SH} ./alias2.sub
${THIS_SH} ./alias3.sub
${THIS_SH} ./alias4.sub
+${THIS_SH} ./alias5.sub
diff --git a/tests/alias1.sub b/tests/alias1.sub
index ed030312..9a90b2e2 100644
--- a/tests/alias1.sub
+++ b/tests/alias1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s expand_aliases
alias foo=echo
diff --git a/tests/alias2.sub b/tests/alias2.sub
index 76044485..e35fb76f 100644
--- a/tests/alias2.sub
+++ b/tests/alias2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
THIS=alias2
FN=$TMPDIR/$THIS.script
diff --git a/tests/alias3.sub b/tests/alias3.sub
index bb94268a..304e9261 100644
--- a/tests/alias3.sub
+++ b/tests/alias3.sub
@@ -1,4 +1,3 @@
-#!/bin/bash
shopt -s expand_aliases
alias foo='oneword'
foo_word='foo'
diff --git a/tests/alias4.sub b/tests/alias4.sub
index 6ea513a1..0864a3c4 100644
--- a/tests/alias4.sub
+++ b/tests/alias4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s expand_aliases
# from an austin-group report
@@ -68,3 +81,20 @@ long_comment text after
# comment
comment foo bar
+
+# alias ending in a tab
+alias foo="\
+ echo \"bar\" \
+ "
+
+foo
+
+alias foo=$'echo bad \t'
+foo
+
+# this should probably just echo a blank line to stdout
+alias foo='echo 0'
+foo>&2
+
+alias a='printf "<%s>\n" \'
+a|cat
diff --git a/tests/alias5.sub b/tests/alias5.sub
new file mode 100644
index 00000000..7f8e86d5
--- /dev/null
+++ b/tests/alias5.sub
@@ -0,0 +1,28 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# -c commands ending with multi-line aliases; post-bash-5.0
+
+: ${THIS_SH:=./bash}
+
+${THIS_SH} -c "shopt -s expand_aliases &>/dev/null;
+alias myalias='/bin/echo foo
+echo bar
+echo baz'
+myalias"
+
+${THIS_SH} -c "shopt -s expand_aliases &>/dev/null;
+alias myalias='echo foo
+echo bar
+echo baz'
+myalias"
diff --git a/tests/appendop.right b/tests/appendop.right
index f9609f84..f72696b1 100644
--- a/tests/appendop.right
+++ b/tests/appendop.right
@@ -15,10 +15,10 @@
4
9
16
-./appendop.tests: line 84: x: readonly variable
+./appendop.tests: line 97: x: readonly variable
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 -A foo=([0]="zero" [two]="baz" [three]="quux" [one]="bar" )
+declare -A foo=([four]="four" [0]="zero" [two]="baz" [three]="quux" [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
diff --git a/tests/appendop.tests b/tests/appendop.tests
index e4e52c2f..61b38fc7 100644
--- a/tests/appendop.tests
+++ b/tests/appendop.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# basic cases
a=1
a+=4
diff --git a/tests/appendop1.sub b/tests/appendop1.sub
index 7101d0cc..60e70140 100644
--- a/tests/appendop1.sub
+++ b/tests/appendop1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
typeset -A foo=([one]=bar [two]=baz [three]=quux)
typeset -p foo
diff --git a/tests/appendop2.sub b/tests/appendop2.sub
index 4225ba3f..e497beb3 100644
--- a/tests/appendop2.sub
+++ b/tests/appendop2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
POSIXLY_CORRECT=1
x=2
x+=5 eval printf '"$x "'
diff --git a/tests/arith-for.right b/tests/arith-for.right
index 5c09070b..06127be8 100644
--- a/tests/arith-for.right
+++ b/tests/arith-for.right
@@ -64,11 +64,11 @@ fx ()
0
1
2
-bash: -c: line 0: syntax error: arithmetic expression required
-bash: -c: line 0: syntax error: `(( i=0; "i < 3" ))'
+bash: -c: line 1: syntax error: arithmetic expression required
+bash: -c: line 1: syntax error: `(( i=0; "i < 3" ))'
2
-bash: -c: line 0: syntax error: `;' unexpected
-bash: -c: line 0: syntax error: `(( i=0; i < 3; i++; 7 ))'
+bash: -c: line 1: syntax error: `;' unexpected
+bash: -c: line 1: syntax error: `(( i=0; i < 3; i++; 7 ))'
2
20
20
diff --git a/tests/arith-for.tests b/tests/arith-for.tests
index 33f4bd66..db913da5 100644
--- a/tests/arith-for.tests
+++ b/tests/arith-for.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
fx()
{
i=0
diff --git a/tests/arith.right b/tests/arith.right
index 2c3d172a..c74602e3 100644
--- a/tests/arith.right
+++ b/tests/arith.right
@@ -60,7 +60,7 @@
1,i+=2
30
1,j+=2
-./arith.tests: line 114: 1 ? 20 : x+=2: attempted assignment to non-variable (error token is "+=2")
+./arith.tests: line 127: 1 ? 20 : x+=2: attempted assignment to non-variable (error token is "+=2")
20
6
6,5,3
@@ -80,16 +80,16 @@
36
62
63
-./arith.tests: line 149: 3425#56: invalid arithmetic base (error token is "3425#56")
-0
-./arith.tests: line 155: 7 = 43 : attempted assignment to non-variable (error token is "= 43 ")
-./arith.tests: line 156: 2#44: value too great for base (error token is "2#44")
-./arith.tests: line 157: 44 / 0 : division by 0 (error token is "0 ")
-./arith.tests: line 158: let: jv += $iv: syntax error: operand expected (error token is "$iv")
-./arith.tests: line 159: jv += $iv : syntax error: operand expected (error token is "$iv ")
-./arith.tests: line 160: let: rv = 7 + (43 * 6: missing `)' (error token is "6")
-./arith.tests: line 164: 0#4: invalid number (error token is "0#4")
-./arith.tests: line 165: 2#110#11: invalid number (error token is "2#110#11")
+./arith.tests: line 162: 3425#56: invalid arithmetic base (error token is "3425#56")
+./arith.tests: line 165: 2#: invalid integer constant (error token is "2#")
+./arith.tests: line 168: 7 = 43 : attempted assignment to non-variable (error token is "= 43 ")
+./arith.tests: line 169: 2#44: value too great for base (error token is "2#44")
+./arith.tests: line 170: 44 / 0 : division by 0 (error token is "0 ")
+./arith.tests: line 171: let: jv += $iv: syntax error: operand expected (error token is "$iv")
+./arith.tests: line 172: jv += $iv : syntax error: operand expected (error token is "$iv ")
+./arith.tests: line 173: let: rv = 7 + (43 * 6: missing `)' (error token is "6")
+./arith.tests: line 177: 0#4: invalid number (error token is "0#4")
+./arith.tests: line 178: 2#110#11: invalid number (error token is "2#110#11")
abc
def
ghi
@@ -97,15 +97,15 @@ ok
6
1
0
-./arith.tests: line 183: 4 + : syntax error: operand expected (error token is "+ ")
+./arith.tests: line 196: 4 + : syntax error: operand expected (error token is "+ ")
16
-./arith.tests: line 188: 4 ? : 3 + 5 : expression expected (error token is ": 3 + 5 ")
-./arith.tests: line 189: 1 ? 20 : `:' expected for conditional expression (error token is "20 ")
-./arith.tests: line 190: 4 ? 20 : : expression expected (error token is ": ")
+./arith.tests: line 201: 4 ? : 3 + 5 : expression expected (error token is ": 3 + 5 ")
+./arith.tests: line 202: 1 ? 20 : `:' expected for conditional expression (error token is "20 ")
+./arith.tests: line 203: 4 ? 20 : : expression expected (error token is ": ")
9
-./arith.tests: line 196: 0 && B=42 : attempted assignment to non-variable (error token is "=42 ")
+./arith.tests: line 209: 0 && B=42 : attempted assignment to non-variable (error token is "=42 ")
9
-./arith.tests: line 199: 1 || B=88 : attempted assignment to non-variable (error token is "=88 ")
+./arith.tests: line 212: 1 || B=88 : attempted assignment to non-variable (error token is "=88 ")
9
0
9
@@ -131,11 +131,11 @@ ok
4
4
7
-./arith.tests: line 247: 7-- : syntax error: operand expected (error token is "- ")
-./arith.tests: line 249: --x=7 : attempted assignment to non-variable (error token is "=7 ")
-./arith.tests: line 250: ++x=7 : attempted assignment to non-variable (error token is "=7 ")
-./arith.tests: line 252: x++=7 : attempted assignment to non-variable (error token is "=7 ")
-./arith.tests: line 253: x--=7 : attempted assignment to non-variable (error token is "=7 ")
+./arith.tests: line 260: 7-- : syntax error: operand expected (error token is "- ")
+./arith.tests: line 262: --x=7 : attempted assignment to non-variable (error token is "=7 ")
+./arith.tests: line 263: ++x=7 : attempted assignment to non-variable (error token is "=7 ")
+./arith.tests: line 265: x++=7 : attempted assignment to non-variable (error token is "=7 ")
+./arith.tests: line 266: x--=7 : attempted assignment to non-variable (error token is "=7 ")
4
7
-7
@@ -143,10 +143,10 @@ ok
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 "- ")
-./arith1.sub: line 5: 4 ++ : syntax error: operand expected (error token is "+ ")
+./arith1.sub: line 15: 4-- : syntax error: operand expected (error token is "- ")
+./arith1.sub: line 16: 4++ : syntax error: operand expected (error token is "+ ")
+./arith1.sub: line 17: 4 -- : syntax error: operand expected (error token is "- ")
+./arith1.sub: line 18: 4 ++ : syntax error: operand expected (error token is "+ ")
1
2
1
@@ -161,10 +161,10 @@ ok
2
-2
1
-./arith1.sub: line 35: ((: ++ : syntax error: operand expected (error token is "+ ")
+./arith1.sub: line 48: ((: ++ : syntax error: operand expected (error token is "+ ")
7
7
-./arith1.sub: line 38: ((: -- : syntax error: operand expected (error token is "- ")
+./arith1.sub: line 51: ((: -- : syntax error: operand expected (error token is "- ")
7
7
7
@@ -183,10 +183,10 @@ ok
1
4
0
-./arith2.sub: line 33: ((: -- : syntax error: operand expected (error token is "- ")
+./arith2.sub: line 46: ((: -- : syntax error: operand expected (error token is "- ")
-7
-7
-./arith2.sub: line 37: ((: ++ : syntax error: operand expected (error token is "+ ")
+./arith2.sub: line 50: ((: ++ : syntax error: operand expected (error token is "+ ")
7
7
-7
@@ -250,14 +250,14 @@ efg
0
0
8 12
-./arith.tests: line 297: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ")
-./arith.tests: line 301: a b: syntax error in expression (error token is "b")
-./arith.tests: line 302: ((: a b: syntax error in expression (error token is "b")
+./arith.tests: line 310: ((: x=9 y=41 : syntax error in expression (error token is "y=41 ")
+./arith.tests: line 314: a b: syntax error in expression (error token is "b")
+./arith.tests: line 315: ((: a b: syntax error in expression (error token is "b")
42
42
42
42
42
42
-./arith.tests: line 314: 'foo' : syntax error: operand expected (error token is "'foo' ")
-./arith.tests: line 318: b[c]d: syntax error in expression (error token is "d")
+./arith.tests: line 327: 'foo' : syntax error: operand expected (error token is "'foo' ")
+./arith.tests: line 331: b[c]d: syntax error in expression (error token is "d")
diff --git a/tests/arith.tests b/tests/arith.tests
index bc9490e9..1a3501aa 100644
--- a/tests/arith.tests
+++ b/tests/arith.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set +o posix
declare -i iv jv
@@ -148,7 +161,7 @@ echo $(( 64#_ ))
# weird bases
echo $(( 3425#56 ))
-# missing number after base
+# missing number after base now generates an error
echo $(( 2# ))
# these should generate errors
diff --git a/tests/arith1.sub b/tests/arith1.sub
index 43cae806..3168fcbf 100644
--- a/tests/arith1.sub
+++ b/tests/arith1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test of redone post-increment and post-decrement code
echo $(( 4-- ))
echo $(( 4++ ))
diff --git a/tests/arith2.sub b/tests/arith2.sub
index 7eac9523..5475012b 100644
--- a/tests/arith2.sub
+++ b/tests/arith2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo $(( --7 ))
echo $(( ++7 ))
echo $(( -- 7 ))
diff --git a/tests/arith3.sub b/tests/arith3.sub
index a510c739..b4b18258 100644
--- a/tests/arith3.sub
+++ b/tests/arith3.sub
@@ -1,29 +1,44 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# this depends on the sequence of random numbers from the internal LCRNG
RANDOM=42
(( dice[RANDOM%6+1 + RANDOM%6+1]++ ))
-echo ${dice[5]}
+echo ${dice[6]}
(( ++dice[RANDOM%6+1 + RANDOM%6+1] ))
-echo ${dice[6]}
+echo ${dice[7]}
v=4
DIND=20
(( dice[DIND%6 + 1]=v ))
echo ${dice[3]}
+(( dice[DIND/v]+=2 ))
RANDOM=42
(( dice[RANDOM%6+1 + RANDOM%6+1]+=v ))
-echo ${dice[5]}
+echo ${dice[6]}
(( dice[RANDOM%6+1 + RANDOM%6+1]-=v ))
-echo ${dice[6]}
+echo ${dice[7]}
(( dice[RANDOM%6+1 + RANDOM%6+1]+=2 ))
-echo ${dice[11]}
+echo ${dice[8]}
(( dice[RANDOM%6+1 + RANDOM%6+1]*=2 ))
-echo ${dice[11]}
+echo ${dice[5]}
unset dice1 dice2
RANDOM=42
diff --git a/tests/arith5.sub b/tests/arith5.sub
index c8fdb5a9..7d5c7799 100644
--- a/tests/arith5.sub
+++ b/tests/arith5.sub
@@ -1,3 +1,19 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# a lot of this is technically undefined behavior due to signed 64-bit
+# integer overflow, but we're testing exception handling here
+
intmax_max=$((2**63 - 1))
intmax_min1=$((2**63))
intmax_min2=$((-2**63))
diff --git a/tests/arith6.sub b/tests/arith6.sub
index 630e917e..dec8fd03 100644
--- a/tests/arith6.sub
+++ b/tests/arith6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
function reorder
{
(( x[1] < x && (x=x[1], x[1]=$x) ))
diff --git a/tests/arith8.sub b/tests/arith8.sub
index 1ab0895e..e6f1b0d9 100644
--- a/tests/arith8.sub
+++ b/tests/arith8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problems with evaluation of wrong terms in conditional expressions through
# bash-4.4
diff --git a/tests/array.right b/tests/array.right
index 834e5684..2d1c51db 100644
--- a/tests/array.right
+++ b/tests/array.right
@@ -1,6 +1,6 @@
-./array.tests: line 15: syntax error near unexpected token `&'
-./array.tests: line 15: `test=(first & second)'
+./array.tests: line 28: syntax error near unexpected token `&'
+./array.tests: line 28: `test=(first & second)'
1
abcde
abcde
@@ -26,7 +26,7 @@ hello world
11
3
bdef hello world test expression test 2
-./array.tests: line 79: readonly: `a[5]': not a valid identifier
+./array.tests: line 92: readonly: `a[5]': not a valid identifier
declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
declare -ar c
declare -ar a=([1]="" [2]="bdef" [5]="hello world" [6]="test expression" [15]="test 2")
@@ -46,17 +46,17 @@ declare -ar c
declare -a d=([1]="" [2]="bdef" [5]="hello world" [6]="test" [9]="ninth element")
declare -a e=([0]="test")
declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
-./array.tests: line 103: a: readonly variable
-./array.tests: line 105: b[]: bad array subscript
-./array.tests: line 106: b[*]: bad array subscript
+./array.tests: line 116: a: readonly variable
+./array.tests: line 118: b[]: bad array subscript
+./array.tests: line 119: b[*]: bad array subscript
this
-./array.tests: line 109: c[-2]: bad array subscript
-./array.tests: line 110: c: bad array subscript
+./array.tests: line 122: c[-2]: bad array subscript
+./array.tests: line 123: c: bad array subscript
-./array.tests: line 112: d[7]: cannot assign list to array member
-./array.tests: line 114: []=abcde: bad array subscript
-./array.tests: line 114: [*]=last: cannot assign to non-numeric index
-./array.tests: line 114: [-65]=negative: bad array subscript
+./array.tests: line 125: d[7]: cannot assign list to array member
+./array.tests: line 127: []=abcde: bad array subscript
+./array.tests: line 127: [*]=last: cannot assign to non-numeric index
+./array.tests: line 127: [-65]=negative: bad array subscript
declare -a BASH_ARGC=()
declare -a BASH_ARGV=()
declare -a BASH_LINENO=([0]="0")
@@ -68,8 +68,8 @@ declare -a b=([0]="this" [1]="is" [2]="a" [3]="test" [4]="" [5]="/etc/passwd")
declare -ar c
declare -a d=([1]="test test")
declare -a f=([0]="" [1]="bdef" [2]="hello world" [3]="test" [4]="ninth element")
-./array.tests: line 122: unset: ps1: not an array variable
-./array.tests: line 126: declare: c: cannot destroy array variables in this way
+./array.tests: line 135: unset: ps1: not an array variable
+./array.tests: line 139: declare: c: cannot destroy array variables in this way
this of
this is a test of read using arrays
this test
@@ -127,7 +127,7 @@ grep [ 123 ] *
6 7 9 5
length = 3
value = new1 new2 new3
-./array.tests: line 242: narray: unbound variable
+./array.tests: line 255: narray: unbound variable
./array1.sub: line 1: syntax error near unexpected token `('
./array1.sub: line 1: `printf "%s\n" -a a=(a 'b c')'
./array2.sub: line 1: declare: `[]=asdf': not a valid identifier
@@ -154,10 +154,10 @@ for case if then else
12 14 16 18 20
4414758999202
aaa bbb
-./array.tests: line 292: syntax error near unexpected token `<>'
-./array.tests: line 292: `metas=( <> < > ! )'
-./array.tests: line 293: syntax error near unexpected token `<>'
-./array.tests: line 293: `metas=( [1]=<> [2]=< [3]=> [4]=! )'
+./array.tests: line 305: syntax error near unexpected token `<>'
+./array.tests: line 305: `metas=( <> < > ! )'
+./array.tests: line 306: syntax error near unexpected token `<>'
+./array.tests: line 306: `metas=( [1]=<> [2]=< [3]=> [4]=! )'
abc 3
case 4
abc case if then else 5
@@ -203,6 +203,7 @@ e
'b
b c
$0
+declare -a A=([0]="X=a" [1]="b")
t
[3]=abcde r s t u v
e
@@ -349,10 +350,10 @@ version[agent]
version.agent
version[agent]
version.agent
-version[agent] foo[bar]
-version.agent bowl
-foo foobar] foo[bar]
-bbb bleh bleh
+foo[bar] version[agent]
+bowl version.agent
+foobar] foo foo[bar]
+bleh bbb bleh
ab]
bar
1
@@ -367,7 +368,7 @@ 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: unset: [-10]: bad array subscript
+./array14.sub: line 24: 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")
@@ -395,7 +396,7 @@ qux: unset array element 0: ok
0
0
1
-./array17.sub: line 30: ~: syntax error: operand expected (error token is "~")
+./array17.sub: line 43: ~: syntax error: operand expected (error token is "~")
0
0
3
@@ -410,14 +411,15 @@ one
one
two
two
-./array17.sub: line 76: ~ : syntax error: operand expected (error token is "~ ")
+./array17.sub: line 89: ~ : syntax error: operand expected (error token is "~ ")
1
argv[1] = <>
argv[2] = <>
argv[3] = <>
argv[1] = <bar>
-argv[1] = <-->
-argv[1] = <>
+argv[1] = <->
+argv[2] = <->
+argv[1] = < >
argv[1] = <qux>
argv[1] = <->
argv[2] = <->
@@ -426,8 +428,9 @@ argv[1] = <>
argv[2] = <>
argv[3] = <>
argv[1] = <bar>
-argv[1] = <-->
-argv[1] = <>
+argv[1] = <->
+argv[2] = <->
+argv[1] = < >
argv[1] = <qux>
argv[1] = <->
argv[2] = <->
@@ -440,17 +443,13 @@ 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=([1]="b" [0]="a" )
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")
+./array19.sub: line 89: 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")
@@ -458,7 +457,7 @@ 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
+./array19.sub: line 128: 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)")
@@ -475,15 +474,11 @@ 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=()
+declare -A c=([1]="2" )
+declare -A d=(["a b"]="" )
+declare -A e=([Darwin]="" )
a+b+c
x+b+c
a+b+c
@@ -497,8 +492,8 @@ 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
+./array21.sub: line 30: typeset: a: not found
+./array21.sub: line 33: typeset: A: not found
declare -a a=()
declare -A A=()
declare -a foo=([0]="1" [1]="(4 5 6)" [2]="3")
@@ -523,16 +518,16 @@ p3
argv[1] = <y>
<X> <X> <X> <X>
<X> <X> <X> <X>
-./array23.sub: line 9: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
-./array23.sub: line 10: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+./array23.sub: line 22: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
+./array23.sub: line 23: $( echo >&2 foo ) : syntax error: operand expected (error token is "$( echo >&2 foo ) ")
foo
0
foo
foo
foo
6
-./array23.sub: line 21: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
-./array23.sub: line 22: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 34: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
+./array23.sub: line 35: $( echo >&2 foo ): syntax error: operand expected (error token is "$( echo >&2 foo )")
0
0
0
@@ -586,7 +581,7 @@ jkl
1. indexed:
reference:
1. 0
-./array25.sub: line 11: ' ': syntax error: operand expected (error token is "' '")
+./array25.sub: line 24: ' ': syntax error: operand expected (error token is "' '")
3. 0
4. 0
5. 0
@@ -748,17 +743,23 @@ argv[1] = <b>
argv[2] = <a>
argv[1] = <b+a>
7
-./array27.sub: line 11: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ")
+./array27.sub: line 24: a[]]=7 : syntax error: invalid arithmetic operator (error token is "]=7 ")
declare -A A=([$'\t']="2" [" "]="2" )
-./array27.sub: line 23: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ")
+./array27.sub: line 36: ((: A[]]=2 : syntax error: invalid arithmetic operator (error token is "]=2 ")
declare -A A=([$'\t']="2" ["*"]="2" [" "]="2" ["@"]="2" )
-./array27.sub: line 32: A[]]: bad array subscript
+./array27.sub: line 45: A[]]: bad array subscript
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
-./array27.sub: line 40: A[]]: bad array subscript
+./array27.sub: line 53: A[]]: bad array subscript
declare -A A=([$'\t']="X" ["*"]="X" [" "]="X" ["@"]="X" )
-./array27.sub: line 48: declare: `A[]]=X': not a valid identifier
+./array27.sub: line 61: declare: `A[]]=X': not a valid identifier
declare -A A=(["*"]="X" ["@"]="X" )
-./array27.sub: line 56: declare: `A[]]=X': not a valid identifier
-./array27.sub: line 56: A[*]: bad array subscript
-./array27.sub: line 56: A[@]: bad array subscript
+./array27.sub: line 69: declare: `A[]]=X': not a valid identifier
+./array27.sub: line 69: A[*]: bad array subscript
+./array27.sub: line 69: A[@]: bad array subscript
declare -A A
+declare -a bug4=([0]="" [1]="5" [2]="" [3]="1" [4]="")
+declare -a bug=([0]="" [1]="5" [2]="" [3]="1" [4]="")
+declare -a bug2=([0]="")
+declare -a bug3=([0]="" [1]="5" [2]="" [3]="1" [4]="")
+declare -a not_bug=([0]="no" [1]="nulls")
+declare -a workaround=([0]="")
diff --git a/tests/array.tests b/tests/array.tests
index afd3df51..ba8e2254 100644
--- a/tests/array.tests
+++ b/tests/array.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# this is needed so that the bad assignments (b[]=bcde, for example) do not
# cause fatal shell errors when in posix mode
set +o posix
@@ -155,7 +168,7 @@ echo ${x[4]}
echo efgh | ( read x[1] ; echo ${x[1]} )
echo wxyz | ( declare -a x ; read x ; echo $x ; echo ${x[0]} )
-# Make sure that arrays can be used to save the positional paramters verbatim
+# Make sure that arrays can be used to save the positional parameters verbatim
set -- a 'b c' d 'e f g' h
ARGV=( [0]=$0 "$@" )
@@ -247,7 +260,7 @@ ${THIS_SH} ./array2.sub
# some old bugs and ksh93 compatibility tests
${THIS_SH} ./array3.sub
-# some compound assingment parsing problems that showed up in bash-3.1-release
+# some compound assignment parsing problems that showed up in bash-3.1-release
${THIS_SH} ./array4.sub
set +u
@@ -379,6 +392,11 @@ declare -a x=($0)
declare -a x=(\$0)
echo "${x[@]}"
+unset A Z
+Z='a b'
+A=( X=$Z )
+declare -p A
+
# tests for bash-3.1 problems
${THIS_SH} ./array5.sub
@@ -406,3 +424,4 @@ ${THIS_SH} ./array24.sub
${THIS_SH} ./array25.sub
${THIS_SH} ./array26.sub
${THIS_SH} ./array27.sub
+${THIS_SH} ./array28.sub
diff --git a/tests/array10.sub b/tests/array10.sub
index 6d5a94c9..71824804 100644
--- a/tests/array10.sub
+++ b/tests/array10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
days=({Mon,Tues,Wednes,Thurs,Fri,Satur,Sun}day)
echo ${days[@]}
diff --git a/tests/array11.sub b/tests/array11.sub
index c4f8cad4..5961902a 100644
--- a/tests/array11.sub
+++ b/tests/array11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problems with associative array keys with ] and unbalanced [ ]
# fixed after bash-4.2
diff --git a/tests/array12.sub b/tests/array12.sub
index 65711385..fbf5eeb0 100644
--- a/tests/array12.sub
+++ b/tests/array12.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problems with fix for posix interp 217 introduced in bash-4.2
declare -ax array
diff --git a/tests/array13.sub b/tests/array13.sub
index 736f210c..635cb977 100644
--- a/tests/array13.sub
+++ b/tests/array13.sub
@@ -1,4 +1,3 @@
-#!/bin/bash
func1(){
declare -g variable='function'
diff --git a/tests/array14.sub b/tests/array14.sub
index 7715169c..57a455a6 100644
--- a/tests/array14.sub
+++ b/tests/array14.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# start at a test suite for negative indexed array subscripts -- post bash-4.2
x=( 0 1 2 3 4 5)
declare -p x
diff --git a/tests/array15.sub b/tests/array15.sub
index b056ccbb..47796b95 100644
--- a/tests/array15.sub
+++ b/tests/array15.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# fixes for make_internal_declare not handling integer attribute for arrays
declare -ai -g foo=(1 2 xx 3)
echo "${foo[@]}"
diff --git a/tests/array16.sub b/tests/array16.sub
index 10024bc1..b82dbca2 100644
--- a/tests/array16.sub
+++ b/tests/array16.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
foo[0]=a
foo[1]=b
diff --git a/tests/array17.sub b/tests/array17.sub
index 302dc039..dd0c0f69 100644
--- a/tests/array17.sub
+++ b/tests/array17.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# this shows the expansions an array subscript undergoes before being run
# through the arithmetic evaluator
diff --git a/tests/array18.sub b/tests/array18.sub
index 675b194e..95030812 100644
--- a/tests/array18.sub
+++ b/tests/array18.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# arrays referenced using @ subscript and positional parameters should behave
# the same way
diff --git a/tests/array19.sub b/tests/array19.sub
index adfad82a..1d02f744 100644
--- a/tests/array19.sub
+++ b/tests/array19.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests for changes to declare and assignment statement arguments post-bash-4.3
unset foo l a b
@@ -42,11 +55,6 @@ 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
diff --git a/tests/array20.sub b/tests/array20.sub
index 035d936b..24dff930 100644
--- a/tests/array20.sub
+++ b/tests/array20.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests to make sure that $* and ${array[*]} expand consistently in `list'
# and `scalar' contexts
diff --git a/tests/array21.sub b/tests/array21.sub
index d1f705e3..97ff0936 100644
--- a/tests/array21.sub
+++ b/tests/array21.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
typeset -a a
a=(1 2 3 4)
diff --git a/tests/array22.sub b/tests/array22.sub
index adae6e1a..3374ef2f 100644
--- a/tests/array22.sub
+++ b/tests/array22.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# This isn't perfect behavior, but it establishes a baseline and will provide
# a way to detect behavior changes
diff --git a/tests/array23.sub b/tests/array23.sub
index bd64fe1f..02d271db 100644
--- a/tests/array23.sub
+++ b/tests/array23.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# this captures how bash and ksh93 expand indexed array subscripts in
# various contexts. if changes are ever made, or an option added to do
# this differently, the diffs will show up here
diff --git a/tests/array24.sub b/tests/array24.sub
index 108f761b..461b4068 100644
--- a/tests/array24.sub
+++ b/tests/array24.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- "abc" "def ghi" "jkl"
A=("$@")
diff --git a/tests/array25.sub b/tests/array25.sub
index b550d9d5..fe6bb348 100644
--- a/tests/array25.sub
+++ b/tests/array25.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests with blank subscripts, indexed and associative
echo 1. indexed:
diff --git a/tests/array26.sub b/tests/array26.sub
index 826774f7..0f6cc8fa 100644
--- a/tests/array26.sub
+++ b/tests/array26.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# these should produce the same results
a=(aa bb)
set -- aa bb
diff --git a/tests/array27.sub b/tests/array27.sub
index fe1ffd35..44ed444d 100644
--- a/tests/array27.sub
+++ b/tests/array27.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests for `problem' keys when using associative arrays and assoc_expand_once
# deal with problems for now; this is a placeholder for if and when I fix them
diff --git a/tests/array28.sub b/tests/array28.sub
new file mode 100644
index 00000000..e11cdb6d
--- /dev/null
+++ b/tests/array28.sub
@@ -0,0 +1,30 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+# tests for assigning empty string array elements without subscripts
+function foo()
+{
+ local bug=("" "5" "" 1 "")
+ declare -a bug2=("")
+ declare -ga bug3=("" "5" "" 1 "")
+ local not_bug=("no" "nulls")
+ local workaround; workaround=("")
+
+ declare -p bug bug2 bug3 not_bug workaround
+}
+
+declare -a bug4=("" "5" "" 1 "")
+declare -p bug4
+
+foo
diff --git a/tests/array4.sub b/tests/array4.sub
index 97c766db..443a0fd8 100644
--- a/tests/array4.sub
+++ b/tests/array4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# compound assignment parsing problems in bash-3.1-release
func()
{
diff --git a/tests/array5.sub b/tests/array5.sub
index 00953c4a..0dda6969 100644
--- a/tests/array5.sub
+++ b/tests/array5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
diff --git a/tests/array6.sub b/tests/array6.sub
index 0017f4cd..2c6c3502 100644
--- a/tests/array6.sub
+++ b/tests/array6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test cases for array quoting and escaping fixed post bash-3.2-release
oIFS="$IFS"
diff --git a/tests/array8.sub b/tests/array8.sub
index 481ccdbc..6e7e2d6c 100644
--- a/tests/array8.sub
+++ b/tests/array8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=/
declare -a i
diff --git a/tests/array9.sub b/tests/array9.sub
index 444247fa..c3aa31d1 100644
--- a/tests/array9.sub
+++ b/tests/array9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo $(( 0x7e ))
echo $(( 0x7f ))
echo $(( 0x80 ))
diff --git a/tests/assoc.right b/tests/assoc.right
index 90abb6d6..e9aa9172 100644
--- a/tests/assoc.right
+++ b/tests/assoc.right
@@ -6,18 +6,18 @@ declare -A BASH_CMDS=()
declare -A fluff=([foo]="one" [bar]="two" )
declare -A fluff=([foo]="one" [bar]="two" )
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 fluff=([qux]="assigned" [bar]="newval" )
+./assoc.tests: line 39: chaff: four: must use subscript when assigning associative array
declare -A BASH_ALIASES=()
declare -A BASH_CMDS=()
-declare -Ai chaff=([zero]="5" [one]="10" )
-declare -Ar waste=([lineno]="28" [source]="./assoc.tests" [version]="4.0-devel" [pid]="42134" )
-declare -A wheat=([two]="b" [three]="c" [zero]="0" [one]="a" )
-declare -A chaff=(["hello world"]="flip" [zero]="5" [one]="10" )
-./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 -Ai chaff=([one]="10" [zero]="5" )
+declare -Ar waste=([pid]="42134" [lineno]="41" [source]="./assoc.tests" [version]="4.0-devel" )
+declare -A wheat=([two]="b" [three]="c" [one]="a" [zero]="0" )
+declare -A chaff=(["hello world"]="flip" [one]="10" [zero]="5" )
+./assoc.tests: line 51: waste: readonly variable
+./assoc.tests: line 52: unset: waste: cannot unset: readonly variable
+./assoc.tests: line 53: chaff[*]: bad array subscript
+./assoc.tests: line 54: [*]=12: invalid associative array key
declare -A chaff=(["hello world"]="flip" [one]="a" )
flip
argv[1] = <multiple>
@@ -32,14 +32,14 @@ argv[2] = <words>
argv[3] = <flip>
argv[4] = <a>
argv[1] = <multiple words flip a>
-./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=(["foo bar"]="qux qix" [six]="6" )
+./assoc.tests: line 71: declare: chaff: cannot destroy array variables in this way
+./assoc.tests: line 73: chaff[*]: bad array subscript
+./assoc.tests: line 74: [*]=12: invalid associative array key
+declare -A wheat=([six]="6" ["foo bar"]="qux qix" )
argv[1] = <qux>
argv[2] = <qix>
argv[1] = <qux qix>
-declare -A wheat=(["foo bar"]="qux qix" [six]="6" )
+declare -A wheat=([six]="6" ["foo bar"]="qux qix" )
argv[1] = <2>
argv[1] = <7>
argv[1] = <qux>
@@ -48,16 +48,16 @@ argv[3] = <blat>
argv[1] = <qux qix blat>
argv[1] = <16>
argv[1] = <16>
-argv[1] = <flix>
-argv[2] = <6>
-argv[1] = <foo>
-argv[2] = <bar>
-argv[3] = <six>
-argv[1] = <foo bar>
-argv[2] = <six>
+argv[1] = <6>
+argv[2] = <flix>
+argv[1] = <six>
+argv[2] = <foo>
+argv[3] = <bar>
+argv[1] = <six>
+argv[2] = <foo bar>
8
-/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin
-sbin bin bin ucb bin . sbin bin
+/usr/local/bin /bin . /usr/bin /usr/ucb /usr/sbin /bin /sbin
+bin bin . bin ucb sbin bin sbin
bin
/ / / / / / /
/
@@ -66,27 +66,27 @@ argv[1] = </>
argv[1] = <sbin>
argv[1] = </>
8
-/sbin /usr/bin /bin /usr/ucb /usr/local/bin . /usr/sbin /bin
-sbin bin bin ucb bin . sbin bin
+/usr/local/bin /bin . /usr/bin /usr/ucb /usr/sbin /bin /sbin
+bin bin . bin ucb sbin bin sbin
/ / / / / / /
8
4 -- /bin
-^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin
-^sbin ^usr^bin ^bin ^usr^ucb ^usr^local^bin . ^usr^sbin ^bin
-\sbin \usr/bin \bin \usr/ucb \usr/local/bin . \usr/sbin \bin
-\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin
-\sbin \usr\bin \bin \usr\ucb \usr\local\bin . \usr\sbin \bin
+^usr^local^bin ^bin . ^usr^bin ^usr^ucb ^usr^sbin ^bin ^sbin
+^usr^local^bin ^bin . ^usr^bin ^usr^ucb ^usr^sbin ^bin ^sbin
+\usr/local/bin \bin . \usr/bin \usr/ucb \usr/sbin \bin \sbin
+\usr\local\bin \bin . \usr\bin \usr\ucb \usr\sbin \bin \sbin
+\usr\local\bin \bin . \usr\bin \usr\ucb \usr\sbin \bin \sbin
([a]=1)
foo qux
/usr/sbin/foo /usr/local/bin/qux
hits command
- 0 /sbin/blat
0 /usr/sbin/foo
0 /bin/sh
+ 0 /sbin/blat
0 /usr/local/bin/qux
-blat foo sh qux
-/sbin/blat /usr/sbin/foo /bin/sh /usr/local/bin/qux
+foo sh blat qux
+/usr/sbin/foo /bin/sh /sbin/blat /usr/local/bin/qux
foo qux
argv[1] = </usr/sbin/foo>
@@ -104,10 +104,10 @@ argv[4] = </usr/local/bin/qux -l>
outside: outside
declare -A BASH_ALIASES=()
declare -A BASH_CMDS=()
-declare -A afoo=(["foo bar"]="foo quux" [six]="six" )
+declare -A afoo=([six]="six" ["foo bar"]="foo quux" )
argv[1] = <inside:>
-argv[2] = <foo quux>
-argv[3] = <six>
+argv[2] = <six>
+argv[3] = <foo quux>
outside 2: outside
argv[1] = </barq//fooq>
argv[1] = <>
@@ -137,12 +137,12 @@ argv[4] = <FOOQ>
abc
def
def
-./assoc5.sub: line 13: declare: `myarray[foo[bar]=bleh': not a valid identifier
-bleh def abc
-myarray=([foo]="bleh" ["]"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" )
+./assoc5.sub: line 26: declare: `myarray[foo[bar]=bleh': not a valid identifier
+def bleh abc
+myarray=(["]"]="def" [foo]="bleh" ["a]a"]="abc" ["a]=test1;#a"]="123" )
123
-myarray=([foo]="bleh" ["]"]="def" ["a]=test2;#a"]="def" ["a]=test1;#a"]="123" ["a]a"]="abc" )
+myarray=(["]"]="def" ["a]=test2;#a"]="def" [foo]="bleh" ["a]a"]="abc" ["a]=test1;#a"]="123" )
bar"bie
doll
declare -A foo=(["bar\"bie"]="doll" )
@@ -195,13 +195,15 @@ declare -A assoc=([0]="assoc" )
assoc
declare -A assoc=([two]="twoless" [three]="three" [one]="onemore" )
declare -Ar assoc=([two]="twoless" [three]="three" [one]="onemore" )
+declare -A hash=([key]="value1" )
+declare -A hash=([key]="value1 value2" )
declare -A b=([")"]="" ["\""]="" ["]"]="" ["\\"]="" ["\`"]="" )
declare -A b=(["]"]="" ["\`"]="" )
declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
-./assoc9.sub: line 23: unset: `dict[']': not a valid identifier
-./assoc9.sub: line 23: unset: `dict["]': not a valid identifier
-./assoc9.sub: line 23: unset: `dict[\]': not a valid identifier
-./assoc9.sub: line 23: unset: `dict[`]': not a valid identifier
+./assoc9.sub: line 36: unset: `dict[']': not a valid identifier
+./assoc9.sub: line 36: unset: `dict["]': not a valid identifier
+./assoc9.sub: line 36: unset: `dict[\]': not a valid identifier
+./assoc9.sub: line 36: unset: `dict[`]': not a valid identifier
declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
declare -A dict=(["'"]="3" ["\""]="1" ["\\"]="4" ["\`"]="2" )
declare -A dict=()
@@ -209,10 +211,10 @@ declare -A dict=()
4
a[$b]= 5
declare -A a=(["80's"]="Depeche Mode" )
-./assoc9.sub: line 71: read: `a[80's]': not a valid identifier
+./assoc9.sub: line 84: read: `a[80's]': not a valid identifier
declare -A a
declare -A a=(["80's"]="Depeche Mode" )
-./assoc9.sub: line 83: printf: `a[80's]': not a valid identifier
+./assoc9.sub: line 96: printf: `a[80's]': not a valid identifier
declare -A a
declare -A a=(["80's"]="Depeche Mode" )
6
@@ -220,12 +222,39 @@ declare -A a=(["80's"]="Depeche Mode" )
1+5
declare -A a=(["\$(date >&2)"]="5" )
declare -A myarray=([foo]="bleh" ["foo[bar"]="bleh" )
-./assoc10.sub: line 1: declare: a: cannot convert indexed to associative array
+foo
+./assoc10.sub: line 14: declare: a: cannot convert indexed to associative array
f: declare -a a
-./assoc10.sub: line 4: declare: a: cannot convert associative to indexed array
+./assoc10.sub: line 17: declare: a: cannot convert associative to indexed array
f: declare -A a
f: declare -a a
main: declare -- a="7"
f: declare -A a
main: declare -- a="42"
+declare -A a=([3]="" [1]="2" )
+declare -A foo=([d]="4" [c]="3" [b]="2" [a]="1" )
+foo=( d "4" c "3" b "2" a "1" )
+declare -A foo=(["\\"]="5" ["@"]="3" ["holy hell this works"]="4" ["a b"]="1" ["spa ces"]="2" )
+foo=( echo "\\" "5" "@" "3" "holy hell this works" "4" "a b" "1" "spa ces" "2" )
+./assoc11.sub: line 34: "": bad array subscript
+declare -A foo=([";"]="semicolon" ["]"]="def" [a=b]="assignment" ["a]a"]="abc" ["foo[bar"]="bleh" )
+foo=( ";" "semicolon" "]" "def" a=b "assignment" "a]a" "abc" "foo[bar" "bleh" )
+declare -A foo=(["'"]="squote" ["\""]="dquote" ["\\"]="bslash" ["\`"]="backquote" )
+foo=( "'" "squote" "\"" "dquote" "\\" "bslash" "\`" "backquote" )
+declare -A foo=(["bar]bie"]="doll" ["a]=test1;#a"]="123" ["bar\"bie"]="doll" )
+foo=( "bar]bie" "doll" "a]=test1;#a" "123" "bar\"bie" "doll" )
+declare -A inside=([c]="3" [b]="2" [a]="1" )
+inside=( c "3" b "2" a "1" )
+declare -A dict=(["?"]="quest" ["*"]="star" ["'"]="squote" ["\$"]="dol" ["\""]="dquote" ["\\"]="bslash" ["@"]="at" ["}"]="rbrace" ["{"]="lbrace" ["\`"]="bquote" )
+dict=( "?" "quest" "*" "star" "'" "squote" "\$" "dol" "\"" "dquote" "\\" "bslash" "@" "at" "}" "rbrace" "{" "lbrace" "\`" "bquote" )
+declare -A foo=([two]="" [one]="1" )
+foo=( two "" one "1" )
+rparen dquote rbrace bs
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
+")" "rparen" "\"" "dquote" "]" "rbrace" "\\" "bs"
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
+declare -A a=([")"]="rparen" ["\""]="dquote" ["]"]="rbrace" ["\\"]="bs" )
+declare -Arx foo=([two]="2" [three]="3" [one]="1" )
+./assoc11.sub: line 90: foo: readonly variable
diff --git a/tests/assoc.tests b/tests/assoc.tests
index 84326c9c..8d5c8927 100644
--- a/tests/assoc.tests
+++ b/tests/assoc.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# TEST - basic declaration and assignment
typeset -A fluff
declare -A
@@ -18,7 +31,7 @@ declare -p fluff
unset fluff
-# TEST - compount assignment and variable attributes
+# TEST - compound assignment and variable attributes
declare -A wheat chaff
wheat=( [zero]=0 [one]=a [two]=b [three]=c )
@@ -213,9 +226,21 @@ declare -p assoc
readonly -A assoc
declare -p assoc
+declare -A hash
+
+hash=(["key"]="value1")
+declare -p hash
+hash=(["key"]="${hash["key"]} value2")
+declare -p hash
+
+unset hash
+
${THIS_SH} ./assoc8.sub
# new shopt option to prevent multiple expansion of assoc array subscripts
${THIS_SH} ./assoc9.sub
${THIS_SH} ./assoc10.sub
+
+# test assigning associative arrays using compound key/value pair assignments
+${THIS_SH} ./assoc11.sub
diff --git a/tests/assoc1.sub b/tests/assoc1.sub
index a045bde9..99a6e22a 100644
--- a/tests/assoc1.sub
+++ b/tests/assoc1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
hash -r
echo ${BASH_CMDS[@]}
diff --git a/tests/assoc10.sub b/tests/assoc10.sub
index 9eef2cac..5b215258 100644
--- a/tests/assoc10.sub
+++ b/tests/assoc10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f() { declare -a a; declare -A a; echo -n "$FUNCNAME: " ; declare -p a; }
f
diff --git a/tests/assoc11.sub b/tests/assoc11.sub
new file mode 100644
index 00000000..13111a52
--- /dev/null
+++ b/tests/assoc11.sub
@@ -0,0 +1,90 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# these tests were previously in array19.sub, but they are acceptable syntax now
+
+declare -A a
+declare a='(1 2 3)'
+declare -p a
+unset a
+
+declare -A foo
+
+v1='spa ces'
+v2=@
+
+foo=(a 1 b 2 c 3 d 4 )
+declare -p foo
+echo foo=\( ${foo[@]@K} \)
+
+foo=('a b' 1 "$v1" 2 "$v2" 3 'holy hell this works' 4 \\ 5)
+declare -p foo
+echo foo=\( echo ${foo[@]@K} \)
+
+foo=( "" null )
+
+foo=('a]a' abc ']' def $(echo 'foo[bar') bleh \; semicolon a=b assignment)
+declare -p foo
+echo foo=\( ${foo[@]@K} \)
+
+foo=('`' backquote '"' dquote "'" squote \\ bslash)
+declare -p foo
+echo foo=\( ${foo[@]@K} \)
+
+bar='a]=test1;#a'
+foo=( $bar 123 bar\"bie doll bar]bie doll )
+declare -p foo
+echo foo=\( ${foo[@]@K} \)
+
+func()
+{
+ declare -A inside=(a 1 b 2 c 3)
+ declare -p inside
+ echo inside=\( ${inside[@]@K} \)
+}
+func
+
+loaddict()
+{
+ dict=( '"' dquote '`' bquote "'" squote '\' bslash)
+ dict+=( '$' dol @ at * star \{ lbrace \} rbrace ? quest)
+
+ declare -p dict
+ echo dict=\( ${dict[@]@K} \)
+}
+declare -A dict
+loaddict
+
+foo=(one 1 two)
+declare -p foo
+echo foo=\( ${foo[@]@K} \)
+
+typeset -A a=( [\\]=bs [\"]=dquote [\)]=rparen [\]]=rbrace )
+echo ${a[@]}
+declare -p a
+
+echo ${a[@]@K}
+echo ${a[@]@A}
+
+eval "${a[@]@A}"
+declare -p a
+
+eval "a=( ${a[@]@K} )"
+declare -p a
+
+unset a foo
+readonly -A foo=( one 1 two 2 three 3 )
+
+export foo
+declare -p foo
+declare foo+=( seven 7 eight 8 )
diff --git a/tests/assoc2.sub b/tests/assoc2.sub
index 396b87a3..470e2c94 100644
--- a/tests/assoc2.sub
+++ b/tests/assoc2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo ${BASH_ALIASES[@]}
alias foo=/usr/sbin/foo
diff --git a/tests/assoc3.sub b/tests/assoc3.sub
index 9129ef1d..a7eeb265 100644
--- a/tests/assoc3.sub
+++ b/tests/assoc3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
foo()
{
declare -A afoo=([six]="six" [foo bar]="foo quux")
diff --git a/tests/assoc4.sub b/tests/assoc4.sub
index 1516dc58..eff9d0e8 100644
--- a/tests/assoc4.sub
+++ b/tests/assoc4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=/
declare -A i
diff --git a/tests/assoc5.sub b/tests/assoc5.sub
index 400f3d39..844d9441 100644
--- a/tests/assoc5.sub
+++ b/tests/assoc5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -A myarray
# this needs fixes to skipsubscript
diff --git a/tests/assoc6.sub b/tests/assoc6.sub
index 54112ee5..88b8eaf2 100644
--- a/tests/assoc6.sub
+++ b/tests/assoc6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -A foo
foo=([bar\"bie]=doll)
diff --git a/tests/assoc7.sub b/tests/assoc7.sub
index 5bc5150e..cae57c55 100644
--- a/tests/assoc7.sub
+++ b/tests/assoc7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problem with bash versions through bash-4.2
foo()
{
diff --git a/tests/assoc9.sub b/tests/assoc9.sub
index c5fbe45b..b8867187 100644
--- a/tests/assoc9.sub
+++ b/tests/assoc9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
typeset -A a=( [\\]= [\"]= [\)]= ) b
for x in "${!a[@]}"; do b[$x]=; done
b+=([\`]= [\]]=)
@@ -108,3 +121,10 @@ declare myarray["foo[bar"]=bleh
myarray["foo"]=bleh
declare -p myarray
+
+key='$(date >&2)'
+declare -A aa
+aa[$key]=foo
+echo "${aa[$key]}"
+
+[[ -v aa[$key] ]] || echo bad assoc expansion
diff --git a/tests/attr.right b/tests/attr.right
index 631b3f41..d2d28b7b 100644
--- a/tests/attr.right
+++ b/tests/attr.right
@@ -1,9 +1,9 @@
after f1:declare -ar a=([0]="1")
-./attr.tests: line 4: a: readonly variable
+./attr.tests: line 17: a: readonly variable
after f2:declare -ar a=([0]="1")
-./attr.tests: line 5: a: readonly variable
+./attr.tests: line 18: a: readonly variable
after f3:declare -ar a=([0]="1")
-./attr.tests: line 6: readonly: a: readonly variable
+./attr.tests: line 19: 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)")
@@ -11,15 +11,15 @@ 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
+./attr1.sub: line 26: p: readonly variable
declare -r p="1"
-./attr1.sub: line 19: r: readonly variable
+./attr1.sub: line 32: r: readonly variable
declare -ar r=([0]="1")
-./attr1.sub: line 23: r: readonly variable
+./attr1.sub: line 36: r: readonly variable
declare -ar r=([0]="1")
-./attr1.sub: line 27: r: readonly variable
+./attr1.sub: line 40: r: readonly variable
declare -ar r=([0]="1")
-./attr1.sub: line 31: readonly: r: readonly variable
+./attr1.sub: line 44: readonly: r: readonly variable
declare -ar r=([0]="1")
declare -ar x=([0]="4")
in func:declare -ar y=([0]="4")
diff --git a/tests/attr.tests b/tests/attr.tests
index b5e01596..4874d9a7 100644
--- a/tests/attr.tests
+++ b/tests/attr.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=(outside)
f1() { readonly a=(1) ; }
diff --git a/tests/attr1.sub b/tests/attr1.sub
index 1c0609ab..4424be95 100644
--- a/tests/attr1.sub
+++ b/tests/attr1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
m=1
readonly m=4
declare -p m
diff --git a/tests/attr2.sub b/tests/attr2.sub
index 28d447cc..dadca10b 100644
--- a/tests/attr2.sub
+++ b/tests/attr2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
p=1
export p
diff --git a/tests/braces.tests b/tests/braces.tests
index a80cf450..da0b624b 100644
--- a/tests/braces.tests
+++ b/tests/braces.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo ff{c,b,a}
echo f{d,e,f}g
echo {l,n,m}xyz
diff --git a/tests/builtins.right b/tests/builtins.right
index 32db2a53..832472f6 100644
--- a/tests/builtins.right
+++ b/tests/builtins.right
@@ -105,9 +105,9 @@ m n o p
/tmp/bash-dir-a
/tmp/bash-dir-a
/tmp/bash-dir-a
-./source5.sub: line 10: /tmp/source-notthere: No such file or directory
+./source5.sub: line 23: /tmp/source-notthere: No such file or directory
after bad source 1
-./source5.sub: line 17: /tmp/source-notthere: No such file or directory
+./source5.sub: line 30: /tmp/source-notthere: No such file or directory
one - OK
0
0
@@ -144,11 +144,11 @@ AVAR
foo
declare -x foo=""
declare -x FOO="\$\$"
-./builtins.tests: line 213: declare: FOO: not found
+./builtins.tests: line 226: declare: FOO: not found
declare -x FOO="\$\$"
ok
ok
-./builtins.tests: line 245: kill: 4096: invalid signal specification
+./builtins.tests: line 258: kill: 4096: invalid signal specification
1
a\n\n\nb
a
@@ -208,8 +208,8 @@ f2 ()
all unset:
unset1
unset2
-./builtins6.sub: line 28: declare: f1: not found
-./builtins6.sub: line 28: declare: f2: not found
+./builtins6.sub: line 41: declare: f1: not found
+./builtins6.sub: line 41: declare: f2: not found
all reset:
one-one
two-one
@@ -235,4 +235,40 @@ f2 ()
funcs unset:
one-two
two-two
-./builtins.tests: line 266: exit: status: numeric argument required
+bash: line 1: notthere: No such file or directory
+one
+bash: line 1: notthere: No such file or directory
+two
+bash: line 1: .: notthere: file not found
+one
+bash: line 1: .: notthere: file not found
+0
+0
+0
+0
+argv[1] = <one>
+0
+argv[1] = <two>
+0
+three
+0
+four
+0
+./builtins7.sub: line 19: : command not found
+127
+0
+./builtins7.sub: line 27: notthere: No such file or directory
+after 1
+./builtins7.sub: line 28: notthere: No such file or directory
+after 2
+type is a shell builtin
++ command -v type
+type
++ command command -v type
+type
++ command -p command -v type
+type
++ command -p -- command -v type
+type
++ set +x
+./builtins.tests: line 282: exit: status: numeric argument required
diff --git a/tests/builtins.tests b/tests/builtins.tests
index ac74fe6f..00ebc0fd 100644
--- a/tests/builtins.tests
+++ b/tests/builtins.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests for miscellaneous builtins not tested elsewhere
set +p
set +o posix
@@ -124,7 +137,7 @@ hash -r
hash
# this had better succeed, since command -p guarantees we will find the
-# standard utilties
+# standard utilities
command -p hash rm
# check out source/.
@@ -173,7 +186,7 @@ echo "$@"
# test out cd and $CDPATH
${THIS_SH} ./builtins1.sub
-# test behavior of `.' when given a non-existant file argument
+# test behavior of `.' when given a non-existent file argument
${THIS_SH} ./source5.sub
# test bugs in sourcing non-regular files, fixed post-bash-3.2
@@ -262,6 +275,9 @@ ${THIS_SH} ./builtins5.sub
# test behavior of unset builtin with -f and -v options
${THIS_SH} ./builtins6.sub
+# test behavior of command builtin after changing it to a pseudo-keyword
+${THIS_SH} ./builtins7.sub
+
# this must be last -- it is a fatal error
exit status
diff --git a/tests/builtins4.sub b/tests/builtins4.sub
index b7d0c0c9..058ee2c1 100644
--- a/tests/builtins4.sub
+++ b/tests/builtins4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -a c
declare -p c
diff --git a/tests/builtins5.sub b/tests/builtins5.sub
index 9a5dd7b9..d36e03a5 100644
--- a/tests/builtins5.sub
+++ b/tests/builtins5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# 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
diff --git a/tests/builtins6.sub b/tests/builtins6.sub
index c18b4766..d4fdf4ae 100644
--- a/tests/builtins6.sub
+++ b/tests/builtins6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f1()
{
echo f1
diff --git a/tests/builtins7.sub b/tests/builtins7.sub
new file mode 100644
index 00000000..67e5e610
--- /dev/null
+++ b/tests/builtins7.sub
@@ -0,0 +1,38 @@
+: ${THIS_SH:=./bash}
+
+${THIS_SH} -c 'command . notthere ; echo one' bash
+${THIS_SH} -c '. notthere ; echo two' bash
+
+${THIS_SH} -o posix -c 'command . notthere ; echo one' bash
+${THIS_SH} -o posix -c '. notthere ; echo two' bash
+
+command ; echo $?
+command -- ; echo $?
+command -p ; echo $?
+command -p -- ; echo $?
+
+command recho one; echo $?
+command -- recho two; echo $?
+command -p echo three; echo $?
+command -p -- echo four ; echo $?
+
+command ''
+echo $?
+
+command -p
+echo $?
+
+${THIS_SH} -c 'set -e ; command false ; echo after' bash
+
+command command command -p . notthere ; echo after 1
+command -p command command . notthere ; echo after 2
+
+command -p command -V type
+
+set -x
+command -v type
+command command -v type
+command -p command -v type
+command -p -- command -v type
+set +x
+
diff --git a/tests/case.right b/tests/case.right
index d2055c9d..557bcadf 100644
--- a/tests/case.right
+++ b/tests/case.right
@@ -5,7 +5,7 @@ retest
and match
no more clauses
1.0
-./case.tests: line 29: xx: readonly variable
+./case.tests: line 42: xx: readonly variable
1.1
matches 1
no
diff --git a/tests/case.tests b/tests/case.tests
index fe9c05a7..2ffcb906 100644
--- a/tests/case.tests
+++ b/tests/case.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
case foo in
bar) echo skip ;;
foo) echo fallthrough ;&
diff --git a/tests/case1.sub b/tests/case1.sub
index 7db09ab2..80771118 100644
--- a/tests/case1.sub
+++ b/tests/case1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x='\x'
case x in
diff --git a/tests/case2.sub b/tests/case2.sub
index 085f888c..6c3be38e 100644
--- a/tests/case2.sub
+++ b/tests/case2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=$'\\a\\b\\c\\\001\\d\\e\\f'
y='\a\b\c\\d\e\f'
z=$'abc\001def'
diff --git a/tests/case3.sub b/tests/case3.sub
index 77526c32..1e8d785c 100644
--- a/tests/case3.sub
+++ b/tests/case3.sub
@@ -1,4 +1,16 @@
-#!/bin/sh
+# 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 <http://www.gnu.org/licenses/>.
+#
testmatch() {
case $1 in
diff --git a/tests/case4.sub b/tests/case4.sub
index 56f88baa..ababeb94 100644
--- a/tests/case4.sub
+++ b/tests/case4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s -o posix
two="t w o"
ten="t e
diff --git a/tests/casemod.right b/tests/casemod.right
index a5840171..df124754 100644
--- a/tests/casemod.right
+++ b/tests/casemod.right
@@ -43,7 +43,5 @@ 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 dacdb0a8..56ab20d9 100644
--- a/tests/casemod.tests
+++ b/tests/casemod.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
S1=acknowledgement
S2=oenophile
@@ -101,8 +114,8 @@ echo ${TEXT2^^}
M1=${S1^^[aeiou]}
M2=${U2,,[AEIOU]}
-echo ${M1} ${M1~}
-echo ${M2} ${M2~~}
+#echo ${M1} ${M1~}
+#echo ${M2} ${M2~~}
declare -l lower=aBcDe
lower+=XyZ
diff --git a/tests/complete.right b/tests/complete.right
new file mode 100644
index 00000000..5bc89a05
--- /dev/null
+++ b/tests/complete.right
@@ -0,0 +1,63 @@
+complete -f -X '!*.+(ps|PS)' gs
+complete -c nice
+complete -e printenv
+complete -c gdb
+complete -f -X '!*.texi*' texi2html
+complete -j -P '%' fg
+complete -g groupmod
+complete -f -X '!*.dvi' dvips
+complete -f -X '!*.texi*' texi2dvi
+complete -v -S '=' typeset
+complete -f .
+complete -c nohup
+complete -a unalias
+complete -g groupdel
+complete -A hostname telnet
+complete -v -S '=' declare
+complete -v -S '=' export
+complete -v -S '=' local
+complete -v -S '=' readonly
+complete -o bashdefault -o filenames -o nospace -F _comp_cd cd
+complete -f -X '!*.dvi' xdvi
+complete -c type
+complete -f ln
+complete -f -X '!*.+(gz|tgz)' gunzip
+complete -f -X '!*.texi*' makeinfo
+complete -u su
+complete -j -P '%' jobs
+complete -o dirnames -o filenames -o nospace -d popd
+complete -A signal trap
+complete -o dirnames -o filenames -o nospace -d pushd
+complete -f -X '!*.pdf' acroread
+complete -v unset
+complete -f -X '!*.+(ps|PS)' ghostview
+complete -j -W '$(ps -x | tail +2 | cut -c1-5)' -P '%' wait
+complete -A hostname rsh
+complete -c exec
+complete -f -X '!*.Z' zmore
+complete -A signal kill
+complete -j -P '%' disown
+complete -f -X '!*.+(ps|PS)' gs
+complete -f -X '!*.+(ps|PS)' gv
+complete -f source
+complete -c make
+complete -A stopped -P '%' bg
+complete -f cat
+complete -d mkdir
+complete -A helptopic help
+complete -c eval
+complete -f chown
+complete -v read
+complete -c -k time
+complete -f -X '!*.Z' zcat
+complete -f gzip
+complete -W '"${GROUPS[@]}"' newgrp
+complete -f -X '!*.Z' uncompress
+complete -d rmdir
+complete -A shopt shopt
+complete -A hostname ftp
+complete -f more
+complete -A hostname rlogin
+complete -v getopts
+complete -f -X '!*.+(gz|tgz)' gzcat
+./complete.tests: line 123: complete: notthere: no completion specification
diff --git a/tests/complete.tests b/tests/complete.tests
new file mode 100644
index 00000000..36a39833
--- /dev/null
+++ b/tests/complete.tests
@@ -0,0 +1,126 @@
+# Chet Ramey <chet.ramey@case.edu>
+#
+# Copyright 2002-2020 Chester Ramey
+#
+# 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.
+#
+# TThis program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+complete
+
+# from zsh, just for testing
+complete -A stopped -P '%' bg
+complete -j -P '%' fg jobs disown
+# this is wrong at this point
+complete -j -P '%' -W '$(ps -x | tail +2 | cut -c1-5)' wait
+complete -c type
+complete -a unalias
+complete -v getopts read unset
+complete -v -S '=' declare export local readonly typeset
+complete -f -- . source
+complete -A shopt shopt
+complete -e printenv
+
+complete -A helptopic help
+
+complete -c nohup exec nice eval
+complete -c -k time
+
+complete -A signal trap kill
+
+complete -f chown ln more cat
+complete -d mkdir rmdir
+
+complete -f -X '!*.+(gz|tgz)' gunzip gzcat zcat zmore
+complete -f -X '!*.Z' uncompress zmore zcat
+complete -f gzip
+
+complete -o dirnames -o filenames -o nospace -d pushd popd
+
+_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
+
+ # append slash to passed directory name that is the only completion.
+ # readline will not do this if we complete from CDPATH
+ if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
+ i=${COMPREPLY[0]} # shorthand
+ if [[ "$cur" == "$i" ]] && [[ "$i" != "*/" ]]; then
+ COMPREPLY[0]+=/
+ fi
+ fi
+ return 0
+}
+
+complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
+
+complete -A hostname rsh telnet rlogin ftp
+
+complete -u su
+complete -W '"${GROUPS[@]}"' newgrp
+complete -g groupdel groupmod
+
+complete -f -X '!*.+(ps|PS)' gs gv ghostview
+complete -f -X '!*.dvi' dvips xdvi
+complete -f -X '!*.pdf' acroread
+
+complete -f -X '!*.texi*' makeinfo texi2dvi texi2html
+
+complete -c gdb make
+
+complete -p gs
+complete -p
+
+complete -r xdvi
+complete -r notthere
+
+complete -r
+complete
diff --git a/tests/comsub-eof.right b/tests/comsub-eof.right
index 452a9c5f..42677985 100644
--- a/tests/comsub-eof.right
+++ b/tests/comsub-eof.right
@@ -11,3 +11,5 @@ contents
hi
./comsub-eof5.sub: line 13: warning: here-document at line 11 delimited by end-of-file (wanted `EOF')
hi
+./comsub-eof6.sub: line 1: unexpected EOF while looking for matching `)'
+
diff --git a/tests/comsub-eof.tests b/tests/comsub-eof.tests
index f96aeee9..398746aa 100644
--- a/tests/comsub-eof.tests
+++ b/tests/comsub-eof.tests
@@ -9,3 +9,5 @@ ${THIS_SH} ./comsub-eof3.sub
${THIS_SH} ./comsub-eof4.sub
${THIS_SH} ./comsub-eof5.sub
+
+${THIS_SH} ./comsub-eof6.sub
diff --git a/tests/comsub-eof6.sub b/tests/comsub-eof6.sub
new file mode 100644
index 00000000..c0e63ddd
--- /dev/null
+++ b/tests/comsub-eof6.sub
@@ -0,0 +1,5 @@
+read foo <<EOF
+$(seq 10
+EOF
+
+echo "$foo"
diff --git a/tests/comsub-posix.right b/tests/comsub-posix.right
index 2290aa6d..9aebb848 100644
--- a/tests/comsub-posix.right
+++ b/tests/comsub-posix.right
@@ -4,6 +4,7 @@ ab
abcd
+abcd
sh_352.26ax
sh_352.26ay
sh_352.25a sh_352.25b
@@ -47,11 +48,14 @@ after 5
after 6
x
x
+x
quoted )
comment
here-doc with )
+here-doc with \()
here-doc terminated with a parenthesis
' # or a single back- or doublequote
+line terminated with a backslash
./comsub-posix1.sub: command substitution: line 2: syntax error near unexpected token `)'
./comsub-posix1.sub: command substitution: line 2: ` if x; then echo foo )'
after
diff --git a/tests/comsub-posix.tests b/tests/comsub-posix.tests
index d53e6ebc..4fe1dfaa 100644
--- a/tests/comsub-posix.tests
+++ b/tests/comsub-posix.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${HOME:=/}
# works right
@@ -14,6 +27,7 @@ echo $(
)
echo $()
echo ab$()cd
+echo ab$( )cd
echo $(case a in (a) echo sh_352.26ax; esac )
echo $(case a in (a) echo sh_352.26ay; esac)
@@ -168,6 +182,10 @@ echo $(
)
echo $(
+ case x in x) echo x;; esac # followed by a comment
+)
+
+echo $(
case x in (x) echo x;; esac
)
@@ -186,6 +204,12 @@ eof
)
echo $(
+ cat <<\eof
+ here-doc with \()
+eof
+)
+
+echo $(
cat <<\)
here-doc terminated with a parenthesis
)
@@ -197,6 +221,10 @@ cat <<\eof
eof
)
+echo $(
+ echo line terminated with a backslash # \
+)
+
${THIS_SH} ./comsub-posix1.sub
${THIS_SH} ./comsub-posix2.sub
diff --git a/tests/comsub-posix2.sub b/tests/comsub-posix2.sub
index 238745f7..d556fa93 100644
--- a/tests/comsub-posix2.sub
+++ b/tests/comsub-posix2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problem with bash-4.x versions before bash-4.2. required posix interp
swap32_posix()
{
diff --git a/tests/comsub-posix3.sub b/tests/comsub-posix3.sub
index 3a0e39a8..39262b22 100644
--- a/tests/comsub-posix3.sub
+++ b/tests/comsub-posix3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# parsing errors before bash-4.2
a=$(/bin/cat << EOF | wc -l
diff --git a/tests/comsub.right b/tests/comsub.right
index 71bb205a..a329c832 100644
--- a/tests/comsub.right
+++ b/tests/comsub.right
@@ -1,4 +1,4 @@
-./comsub.tests: line 7: hijkl: command not found
+./comsub.tests: line 20: hijkl: command not found
argv[1] = <ab>
argv[2] = <cd>
argv[1] = <abmn>
diff --git a/tests/comsub.tests b/tests/comsub.tests
index ed56007c..47863024 100644
--- a/tests/comsub.tests
+++ b/tests/comsub.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# command substution parsing tests
TABSIZE=`grep -v '^[ #]' $CAPS </dev/null | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | wc -l`
diff --git a/tests/comsub1.sub b/tests/comsub1.sub
index b1af263b..ca722439 100644
--- a/tests/comsub1.sub
+++ b/tests/comsub1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: $(echo \;)
: $(case a in a) echo ;;# comment
diff --git a/tests/comsub3.sub b/tests/comsub3.sub
index 69474000..757fbcae 100644
--- a/tests/comsub3.sub
+++ b/tests/comsub3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=$(
case 1 in
1) echo 1
diff --git a/tests/comsub4.sub b/tests/comsub4.sub
index 461a9ad1..e7a1c557 100644
--- a/tests/comsub4.sub
+++ b/tests/comsub4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=$(cat <<'EOT'
d \
g
diff --git a/tests/cond-regexp1.sub b/tests/cond-regexp1.sub
index dd287cbc..1ba9197a 100644
--- a/tests/cond-regexp1.sub
+++ b/tests/cond-regexp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
VAR='[[:alpha:]]'
[[ $VAR =~ '[[:alpha:]]' ]] && echo match 1
diff --git a/tests/cond-regexp2.sub b/tests/cond-regexp2.sub
index 2bea6384..4da0a88f 100644
--- a/tests/cond-regexp2.sub
+++ b/tests/cond-regexp2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
[[ "\\" =~ ["."] ]] && echo bad 1
[[ "\\" =~ "[.]" ]] && echo bad 2
diff --git a/tests/cond-regexp3.sub b/tests/cond-regexp3.sub
index 8f098416..d939548c 100644
--- a/tests/cond-regexp3.sub
+++ b/tests/cond-regexp3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# simple expansion -- no problem, it's quote_string_for_globbing that was flawed
c=$'\177'
r="\\$c"
diff --git a/tests/cond.right b/tests/cond.right
index 18ebd060..59a4a886 100644
--- a/tests/cond.right
+++ b/tests/cond.right
@@ -23,7 +23,7 @@ returns: 0
returns: 1
returns: 1
returns: 0
-./cond.tests: line 101: [[: 4+: syntax error: operand expected (error token is "+")
+./cond.tests: line 114: [[: 4+: syntax error: operand expected (error token is "+")
returns: 1
returns: 0
returns: 0
diff --git a/tests/cond.tests b/tests/cond.tests
index 2cef9293..aa6a8104 100755..100644
--- a/tests/cond.tests
+++ b/tests/cond.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# the test/[ code is tested elsewhere, and the [[...]] just uses the same
# code. this tests the special features of [[...]]
diff --git a/tests/coproc.tests b/tests/coproc.tests
index 5066f7c5..a7359320 100644
--- a/tests/coproc.tests
+++ b/tests/coproc.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
TMPOUT=${TMPDIR}/coproc-wait-$BASHPID
diff --git a/tests/cprint.tests b/tests/cprint.tests
index 08ff1ebc..e598f8c9 100644
--- a/tests/cprint.tests
+++ b/tests/cprint.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# a nonsense script and shell function to test out the command printing code
#
diff --git a/tests/dbg-support.right b/tests/dbg-support.right
index c4a1609e..6e2194aa 100644
--- a/tests/dbg-support.right
+++ b/tests/dbg-support.right
@@ -1,357 +1,357 @@
-debug lineno: 63 main
-debug lineno: 66 main
+debug lineno: 74 main
+debug lineno: 77 main
FUNCNAME main
-debug lineno: 70 main
-debug lineno: 17 fn1
-debug lineno: 18 fn1
-LINENO 18
-debug lineno: 19 fn1
-LINENO 19
-debug lineno: 20 fn1
+debug lineno: 81 main
+debug lineno: 30 fn1
+debug lineno: 31 fn1
+LINENO 31
+debug lineno: 32 fn1
+LINENO 32
+debug lineno: 33 fn1
BASH_SOURCE[0] ./dbg-support.tests
-debug lineno: 21 fn1
+debug lineno: 34 fn1
FUNCNAME[0] fn1
-debug lineno: 22 fn1
-debug lineno: 22 fn1 70 ./dbg-support.tests
-debug lineno: 23 fn1
-debug lineno: 23 fn1 70 main ./dbg-support.tests
-debug lineno: 24 fn1
-debug lineno: 24 fn1
-debug lineno: 25 fn1
-./dbg-support.tests: line 25: caller: foo: invalid number
+debug lineno: 35 fn1
+debug lineno: 35 fn1 81 ./dbg-support.tests
+debug lineno: 36 fn1
+debug lineno: 36 fn1 81 main ./dbg-support.tests
+debug lineno: 37 fn1
+debug lineno: 37 fn1
+debug lineno: 38 fn1
+./dbg-support.tests: line 38: caller: foo: invalid number
caller: usage: caller [expr]
-debug lineno: 25 fn1
-debug lineno: 17 fn1
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 17 fn1
-debug lineno: 14 print_return_trap
-debug lineno: 71 main
-debug lineno: 28 fn2
-debug lineno: 29 fn2
+debug lineno: 38 fn1
+debug lineno: 30 fn1
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 30 fn1
+debug lineno: 27 print_return_trap
+debug lineno: 82 main
+debug lineno: 41 fn2
+debug lineno: 42 fn2
fn2 here. Calling fn1...
-debug lineno: 30 fn2
-debug lineno: 17 fn1
-debug lineno: 18 fn1
-LINENO 18
-debug lineno: 19 fn1
-LINENO 19
-debug lineno: 20 fn1
+debug lineno: 43 fn2
+debug lineno: 30 fn1
+debug lineno: 31 fn1
+LINENO 31
+debug lineno: 32 fn1
+LINENO 32
+debug lineno: 33 fn1
BASH_SOURCE[0] ./dbg-support.tests
-debug lineno: 21 fn1
+debug lineno: 34 fn1
FUNCNAME[0] fn1
-debug lineno: 22 fn1
-debug lineno: 22 fn1 30 ./dbg-support.tests
-debug lineno: 23 fn1
-debug lineno: 23 fn1 30 fn2 ./dbg-support.tests
-debug lineno: 24 fn1
-debug lineno: 24 fn1 71 main ./dbg-support.tests
-debug lineno: 25 fn1
-./dbg-support.tests: line 25: caller: foo: invalid number
+debug lineno: 35 fn1
+debug lineno: 35 fn1 43 ./dbg-support.tests
+debug lineno: 36 fn1
+debug lineno: 36 fn1 43 fn2 ./dbg-support.tests
+debug lineno: 37 fn1
+debug lineno: 37 fn1 82 main ./dbg-support.tests
+debug lineno: 38 fn1
+./dbg-support.tests: line 38: caller: foo: invalid number
caller: usage: caller [expr]
-debug lineno: 25 fn1
-debug lineno: 17 fn1
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 17 fn1
-debug lineno: 14 print_return_trap
-debug lineno: 28 fn2
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 28 fn2
-debug lineno: 14 print_return_trap
-debug lineno: 72 main
-debug lineno: 33 fn3
-debug lineno: 34 fn3
-LINENO 34
-debug lineno: 35 fn3
+debug lineno: 38 fn1
+debug lineno: 30 fn1
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 30 fn1
+debug lineno: 27 print_return_trap
+debug lineno: 41 fn2
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 41 fn2
+debug lineno: 27 print_return_trap
+debug lineno: 83 main
+debug lineno: 46 fn3
+debug lineno: 47 fn3
+LINENO 47
+debug lineno: 48 fn3
BASH_SOURCE[0] ./dbg-support.tests
-debug lineno: 38 fn3
-debug lineno: 39 fn3
-debug lineno: 40 fn3
-debug lineno: 40 fn3
-debug lineno: 41 fn3
-debug lineno: 42 fn3
-debug lineno: 43 fn3
+debug lineno: 51 fn3
+debug lineno: 52 fn3
+debug lineno: 53 fn3
+debug lineno: 53 fn3
+debug lineno: 54 fn3
+debug lineno: 55 fn3
+debug lineno: 56 fn3
fn3 called from file `./dbg-support.tests' at line 0
-debug lineno: 40 fn3
-debug lineno: 40 fn3
-debug lineno: 41 fn3
-debug lineno: 42 fn3
-debug lineno: 42 fn3
-debug lineno: 43 fn3
+debug lineno: 53 fn3
+debug lineno: 53 fn3
+debug lineno: 54 fn3
+debug lineno: 55 fn3
+debug lineno: 55 fn3
+debug lineno: 56 fn3
main called from file `./dbg-support.tests' at line 0
-debug lineno: 40 fn3
-debug lineno: 40 fn3
-debug lineno: 46 fn3
-debug lineno: 18 source
-SOURCED LINENO 18
-debug lineno: 19 source
+debug lineno: 53 fn3
+debug lineno: 53 fn3
+debug lineno: 59 fn3
+debug lineno: 31 source
+SOURCED LINENO 31
+debug lineno: 32 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-debug lineno: 20 source
-debug lineno: 3 sourced_fn
-debug lineno: 4 sourced_fn
-debug lineno: 5 sourced_fn
-SOURCED FN LINENO 5
-debug lineno: 8 sourced_fn
-debug lineno: 9 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[1]: source called from ./dbg-support.tests at line 46
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 72
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
+debug lineno: 33 source
+debug lineno: 16 sourced_fn
+debug lineno: 17 sourced_fn
+debug lineno: 18 sourced_fn
+SOURCED FN LINENO 18
+debug lineno: 21 sourced_fn
+debug lineno: 22 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[1]: source called from ./dbg-support.tests at line 59
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 83
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
FUNCNAME[3]: main called from ./dbg-support.tests at line 0
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 3 sourced_fn
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 3 sourced_fn
-debug lineno: 14 print_return_trap
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 16 sourced_fn
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 16 sourced_fn
+debug lineno: 27 print_return_trap
+debug lineno: 59 fn3
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 59 fn3
+debug lineno: 27 print_return_trap
debug lineno: 46 fn3
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
return lineno: 46 fn3
-debug lineno: 14 print_return_trap
-debug lineno: 33 fn3
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 33 fn3
-debug lineno: 14 print_return_trap
-debug lineno: 73 main
-debug lineno: 18 source
-SOURCED LINENO 18
-debug lineno: 19 source
+debug lineno: 27 print_return_trap
+debug lineno: 84 main
+debug lineno: 31 source
+SOURCED LINENO 31
+debug lineno: 32 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-debug lineno: 20 source
-debug lineno: 3 sourced_fn
-debug lineno: 4 sourced_fn
-debug lineno: 5 sourced_fn
-SOURCED FN LINENO 5
-debug lineno: 8 sourced_fn
-debug lineno: 9 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[1]: source called from ./dbg-support.tests at line 73
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
+debug lineno: 33 source
+debug lineno: 16 sourced_fn
+debug lineno: 17 sourced_fn
+debug lineno: 18 sourced_fn
+SOURCED FN LINENO 18
+debug lineno: 21 sourced_fn
+debug lineno: 22 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[1]: source called from ./dbg-support.tests at line 84
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 3 sourced_fn
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 3 sourced_fn
-debug lineno: 14 print_return_trap
-debug lineno: 73 main
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 73 main
-debug lineno: 14 print_return_trap
-debug lineno: 76 main
-debug lineno: 79 main
-LINENO 18
-LINENO 19
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 16 sourced_fn
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 16 sourced_fn
+debug lineno: 27 print_return_trap
+debug lineno: 84 main
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 84 main
+debug lineno: 27 print_return_trap
+debug lineno: 87 main
+debug lineno: 90 main
+LINENO 31
+LINENO 32
BASH_SOURCE[0] ./dbg-support.tests
FUNCNAME[0] fn1
-79 ./dbg-support.tests
-79 main ./dbg-support.tests
+90 ./dbg-support.tests
+90 main ./dbg-support.tests
-./dbg-support.tests: line 25: caller: foo: invalid number
+./dbg-support.tests: line 38: caller: foo: invalid number
caller: usage: caller [expr]
-debug lineno: 80 main
+debug lineno: 91 main
fn2 here. Calling fn1...
-LINENO 18
-LINENO 19
+LINENO 31
+LINENO 32
BASH_SOURCE[0] ./dbg-support.tests
FUNCNAME[0] fn1
-30 ./dbg-support.tests
-30 fn2 ./dbg-support.tests
-80 main ./dbg-support.tests
-./dbg-support.tests: line 25: caller: foo: invalid number
+43 ./dbg-support.tests
+43 fn2 ./dbg-support.tests
+91 main ./dbg-support.tests
+./dbg-support.tests: line 38: caller: foo: invalid number
caller: usage: caller [expr]
-debug lineno: 81 main
-LINENO 34
+debug lineno: 92 main
+LINENO 47
BASH_SOURCE[0] ./dbg-support.tests
fn3 called from file `./dbg-support.tests' at line 0
main called from file `./dbg-support.tests' at line 0
-SOURCED LINENO 18
+SOURCED LINENO 31
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-SOURCED FN LINENO 5
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-FUNCNAME[1]: source called from ./dbg-support.tests at line 46
-FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 81
+SOURCED FN LINENO 18
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+FUNCNAME[1]: source called from ./dbg-support.tests at line 59
+FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 92
FUNCNAME[3]: main called from ./dbg-support.tests at line 0
-debug lineno: 82 main
+debug lineno: 93 main
fn4 here. Calling fn3...
-LINENO 34
+LINENO 47
BASH_SOURCE[0] ./dbg-support.tests
-fn3 called from file `./dbg-support.tests' at line 82
+fn3 called from file `./dbg-support.tests' at line 93
fn4 called from file `./dbg-support.tests' at line 0
main called from file `./dbg-support.tests' at line 0
-SOURCED LINENO 18
+SOURCED LINENO 31
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-SOURCED FN LINENO 5
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-FUNCNAME[1]: source called from ./dbg-support.tests at line 46
-FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 51
-FUNCNAME[3]: fn4 called from ./dbg-support.tests at line 82
+SOURCED FN LINENO 18
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+FUNCNAME[1]: source called from ./dbg-support.tests at line 59
+FUNCNAME[2]: fn3 called from ./dbg-support.tests at line 64
+FUNCNAME[3]: fn4 called from ./dbg-support.tests at line 93
FUNCNAME[4]: main called from ./dbg-support.tests at line 0
-debug lineno: 83 main
-SOURCED LINENO 18
+debug lineno: 94 main
+SOURCED LINENO 31
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-SOURCED FN LINENO 5
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-FUNCNAME[1]: source called from ./dbg-support.tests at line 83
+SOURCED FN LINENO 18
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+FUNCNAME[1]: source called from ./dbg-support.tests at line 94
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
-return lineno: 83 main
-debug lineno: 86 main
-debug lineno: 89 main
-debug lineno: 18 source
-SOURCED LINENO 18
-debug lineno: 19 source
+return lineno: 94 main
+debug lineno: 97 main
+debug lineno: 100 main
+debug lineno: 31 source
+SOURCED LINENO 31
+debug lineno: 32 source
SOURCED BASH_SOURCE[0] ./dbg-support.sub
-debug lineno: 20 source
-debug lineno: 3 sourced_fn
-debug lineno: 4 sourced_fn
-debug lineno: 5 sourced_fn
-SOURCED FN LINENO 5
-debug lineno: 8 sourced_fn
-debug lineno: 9 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 20
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[1]: source called from ./dbg-support.tests at line 89
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
+debug lineno: 33 source
+debug lineno: 16 sourced_fn
+debug lineno: 17 sourced_fn
+debug lineno: 18 sourced_fn
+SOURCED FN LINENO 18
+debug lineno: 21 sourced_fn
+debug lineno: 22 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[0]: sourced_fn called from ./dbg-support.sub at line 33
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[1]: source called from ./dbg-support.tests at line 100
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
FUNCNAME[2]: main called from ./dbg-support.tests at line 0
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 3 sourced_fn
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 3 sourced_fn
-debug lineno: 14 print_return_trap
-debug lineno: 89 main
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 89 main
-debug lineno: 14 print_return_trap
-debug lineno: 90 main
-debug lineno: 93 main
-debug lineno: 93 main
-debug lineno: 94 main
-debug lineno: 97 main
-debug lineno: 93 main
-debug lineno: 93 main
-debug lineno: 94 main
-debug lineno: 97 main
-debug lineno: 93 main
-debug lineno: 93 main
-debug lineno: 94 main
-debug lineno: 95 main
-Hit 2
-debug lineno: 97 main
-debug lineno: 93 main
-debug lineno: 93 main
-debug lineno: 103 main
-SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 103 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 16 sourced_fn
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 16 sourced_fn
+debug lineno: 27 print_return_trap
+debug lineno: 100 main
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 100 main
+debug lineno: 27 print_return_trap
+debug lineno: 101 main
+debug lineno: 104 main
+debug lineno: 104 main
+debug lineno: 105 main
+debug lineno: 108 main
+debug lineno: 104 main
+debug lineno: 104 main
+debug lineno: 105 main
+debug lineno: 108 main
+debug lineno: 104 main
debug lineno: 104 main
-SOURCED FN LINENO 5 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 104 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
debug lineno: 105 main
debug lineno: 106 main
-SOURCED FN LINENO 5
-FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 106
+Hit 2
+debug lineno: 108 main
+debug lineno: 104 main
+debug lineno: 104 main
+debug lineno: 114 main
+SOURCED FN LINENO 18 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 114 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
+debug lineno: 115 main
+SOURCED FN LINENO 18 FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 115 FUNCNAME[1]: main called from ./dbg-support.tests at line 0
+debug lineno: 116 main
+debug lineno: 117 main
+SOURCED FN LINENO 18
+FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 117
FUNCNAME[1]: main called from ./dbg-support.tests at line 0
-debug lineno: 110 main
-debug lineno: 111 main
-debug lineno: 3 sourced_fn
-debug lineno: 4 sourced_fn
-debug lineno: 5 sourced_fn
-SOURCED FN LINENO 5
-debug lineno: 8 sourced_fn
-debug lineno: 9 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
-FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 111
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 11 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 12 sourced_fn
-debug lineno: 13 sourced_fn
+debug lineno: 121 main
+debug lineno: 122 main
+debug lineno: 16 sourced_fn
+debug lineno: 17 sourced_fn
+debug lineno: 18 sourced_fn
+SOURCED FN LINENO 18
+debug lineno: 21 sourced_fn
+debug lineno: 22 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
+FUNCNAME[0]: sourced_fn called from ./dbg-support.tests at line 122
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 24 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 25 sourced_fn
+debug lineno: 26 sourced_fn
FUNCNAME[1]: main called from ./dbg-support.tests at line 0
-debug lineno: 10 sourced_fn
-debug lineno: 10 sourced_fn
-debug lineno: 3 sourced_fn
-debug lineno: 12 print_return_trap
-debug lineno: 13 print_return_trap
-return lineno: 3 sourced_fn
-debug lineno: 14 print_return_trap
-debug lineno: 114 main
-debug lineno: 119 main
-debug lineno: 123 main
+debug lineno: 23 sourced_fn
+debug lineno: 23 sourced_fn
+debug lineno: 16 sourced_fn
+debug lineno: 25 print_return_trap
+debug lineno: 26 print_return_trap
+return lineno: 16 sourced_fn
+debug lineno: 27 print_return_trap
+debug lineno: 125 main
+debug lineno: 130 main
+debug lineno: 134 main
got it
-debug lineno: 131 main
-debug lineno: 132 main
-debug lineno: 133 main
-debug lineno: 132 main
-debug lineno: 133 main
-debug lineno: 131 main
-debug lineno: 132 main
-debug lineno: 133 main
-debug lineno: 132 main
-debug lineno: 133 main
-debug lineno: 137 main
+debug lineno: 142 main
+debug lineno: 143 main
+debug lineno: 144 main
+debug lineno: 143 main
+debug lineno: 144 main
+debug lineno: 142 main
+debug lineno: 143 main
+debug lineno: 144 main
+debug lineno: 143 main
+debug lineno: 144 main
+debug lineno: 148 main
main: calling f1
f1: calling f2
f2: calling f3
@@ -364,7 +364,7 @@ deep 6
4 x
5 1
FUNCNAME stack: f3 f2 f1 main
-26 f2 ./dbg-support3.sub
+39 f2 ./dbg-support3.sub
f3: returning
f2: return from f3
f1: return from f2
diff --git a/tests/dbg-support.sub b/tests/dbg-support.sub
index f68f8d9b..8c82c80c 100644
--- a/tests/dbg-support.sub
+++ b/tests/dbg-support.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# This file is intended to be sourced from one of the bashdb test programs
sourced_fn() {
diff --git a/tests/dbg-support.tests b/tests/dbg-support.tests
index ad06d011..b4a58e4b 100755..100644
--- a/tests/dbg-support.tests
+++ b/tests/dbg-support.tests
@@ -1,4 +1,17 @@
-#!../bash
+# 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 <http://www.gnu.org/licenses/>.
+#
+
#
# Test correct functioning bash debug support not via the bashdb
# debugger but merely by printing via print_trap()
@@ -51,8 +64,6 @@ fn4() {
fn3
}
-
-#!../bash
#
# Test of support for debugging facilities in bash
#
@@ -105,7 +116,7 @@ echo `sourced_fn`
x=$((sourced_fn))
x={ sourced_fn }
-# Make sure we step into sourced_fn as a comand when we request to do so.
+# Make sure we step into sourced_fn as a command when we request to do so.
# Vanilla bash 2.0 doesn't do.
set -o functrace
x={ sourced_fn }
@@ -135,8 +146,3 @@ for i in 0 1 ; do
done
${THIS_SH} ./dbg-support3.sub
-
-#;;; Local Variables: ***
-#;;; mode:shell-script ***
-#;;; eval: (sh-set-shell "bash") ***
-#;;; End: ***
diff --git a/tests/dbg-support2.right b/tests/dbg-support2.right
index c9d884e6..5727d1f1 100644
--- a/tests/dbg-support2.right
+++ b/tests/dbg-support2.right
@@ -1,7 +1,7 @@
-lineno: 17 (6) main
-lineno: 18 (6) main
+lineno: 29 (18) main
+lineno: 30 (18) main
x is 1
-lineno: 19 (6) main
-lineno: 20 (6) main
-lineno: 21 (6) main
+lineno: 31 (18) main
+lineno: 32 (18) main
+lineno: 33 (18) main
x is 1
diff --git a/tests/dbg-support2.tests b/tests/dbg-support2.tests
index fdc0f31e..c33251d3 100755..100644
--- a/tests/dbg-support2.tests
+++ b/tests/dbg-support2.tests
@@ -1,4 +1,16 @@
-#!../bash
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# Test correct trap return codes = 2 means skip execution.
shopt -s extdebug
@@ -19,8 +31,3 @@ echo "x is $x"
debug_exit=2
x=2
echo "x is $x"
-
-#;;; Local Variables: ***
-#;;; mode:shell-script ***
-#;;; eval: (sh-set-shell "bash") ***
-#;;; End: ***
diff --git a/tests/dbg-support3.sub b/tests/dbg-support3.sub
index cc52c654..146831f4 100644
--- a/tests/dbg-support3.sub
+++ b/tests/dbg-support3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s extdebug
callstack(){
diff --git a/tests/dollar-at-star b/tests/dollar-at-star
index 0f713dc3..d4808989 100755
--- a/tests/dollar-at-star
+++ b/tests/dollar-at-star
@@ -242,6 +242,10 @@ ${THIS_SH} ./dollar-at-star7.sub
# members separated by spaces
${THIS_SH} ./dollar-at-star8.sub
+# more tests of the expansions of $@ and $* (and their array equivalents)
+# with different values for IFS
+${THIS_SH} ./dollar-at-star9.sub
+
# tests for special expansion of "$*" and "${array[*]}" when used with other
# expansions -- bugs through bash-2.05b
${THIS_SH} ./dollar-star1.sub
@@ -302,4 +306,8 @@ ${THIS_SH} ./dollar-at7.sub
# IFS is null
${THIS_SH} ./dollar-star9.sub
+# more tests for expansions of $* when not splitting with IFS set or unset and
+# null strings as the positional parameters
+${THIS_SH} ./dollar-star10.sub
+
exit 0
diff --git a/tests/dollar-at-star1.sub b/tests/dollar-at-star1.sub
index 0036915b..ef15efc3 100644
--- a/tests/dollar-at-star1.sub
+++ b/tests/dollar-at-star1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# from dan douglas
expassign()
{
diff --git a/tests/dollar-at-star2.sub b/tests/dollar-at-star2.sub
index 780548ed..64ab1eb7 100644
--- a/tests/dollar-at-star2.sub
+++ b/tests/dollar-at-star2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
OIFS="$IFS"
foo=' ,foo'
set -- "$foo"
diff --git a/tests/dollar-at-star3.sub b/tests/dollar-at-star3.sub
index b37d64af..da05444b 100644
--- a/tests/dollar-at-star3.sub
+++ b/tests/dollar-at-star3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
unset f ; f=abcd
first_char=${f[@]:0:1}
diff --git a/tests/dollar-at-star4.sub b/tests/dollar-at-star4.sub
index be2892dd..9f7da8e8 100644
--- a/tests/dollar-at-star4.sub
+++ b/tests/dollar-at-star4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests for quoted and unquoted, split and unsplit expansions of $@ and $*
# Posix interpretation 221 speaks to this issue
diff --git a/tests/dollar-at-star5.sub b/tests/dollar-at-star5.sub
index 3bd7b0f8..d07c61a0 100644
--- a/tests/dollar-at-star5.sub
+++ b/tests/dollar-at-star5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# testing various combinations of quoted and unquoted expansions of $@, and
# whether they generate empty words after expansion
diff --git a/tests/dollar-at-star6.sub b/tests/dollar-at-star6.sub
index 7366df50..09353b8c 100644
--- a/tests/dollar-at-star6.sub
+++ b/tests/dollar-at-star6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
OIFS="$IFS"
arr=(a b c)
diff --git a/tests/dollar-at-star7.sub b/tests/dollar-at-star7.sub
index 47cb37f6..e4e63b7b 100644
--- a/tests/dollar-at-star7.sub
+++ b/tests/dollar-at-star7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS='' # testing with only empty IFS
set -- this is a test
diff --git a/tests/dollar-at-star9.sub b/tests/dollar-at-star9.sub
new file mode 100644
index 00000000..e5062f79
--- /dev/null
+++ b/tests/dollar-at-star9.sub
@@ -0,0 +1,278 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+IFS=$' \t\n' # or any other IFS
+set -- ''
+recho ${v= "$*" }
+recho "$v"
+unset -v v
+
+IFS=''
+set -- '' ''
+recho ${v= "$*" }
+recho "$v"
+unset -v v
+
+IFS=$' \t\n' # or any other IFS
+unset -v v
+
+set -- ''
+recho ${v= "$@" }
+recho "$v"
+unset v
+recho ${v= $@ }
+recho "$v"
+unset v
+recho ${v= $@"" }
+recho "$v"
+unset v
+recho ${v= ${@} }
+recho "$v"
+unset v
+recho ${v= ${@}"" }
+recho "$v"
+unset v
+
+set -- '' ''
+recho ${v= $@ }
+recho "$v"
+unset v
+recho ${v= "$@" }
+recho "$v"
+unset v
+recho "${v= $@}"
+recho "$v"
+unset v
+recho ${v= "$@"}
+recho "$v"
+unset v
+
+IFS=
+
+set -- X
+X=X
+
+recho ${0+ "$@" }
+recho ${0+ $@ }
+recho ${0+ $* }
+
+recho ${0+ "$X" }
+recho ${0+ $X }
+recho ${0+ $X }
+
+recho ${0+ "$@" }
+recho "$Y"
+unset Y
+recho ${0+ $@ }
+recho "$Y"
+unset Y
+recho ${0+ $* }
+recho "$Y"
+unset Y
+
+recho ${Y:= "$X" }
+recho "$Y"
+unset Y
+recho ${Y:= $X }
+recho "$Y"
+unset Y
+recho ${Y:= $X }
+recho "$Y"
+unset Y
+
+IFS=
+
+unset -v X Y
+
+set -- X Y
+X='X Y'
+
+recho ${0+ "$@" }
+recho ${0+ $@ }
+recho ${0+ $* }
+
+recho ${0+ "$X" }
+recho ${0+ $X }
+recho ${0+ $X }
+
+recho ${Y:= "$@" }
+recho "$Y"
+unset Y
+recho ${Y:= $@ }
+recho "$Y"
+unset Y
+recho ${Y:= $* }
+recho "$Y"
+unset Y
+
+recho ${Y:= "$X" }
+recho "$Y"
+unset Y
+recho ${Y:= $X }
+recho "$Y"
+unset Y
+recho ${Y:= $X }
+recho "$Y"
+unset Y
+
+IFS=''
+set -- ' X '
+
+unset x y
+
+x=$*
+y=${*:1}
+
+recho "$x"
+recho "$y"
+
+unset x y
+
+recho ${x=$*}
+recho ${y=${*:1}}
+
+set -- b a
+declare -A A=([b]= [a]=)
+
+x=$*
+y=${!A[*]}
+
+unset A
+
+recho "$x"
+recho "$y"
+
+unset x y
+
+recho ${x=$*}
+recho ${y=${!A[*]}}
+
+unset x y
+
+recho ${x-$*}
+recho ${y-${!A[*]}} # this isn't right yet
+
+IFS=:
+set -- a b
+ind=*
+
+unset x y
+
+x=$*
+y=${!ind}
+
+recho "$x"
+recho "$y"
+
+unset x y
+
+recho ${x-$*}
+recho ${y-${!ind}} # this isn't right yet
+
+unset x y
+
+recho ${x=$*}
+recho ${y=${!ind}}
+
+set -- ' X '
+IFS=$' \t\n'
+
+x=$*
+y=${!ind};
+
+recho "$x"
+recho "$y"
+
+IFS=''
+x=$*
+y=${!ind}
+
+recho "$x"
+recho "$y"
+
+IFS=:
+set -- a b
+ind=*
+
+unset x y
+
+recho ${x-$*}
+recho ${y-${!ind}} # this isn't right yet
+
+unset x y
+
+recho ${x=$*}
+recho ${y=${!ind}}
+
+set -- ' X '
+IFS=$' \t\n'
+
+unset x y
+
+x=$*
+y=${!ind};
+
+recho "$x"
+recho "$y"
+
+IFS=''
+x=$*
+y=${!ind}
+
+recho "$x"
+recho "$y"
+
+IFS=''
+set -- $'\177'
+
+unset -v var
+
+recho "${*:1}"
+var=${*:1}
+recho "$var"
+
+unset var
+recho ${var=${*:1}}
+recho "$var"
+
+declare -a a=($'\177')
+
+unset var
+var=${a[*]:0}
+recho "$var"
+
+unset var
+recho ${var=${a[*]:0}}
+unset var
+
+set -- $'\177'
+ind='*'
+
+recho $*
+var=${!ind}
+recho "$var"
+
+unset var
+recho ${var=${!ind}}
+recho "$var"
+
+declare -A A=([0]=$'\177')
+
+unset var
+var=${A[*]:0}
+recho "$var"
+
+# this isn't really right yet
+unset var
+recho ${var=${A[*]:0}}
+recho "$var"
diff --git a/tests/dollar-at1.sub b/tests/dollar-at1.sub
index 6d407863..c5079d64 100644
--- a/tests/dollar-at1.sub
+++ b/tests/dollar-at1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo_argc()
{
echo $#
diff --git a/tests/dollar-at2.sub b/tests/dollar-at2.sub
index c079a295..16defbdc 100644
--- a/tests/dollar-at2.sub
+++ b/tests/dollar-at2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
t1()
{
xxx="echo $@"
diff --git a/tests/dollar-at5.sub b/tests/dollar-at5.sub
index 75e2249f..9b26c392 100644
--- a/tests/dollar-at5.sub
+++ b/tests/dollar-at5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
args() { printf '<%s> ' "$@"; echo; }
set -- 1 2 3 4 5
diff --git a/tests/dollar-at6.sub b/tests/dollar-at6.sub
index 039e11f8..791fd899 100644
--- a/tests/dollar-at6.sub
+++ b/tests/dollar-at6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- '';
recho "${@}" x
diff --git a/tests/dollar-at7.sub b/tests/dollar-at7.sub
index 311a6fef..cde11648 100644
--- a/tests/dollar-at7.sub
+++ b/tests/dollar-at7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- ''
recho 1 ''"$@"
diff --git a/tests/dollar-star1.sub b/tests/dollar-star1.sub
index 63a9ef86..3e5ec36d 100644
--- a/tests/dollar-star1.sub
+++ b/tests/dollar-star1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- a b c
x=(a b c); IFS='|'
diff --git a/tests/dollar-star10.sub b/tests/dollar-star10.sub
new file mode 100644
index 00000000..fce9ec1f
--- /dev/null
+++ b/tests/dollar-star10.sub
@@ -0,0 +1,92 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+oIFS=$IFS
+
+set -- ''
+
+unset v
+recho ${v= ''}
+recho $v
+unset v
+recho ${v=''}
+recho $v
+unset v
+recho ${v= $*}
+recho $v
+unset v
+recho ${v=$*}
+recho $v
+unset v
+recho ${v='' }
+recho $v
+unset v
+recho ${v= '' }
+recho $v
+unset v
+recho ${v=$* }
+recho $v
+unset v
+recho ${v= $* }
+recho $v
+
+unset IFS
+
+unset v
+recho ${v= ''}
+recho $v
+unset v
+recho ${v=''}
+recho $v
+unset v
+recho ${v= $*}
+recho $v
+unset v
+recho ${v=$*}
+recho $v
+unset v
+recho ${v='' }
+recho $v
+unset v
+recho ${v= '' }
+recho $v
+unset v
+recho ${v=$* }
+recho $v
+unset v
+recho ${v= $* }
+recho $v
+
+unset -v v
+IFS=$oIFS
+
+# This shouldn't output anything
+set -- '' ''
+
+unset -v v
+recho ${v=$*}
+unset -v v
+recho ${v= $*}
+unset -v v
+recho ${v=$* }
+unset -v v
+recho ${v= $* }
+
+unset -v v IFS
+recho ${v=$*}
+unset -v v
+recho ${v= $*}
+unset -v v
+recho ${v= $* }
+unset -v v
+recho ${v= $*}
diff --git a/tests/dollar-star2.sub b/tests/dollar-star2.sub
index 844a2972..78e00a0c 100644
--- a/tests/dollar-star2.sub
+++ b/tests/dollar-star2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set A B
IFS=
diff --git a/tests/dollar-star3.sub b/tests/dollar-star3.sub
index 8cf4bb22..a6ef09fe 100644
--- a/tests/dollar-star3.sub
+++ b/tests/dollar-star3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=/
#file=/mnt/cdrom/RedHat/RPMS
#recho "${file[*]:0:3}"
diff --git a/tests/dollar-star5.sub b/tests/dollar-star5.sub
index 8448bf3c..abd8bcc2 100644
--- a/tests/dollar-star5.sub
+++ b/tests/dollar-star5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- a b
IFS=
diff --git a/tests/dollar-star6.sub b/tests/dollar-star6.sub
index dbd59ecf..095ec04f 100644
--- a/tests/dollar-star6.sub
+++ b/tests/dollar-star6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
recho "A${*:-w}R"
recho "A${*-w}R"
recho "A${*}R"
diff --git a/tests/dollar-star7.sub b/tests/dollar-star7.sub
index 72d6c24f..db352bfc 100644
--- a/tests/dollar-star7.sub
+++ b/tests/dollar-star7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# if IFS side effects in ${IFS=} assignments take place, how do you cope with
# later changes to IFS in the same set of expansions? You've already
# committed to using the first character of the (old) IFS to expand $* in
diff --git a/tests/dollar-star8.sub b/tests/dollar-star8.sub
index 72ba1080..e6265646 100644
--- a/tests/dollar-star8.sub
+++ b/tests/dollar-star8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=
set "abc" "def ghi" "jkl"
diff --git a/tests/dollar-star9.sub b/tests/dollar-star9.sub
index 26d0ed21..d46de46a 100644
--- a/tests/dollar-star9.sub
+++ b/tests/dollar-star9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- 1 2
IFS=
diff --git a/tests/dollar.right b/tests/dollar.right
index d72361f9..09910d7e 100644
--- a/tests/dollar.right
+++ b/tests/dollar.right
@@ -226,6 +226,7 @@ null fields in rhs
null string with unquoted $@
argv[1] = <>
null string with quoted $@
+argv[1] = <>
assignment
argv[1] = <>
variable
@@ -301,6 +302,103 @@ 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
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = <>
+argv[1] = < X >
+argv[1] = <>
+argv[1] = < X >
+argv[1] = <>
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X>
+argv[2] = <Y >
+argv[1] = < X>
+argv[2] = <Y >
+argv[1] = < X>
+argv[2] = <Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < XY >
+argv[1] = < XY >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X Y >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = <ba>
+argv[1] = <ba>
+argv[1] = <ba>
+argv[1] = <b>
+argv[2] = <a>
+argv[1] = <a:b>
+argv[1] = <a:b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = <a>
+argv[2] = <b>
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = < X >
+argv[1] = <^?>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <>
+argv[1] = <>
xa|xb|xc
xa|xb|xc
a|b|c
diff --git a/tests/dstack.right b/tests/dstack.right
index 8f27d28b..8f9d38c0 100644
--- a/tests/dstack.right
+++ b/tests/dstack.right
@@ -1,13 +1,13 @@
-./dstack.tests: line 6: pushd: /tmp/xxx-notthere: No such file or directory
-./dstack.tests: line 9: pushd: no other directory
-./dstack.tests: line 10: popd: directory stack empty
-./dstack.tests: line 13: pushd: -m: invalid number
+./dstack.tests: line 19: pushd: /tmp/xxx-notthere: No such file or directory
+./dstack.tests: line 22: pushd: no other directory
+./dstack.tests: line 23: popd: directory stack empty
+./dstack.tests: line 26: pushd: -m: invalid number
pushd: usage: pushd [-n] [+N | -N | dir]
-./dstack.tests: line 14: popd: -m: invalid number
+./dstack.tests: line 27: popd: -m: invalid number
popd: usage: popd [-n] [+N | -N]
-./dstack.tests: line 15: dirs: -m: invalid number
+./dstack.tests: line 28: dirs: -m: invalid number
dirs: usage: dirs [-clpv] [+N] [-N]
-./dstack.tests: line 16: dirs: 7: invalid option
+./dstack.tests: line 29: dirs: 7: invalid option
dirs: usage: dirs [-clpv] [+N] [-N]
/
ok
@@ -31,12 +31,12 @@ ok
/tmp
/usr
/usr
-./dstack.tests: line 58: dirs: 9: directory stack index out of range
-./dstack.tests: line 58: dirs: 9: directory stack index out of range
-./dstack.tests: line 59: pushd: +9: directory stack index out of range
-./dstack.tests: line 59: pushd: -9: directory stack index out of range
-./dstack.tests: line 60: popd: +9: directory stack index out of range
-./dstack.tests: line 60: popd: -9: directory stack index out of range
+./dstack.tests: line 71: dirs: 9: directory stack index out of range
+./dstack.tests: line 71: dirs: 9: directory stack index out of range
+./dstack.tests: line 72: pushd: +9: directory stack index out of range
+./dstack.tests: line 72: pushd: -9: directory stack index out of range
+./dstack.tests: line 73: popd: +9: directory stack index out of range
+./dstack.tests: line 73: popd: -9: directory stack index out of range
/tmp /etc /
/tmp /etc /
/tmp /etc /
diff --git a/tests/dstack.tests b/tests/dstack.tests
index 49b97d3f..116e935f 100644
--- a/tests/dstack.tests
+++ b/tests/dstack.tests
@@ -1,8 +1,21 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
export LC_ALL=C
export LANG=C
dirs -c
-# error -- nonexistant directory
+# error -- non-existent directory
pushd /tmp/xxx-notthere
# errors -- empty stack
diff --git a/tests/dstack2.tests b/tests/dstack2.tests
index 3aa105b3..08733198 100644
--- a/tests/dstack2.tests
+++ b/tests/dstack2.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
wdir=$PWD
cd /
diff --git a/tests/dynvar.tests b/tests/dynvar.tests
index a01f5ed2..5aefab64 100644
--- a/tests/dynvar.tests
+++ b/tests/dynvar.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# specvar -- test some of the dynamic variables
# BASHPID
@@ -37,7 +50,7 @@ unset before after
# EPOCHSECONDS
# not exact, but should work
-
+# could also use python -c 'import time; ts = int(time.time()); print(ts)'
now1=$(perl -e 'print time')
now2=$EPOCHSECONDS
diff --git a/tests/errors.right b/tests/errors.right
index 83338ae0..be0c8959 100644
--- a/tests/errors.right
+++ b/tests/errors.right
@@ -1,109 +1,108 @@
-./errors.tests: line 17: alias: -x: invalid option
+./errors.tests: line 30: alias: -x: invalid option
alias: usage: alias [-p] [name[=value] ... ]
-./errors.tests: line 18: unalias: -x: invalid option
+./errors.tests: line 31: unalias: -x: invalid option
unalias: usage: unalias [-a] name [name ...]
-./errors.tests: line 19: alias: hoowah: not found
-./errors.tests: line 20: unalias: hoowah: not found
-./errors.tests: line 23: `1': not a valid identifier
+./errors.tests: line 32: alias: hoowah: not found
+./errors.tests: line 33: unalias: hoowah: not found
+./errors.tests: line 36: `1': not a valid identifier
declare -fr func
-./errors.tests: line 36: func: readonly function
-./errors.tests: line 39: unset: -x: invalid option
+./errors.tests: line 49: func: readonly function
+./errors.tests: line 52: unset: -x: invalid option
unset: usage: unset [-f] [-v] [-n] [name ...]
-./errors.tests: line 42: unset: func: cannot unset: readonly function
-./errors.tests: line 45: declare: func: readonly function
-./errors.tests: line 49: unset: XPATH: cannot unset: readonly variable
-./errors.tests: line 52: unset: `/bin/sh': not a valid identifier
-./errors.tests: line 55: unset: cannot simultaneously unset a function and a variable
-./errors.tests: line 58: declare: -z: invalid option
-declare: usage: declare [-aAfFgilnrtux] [-p] [name[=value] ...]
-./errors.tests: line 60: declare: `-z': not a valid identifier
-./errors.tests: line 61: declare: `/bin/sh': not a valid identifier
-./errors.tests: line 65: declare: cannot use `-f' to make functions
-./errors.tests: line 68: exec: -i: invalid option
-exec: usage: exec [-cl] [-a name] [command [arguments ...]] [redirection ...]
-./errors.tests: line 72: export: XPATH: not a function
-./errors.tests: line 75: break: only meaningful in a `for', `while', or `until' loop
-./errors.tests: line 76: continue: only meaningful in a `for', `while', or `until' loop
-./errors.tests: line 79: shift: label: numeric argument required
-./errors.tests: line 84: shift: too many arguments
-./errors.tests: line 90: let: expression expected
-./errors.tests: line 93: local: can only be used in a function
-./errors.tests: line 96: logout: not login shell: use `exit'
-./errors.tests: line 99: hash: notthere: not found
-./errors.tests: line 102: hash: -v: invalid option
+./errors.tests: line 55: unset: func: cannot unset: readonly function
+./errors.tests: line 58: declare: func: readonly function
+./errors.tests: line 62: unset: XPATH: cannot unset: readonly variable
+./errors.tests: line 68: unset: cannot simultaneously unset a function and a variable
+./errors.tests: line 71: declare: -z: invalid option
+declare: usage: declare [-aAfFgiIlnrtux] [-p] [name[=value] ...]
+./errors.tests: line 73: declare: `-z': not a valid identifier
+./errors.tests: line 74: declare: `/bin/sh': not a valid identifier
+./errors.tests: line 78: declare: cannot use `-f' to make functions
+./errors.tests: line 81: exec: -i: invalid option
+exec: usage: exec [-cl] [-a name] [command [argument ...]] [redirection ...]
+./errors.tests: line 85: export: XPATH: not a function
+./errors.tests: line 88: break: only meaningful in a `for', `while', or `until' loop
+./errors.tests: line 89: continue: only meaningful in a `for', `while', or `until' loop
+./errors.tests: line 92: shift: label: numeric argument required
+./errors.tests: line 97: shift: too many arguments
+./errors.tests: line 103: let: expression expected
+./errors.tests: line 106: local: can only be used in a function
+./errors.tests: line 109: logout: not login shell: use `exit'
+./errors.tests: line 112: hash: notthere: not found
+./errors.tests: line 115: hash: -v: invalid option
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: 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
-./errors.tests: line 130: shift: -2: shift count out of range
-./errors.tests: line 133: shopt: no_such_option: invalid shell option name
-./errors.tests: line 134: shopt: no_such_option: invalid shell option name
-./errors.tests: line 137: umask: 09: octal number out of range
-./errors.tests: line 138: umask: `:': invalid symbolic mode character
-./errors.tests: line 139: umask: `:': invalid symbolic mode operator
-./errors.tests: line 142: umask: -i: invalid option
+./errors.tests: line 119: hash: hashing disabled
+./errors.tests: line 122: export: `AA[4]': not a valid identifier
+./errors.tests: line 123: readonly: `AA[4]': not a valid identifier
+./errors.tests: line 126: unset: [-2]: bad array subscript
+./errors.tests: line 130: AA: readonly variable
+./errors.tests: line 134: AA: readonly variable
+./errors.tests: line 142: shift: 5: shift count out of range
+./errors.tests: line 143: shift: -2: shift count out of range
+./errors.tests: line 146: shopt: no_such_option: invalid shell option name
+./errors.tests: line 147: shopt: no_such_option: invalid shell option name
+./errors.tests: line 150: umask: 09: octal number out of range
+./errors.tests: line 151: umask: `:': invalid symbolic mode character
+./errors.tests: line 152: umask: `:': invalid symbolic mode operator
+./errors.tests: line 155: umask: -i: invalid option
umask: usage: umask [-p] [-S] [mode]
-./errors.tests: line 146: umask: `u': invalid symbolic mode character
-./errors.tests: line 155: VAR: readonly variable
-./errors.tests: line 158: declare: VAR: readonly variable
-./errors.tests: line 159: declare: VAR: readonly variable
-./errors.tests: line 161: declare: unset: not found
-./errors.tests: line 164: VAR: readonly variable
-./errors.tests: command substitution: line 168: syntax error near unexpected token `)'
-./errors.tests: command substitution: line 168: ` for z in 1 2 3; do )'
-./errors.tests: command substitution: line 169: syntax error near unexpected token `done'
-./errors.tests: command substitution: line 169: ` for z in 1 2 3; done )'
-./errors.tests: line 171: cd: HOME not set
-./errors.tests: line 172: cd: /tmp/xyz.bash: No such file or directory
-./errors.tests: line 174: cd: OLDPWD not set
-./errors.tests: line 175: cd: /bin/sh: Not a directory
-./errors.tests: line 177: cd: /tmp/cd-notthere: No such file or directory
-./errors.tests: line 180: .: filename argument required
+./errors.tests: line 159: umask: `u': invalid symbolic mode character
+./errors.tests: line 168: VAR: readonly variable
+./errors.tests: line 171: declare: VAR: readonly variable
+./errors.tests: line 172: declare: VAR: readonly variable
+./errors.tests: line 174: declare: unset: not found
+./errors.tests: line 177: VAR: readonly variable
+./errors.tests: command substitution: line 181: syntax error near unexpected token `)'
+./errors.tests: command substitution: line 181: ` for z in 1 2 3; do )'
+./errors.tests: command substitution: line 182: syntax error near unexpected token `done'
+./errors.tests: command substitution: line 182: ` for z in 1 2 3; done )'
+./errors.tests: line 184: cd: HOME not set
+./errors.tests: line 185: cd: /tmp/xyz.bash: No such file or directory
+./errors.tests: line 187: cd: OLDPWD not set
+./errors.tests: line 188: cd: /bin/sh: Not a directory
+./errors.tests: line 190: cd: /tmp/cd-notthere: No such file or directory
+./errors.tests: line 193: .: filename argument required
.: usage: . filename [arguments]
-./errors.tests: line 181: source: filename argument required
+./errors.tests: line 194: source: filename argument required
source: usage: source filename [arguments]
-./errors.tests: line 184: .: -i: invalid option
+./errors.tests: line 197: .: -i: invalid option
.: usage: . filename [arguments]
-./errors.tests: line 187: set: -q: invalid option
+./errors.tests: line 200: set: -q: invalid option
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
-./errors.tests: line 190: enable: sh: not a shell builtin
-./errors.tests: line 190: enable: bash: not a shell builtin
-./errors.tests: line 193: shopt: cannot set and unset shell options simultaneously
-./errors.tests: line 196: read: var: invalid timeout specification
-./errors.tests: line 199: read: `/bin/sh': not a valid identifier
-./errors.tests: line 202: VAR: readonly variable
-./errors.tests: line 205: readonly: -x: invalid option
+./errors.tests: line 203: enable: sh: not a shell builtin
+./errors.tests: line 203: enable: bash: not a shell builtin
+./errors.tests: line 206: shopt: cannot set and unset shell options simultaneously
+./errors.tests: line 209: read: var: invalid timeout specification
+./errors.tests: line 212: read: `/bin/sh': not a valid identifier
+./errors.tests: line 215: VAR: readonly variable
+./errors.tests: line 218: readonly: -x: invalid option
readonly: usage: readonly [-aAf] [name[=value] ...] or readonly -p
-./errors.tests: line 208: eval: -i: invalid option
+./errors.tests: line 221: eval: -i: invalid option
eval: usage: eval [arg ...]
-./errors.tests: line 209: command: -i: invalid option
+./errors.tests: line 222: command: -i: invalid option
command: usage: command [-pVv] command [arg ...]
-./errors.tests: line 212: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
-./errors.tests: line 213: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
-./errors.tests: line 216: trap: NOSIG: invalid signal specification
-./errors.tests: line 219: trap: -s: invalid option
+./errors.tests: line 225: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
+./errors.tests: line 226: /bin/sh + 0: syntax error: operand expected (error token is "/bin/sh + 0")
+./errors.tests: line 229: trap: NOSIG: invalid signal specification
+./errors.tests: line 232: trap: -s: invalid option
trap: usage: trap [-lp] [[arg] signal_spec ...]
-./errors.tests: line 225: return: can only `return' from a function or sourced script
-./errors.tests: line 229: break: 0: loop count out of range
-./errors.tests: line 233: continue: 0: loop count out of range
-./errors.tests: line 238: builtin: bash: not a shell builtin
-./errors.tests: line 242: bg: no job control
-./errors.tests: line 243: fg: no job control
-./errors.tests: line 246: kill: -s: option requires an argument
-./errors.tests: line 248: kill: S: invalid signal specification
-./errors.tests: line 250: kill: `': not a pid or valid job spec
+./errors.tests: line 238: return: can only `return' from a function or sourced script
+./errors.tests: line 242: break: 0: loop count out of range
+./errors.tests: line 246: continue: 0: loop count out of range
+./errors.tests: line 251: builtin: bash: not a shell builtin
+./errors.tests: line 255: bg: no job control
+./errors.tests: line 256: fg: no job control
+./errors.tests: line 259: kill: -s: option requires an argument
+./errors.tests: line 261: kill: S: invalid signal specification
+./errors.tests: line 263: kill: `': not a pid or valid job spec
kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
-./errors.tests: line 255: set: trackall: invalid option name
-./errors.tests: line 259: xx: readonly variable
+./errors.tests: line 268: set: trackall: invalid option name
+./errors.tests: line 272: xx: readonly variable
1
-./errors1.sub: line 1: .: -i: invalid option
+./errors1.sub: line 14: .: -i: invalid option
.: usage: . filename [arguments]
-./errors1.sub: line 9: shift: -4: shift count out of range
-./errors1.sub: line 14: break: -1: loop count out of range
+./errors1.sub: line 22: shift: -4: shift count out of range
+./errors1.sub: line 27: break: -1: loop count out of range
after f
./errors2.sub: line 3: ${$NO_SUCH_VAR}: bad substitution
1
@@ -112,12 +111,12 @@ TEST
./errors3.sub: line 7: no_such_file: No such file or directory
1
2
-./errors4.sub: line 7: var: readonly variable
+./errors4.sub: line 20: var: readonly variable
after readonly assignment
-./errors4.sub: line 13: break: x: numeric argument required
+./errors4.sub: line 26: break: x: numeric argument required
1
2
-./errors4.sub: line 7: var: readonly variable
+./errors4.sub: line 20: var: readonly variable
./errors5.sub: line 6: array: unbound variable
./errors5.sub: line 7: array: unbound variable
./errors5.sub: line 8: array[7]: unbound variable
@@ -130,59 +129,59 @@ after 3: 1
array after 1: 0
array after 2: 0
-./errors6.sub: uvar: parameter not set
-./errors6.sub: uvar: parameter null or not set
+./errors6.sub: line 1: uvar: parameter not set
+./errors6.sub: line 1: uvar: parameter null or not set
-./errors6.sub: uvar: parameter null or not set
-./errors6.sub: line 25: ${-3:-${-3}}: bad substitution
-./errors6.sub: line 26: ${-3}: bad substitution
-./errors6.sub: line 27: -3: invalid variable name
+./errors6.sub: line 1: uvar: parameter null or not set
+./errors6.sub: line 38: ${-3:-${-3}}: bad substitution
+./errors6.sub: line 39: ${-3}: bad substitution
+./errors6.sub: line 40: -3: invalid variable name
after indir: 1
-./errors6.sub: line 30: -3: invalid variable name
+./errors6.sub: line 43: -3: invalid variable name
unset
-./errors6.sub: line 37: var: invalid indirect expansion
-./errors6.sub: line 38: var: invalid indirect expansion
-./errors6.sub: line 41: invalid-ident: invalid variable name
-./errors6.sub: line 42: invalid-ident: invalid variable name
-./errors6.sub: line 43: invalid-ident: invalid variable name
+./errors6.sub: line 50: var: invalid indirect expansion
+./errors6.sub: line 51: var: invalid indirect expansion
+./errors6.sub: line 54: invalid-ident: invalid variable name
+./errors6.sub: line 55: invalid-ident: invalid variable name
+./errors6.sub: line 56: invalid-ident: invalid variable name
4
array after 1: 0
array after 2: 0
-./errors6.sub: uvar: parameter not set
-./errors6.sub: uvar: parameter null or not set
+./errors6.sub: line 1: uvar: parameter not set
+./errors6.sub: line 1: uvar: parameter null or not set
-./errors6.sub: uvar: parameter null or not set
-./errors6.sub: line 25: ${-3:-${-3}}: bad substitution
-./errors6.sub: line 26: ${-3}: bad substitution
-./errors6.sub: line 27: -3: invalid variable name
+./errors6.sub: line 1: uvar: parameter null or not set
+./errors6.sub: line 38: ${-3:-${-3}}: bad substitution
+./errors6.sub: line 39: ${-3}: bad substitution
+./errors6.sub: line 40: -3: invalid variable name
after indir: 1
-./errors6.sub: line 30: -3: invalid variable name
+./errors6.sub: line 43: -3: invalid variable name
unset
-./errors6.sub: line 37: var: invalid indirect expansion
-./errors6.sub: line 38: var: invalid indirect expansion
-./errors6.sub: line 41: invalid-ident: invalid variable name
-./errors6.sub: line 42: invalid-ident: invalid variable name
-./errors6.sub: line 43: invalid-ident: invalid variable name
-./errors7.sub: line 8: x: readonly variable
-./errors7.sub: line 8: notthere: command not found
+./errors6.sub: line 50: var: invalid indirect expansion
+./errors6.sub: line 51: var: invalid indirect expansion
+./errors6.sub: line 54: invalid-ident: invalid variable name
+./errors6.sub: line 55: invalid-ident: invalid variable name
+./errors6.sub: line 56: invalid-ident: invalid variable name
+./errors7.sub: line 21: x: readonly variable
+./errors7.sub: line 21: notthere: command not found
after no such command: 127
-./errors7.sub: line 10: x: readonly variable
+./errors7.sub: line 23: x: readonly variable
echo builtin
after non-special builtin: 0
-./errors7.sub: line 12: x: readonly variable
+./errors7.sub: line 25: x: readonly variable
after special builtin: 0
-./errors7.sub: line 14: x: readonly variable
-./errors7.sub: line 8: x: readonly variable
-./errors7.sub: line 8: notthere: command not found
+./errors7.sub: line 27: x: readonly variable
+./errors7.sub: line 21: x: readonly variable
+./errors7.sub: line 21: notthere: command not found
after no such command: 127
-./errors7.sub: line 10: x: readonly variable
+./errors7.sub: line 23: x: readonly variable
echo builtin
after non-special builtin: 0
-./errors7.sub: line 12: x: readonly variable
-./errors7.sub: line 14: x: readonly variable
+./errors7.sub: line 25: x: readonly variable
+./errors7.sub: line 27: x: readonly variable
./errors8.sub: eval: line 7: syntax error: unexpected end of file
ok 1
./errors8.sub: line 8: v: readonly variable
@@ -195,4 +194,7 @@ ok 4
ok 5
./errors8.sub: line 14: set: notanoption: invalid option name
ok 6
-./errors.tests: line 283: `!!': not a valid identifier
+bash: line 1: return: can only `return' from a function or sourced script
+after return
+bash: line 1: return: can only `return' from a function or sourced script
+./errors.tests: line 299: `!!': not a valid identifier
diff --git a/tests/errors.tests b/tests/errors.tests
index e1554cd1..531b625b 100644
--- a/tests/errors.tests
+++ b/tests/errors.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# These should all be safe
LC_ALL=C
LC_CTYPE=C
@@ -95,7 +108,7 @@ local
# logout of a non-login shell is an error
logout
-# try to hash a non-existant command
+# try to hash a non-existent command
hash notthere
# bad option to hash, although it may mean `verbose' at some future point
@@ -275,6 +288,9 @@ ${THIS_SH} -o posix ./errors7.sub
${THIS_SH} ./errors8.sub
+${THIS_SH} -c 'return ; echo after return' bash
+${THIS_SH} -o posix -c 'return ; echo after return' bash
+
# this must be last!
# in posix mode, a function name must be a valid identifier
# this can't go in posix2.tests, since it causes the shell to exit
diff --git a/tests/errors1.sub b/tests/errors1.sub
index 8e7440b5..52a9e342 100644
--- a/tests/errors1.sub
+++ b/tests/errors1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
. -i /dev/tty
f()
diff --git a/tests/errors4.sub b/tests/errors4.sub
index 8451b961..6b405024 100644
--- a/tests/errors4.sub
+++ b/tests/errors4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test effect of assigning to readonly vars on loops and non-interactive shells
# fatal error when in posix mode
var=foo
diff --git a/tests/errors6.sub b/tests/errors6.sub
index b80580e7..cac2c55b 100644
--- a/tests/errors6.sub
+++ b/tests/errors6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# problems with non-fatal expansion errors through bash-4.3
: ${THIS_SH:=./bash}
diff --git a/tests/errors7.sub b/tests/errors7.sub
index 067867a1..add8782a 100644
--- a/tests/errors7.sub
+++ b/tests/errors7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${THIS_SH:=./bash}
readonly x=4
diff --git a/tests/exec.right b/tests/exec.right
index 6075cc86..0a249dda 100644
--- a/tests/exec.right
+++ b/tests/exec.right
@@ -105,3 +105,31 @@ x2b
x3
x3a
x3b
+WORKS
+done
+WORKS
+WORKS
+a
+b
+c
+d
+a
+b
+c
+d
+e
+A
+B
+c
+d
+c
+d
+e
+x
+y
+z
+WORKS
+w
+x
+y
+z
diff --git a/tests/exec10.sub b/tests/exec10.sub
index af3ab0d9..db6a6710 100644
--- a/tests/exec10.sub
+++ b/tests/exec10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# post bash-4.3 changes to how command -p works (avoid modifying $PATH)
: ${TMPDIR=/tmp}
diff --git a/tests/exec12.sub b/tests/exec12.sub
index 79bcfc77..0d7c8b89 100644
--- a/tests/exec12.sub
+++ b/tests/exec12.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
TMPFILE=$TMPDIR/exitcode
trap 'rm -f $TMPFILE' 0
diff --git a/tests/exec13.sub b/tests/exec13.sub
index 0f84daaa..76e13246 100644
--- a/tests/exec13.sub
+++ b/tests/exec13.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo x1 | ( cat & wait )
echo x1a | ( :& cat & wait )
diff --git a/tests/exec14.sub b/tests/exec14.sub
new file mode 100644
index 00000000..3402fb95
--- /dev/null
+++ b/tests/exec14.sub
@@ -0,0 +1,47 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+# test that optimizing command lists doesn't inappropriately short-cut commands
+
+# also includes optimizing last command in a list separated by `;'
+
+if [ -x /bin/echo ] ; then
+ binecho=/bin/echo
+elif [ -x /usr/bin/echo ]; then
+ binecho=/usr/bin/echo
+else
+ enable -n echo
+ binecho=echo
+fi
+
+export binecho
+
+: ${THIS_SH:=./bash} ${TMPDIR:=/var/tmp}
+
+${THIS_SH} -c 'trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$'
+${THIS_SH} -c 'trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ ; $binecho done'
+
+( trap "echo WORKS && rm $TMPDIR/x$$" EXIT && touch $TMPDIR/x$$ )
+
+${THIS_SH} -c 'echo a && { $binecho b && $binecho c ; } && echo d'
+${THIS_SH} -c 'echo a && { $binecho b && $binecho c ; } && echo d ; $binecho e'
+
+${THIS_SH} -c 'echo A && $binecho B'
+${THIS_SH} -c '$binecho c && echo d'
+
+$THIS_SH -c '$binecho c && $binecho d && echo e'
+
+$THIS_SH -c 'trap "echo WORKS" EXIT ; $binecho x ; $binecho y ; $binecho z'
+
+${THIS_SH} -c 'echo w ; { echo x ; $binecho y; }; $binecho z'
diff --git a/tests/exec6.sub b/tests/exec6.sub
index 50d0e701..dd53e74b 100644
--- a/tests/exec6.sub
+++ b/tests/exec6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# builtins with exit status inverted
( true )
diff --git a/tests/exec7.sub b/tests/exec7.sub
index 0267505c..0c8c7cab 100644
--- a/tests/exec7.sub
+++ b/tests/exec7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure that bash really checks the right things when deciding what
# constitutes an executable file
diff --git a/tests/exec9.sub b/tests/exec9.sub
index b8d20b44..a47dfd00 100644
--- a/tests/exec9.sub
+++ b/tests/exec9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure commands before the last one in the pipeline can't change $?
false
false | echo $?
diff --git a/tests/execscript b/tests/execscript
index c1819de7..28096769 100644
--- a/tests/execscript
+++ b/tests/execscript
@@ -157,3 +157,4 @@ $THIS_SH -c '/bin/echo c && echo d'
$THIS_SH -c '/bin/echo c && /bin/echo d && echo e'
${THIS_SH} ./exec13.sub
+${THIS_SH} ./exec14.sub
diff --git a/tests/exp.right b/tests/exp.right
index a2dc86f9..4e88ca9b 100644
--- a/tests/exp.right
+++ b/tests/exp.right
@@ -150,6 +150,9 @@ argv[4] = <d>
argv[5] = <e>
a?b?c
a b c
+argv[1] = <a>
+argv[2] = <b>
+argv[3] = <>
argv[1] = <^?>
argv[1] = <^?>
argv[1] = <^?>
@@ -232,7 +235,7 @@ declare -- var="x\001y\177z"$
argv[1] = <$'x\001y\177z'>
argv[1] = <x^Ay^?z>
var=$'x\001y\177z'
-./exp8.sub: line 16: xyz: syntax error: invalid arithmetic operator (error token is "z")
+./exp8.sub: line 29: xyz: syntax error: invalid arithmetic operator (error token is "z")
declare -a array=()
declare -a array=([0]=$'x\001y\177z')
argv[1] = <x^Ay^?z>
diff --git a/tests/exp.tests b/tests/exp.tests
index 6e364f9c..3e69db4f 100644
--- a/tests/exp.tests
+++ b/tests/exp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# A suite of tests for bash word expansions
#
@@ -391,6 +404,8 @@ echo ${a//\\?/ }
echo ${a//\?/ }
+${THIS_SH} -c 'var=a:b: ; IFS=" :" ; recho $var""' bash
+
${THIS_SH} ./exp1.sub
${THIS_SH} ./exp2.sub
diff --git a/tests/exp1.sub b/tests/exp1.sub
index 3e40f2a9..3dbe3d90 100644
--- a/tests/exp1.sub
+++ b/tests/exp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# Test the substitution quoting characters (CTLESC and CTLNUL) in different
# combinations
diff --git a/tests/exp10.sub b/tests/exp10.sub
index 6592bab9..42bdaf87 100644
--- a/tests/exp10.sub
+++ b/tests/exp10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- ' A ' ' B '
IFS=
diff --git a/tests/exp11.sub b/tests/exp11.sub
index cae7b19c..b3e02e08 100644
--- a/tests/exp11.sub
+++ b/tests/exp11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- '1 2'
unset var
diff --git a/tests/exp12.sub b/tests/exp12.sub
index 0aaa2f44..8c5005dc 100644
--- a/tests/exp12.sub
+++ b/tests/exp12.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# force single-byte versions of these functions
export LANG=C
diff --git a/tests/exp5.sub b/tests/exp5.sub
index 52dd4a15..5cf8ed71 100644
--- a/tests/exp5.sub
+++ b/tests/exp5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# expansions involving patterns
var='[hello'
echo "${var//[/}"
diff --git a/tests/exp6.sub b/tests/exp6.sub
index a1c9fe63..582617c2 100644
--- a/tests/exp6.sub
+++ b/tests/exp6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
recho """"a
recho a""""
diff --git a/tests/exp7.sub b/tests/exp7.sub
index f3f3b6bd..a3993b50 100644
--- a/tests/exp7.sub
+++ b/tests/exp7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=$'\001'
c=$'\001'
c2=$'\003'
diff --git a/tests/exp8.sub b/tests/exp8.sub
index ff44febc..4c2870ca 100644
--- a/tests/exp8.sub
+++ b/tests/exp8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
var=$'x\001y\177z'
recho "$var"
diff --git a/tests/exp9.sub b/tests/exp9.sub
index a0399c7a..7e4a3b63 100644
--- a/tests/exp9.sub
+++ b/tests/exp9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# expansion test cases from Posix interp 888
set "abc" "def ghi" "jkl"
diff --git a/tests/exportfunc.right b/tests/exportfunc.right
index 2ee35a7a..ff7fc8d9 100644
--- a/tests/exportfunc.right
+++ b/tests/exportfunc.right
@@ -1,14 +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
+./exportfunc.tests: line 37: cve7169-bad: No such file or directory
+./exportfunc.tests: eval: line 44: syntax error: unexpected end of file
+./exportfunc.tests: line 43: cve7169-bad2: No such file or directory
+./exportfunc1.sub: line 14: maximum here-document count exceeded
+./exportfunc.tests: line 64: HELLO_WORLD: No such file or directory
eval ok
-./exportfunc3.sub: line 10: export: foo=bar: cannot export
+./exportfunc3.sub: line 23: export: foo=bar: cannot export
status: 1
equals-1
bad echo
-./exportfunc3.sub: line 23: export: /bin/echo: cannot export
+./exportfunc3.sub: line 36: export: /bin/echo: cannot export
bar
diff --git a/tests/exportfunc.tests b/tests/exportfunc.tests
index f5ef54f0..b2742d2c 100644
--- a/tests/exportfunc.tests
+++ b/tests/exportfunc.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# normal operation
foo()
{
diff --git a/tests/exportfunc1.sub b/tests/exportfunc1.sub
index d9c9fa1c..53b4c1fb 100644
--- a/tests/exportfunc1.sub
+++ b/tests/exportfunc1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
cat <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF <<EOF
EOF
EOF
diff --git a/tests/exportfunc2.sub b/tests/exportfunc2.sub
index 886b71bb..cf5df571 100644
--- a/tests/exportfunc2.sub
+++ b/tests/exportfunc2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
for x1 in ; do :
for x2 in ; do :
for x3 in ; do :
diff --git a/tests/exportfunc3.sub b/tests/exportfunc3.sub
index 7a7aa26e..af3125bb 100644
--- a/tests/exportfunc3.sub
+++ b/tests/exportfunc3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test function names that cannot be exported
unset foo # remove from environment if necessary
diff --git a/tests/extglob.tests b/tests/extglob.tests
index 32a6569f..4cb671a8 100644
--- a/tests/extglob.tests
+++ b/tests/extglob.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test the ksh-like extended globbing features: [!@*?+](patlist)
shopt -s extglob
diff --git a/tests/extglob1.sub b/tests/extglob1.sub
index bf65a9ea..c73b1eae 100644
--- a/tests/extglob1.sub
+++ b/tests/extglob1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
MYDIR=$PWD
: ${TMPDIR:=/tmp}
diff --git a/tests/extglob1a.sub b/tests/extglob1a.sub
index 686dab74..14703862 100644
--- a/tests/extglob1a.sub
+++ b/tests/extglob1a.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s extglob
TESTDIR=${TMPDIR:-/tmp}/eglob-test-$$
diff --git a/tests/extglob2.tests b/tests/extglob2.tests
index f35c3e8b..187253b9 100755..100644
--- a/tests/extglob2.tests
+++ b/tests/extglob2.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# More ksh-like extended globbing tests, cribbed from zsh-3.1.5
#
diff --git a/tests/extglob3.sub b/tests/extglob3.sub
index 3f51c40c..bf5d2630 100644
--- a/tests/extglob3.sub
+++ b/tests/extglob3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s extglob
DIR=$TMPDIR/extglob-$$
mkdir $DIR
diff --git a/tests/extglob3.tests b/tests/extglob3.tests
index 60454a27..56f8b397 100644
--- a/tests/extglob3.tests
+++ b/tests/extglob3.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s extglob
[[ ab/../ == @(ab|+([^/]))/..?(/) ]] && echo match 1
diff --git a/tests/extglob4.sub b/tests/extglob4.sub
index 2b4c53c9..5369cd69 100644
--- a/tests/extglob4.sub
+++ b/tests/extglob4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LANG=C
LC_ALL=C
diff --git a/tests/extglob5.sub b/tests/extglob5.sub
index d400f839..580229b8 100644
--- a/tests/extglob5.sub
+++ b/tests/extglob5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# globignore extglob patterns containing colons -- problem until bash-4.2
: ${TMPDIR:=/tmp}
diff --git a/tests/func.right b/tests/func.right
index 70bf123b..f4db4d16 100644
--- a/tests/func.right
+++ b/tests/func.right
@@ -147,23 +147,23 @@ expect 20
20
expect 5 20
5 20
-expect 5 30
-5 30
+expect 5 20
+5 20
expect 2 40
2 40
expect 5 20
5 20
-./func4.sub: line 10: foo: maximum function nesting level exceeded (100)
+./func4.sub: line 23: foo: maximum function nesting level exceeded (100)
1
after: f = 100
-./func4.sub: line 10: foo: maximum function nesting level exceeded (100)
+./func4.sub: line 23: foo: maximum function nesting level exceeded (100)
1
after: f = 100
7
after FUNCNEST reset: f = 201
7
after FUNCNEST unset: f = 201
-./func4.sub: line 10: foo: maximum function nesting level exceeded (20)
+./func4.sub: line 23: foo: maximum function nesting level exceeded (20)
1
after FUNCNEST assign: f = 38
5
diff --git a/tests/func.tests b/tests/func.tests
index 8701c2ad..fffe3d2b 100644
--- a/tests/func.tests
+++ b/tests/func.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a()
{
x=$((x - 1))
diff --git a/tests/func1.sub b/tests/func1.sub
index 345645fd..f7e84f46 100644
--- a/tests/func1.sub
+++ b/tests/func1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# Test that redirections attached to shell functions are printed correctly.
# This was a bug in all bash versions before bash-2.04.
diff --git a/tests/func2.sub b/tests/func2.sub
index 41a3844b..9caabfcb 100644
--- a/tests/func2.sub
+++ b/tests/func2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
funca() (
echo func-a
)
diff --git a/tests/func3.sub b/tests/func3.sub
index 9d3d0694..5c0eac2d 100644
--- a/tests/func3.sub
+++ b/tests/func3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# test some posix-mode-specific function behavior
#
@@ -23,7 +36,7 @@ echo expect 5 20
func
echo $? $var
-echo expect 5 30
+echo expect 5 20
var=30 func
echo $? $var
diff --git a/tests/func4.sub b/tests/func4.sub
index 9c9c1b42..69f15e46 100644
--- a/tests/func4.sub
+++ b/tests/func4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test FUNCNEST functionality -- bash-4.2
FUNCNEST=100
diff --git a/tests/getopts.right b/tests/getopts.right
index fff9729f..599d830a 100644
--- a/tests/getopts.right
+++ b/tests/getopts.right
@@ -1,9 +1,9 @@
-getopts: usage: getopts optstring name [arg]
+getopts: usage: getopts optstring name [arg ...]
2
-getopts: usage: getopts optstring name [arg]
+getopts: usage: getopts optstring name [arg ...]
2
-./getopts.tests: line 10: getopts: -a: invalid option
-getopts: usage: getopts optstring name [arg]
+./getopts.tests: line 23: getopts: -a: invalid option
+getopts: usage: getopts optstring name [arg ...]
-a specified
-b bval specified
remaining args: one two three
@@ -52,7 +52,7 @@ remaining args:
-a specified
remaining args:
0
-./getopts7.sub: line 4: getopts: `opt-var': not a valid identifier
+./getopts7.sub: line 17: getopts: `opt-var': not a valid identifier
remaining args:
opt: x
opt: y
@@ -61,7 +61,7 @@ opt: b
opt: c
opt: z
$1 = a
-./getopts10.sub: line 3: OPTARG: readonly variable
+./getopts10.sub: line 16: OPTARG: readonly variable
OPTARG = x = ?
unset x = ?
declare -r RO="foo"
diff --git a/tests/getopts.tests b/tests/getopts.tests
index d54190cc..06cc29a2 100644
--- a/tests/getopts.tests
+++ b/tests/getopts.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# getopts tests
# this should fail
getopts
diff --git a/tests/getopts1.sub b/tests/getopts1.sub
index df0a342e..5145879a 100644
--- a/tests/getopts1.sub
+++ b/tests/getopts1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts10.sub b/tests/getopts10.sub
index 84bacf8f..cc8acb0c 100644
--- a/tests/getopts10.sub
+++ b/tests/getopts10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- -a bb
readonly OPTARG
getopts :x x
diff --git a/tests/getopts2.sub b/tests/getopts2.sub
index d91fd26a..6bb8af54 100644
--- a/tests/getopts2.sub
+++ b/tests/getopts2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts3.sub b/tests/getopts3.sub
index 2d8b3162..6769c491 100644
--- a/tests/getopts3.sub
+++ b/tests/getopts3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts4.sub b/tests/getopts4.sub
index 9cd5aef4..5fbe9548 100644
--- a/tests/getopts4.sub
+++ b/tests/getopts4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts5.sub b/tests/getopts5.sub
index 874b2810..bf523107 100644
--- a/tests/getopts5.sub
+++ b/tests/getopts5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#Time-stamp: <95/06/07 07:40:40 hrue@imf.unit.no>
getop () {
diff --git a/tests/getopts6.sub b/tests/getopts6.sub
index 75d768c6..d969ecef 100644
--- a/tests/getopts6.sub
+++ b/tests/getopts6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts7.sub b/tests/getopts7.sub
index a20a6df1..de7d7a65 100644
--- a/tests/getopts7.sub
+++ b/tests/getopts7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
aflag=
bflag=
diff --git a/tests/getopts9.sub b/tests/getopts9.sub
index fafb0670..f7dcabce 100644
--- a/tests/getopts9.sub
+++ b/tests/getopts9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f()
{
OPTIND=4
diff --git a/tests/glob.right b/tests/glob.right
index 1ead7b61..94966905 100644
--- a/tests/glob.right
+++ b/tests/glob.right
@@ -20,16 +20,22 @@ ok 1
[a
[[:alpha:]
ok 2
+ok 2.1
ok 3
+ok 4
== LANG=en_US.UTF-8 ==
[[:alpha:]
ok 1
[a
[[:alpha:]
ok 2
+ok 2.1
ok 3
+ok 4
invalid character class
== LANG=C ==
+p
+p
ok 1
ok 2
ok 3
@@ -37,6 +43,8 @@ ok 4
ok 5
ok 6
== LANG=en_US.UTF-8 ==
+p
+p
ok 1
ok 2
ok 3
@@ -57,10 +65,62 @@ ok 3
ok 4
ok 5
argv[1] = <a\?>
-a?
+a\?
argv[1] = <a\?>
-a?
-aa
+a\?
+a\a
+<define\/\
+/>
+./tmp/a/b/c ./tmp/a/b/c ./tmp/a/b/c
+./tmp/a/b/c ./tmp/a/b/c ./tmp/a/b/c
+./tmp/a/b/c
+./tmp/a/b/c
+./tmp\/a/b/c
+./tm[p]\/a/b/c
+./tmp/a/b/c
+argv[1] = <./tmp/a/*>
+argv[1] = <./tmp/a/*>
+argv[1] = <./tmp/a/b/c>
+argv[1] = <./tmp/a/*>
+argv[1] = <./tmp/a/b/c>
+argv[1] = <./t\mp/a/*>
+argv[1] = <./tmp/a/b/c>
+argv[1] = <./tmp/a/>
+argv[1] = <./tmp/a/b/>
+argv[1] = <./t\mp/a/>
+argv[1] = <./t\mp/a/b/>
+argv[1] = <./tmp/a/*>
+argv[1] = <./tmp/a/b/c>
+argv[1] = <./tmp/a>
+argv[1] = <./tmp/a/b*>
+argv[1] = <./tmp/a>
+argv[1] = <./tmp/a/b*>
+argv[1] = <./tmp/>
+argv[1] = <\$foo>
+argv[2] = <\$foo>
+argv[1] = <mixed\$foo/>
+<abcdefg>
+<\.>
+*abc.c
+searchable/\.
+searchable/\./.
+readable/\.
+readable/\./.
+searchable/\.
+readable/\.
+searchable/.
+searchable/.
+searchable/.
+1: [qwe/qwe]
+2: [qwe/
+3: [qwe/]
+4:
+5: [qwe/
+6:
+a\*b
+a\*b*
+é/*
+é/*
argv[1] = <a>
argv[2] = <abc>
argv[3] = <abd>
@@ -75,7 +135,7 @@ argv[2] = <abc>
argv[3] = <abd>
argv[4] = <abe>
tmp/l1 tmp/l2 tmp/*4 tmp/l3
-./glob.tests: line 47: no match: tmp/*4
+./glob.tests: line 65: no match: tmp/*4
argv[1] = <bdir/>
argv[1] = <*>
argv[1] = <a*>
diff --git a/tests/glob.tests b/tests/glob.tests
index 01913bbe..b35d7336 100644
--- a/tests/glob.tests
+++ b/tests/glob.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
export LC_COLLATE=C
#
# test the shell globbing
@@ -12,6 +25,11 @@ ${THIS_SH} ./glob1.sub
${THIS_SH} ./glob2.sub
${THIS_SH} ./glob3.sub
${THIS_SH} ./glob4.sub
+${THIS_SH} ./glob5.sub
+${THIS_SH} ./glob6.sub
+${THIS_SH} ./glob7.sub
+${THIS_SH} ./glob8.sub
+${THIS_SH} ./glob9.sub
MYDIR=$PWD # save where we are
diff --git a/tests/glob1.sub b/tests/glob1.sub
index 6b3b8ad1..27c216ba 100644
--- a/tests/glob1.sub
+++ b/tests/glob1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# bash-2.01.1 failed this test
: ${TMPDIR:=/var/tmp}
diff --git a/tests/glob2.sub b/tests/glob2.sub
index d33013b6..cabc3502 100644
--- a/tests/glob2.sub
+++ b/tests/glob2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
. ./test-glue-functions
var='ab\'
diff --git a/tests/glob3.sub b/tests/glob3.sub
index 378234db..662c65e9 100644
--- a/tests/glob3.sub
+++ b/tests/glob3.sub
@@ -1,5 +1,24 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
-cd $TMPDIR
+
+TESTDIR=${TMPDIR}/glob-test-$$
+mkdir ${TESTDIR}
+cd $TESTDIR || {
+ echo "$TESTDIR: cannot cd" >&2
+ exit 1
+}
matchfunc()
{
@@ -25,10 +44,21 @@ matchfunc()
*) echo bad 2;;
esac
+ case x in
+ [[:aeioux:]) echo bad 2.1 ;;
+ *) echo ok 2.1 ;;
+ esac
+
case [x in
[[:alpha:]) echo bad 3;;
*) echo ok 3;;
esac
+
+ # unclosed bracket char class expression just matches against ":alpha"
+ case a in
+ [[:alpha]) echo ok 4;;
+ *) echo bad 4;;
+ esac
}
echo invalid bracket expression
@@ -44,6 +74,12 @@ matchfunc()
{
echo == LANG=$LANG ==
+ touch p
+ # quoted character classes work as if they were unquoted now
+ echo [[:alpha:]]
+ echo [[:"alpha":]]
+ rm -f p
+
case a] in
[[:aleph:]]) echo bad 1;;
*) echo ok 1;;
@@ -59,9 +95,10 @@ matchfunc()
*) echo ok 3;;
esac
- case a in
- [[:"alpha":]]) echo bad 4;;
- *) echo ok 4;;
+ # Posix says quoted character class names work now
+ case x in
+ [[:"alpha":]]) echo ok 4;;
+ *) echo bad 4;;
esac
case a in
@@ -121,3 +158,6 @@ matchfunc
export LANG=en_US.UTF-8
matchfunc
+
+cd $OLDPWD
+rm -rf $TESTDIR
diff --git a/tests/glob4.sub b/tests/glob4.sub
index 378b5a92..779c8540 100644
--- a/tests/glob4.sub
+++ b/tests/glob4.sub
@@ -1,4 +1,23 @@
-trap "rm 'a?' aa" EXIT
+# 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 <http://www.gnu.org/licenses/>.
+#
+: ${TMPDIR:=/var/tmp}
+
+FN=$TMPDIR/bash-glob.$$
+mkdir $FN || { echo "glob4.sub: cannot mkdir $FN" >&2 ; exit 1; }
+builtin cd $FN || { echo "glob4.sub: cannot change directory to $FN" >&2 ; exit 1; }
+rm -f *
+
touch 'a?' aa
set -- a \?; IFS=\\; var=$*;
@@ -11,3 +30,12 @@ printf "%s\n" ${var}
var='a\a'
printf "%s\n" ${var}
+
+# shell's idea of a glob pattern and libglob's idea of a glob pattern have to
+# be identical
+PRE='\/'
+printf '<%s>\n' 'define'${PRE}'\
+/'
+
+builtin cd $OLDPWD
+rm -rf $FN
diff --git a/tests/glob5.sub b/tests/glob5.sub
new file mode 100644
index 00000000..5735715d
--- /dev/null
+++ b/tests/glob5.sub
@@ -0,0 +1,76 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+ORIGD=$PWD
+: ${TMPDIR:=/var/tmp}
+
+SD=$TMPDIR/bash-glob-$$
+[ -d $SD ] || mkdir $SD
+builtin cd $SD || { echo "glob5.sub: cannot change directory to $SD" >&2 ; exit 1; }
+mkdir tmp
+
+D=./tmp/a
+D1='./t\mp/a'
+
+mkdir -m700 ./tmp/a ./tmp/a/b
+touch ./tmp/a/b/c
+
+echo ./tmp/a/b/* "./tmp/a/"b/* "./tmp/a/b"/*
+
+chmod -r ./tmp/a
+echo ./tmp/a/b/* "./tmp/a/"b/* "./tmp/a/b"/*
+echo "./tmp/a/b"/*
+
+bs=\\
+echo ./tmp${bs}/a/b/*
+echo ./tmp${bs}/a/b/c
+echo ./tm[p]${bs}/a/b/c
+echo ./t${bs}mp/a/b/*
+
+recho "./tmp/a"/*
+recho "$D"/*
+recho "$D"/b/*
+
+recho $D/*
+recho $D/b/*
+recho $D1/*
+recho $D1/b/*
+recho $D/
+recho $D/b/
+recho $D1/
+recho $D1/b/
+
+recho ./t\mp/a/*
+recho ./t\mp/a/b/*
+
+recho ./tmp/a*
+recho ./tmp/a/b*
+recho ./t\mp/a*
+recho ./t\mp/a/b*
+
+recho ./t\mp/
+
+chmod +r ./tmp/a
+rm -rf ./tmp/a
+
+a='$foo'
+b='$bar'
+a=$(echo "$a" | sed 's/\$/\\$/g')
+
+recho $a "$a"
+recho 'mixed'$a/
+
+unset a b
+
+cd $ORIGD
+rm -rf $SD
diff --git a/tests/glob6.sub b/tests/glob6.sub
new file mode 100644
index 00000000..f26ae4d6
--- /dev/null
+++ b/tests/glob6.sub
@@ -0,0 +1,68 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# tests of the backslash-in-glob-patterns discussion on the austin-group ML
+
+: ${TMPDIR:=/var/tmp}
+
+ORIG=$PWD
+GLOBDIR=$TMPDIR/bash-glob-$$
+mkdir $GLOBDIR || { echo "glob6.sub: cannot make directory $GLOBDIR" >&2 ; exit 1; }
+builtin cd $GLOBDIR || { echo "glob6.sub: cannot change directory to $GLOBDIR" >&2 ; exit 1; }
+
+# does the pattern matcher allow backslashes as escape characters and remove
+# them as part of matching?
+touch abcdefg
+pat='ab\cd*'
+printf '<%s>\n' $pat
+pat='\.'
+printf '<%s>\n' $pat
+rm abcdefg
+
+# how about when escaping pattern characters?
+touch '*abc.c'
+a='\**.c'
+printf '%s\n' $a
+rm -f '*abc.c'
+
+# how about when making the distinction between readable and searchable path
+# components?
+mkdir -m a=x searchable
+mkdir -m a=r readable
+
+p='searchable/\.'
+printf "%s\n" $p
+
+p='searchable/\./.'
+printf "%s\n" $p
+
+p='readable/\.'
+printf "%s\n" $p
+
+p='readable/\./.'
+printf "%s\n" $p
+
+printf "%s\n" 'searchable/\.'
+printf "%s\n" 'readable/\.'
+
+echo */.
+
+p='*/\.'
+echo $p
+
+echo */'.'
+
+rmdir searchable readable
+
+cd $ORIG
+rmdir $GLOBDIR
diff --git a/tests/glob7.sub b/tests/glob7.sub
new file mode 100644
index 00000000..0212b8e5
--- /dev/null
+++ b/tests/glob7.sub
@@ -0,0 +1,11 @@
+# according to Posix 2.13.3, a slash in a bracket expression renders that
+# bracket expression invalid
+shopt -s nullglob
+
+echo 1: [qwe/qwe]
+echo 2: [qwe/
+echo 3: [qwe/]
+
+echo 4: [qwe\/qwe]
+echo 5: [qwe\/
+echo 6: [qwe\/]
diff --git a/tests/glob8.sub b/tests/glob8.sub
new file mode 100644
index 00000000..dca54fcc
--- /dev/null
+++ b/tests/glob8.sub
@@ -0,0 +1,31 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+: ${TMPDIR:=/var/tmp}
+
+TESTDIR=${TMPDIR}/glob-test-$$
+mkdir ${TESTDIR}
+cd $TESTDIR || {
+ echo "$TESTDIR: cannot cd" >&2
+ exit 1
+}
+
+trap 'cd $OLDPWD && rm -rf $TESTDIR' EXIT
+
+var='a\'
+touch 'a*b' 'a\*b'
+
+printf '%s\n' $var\*b*
+
+var1=a\\$'\001'
+printf '%s\n' $var1\*b*
diff --git a/tests/glob9.sub b/tests/glob9.sub
new file mode 100644
index 00000000..ef2af2bd
--- /dev/null
+++ b/tests/glob9.sub
@@ -0,0 +1,13 @@
+LANG=en_US.UTF-8 # safest
+: ${TMPDIR:=/var/tmp}
+HOME=${TMPDIR}
+
+mkdir ~/ಇಳಿಕೆಗಳà³
+touch ~/ಇಳಿಕೆಗಳà³/{a,b}.txt
+echo ~/ಇಳಿಕೆಗಳà³/*.txt >/dev/null
+
+rm -rf ${TMPDIR}/ಇಳಿಕೆಗಳà³
+
+LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
+echo é/*
+echo 'é'/*
diff --git a/tests/globstar.right b/tests/globstar.right
index 69030c41..c8211bc8 100644
--- a/tests/globstar.right
+++ b/tests/globstar.right
@@ -582,3 +582,6 @@ bar/foo/e bar/foo/f foo/a foo/b
<b/b/a/a>
<b/b/a/b>
<b/b/b/a>
+a a/aa a/ab b b/bb b/bc c
+a/ b/ c/
+a/ab b b/bb
diff --git a/tests/globstar.tests b/tests/globstar.tests
index f7efbd19..33714b4f 100644
--- a/tests/globstar.tests
+++ b/tests/globstar.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
dir=$PWD
@@ -40,3 +53,4 @@ rm -rf $GDIR
${THIS_SH} ./globstar1.sub
${THIS_SH} ./globstar2.sub
+${THIS_SH} ./globstar3.sub
diff --git a/tests/globstar1.sub b/tests/globstar1.sub
index 8b9e36dc..7097f5d4 100644
--- a/tests/globstar1.sub
+++ b/tests/globstar1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s globstar
wdir=$PWD
diff --git a/tests/globstar2.sub b/tests/globstar2.sub
index 4e1a0245..ccf413b1 100644
--- a/tests/globstar2.sub
+++ b/tests/globstar2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
olddir=$PWD
: ${TMPDIR:=/var/tmp}
EMPTY=$TMPDIR/empty
diff --git a/tests/globstar3.sub b/tests/globstar3.sub
new file mode 100644
index 00000000..771d9061
--- /dev/null
+++ b/tests/globstar3.sub
@@ -0,0 +1,37 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+olddir=$PWD
+: ${TMPDIR:=/var/tmp}
+
+SCRATCH=${TMPDIR}/scratch-$$
+rm -rf $SCRATCH
+mkdir $SCRATCH || exit 1
+
+cd $SCRATCH
+
+mkdir a b
+touch a/aa a/ab
+touch b/bb b/bc
+
+ln -s a c
+
+shopt -s globstar
+
+echo **
+echo **/
+
+echo **/*b
+
+cd "$olddir"
+rm -rf $SCRATCH
diff --git a/tests/heredoc.right b/tests/heredoc.right
index f6541dca..f6e53bea 100644
--- a/tests/heredoc.right
+++ b/tests/heredoc.right
@@ -1,3 +1,11 @@
+a
+b
+c
+a
+$PS4
+
+
+
there
one - alpha
two - beta
@@ -59,13 +67,13 @@ qux
bar
qux
abc def geh
-./heredoc3.sub: line 10: warning: here-document at line 8 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 23: warning: here-document at line 21 delimited by end-of-file (wanted `EOF')
= here is the text =
-./heredoc3.sub: line 16: warning: here-document at line 14 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 29: warning: here-document at line 27 delimited by end-of-file (wanted `EOF')
this paren ) is not a problem
-./heredoc3.sub: line 22: warning: here-document at line 20 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 35: warning: here-document at line 33 delimited by end-of-file (wanted `EOF')
these balanced parens ( ) are not a problem
-./heredoc3.sub: line 28: warning: here-document at line 26 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 41: warning: here-document at line 39 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
@@ -82,8 +90,8 @@ end helloEND
hello
\END
end hello<NL>\END
-./heredoc3.sub: line 85: warning: here-document at line 83 delimited by end-of-file (wanted `EOF')
-./heredoc3.sub: line 86: syntax error: unexpected end of file
+./heredoc3.sub: line 98: warning: here-document at line 96 delimited by end-of-file (wanted `EOF')
+./heredoc3.sub: line 99: syntax error: unexpected end of file
heredoc1
EOF
Ok:0
@@ -93,6 +101,6 @@ argv[1] = <two>
argv[2] = <threefi>
argv[3] = <ve>
comsub here-string
-./heredoc.tests: line 105: warning: here-document at line 103 delimited by end-of-file (wanted `EOF')
+./heredoc.tests: line 149: warning: here-document at line 147 delimited by end-of-file (wanted `EOF')
hi
there
diff --git a/tests/heredoc.tests b/tests/heredoc.tests
index 303949f4..430302f5 100644
--- a/tests/heredoc.tests
+++ b/tests/heredoc.tests
@@ -1,5 +1,46 @@
-# check order and content of multiple here docs
+# 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 <http://www.gnu.org/licenses/>.
+#
+# basics
+cat <<EOF
+a
+b
+c
+EOF
+read x <<EOF
+a
+b
+c
+EOF
+echo "$x"
+read x y <<\EOF
+$PS4
+EOF
+echo "$x"
+
+# empty here-documents
+read x <<EOF
+EOF
+echo "$x"
+read x <<\EOF
+EOF
+echo "$x"
+read x <<EOF
+$empty
+EOF
+echo "$x"
+# check order and content of multiple here docs
cat << EOF1 << EOF2
hi
EOF1
@@ -93,6 +134,9 @@ ${THIS_SH} ./heredoc2.sub
${THIS_SH} ./heredoc3.sub
${THIS_SH} ./heredoc4.sub
+# heredoc tests that use different size documents to test pipe implementation
+${THIS_SH} ./heredoc5.sub
+
echo $(
cat <<< "comsub here-string"
)
diff --git a/tests/heredoc1.sub b/tests/heredoc1.sub
index 3f85ead7..34977c51 100644
--- a/tests/heredoc1.sub
+++ b/tests/heredoc1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
foo()
{
echo
diff --git a/tests/heredoc3.sub b/tests/heredoc3.sub
index a5a2fbc0..efbdf7d4 100644
--- a/tests/heredoc3.sub
+++ b/tests/heredoc3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
SAVEPWD=$PWD
: ${TMPDIR:=/tmp}
cd $TMPDIR || echo "heredoc3.sub: cannot cd to $TMPDIR" >&2
diff --git a/tests/heredoc5.sub b/tests/heredoc5.sub
new file mode 100644
index 00000000..d7b5926d
--- /dev/null
+++ b/tests/heredoc5.sub
@@ -0,0 +1,41 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# test here documents for sizes > 65536 (max pipe capacity I've seen),
+# 4096 < size < 65536 (for smaller pipe capacities)
+# 512 < size < 4096 (PIPE_BUF)
+#
+# There are tests in other scripts for here documents shorter than 512 bytes
+#
+# This should return the same results regardless of the pipe capacity
+
+: ${TMPDIR:=/tmp}
+FILENAME=${TMPDIR}/catfile-$$
+
+catfile()
+{
+ cat <<- EOF > $FILENAME
+ $(cat $1)
+EOF
+ cmp $FILENAME $1
+ rm -f $FILENAME
+}
+
+
+if [ -f $BUILD_DIR/y.tab.c ]; then
+ catfile $BUILD_DIR/y.tab.c
+else
+ catfile ../y.tab.c
+fi
+catfile ${BUILD_DIR}/config.h
+catfile ${BUILD_DIR}/version.h
diff --git a/tests/herestr.right b/tests/herestr.right
index 03f38ed6..4ac2cc65 100644
--- a/tests/herestr.right
+++ b/tests/herestr.right
@@ -1,3 +1,10 @@
+alpha
+beta
+4
+4
+
+
+
abcde
yo
hot damn
diff --git a/tests/herestr.tests b/tests/herestr.tests
index 607f85ee..6f4c74c2 100644
--- a/tests/herestr.tests
+++ b/tests/herestr.tests
@@ -1,3 +1,36 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# basics
+read x <<<"alpha"
+echo "$x"
+read x <<<beta
+echo "$x"
+X=4
+read x <<<$X
+echo "$x"
+read x <<<"$X"
+echo "$x"
+unset X
+
+# empty here-strings
+read x <<<""
+echo "$x"
+read x <<<"$empty"
+echo "$x"
+read x <<<$empty
+echo "$x"
+
a=hot
b=damn
f1()
diff --git a/tests/histexp.right b/tests/histexp.right
index 9dc592cb..341252c0 100644
--- a/tests/histexp.right
+++ b/tests/histexp.right
@@ -1,5 +1,5 @@
echo $BASH_VERSION
-./histexp.tests: line 24: history: !!:z: history expansion failed
+./histexp.tests: line 37: history: !!:z: history expansion failed
1 for i in one two three; do echo $i; done
2 /bin/sh -c 'echo this is $0'
3 ls
@@ -202,7 +202,7 @@ d
!
e
! !
-./histexp4.sub: line 20: !': event not found
+./histexp4.sub: line 33: !': event not found
/tmp/Step1
echo /$(echo tmp)/Step1
/tmp/Step1
@@ -240,3 +240,7 @@ echo two
1 echo two
2 for f in a b c; do echo echo two; done
3 history
+a
+echo !!
+--between--
+echo !!
diff --git a/tests/histexp.tests b/tests/histexp.tests
index 5ae925e1..91a36f23 100644
--- a/tests/histexp.tests
+++ b/tests/histexp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=C
LANG=C
trap 'rm $TMPDIR/newhistory' 0
@@ -142,3 +155,4 @@ ${THIS_SH} ./histexp3.sub
${THIS_SH} ./histexp4.sub
${THIS_SH} ./histexp5.sub
${THIS_SH} ./histexp6.sub
+${THIS_SH} ./histexp7.sub
diff --git a/tests/histexp1.sub b/tests/histexp1.sub
index a5948f1e..cc2c5d1d 100644
--- a/tests/histexp1.sub
+++ b/tests/histexp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=C
LANG=C
diff --git a/tests/histexp3.sub b/tests/histexp3.sub
index 495f0952..4962436d 100644
--- a/tests/histexp3.sub
+++ b/tests/histexp3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
HISTFILE=${TMPDIR}/bashhist-$$
set -o history
diff --git a/tests/histexp4.sub b/tests/histexp4.sub
index ddc3bb3c..9cae0e37 100644
--- a/tests/histexp4.sub
+++ b/tests/histexp4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
HISTFILE=$TMPDIR/bashhist-$$
set -o history
diff --git a/tests/histexp5.sub b/tests/histexp5.sub
index 0fe62fe4..9e6d01bc 100644
--- a/tests/histexp5.sub
+++ b/tests/histexp5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -o history
set -o histexpand
diff --git a/tests/histexp6.sub b/tests/histexp6.sub
index 00610b07..d52e5ea8 100644
--- a/tests/histexp6.sub
+++ b/tests/histexp6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
unset HISTIGNORE
HISTFILE=$TMPDIR/bashhist-$$
diff --git a/tests/histexp7.sub b/tests/histexp7.sub
new file mode 100644
index 00000000..8822205e
--- /dev/null
+++ b/tests/histexp7.sub
@@ -0,0 +1,18 @@
+# make sure history expansion doesn't take place while parsing command
+# substitutions
+
+set -o history
+set -o histexpand
+echo a
+
+echo $( cat <<EOF
+echo !!
+EOF
+)
+
+echo --between--
+
+cat <( cat <<'EOF'
+echo !!
+EOF
+)
diff --git a/tests/history.right b/tests/history.right
index d83fc718..379de48b 100644
--- a/tests/history.right
+++ b/tests/history.right
@@ -1,7 +1,7 @@
-./history.tests: line 4: history: -x: invalid option
+./history.tests: line 17: history: -x: invalid option
history: usage: history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]
-./history.tests: line 6: history: cannot use more than one of -anrw
-./history.tests: line 9: fc: -v: invalid option
+./history.tests: line 19: history: cannot use more than one of -anrw
+./history.tests: line 22: fc: -v: invalid option
fc: usage: fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]
1 for i in one two three; do echo $i; done
2 /bin/sh -c 'echo this is $0'
@@ -97,17 +97,17 @@ line 2 for history
6 HISTFILE=$TMPDIR/newhistory
7 echo displaying \$HISTFILE after history -a
8 cat $HISTFILE
-./history.tests: line 76: fc: history specification out of range
- 14 set -H
+./history.tests: line 90: fc: no command found
15 echo line 2 for history
16 unset HISTSIZE
17 unset HISTFILE
+ 18 # now an out-of-range error because of the one=two not found in history
aa ab ac
echo xx xb xc
xx xb xc
echo 44 48 4c
44 48 4c
-./history.tests: line 91: fc: no command found
+./history.tests: line 105: fc: no command found
aa
bb
cc
@@ -140,9 +140,9 @@ three
one
two
three
-5.0
+5.1
echo ${BASH_VERSION%\.*}
-5.0
+5.1
echo ${BASH_VERSION%\.*}
a
b
@@ -167,14 +167,100 @@ i
4 echo g
5 echo h
-./history3.sub: line 27: history: 16: history position out of range
-./history3.sub: line 28: history: 200: history position out of range
-./history3.sub: line 29: history: -20: history position out of range
-./history3.sub: line 30: history: -50: history position out of range
-./history3.sub: line 31: history: 5-0xaf: history position out of range
+./history3.sub: line 40: history: 16: history position out of range
+./history3.sub: line 41: history: 200: history position out of range
+./history3.sub: line 42: history: -20: history position out of range
+./history3.sub: line 43: history: -50: history position out of range
+./history3.sub: line 44: history: 5-0xaf: history position out of range
1 echo a
2 echo e
3 echo f
4 echo g
5 echo h
+
+0
+1
+2
+(left
+mid
+right)
+A
+B
+
+(left
+mid
+right)
+A
+B
+
+(left
+mid
+right)
+A
+B
+
+0
+1
+2
+(left
+mid
+right)
+A
+B
+(left
+mid
+right)
+A
+B
+
+0
+1
+2
+(left
+mid
+right)
+A
+B
+(left
+mid
+right)
+A
+B
+a
+b
+./history5.sub: line 24: fc: history specification out of range
+./history5.sub: line 25: fc: no command found
+1 echo a
+2 echo b
+3 fc -0 # error
+4 fc -s -0 # error
+c
+6 echo c
+8 fc -l -0
+d
+echo d
+d
+a
+b
+c
+d
+e
+f
+4 echo d
+5 echo e
+6 echo f
+out of range 1
+6 echo f
+7 fc -l
+8 echo out of range 1
+out of range 2
+8 echo out of range 1
+9 fc -l 502 498
+10 echo out of range 2
+out of range 3
+10 echo out of range 2
+11 fc -l 498 502
+12 echo out of range 3
+out of range 4
+13 fc -l 1 99
diff --git a/tests/history.tests b/tests/history.tests
index 4001bd6c..53321f05 100644
--- a/tests/history.tests
+++ b/tests/history.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
trap 'rm $TMPDIR/newhistory' 0
# bad options
@@ -73,6 +86,7 @@ unset HISTFILE
fc -l 4
fc -l 4 8
+# now an out-of-range error because of the one=two not found in history
fc -l one=two three=four 502
history 4
@@ -114,3 +128,5 @@ rm -f $TMPDIR/foohist-*
${THIS_SH} ./history2.sub
${THIS_SH} ./history3.sub
+${THIS_SH} ./history4.sub
+${THIS_SH} ./history5.sub
diff --git a/tests/history1.sub b/tests/history1.sub
index 091b1edc..b67a0efa 100644
--- a/tests/history1.sub
+++ b/tests/history1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
trap 'rm -f $HISTFILE' 0 1 2 3 6 15
HISTFILE=$TMPDIR/foohist-$$
diff --git a/tests/history3.sub b/tests/history3.sub
index 8722666c..d8a22038 100644
--- a/tests/history3.sub
+++ b/tests/history3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
set -o history
diff --git a/tests/history4.sub b/tests/history4.sub
new file mode 100644
index 00000000..651374cf
--- /dev/null
+++ b/tests/history4.sub
@@ -0,0 +1,47 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+HISTFILE=$TMPDIR/newhistory-$$
+export HISTFILE
+
+trap 'rm -f $HISTFILE' EXIT
+
+HISTSIZE=32
+HISTFILESIZE=32
+echo
+set -o history
+history -c
+echo 0
+echo 1
+echo 2
+echo "(left
+mid
+right)"
+echo A
+echo B
+history -w
+set +o history
+
+echo
+printf $'HISTFILE=\n\cRleft\cO\cO\cO\cO\n' | HISTSIZE= ${THIS_SH} --norc -i 2>/dev/null
+echo
+printf $'HISTFILE=\n\cRleft\cO\cO\cO\cO\n' | HISTSIZE=8 ${THIS_SH} --norc -i 2>/dev/null
+
+input="$(cat $HISTFILE)
+"$'\cP\cP\cP\cO\cO
+'
+
+echo
+printf "$input" | HISTSIZE= HISTFILE= ${THIS_SH} --norc -i 2>/dev/null
+echo
+printf "$input" | HISTSIZE=6 HISTFILE= ${THIS_SH} --norc -i 2>/dev/null
diff --git a/tests/history5.sub b/tests/history5.sub
new file mode 100644
index 00000000..245c28d0
--- /dev/null
+++ b/tests/history5.sub
@@ -0,0 +1,57 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+trap 'rm -f "$OUT"' 0 1 2 3 6 15
+
+HISTFILE=$TMPDIR/fchist-$$ ; OUT=$HISTFILE
+unset HISTIGNORE HISTCONTROL
+set -o history
+
+echo a
+echo b
+
+fc -0 # error
+fc -s -0 # error
+
+fc -l
+
+echo c
+fc -l 0
+fc -l -0
+
+echo d
+fc -s 0
+
+HISTSIZE=4
+history -c
+
+echo a
+echo b
+echo c
+echo d
+echo e
+echo f
+fc -l
+
+echo out of range 1
+fc -l 502 498
+echo out of range 2
+fc -l 498 502
+echo out of range 3
+fc -l 1 99
+# other out-of-range behavior for future work
+echo out of range 4
+fc -l -20 -40
+
+unset HISTFILE # suppress writing history file
diff --git a/tests/ifs-posix.tests b/tests/ifs-posix.tests
index cf9a8987..21a90636 100644
--- a/tests/ifs-posix.tests
+++ b/tests/ifs-posix.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# Usage: $SHELL ifs.sh
#
# This script generates 6856 tests for the set(1) and read(1)
diff --git a/tests/ifs.tests b/tests/ifs.tests
index 71769005..27f27dd6 100644
--- a/tests/ifs.tests
+++ b/tests/ifs.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
OIFS="$IFS"
IFS=":$IFS"
eval foo="a:b:c"
diff --git a/tests/intl.tests b/tests/intl.tests
index 5c15b47e..c3000fc7 100644
--- a/tests/intl.tests
+++ b/tests/intl.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
export LC_ALL=en_US.UTF-8
a=$'\303\251'
diff --git a/tests/intl3.sub b/tests/intl3.sub
index 650000e9..56c86780 100644
--- a/tests/intl3.sub
+++ b/tests/intl3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
. ./test-glue-functions
# more tests to make sure that IFS splits on characters, not bytes
diff --git a/tests/invert.tests b/tests/invert.tests
index 8393d95a..f339d41f 100644
--- a/tests/invert.tests
+++ b/tests/invert.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests of return value inversion
# placeholder for future expansion
diff --git a/tests/iquote.tests b/tests/iquote.tests
index a1e63622..8411c8ab 100644
--- a/tests/iquote.tests
+++ b/tests/iquote.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# bug in bash up to and including bash-3.0 (including patches)
#
# problem is conflict between CTLNUL used internally to denote quoted null
diff --git a/tests/iquote1.sub b/tests/iquote1.sub
index 1a8a35c0..685a80ea 100644
--- a/tests/iquote1.sub
+++ b/tests/iquote1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# Problems with variables that expand to 0x7f and quoted nulls in the same
# expansion -- affects bash versions 4.0-post 4.2
a=x
diff --git a/tests/jobs.right b/tests/jobs.right
index 0e9d1d19..5d03b76b 100644
--- a/tests/jobs.right
+++ b/tests/jobs.right
@@ -27,46 +27,55 @@ i killed it
12
[1]- Running sleep 20 &
[3]+ Running sleep 20 &
+5: ok 1
+./jobs5.sub: line 40: wait: %8: no such job
+2: ok 2
+2: ok 3
child1 exit status 0
+[1]+ Running sleep 20 &
+./jobs7.sub: line 5: fg: no current jobs
+[1]+ Running sleep 20 &
0
-./jobs.tests: line 25: wait: %1: no such job
-./jobs.tests: line 30: fg: no job control
+./jobs.tests: line 40: wait: %1: no such job
+./jobs.tests: line 45: fg: no job control
wait-for-pid
wait-errors
-./jobs.tests: line 43: wait: `1-1': not a pid or valid job spec
-./jobs.tests: line 44: wait: `-4': not a pid or valid job spec
+./jobs.tests: line 58: wait: `1-1': not a pid or valid job spec
+./jobs.tests: line 59: wait: `-4': not a pid or valid job spec
wait-for-background-pids
async list wait-for-background-pids
async list wait for child
forked
wait-when-no-children
+posix jobs output
+[1]+ Done sleep 1
wait-for-job
-./jobs.tests: line 66: wait: %2: no such job
+./jobs.tests: line 84: wait: %2: no such job
127
async list wait-for-job
forked
fg-bg 1
-sleep 5
+sleep 2
fg-bg 2
-sleep 5
+sleep 2
fg-bg 3
-sleep 5
+sleep 2
fg-bg 4
-sleep 5
+sleep 2
fg-bg 5
-./jobs.tests: line 93: fg: %2: no such job
-./jobs.tests: line 94: bg: job 1 already in background
+./jobs.tests: line 111: fg: %2: no such job
+./jobs.tests: line 112: bg: job 1 already in background
fg-bg 6
-./jobs.tests: line 101: fg: -s: invalid option
+./jobs.tests: line 119: fg: -s: invalid option
fg: usage: fg [job_spec]
-./jobs.tests: line 102: bg: -s: invalid option
+./jobs.tests: line 120: bg: -s: invalid option
bg: usage: bg [job_spec ...]
-./jobs.tests: line 107: disown: -s: invalid option
+./jobs.tests: line 125: disown: -s: invalid option
disown: usage: disown [-h] [-ar] [jobspec ... | pid ...]
-./jobs.tests: line 111: disown: %1: no such job
-./jobs.tests: line 114: disown: %2: no such job
+./jobs.tests: line 129: disown: %1: no such job
+./jobs.tests: line 132: disown: %2: no such job
wait-for-non-child
-./jobs.tests: line 117: wait: pid 1 is not a child of this shell
+./jobs.tests: line 135: wait: pid 1 is not a child of this shell
127
3 -- 1 2 3 -- 1 - 2 - 3
[1] Running sleep 300 &
@@ -76,8 +85,8 @@ running jobs:
[1] Running sleep 300 &
[2]- Running sleep 350 &
[3]+ Running sleep 400 &
-./jobs.tests: line 134: kill: %4: no such job
-./jobs.tests: line 136: jobs: %4: no such job
+./jobs.tests: line 152: kill: %4: no such job
+./jobs.tests: line 154: jobs: %4: no such job
current job:
[3]+ Running sleep 400 &
previous job:
@@ -105,5 +114,5 @@ after kill -STOP, backgrounding %3:
killing...
done
after KILL -STOP, foregrounding %1
-sleep 10
+sleep 4
done
diff --git a/tests/jobs.tests b/tests/jobs.tests
index 3c2eef31..dacdc15d 100644
--- a/tests/jobs.tests
+++ b/tests/jobs.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test out %+, jobs -p, and $! agreement in a subshell first
${THIS_SH} ./jobs1.sub
@@ -18,6 +31,8 @@ ${THIS_SH} ./jobs5.sub
# test out wait -f framework
${THIS_SH} ./jobs6.sub
+${THIS_SH} ./jobs7.sub
+
jobs
echo $?
@@ -36,7 +51,7 @@ wait # make sure we reap the processes while stderr is still redirected
exec 2>&5
echo wait-for-pid
-sleep 10 &
+sleep 4 &
wait $!
echo wait-errors
@@ -44,52 +59,55 @@ wait 1-1
wait -- -4
echo wait-for-background-pids
-sleep 5 &
-sleep 8 &
+sleep 2 &
+sleep 4 &
wait
echo async list wait-for-background-pids
-sleep 5 & sleep 8 &
+sleep 2 & sleep 4 &
wait
echo async list wait for child
-sleep 5 & echo forked
+sleep 2 & echo forked
wait
echo wait-when-no-children
wait
+echo posix jobs output
+${THIS_SH} -o posix -c 'sleep 1 & P=$! ; sleep 2; jobs; wait'
+
set -m
echo wait-for-job
-sleep 5 &
+sleep 3 &
wait %2 # this should be a no-such-job error
echo $?
wait %1
echo async list wait-for-job
-sleep 5 & echo forked
+sleep 2 & echo forked
wait %1
echo fg-bg 1
-sleep 5 &
+sleep 2 &
%1
echo fg-bg 2
-sleep 5 &
+sleep 2 &
fg %%
echo fg-bg 3
-sleep 5 &
+sleep 2 &
fg %s
echo fg-bg 4
-sleep 5 &
+sleep 2 &
fg %?ee
# these next two are error cases
echo fg-bg 5
-sleep 15 &
+sleep 2 &
fg %2 # this should be a no-such-job error
bg %1 # this should be a `bg background job?' error
wait
@@ -97,7 +115,7 @@ wait
# these may someday mean to start the jobs, but not print the line
# describing the status, but for now they are errors
echo fg-bg 6
-sleep 5 &
+sleep 2 &
fg -s %1
bg -s %1
wait
@@ -140,7 +158,7 @@ echo previous job:
jobs %-
kill -STOP %2
-sleep 5 # give time for the shell to get the stop notification
+sleep 3 # give time for the shell to get the stop notification
echo after kill -STOP
echo running jobs:
jobs -r
@@ -164,7 +182,7 @@ echo stopped jobs:
jobs -s
kill -STOP %3
-sleep 5 # give time for the shell to get the stop notification
+sleep 3 # give time for the shell to get the stop notification
echo after kill -STOP, backgrounding %3:
bg %3
@@ -182,9 +200,9 @@ echo done
exec 2>&5
-sleep 10 &
+sleep 4 &
kill -STOP %1
-sleep 5 # give time for the shell to get the stop notification
+sleep 2 # give time for the shell to get the stop notification
echo after KILL -STOP, foregrounding %1
fg %1
diff --git a/tests/jobs1.sub b/tests/jobs1.sub
index 53f66cc6..84919d9b 100644
--- a/tests/jobs1.sub
+++ b/tests/jobs1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure that jobs -p, %+, and $! all agree
set -m
sleep 60 &
diff --git a/tests/jobs3.sub b/tests/jobs3.sub
index 6efd58b0..1337fc12 100644
--- a/tests/jobs3.sub
+++ b/tests/jobs3.sub
@@ -1,4 +1,17 @@
-#! /bin/bash
+# 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 <http://www.gnu.org/licenses/>.
+#
+
NJOB=8
i=0
diff --git a/tests/jobs4.sub b/tests/jobs4.sub
index 898b449b..7ecd7123 100644
--- a/tests/jobs4.sub
+++ b/tests/jobs4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test being able to use job control notation in jobs/kill/wait without
# job control active, as the SUS requires
diff --git a/tests/jobs5.sub b/tests/jobs5.sub
index 35d39816..e6ffb44e 100644
--- a/tests/jobs5.sub
+++ b/tests/jobs5.sub
@@ -1,12 +1,61 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
# framework to test new `wait -n' option that waits for any job to finish
set -m
sleep 20 &
-{ sleep 5; exit 12; } &
+{ sleep 2; exit 12; } &
sleep 20 &
wait -n
echo $?
jobs
+disown -a
+
+{ sleep 1 ; exit 4; } &
+{ sleep 2 ; exit 5; } & bgpid1=$!
+{ sleep 4 ; exit 6; } &
+
+wait -p wvar -n %2 %3
+case "$wvar" in
+$bgpid1) echo $?: ok 1;;
+*) echo bad 1;;
+esac
+
+{ sleep 1 ; exit 2; } & bgpid2=$!
+wait -p wvar -n %8 $!
+case $wvar in
+$bgpid2) echo $?: ok 2;;
+*) echo bad 2;;
+esac
+
+disown -a
+
+{ sleep 3; exit 1; } & { sleep 1; exit 2; } & bgpid3=$!
+{ sleep 3; exit 3; } & { sleep 3; exit 4; } &
+
+wait -n -p wpid %1 %2 %3 %4
+
+case $wpid in
+$bgpid3) echo $?: ok 3;;
+*) echo bad 3 ;;
+esac
+
+disown -a
+
+unset bgpid1 bgpid2 bgpid3
+unset wpid
diff --git a/tests/jobs7.sub b/tests/jobs7.sub
new file mode 100644
index 00000000..3e76db37
--- /dev/null
+++ b/tests/jobs7.sub
@@ -0,0 +1,6 @@
+# make sure fg in a subshell doesn't try to start a parent's job
+set -m
+sleep 20 &
+echo $(jobs)
+echo $(fg %% ; jobs)
+kill %1
diff --git a/tests/lastpipe.tests b/tests/lastpipe.tests
index 16dc8419..775e81dd 100644
--- a/tests/lastpipe.tests
+++ b/tests/lastpipe.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
binfalse()
{
$binfalse || return 1 # normalize return value
@@ -15,7 +28,7 @@ if [ -x /usr/bin/false ]; then
elif [ -x /bin/false ]; then
binfalse=/bin/false
else
- binfalse=true
+ binfalse=false
fi
shopt -s lastpipe
@@ -58,4 +71,3 @@ ${THIS_SH} ./lastpipe1.sub
echo lastpipe1.sub returns $?
${THIS_SH} ./lastpipe2.sub
-
diff --git a/tests/lastpipe2.sub b/tests/lastpipe2.sub
index 3bcc37d3..a4602863 100644
--- a/tests/lastpipe2.sub
+++ b/tests/lastpipe2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s lastpipe
echo -e 'A\nB' | while read letter; do
echo -e '1\n2' | while read digit; do
diff --git a/tests/mapfile.tests b/tests/mapfile.tests
index ff8da32b..01f1f2e5 100644
--- a/tests/mapfile.tests
+++ b/tests/mapfile.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -a A
mapfile A < mapfile.data
for (( i = 0 ; i < ${#A[@]} ; i++ )); do
diff --git a/tests/more-exp.right b/tests/more-exp.right
index 91a375cb..f5f37c92 100644
--- a/tests/more-exp.right
+++ b/tests/more-exp.right
@@ -108,7 +108,7 @@ argv[3] = <c>
argv[4] = <d>
argv[5] = <e>
argv[6] = <f>
-./more-exp.tests: line 272: abc=def: command not found
+./more-exp.tests: line 285: abc=def: command not found
argv[1] = <a b c d e>
argv[1] = <a>
argv[2] = <b>
@@ -184,13 +184,13 @@ argv[1] = <1>
argv[1] = <5>
argv[1] = <5>
argv[1] = <0>
-./more-exp.tests: line 423: ${#:}: bad substitution
-./more-exp.tests: line 425: ${#/}: bad substitution
-./more-exp.tests: line 427: ${#%}: bad substitution
-./more-exp.tests: line 429: ${#=}: bad substitution
-./more-exp.tests: line 431: ${#+}: bad substitution
-./more-exp.tests: line 433: ${#1xyz}: bad substitution
-./more-exp.tests: line 436: #: %: syntax error: operand expected (error token is "%")
+./more-exp.tests: line 436: ${#:}: bad substitution
+./more-exp.tests: line 438: ${#/}: bad substitution
+./more-exp.tests: line 440: ${#%}: bad substitution
+./more-exp.tests: line 442: ${#=}: bad substitution
+./more-exp.tests: line 444: ${#+}: bad substitution
+./more-exp.tests: line 446: ${#1xyz}: bad substitution
+./more-exp.tests: line 449: #: %: syntax error: operand expected (error token is "%")
argv[1] = <0>
argv[1] = <a+b>
argv[1] = <+>
diff --git a/tests/more-exp.tests b/tests/more-exp.tests
index 10b3a47e..df12b998 100644
--- a/tests/more-exp.tests
+++ b/tests/more-exp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
expect()
{
echo expect "$@"
diff --git a/tests/nameref.right b/tests/nameref.right
index 698002ec..296105c9 100644
--- a/tests/nameref.right
+++ b/tests/nameref.right
@@ -27,12 +27,12 @@ changevar: expect <three four five>
argv[1] = <three four five>
expect <three four five>
argv[1] = <three four five>
-./nameref.tests: line 93: foo: readonly variable
-./nameref.tests: line 94: foo: readonly variable
+./nameref.tests: line 106: foo: readonly variable
+./nameref.tests: line 107: foo: readonly variable
one
one
-./nameref.tests: line 106: foo: readonly variable
-./nameref.tests: line 103: foo: readonly variable
+./nameref.tests: line 119: foo: readonly variable
+./nameref.tests: line 116: foo: readonly variable
one
abxde
abxde
@@ -48,8 +48,8 @@ argv[1] = <unset>
expect <bar>
argv[1] = <bar>
expect <unset>
-./nameref3.sub: line 16: foo: invalid indirect expansion
-./nameref3.sub: line 21: unset: bar: cannot unset: readonly variable
+./nameref3.sub: line 29: foo: invalid indirect expansion
+./nameref3.sub: line 34: unset: bar: cannot unset: readonly variable
expect <two>
two
expect <two>
@@ -105,14 +105,14 @@ ref -> one, value: 1
ref -> two, value: 2
ref -> three, value: 3
final state: ref -> three, value: 3
-./nameref5.sub: line 43: unset: three: cannot unset: readonly variable
+./nameref5.sub: line 56: unset: three: cannot unset: readonly variable
ref -> one, value: 1
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
+./nameref6.sub: line 15: typeset: x: nameref variable self references not allowed
+./nameref6.sub: line 18: typeset: x[3]: reference variable cannot be an array
+./nameref6.sub: line 25: typeset: x: reference variable cannot be an array
the -- 1
42 -- 0
y -- 0
@@ -121,23 +121,23 @@ 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
+./nameref8.sub: line 16: typeset: warning: v: circular name reference
+./nameref8.sub: line 16: warning: v: circular name reference
+./nameref8.sub: line 18: 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
+./nameref8.sub: line 42: typeset: warning: x: circular name reference
+./nameref8.sub: line 42: warning: x: circular name reference
+./nameref8.sub: line 44: 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
+./nameref8.sub: line 51: typeset: warning: v: circular name reference
+./nameref8.sub: line 51: warning: v: circular name reference
+./nameref8.sub: line 51: 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
+./nameref8.sub: line 60: typeset: v: nameref variable self references not allowed
+./nameref8.sub: line 67: warning: x: circular name reference
+./nameref8.sub: line 68: warning: x: circular name reference
x =
idx2
idX2
@@ -157,107 +157,107 @@ comsub
comsub
4
declare -n foo="somevariable"
-./nameref10.sub: line 38: typeset: somevariable: not found
+./nameref10.sub: line 51: 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
+./nameref10.sub: line 62: typeset: somevariable: not found
+./nameref10.sub: line 64: typeset: foo: not found
+./nameref10.sub: line 64: typeset: somevariable: not found
declare -n foo="bar"
-./nameref10.sub: line 55: typeset: bar: not found
+./nameref10.sub: line 68: typeset: bar: not found
declare -n foo="bar"
-./nameref10.sub: line 57: typeset: bar: not found
+./nameref10.sub: line 70: 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
+./nameref10.sub: line 77: typeset: bar: not found
+./nameref11.sub: line 14: declare: `/': invalid variable name for name reference
+./nameref11.sub: line 15: declare: `/': invalid variable name for name reference
+./nameref11.sub: line 16: `/': not a valid identifier
+./nameref11.sub: line 17: declare: `/': not a valid identifier
+./nameref11.sub: line 18: `/': not a valid identifier
1) /
-#? ./nameref11.sub: line 6: `/': not a valid identifier
+#? ./nameref11.sub: line 19: `/': 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 20: ((: `0': not a valid identifier
+./nameref11.sub: line 21: declare: `0': invalid variable name for name reference
+./nameref11.sub: line 22: declare: `/': invalid variable name for name reference
+./nameref11.sub: line 23: 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
+./nameref11.sub: line 25: `/': not a valid identifier
+./nameref11.sub: line 26: exec: `10': not a valid identifier
+./nameref11.sub: line 26: r: cannot assign fd to variable
+./nameref11.sub: line 27: 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 28: declare: RO: readonly variable
+./nameref11.sub: line 28: RO: readonly variable
+./nameref11.sub: line 29: declare: `/': invalid variable name for name reference
/
-./nameref11.sub: line 17: declare: `/': invalid variable name for name reference
+./nameref11.sub: line 30: 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
+./nameref11.sub: line 31: getopts: `?': not a valid identifier
+./nameref11.sub: line 32: 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
+./nameref11.sub: line 33: declare: r: reference variable cannot be an array
+./nameref11.sub: line 34: printf: `/': not a valid identifier
+./nameref11.sub: line 36: `': not a valid identifier
+./nameref11.sub: line 37: declare: `': not a valid identifier
+./nameref11.sub: line 38: `': not a valid identifier
+./nameref11.sub: line 39: printf: `': not a valid identifier
+./nameref11.sub: line 40: 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
+./nameref11.sub: line 45: ROVAR: readonly variable
+./nameref11.sub: line 45: ROVAR: cannot unset: readonly variable
declare -r ROVAR="42"
./nameref11.sub
-./nameref11.sub: line 34: `@': not a valid identifier
+./nameref11.sub: line 47: `@': not a valid identifier
./nameref11.sub
declare -n ref="x"
-./nameref11.sub: line 39: RO: readonly variable
+./nameref11.sub: line 52: RO: readonly variable
declare -r RO_PID
-./nameref11.sub: line 39: RO: cannot unset: readonly variable
+./nameref11.sub: line 52: 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
+./nameref11.sub: line 52: declare: RO_PID: not found
+./nameref11.sub: line 54: RO2: readonly variable
declare -r RO2="a"
2
-./nameref11.sub: line 52: typeset: `2': invalid variable name for name reference
+./nameref11.sub: line 65: typeset: `2': invalid variable name for name reference
2
-./nameref11.sub: line 57: typeset: `2': invalid variable name for name reference
+./nameref11.sub: line 70: typeset: `2': invalid variable name for name reference
2
-./nameref11.sub: line 62: foo[2]: invalid indirect expansion
-./nameref11.sub: line 63: bar: invalid indirect expansion
-./nameref12.sub: line 6: declare: `/': invalid variable name for name reference
-./nameref12.sub: line 9: declare: `%': invalid variable name for name reference
-./nameref12.sub: line 13: `^': not a valid identifier
+./nameref11.sub: line 75: foo[2]: invalid indirect expansion
+./nameref11.sub: line 76: bar: invalid indirect expansion
+./nameref12.sub: line 19: declare: `/': invalid variable name for name reference
+./nameref12.sub: line 22: declare: `%': invalid variable name for name reference
+./nameref12.sub: line 26: `^': 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
+./nameref12.sub: line 39: declare: `42': not a valid identifier
+./nameref12.sub: line 40: 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
+./nameref12.sub: line 58: declare: `7*6': not a valid identifier
+./nameref12.sub: line 58: declare: foo: not found
+./nameref12.sub: line 60: `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
+./nameref12.sub: line 87: 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
+./nameref12.sub: line 104: `': not a valid identifier
declare -n ref
declare -- ref="global"
declare -a var=([0]="foo2")
-./nameref12.sub: line 100: declare: global: not found
+./nameref12.sub: line 113: declare: global: not found
declare -- a
declare -n r="a"
declare -- a
@@ -270,9 +270,9 @@ declare -n r="a"
0
declare -n r
declare -n r
-./nameref13.sub: line 88: typeset: `12345': invalid variable name for name reference
+./nameref13.sub: line 101: typeset: `12345': invalid variable name for name reference
declare -n foo
-./nameref13.sub: line 97: typeset: `12345': invalid variable name for name reference
+./nameref13.sub: line 110: typeset: `12345': invalid variable name for name reference
declare -n foo
declare -nx ref="var"
var
@@ -285,7 +285,7 @@ foo
foo
before
declare -n ref="var"
-./nameref14.sub: line 23: typeset: var: not found
+./nameref14.sub: line 36: typeset: var: not found
first
declare -n ref="var"
declare -x var="xxx"
@@ -294,105 +294,105 @@ declare -n ref="var"
declare -x var="5"
after
declare -n ref="var"
-./nameref14.sub: line 32: typeset: var: not found
+./nameref14.sub: line 45: 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
+./nameref15.sub: line 14: local: warning: a: circular name reference
+./nameref15.sub: line 14: warning: a: circular name reference
+./nameref15.sub: line 14: `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
+./nameref15.sub: line 14: local: warning: a: circular name reference
+./nameref15.sub: line 14: warning: a: circular name reference
+./nameref15.sub: line 14: 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
+./nameref15.sub: line 14: local: warning: a: circular name reference
+./nameref15.sub: line 14: warning: a: circular name reference
+./nameref15.sub: line 14: `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
+./nameref15.sub: line 32: typeset: warning: ref: circular name reference
+./nameref15.sub: line 32: warning: ref: circular name reference
+./nameref15.sub: line 33: warning: ref: circular name reference
+./nameref15.sub: line 34: warning: ref: circular name reference
inside X
outside X
before: 7
-./nameref15.sub: line 32: typeset: warning: xxx: circular name reference
-./nameref15.sub: line 32: warning: xxx: circular name reference
-./nameref15.sub: line 33: warning: xxx: circular name reference
+./nameref15.sub: line 45: typeset: warning: xxx: circular name reference
+./nameref15.sub: line 45: warning: xxx: circular name reference
+./nameref15.sub: line 46: warning: xxx: circular name reference
declare -n xxx="xxx"
-./nameref15.sub: line 35: warning: xxx: circular name reference
+./nameref15.sub: line 48: warning: xxx: circular name reference
xxx_func: inside: xxx = foo
after: foo
-./nameref15.sub: line 46: typeset: ref: nameref variable self references not allowed
-./nameref15.sub: line 48: ref: nameref variable self references not allowed
+./nameref15.sub: line 59: typeset: ref: nameref variable self references not allowed
+./nameref15.sub: line 61: 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 65: var[@]: bad array subscript
+./nameref15.sub: line 78: var[@]: bad array subscript
declare -n bar="var[@]"
-./nameref15.sub: line 70: var[@]: bad array subscript
+./nameref15.sub: line 83: var[@]: bad array subscript
declare -n a="b"
declare -n b="a[1]"
-./nameref15.sub: line 78: warning: a: removing nameref attribute
+./nameref15.sub: line 91: warning: a: removing nameref attribute
declare -a a=([1]="foo")
declare -n b="a[1]"
-./nameref15.sub: line 83: warning: a: removing nameref attribute
+./nameref15.sub: line 96: 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 99: typeset: n: not found
+./nameref15.sub: line 112: 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
+./nameref16.sub: line 25: typeset: x: not found
+./nameref16.sub: line 25: 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
+./nameref16.sub: line 34: typeset: x: not found
+./nameref16.sub: line 34: 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
+./nameref16.sub: line 46: typeset: x: not found
+./nameref16.sub: line 46: 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
+./nameref17.sub: line 21: declare: bar: not found
+./nameref17.sub: line 22: 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
+./nameref17.sub: line 27: declare: foo0: readonly variable
+./nameref17.sub: line 28: declare: foo0: readonly variable
declare -nr foo1
-./nameref17.sub: line 24: typeset: foo1: readonly variable
+./nameref17.sub: line 37: 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
+./nameref17.sub: line 48: bar: readonly variable
+./nameref17.sub: line 49: 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
+./nameref17.sub: line 59: unset: foo3: cannot unset: readonly variable
+./nameref17.sub: line 62: declare: bar3: readonly variable
declare -nr foo3="bar3"
declare -r bar3="three"
-./nameref17.sub: line 51: declare: foo3: readonly variable
+./nameref17.sub: line 64: declare: foo3: readonly variable
declare -nr foo4="bar4"
declare -- bar4="four"
-./nameref17.sub: line 63: typeset: foo4: readonly variable
+./nameref17.sub: line 76: typeset: foo4: readonly variable
declare -nr foo4="bar4"
declare -nr foo4="bar4"
declare -- bar4="four"
-./nameref17.sub: line 79: typeset: foo4: readonly variable
+./nameref17.sub: line 92: typeset: foo4: readonly variable
declare -nr foo4="bar4"
declare -nr foo4="bar4"
declare -- bar4="four"
@@ -400,33 +400,33 @@ 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
+./nameref18.sub: line 15: mapfile: `XXX[0]': not a valid identifier
+./nameref18.sub: line 16: declare: XXX[0]: not found
+./nameref18.sub: line 22: `XXX[0]': not a valid identifier
+./nameref18.sub: line 23: 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
+./nameref18.sub: line 37: `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
+./nameref18.sub: line 42: read: `XXX[0]': not a valid identifier
+./nameref18.sub: line 43: declare: XXX[0]: not found
+./nameref18.sub: line 48: `XXX[0]': not a valid identifier
+declare -n ref="XXX[0]"
+./nameref18.sub: line 51: `XXX[0]': not a valid identifier
+./nameref18.sub: line 51: declare: XXX[0]: not found
declare -n ref="var[123]"
-./nameref18.sub: line 46: declare: var[123]: not found
+./nameref18.sub: line 59: declare: var[123]: not found
declare -a var=([123]="")
declare -n ref="var[123]"
-./nameref18.sub: line 50: declare: var[123]: not found
+./nameref18.sub: line 63: declare: var[123]: not found
declare -a var=([123]="")
declare -n ref="var[123]"
-./nameref18.sub: line 54: declare: var[123]: not found
+./nameref18.sub: line 67: declare: var[123]: not found
declare -a var=([123]="X")
declare -n foo="bar"
declare -- foo="bar"
-./nameref19.sub: line 9: declare: bar: not found
+./nameref19.sub: line 22: declare: bar: not found
declare -n foo="bar"
declare -- foo="bar"
declare -i bar="11"
@@ -448,27 +448,27 @@ declare -a var=([0]="X")
declare -n ref="var"
declare -a var=([0]="X")
declare -n ref="var"
-./nameref20.sub: line 23: declare: var: not found
+./nameref20.sub: line 36: declare: var: not found
outside:
declare -a foo=([0]="X")
declare -n ref="var"
declare -a var=([0]="X")
outside:
-./nameref20.sub: line 38: declare: ref: not found
-./nameref20.sub: line 38: declare: var: not found
+./nameref20.sub: line 51: declare: ref: not found
+./nameref20.sub: line 51: declare: var: not found
declare -n ref="var"
declare -- var="X"
outside:
-./nameref20.sub: line 45: declare: ref: not found
-./nameref20.sub: line 45: declare: var: not found
+./nameref20.sub: line 58: declare: ref: not found
+./nameref20.sub: line 58: declare: var: not found
declare -n ref="var"
declare -a var=([0]="Y")
declare -- ref="Y"
declare -- var="X"
-ref=Y
declare -- ref="Y"
-./nameref20.sub: line 61: declare: var: not found
-ref=Y
+declare -- ref="Y"
+./nameref20.sub: line 74: declare: var: not found
+declare -- ref="Y"
declare -n ref="var"
declare -A var=([2]="" )
declare -n ref="var"
diff --git a/tests/nameref.tests b/tests/nameref.tests
index f4af904c..3a6c5d98 100644
--- a/tests/nameref.tests
+++ b/tests/nameref.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# basic nameref tests
bar=one
flow=two
diff --git a/tests/nameref10.sub b/tests/nameref10.sub
index 2a1ba359..742755b3 100644
--- a/tests/nameref10.sub
+++ b/tests/nameref10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# testing behavior of command substitution as one of expansions performed by
# array subscripting; should behave the same directly as when done through
# a nameref
diff --git a/tests/nameref11.sub b/tests/nameref11.sub
index 402e5015..ea14c0db 100644
--- a/tests/nameref11.sub
+++ b/tests/nameref11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
r=/; declare -n r ; unset r
declare -n r=/ ; unset -n r
declare -n r; r=/ ; unset -n r
diff --git a/tests/nameref12.sub b/tests/nameref12.sub
index 24c33702..199b51c8 100644
--- a/tests/nameref12.sub
+++ b/tests/nameref12.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -n r
declare -n r
unset -n r
diff --git a/tests/nameref13.sub b/tests/nameref13.sub
index 556fbdb7..5c56428b 100644
--- a/tests/nameref13.sub
+++ b/tests/nameref13.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -nt r=a
f()
diff --git a/tests/nameref14.sub b/tests/nameref14.sub
index 7880b007..a14c440c 100644
--- a/tests/nameref14.sub
+++ b/tests/nameref14.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# exporting namerefs and putting namerefs in temp env post bash-4.3
typeset -nx ref=var;
diff --git a/tests/nameref15.sub b/tests/nameref15.sub
index 9fbacd4f..cce8fbd9 100644
--- a/tests/nameref15.sub
+++ b/tests/nameref15.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f() { local -n a=$1; a=X; }
a=(0); f 'a[0]'
diff --git a/tests/nameref16.sub b/tests/nameref16.sub
index 75c7ba11..d07a3a02 100644
--- a/tests/nameref16.sub
+++ b/tests/nameref16.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# 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
diff --git a/tests/nameref17.sub b/tests/nameref17.sub
index 0cd5a42d..b8c3cc73 100644
--- a/tests/nameref17.sub
+++ b/tests/nameref17.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test behavior of readonly namerefs and namerefs referencing readonly variables
# readonly nameref variable referencing read-write global variable
diff --git a/tests/nameref18.sub b/tests/nameref18.sub
index 1b022959..a29fe379 100644
--- a/tests/nameref18.sub
+++ b/tests/nameref18.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
declare -n ref=XXX[0]
mapfile ref <<< $'1\n2'
declare -p XXX[0]
diff --git a/tests/nameref19.sub b/tests/nameref19.sub
index d46c003f..b00f68e5 100644
--- a/tests/nameref19.sub
+++ b/tests/nameref19.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# can we unset the nameref attribute on variables with values that reference
# unset variables?
diff --git a/tests/nameref20.sub b/tests/nameref20.sub
index 1e6faec9..715bc4dc 100644
--- a/tests/nameref20.sub
+++ b/tests/nameref20.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# a collection of cases in bug reports after bash-5.0-alpha was released
declare -n r=v[0]
diff --git a/tests/nameref21.sub b/tests/nameref21.sub
index a555a084..08d8f561 100644
--- a/tests/nameref21.sub
+++ b/tests/nameref21.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# issues with local variables and local namerefs post-bash-4.4
f()
diff --git a/tests/nameref3.sub b/tests/nameref3.sub
index 57902917..67cb0982 100644
--- a/tests/nameref3.sub
+++ b/tests/nameref3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# nameref requires changes to unset
bar=one
typeset -n foo=bar
diff --git a/tests/nameref4.sub b/tests/nameref4.sub
index 4dd86b2f..6367d565 100644
--- a/tests/nameref4.sub
+++ b/tests/nameref4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test suite cribbed from ksh93 nameref tests
typeset -i errors=0
ckval()
diff --git a/tests/nameref5.sub b/tests/nameref5.sub
index 2c67a948..6855e992 100644
--- a/tests/nameref5.sub
+++ b/tests/nameref5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# nameref variables as for loop index variables are special
v1=1
v2=2
diff --git a/tests/nameref6.sub b/tests/nameref6.sub
index cf70d412..8497967f 100644
--- a/tests/nameref6.sub
+++ b/tests/nameref6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# these should be errors
typeset -n x=x
#echo $x -- $?
diff --git a/tests/nameref7.sub b/tests/nameref7.sub
index 19bdc989..5e67ac04 100644
--- a/tests/nameref7.sub
+++ b/tests/nameref7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
fn ()
{
declare -n var=foo; var=bar
diff --git a/tests/nameref8.sub b/tests/nameref8.sub
index 23808682..465463bf 100644
--- a/tests/nameref8.sub
+++ b/tests/nameref8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
function f1
{
typeset -n v=$1
diff --git a/tests/new-exp.right b/tests/new-exp.right
index c0f78fbb..752bba5c 100644
--- a/tests/new-exp.right
+++ b/tests/new-exp.right
@@ -3,7 +3,7 @@ argv[1] = <foo>
argv[1] = </usr/homes/chet>
argv[1] = </usr/homes/chet>
argv[1] = </usr/homes/chet>
-./new-exp.tests: line 28: HOME: }: syntax error: operand expected (error token is "}")
+./new-exp.tests: line 41: HOME: }: syntax error: operand expected (error token is "}")
unset
argv[1] = </usr/homes/chet>
argv[1] = </usr/homes/chet>
@@ -66,8 +66,8 @@ argv[4] = <d>
argv[1] = <a>
argv[2] = <b c>
argv[3] = <d>
-./new-exp.tests: line 184: ABX: unbound variable
-./new-exp.tests: line 188: $6: cannot assign in this way
+./new-exp.tests: line 197: ABX: unbound variable
+./new-exp.tests: line 201: $6: cannot assign in this way
argv[1] = <xxcde>
argv[1] = <axxde>
argv[1] = <abxyz>
@@ -170,13 +170,13 @@ This-string-has-multiple-lines.
this is a test of proc subst
this is test 2
a
-./new-exp2.sub: line 42: /tmp/redir-notthere: No such file or directory
+./new-exp2.sub: line 55: /tmp/redir-notthere: No such file or directory
1
-./new-exp2.sub: line 49: 1111111111111111111111: command not found
+./new-exp2.sub: line 62: 1111111111111111111111: command not found
argv[1] = <6>
-./new-exp.tests: line 289: ${#:}: bad substitution
+./new-exp.tests: line 302: ${#:}: bad substitution
argv[1] = <'>
argv[1] = <">
argv[1] = <"hello">
@@ -411,13 +411,13 @@ argv[6] = <w>
argv[7] = <x>
argv[8] = <y>
argv[9] = <z>
-./new-exp.tests: line 507: $9: unbound variable
-./new-exp.tests: line 508: 9: unbound variable
-./new-exp.tests: line 509: UNSET: unbound variable
-./new-exp.tests: line 510: UNSET: unbound variable
-./new-exp.tests: line 511: UNSET: unbound variable
-./new-exp.tests: line 512: UNSET: unbound variable
-./new-exp.tests: line 513: UNSET: unbound variable
+./new-exp.tests: line 520: $9: unbound variable
+./new-exp.tests: line 521: 9: unbound variable
+./new-exp.tests: line 522: UNSET: unbound variable
+./new-exp.tests: line 523: UNSET: unbound variable
+./new-exp.tests: line 524: UNSET: unbound variable
+./new-exp.tests: line 525: UNSET: unbound variable
+./new-exp.tests: line 526: UNSET: unbound variable
argv[1] = <5>
argv[1] = <#>
argv[1] = <#>
@@ -453,9 +453,9 @@ 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
+./new-exp3.sub: line 36: ${!_Q* }: bad substitution
+./new-exp3.sub: line 41: ${!1*}: bad substitution
+./new-exp3.sub: line 43: ${!@*}: bad substitution
Case01---3---A:B:C---
Case02---1---A B C::---
Case03---3---A:B:C---
@@ -464,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 533: ${$(($#-1))}: bad substitution
+./new-exp.tests: line 546: ${$(($#-1))}: bad substitution
argv[1] = <a>
argv[2] = <b>
argv[3] = <c>
@@ -481,7 +481,8 @@ argv[1] = <a>
argv[1] = <a>
argv[2] = <b>
argv[1] = <>
-./new-exp.tests: line 552: $(($# - 2)): substring expression < 0
+./new-exp.tests: line 565: $(($# - 2)): substring expression < 0
+./new-exp.tests: line 567: -2: substring expression < 0
argv[1] = <bin>
argv[2] = <bin>
argv[3] = <ucb>
@@ -616,7 +617,7 @@ c Sub = 0 2 4 8
<>
<>
<'ab '\''cd'\'' ef'>
-./new-exp10.sub: line 11: ${x@C}: bad substitution
+./new-exp10.sub: line 24: ${x@C}: bad substitution
<'ab'> <'cd ef'> <''> <'gh'>
<'ab' 'cd ef' '' 'gh'>
<'ab'> <'cd> <ef'> <''> <'gh'>
@@ -624,7 +625,7 @@ c Sub = 0 2 4 8
<'ab cd'>
<'4'> <'ab cd'>
<>
-argv[1] = <host(2)[5.0]$ >
+argv[1] = <host(2)[5.1]$ >
<
>
<' \t\n'>
@@ -635,7 +636,7 @@ 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" )
+declare -A A=([four]="de" [two]="b c" [three]="" [one]="1" )
r
a
A
@@ -667,6 +668,58 @@ prependå
Ã¥
ḅć
ḅć
+HELLO;1 foo;2 foo;
+PASS;1 foo;2 foo;
+after: PASS
+'zzz'
+'zzz'
+declare -rl VAR1
+declare -rl VAR1
+declare -rl VAR1
+declare -rl VAR1
+rl
+rl
+rl
+rl
+declare -arl VAR3
+declare -arl VAR3
+declare -arl VAR3
+declare -arl VAR3
+arl
+arl
+arl
+arl
+one
+one
+'aaa'
+'aaa' 'bbb'
+./new-exp13.sub: line 56: aaa bbb: invalid variable name
+aaa bbb
+0 1
+'aaa'
+'aaa' 'bbb'
+'aaa' 'bbb'
+'aaa' 'bbb'
+a bbb
+aaa bb
+'string'
+'value with spaces'
+'a b' 'c d' 'e f'
+'a b' 'c d' 'e f'
+0 "zero" 1 "one" 2 "two" 3 "three"
+0 "zero z" 1 "one o" 2 "two t" 3 "three t"
+declare -a foo=()
+ai
+declare -ai foo
+bash: line 1: foo: unbound variable
+ai
+declare -ai foo
+bash: line 1: !bar: unbound variable
+a
+a
+a
+a
argv[1] = </>
argv[1] = </>
-./new-exp.tests: line 615: ABXD: parameter unset
+
+./new-exp.tests: line 1: ABXD: parameter unset
diff --git a/tests/new-exp.tests b/tests/new-exp.tests
index 557d6b44..079426cb 100644
--- a/tests/new-exp.tests
+++ b/tests/new-exp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
if (( $UID == 0 )); then
echo "new-exp.tests: the test suite should not be run as root" >&2
fi
@@ -550,6 +563,8 @@ recho "${*:1:0}"
# this is an error -- negative expression
set a
recho ${@:1:$(($# - 2))}
+set a b c d e
+recho ${@: -3:-2}
XPATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:.:/sbin:/usr/sbin
set $( IFS=: ; echo $XPATH )
@@ -604,12 +619,32 @@ ${THIS_SH} ./new-exp10.sub
# parameter substring replacement and removal operators with multibyte chars
${THIS_SH} ./new-exp11.sub
+# indirect expansion with arrays and local variables
+${THIS_SH} ./new-exp12.sub
+
+# more indirect expansion and parameter transformation issues
+${THIS_SH} ./new-exp13.sub
+
+# new K parameter transformation operator
+${THIS_SH} ./new-exp14.sub
+
+# ongoing work with a/A parameter transformations and `nounset'
+${THIS_SH} ./new-exp15.sub
+
# problems with stray CTLNUL in bash-4.0-alpha
unset a
a=/a
recho "/${a%/*}"
recho "/${a///a/}"
-# this must be last!
+patfunc()
+{
+ echo ${1##*"${1##*}"}
+}
+patfunc foo
+
+# caused core dumps because of bad bracket expression parsing in bash-5.0
+eval : $'${x/#[0\xef\xbf\xbd\\Z[:]]}'
+
expect $0: 'ABXD: parameter unset'
-recho ${ABXD:?"parameter unset"}
+${THIS_SH} -c 'recho ${ABXD:?"parameter unset"}' $0
diff --git a/tests/new-exp1.sub b/tests/new-exp1.sub
index 2b621fca..d29b93c7 100644
--- a/tests/new-exp1.sub
+++ b/tests/new-exp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
FN=${TMPDIR}/bashtest-$$
expect()
{
diff --git a/tests/new-exp10.sub b/tests/new-exp10.sub
index 9e89a701..bf9ebe7a 100644
--- a/tests/new-exp10.sub
+++ b/tests/new-exp10.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# new framework for parameter transformations, post bash-4.3
printf "<%s>" "${x@Q}" ; echo
diff --git a/tests/new-exp11.sub b/tests/new-exp11.sub
index da6b4e1f..6a9edd59 100644
--- a/tests/new-exp11.sub
+++ b/tests/new-exp11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# pattern matching and replacement operators with multibyte characters
LANG=en_US.UTF-8
diff --git a/tests/new-exp12.sub b/tests/new-exp12.sub
new file mode 100644
index 00000000..1fbd5d63
--- /dev/null
+++ b/tests/new-exp12.sub
@@ -0,0 +1,40 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+#
+# make sure indirect expansion for arrays uses the closest-scope instance
+# of the resulting variable name
+
+array_1=("PASS")
+array_2=("1 foo" "2 foo")
+
+unsafe_fn ()
+{
+ local array_1=('HELLO')
+ local a=("${!1}") b=("${!2}")
+ printf '%s;' "${a[@]}" "${b[@]}"
+ printf '\n'
+}
+
+safe_fn ()
+{
+ local a=("${!1}") b=("${!2}")
+ local array_1=('FAIL')
+ printf '%s;' "${a[@]}" "${b[@]}"
+ printf '\n'
+}
+
+unsafe_fn 'array_1[@]' 'array_2[@]'
+safe_fn 'array_1[@]' 'array_2[@]'
+
+echo after: ${array_1[@]}
diff --git a/tests/new-exp13.sub b/tests/new-exp13.sub
new file mode 100644
index 00000000..7e8ed32c
--- /dev/null
+++ b/tests/new-exp13.sub
@@ -0,0 +1,72 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+declare -lr VAR1
+declare -lr VAR2=zzz
+declare -alr VAR3
+
+var=VAR2
+
+echo ${!var@Q}
+echo ${VAR2@Q}
+
+echo ${VAR1@A}
+echo ${VAR1[@]@A}
+echo "${VAR1@A}"
+echo "${VAR1[@]@A}"
+
+echo "${VAR1[@]@a}"
+echo ${VAR1[@]@a}
+echo "${VAR1@a}"
+echo ${VAR1@a}
+
+echo ${VAR3@A}
+echo ${VAR3[@]@A}
+echo "${VAR3@A}"
+echo "${VAR3[@]@A}"
+
+echo "${VAR3[@]@a}"
+echo ${VAR3[@]@a}
+echo "${VAR3@a}"
+echo ${VAR3@a}
+
+var=one
+
+echo ${var}
+echo ${var[@]}
+
+VAR4=(aaa bbb)
+
+varname=VAR4
+
+echo ${!varname[@]@Q}
+
+echo ${VAR4[@]@Q}
+echo ${!VAR4[@]@Q}
+
+echo ${VAR4[@]}
+echo ${!VAR4[@]}
+
+VAR5=(aaa bbb)
+varname="VAR5[@]"
+
+echo "${VAR5@Q}"
+echo "${VAR5[@]@Q}"
+
+echo "${!varname@Q}"
+echo "${!varname[@]@Q}"
+
+# caused core dumps through bash-5.0
+echo "${!varname##aa}"
+echo "${!varname[@]%b}"
diff --git a/tests/new-exp14.sub b/tests/new-exp14.sub
new file mode 100644
index 00000000..b8bda8de
--- /dev/null
+++ b/tests/new-exp14.sub
@@ -0,0 +1,19 @@
+# test the other uses of the 'K' tranform operator
+# the associative array tests are performed separately, since that was the
+# original motivation for this feature
+foo=string
+bar='value with spaces'
+
+set -- 'a b' 'c d' 'e f'
+
+echo ${foo@K}
+echo ${bar@K}
+
+echo ${@@K}
+echo "${@@K}"
+
+foo=( zero one two three )
+echo ${foo[@]@K}
+
+foo=( 'zero z' 'one o' 'two t' 'three t' )
+echo ${foo[@]@K}
diff --git a/tests/new-exp15.sub b/tests/new-exp15.sub
new file mode 100644
index 00000000..f8b9ed84
--- /dev/null
+++ b/tests/new-exp15.sub
@@ -0,0 +1,29 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+: ${THIS_SH:=./bash}
+
+${THIS_SH} -c 'declare -a foo=() ; declare -p foo' bash
+
+${THIS_SH} -c 'declare -ia foo=() ; echo ${foo@a} ; echo ${foo@A}' bash
+${THIS_SH} -uc 'declare -ia foo=() ; echo ${foo@a} ; echo ${foo@A}' bash
+
+${THIS_SH} -c 'declare -ia foo=() ; bar=foo; echo ${!bar@a} ; echo ${!bar@A}' bash
+${THIS_SH} -uc 'declare -ia foo=() ; bar=foo; echo ${!bar@a} ; echo ${!bar@A}' bash
+
+${THIS_SH} -c 'declare -a foo=( [1]=one ) ; echo ${foo@a}' bash
+${THIS_SH} -uc 'declare -a foo=( [1]=one ) ; echo ${foo@a}' bash
+
+${THIS_SH} -c 'declare -a foo=( [1]=one ) ; bar=foo; echo ${!bar@a}' bash
+${THIS_SH} -uc 'declare -a foo=( [1]=one ) ; bar=foo; echo ${!bar@a}' bash
diff --git a/tests/new-exp2.sub b/tests/new-exp2.sub
index ea52b3ce..8dfe788f 100644
--- a/tests/new-exp2.sub
+++ b/tests/new-exp2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
export LC_ALL=C
export LANG=C
@@ -37,7 +50,7 @@ if [[ $LINES2 -gt 0 ]]; then
fi
set +o posix
-# now see what happens when we try it with a non-existant file
+# now see what happens when we try it with a non-existent file
rm -f /tmp/redir-notthere
LINES3=$(< /tmp/redir-notthere)
echo $?
diff --git a/tests/new-exp3.sub b/tests/new-exp3.sub
index 2a766ebd..a0c6586d 100644
--- a/tests/new-exp3.sub
+++ b/tests/new-exp3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
:
# Set up some dummy variables beginning with _Q
_QUANTITY=
diff --git a/tests/new-exp4.sub b/tests/new-exp4.sub
index 45439a06..e491f5cf 100644
--- a/tests/new-exp4.sub
+++ b/tests/new-exp4.sub
@@ -1,4 +1,16 @@
-#!/bin/bash
+# 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 <http://www.gnu.org/licenses/>.
+#
arrayA=("A" "B" "C")
diff --git a/tests/new-exp5.sub b/tests/new-exp5.sub
index 0ee86e98..cb203a70 100644
--- a/tests/new-exp5.sub
+++ b/tests/new-exp5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=(one two)
echo ${x[@]:1}
echo ${x[@]:0:1}
diff --git a/tests/new-exp6.sub b/tests/new-exp6.sub
index 532ec1af..83b041ac 100644
--- a/tests/new-exp6.sub
+++ b/tests/new-exp6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# quoted null problems in versions of bash prior to 3.2
str='12'
diff --git a/tests/new-exp8.sub b/tests/new-exp8.sub
index e047abce..9effec54 100644
--- a/tests/new-exp8.sub
+++ b/tests/new-exp8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
pat1='str'
pat2='[^;]'
pat3='[[:alnum:]_]'
diff --git a/tests/new-exp9.sub b/tests/new-exp9.sub
index c9d133c8..799f192d 100644
--- a/tests/new-exp9.sub
+++ b/tests/new-exp9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
indirarray()
{
local intermediary
diff --git a/tests/nquote.tests b/tests/nquote.tests
index 80d3cb46..20d6415d 100644
--- a/tests/nquote.tests
+++ b/tests/nquote.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
expect()
{
echo expect "$@"
diff --git a/tests/nquote1.tests b/tests/nquote1.tests
index f47ab54e..679976c6 100644
--- a/tests/nquote1.tests
+++ b/tests/nquote1.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=$'a\001b'
set $a
diff --git a/tests/nquote2.sub b/tests/nquote2.sub
index d3325f17..bfe2b190 100644
--- a/tests/nquote2.sub
+++ b/tests/nquote2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
t() {
printf '%s | %s\n' "$1" "$2"
}
diff --git a/tests/nquote2.tests b/tests/nquote2.tests
index c07bd9b8..e3af99af 100644
--- a/tests/nquote2.tests
+++ b/tests/nquote2.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=$'a\001b'
e=$'uv\001\001wx'
diff --git a/tests/nquote3.tests b/tests/nquote3.tests
index a83ff56d..44b51c40 100644
--- a/tests/nquote3.tests
+++ b/tests/nquote3.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=$'a\001b'
set $a
diff --git a/tests/nquote4.tests b/tests/nquote4.tests
index ed734677..5c67705b 100644
--- a/tests/nquote4.tests
+++ b/tests/nquote4.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
recho $'ab\x{}cd'
recho $'ab\x{41}cd'
recho $'ab\x41cd'
diff --git a/tests/nquote5.tests b/tests/nquote5.tests
index 85a2ff63..ca0308d7 100644
--- a/tests/nquote5.tests
+++ b/tests/nquote5.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=$'ab\001cd\001ef'
IFS=$'\001'
diff --git a/tests/parser.right b/tests/parser.right
index cecbb222..3a01004f 100644
--- a/tests/parser.right
+++ b/tests/parser.right
@@ -1,16 +1,16 @@
AAA
-bash5: `invalid-name': not a valid identifier
+bash5: line 1: `invalid-name': not a valid identifier
in
in
in
in
-bash5: -c: line 0: syntax error near unexpected token `)'
-bash5: -c: line 0: `case x in esac) echo done; esac'
+bash5: -c: line 1: syntax error near unexpected token `)'
+bash5: -c: line 1: `case x in esac) echo done; esac'
in
-bash5: -c: line 0: syntax error near unexpected token `do'
-bash5: -c: line 0: `case in do do) echo in; esac'
-bash5: -c: line 0: syntax error near unexpected token `('
-bash5: -c: line 0: `for()'
+bash5: -c: line 1: syntax error near unexpected token `do'
+bash5: -c: line 1: `case in do do) echo in; esac'
+bash5: -c: line 1: syntax error near unexpected token `('
+bash5: -c: line 1: `for()'
in
done
ok 1
diff --git a/tests/posix2.right b/tests/posix2.right
index b1585a2e..40aea039 100644
--- a/tests/posix2.right
+++ b/tests/posix2.right
@@ -1,6 +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'
+./posix2.tests: eval: line 195: syntax error near unexpected token `esac'
+./posix2.tests: eval: line 195: `case esac in (esac) ;; *) echo "case esac test 3" ;; esac'
+./posix2.tests: eval: line 197: syntax error near unexpected token `)'
+./posix2.tests: eval: line 197: `case esac in esac) ;; *) echo "case esac test 4";; esac'
All tests passed
diff --git a/tests/posix2.tests b/tests/posix2.tests
index ecf6a6fa..9b6c0932 100644
--- a/tests/posix2.tests
+++ b/tests/posix2.tests
@@ -1,4 +1,17 @@
-#! /bin/sh
+# 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 <http://www.gnu.org/licenses/>.
+#
+
# posix-2.sh - Simple identification tests for POSIX.2 features
# commonly missing or incorrectly implemented.
# Time-stamp: <96/04/10 16:43:48 gildea>
diff --git a/tests/posix2syntax.sub b/tests/posix2syntax.sub
index e7dda58f..39af9a55 100644
--- a/tests/posix2syntax.sub
+++ b/tests/posix2syntax.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${THIS_SH:=./bash}
bashname=bash${BASH_VERSION%%.*}
diff --git a/tests/posixexp.right b/tests/posixexp.right
index 53a08e3b..e6bdbf4b 100644
--- a/tests/posixexp.right
+++ b/tests/posixexp.right
@@ -279,5 +279,10 @@ argv[2] = <b>
OK
OK
5: $'not\ttoo\nbad'
-./posixexp.tests: line 83: unexpected EOF while looking for matching `}'
-./posixexp.tests: line 84: syntax error: unexpected end of file
+"A"
+A
+argv[1] = <"A">
+argv[1] = <A>
+argv[1] = <A>
+./posixexp.tests: line 97: unexpected EOF while looking for matching `}'
+./posixexp.tests: line 98: syntax error: unexpected end of file
diff --git a/tests/posixexp.tests b/tests/posixexp.tests
index 3368711f..d8f66441 100644
--- a/tests/posixexp.tests
+++ b/tests/posixexp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
unset a
printf "%s\n" ${a:=a\ b}
echo "$a"
@@ -77,6 +90,7 @@ ${THIS_SH} ./posixexp4.sub
${THIS_SH} ./posixexp5.sub
${THIS_SH} ./posixexp6.sub
${THIS_SH} ./posixexp7.sub
+${THIS_SH} ./posixexp8.sub
# this will be an error
foo=bar
diff --git a/tests/posixexp1.sub b/tests/posixexp1.sub
index 91718e3d..c0d6861a 100644
--- a/tests/posixexp1.sub
+++ b/tests/posixexp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# $FreeBSD: src/tools/regression/bin/sh/expansion/set-u1.0,v 1.2 2010/10/12 18:20:38 obrien Exp $
${THIS_SH} -uc 'unset foo; echo ${foo}' 2>/dev/null && exit 1
diff --git a/tests/posixexp2.sub b/tests/posixexp2.sub
index 397769da..5c46192c 100644
--- a/tests/posixexp2.sub
+++ b/tests/posixexp2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=a\ b
[ "$x" = "${x?}" ] || exit 1
diff --git a/tests/posixexp2.tests b/tests/posixexp2.tests
index 2bec58e0..5f2392b5 100644
--- a/tests/posixexp2.tests
+++ b/tests/posixexp2.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# From mksh
set -o posix ; shopt -u xpg_echo
diff --git a/tests/posixexp3.sub b/tests/posixexp3.sub
index c40afa94..343adfe3 100644
--- a/tests/posixexp3.sub
+++ b/tests/posixexp3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- 1 2
unset var
diff --git a/tests/posixexp4.sub b/tests/posixexp4.sub
index 22bfeca8..9d48b2f6 100644
--- a/tests/posixexp4.sub
+++ b/tests/posixexp4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -- ' abc' 'def ghi' 'jkl '
echo normal IFS
diff --git a/tests/posixexp5.sub b/tests/posixexp5.sub
index e477bbb1..b0e1c039 100644
--- a/tests/posixexp5.sub
+++ b/tests/posixexp5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test suite contribution from Martijn Dekker
defaultIFS=$IFS
diff --git a/tests/posixexp6.sub b/tests/posixexp6.sub
index ed38d535..b89b87f9 100644
--- a/tests/posixexp6.sub
+++ b/tests/posixexp6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
var=$'\01\02\03\177'
bar=${unset:-$var}
diff --git a/tests/posixexp8.sub b/tests/posixexp8.sub
new file mode 100644
index 00000000..383851c4
--- /dev/null
+++ b/tests/posixexp8.sub
@@ -0,0 +1,11 @@
+P=A
+
+cat << EOF
+${P+\"$P\"}
+${P+"$P"}
+EOF
+
+recho "${P+\"$P\"}"
+
+recho "${P+"$P"}"
+recho ${P+"$P"}
diff --git a/tests/posixpat.tests b/tests/posixpat.tests
index 65c557a3..5a7bafd7 100644
--- a/tests/posixpat.tests
+++ b/tests/posixpat.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# A test suite for the POSIX.2 (BRE) pattern matching code
LC_ALL=C
LANG=C
diff --git a/tests/posixpipe.tests b/tests/posixpipe.tests
index a2f047af..fa8febed 100644
--- a/tests/posixpipe.tests
+++ b/tests/posixpipe.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# Test timed and negated pipelines in bash-4.2 and later
export TIMEFORMAT=$'real %2R\nuser %2U\nsys %2S'
diff --git a/tests/precedence.tests b/tests/precedence.tests
new file mode 100755
index 00000000..111bd231
--- /dev/null
+++ b/tests/precedence.tests
@@ -0,0 +1,90 @@
+# @(#)precedence_test 1.0 91/07/24 Maarten Litmaath
+
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+# test of relative precedences for `&&' and `||' operators
+
+echo "\`Say' echos its argument. Its return value is of no interest."
+case `echo -n` in
+ '') Say () { echo -n "$*" ; } ;;
+ *) Say () { echo "$*\c" ; } ;;
+esac
+
+echo "\`Truth' echos its argument and returns a TRUE result."
+Truth () {
+ Say $1;
+ return 0;
+}
+
+echo "\`False' echos its argument and returns a FALSE result."
+False () {
+ Say $1;
+ return 1;
+}
+
+echo ""
+
+cmd1='$open $test1 && $test2 $close || $test3'
+cmd2='$test1 || $open $test2 && $test3 $close'
+
+grouping_sh=
+grouping_C='( )'
+
+test3='Say 3'
+
+for i in 1 2
+do
+ eval proto=\$cmd$i
+
+ for test1 in 'Truth 1' 'False 1'
+ do
+ for test2 in 'Truth 2' 'False 2'
+ do
+ for precedence in sh C
+ do
+ eval set x \$grouping_$precedence
+ shift
+ open=${1-' '}
+ close=${2-' '}
+ eval cmd=\""$proto"\"
+ Say "$cmd output="
+ output=`eval "$cmd"`
+ Say "$output"
+ read correct || { echo 'Input fubar. Abort.' >&2; exit 1; }
+ test "X$output" = "X$correct" || echo " correct=$correct"
+ echo ''
+ done
+
+ echo ''
+ done
+ done
+done << EOF
+12
+12
+123
+123
+13
+13
+13
+13
+13
+1
+13
+1
+123
+123
+12
+12
+EOF
diff --git a/tests/printf.right b/tests/printf.right
index 593f084b..b032dcbf 100644
--- a/tests/printf.right
+++ b/tests/printf.right
@@ -30,7 +30,7 @@ A7
--\"abcd\"--
--\'abcd\'--
--a\x--
-./printf.tests: line 82: printf: missing hex digit for \x
+./printf.tests: line 95: printf: missing hex digit for \x
--\x--
----
----
@@ -91,12 +91,12 @@ A7
26
26
26
-./printf.tests: line 206: printf: `%10': missing format character
-./printf.tests: line 207: printf: `M': invalid format character
-ab./printf.tests: line 210: printf: `y': invalid format character
-./printf.tests: line 213: printf: GNU: invalid number
+./printf.tests: line 219: printf: `%10': missing format character
+./printf.tests: line 220: printf: `M': invalid format character
+ab./printf.tests: line 223: printf: `y': invalid format character
+./printf.tests: line 226: printf: GNU: invalid number
0
-./printf.tests: line 214: printf: GNU: invalid number
+./printf.tests: line 227: printf: GNU: invalid number
0
-
(foo )(bar )
@@ -174,7 +174,7 @@ A7
--\"abcd\"--
--\'abcd\'--
--a\x--
-./printf1.sub: line 94: printf: missing hex digit for \x
+./printf1.sub: line 107: printf: missing hex digit for \x
--\x--
----
----
@@ -235,12 +235,12 @@ A7
26
26
26
-./printf1.sub: line 280: printf: `%10': missing format character
-./printf1.sub: line 281: printf: `M': invalid format character
-./printf1.sub: line 284: printf: `y': invalid format character
-./printf1.sub: line 287: printf: GNU: invalid number
+./printf1.sub: line 293: printf: `%10': missing format character
+./printf1.sub: line 294: printf: `M': invalid format character
+./printf1.sub: line 297: printf: `y': invalid format character
+./printf1.sub: line 300: printf: GNU: invalid number
0
-./printf1.sub: line 289: printf: GNU: invalid number
+./printf1.sub: line 302: printf: GNU: invalid number
0
-
(foo )(bar )
@@ -252,7 +252,7 @@ A7
^Ge
"?
16:09:15
-./printf3.sub: line 14: printf: warning: `Z': invalid time format specification
+./printf3.sub: line 27: printf: warning: `Z': invalid time format specification
%(abde)Z
30-May-2010 16:09:15
05/30/10 15:09:15
diff --git a/tests/printf.tests b/tests/printf.tests
index 9dbac6f0..df37e47e 100644
--- a/tests/printf.tests
+++ b/tests/printf.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=C
LC_NUMERIC=C
diff --git a/tests/printf1.sub b/tests/printf1.sub
index 52612d5c..e4fb54b8 100644
--- a/tests/printf1.sub
+++ b/tests/printf1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=C
LC_NUMERIC=C
diff --git a/tests/printf3.sub b/tests/printf3.sub
index d45e101c..4c54aa12 100644
--- a/tests/printf3.sub
+++ b/tests/printf3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=C
LANG=C
diff --git a/tests/printf4.sub b/tests/printf4.sub
index 2ffd9979..ed4c5383 100644
--- a/tests/printf4.sub
+++ b/tests/printf4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# Problems with padding, field widths, and `+' through bash-4.2
printf "x%10.0fx\n" 123
diff --git a/tests/procsub.right b/tests/procsub.right
index cf1dbb10..c6471c51 100644
--- a/tests/procsub.right
+++ b/tests/procsub.right
@@ -1,7 +1,6 @@
test1
foo
test2
-test3
test4
8
test5
@@ -27,3 +26,8 @@ extern
0
0
123
+bar1
+ouch
+bar2
+foo
+subshell
diff --git a/tests/procsub.tests b/tests/procsub.tests
index 01ba46a8..946d2c22 100644
--- a/tests/procsub.tests
+++ b/tests/procsub.tests
@@ -1,11 +1,25 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
# process substitution constructs that have caused problems in the past
. ./test-glue-functions
eval cat <(echo test1)
eval "echo foo;cat" <(echo test2)
-unset f
-f=<(echo test3); cat "$f"
+# this doesn't work, and it never should have
+#unset f
+#f=<(echo test3); cat "$f"
unset f
eval f=<(echo test4) "; cat \$f"
@@ -69,10 +83,10 @@ count_lines()
{
wc -l < $1
-# case "$1" in
-# *sh-np*) [ -e "$1" ] || { echo 0; echo 0; echo 0; echo 0; return; } ;;
-# *) ;;
-# esac
+ case "$1" in
+ *sh-np*) [ -e "$1" ] || { echo 0; echo 0; echo 0; echo 0; return; } ;;
+ *) ;;
+ esac
wc -l < $1
wc -l < $1
@@ -88,6 +102,7 @@ echo extern
FN=$TMPDIR/bashtest-$$
cat >$FN << \EOF
wc -l < $1
+case $1 in *sh-np*) [ -e $1 ] || { echo 0; echo 0; echo 0; echo 0; return; } ;; esac
wc -l < $1
wc -l < $1
true | wc -l < $1
@@ -103,3 +118,4 @@ moo() { ls -al "$1" >/dev/null; (true); ls -al "$1" >/dev/null; }; moo >(true)
unset -f moo
${THIS_SH} ./procsub1.sub
+${THIS_SH} ./procsub2.sub
diff --git a/tests/procsub2.sub b/tests/procsub2.sub
new file mode 100644
index 00000000..75ad2d0c
--- /dev/null
+++ b/tests/procsub2.sub
@@ -0,0 +1,36 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# test whether or not we remove FIFOs and close pipe file descriptors too
+# aggressively
+
+ouch()
+{
+ while read foo; do echo "$foo"; done < <(echo bar1)
+ cat "$1"
+}
+
+ouch <(echo ouch )
+
+ouch2()
+{
+ { cat; } < <(echo bar2)
+ cat "$1"
+}
+
+exec 4< <(echo subshell)
+ouch2 <(echo foo )
+
+read var <&4
+echo $var
diff --git a/tests/quote.right b/tests/quote.right
index e4eb9bb9..303e685d 100644
--- a/tests/quote.right
+++ b/tests/quote.right
@@ -94,23 +94,29 @@ argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
+argv[2] = <>
argv[1] = <>
+argv[2] = <>
argv[1] = <>
=====
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
+argv[2] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
+argv[2] = <>
=====
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
+argv[2] = <>
argv[1] = <>
+argv[2] = <>
argv[1] = <>
=====
argv[1] = <>
@@ -118,5 +124,59 @@ argv[1] = <>
argv[1] = <>
argv[1] = <>
argv[1] = <>
-argv[1] = <>
-argv[1] = <>
+argv[2] = <>
+argv[1] = <>
+argv[2] = <>
+argv[1] = <>
+argv[1] = <4>
+argv[2] = <>
+argv[1] = <ab>
+argv[2] = <>
+argv[1] = <ab>
+argv[2] = <>
+argv[1] = <ab>
+argv[2] = <>
+argv[1] = <ab>
+argv[2] = <>
+argv[1] = <ab ''>
+argv[1] = <ab >
+argv[1] = <ab ''>
+argv[1] = <ab >
+0
+1
+1
+1
+1
+1
+1
+1
+2
+2
+2
+2
+0
+1
+1
+1
+1
+1
+1
+1
+2
+2
+2
+2
+0
+0
+0
+2
+2
+4
+4
+3
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
+argv[1] = <^?>
diff --git a/tests/quote.tests b/tests/quote.tests
index d7f13cd0..0a0b4afe 100644
--- a/tests/quote.tests
+++ b/tests/quote.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo "Single Quote"
echo 'foo
bar'
@@ -122,3 +135,5 @@ echo ${foo:-string \\\}}
${THIS_SH} ./quote1.sub
${THIS_SH} ./quote2.sub
+${THIS_SH} ./quote3.sub
+${THIS_SH} ./quote4.sub
diff --git a/tests/quote1.sub b/tests/quote1.sub
index a9a1ef15..86f97869 100644
--- a/tests/quote1.sub
+++ b/tests/quote1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# inconsistency with quoted pattern substitution patterns through bash-4.2
# fixed in a ksh93-compatible (and Posix-compatible, in general) way
# NOT backwards compatible
diff --git a/tests/quote2.sub b/tests/quote2.sub
index 7deb4cfa..1012b8fe 100644
--- a/tests/quote2.sub
+++ b/tests/quote2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
x=x
e=
diff --git a/tests/quote3.sub b/tests/quote3.sub
new file mode 100644
index 00000000..54bc5ed4
--- /dev/null
+++ b/tests/quote3.sub
@@ -0,0 +1,31 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# new tests
+x=4
+sp=' '
+
+# word
+recho ${x}${sp}''
+
+# unquoted
+recho ${x+ab "$y"}
+recho ${x+ab ''}
+recho ${x+ab "$( : )"}
+recho ${x+ab "${yy}"}
+
+# quoted
+recho "${x+ab ''}"
+recho "${x+ab ""}"
+recho "${x+ab '${yy}'}"
+recho "${x+ab "${yy}"}"
diff --git a/tests/quote4.sub b/tests/quote4.sub
new file mode 100644
index 00000000..ab534c8e
--- /dev/null
+++ b/tests/quote4.sub
@@ -0,0 +1,101 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+n() { echo $#; }
+
+set --
+
+n "$@"
+
+# should be 1
+n "$@"''
+n ''"$@"
+n ''"$@"''
+
+set -- ''
+
+n "$@"
+# should be 1
+n "$@"''
+n ''"$@"
+n ''"$@"''
+
+set -- '' ''
+
+n "$@"
+# should be 2
+n ''"$@"
+# should be 2
+n "$@"''
+# should be 2
+n ''"$@"''
+
+x=x
+
+set --
+
+n ${x+"$@"}
+
+# should be 1
+n ${x+"$@"''}
+n ${x+''"$@"}
+n ${x+''"$@"''}
+
+set -- ''
+
+n ${x+"$@"}
+# should be 1
+n ${x+"$@"''}
+n ${x+''"$@"}
+n ${x+''"$@"''}
+
+set -- '' ''
+
+n ${x+"$@"}
+# should be 2
+n ${x+''"$@"}
+# should be 2
+n ${x+"$@"''}
+# should be 2
+n ${x+''"$@"''}
+
+
+set --
+
+n "$@" "$@"
+n "$@""$@"
+
+n ${x+"$@" "$@"}
+
+set -- ''
+
+n ${x+"$@" "$@"}
+n "$@" "$@"
+
+set -- '' ''
+
+n ${x+"$@" "$@"}
+n "$@" "$@"
+n "$@""$@"
+
+# new tests
+unset -v x
+v=$'\177'
+
+recho ''$'\177'''
+recho $'\177'''
+recho ''$'\177'
+
+recho ''$v''
+recho ''$v
+recho $v''
diff --git a/tests/read.right b/tests/read.right
index 73cb7042..11440837 100644
--- a/tests/read.right
+++ b/tests/read.right
@@ -37,11 +37,11 @@ timeout 1: ok
timeout 2: ok
-./read2.sub: line 23: read: -3: invalid timeout specification
+./read2.sub: line 36: read: -3: invalid timeout specification
1
abcde
-./read3.sub: line 4: read: -1: invalid number
+./read3.sub: line 17: read: -1: invalid number
abc
ab
abc
diff --git a/tests/read.tests b/tests/read.tests
index f67cd00e..7384f05f 100644
--- a/tests/read.tests
+++ b/tests/read.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
echo " a " | (read x; echo "$x.")
echo " a b " | ( read x y ; echo -"$x"-"$y"- )
diff --git a/tests/read1.sub b/tests/read1.sub
index 2a36449b..b3b85157 100644
--- a/tests/read1.sub
+++ b/tests/read1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=7
echo 'abcdefg|xyz' | {
read -d '|' a
diff --git a/tests/read2.sub b/tests/read2.sub
index c4a1f771..41698e46 100644
--- a/tests/read2.sub
+++ b/tests/read2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
a=4
read -t 2 a < /dev/tty
diff --git a/tests/read3.sub b/tests/read3.sub
index af41e3f2..d413f7db 100644
--- a/tests/read3.sub
+++ b/tests/read3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# non-interactive
# error
diff --git a/tests/read5.sub b/tests/read5.sub
index e35674e0..e42a5be2 100644
--- a/tests/read5.sub
+++ b/tests/read5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
IFS=: read x y z << EOF
:::
EOF
diff --git a/tests/redir.right b/tests/redir.right
index d4ab60d5..8db10414 100644
--- a/tests/redir.right
+++ b/tests/redir.right
@@ -1,9 +1,9 @@
abc
-./redir.tests: line 15: /tmp/redir-test: cannot overwrite existing file
+./redir.tests: line 28: /tmp/redir-test: cannot overwrite existing file
abc
def
def
-./redir.tests: line 31: $z: ambiguous redirect
+./redir.tests: line 44: $z: ambiguous redirect
Point 1
Point 2
to a
@@ -24,8 +24,8 @@ read line3 "cd"
read line4 "daemon"
from stdin: aa
to stdout
-./redir4.sub: line 32: $fd: ambiguous redirect
-./redir4.sub: line 33: $fd: ambiguous redirect
+./redir4.sub: line 45: $fd: ambiguous redirect
+./redir4.sub: line 46: $fd: ambiguous redirect
err-and-out:
to stdout
to stderr
@@ -44,7 +44,20 @@ kl
ab
cd
cd
-./redir.tests: line 157: redir1.*: No such file or directory
+./redir.tests: line 170: redir1.*: No such file or directory
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests of ksh93-like dup-and-close redirection operators
exec 9<$0
@@ -85,7 +98,7 @@ f ()
done
}
after read
-# tests of ksh93-like dup-and-close redirection operators
+# This program is free software: you can redistribute it and/or modify
/
/
/
@@ -141,8 +154,10 @@ foo
1
7
after: 42
-./redir11.sub: line 40: $(ss= declare -i ss): ambiguous redirect
+./redir11.sub: line 53: $(ss= declare -i ss): ambiguous redirect
after: 42
a+=3
foo
foo
+./redir11.sub: line 75: 42: No such file or directory
+42
diff --git a/tests/redir.tests b/tests/redir.tests
index 6af02194..63bd4d37 100644
--- a/tests/redir.tests
+++ b/tests/redir.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
export LC_ALL=C
diff --git a/tests/redir10.sub b/tests/redir10.sub
index 27c48e82..7b1d682f 100644
--- a/tests/redir10.sub
+++ b/tests/redir10.sub
@@ -1,4 +1,16 @@
-#!/bin/bash
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# Out of file descriptors, because it forgets to close redirection. Only
# happens in a shell function. Problem through bash-4.2.
diff --git a/tests/redir11.sub b/tests/redir11.sub
index a919602c..d417cdb6 100644
--- a/tests/redir11.sub
+++ b/tests/redir11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure redirections do not have access to the temporary environment, even
# in subshells and command substitutions
@@ -52,3 +65,12 @@ a=2
a=9 eval echo foo >&$(echo $a)
a=2
a=9 eval echo foo '2>&1 >&$(echo $a)' | { grep -q 'Bad file' || echo 'redir11 bad 9'; }
+
+# double expansion of filenames when used in redirection error messages
+# present in bash versions back to at least bash-1.13
+# this is executed in the tests subdirectory of the source directory, so there
+# definitely should not be a file named `42'
+
+unset foo
+: <$((foo+=42))
+echo $foo
diff --git a/tests/redir3.sub b/tests/redir3.sub
index c486253e..b9fd0fd9 100644
--- a/tests/redir3.sub
+++ b/tests/redir3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
read line1
echo read line1 \"$line1\"
diff --git a/tests/redir4.sub b/tests/redir4.sub
index 14406d01..a4829856 100644
--- a/tests/redir4.sub
+++ b/tests/redir4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
minus=-
# standard input
diff --git a/tests/redir5.sub b/tests/redir5.sub
index ee7b045a..fa0f0c07 100644
--- a/tests/redir5.sub
+++ b/tests/redir5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests of ksh93-like dup-and-close redirection operators
exec 9<$0
diff --git a/tests/redir7.sub b/tests/redir7.sub
index 3fd371c7..65ca473b 100644
--- a/tests/redir7.sub
+++ b/tests/redir7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# weird redirections that caused trouble and were fixed in post-3.0 bash
stuff()
{
diff --git a/tests/redir8.sub b/tests/redir8.sub
index 88753f2f..d2d700cb 100644
--- a/tests/redir8.sub
+++ b/tests/redir8.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
cd ${TMPDIR:=/var/tmp}
rm -f u
diff --git a/tests/redir9.sub b/tests/redir9.sub
index 386ae56a..9050a94f 100644
--- a/tests/redir9.sub
+++ b/tests/redir9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
func()
diff --git a/tests/rhs-exp.tests b/tests/rhs-exp.tests
index a28d7f03..6abdd2a7 100644
--- a/tests/rhs-exp.tests
+++ b/tests/rhs-exp.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
selvecs='&m68kcoff_vec'
recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS='$selvecs'}"
recho "TDEFAULTS = ${selvecs:+-DSELECT_VECS=\'$selvecs\'}"
diff --git a/tests/rhs-exp1.sub b/tests/rhs-exp1.sub
index 5631ea50..b194bf00 100644
--- a/tests/rhs-exp1.sub
+++ b/tests/rhs-exp1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# fixes for bugs in bash-4.2 regarding empty strings in expand_string_for_rhs
f=abc
diff --git a/tests/rsh.right b/tests/rsh.right
index a728f137..a91974a5 100644
--- a/tests/rsh.right
+++ b/tests/rsh.right
@@ -1,19 +1,19 @@
-./rsh1.sub: line 9: /bin/sh: restricted
-./rsh1.sub: line 11: sh: not found
-./rsh1.sub: line 12: a: command not found
-./rsh2.sub: line 10: hash: /bin/sh: restricted
-./rsh2.sub: line 12: hash: sh: not found
-./rsh2.sub: line 13: a: command not found
-./rsh.tests: line 12: cd: restricted
-./rsh.tests: line 13: PATH: readonly variable
-./rsh.tests: line 14: SHELL: readonly variable
-./rsh.tests: line 15: /bin/sh: restricted: cannot specify `/' in command names
-./rsh.tests: line 17: .: ./source.sub3: restricted
-./rsh.tests: line 20: /tmp/restricted: restricted: cannot redirect output
-./rsh.tests: line 24: /tmp/restricted: restricted: cannot redirect output
-./rsh.tests: line 29: command: -p: restricted
-./rsh.tests: line 31: set: +r: invalid option
+./rsh1.sub: line 22: /bin/sh: restricted
+./rsh1.sub: line 24: sh: not found
+./rsh1.sub: line 25: a: command not found
+./rsh2.sub: line 23: hash: /bin/sh: restricted
+./rsh2.sub: line 25: hash: sh: not found
+./rsh2.sub: line 26: a: command not found
+./rsh.tests: line 25: cd: restricted
+./rsh.tests: line 26: PATH: readonly variable
+./rsh.tests: line 27: SHELL: readonly variable
+./rsh.tests: line 28: /bin/sh: restricted: cannot specify `/' in command names
+./rsh.tests: line 30: .: ./source.sub3: restricted
+./rsh.tests: line 33: /tmp/restricted: restricted: cannot redirect output
+./rsh.tests: line 37: /tmp/restricted: restricted: cannot redirect output
+./rsh.tests: line 42: command: -p: restricted
+./rsh.tests: line 44: set: +r: invalid option
set: usage: set [-abefhkmnptuvxBCHP] [-o option-name] [--] [arg ...]
-./rsh.tests: line 32: set: restricted: invalid option name
-./rsh.tests: line 34: exec: restricted
+./rsh.tests: line 45: set: restricted: invalid option name
+./rsh.tests: line 47: exec: restricted
./rsh.tests: after exec
diff --git a/tests/rsh.tests b/tests/rsh.tests
index d1d77784..0d06fa1e 100644
--- a/tests/rsh.tests
+++ b/tests/rsh.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test restricted shell mode -- these should all be errors
#
# things not tested for:
diff --git a/tests/rsh1.sub b/tests/rsh1.sub
index fdd4ddd9..1539d740 100644
--- a/tests/rsh1.sub
+++ b/tests/rsh1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
cd ${TMPDIR:-/tmp}
cp /bin/sh .
diff --git a/tests/rsh2.sub b/tests/rsh2.sub
index 8c82c68b..7259dfbc 100644
--- a/tests/rsh2.sub
+++ b/tests/rsh2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
cd ${TMPDIR:-/tmp}
cp /bin/sh .
ln sh a
diff --git a/tests/run-all b/tests/run-all
index 34d3e4c8..b8219b2d 100644
--- a/tests/run-all
+++ b/tests/run-all
@@ -1,4 +1,18 @@
#! /bin/sh
+#
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/tmp}
export TMPDIR
@@ -14,6 +28,7 @@ trap 'rm -f $BASH_TSTOUT' 0 1 2 3 15
PATH=.:$PATH # just to get recho/zecho/printenv if not run via `make tests'
export PATH
+
# unset BASH_ENV only if it is set
[ "${BASH_ENV+set}" = "set" ] && unset BASH_ENV
# can't reliably do it for SHELLOPTS; SHELLOPTS is readonly in bash
@@ -28,6 +43,9 @@ fi
: ${THIS_SH:=../bash}
export THIS_SH
+: ${BUILD_DIR:=..}
+export BUILD_DIR
+
${THIS_SH} ./version
rm -f ${BASH_TSTOUT}
diff --git a/tests/run-complete b/tests/run-complete
new file mode 100644
index 00000000..f1cef84e
--- /dev/null
+++ b/tests/run-complete
@@ -0,0 +1,2 @@
+${THIS_SH} ./complete.tests > ${BASH_TSTOUT} 2>&1
+diff ${BASH_TSTOUT} complete.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/run-dbg-support b/tests/run-dbg-support
index 9e9c649c..af64517d 100644
--- a/tests/run-dbg-support
+++ b/tests/run-dbg-support
@@ -1,5 +1,3 @@
-#!../bash
-#$Id: run-dbg-support,v 1.5 2002/11/14 06:08:16 rockyb Exp $
TEST_NAME='dbg-support'
TEST_FILE="/tmp/${TEST_NAME}.check"
diff --git a/tests/run-dbg-support2 b/tests/run-dbg-support2
index f62583f8..375c32f9 100644
--- a/tests/run-dbg-support2
+++ b/tests/run-dbg-support2
@@ -1,5 +1,3 @@
-#!../bash
-#$Id: run-dbg-support2,v 1.3 2002/11/14 06:08:16 rockyb Exp $
TEST_NAME='dbg-support2'
TEST_FILE="/tmp/${TEST_NAME}.check"
@@ -9,8 +7,3 @@ diff $TEST_FILE ${TEST_NAME}.right && rm -f $TEST_FILE
# Return code tells testing mechanism whether passed or not.
exit $?
-
-#;;; Local Variables: ***
-#;;; mode:shell-script ***
-#;;; eval: (sh-set-shell "bash") ***
-#;;; End: ***
diff --git a/tests/run-minimal b/tests/run-minimal
index bbb9da18..ade30b15 100644
--- a/tests/run-minimal
+++ b/tests/run-minimal
@@ -1,5 +1,19 @@
#! /bin/sh
#
+# 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 <http://www.gnu.org/licenses/>.
+#
+#
# run-minimal - a version of run-all for shells configured with
# --enable-minimal-config
#
@@ -26,6 +40,9 @@ export PATH
: ${THIS_SH:=../bash}
export THIS_SH
+: ${BUILD_DIR:=..}
+export BUILD_DIR
+
${THIS_SH} ./version.mini
rm -f "$BASH_TSTOUT"
diff --git a/tests/run-precedence b/tests/run-precedence
index de33224e..06ac343f 100644
--- a/tests/run-precedence
+++ b/tests/run-precedence
@@ -1,2 +1,2 @@
-${THIS_SH} ./precedence > ${BASH_TSTOUT}
+${THIS_SH} ./precedence.tests > ${BASH_TSTOUT}
diff ${BASH_TSTOUT} prec.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/run-varenv b/tests/run-varenv
index f147d70b..be394cc7 100644
--- a/tests/run-varenv
+++ b/tests/run-varenv
@@ -1,2 +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} ./varenv.tests 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 2a4faf30..2bdc1b83 100644
--- a/tests/run-vredir
+++ b/tests/run-vredir
@@ -1,2 +1,4 @@
+echo "warning: the text of a system error message may vary between systems and" >&2
+echo "warning: produce diff output." >&2
${THIS_SH} ./vredir.tests > ${BASH_TSTOUT} 2>&1
diff ${BASH_TSTOUT} vredir.right && rm -f ${BASH_TSTOUT}
diff --git a/tests/set-e.tests b/tests/set-e.tests
index d38edf6c..3e0d6698 100644
--- a/tests/set-e.tests
+++ b/tests/set-e.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
if : ; then
set -e
N=95
diff --git a/tests/set-e1.sub b/tests/set-e1.sub
index a8005607..cdd4d635 100644
--- a/tests/set-e1.sub
+++ b/tests/set-e1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# subshell failure should cause the shell to exit silently
${THIS_SH} -ce '(exit 17) ; echo "after (exit 17): $?"'
diff --git a/tests/set-x.tests b/tests/set-x.tests
index 531c53f6..3723552d 100755..100644
--- a/tests/set-x.tests
+++ b/tests/set-x.tests
@@ -1,4 +1,17 @@
-#!../bash
+# 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 <http://www.gnu.org/licenses/>.
+#
+
# $Id: set-x.tests,v 1.1 2002/12/09 13:12:37 rockyb Exp $
#
# Test that "set -x" shows what we think it should.
diff --git a/tests/set-x1.sub b/tests/set-x1.sub
index b2aa2167..cb7fa827 100644
--- a/tests/set-x1.sub
+++ b/tests/set-x1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
TRACEFILE=$TMPDIR/bash-trace-$$
trap 'rm -f $TRACEFILE' 0 1 2 3 6 15
diff --git a/tests/shopt.right b/tests/shopt.right
index 08db75f1..8cf46db6 100644
--- a/tests/shopt.right
+++ b/tests/shopt.right
@@ -1,4 +1,4 @@
-./shopt.tests: line 2: shopt: -z: invalid option
+./shopt.tests: line 15: shopt: -z: invalid option
shopt: usage: shopt [-pqsu] [-o] [optname ...]
--
shopt -u autocd
@@ -292,5 +292,7 @@ verbose off
vi off
xtrace off
--
-./shopt.tests: line 93: shopt: xyz1: invalid shell option name
-./shopt.tests: line 94: shopt: xyz1: invalid option name
+./shopt.tests: line 106: shopt: xyz1: invalid shell option name
+./shopt.tests: line 107: shopt: xyz1: invalid option name
+expand_aliases on
+expand_aliases on
diff --git a/tests/shopt.tests b/tests/shopt.tests
index d4f2a8b1..c31870cf 100644
--- a/tests/shopt.tests
+++ b/tests/shopt.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# let's try an error message first
shopt -z
@@ -92,3 +105,9 @@ shopt -u -o
builtin printf -- "--\n"
shopt -p xyz1
shopt -o -p xyz1
+
+${THIS_SH} ./shopt1.sub
+
+# test whether or not temporary variable assignments that manipulate posix
+# mode restore the previous state or the default non-posix state
+${THIS_SH} -c 'shopt -s expand_aliases ; shopt expand_aliases ; POSIXLY_CORRECT=y true ; shopt expand_aliases'
diff --git a/tests/shopt1.sub b/tests/shopt1.sub
new file mode 100644
index 00000000..8c1150fb
--- /dev/null
+++ b/tests/shopt1.sub
@@ -0,0 +1,52 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+# verify all shopt options are reset properly when the shell is reinitialized
+
+: ${TMPDIR:=/var/tmp} ${THIS_SH:=$PWD/bash}
+
+t1=$(mktemp)
+t2=$(mktemp)
+
+if [ ! -e "$t1" ] ; then
+ S1=$RANDOM
+ S2=$RANDOM
+ t1=$TMPDIR/s-$S1
+ t2=$TMPDIR/s-$S2
+ touch "$t1" "$t2"
+fi
+
+chmod +x "$t1" "$t2"
+
+echo "shopt" > "$t1"
+
+echo "#!${THIS_SH}" > "$t2"
+echo "shopt" >> "$t2"
+
+for o in $(compgen -A shopt)
+do
+ case $o in
+ extdebug) ;;
+ *) shopt -s $o ;;
+ esac
+done
+diff <("$t1") <("$t2")
+
+for o in $(compgen -A shopt)
+do
+ shopt -u $o;
+done
+diff <("$t1") <("$t2")
+
+rm "$t1" "$t2"
diff --git a/tests/source5.sub b/tests/source5.sub
index e6188094..4149c11f 100644
--- a/tests/source5.sub
+++ b/tests/source5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
LC_ALL=en_US.UTF-8
unset LC_ALL
unset LANG
@@ -6,7 +19,7 @@ export LANG=C
set +o posix
-# attempting to source a non-existant file is not an error...
+# attempting to source a non-existent file is not an error...
. /tmp/source-notthere
echo after bad source 1
diff --git a/tests/source6.sub b/tests/source6.sub
index 43db2031..24372927 100644
--- a/tests/source6.sub
+++ b/tests/source6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# tests sourcing non-regular files, fixed post-3.2
: ${TMPDIR:=/tmp}
diff --git a/tests/source7.sub b/tests/source7.sub
index 8ca0aeff..474a66f7 100644
--- a/tests/source7.sub
+++ b/tests/source7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
shopt -s expand_aliases
: ${TMPDIR:=/var/tmp}
diff --git a/tests/strip.tests b/tests/strip.tests
index b669b52e..b16705f4 100644
--- a/tests/strip.tests
+++ b/tests/strip.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
v=`echo "" ; echo "" ; echo ""`
echo "'$v'"
v=`echo -n " ab "`
diff --git a/tests/test.right b/tests/test.right
index 9832bd6d..391edbbd 100644
--- a/tests/test.right
+++ b/tests/test.right
@@ -233,48 +233,48 @@ t -G /tmp/test.group
t -h /tmp/test.symlink
0
t 4+3 -eq 7
-./test.tests: line 13: test: 4+3: integer expression expected
+./test.tests: line 26: test: 4+3: integer expression expected
2
b 4-5 -eq 7
-./test.tests: line 7: [: 4+3: integer expression expected
+./test.tests: line 20: [: 4+3: integer expression expected
2
t 9 -eq 4+5
-./test.tests: line 13: test: 4+5: integer expression expected
+./test.tests: line 26: test: 4+5: integer expression expected
2
b 9 -eq 4+5
-./test.tests: line 7: [: 4+5: integer expression expected
+./test.tests: line 20: [: 4+5: integer expression expected
2
t A -eq 7
-./test.tests: line 13: test: A: integer expression expected
+./test.tests: line 26: test: A: integer expression expected
2
b A -eq 7
-./test.tests: line 7: [: A: integer expression expected
+./test.tests: line 20: [: A: integer expression expected
2
t 9 -eq B
-./test.tests: line 13: test: B: integer expression expected
+./test.tests: line 26: test: B: integer expression expected
2
b 9 -eq B
-./test.tests: line 7: [: B: integer expression expected
+./test.tests: line 20: [: B: integer expression expected
2
t ( 1 = 2
-./test.tests: line 13: test: `)' expected
+./test.tests: line 26: test: `)' expected
2
b ( 1 = 2
-./test.tests: line 7: [: `)' expected, found ]
+./test.tests: line 20: [: `)' expected, found ]
2
-./test.tests: line 13: test: a: unary operator expected
+./test.tests: line 26: test: a: unary operator expected
2
-./test.tests: line 13: test: b: binary operator expected
+./test.tests: line 26: test: b: binary operator expected
2
-./test.tests: line 13: test: -A: unary operator expected
+./test.tests: line 26: test: -A: unary operator expected
2
-./test.tests: line 13: test: too many arguments
+./test.tests: line 26: test: syntax error: `-ne' unexpected
2
-./test.tests: line 13: test: too many arguments
+./test.tests: line 26: test: too many arguments
2
-./test.tests: line 418: [: missing `]'
+./test.tests: line 431: [: missing `]'
2
-./test.tests: line 13: test: (: unary operator expected
+./test.tests: line 26: test: (: unary operator expected
2
t -t a
1
diff --git a/tests/test.tests b/tests/test.tests
index 07a87a0b..03e2754a 100644
--- a/tests/test.tests
+++ b/tests/test.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
if (( $UID == 0 )); then
echo "test-tests: the test suite should not be run as root" >&2
fi
@@ -166,7 +179,7 @@ echo 't -S /tmp/test.socket'
t -S /tmp/test.socket # false
rm -f /tmp/test.socket
-touch /tmp/test.newer
+touch /tmp/test.newer ; sleep 1; echo "hello" > /tmp/test.newer
echo 't -N /tmp/test.newer'
t -N /tmp/test.newer
rm -f /tmp/test.newer
diff --git a/tests/test1.sub b/tests/test1.sub
index a1c58170..d25e0dc7 100644
--- a/tests/test1.sub
+++ b/tests/test1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# some systems, like old SunOS, have stat on /dev/fd/N and fstat(N, ...)
# return different results
: ${TMPDIR:=/tmp}
diff --git a/tests/tilde.right b/tests/tilde.right
index 49549b40..1301c0b0 100644
--- a/tests/tilde.right
+++ b/tests/tilde.right
@@ -24,3 +24,5 @@ ok 1
ok 2
ok 3
~root
+foo=bar:/usr/xyz
+foo=bar:~
diff --git a/tests/tilde.tests b/tests/tilde.tests
index 8a9f1369..374f3e6d 100644
--- a/tests/tilde.tests
+++ b/tests/tilde.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
wdir=$PWD
# this is needed because posix mode restricts tilde expansion to assignment
# statements preceding a command, instead of the default of expanding all
@@ -72,4 +85,8 @@ USER=root # should exist just about everywhere
echo ~$USER
cd "$wdir"
+
+echo foo=bar:~
+set -o posix; echo foo=bar:~
+
exit 0
diff --git a/tests/tilde2.tests b/tests/tilde2.tests
index ff6c76f0..cc5dba9f 100644
--- a/tests/tilde2.tests
+++ b/tests/tilde2.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
HOME=/usr/xyz
XPATH=/bin:/usr/bin:.
diff --git a/tests/trap.right b/tests/trap.right
index 41658293..4338ff4c 100644
--- a/tests/trap.right
+++ b/tests/trap.right
@@ -5,9 +5,9 @@ trap -- 'echo aborting' SIGINT
trap -- 'echo aborting' SIGQUIT
trap -- 'echo aborting' SIGABRT
trap -- 'echo aborting' SIGTERM
-[20] debug
+[33] debug
debug line
-[22] debug
+[35] debug
trap -- 'echo exiting' EXIT
trap -- 'echo aborting' SIGHUP
trap -- 'echo aborting' SIGINT
@@ -15,10 +15,10 @@ trap -- 'echo aborting' SIGQUIT
trap -- 'echo aborting' SIGABRT
trap -- 'echo aborting' SIGTERM
trap -- 'echo [$LINENO] debug' DEBUG
-[24] debug
-func[16] funcdebug
+[37] debug
+func[29] funcdebug
funcdebug line
-./trap.tests[26] funcdebug
+./trap.tests[39] funcdebug
trap -- 'echo exiting' EXIT
trap -- 'echo aborting' SIGHUP
trap -- 'echo aborting' SIGINT
@@ -26,14 +26,14 @@ trap -- 'echo aborting' SIGQUIT
trap -- 'echo aborting' SIGABRT
trap -- 'echo aborting' SIGTERM
trap -- 'echo ${FUNCNAME:-$0}[$LINENO] funcdebug' DEBUG
-./trap.tests[28] funcdebug
-./trap.tests[33] debug
-./trap.tests[34] debug
-func2[30] debug
-func2[31] debug
+./trap.tests[41] funcdebug
+./trap.tests[46] debug
+./trap.tests[47] debug
+func2[43] debug
+func2[44] debug
func2debug line
-./trap.tests[36] debug
-./trap.tests[38] debug
+./trap.tests[49] debug
+./trap.tests[51] debug
trap -- 'echo exiting' EXIT
trap -- 'echo aborting' SIGHUP
trap -- 'echo aborting' SIGINT
@@ -76,8 +76,8 @@ ERRTRAP
1
+[7] echo 2
2
-+[8] echo 3
-+[8] cat
++[8] false
++[8] false
+[8] false
++[8] echo trap: 8
trap: 8
diff --git a/tests/trap.tests b/tests/trap.tests
index 637bfd28..4f808be3 100644
--- a/tests/trap.tests
+++ b/tests/trap.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test the trap code
trap 'echo exiting' 0
diff --git a/tests/trap2.sub b/tests/trap2.sub
index 0f1f2d96..bd9a76be 100755
--- a/tests/trap2.sub
+++ b/tests/trap2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set +e
trap 'echo ERRTRAP' ERR
diff --git a/tests/trap3.sub b/tests/trap3.sub
index 0df44550..1490a76b 100644
--- a/tests/trap3.sub
+++ b/tests/trap3.sub
@@ -5,5 +5,5 @@ set -x
echo 1
echo 2
-echo 3 | cat | false
+false | false | false
echo 4
diff --git a/tests/trap4.sub b/tests/trap4.sub
index ab5ca3e3..c84b54e1 100644
--- a/tests/trap4.sub
+++ b/tests/trap4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure subshells at the end of pipelines run any exit traps they set
: | { trap 'echo exit subshell 1' EXIT; exit; }; echo current shell
diff --git a/tests/trap5.sub b/tests/trap5.sub
index 7f3380b4..826b794c 100644
--- a/tests/trap5.sub
+++ b/tests/trap5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# make sure process substitution runs the exit trap
[[ -n $(< <(trap "cat /dev/fd/0" EXIT)) ]] <<<works && echo works || echo "fail :("
diff --git a/tests/trap6.sub b/tests/trap6.sub
index 332a1773..72685580 100644
--- a/tests/trap6.sub
+++ b/tests/trap6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -o functrace
fn() { return; }
diff --git a/tests/type.right b/tests/type.right
index 7ec6bfba..f876715a 100644
--- a/tests/type.right
+++ b/tests/type.right
@@ -1,6 +1,6 @@
-./type.tests: line 9: type: -r: invalid option
+./type.tests: line 22: type: -r: invalid option
type: usage: type [-afptP] name [name ...]
-./type.tests: line 12: type: notthere: not found
+./type.tests: line 25: type: notthere: not found
function
keyword
builtin
@@ -24,7 +24,7 @@ func ()
}
while
while is a shell keyword
-./type.tests: line 43: type: m: not found
+./type.tests: line 56: type: m: not found
alias m='more'
alias m='more'
m is aliased to `more'
@@ -37,15 +37,15 @@ builtin
builtin is a shell builtin
/bin/sh
/bin/sh is /bin/sh
-./type.tests: line 65: type: func: not found
-./type.tests: line 67: type: m: not found
+./type.tests: line 78: type: func: not found
+./type.tests: line 80: type: m: not found
/bin/sh
/tmp/bash
bash is hashed (/tmp/bash)
file
hits command
- 3 /tmp/bash
1 /bin/sh
+ 3 /tmp/bash
f is a function
f ()
{
diff --git a/tests/type.tests b/tests/type.tests
index 1c03e018..fd39c18a 100644
--- a/tests/type.tests
+++ b/tests/type.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set +o posix
hash -r
diff --git a/tests/type2.sub b/tests/type2.sub
index 3f85ead7..34977c51 100644
--- a/tests/type2.sub
+++ b/tests/type2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
foo()
{
echo
diff --git a/tests/type3.sub b/tests/type3.sub
index 442f22e4..1a95de38 100644
--- a/tests/type3.sub
+++ b/tests/type3.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
cd ${TMPDIR:-/tmp}
foo() {
diff --git a/tests/type4.sub b/tests/type4.sub
index ed5bcf6a..937f9980 100644
--- a/tests/type4.sub
+++ b/tests/type4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
bb()
{
(
diff --git a/tests/unicode1.sub b/tests/unicode1.sub
index baa92eaa..fc742855 100644
--- a/tests/unicode1.sub
+++ b/tests/unicode1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
unset LC_ALL
ErrorCnt=0
diff --git a/tests/unicode2.sub b/tests/unicode2.sub
index 83ff2747..16dd604a 100644
--- a/tests/unicode2.sub
+++ b/tests/unicode2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
. ./test-glue-functions
export LANG=en_US.UTF-8
diff --git a/tests/varenv.right b/tests/varenv.right
index ca7d4cf1..358f5dc7 100644
--- a/tests/varenv.right
+++ b/tests/varenv.right
@@ -22,8 +22,8 @@ AVAR
AVAR
42
/bin:/usr/bin:/usr/local/bin:.
-avar=([0]="/bin:/usr/bin:/usr/local/bin:.")
-z=yy
+declare -a avar=([0]="/bin:/usr/bin:/usr/local/bin:.")
+declare -- z="yy"
42
declare -i ivar="10"
unset
@@ -60,7 +60,8 @@ FIN: asdf fdsa, asdf fdsa
g: v = , w =
f: v = , w =
FIN: v = two, w = one
-./varenv4.sub: line 54: bbb: unique: cannot convert indexed to associative array
+./varenv4.sub: line 67: bbb: unique: cannot convert indexed to associative array
+./varenv4.sub: line 67: declare: unique: cannot convert indexed to associative array
after bbb: 1
declare -Ar FOOBAR=([foo]="bar" )
declare -Ar FOOBAR=([foo]="bar" )
@@ -77,7 +78,7 @@ declare -ar myvar=([0]="0")
declare -ir myvar="1"
declare -rx tempvar1='foo'
declare -rx tempvar2='qux'
-./varenv7.sub: line 44: local: var: readonly variable
+./varenv7.sub: line 57: local: var: readonly variable
inside: outside
outside: outside
local: unset1 unset2
@@ -95,30 +96,30 @@ in o1 (readonly modifying local scalars):
declare -r i1="a b c"
declare -r j1="1 2 3"
after o1:
-./varenv9.sub: line 15: declare: i1: not found
-./varenv9.sub: line 15: declare: j1: not found
+./varenv9.sub: line 28: declare: i1: not found
+./varenv9.sub: line 28: declare: j1: not found
in o2 (readonly setting global scalars):
declare -r i2="a b c"
declare -r j2="1 2 3"
after o2:
declare -r i2="a b c"
declare -r j2="1 2 3"
-./varenv9.sub: line 33: unset: i2: cannot unset: readonly variable
-./varenv9.sub: line 33: unset: j2: cannot unset: readonly variable
+./varenv9.sub: line 46: unset: i2: cannot unset: readonly variable
+./varenv9.sub: line 46: unset: j2: cannot unset: readonly variable
in o3 (readonly modifying locals, converting to arrays):
declare -ar i3=([0]="a" [1]="b" [2]="c")
declare -ar j3=([0]="1" [1]="2" [2]="3")
after o3:
-./varenv9.sub: line 48: declare: i3: not found
-./varenv9.sub: line 48: declare: j3: not found
+./varenv9.sub: line 61: declare: i3: not found
+./varenv9.sub: line 61: declare: j3: not found
in o4 (readonly setting global array variables):
declare -ar i4=([0]="a" [1]="b" [2]="c")
declare -ar j4=([0]="1" [1]="2" [2]="3")
after o4:
declare -ar i4=([0]="a" [1]="b" [2]="c")
declare -ar j4=([0]="1" [1]="2" [2]="3")
-./varenv9.sub: line 66: unset: i4: cannot unset: readonly variable
-./varenv9.sub: line 66: unset: j4: cannot unset: readonly variable
+./varenv9.sub: line 79: unset: i4: cannot unset: readonly variable
+./varenv9.sub: line 79: unset: j4: cannot unset: readonly variable
main: unset
inner: res unset
outer: res: X Y
@@ -128,13 +129,14 @@ outer: res: X Y
main: after second call: X
func: null or unset
after func: x = outside
-./varenv11.sub: line 4: local: qux: readonly variable
-./varenv11.sub: line 5: qux: readonly variable
+./varenv11.sub: line 17: local: qux: readonly variable
+./varenv11.sub: line 18: qux: readonly variable
+./varenv11.sub: line 18: local: qux: readonly variable
declare -A foo=([zero]="zero" [one]="one" )
declare -a bar=([0]="zero" [1]="one")
-declare -A foo=([zero]="zero" [one]="one" )
+declare -A foo=([one]="one" [zero]="zero" )
declare -a bar=([0]="zero" [1]="one")
-./varenv11.sub: line 29: a: readonly variable
+./varenv11.sub: line 42: a: readonly variable
foo=abc
func1: var =
@@ -147,30 +149,38 @@ inside: declare -x var="value"
outside: declare -- var="one"
inside: declare -x var="value"
outside: declare -- var="outside"
-inside: declare -x var="global"
+inside: declare -x var="inside"
outside: declare -- var="outside"
-foo=<unset> environment foo=
-foo=foo environment foo=foo
-foo=foo environment foo=foo
-./varenv13.sub: line 3: `var[0]': not a valid identifier
-./varenv13.sub: line 3: `var[@]': not a valid identifier
-./varenv13.sub: line 1: declare: var: not found
-./varenv13.sub: line 12: var[@]: bad array subscript
+outside 1.0: var=one
+outside 1.1: var=one
+inside func: var=two
+outside 2.0: var=<unset>
+inside func: var=two
+outside 2.1: var=global
+inside func1: var=value
+outside 3.0: var=value
+inside func2: var=global
+outside 4.0: var=outside
+foo: hello world
+after foo: var=global
+bar: hello world
+after bar: var=global
+./varenv13.sub: line 16: `var[0]': not a valid identifier
+./varenv13.sub: line 16: `var[@]': not a valid identifier
+./varenv13.sub: line 14: declare: var: not found
+./varenv13.sub: line 25: var[@]: bad array subscript
declare -A var=([0]="X" )
help
-./varenv13.sub: line 21: `var[0]': not a valid identifier
+./varenv13.sub: line 34: `var[0]': not a valid identifier
1
-./varenv14.sub: line 6: warning: var: cannot inherit value from incompatible type
-declare -a var=([0]="X")
-./varenv14.sub: line 9: warning: var: cannot inherit value from incompatible type
-declare -a var=([0]="Y")
-./varenv14.sub: line 10: warning: var: cannot inherit value from incompatible type
-declare -a var=([0]="Y")
-./varenv14.sub: line 11: warning: var: cannot inherit value from incompatible type
-declare -a var=()
-./varenv14.sub: line 12: warning: var: cannot inherit value from incompatible type
-declare -a var=()
-./varenv14.sub: line 18: f: var: cannot convert indexed to associative array
+declare -A var=([0]="X" )
+declare -A var=([Y]="Y" )
+declare -A var=([Y]="Y" )
+declare -A var=()
+declare -A var=()
+./varenv14.sub: line 31: f: var: cannot convert indexed to associative array
+./varenv14.sub: line 31: declare: var: cannot convert indexed to associative array
+declare -a var=([0]="12")
declare -a a=([0]="X")
declare -a s=([0]="X")
declare -a a=([0]="X" [1]="Y")
@@ -207,6 +217,54 @@ after source 1: a b c d e f g h i j k l m n o p q r s t u v w x y z
varenv15.in: before set: one two three four five six seven eight nine ten
varenv15.in: after set: a b c d e f g h i j k l m n o p q r s t u v w x y z
after source 2: a b c d e f g h i j k l m n o p q r s t u v w x y z
+foo=showfoo environment foo=showfoo
+foo=showfoo environment foo=showfoo
+foo=showfoo environment foo=showfoo
+outside: foo=<unset>
+
+posix mode
+foo=showfoo environment foo=showfoo
+outside 1.0: foo=<unset>
+foo=showfoo environment foo=showfoo
+foo=showfoo environment foo=showfoo
+outside 1.1: foo=<unset>
+foo=<unset> environment foo=
+outside 2.0: foo=<unset>
+foo=foo environment foo=foo
+foo=<unset> environment foo=
+outside 2.1: foo=<unset>
+declare -- var="global"
+declare -- var
+declare -- var="local"
+declare -- var="global"
+declare -- var="local"
+declare -- var
+declare -- var="local"
+declare -- var
+declare -- var="local"
+declare -- var
+declare -- var="local"
+declare -- var="f1"
+declare -- var="local"
+declare -a arr=([0]="zero" [1]="one" [2]="two" [3]="three" [4]="four" [5]="five")
+declare -a arr=([0]="zero" [1]="one" [2]="two")
+declare -a arr=([0]="three" [1]="four" [2]="five")
+declare -a arr=([0]="zero" [1]="one" [2]="two")
+ddd 0
+aaa 1 2 3
+bbb 4 5 6
+ccc 7 8 9
+declare -a x=([0]="one" [1]="two" [2]="three")
+./varenv19.sub: line 51: declare: x: not found
+declare -x v="x"
+declare -x v="t"
+declare -- v
+declare -x v
+ignoreeof on
+ignoreeof off
+ignoreeof on
+10
+match 1
a=z
a=b
a=z
diff --git a/tests/varenv.tests b/tests/varenv.tests
index 34b85596..b058ed4f 100644
--- a/tests/varenv.tests
+++ b/tests/varenv.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# varenv.sh
#
@@ -234,13 +247,18 @@ ${THIS_SH} ./varenv11.sub
# temporary environment variable propagation and scoping in posix mode
${THIS_SH} ./varenv12.sub
-# temporary environment and invalid shell indentifier names
+# temporary environment and invalid shell identifier names
${THIS_SH} ./varenv13.sub
# localvar_inherit
${THIS_SH} ./varenv14.sub
-
${THIS_SH} ./varenv15.sub
+${THIS_SH} ./varenv16.sub
+${THIS_SH} ./varenv17.sub
+${THIS_SH} ./varenv18.sub
+${THIS_SH} ./varenv19.sub
+${THIS_SH} ./varenv20.sub
+${THIS_SH} ./varenv21.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/varenv1.sub b/tests/varenv1.sub
index 168f87b1..8def153a 100644
--- a/tests/varenv1.sub
+++ b/tests/varenv1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# test out the export behavior of variable assignments preceding `eval', `.'
# and shell functions
diff --git a/tests/varenv10.sub b/tests/varenv10.sub
index 887cfd2c..aa0175af 100644
--- a/tests/varenv10.sub
+++ b/tests/varenv10.sub
@@ -1,7 +1,19 @@
-#!/bin/bash
+# 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 <http://www.gnu.org/licenses/>.
+#
#
# various tests of unset when applied to variables at different local scopes
-
+#
# function unsetting variable at previous local scope, uncovering global
inner()
diff --git a/tests/varenv11.sub b/tests/varenv11.sub
index d4384983..638aa2c7 100644
--- a/tests/varenv11.sub
+++ b/tests/varenv11.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# couple of errors here
func()
{
diff --git a/tests/varenv12.sub b/tests/varenv12.sub
index edba3c94..92b3692f 100644
--- a/tests/varenv12.sub
+++ b/tests/varenv12.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
set -o posix
fn() { foo=abc : ; typeset +x foo; printenv|grep ^foo=; }
@@ -50,10 +63,11 @@ unset -f func
# this will probably change behavior; export shouldn't behave like this when
# not in posix mode and the sequencing is probably wrong in posix mode. since
# export is a special builtin, the variable assignment should modify the
-# global variable, leaving the local variable unchanged. all shells, including
-# bash, modify the local variable; bash is the only one that propagates the
-# value out to the calling environment. bash does that only when in posix
-# mode.
+# local variable, as if a standalone assignment statement had been executed
+# (posix modifying "the current execution environment") leaving the global
+# variable unchanged. all shells, including bash, modify the local variable;
+# bash was the only one that propagates the value out to the calling
+# environment, but no longer does so.
func()
{
@@ -72,7 +86,7 @@ unset -f func
func()
{
local var=local
- var=global :
+ var=inside :
echo -n 'inside: ' ; declare -p var
}
@@ -83,18 +97,75 @@ echo -n 'outside: ' ; declare -p var
unset -v var
unset -f func
-# test whether or not temporary environment assignments are exported
-# in posix mode
-showfoo()
+func()
{
- printf %s "foo=${foo-<unset>}"
- echo -n ' environment foo='
- printenv foo || echo
+ echo -n 'inside func: ' ; echo "var=${var-<unset>}"
}
-unset foo
-showfoo
-foo=foo showfoo
-showfoo
-unset -v foo
-unset -f showfoo
+unset -v var
+var=one :
+echo -n 'outside 1.0: ' ; echo "var=${var-<unset>}"
+
+unset -v var
+var=one eval ':'
+echo -n 'outside 1.1: ' ; echo "var=${var-<unset>}"
+
+unset -v var
+
+var=two func
+echo -n 'outside 2.0: ' ; echo "var=${var-<unset>}"
+var=global
+var=two func
+echo -n 'outside 2.1: ' ; echo "var=${var-<unset>}"
+
+unset -v var
+unset -f func
+
+func1()
+{
+ var=value export var
+ echo -n 'inside func1: ' ; echo "var=${var-<unset>}"
+}
+
+var=outside
+func1
+echo -n 'outside 3.0: ' ; echo "var=${var-<unset>}"
+
+unset -v var
+unset -f func1
+
+func2()
+{
+ local var=local
+ var=global :
+ echo -n 'inside func2: ' ; echo "var=${var-<unset>}"
+}
+
+var=outside
+func2
+echo -n 'outside 4.0: ' ; echo "var=${var-<unset>}"
+
+unset -v var
+unset -f fecho foo bar
+
+fecho() {
+ echo $var
+}
+
+foo() {
+ local var="foo: bye bye"
+ var="foo: hello world" fecho
+}
+
+bar() {
+ var="bar: hello world" fecho
+}
+
+var=global
+var=outside foo
+echo after foo: var=$var
+var=global
+var=outside bar
+echo after bar: var=$var
+
+unset -v var
diff --git a/tests/varenv13.sub b/tests/varenv13.sub
index 0e6a42c1..1f837ec7 100644
--- a/tests/varenv13.sub
+++ b/tests/varenv13.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f() { declare -p ${!var*} | grep ^var; declare -p var ; }
var[0]=X var[@]=Y f
diff --git a/tests/varenv14.sub b/tests/varenv14.sub
index 52b20d81..091c4700 100644
--- a/tests/varenv14.sub
+++ b/tests/varenv14.sub
@@ -1,4 +1,17 @@
-# testing framework for local variable inheritence
+# 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 <http://www.gnu.org/licenses/>.
+#
+# testing framework for local variable inheritance
shopt -s localvar_inherit
declare -A var
diff --git a/tests/varenv15.sub b/tests/varenv15.sub
index 52c8a940..4c9ef0e4 100644
--- a/tests/varenv15.sub
+++ b/tests/varenv15.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# check saving and restoring positional parameters around function calls
f()
diff --git a/tests/varenv16.sub b/tests/varenv16.sub
new file mode 100644
index 00000000..847926c9
--- /dev/null
+++ b/tests/varenv16.sub
@@ -0,0 +1,51 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+# test whether or not temporary environment assignments are exported
+# in posix mode. works now, posix says it will not work in the future
+
+show2()
+{
+ printf %s "foo=${foo-<unset>}"
+ echo -n ' environment foo='
+ printenv foo || echo
+}
+
+showfoo()
+{
+ local foo
+
+ foo=showfoo show2
+}
+
+unset foo
+showfoo
+foo=foo showfoo
+showfoo
+echo outside: "foo=${foo-<unset>}"
+
+echo ; echo 'posix mode'
+set -o posix
+unset foo
+showfoo
+echo outside 1.0: "foo=${foo-<unset>}"
+foo=foo showfoo
+showfoo
+echo outside 1.1: "foo=${foo-<unset>}"
+
+unset foo
+show2
+echo outside 2.0: "foo=${foo-<unset>}"
+foo=foo show2
+show2
+echo outside 2.1: "foo=${foo-<unset>}"
diff --git a/tests/varenv17.sub b/tests/varenv17.sub
new file mode 100644
index 00000000..1f9278cf
--- /dev/null
+++ b/tests/varenv17.sub
@@ -0,0 +1,44 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+# testing -I and local variable inheritance
+var=global
+
+f()
+{
+ local $1 var
+ declare -p var
+
+ var=local
+ declare -p var
+}
+
+declare -I var
+declare -p var
+
+f
+f -I
+unset var
+f
+f -I
+
+f1()
+{
+ var=$FUNCNAME
+
+ f
+ f -I
+}
+
+f1
diff --git a/tests/varenv18.sub b/tests/varenv18.sub
new file mode 100644
index 00000000..4ad7f1a4
--- /dev/null
+++ b/tests/varenv18.sub
@@ -0,0 +1,41 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+
+arr=(zero one two)
+four=four
+
+f()
+{
+ local -a arr=( "${arr[@]}" )
+ arr+=(three four five)
+ declare -p arr
+}
+f
+declare -p arr
+
+f1()
+{
+ local -a arr=(three $four five)
+ declare -p arr
+}
+f1
+
+set -u
+name='arr[@]'
+f2()
+{
+ local -a arr=("${!name}")
+ declare -p arr
+}
+f2
diff --git a/tests/varenv19.sub b/tests/varenv19.sub
new file mode 100644
index 00000000..753f508c
--- /dev/null
+++ b/tests/varenv19.sub
@@ -0,0 +1,51 @@
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+# variable attribute inheritance problems without specifying -a or -A
+
+function aaa() {
+ local x='1 2 3'
+ echo "aaa ${x}"
+}
+
+function bbb {
+ local x
+ x=(4 5 6)
+ echo "bbb ${x[*]}"
+}
+
+ccc()
+{
+ local x=(7 8 9)
+ echo "ccc ${x[*]}"
+}
+
+function ddd
+{
+ local -r x='0'
+ echo "ddd ${x}"
+ aaa
+ bbb
+ ccc
+}
+
+ddd
+
+f()
+{
+ local x=(one two three)
+ declare -p x
+}
+f
+declare -p x
diff --git a/tests/varenv2.sub b/tests/varenv2.sub
index b2935726..0fde5b20 100644
--- a/tests/varenv2.sub
+++ b/tests/varenv2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
fff()
{
typeset i=0 x=10
diff --git a/tests/varenv20.sub b/tests/varenv20.sub
new file mode 100644
index 00000000..5fba8c4c
--- /dev/null
+++ b/tests/varenv20.sub
@@ -0,0 +1,13 @@
+# tests of local variables with the same name as variables passed in the
+# temporary environment
+
+f() { local v=x; local -p; }
+v=t f
+
+f() { local v; declare -p v; }
+v=t f
+
+f() { local v=x; unset v; declare -p v; }
+v=g
+f
+v=t f
diff --git a/tests/varenv21.sub b/tests/varenv21.sub
new file mode 100644
index 00000000..613e4759
--- /dev/null
+++ b/tests/varenv21.sub
@@ -0,0 +1,48 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
+# test behavior of `local -' inside shell functions
+
+IGNOREEOF=0
+shopt -o ignoreeof
+
+f()
+{
+ local -
+ set +o ignoreeof
+ shopt -o ignoreeof
+}
+
+f
+shopt -o ignoreeof
+echo $IGNOREEOF
+
+unset -f f
+
+f()
+{
+ local -
+ set -m -H +B
+ set -u
+}
+
+before="$-|$SHELLOPTS"
+f
+after="$-|$SHELLOPTS"
+
+case "$after" in
+$before) echo match 1 ;;
+*) echo bad 1 ;;
+esac
+
+unset -f f
diff --git a/tests/varenv3.sub b/tests/varenv3.sub
index 1384fcb1..854e483d 100644
--- a/tests/varenv3.sub
+++ b/tests/varenv3.sub
@@ -1,4 +1,16 @@
-#!/bin/bash
+# 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 <http://www.gnu.org/licenses/>.
+#
oifs=$IFS
diff --git a/tests/varenv4.sub b/tests/varenv4.sub
index b2df61c9..9735b617 100644
--- a/tests/varenv4.sub
+++ b/tests/varenv4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f()
{
local -a v
diff --git a/tests/varenv5.sub b/tests/varenv5.sub
index 8ebfa36d..b6eb70c2 100644
--- a/tests/varenv5.sub
+++ b/tests/varenv5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
function foobar {
declare -rgA FOOBAR=([foo]=bar)
declare -p FOOBAR
diff --git a/tests/varenv6.sub b/tests/varenv6.sub
index d0269fb6..8cf21f72 100644
--- a/tests/varenv6.sub
+++ b/tests/varenv6.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
f()
{
local str=F
diff --git a/tests/varenv7.sub b/tests/varenv7.sub
index 45654da2..4b259606 100644
--- a/tests/varenv7.sub
+++ b/tests/varenv7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
foo()
{
local -a myvar=()
diff --git a/tests/varenv9.sub b/tests/varenv9.sub
index eda1be3f..5837aa54 100644
--- a/tests/varenv9.sub
+++ b/tests/varenv9.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
# case 1: readonly modifying local scalar variables
o1() {
local i1 j1
diff --git a/tests/vredir.right b/tests/vredir.right
index f4fe0db8..b2c4cc9c 100644
--- a/tests/vredir.right
+++ b/tests/vredir.right
@@ -8,8 +8,8 @@ bar ()
exec {v}> $TMPFILE;
echo $v
}
-./vredir.tests: line 6: v: readonly variable
-./vredir.tests: line 6: v: cannot assign fd to variable
+./vredir.tests: line 19: v: readonly variable
+./vredir.tests: line 19: v: cannot assign fd to variable
42
bar is a function
bar ()
diff --git a/tests/vredir.tests b/tests/vredir.tests
index ce77deb7..ea59eecd 100644
--- a/tests/vredir.tests
+++ b/tests/vredir.tests
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
TMPFILE=$TMPDIR/foo
diff --git a/tests/vredir1.sub b/tests/vredir1.sub
index 403734c8..484f313b 100644
--- a/tests/vredir1.sub
+++ b/tests/vredir1.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
bar()
{
exec {v}<<EOF
diff --git a/tests/vredir2.sub b/tests/vredir2.sub
index e1a380df..4f9e7bb3 100644
--- a/tests/vredir2.sub
+++ b/tests/vredir2.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
: ${TMPDIR:=/var/tmp}
SHELLSFILE=$TMPDIR/shells-$$
diff --git a/tests/vredir4.sub b/tests/vredir4.sub
index e1cef057..f861bcfc 100644
--- a/tests/vredir4.sub
+++ b/tests/vredir4.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
swizzle()
{
fd0=0
diff --git a/tests/vredir5.sub b/tests/vredir5.sub
index d1531e91..beb45ac2 100644
--- a/tests/vredir5.sub
+++ b/tests/vredir5.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
swizzle()
{
exec {fd0}<&0
diff --git a/tests/vredir7.sub b/tests/vredir7.sub
index 8cb80edd..0f76f404 100644
--- a/tests/vredir7.sub
+++ b/tests/vredir7.sub
@@ -1,3 +1,16 @@
+# 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 <http://www.gnu.org/licenses/>.
+#
swizzle()
{
exec {fd[0]}<&0
diff --git a/trap.c b/trap.c
index 3cb67cdf..c7f8ded5 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-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -90,6 +90,7 @@ static void trap_if_untrapped (int, char *);
extern procenv_t alrmbuf;
extern volatile int from_return_trap;
+extern int waiting_for_child;
extern WORD_LIST *subst_assign_varlist;
@@ -120,6 +121,9 @@ int wait_signal_received;
int trapped_signal_received;
+/* Set to 1 to suppress the effect of `set v' in the DEBUG trap. */
+int suppress_debug_trap_verbose = 0;
+
#define GETORIGSIG(sig) \
do { \
original_signals[sig] = (SigHandler *)set_signal_handler (sig, SIG_DFL); \
@@ -294,6 +298,7 @@ run_pending_traps ()
{
register int sig;
int old_exit_value, x;
+ int old_running;
WORD_LIST *save_subst_varlist;
HASH_TABLE *save_tempenv;
sh_parser_state_t pstate;
@@ -330,6 +335,7 @@ run_pending_traps ()
#if defined (ARRAY_VARS)
ps = save_pipestatus_array ();
#endif
+ old_running = running_trap;
for (sig = 1; sig < NSIG; sig++)
{
@@ -440,7 +446,7 @@ run_pending_traps ()
}
pending_traps[sig] = 0; /* XXX - move before evalstring? */
- running_trap = 0;
+ running_trap = old_running;
}
}
@@ -450,6 +456,17 @@ run_pending_traps ()
last_command_exit_value = old_exit_value;
}
+/* Set the private state variables noting that we received a signal SIG
+ for which we have a trap set. */
+void
+set_trap_state (sig)
+ int sig;
+{
+ catch_flag = 1;
+ pending_traps[sig]++;
+ trapped_signal_received = sig;
+}
+
sighandler
trap_handler (sig)
int sig;
@@ -478,14 +495,12 @@ trap_handler (sig)
set_signal_handler (sig, trap_handler);
#endif /* MUST_REINSTALL_SIGHANDLERS */
- catch_flag = 1;
- pending_traps[sig]++;
- trapped_signal_received = sig;
+ set_trap_state (sig);
if (this_shell_builtin && (this_shell_builtin == wait_builtin))
{
wait_signal_received = sig;
- if (interrupt_immediately && wait_intr_flag)
+ if (waiting_for_child && wait_intr_flag)
sh_longjmp (wait_intr_buf, 1);
}
@@ -493,13 +508,10 @@ trap_handler (sig)
/* Set the event hook so readline will call it after the signal handlers
finish executing, so if this interrupted character input we can get
quick response. */
- if (RL_ISSTATE (RL_STATE_SIGHANDLER) && interrupt_immediately == 0)
+ if (RL_ISSTATE (RL_STATE_SIGHANDLER))
bashline_set_event_hook ();
#endif
- if (interrupt_immediately)
- run_pending_traps ();
-
errno = oerrno;
}
@@ -507,16 +519,23 @@ trap_handler (sig)
}
int
-first_pending_trap ()
+next_pending_trap (start)
+ int start;
{
register int i;
- for (i = 1; i < NSIG; i++)
+ for (i = start; i < NSIG; i++)
if (pending_traps[i])
return i;
return -1;
}
+int
+first_pending_trap ()
+{
+ return (next_pending_trap (1));
+}
+
/* Return > 0 if any of the "real" signals (not fake signals like EXIT) are
trapped. */
int
@@ -531,6 +550,15 @@ any_signals_trapped ()
}
void
+clear_pending_traps ()
+{
+ register int i;
+
+ for (i = 1; i < NSIG; i++)
+ pending_traps[i] = 0;
+}
+
+void
check_signals ()
{
CHECK_ALRM; /* set by the read builtin */
@@ -952,6 +980,7 @@ void
run_trap_cleanup (sig)
int sig;
{
+ /* XXX - should we clean up trap_list[sig] == IMPOSSIBLE_TRAP_HANDLER? */
sigmodes[sig] &= ~(SIG_INPROGRESS|SIG_CHANGED);
}
@@ -966,7 +995,8 @@ _run_trap_internal (sig, tag)
{
char *trap_command, *old_trap;
int trap_exit_value;
- volatile int save_return_catch_flag, function_code, old_int;
+ volatile int save_return_catch_flag, function_code;
+ int old_modes, old_running, old_int;
int flags;
procenv_t save_return_catch;
WORD_LIST *save_subst_varlist;
@@ -976,13 +1006,15 @@ _run_trap_internal (sig, tag)
ARRAY *ps;
#endif
+ old_modes = old_running = -1;
+
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) &&
(trap_list[sig] != (char *)IMPOSSIBLE_TRAP_HANDLER) &&
-#if 0
+#if 1
/* Uncomment this to allow some special signals to recursively execute
trap handlers. */
(RECURSIVE_SIG (sig) || (sigmodes[sig] & SIG_INPROGRESS) == 0))
@@ -991,6 +1023,9 @@ _run_trap_internal (sig, tag)
#endif
{
old_trap = trap_list[sig];
+ old_modes = sigmodes[sig];
+ old_running = running_trap;
+
sigmodes[sig] |= SIG_INPROGRESS;
sigmodes[sig] &= ~SIG_CHANGED; /* just to be sure */
trap_command = savestring (old_trap);
@@ -1050,8 +1085,10 @@ _run_trap_internal (sig, tag)
temporary_env = save_tempenv;
- sigmodes[sig] &= ~SIG_INPROGRESS;
- running_trap = 0;
+ if ((old_modes & SIG_INPROGRESS) == 0)
+ sigmodes[sig] &= ~SIG_INPROGRESS;
+
+ running_trap = old_running;
interrupt_state = old_int;
if (sigmodes[sig] & SIG_CHANGED)
@@ -1110,9 +1147,7 @@ run_debug_trap ()
#endif
old_verbose = echo_input_at_read;
-#if 0 /* not yet */
- echo_input_at_read = 0;
-#endif
+ echo_input_at_read = suppress_debug_trap_verbose ? 0 : echo_input_at_read;
trap_exit_value = _run_trap_internal (DEBUG_TRAP, "debug trap");
@@ -1177,6 +1212,8 @@ run_interrupt_trap (will_throw)
{
if (will_throw && running_trap > 0)
run_trap_cleanup (running_trap - 1);
+ pending_traps[SIGINT] = 0; /* run_pending_traps does this */
+ catch_flag = 0;
_run_trap_internal (SIGINT, "interrupt trap");
}
@@ -1391,3 +1428,26 @@ signal_in_progress (sig)
{
return (sigmodes[sig] & SIG_INPROGRESS);
}
+
+#if 0 /* TAG: bash-5.2 */
+int
+block_trapped_signals (maskp, omaskp)
+ sigset_t *maskp;
+ sigset_t *omaskp;
+{
+ int i;
+
+ sigemptyset (maskp);
+ for (i = 1; i < NSIG; i++)
+ if (sigmodes[i] & SIG_TRAPPED)
+ sigaddset (maskp, i);
+ return (sigprocmask (SIG_BLOCK, maskp, omaskp));
+}
+
+int
+unblock_trapped_signals (maskp)
+ sigset_t *maskp;
+{
+ return (sigprocmask (SIG_SETMASK, maskp, 0));
+}
+#endif
diff --git a/trap.h b/trap.h
index 91cec2d8..ef64a680 100644
--- a/trap.h
+++ b/trap.h
@@ -64,60 +64,65 @@ extern int trapped_signal_received;
extern int wait_signal_received;
extern int running_trap;
extern int trap_saved_exit_value;
+extern int suppress_debug_trap_verbose;
/* Externally-visible functions declared in trap.c. */
-extern void initialize_traps __P((void));
-
-extern void run_pending_traps __P((void));
-
-extern void queue_sigchld_trap __P((int));
-extern void maybe_set_sigchld_trap __P((char *));
-extern void set_impossible_sigchld_trap __P((void));
-extern void set_sigchld_trap __P((char *));
-
-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 *));
-
-extern void restore_default_signal __P((int));
-extern void ignore_signal __P((int));
-extern int run_exit_trap __P((void));
-extern void run_trap_cleanup __P((int));
-extern int run_debug_trap __P((void));
-extern void run_error_trap __P((void));
-extern void run_return_trap __P((void));
-
-extern void free_trap_strings __P((void));
-extern void reset_signal_handlers __P((void));
-extern void restore_original_signals __P((void));
-
-extern void get_original_signal __P((int));
-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((int));
-extern int maybe_call_trap_handler __P((int));
-extern int signal_is_special __P((int));
-extern int signal_is_trapped __P((int));
-extern int signal_is_pending __P((int));
-extern int signal_is_ignored __P((int));
-extern int signal_is_hard_ignored __P((int));
-extern void set_signal_hard_ignored __P((int));
-extern void set_signal_ignored __P((int));
-extern int signal_in_progress __P((int));
-
-extern int first_pending_trap __P((void));
-extern int any_signals_trapped __P((void));
-extern void check_signals __P((void));
-extern void check_signals_and_traps __P((void));
+extern void initialize_traps PARAMS((void));
+
+extern void run_pending_traps PARAMS((void));
+
+extern void queue_sigchld_trap PARAMS((int));
+extern void maybe_set_sigchld_trap PARAMS((char *));
+extern void set_impossible_sigchld_trap PARAMS((void));
+extern void set_sigchld_trap PARAMS((char *));
+
+extern void set_debug_trap PARAMS((char *));
+extern void set_error_trap PARAMS((char *));
+extern void set_return_trap PARAMS((char *));
+
+extern void maybe_set_debug_trap PARAMS((char *));
+extern void maybe_set_error_trap PARAMS((char *));
+extern void maybe_set_return_trap PARAMS((char *));
+
+extern void set_sigint_trap PARAMS((char *));
+extern void set_signal PARAMS((int, char *));
+
+extern void restore_default_signal PARAMS((int));
+extern void ignore_signal PARAMS((int));
+extern int run_exit_trap PARAMS((void));
+extern void run_trap_cleanup PARAMS((int));
+extern int run_debug_trap PARAMS((void));
+extern void run_error_trap PARAMS((void));
+extern void run_return_trap PARAMS((void));
+
+extern void free_trap_strings PARAMS((void));
+extern void reset_signal_handlers PARAMS((void));
+extern void restore_original_signals PARAMS((void));
+
+extern void get_original_signal PARAMS((int));
+extern void get_all_original_signals PARAMS((void));
+
+extern char *signal_name PARAMS((int));
+
+extern int decode_signal PARAMS((char *, int));
+extern void run_interrupt_trap PARAMS((int));
+extern int maybe_call_trap_handler PARAMS((int));
+extern int signal_is_special PARAMS((int));
+extern int signal_is_trapped PARAMS((int));
+extern int signal_is_pending PARAMS((int));
+extern int signal_is_ignored PARAMS((int));
+extern int signal_is_hard_ignored PARAMS((int));
+extern void set_signal_hard_ignored PARAMS((int));
+extern void set_signal_ignored PARAMS((int));
+extern int signal_in_progress PARAMS((int));
+
+extern void set_trap_state PARAMS((int));
+
+extern int next_pending_trap PARAMS((int));
+extern int first_pending_trap PARAMS((void));
+extern void clear_pending_traps PARAMS((void));
+extern int any_signals_trapped PARAMS((void));
+extern void check_signals PARAMS((void));
+extern void check_signals_and_traps PARAMS((void));
#endif /* _TRAP_H_ */
diff --git a/unwind_prot.c b/unwind_prot.c
index c9196dc1..5703777f 100644
--- a/unwind_prot.c
+++ b/unwind_prot.c
@@ -3,7 +3,7 @@
/* I can't stand it anymore! Please can't we just write the
whole Unix system in lisp or something? */
-/* Copyright (C) 1987-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -76,15 +76,15 @@ 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 *));
-static void add_unwind_protect_internal __P((Function *, char *));
-static void remove_unwind_protect_internal __P((char *, char *));
-static void run_unwind_protects_internal __P((char *, char *));
-static void clear_unwind_protects_internal __P((char *, char *));
-static inline void restore_variable __P((SAVED_VAR *));
-static void unwind_protect_mem_internal __P((char *, char *));
+static void without_interrupts PARAMS((VFunction *, char *, char *));
+static void unwind_frame_discard_internal PARAMS((char *, char *));
+static void unwind_frame_run_internal PARAMS((char *, char *));
+static void add_unwind_protect_internal PARAMS((Function *, char *));
+static void remove_unwind_protect_internal PARAMS((char *, char *));
+static void run_unwind_protects_internal PARAMS((char *, char *));
+static void clear_unwind_protects_internal PARAMS((char *, char *));
+static inline void restore_variable PARAMS((SAVED_VAR *));
+static void unwind_protect_mem_internal PARAMS((char *, char *));
static UNWIND_ELT *unwind_protect_list = (UNWIND_ELT *)NULL;
@@ -108,21 +108,13 @@ uwp_init ()
}
/* Run a function without interrupts. This relies on the fact that the
- FUNCTION cannot change the value of interrupt_immediately. (I.e., does
- not call QUIT (). */
+ FUNCTION cannot call QUIT (). */
static void
without_interrupts (function, arg1, arg2)
VFunction *function;
char *arg1, *arg2;
{
- int old_interrupt_immediately;
-
- old_interrupt_immediately = interrupt_immediately;
- interrupt_immediately = 0;
-
(*function)(arg1, arg2);
-
- interrupt_immediately = old_interrupt_immediately;
}
/* Start the beginning of a region. */
@@ -349,6 +341,8 @@ unwind_protect_mem_internal (var, psize)
size = *(int *) psize;
allocated = size + offsetof (UNWIND_ELT, sv.v.desired_setting[0]);
+ if (allocated < sizeof (UNWIND_ELT))
+ allocated = sizeof (UNWIND_ELT);
elt = (UNWIND_ELT *)xmalloc (allocated);
elt->head.next = unwind_protect_list;
elt->head.cleanup = (Function *) restore_variable;
diff --git a/unwind_prot.h b/unwind_prot.h
index cbfc97ca..97b3af90 100644
--- a/unwind_prot.h
+++ b/unwind_prot.h
@@ -1,6 +1,6 @@
/* unwind_prot.h - Macros and functions for hacking unwind protection. */
-/* Copyright (C) 1993-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1993-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -21,26 +21,26 @@
#if !defined (_UNWIND_PROT_H)
#define _UNWIND_PROT_H
-extern void uwp_init __P((void));
+extern void uwp_init PARAMS((void));
/* Run a function without interrupts. */
-extern void begin_unwind_frame __P((char *));
-extern void discard_unwind_frame __P((char *));
-extern void run_unwind_frame __P((char *));
+extern void begin_unwind_frame PARAMS((char *));
+extern void discard_unwind_frame PARAMS((char *));
+extern void run_unwind_frame PARAMS((char *));
extern void add_unwind_protect (); /* Not portable to arbitrary C99 hosts. */
-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));
+extern void remove_unwind_protect PARAMS((void));
+extern void run_unwind_protects PARAMS((void));
+extern void clear_unwind_protect_list PARAMS((int));
+extern int have_unwind_protects PARAMS((void));
+extern int unwind_protect_tag_on_stack PARAMS((const char *));
+extern void uwp_init PARAMS((void));
/* Define for people who like their code to look a certain way. */
#define end_unwind_frame()
/* How to protect a variable. */
#define unwind_protect_var(X) unwind_protect_mem ((char *)&(X), sizeof (X))
-extern void unwind_protect_mem __P((char *, int));
+extern void unwind_protect_mem PARAMS((char *, int));
/* Backwards compatibility */
#define unwind_protect_int unwind_protect_var
diff --git a/variables.c b/variables.c
index af3fd04a..73f157fb 100644
--- a/variables.c
+++ b/variables.c
@@ -1,6 +1,6 @@
/* variables.c -- Functions for hacking shell variables. */
-/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -43,6 +43,7 @@
#endif
#include "bashansi.h"
#include "bashintl.h"
+#include "filecntl.h"
#define NEED_XTRACE_SET_DECL
@@ -93,11 +94,13 @@
#define FV_FORCETEMPENV 0x01
#define FV_SKIPINVISIBLE 0x02
+#define FV_NODYNAMIC 0x04
extern char **environ;
/* Variables used here and defined in other files. */
extern time_t shell_start_time;
+extern struct timeval shellstart;
/* The list of shell variables that the user has created at the global
scope, or that came from the environment. */
@@ -143,6 +146,7 @@ int tempenv_assign_error;
"$*", "$1", and all the cruft is kept. */
char *dollar_vars[10];
WORD_LIST *rest_of_args = (WORD_LIST *)NULL;
+int posparam_count = 0;
/* The value of $$. */
pid_t dollar_dollar_pid;
@@ -172,144 +176,149 @@ static HASH_TABLE *last_table_searched; /* hash_lookup sets this */
static VAR_CONTEXT *last_context_searched;
/* Some forward declarations. */
-static void create_variable_tables __P((void));
-
-static void set_machine_vars __P((void));
-static void set_home_var __P((void));
-static void set_shell_var __P((void));
-static char *get_bash_name __P((void));
-static void initialize_shell_level __P((void));
-static void uidset __P((void));
+static void create_variable_tables PARAMS((void));
+
+static void set_machine_vars PARAMS((void));
+static void set_home_var PARAMS((void));
+static void set_shell_var PARAMS((void));
+static char *get_bash_name PARAMS((void));
+static void initialize_shell_level PARAMS((void));
+static void uidset PARAMS((void));
#if defined (ARRAY_VARS)
-static void make_vers_array __P((void));
+static void make_vers_array PARAMS((void));
#endif
-static SHELL_VAR *null_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *null_assign PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
#if defined (ARRAY_VARS)
-static SHELL_VAR *null_array_assign __P((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *null_array_assign PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
#endif
-static SHELL_VAR *get_self __P((SHELL_VAR *));
+static SHELL_VAR *get_self PARAMS((SHELL_VAR *));
#if defined (ARRAY_VARS)
-static SHELL_VAR *init_dynamic_array_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
-static SHELL_VAR *init_dynamic_assoc_var __P((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
+static SHELL_VAR *init_dynamic_array_var PARAMS((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
+static SHELL_VAR *init_dynamic_assoc_var PARAMS((char *, sh_var_value_func_t *, sh_var_assign_func_t *, int));
#endif
-static SHELL_VAR *assign_seconds __P((SHELL_VAR *, char *, arrayind_t, char *));
-static SHELL_VAR *get_seconds __P((SHELL_VAR *));
-static SHELL_VAR *init_seconds_var __P((void));
+static SHELL_VAR *assign_seconds PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_seconds PARAMS((SHELL_VAR *));
+static SHELL_VAR *init_seconds_var PARAMS((void));
-static int brand __P((void));
-static void sbrand __P((unsigned long)); /* set bash random number generator. */
-static void seedrand __P((void)); /* seed generator randomly */
-static SHELL_VAR *assign_random __P((SHELL_VAR *, char *, arrayind_t, char *));
-static SHELL_VAR *get_random __P((SHELL_VAR *));
+static SHELL_VAR *assign_random PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_random PARAMS((SHELL_VAR *));
-static SHELL_VAR *assign_lineno __P((SHELL_VAR *, char *, arrayind_t, char *));
-static SHELL_VAR *get_lineno __P((SHELL_VAR *));
+static SHELL_VAR *get_urandom PARAMS((SHELL_VAR *));
-static SHELL_VAR *assign_subshell __P((SHELL_VAR *, char *, arrayind_t, char *));
-static SHELL_VAR *get_subshell __P((SHELL_VAR *));
+static SHELL_VAR *assign_lineno PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_lineno PARAMS((SHELL_VAR *));
-static SHELL_VAR *get_epochseconds __P((SHELL_VAR *));
-static SHELL_VAR *get_epochrealtime __P((SHELL_VAR *));
+static SHELL_VAR *assign_subshell PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_subshell PARAMS((SHELL_VAR *));
-static SHELL_VAR *get_bashpid __P((SHELL_VAR *));
+static SHELL_VAR *get_epochseconds PARAMS((SHELL_VAR *));
+static SHELL_VAR *get_epochrealtime PARAMS((SHELL_VAR *));
+
+static SHELL_VAR *get_bashpid PARAMS((SHELL_VAR *));
+
+static SHELL_VAR *get_bash_argv0 PARAMS((SHELL_VAR *));
+static SHELL_VAR *assign_bash_argv0 PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static void set_argv0 PARAMS((void));
#if defined (HISTORY)
-static SHELL_VAR *get_histcmd __P((SHELL_VAR *));
+static SHELL_VAR *get_histcmd PARAMS((SHELL_VAR *));
#endif
#if defined (READLINE)
-static SHELL_VAR *get_comp_wordbreaks __P((SHELL_VAR *));
-static SHELL_VAR *assign_comp_wordbreaks __P((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_comp_wordbreaks PARAMS((SHELL_VAR *));
+static SHELL_VAR *assign_comp_wordbreaks PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
#endif
#if defined (PUSHD_AND_POPD) && defined (ARRAY_VARS)
-static SHELL_VAR *assign_dirstack __P((SHELL_VAR *, char *, arrayind_t, char *));
-static SHELL_VAR *get_dirstack __P((SHELL_VAR *));
+static SHELL_VAR *assign_dirstack PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *get_dirstack PARAMS((SHELL_VAR *));
#endif
#if defined (ARRAY_VARS)
-static SHELL_VAR *get_groupset __P((SHELL_VAR *));
+static SHELL_VAR *get_groupset PARAMS((SHELL_VAR *));
# if defined (DEBUGGER)
-static SHELL_VAR *get_bashargcv __P((SHELL_VAR *));
+static SHELL_VAR *get_bashargcv PARAMS((SHELL_VAR *));
# endif
-static SHELL_VAR *build_hashcmd __P((SHELL_VAR *));
-static SHELL_VAR *get_hashcmd __P((SHELL_VAR *));
-static SHELL_VAR *assign_hashcmd __P((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *build_hashcmd PARAMS((SHELL_VAR *));
+static SHELL_VAR *get_hashcmd PARAMS((SHELL_VAR *));
+static SHELL_VAR *assign_hashcmd PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
# if defined (ALIAS)
-static SHELL_VAR *build_aliasvar __P((SHELL_VAR *));
-static SHELL_VAR *get_aliasvar __P((SHELL_VAR *));
-static SHELL_VAR *assign_aliasvar __P((SHELL_VAR *, char *, arrayind_t, char *));
+static SHELL_VAR *build_aliasvar PARAMS((SHELL_VAR *));
+static SHELL_VAR *get_aliasvar PARAMS((SHELL_VAR *));
+static SHELL_VAR *assign_aliasvar PARAMS((SHELL_VAR *, char *, arrayind_t, char *));
# endif
#endif
-static SHELL_VAR *get_funcname __P((SHELL_VAR *));
-static SHELL_VAR *init_funcname_var __P((void));
+static SHELL_VAR *get_funcname PARAMS((SHELL_VAR *));
+static SHELL_VAR *init_funcname_var PARAMS((void));
-static void initialize_dynamic_variables __P((void));
+static void initialize_dynamic_variables PARAMS((void));
-static SHELL_VAR *bind_invalid_envvar __P((const char *, char *, int));
+static SHELL_VAR *bind_invalid_envvar PARAMS((const char *, char *, int));
-static int var_sametype __P((SHELL_VAR *, SHELL_VAR *));
+static int var_sametype PARAMS((SHELL_VAR *, SHELL_VAR *));
-static SHELL_VAR *hash_lookup __P((const char *, HASH_TABLE *));
-static SHELL_VAR *new_shell_variable __P((const char *));
-static SHELL_VAR *make_new_variable __P((const char *, HASH_TABLE *));
-static SHELL_VAR *bind_variable_internal __P((const char *, char *, HASH_TABLE *, int, int));
+static SHELL_VAR *hash_lookup PARAMS((const char *, HASH_TABLE *));
+static SHELL_VAR *new_shell_variable PARAMS((const char *));
+static SHELL_VAR *make_new_variable PARAMS((const char *, HASH_TABLE *));
+static SHELL_VAR *bind_variable_internal PARAMS((const char *, char *, HASH_TABLE *, int, int));
-static void dispose_variable_value __P((SHELL_VAR *));
-static void free_variable_hash_data __P((PTR_T));
+static void dispose_variable_value PARAMS((SHELL_VAR *));
+static void free_variable_hash_data PARAMS((PTR_T));
-static VARLIST *vlist_alloc __P((int));
-static VARLIST *vlist_realloc __P((VARLIST *, int));
-static void vlist_add __P((VARLIST *, SHELL_VAR *, int));
+static VARLIST *vlist_alloc PARAMS((int));
+static VARLIST *vlist_realloc PARAMS((VARLIST *, int));
+static void vlist_add PARAMS((VARLIST *, SHELL_VAR *, int));
-static void flatten __P((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
+static void flatten PARAMS((HASH_TABLE *, sh_var_map_func_t *, VARLIST *, int));
-static int qsort_var_comp __P((SHELL_VAR **, SHELL_VAR **));
+static int qsort_var_comp PARAMS((SHELL_VAR **, SHELL_VAR **));
-static SHELL_VAR **vapply __P((sh_var_map_func_t *));
-static SHELL_VAR **fapply __P((sh_var_map_func_t *));
+static SHELL_VAR **vapply PARAMS((sh_var_map_func_t *));
+static SHELL_VAR **fapply PARAMS((sh_var_map_func_t *));
-static int visible_var __P((SHELL_VAR *));
-static int visible_and_exported __P((SHELL_VAR *));
-static int export_environment_candidate __P((SHELL_VAR *));
-static int local_and_exported __P((SHELL_VAR *));
-static int variable_in_context __P((SHELL_VAR *));
+static int visible_var PARAMS((SHELL_VAR *));
+static int visible_and_exported PARAMS((SHELL_VAR *));
+static int export_environment_candidate PARAMS((SHELL_VAR *));
+static int local_and_exported PARAMS((SHELL_VAR *));
+static int visible_variable_in_context PARAMS((SHELL_VAR *));
+static int variable_in_context PARAMS((SHELL_VAR *));
#if defined (ARRAY_VARS)
-static int visible_array_vars __P((SHELL_VAR *));
+static int visible_array_vars PARAMS((SHELL_VAR *));
#endif
-static SHELL_VAR *find_variable_internal __P((const char *, int));
+static SHELL_VAR *find_variable_internal PARAMS((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 **));
+static SHELL_VAR *find_nameref_at_context PARAMS((SHELL_VAR *, VAR_CONTEXT *));
+static SHELL_VAR *find_variable_nameref_context PARAMS((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
+static SHELL_VAR *find_variable_last_nameref_context PARAMS((SHELL_VAR *, VAR_CONTEXT *, VAR_CONTEXT **));
-static SHELL_VAR *bind_tempenv_variable __P((const char *, char *));
-static void push_posix_temp_var __P((PTR_T));
-static void push_temp_var __P((PTR_T));
-static void propagate_temp_var __P((PTR_T));
-static void dispose_temporary_env __P((sh_free_func_t *));
+static SHELL_VAR *bind_tempenv_variable PARAMS((const char *, char *));
+static void push_posix_temp_var PARAMS((PTR_T));
+static void push_temp_var PARAMS((PTR_T));
+static void propagate_temp_var PARAMS((PTR_T));
+static void dispose_temporary_env PARAMS((sh_free_func_t *));
-static inline char *mk_env_string __P((const char *, const char *, int));
-static char **make_env_array_from_var_list __P((SHELL_VAR **));
-static char **make_var_export_array __P((VAR_CONTEXT *));
-static char **make_func_export_array __P((void));
-static void add_temp_array_to_env __P((char **, int, int));
+static inline char *mk_env_string PARAMS((const char *, const char *, int));
+static char **make_env_array_from_var_list PARAMS((SHELL_VAR **));
+static char **make_var_export_array PARAMS((VAR_CONTEXT *));
+static char **make_func_export_array PARAMS((void));
+static void add_temp_array_to_env PARAMS((char **, int, int));
-static int n_shell_variables __P((void));
-static int set_context __P((SHELL_VAR *));
+static int n_shell_variables PARAMS((void));
+static int set_context PARAMS((SHELL_VAR *));
-static void push_func_var __P((PTR_T));
-static void push_builtin_var __P((PTR_T));
-static void push_exported_var __P((PTR_T));
+static void push_func_var PARAMS((PTR_T));
+static void push_builtin_var PARAMS((PTR_T));
+static void push_exported_var PARAMS((PTR_T));
-static inline void push_posix_tempvar_internal __P((SHELL_VAR *, int));
+/* This needs to be looked at again. */
+static inline void push_posix_tempvar_internal PARAMS((SHELL_VAR *, int));
-static inline int find_special_var __P((const char *));
+static inline int find_special_var PARAMS((const char *));
static void
create_variable_tables ()
@@ -408,7 +417,7 @@ initialize_shell_variables (env, privmode)
VSETATTR (temp_var, (att_exported | att_imported | att_invisible));
array_needs_making = 1;
}
- last_command_exit_value = 1;
+ last_command_exit_value = EXECUTION_FAILURE;
report_error (_("error importing function definition for `%s'"), tname);
}
@@ -541,6 +550,8 @@ initialize_shell_variables (env, privmode)
set_ppid ();
+ set_argv0 ();
+
/* Initialize the `getopts' stuff. */
temp_var = bind_variable ("OPTIND", "1", 0);
VSETATTR (temp_var, att_integer);
@@ -593,8 +604,9 @@ initialize_shell_variables (env, privmode)
}
#endif /* HISTORY */
- /* Seed the random number generator. */
+ /* Seed the random number generators. */
seedrand ();
+ seedrand32 ();
/* Handle some "special" variables that we may have inherited from a
parent shell. */
@@ -1147,7 +1159,7 @@ print_var_function (var)
unused otherwise.
dynamic_value is called from find_variable_internal to return a `new'
- value for the specified dynamic varible. If this function is NULL,
+ value for the specified dynamic variable. If this function is NULL,
the variable is treated as a `normal' shell variable. If it is not,
however, then this function is called like this:
tempvar = (*(var->dynamic_value)) (var);
@@ -1273,9 +1285,16 @@ assign_seconds (self, value, unused, key)
arrayind_t unused;
char *key;
{
- if (legal_number (value, &seconds_value_assigned) == 0)
- seconds_value_assigned = 0;
- shell_start_time = NOW;
+ intmax_t nval;
+ int expok;
+
+ if (integer_p (self))
+ nval = evalexp (value, 0, &expok);
+ else
+ expok = legal_number (value, &nval);
+ seconds_value_assigned = expok ? nval : 0;
+ gettimeofday (&shellstart, NULL);
+ shell_start_time = shellstart.tv_sec;
return (self);
}
@@ -1285,8 +1304,10 @@ get_seconds (var)
{
time_t time_since_start;
char *p;
+ struct timeval tv;
- time_since_start = NOW - shell_start_time;
+ gettimeofday(&tv, NULL);
+ time_since_start = tv.tv_sec - shell_start_time;
p = itos(seconds_value_assigned + time_since_start);
FREE (value_cell (var));
@@ -1310,75 +1331,11 @@ init_seconds_var ()
INIT_DYNAMIC_VAR ("SECONDS", (v ? value_cell (v) : (char *)NULL), get_seconds, assign_seconds);
return v;
}
-
-/* The random number seed. You can change this by setting RANDOM. */
-static u_bits32_t rseed = 1;
-static int last_random_value;
-static int seeded_subshell = 0;
-
-#define BASH_RANDOM_16 1
-#if BASH_RANDOM_16
-# define BASH_RAND_MAX 32767 /* 0x7fff - 16 bits */
-#else
-# define BASH_RAND_MAX 0x7fffffff /* 32 bits */
-#endif
+/* Functions for $RANDOM and $SRANDOM */
-/* Returns a pseudo-random number between 0 and 32767. */
-static int
-brand ()
-{
- /* Minimal Standard generator from
- "Random number generators: good ones are hard to find",
- Park and Miller, Communications of the ACM, vol. 31, no. 10,
- October 1988, p. 1195. filtered through FreeBSD.
-
- x(n+1) = 16807 * x(n) mod (2**31 - 1).
-
- We split up the calculations to avoid overflow.
-
- h = rseed / q; l = x - h * q; t = a * l - h * r
- m = 2147483647, a = 16807, q = 127773, r = 2836
-
- There are lots of other combinations of constants to use; look at
- https://www.gnu.org/software/gsl/manual/html_node/Other-random-number-generators.html#Other-random-number-generators */
-
- bits32_t h, l, t;
-
- /* Can't seed with 0. */
- if (rseed == 0)
- rseed = 123459876;
- h = rseed / 127773;
- l = rseed - (127773 * h);
- t = 16807 * l - 2836 * h;
- rseed = (t < 0) ? t + 0x7fffffff : t;
-
- return ((unsigned int)(rseed & BASH_RAND_MAX)); /* was % BASH_RAND_MAX+1 */
-}
-
-/* Set the random number generator seed to SEED. */
-static void
-sbrand (seed)
- unsigned long seed;
-{
- rseed = seed;
- last_random_value = 0;
-}
-
-static void
-seedrand ()
-{
- struct timeval tv;
- SHELL_VAR *v;
-
- gettimeofday (&tv, NULL);
-#if 0
- v = find_variable ("BASH_VERSION");
- sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid () ^ ((u_bits32_t)&v & 0x7fffffff));
-#else
- sbrand (tv.tv_sec ^ tv.tv_usec ^ getpid ());
-#endif
-}
+int last_random_value;
+static int seeded_subshell = 0;
static SHELL_VAR *
assign_random (self, value, unused, key)
@@ -1387,7 +1344,16 @@ assign_random (self, value, unused, key)
arrayind_t unused;
char *key;
{
- sbrand (strtoul (value, (char **)NULL, 10));
+ intmax_t seedval;
+ int expok;
+
+ if (integer_p (self))
+ seedval = evalexp (value, 0, &expok);
+ else
+ expok = legal_number (value, &seedval);
+ if (expok == 0)
+ return (self);
+ sbrand (seedval);
if (subshell_environment)
seeded_subshell = getpid ();
return (self);
@@ -1409,7 +1375,8 @@ get_random_number ()
do
rv = brand ();
while (rv == last_random_value);
- return rv;
+
+ return (last_random_value = rv);
}
static SHELL_VAR *
@@ -1420,7 +1387,23 @@ get_random (var)
char *p;
rv = get_random_number ();
- last_random_value = rv;
+ p = itos (rv);
+
+ FREE (value_cell (var));
+
+ VSETATTR (var, att_integer);
+ var_setvalue (var, p);
+ return (var);
+}
+
+static SHELL_VAR *
+get_urandom (var)
+ SHELL_VAR *var;
+{
+ u_bits32_t rv;
+ char *p;
+
+ rv = get_urandom32 ();
p = itos (rv);
FREE (value_cell (var));
@@ -1574,6 +1557,16 @@ assign_bash_argv0 (var, value, unused, key)
shell_name = static_shell_name;
return var;
}
+
+static void
+set_argv0 ()
+{
+ SHELL_VAR *v;
+
+ v = find_variable ("BASH_ARGV0");
+ if (v && imported_p (v))
+ assign_bash_argv0 (v, value_cell (v), 0, 0);
+}
static SHELL_VAR *
get_bash_command (var)
@@ -1599,8 +1592,17 @@ get_histcmd (var)
SHELL_VAR *var;
{
char *p;
+ int n;
- p = itos (history_number ());
+ /* Do the same adjustment here we do in parse.y:prompt_history_number,
+ assuming that we are in one of two states: decoding this as part of
+ the prompt string, in which case we do not want to assume that the
+ command has been saved to the history and the history number incremented,
+ or the expansion is part of the current command being executed and has
+ already been saved to history and the history number incremented.
+ Right now we use EXECUTING as the determinant. */
+ n = history_number () - executing;
+ p = itos (n);
FREE (value_cell (var));
var_setvalue (var, p);
return (var);
@@ -1914,8 +1916,10 @@ initialize_dynamic_variables ()
INIT_DYNAMIC_VAR ("RANDOM", (char *)NULL, get_random, assign_random);
VSETATTR (v, att_integer);
+ INIT_DYNAMIC_VAR ("SRANDOM", (char *)NULL, get_urandom, (sh_var_assign_func_t *)NULL);
+ VSETATTR (v, att_integer);
INIT_DYNAMIC_VAR ("LINENO", (char *)NULL, get_lineno, assign_lineno);
- VSETATTR (v, att_integer|att_regenerate);
+ VSETATTR (v, att_regenerate);
INIT_DYNAMIC_VAR ("BASHPID", (char *)NULL, get_bashpid, null_assign);
VSETATTR (v, att_integer);
@@ -1963,6 +1967,22 @@ initialize_dynamic_variables ()
/* */
/* **************************************************************** */
+#if 0 /* not yet */
+int
+var_isset (var)
+ SHELL_VAR *var;
+{
+ return (var->value != 0);
+}
+
+int
+var_isunset (var)
+ SHELL_VAR *var;
+{
+ return (var->value == 0);
+}
+#endif
+
/* How to get a pointer to the shell variable or function named NAME.
HASHED_VARS is a pointer to the hash table containing the list
of interest (either variables or functions). */
@@ -2309,7 +2329,7 @@ nameref_transform_name (name, flags)
{
v = find_variable_last_nameref (name, 1);
/* If we're making local variables, only follow namerefs that point to
- non-existant variables at the same variable context. */
+ non-existent variables at the same variable context. */
if (v && v->context != variable_context)
v = 0;
}
@@ -2628,7 +2648,6 @@ make_local_variable (name, flags)
if (was_tmpvar && old_var->context == variable_context && last_table_searched != temporary_env)
{
VUNSETATTR (old_var, att_invisible); /* XXX */
-#if 0 /* TAG:bash-5.1 */
/* We still want to flag this variable as local, though, and set things
up so that it gets treated as a local variable. */
new_var = old_var;
@@ -2638,7 +2657,7 @@ make_local_variable (name, flags)
if (vc_isfuncenv (vc) && vc->scope == variable_context)
break;
goto set_local_var_flags;
-#endif
+
return (old_var);
}
@@ -2737,7 +2756,7 @@ set_local_var_flags:
/* value_cell will be 0 if localvar_inherit == 0 or there was no old variable
with the same name or the old variable was invisible */
- if (was_tmpvar == 0 && no_invisible_vars == 0 && value_cell (new_var) == 0)
+ if (was_tmpvar == 0 && value_cell (new_var) == 0)
VSETATTR (new_var, att_invisible); /* XXX */
return (new_var);
}
@@ -2807,14 +2826,17 @@ make_new_array_variable (name)
}
SHELL_VAR *
-make_local_array_variable (name, assoc_ok)
+make_local_array_variable (name, flags)
char *name;
- int assoc_ok;
+ int flags;
{
SHELL_VAR *var;
ARRAY *array;
+ int assoc_ok;
+
+ assoc_ok = flags & MKLOC_ASSOCOK;
- var = make_local_variable (name, 0); /* XXX for now */
+ var = make_local_variable (name, flags & MKLOC_INHERIT); /* XXX for now */
/* If ASSOC_OK is non-zero, assume that we are ok with letting an assoc
variable return to the caller without converting it. The caller will
either flag an error or do the conversion itself. */
@@ -2822,7 +2844,7 @@ make_local_array_variable (name, assoc_ok)
return var;
/* Validate any value we inherited from a variable instance at a previous
- scope and disard anything that's invalid. */
+ scope and discard anything that's invalid. */
if (localvar_inherit && assoc_p (var))
{
internal_warning ("%s: cannot inherit value from incompatible type", name);
@@ -2852,7 +2874,7 @@ make_new_assoc_variable (name)
HASH_TABLE *hash;
entry = make_new_variable (name, global_variables->table);
- hash = assoc_create (0);
+ hash = assoc_create (ASSOC_HASH_BUCKETS);
var_setassoc (entry, hash);
VSETATTR (entry, att_assoc);
@@ -2860,14 +2882,17 @@ make_new_assoc_variable (name)
}
SHELL_VAR *
-make_local_assoc_variable (name, array_ok)
+make_local_assoc_variable (name, flags)
char *name;
- int array_ok;
+ int flags;
{
SHELL_VAR *var;
HASH_TABLE *hash;
+ int array_ok;
- var = make_local_variable (name, 0); /* XXX for now */
+ array_ok = flags & MKLOC_ARRAYOK;
+
+ var = make_local_variable (name, flags & MKLOC_INHERIT); /* XXX for now */
/* If ARRAY_OK is non-zero, assume that we are ok with letting an array
variable return to the caller without converting it. The caller will
either flag an error or do the conversion itself. */
@@ -2875,13 +2900,13 @@ make_local_assoc_variable (name, array_ok)
return var;
/* Validate any value we inherited from a variable instance at a previous
- scope and disard anything that's invalid. */
+ scope and discard anything that's invalid. */
if (localvar_inherit && array_p (var))
{
internal_warning ("%s: cannot inherit value from incompatible type", name);
VUNSETATTR (var, att_array);
dispose_variable_value (var);
- hash = assoc_create (0);
+ hash = assoc_create (ASSOC_HASH_BUCKETS);
var_setassoc (var, hash);
}
else if (localvar_inherit)
@@ -2889,7 +2914,7 @@ make_local_assoc_variable (name, array_ok)
else
{
dispose_variable_value (var);
- hash = assoc_create (0);
+ hash = assoc_create (ASSOC_HASH_BUCKETS);
var_setassoc (var, hash);
}
@@ -3130,6 +3155,13 @@ bind_variable_internal (name, value, table, hflags, aflags)
}
else if (entry->assign_func) /* array vars have assign functions now */
{
+ if ((readonly_p (entry) && (aflags & ASS_FORCE) == 0) || noassign_p (entry))
+ {
+ if (readonly_p (entry))
+ err_readonly (name_cell (entry));
+ return (entry);
+ }
+
INVALIDATE_EXPORTSTR (entry);
newval = (aflags & ASS_APPEND) ? make_variable_value (entry, value, aflags) : value;
if (assoc_p (entry))
@@ -3270,12 +3302,7 @@ bind_variable (name, value, flags)
else if (nv == &nameref_maxloop_value)
{
internal_warning (_("%s: circular name reference"), v->name);
-#if 1
- /* TAG:bash-5.1 */
return (bind_global_variable (v->name, value, flags));
-#else
- v = 0; /* backwards compat */
-#endif
}
else
v = nv;
@@ -3283,12 +3310,7 @@ bind_variable (name, value, flags)
else if (nv == &nameref_maxloop_value)
{
internal_warning (_("%s: circular name reference"), v->name);
-#if 1
- /* TAG:bash-5.1 */
return (bind_global_variable (v->name, value, flags));
-#else
- v = 0; /* backwards compat */
-#endif
}
else
v = nv;
@@ -3656,7 +3678,11 @@ assign_in_env (word, flags)
array_needs_making = 1;
if (flags)
- stupidly_hack_special_variables (newname);
+ {
+ if (STREQ (newname, "POSIXLY_CORRECT") || STREQ (newname, "POSIX_PEDANDTIC"))
+ save_posix_options (); /* XXX one level of saving right now */
+ stupidly_hack_special_variables (newname);
+ }
if (echo_command_at_execute)
/* The Korn shell prints the `+ ' in front of assignment statements,
@@ -3811,7 +3837,12 @@ check_unbind_variable (name)
if (v && readonly_p (v))
{
internal_error (_("%s: cannot unset: readonly %s"), name, "variable");
- return -1;
+ return -2;
+ }
+ else if (v && non_unsettable_p (v))
+ {
+ internal_error (_("%s: cannot unset"), name);
+ return -2;
}
return (unbind_variable (name));
}
@@ -4026,7 +4057,7 @@ delete_all_variables (hashed_vars)
if (!entry) \
{ \
entry = bind_variable (name, "", 0); \
- if (!no_invisible_vars && entry) entry->attributes |= att_invisible; \
+ if (entry) entry->attributes |= att_invisible; \
} \
} \
while (0)
@@ -4345,11 +4376,19 @@ static int
variable_in_context (var)
SHELL_VAR *var;
{
+ return (local_p (var) && var->context == variable_context);
+}
+
+static int
+visible_variable_in_context (var)
+ SHELL_VAR *var;
+{
return (invisible_p (var) == 0 && local_p (var) && var->context == variable_context);
}
SHELL_VAR **
-all_local_variables ()
+all_local_variables (visible_only)
+ int visible_only;
{
VARLIST *vlist;
SHELL_VAR **ret;
@@ -4370,7 +4409,10 @@ all_local_variables ()
vlist = vlist_alloc (HASH_ENTRIES (vc->table));
- flatten (vc->table, variable_in_context, vlist, 0);
+ if (visible_only)
+ flatten (vc->table, visible_variable_in_context, vlist, 0);
+ else
+ flatten (vc->table, variable_in_context, vlist, 0);
ret = vlist->list;
free (vlist);
@@ -4460,9 +4502,9 @@ char **tempvar_list;
int tvlist_ind;
/* Take a variable from an assignment statement preceding a posix special
- builtin (including `return') and create a variable from it as if a
- standalone assignment statement had been performed. This is called from
- merge_temporary_env, which is only called when in posix mode. */
+ builtin (including `return') and create a global variable from it. This
+ is called from merge_temporary_env, which is only called when in posix
+ mode. */
static void
push_posix_temp_var (data)
PTR_T data;
@@ -4478,6 +4520,8 @@ push_posix_temp_var (data)
"current execution environment." */
v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP);
+ /* XXX - do we need to worry about array variables here? */
+
/* If this modifies an existing local variable, v->context will be non-zero.
If it comes back with v->context == 0, we bound at the global context.
Set binding_table appropriately. It doesn't matter whether it's correct
@@ -4485,13 +4529,19 @@ push_posix_temp_var (data)
binding_table = v->context ? shell_variables->table : global_variables->table;
/* global variables are no longer temporary and don't need propagating. */
- if (binding_table == global_variables->table)
+ if (v->context == 0)
var->attributes &= ~(att_tempvar|att_propagate);
if (v)
{
- v->attributes |= var->attributes;
- v->attributes &= ~att_tempvar; /* not a temp var now */
+ v->attributes |= var->attributes; /* preserve tempvar attribute if appropriate */
+ /* If we don't bind a local variable, propagate the value. If we bind a
+ local variable (the "current execution environment"), keep it as local
+ and don't propagate it to the calling environment. */
+ if (v->context > 0 && local_p (v) == 0)
+ v->attributes |= att_propagate;
+ else
+ v->attributes &= ~att_propagate;
}
if (find_special_var (var->name) >= 0)
@@ -4540,7 +4590,7 @@ push_temp_var (data)
var->attributes &= ~(att_tempvar|att_propagate);
else
{
- var->attributes |= att_propagate;
+ var->attributes |= att_propagate; /* XXX - propagate more than once? */
if (binding_table == shell_variables->table)
shell_variables->flags |= VC_HASTMPVAR;
}
@@ -4631,6 +4681,15 @@ merge_temporary_env ()
dispose_temporary_env (posixly_correct ? push_posix_temp_var : push_temp_var);
}
+/* Temporary function to use if we want to separate function and special
+ builtin behavior. */
+void
+merge_function_temporary_env ()
+{
+ if (temporary_env)
+ dispose_temporary_env (push_temp_var);
+}
+
void
flush_temporary_env ()
{
@@ -4789,7 +4848,6 @@ make_env_array_from_var_list (vars)
using the cached exportstr... */
list[list_index] = USE_EXPORTSTR ? savestring (value)
: mk_env_string (var->name, value, function_p (var));
-
if (USE_EXPORTSTR == 0)
SAVE_EXPORTSTR (var, list[list_index]);
@@ -4864,7 +4922,7 @@ do \
export_env[export_env_index] = (char *)NULL; \
} while (0)
-/* Add ASSIGN to EXPORT_ENV, or supercede a previous assignment in the
+/* Add ASSIGN to EXPORT_ENV, or supersede a previous assignment in the
array with the same left-hand side. Return the new EXPORT_ENV. */
char **
add_or_supercede_exported_var (assign, do_alloc)
@@ -5133,11 +5191,7 @@ push_var_context (name, flags, tempvars)
functions no longer behave like assignment statements preceding
special builtins, and do not persist in the current shell environment.
This is austin group interp #654, though nobody implements it yet. */
-#if 0 /* XXX - TAG: bash-5.1 */
posix_func_behavior = 0;
-#else
- posix_func_behavior = posixly_correct;
-#endif
vc = new_var_context (name, flags);
/* Posix interp 1009, temporary assignments preceding function calls modify
@@ -5149,6 +5203,7 @@ push_var_context (name, flags, tempvars)
vc->table = tempvars;
/* Have to do this because the temp environment was created before
variable_context was incremented. */
+ /* XXX - only need to do it if flags&VC_FUNCENV */
flatten (tempvars, set_context, (VARLIST *)NULL, 0);
vc->flags |= VC_HASTMPVAR;
}
@@ -5161,10 +5216,10 @@ push_var_context (name, flags, tempvars)
/* This can be called from one of two code paths:
1. pop_scope, which implements the posix rules for propagating variable
assignments preceding special builtins to the surrounding scope
- (push_builtin_var);
+ (push_builtin_var -- isbltin == 1);
2. pop_var_context, which is called from pop_context and implements the
posix rules for propagating variable assignments preceding function
- calls to the surrounding scope (push_func_var).
+ calls to the surrounding scope (push_func_var -- isbltin == 0)
It takes variables out of a temporary environment hash table. We take the
variable in data.
@@ -5182,15 +5237,33 @@ push_posix_tempvar_internal (var, isbltin)
functions no longer behave like assignment statements preceding
special builtins, and do not persist in the current shell environment.
This is austin group interp #654, though nobody implements it yet. */
-#if 0 /* XXX - TAG: bash-5.1 */
posix_var_behavior = posixly_correct && isbltin;
-#else
- posix_var_behavior = posixly_correct;
-#endif
+ v = 0;
if (local_p (var) && STREQ (var->name, "-"))
- set_current_options (value_cell (var));
- else if (tempvar_p (var) && (posix_var_behavior || (var->attributes & att_propagate)))
+ {
+ set_current_options (value_cell (var));
+ set_shellopts ();
+ }
+ /* This takes variable assignments preceding special builtins that can execute
+ multiple commands (source, eval, etc.) and performs the equivalent of
+ an assignment statement to modify the closest enclosing variable (the
+ posix "current execution environment"). This makes the behavior the same
+ as push_posix_temp_var; but the circumstances of calling are slightly
+ different. */
+ else if (tempvar_p (var) && posix_var_behavior)
+ {
+ /* similar to push_posix_temp_var */
+ v = bind_variable (var->name, value_cell (var), ASS_FORCE|ASS_NOLONGJMP);
+ if (v)
+ {
+ v->attributes |= var->attributes;
+ if (v->context == 0)
+ v->attributes &= ~(att_tempvar|att_propagate);
+ /* XXX - set att_propagate here if v->context > 0? */
+ }
+ }
+ else if (tempvar_p (var) && propagate_p (var))
{
/* 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
@@ -5201,16 +5274,6 @@ push_posix_tempvar_internal (var, isbltin)
/* XXX - should we set v->context here? */
if (v)
v->context = shell_variables->scope;
-#if defined (ARRAY_VARS)
- if (v && (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
@@ -5221,6 +5284,17 @@ push_posix_tempvar_internal (var, isbltin)
else
stupidly_hack_special_variables (var->name); /* XXX */
+#if defined (ARRAY_VARS)
+ if (v && (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
+
dispose_variable (var);
}
@@ -5383,6 +5457,7 @@ pop_scope (is_special)
struct saved_dollar_vars {
char **first_ten;
WORD_LIST *rest;
+ int count;
};
static struct saved_dollar_vars *dollar_arg_stack = (struct saved_dollar_vars *)NULL;
@@ -5438,6 +5513,17 @@ free_saved_dollar_vars (args)
FREE (args[i]);
}
+/* Do what remember_args (xxx, 1) would have done. */
+void
+clear_dollar_vars ()
+{
+ free_dollar_vars ();
+ dispose_words (rest_of_args);
+
+ rest_of_args = (WORD_LIST *)NULL;
+ posparam_count = 0;
+}
+
/* XXX - should always be followed by remember_args () */
void
push_context (name, is_subshell, tempvars)
@@ -5473,10 +5559,12 @@ push_dollar_vars ()
xrealloc (dollar_arg_stack, (dollar_arg_stack_slots += 10)
* sizeof (struct saved_dollar_vars));
}
-
+
+ dollar_arg_stack[dollar_arg_stack_index].count = posparam_count;
dollar_arg_stack[dollar_arg_stack_index].first_ten = save_dollar_vars ();
dollar_arg_stack[dollar_arg_stack_index++].rest = rest_of_args;
rest_of_args = (WORD_LIST *)NULL;
+ posparam_count = 0;
dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;
dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;
@@ -5489,17 +5577,18 @@ pop_dollar_vars ()
if (dollar_arg_stack == 0 || dollar_arg_stack_index == 0)
return;
- /* Do what remember_args (xxx, 1) would have done. */
- free_dollar_vars ();
- dispose_words (rest_of_args);
-
+ /* Wipe out current values */
+ clear_dollar_vars ();
+
rest_of_args = dollar_arg_stack[--dollar_arg_stack_index].rest;
restore_dollar_vars (dollar_arg_stack[dollar_arg_stack_index].first_ten);
free (dollar_arg_stack[dollar_arg_stack_index].first_ten);
+ posparam_count = dollar_arg_stack[dollar_arg_stack_index].count;
dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;
dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;
-
+ dollar_arg_stack[dollar_arg_stack_index].count = 0;
+
set_dollar_vars_unchanged ();
invalidate_cached_quoted_dollar_at ();
}
@@ -5516,6 +5605,7 @@ dispose_saved_dollar_vars ()
dollar_arg_stack[dollar_arg_stack_index].first_ten = (char **)NULL;
dollar_arg_stack[dollar_arg_stack_index].rest = (WORD_LIST *)NULL;
+ dollar_arg_stack[dollar_arg_stack_index].count = 0;
}
/* Initialize BASH_ARGV and BASH_ARGC after turning on extdebug after the
@@ -6048,8 +6138,19 @@ void
sv_tz (name)
char *name;
{
- if (chkexport (name))
- tzset ();
+ SHELL_VAR *v;
+
+ v = find_variable (name);
+ if (v && exported_p (v))
+ array_needs_making = 1;
+ else if (v == 0)
+ array_needs_making = 1;
+
+ if (array_needs_making)
+ {
+ maybe_make_export_env ();
+ tzset ();
+ }
}
#endif
@@ -6142,7 +6243,7 @@ sv_locale (name)
#if 1
if (r == 0 && posixly_correct)
- last_command_exit_value = 1;
+ set_exit_status (EXECUTION_FAILURE);
#endif
}
diff --git a/variables.h b/variables.h
index 2f6e3546..c73eb4e5 100644
--- a/variables.h
+++ b/variables.h
@@ -1,6 +1,6 @@
/* variables.h -- data structures for shell variables. */
-/* Copyright (C) 1987-2018 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -61,8 +61,8 @@ typedef struct var_context {
/* What a shell variable looks like. */
-typedef struct variable *sh_var_value_func_t __P((struct variable *));
-typedef struct variable *sh_var_assign_func_t __P((struct variable *, char *, arrayind_t, char *));
+typedef struct variable *sh_var_value_func_t PARAMS((struct variable *));
+typedef struct variable *sh_var_assign_func_t PARAMS((struct variable *, char *, arrayind_t, char *));
/* For the future */
union _value {
@@ -162,7 +162,7 @@ typedef struct _vlist {
/* Variable names: lvalues */
#define name_cell(var) ((var)->name)
-/* Acessing variable values: rvalues */
+/* Accessing variable values: rvalues */
#define value_cell(var) ((var)->value)
#define function_cell(var) (COMMAND *)((var)->value)
#define array_cell(var) (ARRAY *)((var)->value)
@@ -221,15 +221,17 @@ typedef struct _vlist {
#define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0')
-/* Flag values for make_local_variable */
-#define MKLOC_INHERIT 0x01
+/* Flag values for make_local_variable and its array counterparts */
+#define MKLOC_ASSOCOK 0x01
+#define MKLOC_ARRAYOK 0x02
+#define MKLOC_INHERIT 0x04
/* 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 *));
+typedef int sh_var_map_func_t PARAMS((SHELL_VAR *));
/* Where we keep the variables and functions */
extern VAR_CONTEXT *global_variables;
@@ -248,204 +250,209 @@ extern int shell_level;
/* XXX */
extern WORD_LIST *rest_of_args;
+extern int posparam_count;
extern pid_t dollar_dollar_pid;
-extern void initialize_shell_variables __P((char **, int));
-
-extern int validate_inherited_value __P((SHELL_VAR *, int));
-
-extern SHELL_VAR *set_if_not __P((char *, char *));
-
-extern void sh_set_lines_and_columns __P((int, int));
-extern void set_pwd __P((void));
-extern void set_ppid __P((void));
-extern void make_funcname_visible __P((int));
-
-extern SHELL_VAR *var_lookup __P((const char *, VAR_CONTEXT *));
-
-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 *, 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_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 char *nameref_transform_name __P((char *, int));
-extern SHELL_VAR *copy_variable __P((SHELL_VAR *));
-extern SHELL_VAR *make_local_variable __P((const char *, int));
-extern SHELL_VAR *bind_variable __P((const char *, char *, int));
-extern SHELL_VAR *bind_global_variable __P((const char *, char *, int));
-extern SHELL_VAR *bind_function __P((const char *, COMMAND *));
-
-extern void bind_function_def __P((const char *, FUNCTION_DEF *, int));
-
-extern SHELL_VAR **map_over __P((sh_var_map_func_t *, VAR_CONTEXT *));
-SHELL_VAR **map_over_funcs __P((sh_var_map_func_t *));
+extern int localvar_inherit; /* declared in variables.c */
+
+extern void initialize_shell_variables PARAMS((char **, int));
+
+extern int validate_inherited_value PARAMS((SHELL_VAR *, int));
+
+extern SHELL_VAR *set_if_not PARAMS((char *, char *));
+
+extern void sh_set_lines_and_columns PARAMS((int, int));
+extern void set_pwd PARAMS((void));
+extern void set_ppid PARAMS((void));
+extern void make_funcname_visible PARAMS((int));
+
+extern SHELL_VAR *var_lookup PARAMS((const char *, VAR_CONTEXT *));
+
+extern SHELL_VAR *find_function PARAMS((const char *));
+extern FUNCTION_DEF *find_function_def PARAMS((const char *));
+extern SHELL_VAR *find_variable PARAMS((const char *));
+extern SHELL_VAR *find_variable_noref PARAMS((const char *));
+extern SHELL_VAR *find_variable_last_nameref PARAMS((const char *, int));
+extern SHELL_VAR *find_global_variable_last_nameref PARAMS((const char *, int));
+extern SHELL_VAR *find_variable_nameref PARAMS((SHELL_VAR *));
+extern SHELL_VAR *find_variable_nameref_for_create PARAMS((const char *, int));
+extern SHELL_VAR *find_variable_nameref_for_assignment PARAMS((const char *, int));
+/*extern SHELL_VAR *find_variable_internal PARAMS((const char *, int));*/
+extern SHELL_VAR *find_variable_tempenv PARAMS((const char *));
+extern SHELL_VAR *find_variable_notempenv PARAMS((const char *));
+extern SHELL_VAR *find_global_variable PARAMS((const char *));
+extern SHELL_VAR *find_global_variable_noref PARAMS((const char *));
+extern SHELL_VAR *find_shell_variable PARAMS((const char *));
+extern SHELL_VAR *find_tempenv_variable PARAMS((const char *));
+extern SHELL_VAR *find_variable_no_invisible PARAMS((const char *));
+extern SHELL_VAR *find_variable_for_assignment PARAMS((const char *));
+extern char *nameref_transform_name PARAMS((char *, int));
+extern SHELL_VAR *copy_variable PARAMS((SHELL_VAR *));
+extern SHELL_VAR *make_local_variable PARAMS((const char *, int));
+extern SHELL_VAR *bind_variable PARAMS((const char *, char *, int));
+extern SHELL_VAR *bind_global_variable PARAMS((const char *, char *, int));
+extern SHELL_VAR *bind_function PARAMS((const char *, COMMAND *));
+
+extern void bind_function_def PARAMS((const char *, FUNCTION_DEF *, int));
+
+extern SHELL_VAR **map_over PARAMS((sh_var_map_func_t *, VAR_CONTEXT *));
+SHELL_VAR **map_over_funcs PARAMS((sh_var_map_func_t *));
-extern SHELL_VAR **all_shell_variables __P((void));
-extern SHELL_VAR **all_shell_functions __P((void));
-extern SHELL_VAR **all_visible_variables __P((void));
-extern SHELL_VAR **all_visible_functions __P((void));
-extern SHELL_VAR **all_exported_variables __P((void));
-extern SHELL_VAR **local_exported_variables __P((void));
-extern SHELL_VAR **all_local_variables __P((void));
+extern SHELL_VAR **all_shell_variables PARAMS((void));
+extern SHELL_VAR **all_shell_functions PARAMS((void));
+extern SHELL_VAR **all_visible_variables PARAMS((void));
+extern SHELL_VAR **all_visible_functions PARAMS((void));
+extern SHELL_VAR **all_exported_variables PARAMS((void));
+extern SHELL_VAR **local_exported_variables PARAMS((void));
+extern SHELL_VAR **all_local_variables PARAMS((int));
#if defined (ARRAY_VARS)
-extern SHELL_VAR **all_array_variables __P((void));
+extern SHELL_VAR **all_array_variables PARAMS((void));
#endif
-extern char **all_variables_matching_prefix __P((const char *));
-
-extern char **make_var_array __P((HASH_TABLE *));
-extern char **add_or_supercede_exported_var __P((char *, int));
-
-extern char *get_variable_value __P((SHELL_VAR *));
-extern char *get_string_value __P((const char *));
-extern char *sh_get_env_value __P((const char *));
-extern char *make_variable_value __P((SHELL_VAR *, char *, int));
-
-extern SHELL_VAR *bind_variable_value __P((SHELL_VAR *, char *, int));
-extern SHELL_VAR *bind_int_variable __P((char *, char *, int));
-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 *));
-extern int makunbound __P((const char *, VAR_CONTEXT *));
-extern int kill_local_variable __P((const char *));
-extern void delete_all_variables __P((HASH_TABLE *));
-extern void delete_all_contexts __P((VAR_CONTEXT *));
-
-extern VAR_CONTEXT *new_var_context __P((char *, int));
-extern void dispose_var_context __P((VAR_CONTEXT *));
-extern VAR_CONTEXT *push_var_context __P((char *, int, HASH_TABLE *));
-extern void pop_var_context __P((void));
-extern VAR_CONTEXT *push_scope __P((int, HASH_TABLE *));
-extern void pop_scope __P((int));
-
-extern void push_context __P((char *, int, HASH_TABLE *));
-extern void pop_context __P((void));
-extern void push_dollar_vars __P((void));
-extern void pop_dollar_vars __P((void));
-extern void dispose_saved_dollar_vars __P((void));
-
-extern void init_bash_argv __P((void));
-extern void save_bash_argv __P((void));
-extern void push_args __P((WORD_LIST *));
-extern void pop_args __P((void));
-
-extern void adjust_shell_level __P((int));
-extern void non_unsettable __P((char *));
-extern void dispose_variable __P((SHELL_VAR *));
-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));
-
-extern void set_var_read_only __P((char *));
-extern void set_func_read_only __P((const char *));
-extern void set_var_auto_export __P((char *));
-extern void set_func_auto_export __P((const char *));
-
-extern void sort_variables __P((SHELL_VAR **));
-
-extern int chkexport __P((char *));
-extern void maybe_make_export_env __P((void));
-extern void update_export_env_inplace __P((char *, int, char *));
-extern void put_command_name_into_env __P((char *));
-extern void put_gnu_argv_flags_into_env __P((intmax_t, char *));
-
-extern void print_var_list __P((SHELL_VAR **));
-extern void print_func_list __P((SHELL_VAR **));
-extern void print_assignment __P((SHELL_VAR *));
-extern void print_var_value __P((SHELL_VAR *, int));
-extern void print_var_function __P((SHELL_VAR *));
+extern char **all_variables_matching_prefix PARAMS((const char *));
+
+extern char **make_var_array PARAMS((HASH_TABLE *));
+extern char **add_or_supercede_exported_var PARAMS((char *, int));
+
+extern char *get_variable_value PARAMS((SHELL_VAR *));
+extern char *get_string_value PARAMS((const char *));
+extern char *sh_get_env_value PARAMS((const char *));
+extern char *make_variable_value PARAMS((SHELL_VAR *, char *, int));
+
+extern SHELL_VAR *bind_variable_value PARAMS((SHELL_VAR *, char *, int));
+extern SHELL_VAR *bind_int_variable PARAMS((char *, char *, int));
+extern SHELL_VAR *bind_var_to_int PARAMS((char *, intmax_t));
+
+extern int assign_in_env PARAMS((WORD_DESC *, int));
+
+extern int unbind_variable PARAMS((const char *));
+extern int check_unbind_variable PARAMS((const char *));
+extern int unbind_nameref PARAMS((const char *));
+extern int unbind_variable_noref PARAMS((const char *));
+extern int unbind_func PARAMS((const char *));
+extern int unbind_function_def PARAMS((const char *));
+extern int delete_var PARAMS((const char *, VAR_CONTEXT *));
+extern int makunbound PARAMS((const char *, VAR_CONTEXT *));
+extern int kill_local_variable PARAMS((const char *));
+extern void delete_all_variables PARAMS((HASH_TABLE *));
+extern void delete_all_contexts PARAMS((VAR_CONTEXT *));
+
+extern VAR_CONTEXT *new_var_context PARAMS((char *, int));
+extern void dispose_var_context PARAMS((VAR_CONTEXT *));
+extern VAR_CONTEXT *push_var_context PARAMS((char *, int, HASH_TABLE *));
+extern void pop_var_context PARAMS((void));
+extern VAR_CONTEXT *push_scope PARAMS((int, HASH_TABLE *));
+extern void pop_scope PARAMS((int));
+
+extern void clear_dollar_vars PARAMS((void));
+
+extern void push_context PARAMS((char *, int, HASH_TABLE *));
+extern void pop_context PARAMS((void));
+extern void push_dollar_vars PARAMS((void));
+extern void pop_dollar_vars PARAMS((void));
+extern void dispose_saved_dollar_vars PARAMS((void));
+
+extern void init_bash_argv PARAMS((void));
+extern void save_bash_argv PARAMS((void));
+extern void push_args PARAMS((WORD_LIST *));
+extern void pop_args PARAMS((void));
+
+extern void adjust_shell_level PARAMS((int));
+extern void non_unsettable PARAMS((char *));
+extern void dispose_variable PARAMS((SHELL_VAR *));
+extern void dispose_used_env_vars PARAMS((void));
+extern void dispose_function_env PARAMS((void));
+extern void dispose_builtin_env PARAMS((void));
+extern void merge_temporary_env PARAMS((void));
+extern void flush_temporary_env PARAMS((void));
+extern void merge_builtin_env PARAMS((void));
+extern void kill_all_local_variables PARAMS((void));
+
+extern void set_var_read_only PARAMS((char *));
+extern void set_func_read_only PARAMS((const char *));
+extern void set_var_auto_export PARAMS((char *));
+extern void set_func_auto_export PARAMS((const char *));
+
+extern void sort_variables PARAMS((SHELL_VAR **));
+
+extern int chkexport PARAMS((char *));
+extern void maybe_make_export_env PARAMS((void));
+extern void update_export_env_inplace PARAMS((char *, int, char *));
+extern void put_command_name_into_env PARAMS((char *));
+extern void put_gnu_argv_flags_into_env PARAMS((intmax_t, char *));
+
+extern void print_var_list PARAMS((SHELL_VAR **));
+extern void print_func_list PARAMS((SHELL_VAR **));
+extern void print_assignment PARAMS((SHELL_VAR *));
+extern void print_var_value PARAMS((SHELL_VAR *, int));
+extern void print_var_function PARAMS((SHELL_VAR *));
#if defined (ARRAY_VARS)
-extern SHELL_VAR *make_new_array_variable __P((char *));
-extern SHELL_VAR *make_local_array_variable __P((char *, int));
+extern SHELL_VAR *make_new_array_variable PARAMS((char *));
+extern SHELL_VAR *make_local_array_variable PARAMS((char *, int));
-extern SHELL_VAR *make_new_assoc_variable __P((char *));
-extern SHELL_VAR *make_local_assoc_variable __P((char *, int));
+extern SHELL_VAR *make_new_assoc_variable PARAMS((char *));
+extern SHELL_VAR *make_local_assoc_variable PARAMS((char *, int));
-extern void set_pipestatus_array __P((int *, int));
-extern ARRAY *save_pipestatus_array __P((void));
-extern void restore_pipestatus_array __P((ARRAY *));
+extern void set_pipestatus_array PARAMS((int *, int));
+extern ARRAY *save_pipestatus_array PARAMS((void));
+extern void restore_pipestatus_array PARAMS((ARRAY *));
#endif
-extern void set_pipestatus_from_exit __P((int));
+extern void set_pipestatus_from_exit PARAMS((int));
/* The variable in NAME has just had its state changed. Check to see if it
is one of the special ones where something special happens. */
-extern void stupidly_hack_special_variables __P((char *));
+extern void stupidly_hack_special_variables PARAMS((char *));
/* Reinitialize some special variables that have external effects upon unset
when the shell reinitializes itself. */
-extern void reinit_special_variables __P((void));
+extern void reinit_special_variables PARAMS((void));
-extern int get_random_number __P((void));
+extern int get_random_number PARAMS((void));
/* The `special variable' functions that get called when a particular
variable is set. */
-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 *));
-extern void sv_optind __P((char *));
-extern void sv_opterr __P((char *));
-extern void sv_locale __P((char *));
-extern void sv_xtracefd __P((char *));
-extern void sv_shcompat __P((char *));
+extern void sv_ifs PARAMS((char *));
+extern void sv_path PARAMS((char *));
+extern void sv_mail PARAMS((char *));
+extern void sv_funcnest PARAMS((char *));
+extern void sv_execignore PARAMS((char *));
+extern void sv_globignore PARAMS((char *));
+extern void sv_ignoreeof PARAMS((char *));
+extern void sv_strict_posix PARAMS((char *));
+extern void sv_optind PARAMS((char *));
+extern void sv_opterr PARAMS((char *));
+extern void sv_locale PARAMS((char *));
+extern void sv_xtracefd PARAMS((char *));
+extern void sv_shcompat PARAMS((char *));
#if defined (READLINE)
-extern void sv_comp_wordbreaks __P((char *));
-extern void sv_terminal __P((char *));
-extern void sv_hostfile __P((char *));
-extern void sv_winsize __P((char *));
+extern void sv_comp_wordbreaks PARAMS((char *));
+extern void sv_terminal PARAMS((char *));
+extern void sv_hostfile PARAMS((char *));
+extern void sv_winsize PARAMS((char *));
#endif
#if defined (__CYGWIN__)
-extern void sv_home __P((char *));
+extern void sv_home PARAMS((char *));
#endif
#if defined (HISTORY)
-extern void sv_histsize __P((char *));
-extern void sv_histignore __P((char *));
-extern void sv_history_control __P((char *));
+extern void sv_histsize PARAMS((char *));
+extern void sv_histignore PARAMS((char *));
+extern void sv_history_control PARAMS((char *));
# if defined (BANG_HISTORY)
-extern void sv_histchars __P((char *));
+extern void sv_histchars PARAMS((char *));
# endif
-extern void sv_histtimefmt __P((char *));
+extern void sv_histtimefmt PARAMS((char *));
#endif /* HISTORY */
#if defined (HAVE_TZSET)
-extern void sv_tz __P((char *));
+extern void sv_tz PARAMS((char *));
#endif
#if defined (JOB_CONTROL)
-extern void sv_childmax __P((char *));
+extern void sv_childmax PARAMS((char *));
#endif
#endif /* !_VARIABLES_H_ */
diff --git a/version.c b/version.c
index d9280f03..8c1568ae 100644
--- a/version.c
+++ b/version.c
@@ -1,6 +1,6 @@
/* version.c -- distribution and version numbers. */
-/* Copyright (C) 1989-2019 Free Software Foundation, Inc.
+/* Copyright (C) 1989-2020 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) 2019 Free Software Foundation, Inc.");
+const char * const bash_copyright = N_("Copyright (C) 2020 Free Software Foundation, Inc.");
const char * const bash_license = N_("License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>\n");
/* If == 31, shell compatible with bash-3.1, == 32 with bash-3.2, and so on */
@@ -52,8 +52,8 @@ int shell_compatibility_level = DEFAULT_COMPAT_LEVEL;
/* Functions for getting, setting, and displaying the shell version. */
/* Forward declarations so we don't have to include externs.h */
-extern char *shell_version_string __P((void));
-extern void show_shell_version __P((int));
+extern char *shell_version_string PARAMS((void));
+extern void show_shell_version PARAMS((int));
/* Give version information about this shell. */
char *
diff --git a/xmalloc.c b/xmalloc.c
index ca297dcf..1b3b4088 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -47,11 +47,11 @@
# endif /* !__STDC__ */
#endif /* !PTR_T */
-#if defined (HAVE_SBRK) && !HAVE_DECL_SBRK
+#if HAVE_SBRK && !HAVE_DECL_SBRK
extern char *sbrk();
#endif
-#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC)
+#if HAVE_SBRK && defined (USING_BASH_MALLOC)
static PTR_T lbreak;
static int brkfound;
static size_t allocated;
@@ -63,7 +63,7 @@ static size_t allocated;
/* */
/* **************************************************************** */
-#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC)
+#if HAVE_SBRK && defined (USING_BASH_MALLOC)
#define FINDBRK() \
do { \
if (brkfound == 0) \
@@ -88,7 +88,7 @@ allocerr (func, bytes)
const char *func;
size_t bytes;
{
-#if defined (HAVE_SBRK) && defined (USING_BASH_MALLOC)
+#if 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
@@ -160,7 +160,7 @@ sh_allocerr (func, bytes, file, line)
char *file;
int line;
{
-#if defined (HAVE_SBRK)
+#if HAVE_SBRK
allocated = findbrk ();
fatal_error (_("%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)"), func, file, line, (unsigned long)bytes, (unsigned long)allocated);
#else
diff --git a/xmalloc.h b/xmalloc.h
index bea71fdd..55d2e3d0 100644
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -1,6 +1,6 @@
/* xmalloc.h -- defines for the `x' memory allocation functions */
-/* Copyright (C) 2001-2009 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -36,14 +36,14 @@
#endif /* PTR_T */
/* Allocation functions in xmalloc.c */
-extern PTR_T xmalloc __P((size_t));
-extern PTR_T xrealloc __P((void *, size_t));
-extern void xfree __P((void *));
+extern PTR_T xmalloc PARAMS((size_t));
+extern PTR_T xrealloc PARAMS((void *, size_t));
+extern void xfree PARAMS((void *));
#if defined(USING_BASH_MALLOC) && !defined (DISABLE_MALLOC_WRAPPERS)
-extern PTR_T sh_xmalloc __P((size_t, const char *, int));
-extern PTR_T sh_xrealloc __P((void *, size_t, const char *, int));
-extern void sh_xfree __P((void *, const char *, int));
+extern PTR_T sh_xmalloc PARAMS((size_t, const char *, int));
+extern PTR_T sh_xrealloc PARAMS((void *, size_t, const char *, int));
+extern void sh_xfree PARAMS((void *, const char *, int));
#define xmalloc(x) sh_xmalloc((x), __FILE__, __LINE__)
#define xrealloc(x, n) sh_xrealloc((x), (n), __FILE__, __LINE__)
@@ -53,6 +53,14 @@ extern void sh_xfree __P((void *, const char *, int));
#undef free
#endif
#define free(x) sh_xfree((x), __FILE__, __LINE__)
+
+extern PTR_T sh_malloc PARAMS((size_t, const char *, int));
+
+#ifdef malloc
+#undef malloc
+#endif
+#define malloc(x) sh_malloc((x), __FILE__, __LINE__)
+
#endif /* USING_BASH_MALLOC */
#endif /* _XMALLOC_H_ */
diff --git a/y.tab.c b/y.tab.c
index 7efce3c8..dcc5b7f3 100644
--- a/y.tab.c
+++ b/y.tab.c
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.6.4. */
/* Bison implementation for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -33,6 +34,10 @@
/* C LALR(1) parser skeleton written by Richard Stallman, by
simplifying the original so-called "semantic" parser. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
/* All symbols defined below should begin with yy or YY, to avoid
infringing on user name space. This should be done even for local
variables, as they might otherwise be expanded by user macros.
@@ -44,7 +49,7 @@
#define YYBISON 1
/* Bison version. */
-#define YYBISON_VERSION "3.0.5"
+#define YYBISON_VERSION "3.6.4"
/* Skeleton name. */
#define YYSKELETON_NAME "yacc.c"
@@ -61,8 +66,8 @@
-/* Copy the first part of user declarations. */
-#line 21 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:339 */
+/* First part of user prologue. */
+#line 21 "/Users/chet/src/bash/src/parse.y"
#include "config.h"
@@ -116,7 +121,7 @@
#if defined (JOB_CONTROL)
# include "jobs.h"
#else
-extern int cleanup_dead_jobs __P((void));
+extern int cleanup_dead_jobs PARAMS((void));
#endif /* JOB_CONTROL */
#if defined (ALIAS)
@@ -176,90 +181,90 @@ extern int errno;
/* **************************************************************** */
#ifdef DEBUG
-static void debug_parser __P((int));
+static void debug_parser PARAMS((int));
#endif
-static int yy_getc __P((void));
-static int yy_ungetc __P((int));
+static int yy_getc PARAMS((void));
+static int yy_ungetc PARAMS((int));
#if defined (READLINE)
-static int yy_readline_get __P((void));
-static int yy_readline_unget __P((int));
+static int yy_readline_get PARAMS((void));
+static int yy_readline_unget PARAMS((int));
#endif
-static int yy_string_get __P((void));
-static int yy_string_unget __P((int));
-static void rewind_input_string __P((void));
-static int yy_stream_get __P((void));
-static int yy_stream_unget __P((int));
+static int yy_string_get PARAMS((void));
+static int yy_string_unget PARAMS((int));
+static void rewind_input_string PARAMS((void));
+static int yy_stream_get PARAMS((void));
+static int yy_stream_unget PARAMS((int));
-static int shell_getc __P((int));
-static void shell_ungetc __P((int));
-static void discard_until __P((int));
+static int shell_getc PARAMS((int));
+static void shell_ungetc PARAMS((int));
+static void discard_until PARAMS((int));
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
-static void push_string __P((char *, int, alias_t *));
-static void pop_string __P((void));
-static void free_string_list __P((void));
+static void push_string PARAMS((char *, int, alias_t *));
+static void pop_string PARAMS((void));
+static void free_string_list PARAMS((void));
#endif
-static char *read_a_line __P((int));
+static char *read_a_line PARAMS((int));
-static int reserved_word_acceptable __P((int));
-static int yylex __P((void));
+static int reserved_word_acceptable PARAMS((int));
+static int yylex PARAMS((void));
-static void push_heredoc __P((REDIRECT *));
-static char *mk_alexpansion __P((char *));
-static int alias_expand_token __P((char *));
-static int time_command_acceptable __P((void));
-static int special_case_tokens __P((char *));
-static int read_token __P((int));
-static char *parse_matched_pair __P((int, int, int, int *, int));
-static char *parse_comsub __P((int, int, int, int *, int));
+static void push_heredoc PARAMS((REDIRECT *));
+static char *mk_alexpansion PARAMS((char *));
+static int alias_expand_token PARAMS((char *));
+static int time_command_acceptable PARAMS((void));
+static int special_case_tokens PARAMS((char *));
+static int read_token PARAMS((int));
+static char *parse_matched_pair PARAMS((int, int, int, int *, int));
+static char *parse_comsub PARAMS((int, int, int, int *, int));
#if defined (ARRAY_VARS)
-static char *parse_compound_assignment __P((int *));
+static char *parse_compound_assignment PARAMS((int *));
#endif
#if defined (DPAREN_ARITHMETIC) || defined (ARITH_FOR_COMMAND)
-static int parse_dparen __P((int));
-static int parse_arith_cmd __P((char **, int));
+static int parse_dparen PARAMS((int));
+static int parse_arith_cmd PARAMS((char **, int));
#endif
#if defined (COND_COMMAND)
-static void cond_error __P((void));
-static COND_COM *cond_expr __P((void));
-static COND_COM *cond_or __P((void));
-static COND_COM *cond_and __P((void));
-static COND_COM *cond_term __P((void));
-static int cond_skip_newlines __P((void));
-static COMMAND *parse_cond_command __P((void));
+static void cond_error PARAMS((void));
+static COND_COM *cond_expr PARAMS((void));
+static COND_COM *cond_or PARAMS((void));
+static COND_COM *cond_and PARAMS((void));
+static COND_COM *cond_term PARAMS((void));
+static int cond_skip_newlines PARAMS((void));
+static COMMAND *parse_cond_command PARAMS((void));
#endif
#if defined (ARRAY_VARS)
-static int token_is_assignment __P((char *, int));
-static int token_is_ident __P((char *, int));
+static int token_is_assignment PARAMS((char *, int));
+static int token_is_ident PARAMS((char *, int));
#endif
-static int read_token_word __P((int));
-static void discard_parser_constructs __P((int));
+static int read_token_word PARAMS((int));
+static void discard_parser_constructs PARAMS((int));
-static char *error_token_from_token __P((int));
-static char *error_token_from_text __P((void));
-static void print_offending_line __P((void));
-static void report_syntax_error __P((char *));
+static char *error_token_from_token PARAMS((int));
+static char *error_token_from_text PARAMS((void));
+static void print_offending_line PARAMS((void));
+static void report_syntax_error PARAMS((char *));
-static void handle_eof_input_unit __P((void));
-static void prompt_again __P((void));
+static void handle_eof_input_unit PARAMS((void));
+static void prompt_again PARAMS((void));
#if 0
-static void reset_readline_prompt __P((void));
+static void reset_readline_prompt PARAMS((void));
#endif
-static void print_prompt __P((void));
+static void print_prompt PARAMS((void));
#if defined (HANDLE_MULTIBYTE)
-static void set_line_mbstate __P((void));
+static void set_line_mbstate PARAMS((void));
static char *shell_input_line_property = NULL;
static size_t shell_input_line_propsize = 0;
#else
# define set_line_mbstate()
#endif
-extern int yyerror __P((const char *));
+extern int yyerror PARAMS((const char *));
#ifdef DEBUG
extern int yydebug;
@@ -369,26 +374,31 @@ static REDIRECTEE redir;
static FILE *yyoutstream;
static FILE *yyerrstream;
-#line 373 "y.tab.c" /* yacc.c:339 */
+#line 378 "y.tab.c"
+# ifndef YY_CAST
+# ifdef __cplusplus
+# define YY_CAST(Type, Val) static_cast<Type> (Val)
+# define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
+# else
+# define YY_CAST(Type, Val) ((Type) (Val))
+# define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
+# endif
+# endif
# ifndef YY_NULLPTR
-# if defined __cplusplus && 201103L <= __cplusplus
-# define YY_NULLPTR nullptr
+# if defined __cplusplus
+# if 201103L <= __cplusplus
+# define YY_NULLPTR nullptr
+# else
+# define YY_NULLPTR 0
+# endif
# else
-# define YY_NULLPTR 0
+# define YY_NULLPTR ((void*)0)
# endif
# endif
-/* Enabling verbose error messages. */
-#ifdef YYERROR_VERBOSE
-# undef YYERROR_VERBOSE
-# define YYERROR_VERBOSE 1
-#else
-# define YYERROR_VERBOSE 0
-#endif
-
-/* In a future release of Bison, this section will be replaced
- by #include "y.tab.h". */
+/* Use api.header.include to #include this header
+ instead of duplicating it here. */
#ifndef YY_YY_Y_TAB_H_INCLUDED
# define YY_YY_Y_TAB_H_INCLUDED
/* Debug traces. */
@@ -399,61 +409,69 @@ static FILE *yyerrstream;
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#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
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ IF = 258, /* IF */
+ THEN = 259, /* THEN */
+ ELSE = 260, /* ELSE */
+ ELIF = 261, /* ELIF */
+ FI = 262, /* FI */
+ CASE = 263, /* CASE */
+ ESAC = 264, /* ESAC */
+ FOR = 265, /* FOR */
+ SELECT = 266, /* SELECT */
+ WHILE = 267, /* WHILE */
+ UNTIL = 268, /* UNTIL */
+ DO = 269, /* DO */
+ DONE = 270, /* DONE */
+ FUNCTION = 271, /* FUNCTION */
+ COPROC = 272, /* COPROC */
+ COND_START = 273, /* COND_START */
+ COND_END = 274, /* COND_END */
+ COND_ERROR = 275, /* COND_ERROR */
+ IN = 276, /* IN */
+ BANG = 277, /* BANG */
+ TIME = 278, /* TIME */
+ TIMEOPT = 279, /* TIMEOPT */
+ TIMEIGN = 280, /* TIMEIGN */
+ WORD = 281, /* WORD */
+ ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */
+ REDIR_WORD = 283, /* REDIR_WORD */
+ NUMBER = 284, /* NUMBER */
+ ARITH_CMD = 285, /* ARITH_CMD */
+ ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */
+ COND_CMD = 287, /* COND_CMD */
+ AND_AND = 288, /* AND_AND */
+ OR_OR = 289, /* OR_OR */
+ GREATER_GREATER = 290, /* GREATER_GREATER */
+ LESS_LESS = 291, /* LESS_LESS */
+ LESS_AND = 292, /* LESS_AND */
+ LESS_LESS_LESS = 293, /* LESS_LESS_LESS */
+ GREATER_AND = 294, /* GREATER_AND */
+ SEMI_SEMI = 295, /* SEMI_SEMI */
+ SEMI_AND = 296, /* SEMI_AND */
+ SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */
+ LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */
+ AND_GREATER = 299, /* AND_GREATER */
+ AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */
+ LESS_GREATER = 301, /* LESS_GREATER */
+ GREATER_BAR = 302, /* GREATER_BAR */
+ BAR_AND = 303, /* BAR_AND */
+ yacc_EOF = 304 /* yacc_EOF */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define IF 258
#define THEN 259
#define ELSE 260
@@ -504,10 +522,9 @@ extern int yydebug;
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:355 */
+#line 328 "/Users/chet/src/bash/src/parse.y"
WORD_DESC *word; /* the word that we read. */
int number; /* the number that we read. */
@@ -517,9 +534,9 @@ union YYSTYPE
ELEMENT element;
PATTERN_LIST *pattern;
-#line 521 "y.tab.c" /* yacc.c:355 */
-};
+#line 538 "y.tab.c"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1
@@ -531,37 +548,188 @@ extern YYSTYPE yylval;
int yyparse (void);
#endif /* !YY_YY_Y_TAB_H_INCLUDED */
+/* Symbol kind. */
+enum yysymbol_kind_t
+{
+ YYSYMBOL_YYEMPTY = -2,
+ YYSYMBOL_YYEOF = 0, /* "end of file" */
+ YYSYMBOL_YYerror = 1, /* error */
+ YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
+ YYSYMBOL_IF = 3, /* IF */
+ YYSYMBOL_THEN = 4, /* THEN */
+ YYSYMBOL_ELSE = 5, /* ELSE */
+ YYSYMBOL_ELIF = 6, /* ELIF */
+ YYSYMBOL_FI = 7, /* FI */
+ YYSYMBOL_CASE = 8, /* CASE */
+ YYSYMBOL_ESAC = 9, /* ESAC */
+ YYSYMBOL_FOR = 10, /* FOR */
+ YYSYMBOL_SELECT = 11, /* SELECT */
+ YYSYMBOL_WHILE = 12, /* WHILE */
+ YYSYMBOL_UNTIL = 13, /* UNTIL */
+ YYSYMBOL_DO = 14, /* DO */
+ YYSYMBOL_DONE = 15, /* DONE */
+ YYSYMBOL_FUNCTION = 16, /* FUNCTION */
+ YYSYMBOL_COPROC = 17, /* COPROC */
+ YYSYMBOL_COND_START = 18, /* COND_START */
+ YYSYMBOL_COND_END = 19, /* COND_END */
+ YYSYMBOL_COND_ERROR = 20, /* COND_ERROR */
+ YYSYMBOL_IN = 21, /* IN */
+ YYSYMBOL_BANG = 22, /* BANG */
+ YYSYMBOL_TIME = 23, /* TIME */
+ YYSYMBOL_TIMEOPT = 24, /* TIMEOPT */
+ YYSYMBOL_TIMEIGN = 25, /* TIMEIGN */
+ YYSYMBOL_WORD = 26, /* WORD */
+ YYSYMBOL_ASSIGNMENT_WORD = 27, /* ASSIGNMENT_WORD */
+ YYSYMBOL_REDIR_WORD = 28, /* REDIR_WORD */
+ YYSYMBOL_NUMBER = 29, /* NUMBER */
+ YYSYMBOL_ARITH_CMD = 30, /* ARITH_CMD */
+ YYSYMBOL_ARITH_FOR_EXPRS = 31, /* ARITH_FOR_EXPRS */
+ YYSYMBOL_COND_CMD = 32, /* COND_CMD */
+ YYSYMBOL_AND_AND = 33, /* AND_AND */
+ YYSYMBOL_OR_OR = 34, /* OR_OR */
+ YYSYMBOL_GREATER_GREATER = 35, /* GREATER_GREATER */
+ YYSYMBOL_LESS_LESS = 36, /* LESS_LESS */
+ YYSYMBOL_LESS_AND = 37, /* LESS_AND */
+ YYSYMBOL_LESS_LESS_LESS = 38, /* LESS_LESS_LESS */
+ YYSYMBOL_GREATER_AND = 39, /* GREATER_AND */
+ YYSYMBOL_SEMI_SEMI = 40, /* SEMI_SEMI */
+ YYSYMBOL_SEMI_AND = 41, /* SEMI_AND */
+ YYSYMBOL_SEMI_SEMI_AND = 42, /* SEMI_SEMI_AND */
+ YYSYMBOL_LESS_LESS_MINUS = 43, /* LESS_LESS_MINUS */
+ YYSYMBOL_AND_GREATER = 44, /* AND_GREATER */
+ YYSYMBOL_AND_GREATER_GREATER = 45, /* AND_GREATER_GREATER */
+ YYSYMBOL_LESS_GREATER = 46, /* LESS_GREATER */
+ YYSYMBOL_GREATER_BAR = 47, /* GREATER_BAR */
+ YYSYMBOL_BAR_AND = 48, /* BAR_AND */
+ YYSYMBOL_49_ = 49, /* '&' */
+ YYSYMBOL_50_ = 50, /* ';' */
+ YYSYMBOL_51_n_ = 51, /* '\n' */
+ YYSYMBOL_yacc_EOF = 52, /* yacc_EOF */
+ YYSYMBOL_53_ = 53, /* '|' */
+ YYSYMBOL_54_ = 54, /* '>' */
+ YYSYMBOL_55_ = 55, /* '<' */
+ YYSYMBOL_56_ = 56, /* '-' */
+ YYSYMBOL_57_ = 57, /* '{' */
+ YYSYMBOL_58_ = 58, /* '}' */
+ YYSYMBOL_59_ = 59, /* '(' */
+ YYSYMBOL_60_ = 60, /* ')' */
+ YYSYMBOL_YYACCEPT = 61, /* $accept */
+ YYSYMBOL_inputunit = 62, /* inputunit */
+ YYSYMBOL_word_list = 63, /* word_list */
+ YYSYMBOL_redirection = 64, /* redirection */
+ YYSYMBOL_simple_command_element = 65, /* simple_command_element */
+ YYSYMBOL_redirection_list = 66, /* redirection_list */
+ YYSYMBOL_simple_command = 67, /* simple_command */
+ YYSYMBOL_command = 68, /* command */
+ YYSYMBOL_shell_command = 69, /* shell_command */
+ YYSYMBOL_for_command = 70, /* for_command */
+ YYSYMBOL_arith_for_command = 71, /* arith_for_command */
+ YYSYMBOL_select_command = 72, /* select_command */
+ YYSYMBOL_case_command = 73, /* case_command */
+ YYSYMBOL_function_def = 74, /* function_def */
+ YYSYMBOL_function_body = 75, /* function_body */
+ YYSYMBOL_subshell = 76, /* subshell */
+ YYSYMBOL_coproc = 77, /* coproc */
+ YYSYMBOL_if_command = 78, /* if_command */
+ YYSYMBOL_group_command = 79, /* group_command */
+ YYSYMBOL_arith_command = 80, /* arith_command */
+ YYSYMBOL_cond_command = 81, /* cond_command */
+ YYSYMBOL_elif_clause = 82, /* elif_clause */
+ YYSYMBOL_case_clause = 83, /* case_clause */
+ YYSYMBOL_pattern_list = 84, /* pattern_list */
+ YYSYMBOL_case_clause_sequence = 85, /* case_clause_sequence */
+ YYSYMBOL_pattern = 86, /* pattern */
+ YYSYMBOL_list = 87, /* list */
+ YYSYMBOL_compound_list = 88, /* compound_list */
+ YYSYMBOL_list0 = 89, /* list0 */
+ YYSYMBOL_list1 = 90, /* list1 */
+ YYSYMBOL_simple_list_terminator = 91, /* simple_list_terminator */
+ YYSYMBOL_list_terminator = 92, /* list_terminator */
+ YYSYMBOL_newline_list = 93, /* newline_list */
+ YYSYMBOL_simple_list = 94, /* simple_list */
+ YYSYMBOL_simple_list1 = 95, /* simple_list1 */
+ YYSYMBOL_pipeline_command = 96, /* pipeline_command */
+ YYSYMBOL_pipeline = 97, /* pipeline */
+ YYSYMBOL_timespec = 98 /* timespec */
+};
+typedef enum yysymbol_kind_t yysymbol_kind_t;
+
-/* Copy the second part of user declarations. */
-#line 538 "y.tab.c" /* yacc.c:358 */
#ifdef short
# undef short
#endif
-#ifdef YYTYPE_UINT8
-typedef YYTYPE_UINT8 yytype_uint8;
-#else
-typedef unsigned char yytype_uint8;
+/* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
+ <limits.h> and (if available) <stdint.h> are included
+ so that the code can choose integer types of a good width. */
+
+#ifndef __PTRDIFF_MAX__
+# include <limits.h> /* INFRINGES ON USER NAME SPACE */
+# if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
+# include <stdint.h> /* INFRINGES ON USER NAME SPACE */
+# define YY_STDINT_H
+# endif
#endif
-#ifdef YYTYPE_INT8
-typedef YYTYPE_INT8 yytype_int8;
+/* Narrow types that promote to a signed type and that can represent a
+ signed or unsigned integer of at least N bits. In tables they can
+ save space and decrease cache pressure. Promoting to a signed type
+ helps avoid bugs in integer arithmetic. */
+
+#ifdef __INT_LEAST8_MAX__
+typedef __INT_LEAST8_TYPE__ yytype_int8;
+#elif defined YY_STDINT_H
+typedef int_least8_t yytype_int8;
#else
typedef signed char yytype_int8;
#endif
-#ifdef YYTYPE_UINT16
-typedef YYTYPE_UINT16 yytype_uint16;
+#ifdef __INT_LEAST16_MAX__
+typedef __INT_LEAST16_TYPE__ yytype_int16;
+#elif defined YY_STDINT_H
+typedef int_least16_t yytype_int16;
+#else
+typedef short yytype_int16;
+#endif
+
+#if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST8_TYPE__ yytype_uint8;
+#elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST8_MAX <= INT_MAX)
+typedef uint_least8_t yytype_uint8;
+#elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
+typedef unsigned char yytype_uint8;
#else
-typedef unsigned short int yytype_uint16;
+typedef short yytype_uint8;
#endif
-#ifdef YYTYPE_INT16
-typedef YYTYPE_INT16 yytype_int16;
+#if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
+typedef __UINT_LEAST16_TYPE__ yytype_uint16;
+#elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
+ && UINT_LEAST16_MAX <= INT_MAX)
+typedef uint_least16_t yytype_uint16;
+#elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
+typedef unsigned short yytype_uint16;
#else
-typedef short int yytype_int16;
+typedef int yytype_uint16;
+#endif
+
+#ifndef YYPTRDIFF_T
+# if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
+# define YYPTRDIFF_T __PTRDIFF_TYPE__
+# define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
+# elif defined PTRDIFF_MAX
+# ifndef ptrdiff_t
+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
+# endif
+# define YYPTRDIFF_T ptrdiff_t
+# define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
+# else
+# define YYPTRDIFF_T long
+# define YYPTRDIFF_MAXIMUM LONG_MAX
+# endif
#endif
#ifndef YYSIZE_T
@@ -569,15 +737,28 @@ typedef short int yytype_int16;
# define YYSIZE_T __SIZE_TYPE__
# elif defined size_t
# define YYSIZE_T size_t
-# elif ! defined YYSIZE_T
+# elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
# include <stddef.h> /* INFRINGES ON USER NAME SPACE */
# define YYSIZE_T size_t
# else
-# define YYSIZE_T unsigned int
+# define YYSIZE_T unsigned
# endif
#endif
-#define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
+#define YYSIZE_MAXIMUM \
+ YY_CAST (YYPTRDIFF_T, \
+ (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
+ ? YYPTRDIFF_MAXIMUM \
+ : YY_CAST (YYSIZE_T, -1)))
+
+#define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
+
+
+/* Stored state numbers (used for stacks). */
+typedef yytype_int16 yy_state_t;
+
+/* State numbers in computations. */
+typedef int yy_state_fast_t;
#ifndef YY_
# if defined YYENABLE_NLS && YYENABLE_NLS
@@ -591,30 +772,20 @@ typedef short int yytype_int16;
# 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__))
+# if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
+# else
+# define YY_ATTRIBUTE_PURE
+# endif
#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)
+# if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
+# define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
# else
-# define _Noreturn YY_ATTRIBUTE ((__noreturn__))
+# define YY_ATTRIBUTE_UNUSED
# endif
#endif
@@ -625,13 +796,13 @@ typedef short int yytype_int16;
# define YYUSE(E) /* empty */
#endif
-#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+#if defined __GNUC__ && ! defined __ICC && 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\"")\
+# 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 \
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
_Pragma ("GCC diagnostic pop")
#else
# define YY_INITIAL_VALUE(Value) Value
@@ -644,8 +815,22 @@ typedef short int yytype_int16;
# define YY_INITIAL_VALUE(Value) /* Nothing. */
#endif
+#if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
+# define YY_IGNORE_USELESS_CAST_BEGIN \
+ _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
+# define YY_IGNORE_USELESS_CAST_END \
+ _Pragma ("GCC diagnostic pop")
+#endif
+#ifndef YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_BEGIN
+# define YY_IGNORE_USELESS_CAST_END
+#endif
+
-#if ! defined yyoverflow || YYERROR_VERBOSE
+#define YY_ASSERT(E) ((void) (0 && (E)))
+
+#if !defined yyoverflow
/* The parser invokes alloca or malloc; define the necessary symbols. */
@@ -710,8 +895,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
# endif
# endif
# endif
-#endif /* ! defined yyoverflow || YYERROR_VERBOSE */
-
+#endif /* !defined yyoverflow */
#if (! defined yyoverflow \
&& (! defined __cplusplus \
@@ -720,17 +904,17 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
/* A type that is properly aligned for any stack member. */
union yyalloc
{
- yytype_int16 yyss_alloc;
+ yy_state_t 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)
+# define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
/* The size of an array large to enough to hold all stacks, each with
N elements. */
# define YYSTACK_BYTES(N) \
- ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
+ ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
+ YYSTACK_GAP_MAXIMUM)
# define YYCOPY_NEEDED 1
@@ -743,11 +927,11 @@ union yyalloc
# define YYSTACK_RELOCATE(Stack_alloc, Stack) \
do \
{ \
- YYSIZE_T yynewbytes; \
+ YYPTRDIFF_T yynewbytes; \
YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
Stack = &yyptr->Stack_alloc; \
- yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
- yyptr += yynewbytes / sizeof (*yyptr); \
+ yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
+ yyptr += yynewbytes / YYSIZEOF (*yyptr); \
} \
while (0)
@@ -759,12 +943,12 @@ union yyalloc
# ifndef YYCOPY
# if defined __GNUC__ && 1 < __GNUC__
# define YYCOPY(Dst, Src, Count) \
- __builtin_memcpy (Dst, Src, (Count) * sizeof (*(Src)))
+ __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
# else
# define YYCOPY(Dst, Src, Count) \
do \
{ \
- YYSIZE_T yyi; \
+ YYPTRDIFF_T yyi; \
for (yyi = 0; yyi < (Count); yyi++) \
(Dst)[yyi] = (Src)[yyi]; \
} \
@@ -774,30 +958,32 @@ union yyalloc
#endif /* !YYCOPY_NEEDED */
/* YYFINAL -- State number of the termination state. */
-#define YYFINAL 117
+#define YYFINAL 118
/* YYLAST -- Last index in YYTABLE. */
-#define YYLAST 669
+#define YYLAST 661
/* YYNTOKENS -- Number of terminals. */
#define YYNTOKENS 61
/* YYNNTS -- Number of nonterminals. */
#define YYNNTS 38
/* YYNRULES -- Number of rules. */
-#define YYNRULES 170
+#define YYNRULES 172
/* YYNSTATES -- Number of states. */
-#define YYNSTATES 343
+#define YYNSTATES 346
-/* 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) \
- ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
+
+/* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
+ as returned by yylex, with out-of-bounds checking. */
+#define YYTRANSLATE(YYX) \
+ (0 <= (YYX) && (YYX) <= YYMAXUTOK \
+ ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
+ : YYSYMBOL_YYUNDEF)
/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
- as returned by yylex, without out-of-bounds checking. */
-static const yytype_uint8 yytranslate[] =
+ as returned by yylex. */
+static const yytype_int8 yytranslate[] =
{
0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
51, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -834,7 +1020,7 @@ static const yytype_uint8 yytranslate[] =
#if YYDEBUG
/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
-static const yytype_uint16 yyrline[] =
+static const yytype_int16 yyrline[] =
{
0, 381, 381, 392, 401, 416, 433, 443, 445, 449,
455, 461, 467, 473, 479, 485, 491, 497, 503, 509,
@@ -846,26 +1032,33 @@ static const yytype_uint16 yyrline[] =
786, 788, 790, 792, 794, 796, 800, 805, 810, 815,
820, 825, 830, 835, 842, 848, 854, 860, 868, 873,
878, 883, 888, 893, 898, 903, 910, 915, 920, 927,
- 930, 933, 937, 939, 970, 977, 982, 999, 1004, 1021,
- 1028, 1030, 1032, 1037, 1041, 1045, 1049, 1051, 1053, 1057,
- 1058, 1062, 1064, 1066, 1068, 1072, 1074, 1076, 1078, 1080,
- 1082, 1086, 1088, 1097, 1105, 1106, 1112, 1113, 1120, 1124,
- 1126, 1128, 1135, 1137, 1139, 1143, 1144, 1147, 1149, 1151,
- 1155, 1156, 1165, 1178, 1194, 1209, 1211, 1213, 1220, 1223,
- 1227, 1229, 1235, 1241, 1261, 1284, 1286, 1309, 1313, 1315,
- 1317
+ 929, 931, 933, 937, 939, 970, 977, 982, 999, 1004,
+ 1021, 1028, 1030, 1032, 1037, 1041, 1045, 1049, 1051, 1053,
+ 1057, 1058, 1062, 1064, 1066, 1068, 1072, 1074, 1076, 1078,
+ 1080, 1082, 1086, 1088, 1097, 1105, 1106, 1112, 1113, 1120,
+ 1124, 1126, 1128, 1135, 1137, 1139, 1143, 1144, 1147, 1149,
+ 1151, 1155, 1156, 1165, 1178, 1194, 1209, 1211, 1213, 1220,
+ 1223, 1227, 1229, 1235, 1241, 1261, 1284, 1286, 1309, 1313,
+ 1315, 1317, 1319
};
#endif
-#if YYDEBUG || YYERROR_VERBOSE || 0
+/** Accessing symbol of state STATE. */
+#define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
+
+#if YYDEBUG || 0
+/* The user-facing name of the symbol whose (internal) number is
+ YYSYMBOL. No bounds checking. */
+static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
+
/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
First, the terminals, then, starting at YYNTOKENS, nonterminals. */
static const char *const yytname[] =
{
- "$end", "error", "$undefined", "IF", "THEN", "ELSE", "ELIF", "FI",
- "CASE", "ESAC", "FOR", "SELECT", "WHILE", "UNTIL", "DO", "DONE",
- "FUNCTION", "COPROC", "COND_START", "COND_END", "COND_ERROR", "IN",
- "BANG", "TIME", "TIMEOPT", "TIMEIGN", "WORD", "ASSIGNMENT_WORD",
+ "\"end of file\"", "error", "\"invalid token\"", "IF", "THEN", "ELSE",
+ "ELIF", "FI", "CASE", "ESAC", "FOR", "SELECT", "WHILE", "UNTIL", "DO",
+ "DONE", "FUNCTION", "COPROC", "COND_START", "COND_END", "COND_ERROR",
+ "IN", "BANG", "TIME", "TIMEOPT", "TIMEIGN", "WORD", "ASSIGNMENT_WORD",
"REDIR_WORD", "NUMBER", "ARITH_CMD", "ARITH_FOR_EXPRS", "COND_CMD",
"AND_AND", "OR_OR", "GREATER_GREATER", "LESS_LESS", "LESS_AND",
"LESS_LESS_LESS", "GREATER_AND", "SEMI_SEMI", "SEMI_AND",
@@ -883,12 +1076,18 @@ static const char *const yytname[] =
"simple_list", "simple_list1", "pipeline_command", "pipeline",
"timespec", YY_NULLPTR
};
+
+static const char *
+yysymbol_name (yysymbol_kind_t yysymbol)
+{
+ return yytname[yysymbol];
+}
#endif
-# ifdef YYPRINT
+#ifdef YYPRINT
/* YYTOKNUM[NUM] -- (External) token number corresponding to the
(internal) symbol number NUM (which must be that of a token). */
-static const yytype_uint16 yytoknum[] =
+static const yytype_int16 yytoknum[] =
{
0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
@@ -898,57 +1097,57 @@ static const yytype_uint16 yytoknum[] =
59, 10, 304, 124, 62, 60, 45, 123, 125, 40,
41
};
-# endif
+#endif
-#define YYPACT_NINF -204
+#define YYPACT_NINF (-204)
-#define yypact_value_is_default(Yystate) \
- (!!((Yystate) == (-204)))
+#define yypact_value_is_default(Yyn) \
+ ((Yyn) == YYPACT_NINF)
-#define YYTABLE_NINF -1
+#define YYTABLE_NINF (-1)
-#define yytable_value_is_error(Yytable_value) \
+#define yytable_value_is_error(Yyn) \
0
/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
STATE-NUM. */
static const yytype_int16 yypact[] =
{
- 306, -13, -204, -14, 68, 5, -204, -204, 22, 556,
- -12, 356, 21, 4, -204, 601, 614, -204, 43, 58,
- 139, 60, 143, 79, 90, 98, 100, 102, -204, -204,
- 104, 111, -204, -204, 154, -204, -204, 234, -204, 588,
+ 313, 108, -204, -6, 8, 2, -204, -204, 10, 513,
+ 17, 363, 153, -21, -204, 593, 606, -204, 14, 26,
+ 113, 41, 127, 72, 85, 92, 95, 98, -204, -204,
+ 100, 105, -204, -204, 65, -204, -204, 551, -204, 572,
-204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, 70, 192, -204, 65, 356, -204, -204, -204, 135,
- 406, -204, 93, 23, 107, 153, 162, 124, 99, 234,
- 588, 167, -204, -204, -204, -204, -204, 165, 133, 178,
- 206, 144, 210, 145, 213, 225, 229, 232, 233, 238,
- 239, 149, 241, 156, 242, 250, 256, 257, 258, -204,
+ -204, 146, 140, -204, 67, 363, -204, -204, -204, 133,
+ 413, -204, 93, 55, 104, 156, 161, 11, 45, 551,
+ 572, 163, -204, -204, -204, -204, -204, 167, -204, 152,
+ 208, 217, 129, 220, 150, 221, 223, 225, 233, 234,
+ 238, 239, 158, 240, 162, 241, 243, 244, 252, 253,
-204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, 169, 170, -204, -204, -204,
- -204, 588, -204, -204, -204, -204, -204, 456, 456, -204,
- -204, -204, -204, -204, -204, -204, 184, -204, -10, -204,
- 7, -204, -204, -204, -204, 19, -204, -204, 226, 41,
- 588, 588, -204, -204, -204, -204, -204, -204, -204, -204,
+ -204, -204, -204, -204, -204, -204, 194, 227, -204, -204,
+ -204, -204, 572, -204, -204, -204, -204, -204, 463, 463,
+ -204, -204, -204, -204, -204, -204, -204, -7, -204, 59,
+ -204, 52, -204, -204, -204, -204, 62, -204, -204, -204,
+ 235, 572, -204, 572, 572, -204, -204, -204, -204, -204,
-204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
-204, -204, -204, -204, -204, -204, -204, -204, -204, -204,
- -204, -204, -204, -204, -204, -204, 406, 406, 147, 147,
- 506, 506, 201, -204, -204, -204, -204, -204, -204, 11,
- -204, 82, -204, 270, 235, 32, 36, -204, 82, -204,
- 275, 276, -204, 588, -204, 588, 41, -204, -204, 65,
- 65, -204, -204, -204, 285, 406, 406, 406, 406, 406,
- 286, 204, -204, -4, -204, -204, 281, -204, 137, -204,
- 243, -204, -204, -204, -204, -204, -204, 282, 406, 137,
- -204, 244, -204, -204, 41, 588, -204, 293, 299, -204,
- -204, -204, 180, 180, 180, -204, -204, -204, -204, 208,
- 6, -204, -204, 278, -30, 295, 253, -204, -204, -204,
- 46, -204, 300, 263, 310, 268, -204, 184, -204, 74,
- -204, -204, -204, -204, -204, -204, -204, -204, -24, 301,
- -204, -204, -204, 87, -204, -204, -204, -204, -204, -204,
- 109, -204, -204, 248, -204, -204, -204, 406, -204, -204,
- 315, 273, -204, -204, 322, 280, -204, -204, -204, 406,
- 324, 288, -204, -204, 325, 289, -204, -204, -204, -204,
- -204, -204, -204
+ -204, -204, -204, -204, -204, -204, -204, -204, -204, 413,
+ 413, 191, 191, 245, 245, 203, -204, -204, -204, -204,
+ -204, -204, 37, -204, 176, -204, 270, 228, 76, 79,
+ -204, 176, -204, 278, 282, 563, -204, 572, 572, 563,
+ -204, -204, 67, 67, -204, -204, -204, 291, 413, 413,
+ 413, 413, 413, 294, 175, -204, 28, -204, -204, 292,
+ -204, 187, -204, 250, -204, -204, -204, -204, -204, -204,
+ 295, 413, 187, -204, 251, -204, -204, -204, 563, -204,
+ 304, 314, -204, -204, -204, 196, 196, 196, -204, -204,
+ -204, -204, 179, 38, -204, -204, 296, -28, 302, 274,
+ -204, -204, -204, 87, -204, 318, 276, 322, 280, -204,
+ -7, -204, 111, -204, -204, -204, -204, -204, -204, -204,
+ -204, 39, 319, -204, -204, -204, 114, -204, -204, -204,
+ -204, -204, -204, 115, -204, -204, 226, -204, -204, -204,
+ 413, -204, -204, 329, 288, -204, -204, 332, 297, -204,
+ -204, -204, 413, 338, 303, -204, -204, 339, 305, -204,
+ -204, -204, -204, -204, -204, -204
};
/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -956,209 +1155,209 @@ static const yytype_int16 yypact[] =
means the default is an error. */
static const yytype_uint8 yydefact[] =
{
- 0, 0, 150, 0, 0, 0, 150, 150, 0, 0,
- 0, 0, 168, 53, 54, 0, 0, 114, 0, 0,
+ 0, 0, 151, 0, 0, 0, 151, 151, 0, 0,
+ 0, 0, 169, 53, 54, 0, 0, 115, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 3, 6,
- 0, 0, 150, 150, 0, 55, 58, 60, 167, 61,
+ 0, 0, 151, 151, 0, 55, 58, 60, 168, 61,
65, 75, 69, 66, 63, 71, 64, 70, 72, 73,
- 74, 0, 152, 159, 160, 0, 4, 5, 134, 0,
- 0, 150, 150, 0, 150, 0, 0, 150, 53, 109,
- 105, 0, 148, 147, 149, 164, 161, 169, 0, 0,
+ 74, 0, 153, 160, 161, 0, 4, 5, 135, 0,
+ 0, 151, 151, 0, 151, 0, 0, 0, 53, 110,
+ 106, 0, 149, 148, 150, 165, 162, 170, 171, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 15,
- 24, 39, 33, 48, 30, 42, 36, 45, 27, 51,
- 52, 21, 18, 9, 10, 0, 0, 1, 53, 59,
- 56, 62, 145, 146, 2, 150, 150, 153, 154, 150,
- 150, 163, 162, 150, 151, 133, 135, 144, 0, 150,
- 0, 150, 150, 150, 150, 0, 150, 150, 0, 0,
- 107, 106, 115, 170, 150, 17, 26, 41, 35, 50,
- 32, 44, 38, 47, 29, 23, 20, 13, 14, 16,
- 25, 40, 34, 49, 31, 43, 37, 46, 28, 22,
- 19, 11, 12, 113, 104, 57, 0, 0, 157, 158,
- 0, 0, 0, 150, 150, 150, 150, 150, 150, 0,
- 150, 0, 150, 0, 0, 0, 0, 150, 0, 150,
- 0, 0, 150, 102, 101, 108, 0, 155, 156, 166,
- 165, 150, 150, 110, 0, 0, 0, 137, 138, 136,
- 0, 119, 150, 0, 150, 150, 0, 7, 0, 150,
- 0, 86, 87, 150, 150, 150, 150, 0, 0, 0,
- 150, 0, 67, 68, 0, 103, 99, 0, 0, 112,
- 139, 140, 141, 142, 143, 98, 125, 127, 129, 120,
- 0, 96, 131, 0, 0, 0, 0, 76, 8, 150,
- 0, 77, 0, 0, 0, 0, 88, 0, 150, 0,
- 89, 100, 111, 150, 126, 128, 130, 97, 0, 0,
- 150, 78, 79, 0, 150, 150, 84, 85, 90, 91,
- 0, 150, 150, 116, 150, 132, 121, 122, 150, 150,
- 0, 0, 150, 150, 0, 0, 150, 118, 123, 124,
- 0, 0, 82, 83, 0, 0, 94, 95, 117, 80,
- 81, 92, 93
+ 15, 24, 39, 33, 48, 30, 42, 36, 45, 27,
+ 51, 52, 21, 18, 9, 10, 0, 0, 1, 53,
+ 59, 56, 62, 146, 147, 2, 151, 151, 154, 155,
+ 151, 151, 164, 163, 151, 152, 134, 136, 145, 0,
+ 151, 0, 151, 151, 151, 151, 0, 151, 151, 151,
+ 151, 103, 101, 108, 107, 116, 172, 151, 17, 26,
+ 41, 35, 50, 32, 44, 38, 47, 29, 23, 20,
+ 13, 14, 16, 25, 40, 34, 49, 31, 43, 37,
+ 46, 28, 22, 19, 11, 12, 114, 105, 57, 0,
+ 0, 158, 159, 0, 0, 0, 151, 151, 151, 151,
+ 151, 151, 0, 151, 0, 151, 0, 0, 0, 0,
+ 151, 0, 151, 0, 0, 0, 151, 104, 109, 0,
+ 156, 157, 167, 166, 151, 151, 111, 0, 0, 0,
+ 138, 139, 137, 0, 120, 151, 0, 151, 151, 0,
+ 7, 0, 151, 0, 86, 87, 151, 151, 151, 151,
+ 0, 0, 0, 151, 0, 67, 68, 102, 0, 99,
+ 0, 0, 113, 140, 141, 142, 143, 144, 98, 126,
+ 128, 130, 121, 0, 96, 132, 0, 0, 0, 0,
+ 76, 8, 151, 0, 77, 0, 0, 0, 0, 88,
+ 0, 151, 0, 89, 100, 112, 151, 127, 129, 131,
+ 97, 0, 0, 151, 78, 79, 0, 151, 151, 84,
+ 85, 90, 91, 0, 151, 151, 117, 151, 133, 122,
+ 123, 151, 151, 0, 0, 151, 151, 0, 0, 151,
+ 119, 124, 125, 0, 0, 82, 83, 0, 0, 94,
+ 95, 118, 80, 81, 92, 93
};
/* YYPGOTO[NTERM-NUM]. */
static const yytype_int16 yypgoto[] =
{
- -204, -204, 140, -36, 35, -60, 345, -204, -7, -204,
- -204, -204, -204, -204, -198, -204, -204, -204, -204, -204,
- -204, 42, -204, 130, -204, 83, -203, -6, -204, -5,
- -204, -46, -48, -204, -120, 24, 66, -204
+ -204, -204, 117, -37, -19, -67, 353, -204, -8, -204,
+ -204, -204, -204, -204, -184, -204, -204, -204, -204, -204,
+ -204, 53, -204, 142, -204, 102, -203, -2, -204, 283,
+ -204, -47, -49, -204, -118, 6, 47, -204
};
/* YYDEFGOTO[NTERM-NUM]. */
static const yytype_int16 yydefgoto[] =
{
- -1, 34, 238, 35, 36, 121, 37, 38, 39, 40,
- 41, 42, 43, 44, 214, 45, 46, 47, 48, 49,
- 50, 224, 230, 231, 232, 274, 58, 59, 135, 136,
- 124, 75, 60, 51, 52, 137, 54, 55
+ -1, 34, 241, 35, 36, 122, 37, 38, 39, 40,
+ 41, 42, 43, 44, 152, 45, 46, 47, 48, 49,
+ 50, 227, 233, 234, 235, 277, 58, 117, 136, 137,
+ 125, 75, 60, 51, 52, 138, 54, 55
};
/* 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[] =
+static const yytype_int16 yytable[] =
{
- 65, 66, 70, 120, 247, 271, 251, 188, 189, 131,
- 151, 198, 61, 138, 140, 297, 145, 143, 256, 149,
- 71, 200, 272, 299, 53, 234, 115, 116, 201, 299,
- 300, 64, 272, 207, 120, 76, 314, 141, 56, 57,
- 208, 134, 284, 285, 2, 77, 243, 134, 67, 3,
- 245, 4, 5, 6, 7, 273, 291, 134, 134, 10,
- 304, 150, 134, 78, 202, 273, 217, 218, 235, 99,
- 134, 17, 119, 72, 73, 74, 209, 186, 187, 132,
- 142, 190, 191, 134, 100, 185, 104, 134, 311, 244,
- 215, 199, 134, 246, 62, 205, 206, 134, 32, 63,
- 33, 318, 2, 305, 119, 108, 216, 3, 237, 4,
- 5, 6, 7, 129, 120, 185, 109, 10, 130, 334,
- 335, 122, 123, 322, 110, 134, 111, 192, 112, 17,
- 113, 312, 72, 73, 74, 203, 204, 114, 134, 133,
- 210, 211, 213, 139, 319, 225, 226, 227, 228, 229,
- 233, 53, 53, 255, 117, 239, 32, 144, 33, 248,
- 134, 248, 250, 278, 254, 101, 323, 146, 102, 105,
- 157, 161, 106, 158, 162, 171, 147, 120, 172, 185,
- 125, 126, 175, 148, 270, 176, 152, 72, 73, 74,
- 153, 280, 279, 154, 236, 103, 240, 248, 248, 107,
- 159, 163, 289, 288, 155, 173, 221, 222, 223, 213,
- 53, 53, 177, 193, 194, 257, 258, 193, 194, 185,
- 260, 261, 262, 263, 264, 125, 126, 183, 275, 276,
- 184, 303, 156, 195, 196, 197, 160, 282, 283, 164,
- 310, 127, 128, 287, 266, 267, 268, 213, 294, 295,
- 296, 165, 317, 326, 222, 166, 219, 220, 167, 168,
- 118, 14, 15, 16, 169, 170, 329, 174, 178, 18,
- 19, 20, 21, 22, 248, 248, 179, 23, 24, 25,
- 26, 27, 180, 181, 182, 241, 212, 313, 30, 31,
- 252, 253, 259, 242, 316, 265, 277, 286, 320, 321,
- 292, 281, 290, 293, 272, 324, 325, 1, 328, 2,
- 301, 302, 330, 331, 3, 306, 4, 5, 6, 7,
- 338, 307, 8, 9, 10, 308, 309, 315, 11, 12,
- 332, 333, 13, 14, 15, 16, 17, 336, 337, 339,
- 341, 18, 19, 20, 21, 22, 340, 342, 249, 23,
- 24, 25, 26, 27, 69, 327, 298, 28, 29, 2,
- 30, 31, 269, 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, 72, 73, 74, 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, 134, 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, 134, 0, 2,
- 30, 31, 0, 32, 3, 33, 4, 5, 6, 7,
- 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
- 0, 0, 68, 14, 15, 16, 17, 0, 0, 0,
- 0, 18, 19, 20, 21, 22, 0, 0, 0, 23,
- 24, 25, 26, 27, 0, 0, 0, 0, 0, 0,
- 30, 31, 0, 32, 0, 33, 15, 16, 0, 0,
- 0, 0, 0, 18, 19, 20, 21, 22, 0, 0,
- 0, 23, 24, 25, 26, 27, 79, 80, 81, 82,
- 83, 0, 30, 31, 84, 0, 0, 85, 86, 89,
- 90, 91, 92, 93, 0, 87, 88, 94, 0, 0,
- 95, 96, 0, 0, 0, 0, 0, 0, 97, 98
+ 59, 70, 121, 154, 65, 66, 53, 250, 132, 254,
+ 191, 192, 139, 141, 2, 146, 144, 76, 120, 3,
+ 61, 4, 5, 6, 7, 302, 196, 197, 64, 10,
+ 116, 257, 303, 121, 62, 259, 67, 274, 79, 63,
+ 100, 17, 198, 199, 200, 287, 288, 300, 2, 71,
+ 120, 237, 101, 3, 275, 4, 5, 6, 7, 151,
+ 153, 133, 149, 10, 275, 118, 203, 105, 32, 142,
+ 150, 220, 221, 204, 294, 17, 210, 189, 190, 135,
+ 201, 193, 194, 211, 217, 188, 218, 276, 135, 135,
+ 246, 202, 302, 248, 238, 208, 209, 276, 109, 317,
+ 215, 307, 32, 135, 33, 72, 73, 74, 219, 205,
+ 135, 110, 143, 135, 121, 130, 121, 188, 111, 212,
+ 131, 112, 337, 338, 113, 314, 114, 135, 321, 325,
+ 135, 115, 195, 247, 53, 53, 249, 134, 135, 102,
+ 206, 207, 103, 140, 308, 213, 214, 228, 229, 230,
+ 231, 232, 236, 106, 145, 160, 107, 242, 161, 56,
+ 57, 251, 135, 251, 253, 135, 135, 258, 315, 104,
+ 147, 322, 326, 126, 127, 148, 164, 77, 78, 165,
+ 188, 188, 155, 108, 174, 162, 273, 175, 178, 128,
+ 129, 179, 156, 283, 282, 53, 53, 123, 124, 251,
+ 251, 239, 240, 243, 292, 291, 166, 151, 224, 225,
+ 226, 151, 157, 281, 176, 269, 270, 271, 180, 297,
+ 298, 299, 260, 261, 126, 127, 72, 73, 74, 196,
+ 197, 329, 225, 306, 158, 278, 279, 72, 73, 74,
+ 222, 223, 313, 159, 285, 286, 163, 167, 2, 168,
+ 151, 169, 186, 3, 320, 4, 5, 6, 7, 170,
+ 171, 8, 9, 10, 172, 173, 177, 181, 332, 182,
+ 183, 13, 14, 15, 16, 17, 251, 251, 184, 185,
+ 18, 19, 20, 21, 22, 244, 245, 187, 23, 24,
+ 25, 26, 27, 255, 316, 216, 135, 256, 262, 30,
+ 31, 319, 32, 268, 33, 323, 324, 280, 284, 293,
+ 289, 295, 327, 328, 1, 331, 2, 304, 296, 333,
+ 334, 3, 275, 4, 5, 6, 7, 341, 252, 8,
+ 9, 10, 305, 309, 310, 11, 12, 311, 312, 13,
+ 14, 15, 16, 17, 335, 318, 336, 339, 18, 19,
+ 20, 21, 22, 342, 344, 340, 23, 24, 25, 26,
+ 27, 343, 69, 345, 28, 29, 2, 30, 31, 330,
+ 32, 3, 33, 4, 5, 6, 7, 272, 301, 8,
+ 9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
+ 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
+ 27, 0, 0, 72, 73, 74, 2, 30, 31, 0,
+ 32, 3, 33, 4, 5, 6, 7, 0, 0, 8,
+ 9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
+ 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
+ 27, 0, 0, 0, 135, 0, 2, 30, 31, 0,
+ 32, 3, 33, 4, 5, 6, 7, 0, 0, 8,
+ 9, 10, 0, 0, 0, 11, 12, 0, 0, 13,
+ 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
+ 27, 263, 264, 265, 266, 267, 2, 30, 31, 0,
+ 32, 3, 33, 4, 5, 6, 7, 0, 0, 0,
+ 0, 10, 0, 0, 290, 0, 0, 0, 0, 68,
+ 14, 15, 16, 17, 0, 0, 0, 0, 18, 19,
+ 20, 21, 22, 0, 0, 0, 23, 24, 25, 26,
+ 27, 0, 0, 0, 0, 0, 2, 30, 31, 0,
+ 32, 3, 33, 4, 5, 6, 7, 119, 14, 15,
+ 16, 10, 0, 0, 0, 0, 18, 19, 20, 21,
+ 22, 0, 0, 17, 23, 24, 25, 26, 27, 0,
+ 15, 16, 0, 0, 0, 30, 31, 18, 19, 20,
+ 21, 22, 0, 0, 135, 23, 24, 25, 26, 27,
+ 32, 0, 33, 0, 0, 0, 30, 31, 80, 81,
+ 82, 83, 84, 0, 0, 0, 85, 0, 0, 86,
+ 87, 90, 91, 92, 93, 94, 0, 88, 89, 95,
+ 0, 0, 96, 97, 0, 0, 0, 0, 0, 0,
+ 98, 99
};
static const yytype_int16 yycheck[] =
{
- 6, 7, 9, 39, 207, 9, 209, 127, 128, 55,
- 70, 21, 26, 61, 62, 9, 64, 63, 216, 67,
- 32, 14, 26, 53, 0, 14, 32, 33, 21, 53,
- 60, 26, 26, 14, 70, 11, 60, 14, 51, 52,
- 21, 51, 245, 246, 3, 24, 14, 51, 26, 8,
- 14, 10, 11, 12, 13, 59, 254, 51, 51, 18,
- 14, 68, 51, 59, 57, 59, 186, 187, 57, 26,
- 51, 30, 37, 50, 51, 52, 57, 125, 126, 55,
- 57, 129, 130, 51, 26, 121, 26, 51, 14, 57,
- 150, 139, 51, 57, 26, 143, 144, 51, 57, 31,
- 59, 14, 3, 57, 69, 26, 154, 8, 26, 10,
- 11, 12, 13, 48, 150, 151, 26, 18, 53, 322,
- 323, 51, 52, 14, 26, 51, 26, 133, 26, 30,
- 26, 57, 50, 51, 52, 141, 142, 26, 51, 4,
- 146, 147, 149, 50, 57, 193, 194, 195, 196, 197,
- 198, 127, 128, 213, 0, 201, 57, 50, 59, 207,
- 51, 209, 208, 26, 212, 26, 57, 14, 29, 26,
- 26, 26, 29, 29, 29, 26, 14, 213, 29, 215,
- 33, 34, 26, 59, 232, 29, 19, 50, 51, 52,
- 25, 239, 238, 60, 200, 56, 202, 245, 246, 56,
- 56, 56, 250, 249, 26, 56, 5, 6, 7, 216,
- 186, 187, 56, 33, 34, 221, 222, 33, 34, 255,
- 225, 226, 227, 228, 229, 33, 34, 58, 234, 235,
- 60, 279, 26, 49, 50, 51, 26, 243, 244, 26,
- 288, 49, 50, 248, 40, 41, 42, 254, 40, 41,
- 42, 26, 300, 5, 6, 26, 190, 191, 26, 26,
- 26, 27, 28, 29, 26, 26, 314, 26, 26, 35,
- 36, 37, 38, 39, 322, 323, 26, 43, 44, 45,
- 46, 47, 26, 26, 26, 15, 60, 293, 54, 55,
- 15, 15, 7, 58, 300, 9, 15, 15, 304, 305,
- 7, 58, 58, 4, 26, 311, 312, 1, 314, 3,
- 15, 58, 318, 319, 8, 15, 10, 11, 12, 13,
- 326, 58, 16, 17, 18, 15, 58, 26, 22, 23,
- 15, 58, 26, 27, 28, 29, 30, 15, 58, 15,
- 15, 35, 36, 37, 38, 39, 58, 58, 208, 43,
- 44, 45, 46, 47, 9, 313, 273, 51, 52, 3,
- 54, 55, 232, 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, 50, 51, 52, 3,
- 54, 55, -1, 57, 8, 59, 10, 11, 12, 13,
- -1, -1, 16, 17, 18, -1, -1, -1, 22, 23,
- -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
- -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
- 44, 45, 46, 47, -1, -1, -1, 51, -1, 3,
- 54, 55, -1, 57, 8, 59, 10, 11, 12, 13,
- -1, -1, 16, 17, 18, -1, -1, -1, 22, 23,
- -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
- -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
- 44, 45, 46, 47, -1, -1, -1, -1, -1, 3,
- 54, 55, -1, 57, 8, 59, 10, 11, 12, 13,
- -1, -1, 16, 17, 18, -1, -1, -1, -1, -1,
- -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
- -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
- 44, 45, 46, 47, -1, -1, -1, 51, -1, 3,
- 54, 55, -1, 57, 8, 59, 10, 11, 12, 13,
- -1, -1, -1, -1, 18, -1, -1, -1, -1, -1,
- -1, -1, 26, 27, 28, 29, 30, -1, -1, -1,
- -1, 35, 36, 37, 38, 39, -1, -1, -1, 43,
- 44, 45, 46, 47, -1, -1, -1, -1, -1, -1,
- 54, 55, -1, 57, -1, 59, 28, 29, -1, -1,
- -1, -1, -1, 35, 36, 37, 38, 39, -1, -1,
- -1, 43, 44, 45, 46, 47, 35, 36, 37, 38,
- 39, -1, 54, 55, 43, -1, -1, 46, 47, 35,
- 36, 37, 38, 39, -1, 54, 55, 43, -1, -1,
- 46, 47, -1, -1, -1, -1, -1, -1, 54, 55
+ 2, 9, 39, 70, 6, 7, 0, 210, 55, 212,
+ 128, 129, 61, 62, 3, 64, 63, 11, 37, 8,
+ 26, 10, 11, 12, 13, 53, 33, 34, 26, 18,
+ 32, 215, 60, 70, 26, 219, 26, 9, 59, 31,
+ 26, 30, 49, 50, 51, 248, 249, 9, 3, 32,
+ 69, 14, 26, 8, 26, 10, 11, 12, 13, 67,
+ 68, 55, 51, 18, 26, 0, 14, 26, 57, 14,
+ 59, 189, 190, 21, 258, 30, 14, 126, 127, 51,
+ 21, 130, 131, 21, 151, 122, 153, 59, 51, 51,
+ 14, 140, 53, 14, 57, 144, 145, 59, 26, 60,
+ 149, 14, 57, 51, 59, 50, 51, 52, 157, 57,
+ 51, 26, 57, 51, 151, 48, 153, 154, 26, 57,
+ 53, 26, 325, 326, 26, 14, 26, 51, 14, 14,
+ 51, 26, 134, 57, 128, 129, 57, 4, 51, 26,
+ 142, 143, 29, 50, 57, 147, 148, 196, 197, 198,
+ 199, 200, 201, 26, 50, 26, 29, 204, 29, 51,
+ 52, 210, 51, 212, 211, 51, 51, 216, 57, 56,
+ 14, 57, 57, 33, 34, 14, 26, 24, 25, 29,
+ 217, 218, 19, 56, 26, 56, 235, 29, 26, 49,
+ 50, 29, 25, 242, 241, 189, 190, 51, 52, 248,
+ 249, 203, 26, 205, 253, 252, 56, 215, 5, 6,
+ 7, 219, 60, 26, 56, 40, 41, 42, 56, 40,
+ 41, 42, 224, 225, 33, 34, 50, 51, 52, 33,
+ 34, 5, 6, 282, 26, 237, 238, 50, 51, 52,
+ 193, 194, 291, 26, 246, 247, 26, 26, 3, 26,
+ 258, 26, 58, 8, 303, 10, 11, 12, 13, 26,
+ 26, 16, 17, 18, 26, 26, 26, 26, 317, 26,
+ 26, 26, 27, 28, 29, 30, 325, 326, 26, 26,
+ 35, 36, 37, 38, 39, 15, 58, 60, 43, 44,
+ 45, 46, 47, 15, 296, 60, 51, 15, 7, 54,
+ 55, 303, 57, 9, 59, 307, 308, 15, 58, 58,
+ 15, 7, 314, 315, 1, 317, 3, 15, 4, 321,
+ 322, 8, 26, 10, 11, 12, 13, 329, 211, 16,
+ 17, 18, 58, 15, 58, 22, 23, 15, 58, 26,
+ 27, 28, 29, 30, 15, 26, 58, 15, 35, 36,
+ 37, 38, 39, 15, 15, 58, 43, 44, 45, 46,
+ 47, 58, 9, 58, 51, 52, 3, 54, 55, 316,
+ 57, 8, 59, 10, 11, 12, 13, 235, 276, 16,
+ 17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
+ 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
+ 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
+ 47, -1, -1, 50, 51, 52, 3, 54, 55, -1,
+ 57, 8, 59, 10, 11, 12, 13, -1, -1, 16,
+ 17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
+ 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
+ 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
+ 47, -1, -1, -1, 51, -1, 3, 54, 55, -1,
+ 57, 8, 59, 10, 11, 12, 13, -1, -1, 16,
+ 17, 18, -1, -1, -1, 22, 23, -1, -1, 26,
+ 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
+ 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
+ 47, 228, 229, 230, 231, 232, 3, 54, 55, -1,
+ 57, 8, 59, 10, 11, 12, 13, -1, -1, -1,
+ -1, 18, -1, -1, 251, -1, -1, -1, -1, 26,
+ 27, 28, 29, 30, -1, -1, -1, -1, 35, 36,
+ 37, 38, 39, -1, -1, -1, 43, 44, 45, 46,
+ 47, -1, -1, -1, -1, -1, 3, 54, 55, -1,
+ 57, 8, 59, 10, 11, 12, 13, 26, 27, 28,
+ 29, 18, -1, -1, -1, -1, 35, 36, 37, 38,
+ 39, -1, -1, 30, 43, 44, 45, 46, 47, -1,
+ 28, 29, -1, -1, -1, 54, 55, 35, 36, 37,
+ 38, 39, -1, -1, 51, 43, 44, 45, 46, 47,
+ 57, -1, 59, -1, -1, -1, 54, 55, 35, 36,
+ 37, 38, 39, -1, -1, -1, 43, -1, -1, 46,
+ 47, 35, 36, 37, 38, 39, -1, 54, 55, 43,
+ -1, -1, 46, 47, -1, -1, -1, -1, -1, -1,
+ 54, 55
};
/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
symbol of state STATE-NUM. */
-static const yytype_uint8 yystos[] =
+static const yytype_int8 yystos[] =
{
0, 1, 3, 8, 10, 11, 12, 13, 16, 17,
18, 22, 23, 26, 27, 28, 29, 30, 35, 36,
@@ -1167,38 +1366,38 @@ static const yytype_uint8 yystos[] =
70, 71, 72, 73, 74, 76, 77, 78, 79, 80,
81, 94, 95, 96, 97, 98, 51, 52, 87, 88,
93, 26, 26, 31, 26, 88, 88, 26, 26, 67,
- 69, 32, 50, 51, 52, 92, 96, 24, 59, 35,
- 36, 37, 38, 39, 43, 46, 47, 54, 55, 35,
- 36, 37, 38, 39, 43, 46, 47, 54, 55, 26,
- 26, 26, 29, 56, 26, 26, 29, 56, 26, 26,
- 26, 26, 26, 26, 26, 88, 88, 0, 26, 65,
- 64, 66, 51, 52, 91, 33, 34, 49, 50, 48,
- 53, 92, 96, 4, 51, 89, 90, 96, 93, 50,
- 93, 14, 57, 92, 50, 93, 14, 14, 59, 93,
- 69, 66, 19, 25, 60, 26, 26, 26, 29, 56,
- 26, 26, 29, 56, 26, 26, 26, 26, 26, 26,
- 26, 26, 29, 56, 26, 26, 29, 56, 26, 26,
- 26, 26, 26, 58, 60, 64, 93, 93, 95, 95,
- 93, 93, 88, 33, 34, 49, 50, 51, 21, 93,
- 14, 21, 57, 88, 88, 93, 93, 14, 21, 57,
- 88, 88, 60, 69, 75, 66, 93, 95, 95, 97,
- 97, 5, 6, 7, 82, 93, 93, 93, 93, 93,
- 83, 84, 85, 93, 14, 57, 88, 26, 63, 92,
- 88, 15, 58, 14, 57, 14, 57, 87, 93, 63,
- 92, 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, 93,
- 58, 75, 7, 4, 40, 41, 42, 9, 86, 53,
- 60, 15, 58, 93, 14, 57, 15, 58, 15, 58,
- 93, 14, 57, 88, 60, 26, 88, 93, 14, 57,
- 88, 88, 14, 57, 88, 88, 5, 82, 88, 93,
- 88, 88, 15, 58, 87, 87, 15, 58, 88, 15,
- 58, 15, 58
+ 69, 32, 50, 51, 52, 92, 96, 24, 25, 59,
+ 35, 36, 37, 38, 39, 43, 46, 47, 54, 55,
+ 35, 36, 37, 38, 39, 43, 46, 47, 54, 55,
+ 26, 26, 26, 29, 56, 26, 26, 29, 56, 26,
+ 26, 26, 26, 26, 26, 26, 88, 88, 0, 26,
+ 65, 64, 66, 51, 52, 91, 33, 34, 49, 50,
+ 48, 53, 92, 96, 4, 51, 89, 90, 96, 93,
+ 50, 93, 14, 57, 92, 50, 93, 14, 14, 51,
+ 59, 69, 75, 69, 66, 19, 25, 60, 26, 26,
+ 26, 29, 56, 26, 26, 29, 56, 26, 26, 26,
+ 26, 26, 26, 26, 26, 29, 56, 26, 26, 29,
+ 56, 26, 26, 26, 26, 26, 58, 60, 64, 93,
+ 93, 95, 95, 93, 93, 88, 33, 34, 49, 50,
+ 51, 21, 93, 14, 21, 57, 88, 88, 93, 93,
+ 14, 21, 57, 88, 88, 93, 60, 66, 66, 93,
+ 95, 95, 97, 97, 5, 6, 7, 82, 93, 93,
+ 93, 93, 93, 83, 84, 85, 93, 14, 57, 88,
+ 26, 63, 92, 88, 15, 58, 14, 57, 14, 57,
+ 87, 93, 63, 92, 87, 15, 15, 75, 93, 75,
+ 88, 88, 7, 90, 90, 90, 90, 90, 9, 40,
+ 41, 42, 84, 93, 9, 26, 59, 86, 88, 88,
+ 15, 26, 92, 93, 58, 88, 88, 87, 87, 15,
+ 90, 92, 93, 58, 75, 7, 4, 40, 41, 42,
+ 9, 86, 53, 60, 15, 58, 93, 14, 57, 15,
+ 58, 15, 58, 93, 14, 57, 88, 60, 26, 88,
+ 93, 14, 57, 88, 88, 14, 57, 88, 88, 5,
+ 82, 88, 93, 88, 88, 15, 58, 87, 87, 15,
+ 58, 88, 15, 58, 15, 58
};
/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
-static const yytype_uint8 yyr1[] =
+static const yytype_int8 yyr1[] =
{
0, 61, 62, 62, 62, 62, 62, 63, 63, 64,
64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
@@ -1210,18 +1409,18 @@ static const yytype_uint8 yyr1[] =
69, 69, 69, 69, 69, 69, 70, 70, 70, 70,
70, 70, 70, 70, 71, 71, 71, 71, 72, 72,
72, 72, 72, 72, 72, 72, 73, 73, 73, 74,
- 74, 74, 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
+ 74, 74, 74, 75, 75, 76, 77, 77, 77, 77,
+ 77, 78, 78, 78, 79, 80, 81, 82, 82, 82,
+ 83, 83, 84, 84, 84, 84, 85, 85, 85, 85,
+ 85, 85, 86, 86, 87, 88, 88, 89, 89, 89,
+ 90, 90, 90, 90, 90, 90, 91, 91, 92, 92,
+ 92, 93, 93, 94, 94, 94, 95, 95, 95, 95,
+ 95, 96, 96, 96, 96, 96, 97, 97, 97, 98,
+ 98, 98, 98
};
/* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */
-static const yytype_uint8 yyr2[] =
+static const yytype_int8 yyr2[] =
{
0, 2, 2, 1, 2, 2, 1, 1, 2, 2,
2, 3, 3, 3, 3, 2, 3, 3, 2, 3,
@@ -1233,21 +1432,21 @@ static const yytype_uint8 yyr2[] =
1, 1, 1, 1, 1, 1, 6, 6, 7, 7,
10, 10, 9, 9, 7, 7, 5, 5, 6, 6,
7, 7, 10, 10, 9, 9, 6, 7, 6, 5,
- 6, 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
+ 6, 3, 5, 1, 2, 3, 2, 3, 3, 4,
+ 2, 5, 7, 6, 3, 1, 3, 4, 6, 5,
+ 1, 2, 4, 4, 5, 5, 2, 3, 2, 3,
+ 2, 3, 1, 3, 2, 1, 2, 3, 3, 3,
+ 4, 4, 4, 4, 4, 1, 1, 1, 1, 1,
+ 1, 0, 2, 1, 2, 2, 4, 4, 3, 3,
+ 1, 1, 2, 2, 2, 2, 4, 4, 1, 1,
+ 2, 2, 3
};
+enum { YYENOMEM = -2 };
+
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
-#define YYEMPTY (-2)
-#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
@@ -1256,27 +1455,26 @@ static const yytype_uint8 yyr2[] =
#define YYRECOVERING() (!!yyerrstatus)
-#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 (0)
-
-/* Error token number */
-#define YYTERROR 1
-#define YYERRCODE 256
+#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 (0)
+/* Backward compatibility with an undocumented macro.
+ Use YYerror or YYUNDEF. */
+#define YYERRCODE YYUNDEF
/* Enable debugging if requested. */
@@ -1294,54 +1492,58 @@ do { \
} while (0)
/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+# ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
do { \
if (yydebug) \
{ \
YYFPRINTF (stderr, "%s ", Title); \
yy_symbol_print (stderr, \
- Type, Value); \
+ Kind, Value); \
YYFPRINTF (stderr, "\n"); \
} \
} while (0)
-/*----------------------------------------.
-| Print this symbol's value on YYOUTPUT. |
-`----------------------------------------*/
+/*-----------------------------------.
+| Print this symbol's value on YYO. |
+`-----------------------------------*/
static void
-yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_value_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- FILE *yyo = yyoutput;
- YYUSE (yyo);
+ FILE *yyoutput = yyo;
+ YYUSE (yyoutput);
if (!yyvaluep)
return;
# ifdef YYPRINT
- if (yytype < YYNTOKENS)
- YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
+ if (yykind < YYNTOKENS)
+ YYPRINT (yyo, yytoknum[yykind], *yyvaluep);
# endif
- YYUSE (yytype);
+ YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+ YYUSE (yykind);
+ YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-/*--------------------------------.
-| Print this symbol on YYOUTPUT. |
-`--------------------------------*/
+/*---------------------------.
+| Print this symbol on YYO. |
+`---------------------------*/
static void
-yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
+yy_symbol_print (FILE *yyo,
+ yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep)
{
- YYFPRINTF (yyoutput, "%s %s (",
- yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
+ YYFPRINTF (yyo, "%s %s (",
+ yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
- yy_symbol_value_print (yyoutput, yytype, yyvaluep);
- YYFPRINTF (yyoutput, ")");
+ yy_symbol_value_print (yyo, yykind, yyvaluep);
+ YYFPRINTF (yyo, ")");
}
/*------------------------------------------------------------------.
@@ -1350,7 +1552,7 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
`------------------------------------------------------------------*/
static void
-yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
+yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
{
YYFPRINTF (stderr, "Stack now");
for (; yybottom <= yytop; yybottom++)
@@ -1373,21 +1575,21 @@ do { \
`------------------------------------------------*/
static void
-yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
+yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
+ int yyrule)
{
- unsigned long int yylno = yyrline[yyrule];
+ int yylno = yyrline[yyrule];
int yynrhs = yyr2[yyrule];
int yyi;
- YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
+ YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
yyrule - 1, yylno);
/* The symbols being reduced. */
for (yyi = 0; yyi < yynrhs; yyi++)
{
YYFPRINTF (stderr, " $%d = ", yyi + 1);
yy_symbol_print (stderr,
- yystos[yyssp[yyi + 1 - yynrhs]],
- &(yyvsp[(yyi + 1) - (yynrhs)])
- );
+ YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
+ &yyvsp[(yyi + 1) - (yynrhs)]);
YYFPRINTF (stderr, "\n");
}
}
@@ -1402,8 +1604,8 @@ do { \
multiple parsers can coexist. */
int yydebug;
#else /* !YYDEBUG */
-# define YYDPRINTF(Args)
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
+# define YYDPRINTF(Args) ((void) 0)
+# define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
# define YY_STACK_PRINT(Bottom, Top)
# define YY_REDUCE_PRINT(Rule)
#endif /* !YYDEBUG */
@@ -1426,249 +1628,29 @@ int yydebug;
#endif
-#if YYERROR_VERBOSE
-
-# ifndef yystrlen
-# if defined __GLIBC__ && defined _STRING_H
-# define yystrlen strlen
-# else
-/* Return the length of YYSTR. */
-static YYSIZE_T
-yystrlen (const char *yystr)
-{
- YYSIZE_T yylen;
- for (yylen = 0; yystr[yylen]; yylen++)
- continue;
- return yylen;
-}
-# endif
-# endif
-
-# ifndef yystpcpy
-# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
-# define yystpcpy stpcpy
-# else
-/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
- YYDEST. */
-static char *
-yystpcpy (char *yydest, const char *yysrc)
-{
- char *yyd = yydest;
- const char *yys = yysrc;
- while ((*yyd++ = *yys++) != '\0')
- continue;
- return yyd - 1;
-}
-# endif
-# endif
-
-# ifndef yytnamerr
-/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
- quotes and backslashes, so that it's suitable for yyerror. The
- heuristic is that double-quoting is unnecessary unless the string
- contains an apostrophe, a comma, or backslash (other than
- backslash-backslash). YYSTR is taken from yytname. If YYRES is
- null, do not copy; instead, return the length of what the result
- would have been. */
-static YYSIZE_T
-yytnamerr (char *yyres, const char *yystr)
-{
- if (*yystr == '"')
- {
- YYSIZE_T yyn = 0;
- char const *yyp = yystr;
-
- for (;;)
- switch (*++yyp)
- {
- case '\'':
- case ',':
- goto do_not_strip_quotes;
-
- case '\\':
- if (*++yyp != '\\')
- goto do_not_strip_quotes;
- /* Fall through. */
- default:
- if (yyres)
- yyres[yyn] = *yyp;
- yyn++;
- break;
-
- case '"':
- if (yyres)
- yyres[yyn] = '\0';
- return yyn;
- }
- do_not_strip_quotes: ;
- }
-
- if (! yyres)
- return yystrlen (yystr);
-
- return yystpcpy (yyres, yystr) - yyres;
-}
-# endif
-
-/* Copy into *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)
-{
- 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;
-
- /* 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 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;
-
- 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
- default: /* Avoid compiler warnings. */
- 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. |
`-----------------------------------------------*/
static void
-yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
+yydestruct (const char *yymsg,
+ yysymbol_kind_t yykind, YYSTYPE *yyvaluep)
{
YYUSE (yyvaluep);
if (!yymsg)
yymsg = "Deleting";
- YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+ YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
- YYUSE (yytype);
+ YYUSE (yykind);
YY_IGNORE_MAYBE_UNINITIALIZED_END
}
-
-
/* The lookahead symbol. */
int yychar;
@@ -1678,6 +1660,8 @@ YYSTYPE yylval;
int yynerrs;
+
+
/*----------.
| yyparse. |
`----------*/
@@ -1685,7 +1669,7 @@ int yynerrs;
int
yyparse (void)
{
- int yystate;
+ yy_state_fast_t yystate;
/* Number of tokens to shift before error messages enabled. */
int yyerrstatus;
@@ -1696,32 +1680,29 @@ yyparse (void)
Refer to the stacks through separate pointers, to allow yyoverflow
to reallocate them elsewhere. */
+ /* Their size. */
+ YYPTRDIFF_T yystacksize;
+
/* The state stack. */
- yytype_int16 yyssa[YYINITDEPTH];
- yytype_int16 *yyss;
- yytype_int16 *yyssp;
+ yy_state_t yyssa[YYINITDEPTH];
+ yy_state_t *yyss;
+ yy_state_t *yyssp;
/* The semantic value stack. */
YYSTYPE yyvsa[YYINITDEPTH];
YYSTYPE *yyvs;
YYSTYPE *yyvsp;
- YYSIZE_T yystacksize;
-
int yyn;
+ /* The return value of yyparse. */
int yyresult;
/* Lookahead token as an internal (translated) token number. */
- int yytoken = 0;
+ yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
/* 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];
- char *yymsg = yymsgbuf;
- YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
-#endif
+
#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
@@ -1729,58 +1710,69 @@ yyparse (void)
Keep to zero when no symbol should be popped. */
int yylen = 0;
+ yynerrs = 0;
+ yystate = 0;
+ yyerrstatus = 0;
+
+ yystacksize = YYINITDEPTH;
yyssp = yyss = yyssa;
yyvsp = yyvs = yyvsa;
- yystacksize = YYINITDEPTH;
+
YYDPRINTF ((stderr, "Starting parse\n"));
- yystate = 0;
- yyerrstatus = 0;
- yynerrs = 0;
yychar = YYEMPTY; /* Cause a token to be read. */
goto yysetstate;
+
/*------------------------------------------------------------.
-| yynewstate -- Push a new state, which is found in yystate. |
+| yynewstate -- push a new state, which is found in yystate. |
`------------------------------------------------------------*/
- yynewstate:
+yynewstate:
/* In all cases, when you get here, the value and location stacks
have just been pushed. So pushing a state here evens the stacks. */
yyssp++;
- yysetstate:
- *yyssp = yystate;
+
+/*--------------------------------------------------------------------.
+| yysetstate -- set current state (the top of the stack) to yystate. |
+`--------------------------------------------------------------------*/
+yysetstate:
+ YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+ YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
+ YY_IGNORE_USELESS_CAST_BEGIN
+ *yyssp = YY_CAST (yy_state_t, yystate);
+ YY_IGNORE_USELESS_CAST_END
+ YY_STACK_PRINT (yyss, yyssp);
if (yyss + yystacksize - 1 <= yyssp)
+#if !defined yyoverflow && !defined YYSTACK_RELOCATE
+ goto yyexhaustedlab;
+#else
{
/* Get the current used size of the three stacks, in elements. */
- YYSIZE_T yysize = yyssp - yyss + 1;
+ YYPTRDIFF_T yysize = yyssp - yyss + 1;
-#ifdef yyoverflow
+# if defined 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. */
+ yy_state_t *yyss1 = yyss;
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),
+ &yyss1, yysize * YYSIZEOF (*yyssp),
+ &yyvs1, yysize * YYSIZEOF (*yyvsp),
&yystacksize);
-
yyss = yyss1;
yyvs = yyvs1;
}
-#else /* no yyoverflow */
-# ifndef YYSTACK_RELOCATE
- goto yyexhaustedlab;
-# else
+# else /* defined YYSTACK_RELOCATE */
/* Extend the stack our own way. */
if (YYMAXDEPTH <= yystacksize)
goto yyexhaustedlab;
@@ -1789,9 +1781,10 @@ yyparse (void)
yystacksize = YYMAXDEPTH;
{
- yytype_int16 *yyss1 = yyss;
+ yy_state_t *yyss1 = yyss;
union yyalloc *yyptr =
- (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+ YY_CAST (union yyalloc *,
+ YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
if (! yyptr)
goto yyexhaustedlab;
YYSTACK_RELOCATE (yyss_alloc, yyss);
@@ -1801,30 +1794,30 @@ yyparse (void)
YYSTACK_FREE (yyss1);
}
# endif
-#endif /* no yyoverflow */
yyssp = yyss + yysize - 1;
yyvsp = yyvs + yysize - 1;
- YYDPRINTF ((stderr, "Stack size increased to %lu\n",
- (unsigned long int) yystacksize));
+ YY_IGNORE_USELESS_CAST_BEGIN
+ YYDPRINTF ((stderr, "Stack size increased to %ld\n",
+ YY_CAST (long, yystacksize)));
+ YY_IGNORE_USELESS_CAST_END
if (yyss + yystacksize - 1 <= yyssp)
YYABORT;
}
-
- YYDPRINTF ((stderr, "Entering state %d\n", yystate));
+#endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
if (yystate == YYFINAL)
YYACCEPT;
goto yybackup;
+
/*-----------.
| yybackup. |
`-----------*/
yybackup:
-
/* Do appropriate processing given the current state. Read a
lookahead token if we need one and don't already have one. */
@@ -1835,18 +1828,29 @@ yybackup:
/* Not known => get a lookahead token if don't already have one. */
- /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
+ /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
if (yychar == YYEMPTY)
{
- YYDPRINTF ((stderr, "Reading a token: "));
+ YYDPRINTF ((stderr, "Reading a token\n"));
yychar = yylex ();
}
if (yychar <= YYEOF)
{
- yychar = yytoken = YYEOF;
+ yychar = YYEOF;
+ yytoken = YYSYMBOL_YYEOF;
YYDPRINTF ((stderr, "Now at end of input.\n"));
}
+ else if (yychar == YYerror)
+ {
+ /* The scanner already issued an error message, process directly
+ to error recovery. But do not keep the error token as
+ lookahead, it is too special and may lead us to an endless
+ loop in error recovery. */
+ yychar = YYUNDEF;
+ yytoken = YYSYMBOL_YYerror;
+ goto yyerrlab1;
+ }
else
{
yytoken = YYTRANSLATE (yychar);
@@ -1874,15 +1878,13 @@ yybackup:
/* Shift the lookahead token. */
YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
-
- /* Discard the shifted token. */
- yychar = YYEMPTY;
-
yystate = yyn;
YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
*++yyvsp = yylval;
YY_IGNORE_MAYBE_UNINITIALIZED_END
+ /* Discard the shifted token. */
+ yychar = YYEMPTY;
goto yynewstate;
@@ -1897,7 +1899,7 @@ yydefault:
/*-----------------------------.
-| yyreduce -- Do a reduction. |
+| yyreduce -- do a reduction. |
`-----------------------------*/
yyreduce:
/* yyn is the number of a rule to reduce with. */
@@ -1917,9 +1919,9 @@ yyreduce:
YY_REDUCE_PRINT (yyn);
switch (yyn)
{
- case 2:
-#line 382 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 2:
+#line 382 "/Users/chet/src/bash/src/parse.y"
+ {
/* Case of regular command. Discard the error
safety net,and return the command just parsed. */
global_command = (yyvsp[-1].command);
@@ -1929,12 +1931,12 @@ yyreduce:
parser_state |= PST_EOFTOKEN;
YYACCEPT;
}
-#line 1933 "y.tab.c" /* yacc.c:1648 */
+#line 1935 "y.tab.c"
break;
case 3:
-#line 393 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 393 "/Users/chet/src/bash/src/parse.y"
+ {
/* Case of regular command, but not a very
interesting one. Return a NULL command. */
global_command = (COMMAND *)NULL;
@@ -1942,12 +1944,12 @@ yyreduce:
parser_state |= PST_EOFTOKEN;
YYACCEPT;
}
-#line 1946 "y.tab.c" /* yacc.c:1648 */
+#line 1948 "y.tab.c"
break;
case 4:
-#line 402 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 402 "/Users/chet/src/bash/src/parse.y"
+ {
/* Error during parsing. Return NULL command. */
global_command = (COMMAND *)NULL;
eof_encountered = 0;
@@ -1961,20 +1963,20 @@ yyreduce:
YYABORT;
}
}
-#line 1965 "y.tab.c" /* yacc.c:1648 */
+#line 1967 "y.tab.c"
break;
case 5:
-#line 417 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 417 "/Users/chet/src/bash/src/parse.y"
+ {
/* EOF after an error. Do ignoreeof or not. Really
only interesting in non-interactive shells */
global_command = (COMMAND *)NULL;
if (last_command_exit_value == 0)
last_command_exit_value = EX_BADUSAGE; /* force error return */
- handle_eof_input_unit ();
if (interactive && parse_and_execute_level == 0)
{
+ handle_eof_input_unit ();
YYACCEPT;
}
else
@@ -1982,508 +1984,508 @@ yyreduce:
YYABORT;
}
}
-#line 1986 "y.tab.c" /* yacc.c:1648 */
+#line 1988 "y.tab.c"
break;
case 6:
-#line 434 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 434 "/Users/chet/src/bash/src/parse.y"
+ {
/* Case of EOF seen by itself. Do ignoreeof or
not. */
global_command = (COMMAND *)NULL;
handle_eof_input_unit ();
YYACCEPT;
}
-#line 1998 "y.tab.c" /* yacc.c:1648 */
+#line 2000 "y.tab.c"
break;
case 7:
-#line 444 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 2004 "y.tab.c" /* yacc.c:1648 */
+#line 444 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+#line 2006 "y.tab.c"
break;
case 8:
-#line 446 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-#line 2010 "y.tab.c" /* yacc.c:1648 */
+#line 446 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
+#line 2012 "y.tab.c"
break;
case 9:
-#line 450 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 450 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
-#line 2020 "y.tab.c" /* yacc.c:1648 */
+#line 2022 "y.tab.c"
break;
case 10:
-#line 456 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 456 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
-#line 2030 "y.tab.c" /* yacc.c:1648 */
+#line 2032 "y.tab.c"
break;
case 11:
-#line 462 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 462 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
}
-#line 2040 "y.tab.c" /* yacc.c:1648 */
+#line 2042 "y.tab.c"
break;
case 12:
-#line 468 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 468 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
}
-#line 2050 "y.tab.c" /* yacc.c:1648 */
+#line 2052 "y.tab.c"
break;
case 13:
-#line 474 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 474 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
}
-#line 2060 "y.tab.c" /* yacc.c:1648 */
+#line 2062 "y.tab.c"
break;
case 14:
-#line 480 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 480 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
}
-#line 2070 "y.tab.c" /* yacc.c:1648 */
+#line 2072 "y.tab.c"
break;
case 15:
-#line 486 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 486 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
-#line 2080 "y.tab.c" /* yacc.c:1648 */
+#line 2082 "y.tab.c"
break;
case 16:
-#line 492 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 492 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
}
-#line 2090 "y.tab.c" /* yacc.c:1648 */
+#line 2092 "y.tab.c"
break;
case 17:
-#line 498 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 498 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
}
-#line 2100 "y.tab.c" /* yacc.c:1648 */
+#line 2102 "y.tab.c"
break;
case 18:
-#line 504 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 504 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
-#line 2110 "y.tab.c" /* yacc.c:1648 */
+#line 2112 "y.tab.c"
break;
case 19:
-#line 510 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 510 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
}
-#line 2120 "y.tab.c" /* yacc.c:1648 */
+#line 2122 "y.tab.c"
break;
case 20:
-#line 516 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 516 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
}
-#line 2130 "y.tab.c" /* yacc.c:1648 */
+#line 2132 "y.tab.c"
break;
case 21:
-#line 522 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 522 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
-#line 2140 "y.tab.c" /* yacc.c:1648 */
+#line 2142 "y.tab.c"
break;
case 22:
-#line 528 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 528 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
}
-#line 2150 "y.tab.c" /* yacc.c:1648 */
+#line 2152 "y.tab.c"
break;
case 23:
-#line 534 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 534 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
}
-#line 2160 "y.tab.c" /* yacc.c:1648 */
+#line 2162 "y.tab.c"
break;
case 24:
-#line 540 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 540 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2171 "y.tab.c" /* yacc.c:1648 */
+#line 2173 "y.tab.c"
break;
case 25:
-#line 547 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 547 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2182 "y.tab.c" /* yacc.c:1648 */
+#line 2184 "y.tab.c"
break;
case 26:
-#line 554 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 554 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
push_heredoc ((yyval.redirect));
}
-#line 2193 "y.tab.c" /* yacc.c:1648 */
+#line 2195 "y.tab.c"
break;
case 27:
-#line 561 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 561 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2204 "y.tab.c" /* yacc.c:1648 */
+#line 2206 "y.tab.c"
break;
case 28:
-#line 568 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 568 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
push_heredoc ((yyval.redirect));
}
-#line 2215 "y.tab.c" /* yacc.c:1648 */
+#line 2217 "y.tab.c"
break;
case 29:
-#line 575 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 575 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
push_heredoc ((yyval.redirect));
}
-#line 2226 "y.tab.c" /* yacc.c:1648 */
+#line 2228 "y.tab.c"
break;
case 30:
-#line 582 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 582 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
-#line 2236 "y.tab.c" /* yacc.c:1648 */
+#line 2238 "y.tab.c"
break;
case 31:
-#line 588 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 588 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
}
-#line 2246 "y.tab.c" /* yacc.c:1648 */
+#line 2248 "y.tab.c"
break;
case 32:
-#line 594 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 594 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
}
-#line 2256 "y.tab.c" /* yacc.c:1648 */
+#line 2258 "y.tab.c"
break;
case 33:
-#line 600 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 600 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
-#line 2266 "y.tab.c" /* yacc.c:1648 */
+#line 2268 "y.tab.c"
break;
case 34:
-#line 606 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 606 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
}
-#line 2276 "y.tab.c" /* yacc.c:1648 */
+#line 2278 "y.tab.c"
break;
case 35:
-#line 612 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 612 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
}
-#line 2286 "y.tab.c" /* yacc.c:1648 */
+#line 2288 "y.tab.c"
break;
case 36:
-#line 618 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 618 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
-#line 2296 "y.tab.c" /* yacc.c:1648 */
+#line 2298 "y.tab.c"
break;
case 37:
-#line 624 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 624 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
}
-#line 2306 "y.tab.c" /* yacc.c:1648 */
+#line 2308 "y.tab.c"
break;
case 38:
-#line 630 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 630 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.dest = (yyvsp[0].number);
(yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
}
-#line 2316 "y.tab.c" /* yacc.c:1648 */
+#line 2318 "y.tab.c"
break;
case 39:
-#line 636 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 636 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
-#line 2326 "y.tab.c" /* yacc.c:1648 */
+#line 2328 "y.tab.c"
break;
case 40:
-#line 642 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 642 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
}
-#line 2336 "y.tab.c" /* yacc.c:1648 */
+#line 2338 "y.tab.c"
break;
case 41:
-#line 648 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 648 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
}
-#line 2346 "y.tab.c" /* yacc.c:1648 */
+#line 2348 "y.tab.c"
break;
case 42:
-#line 654 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 654 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
-#line 2356 "y.tab.c" /* yacc.c:1648 */
+#line 2358 "y.tab.c"
break;
case 43:
-#line 660 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 660 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
}
-#line 2366 "y.tab.c" /* yacc.c:1648 */
+#line 2368 "y.tab.c"
break;
case 44:
-#line 666 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 666 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
}
-#line 2376 "y.tab.c" /* yacc.c:1648 */
+#line 2378 "y.tab.c"
break;
case 45:
-#line 672 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 672 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2386 "y.tab.c" /* yacc.c:1648 */
+#line 2388 "y.tab.c"
break;
case 46:
-#line 678 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 678 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2396 "y.tab.c" /* yacc.c:1648 */
+#line 2398 "y.tab.c"
break;
case 47:
-#line 684 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 684 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
-#line 2406 "y.tab.c" /* yacc.c:1648 */
+#line 2408 "y.tab.c"
break;
case 48:
-#line 690 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 690 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 0;
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2416 "y.tab.c" /* yacc.c:1648 */
+#line 2418 "y.tab.c"
break;
case 49:
-#line 696 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 696 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = (yyvsp[-2].number);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
}
-#line 2426 "y.tab.c" /* yacc.c:1648 */
+#line 2428 "y.tab.c"
break;
case 50:
-#line 702 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 702 "/Users/chet/src/bash/src/parse.y"
+ {
source.filename = (yyvsp[-2].word);
redir.dest = 0;
(yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
}
-#line 2436 "y.tab.c" /* yacc.c:1648 */
+#line 2438 "y.tab.c"
break;
case 51:
-#line 708 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 708 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
}
-#line 2446 "y.tab.c" /* yacc.c:1648 */
+#line 2448 "y.tab.c"
break;
case 52:
-#line 714 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 714 "/Users/chet/src/bash/src/parse.y"
+ {
source.dest = 1;
redir.filename = (yyvsp[0].word);
(yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
}
-#line 2456 "y.tab.c" /* yacc.c:1648 */
+#line 2458 "y.tab.c"
break;
case 53:
-#line 722 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2462 "y.tab.c" /* yacc.c:1648 */
+#line 722 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+#line 2464 "y.tab.c"
break;
case 54:
-#line 724 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2468 "y.tab.c" /* yacc.c:1648 */
+#line 724 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
+#line 2470 "y.tab.c"
break;
case 55:
-#line 726 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-#line 2474 "y.tab.c" /* yacc.c:1648 */
+#line 726 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
+#line 2476 "y.tab.c"
break;
case 56:
-#line 730 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 730 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.redirect) = (yyvsp[0].redirect);
}
-#line 2482 "y.tab.c" /* yacc.c:1648 */
+#line 2484 "y.tab.c"
break;
case 57:
-#line 734 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 734 "/Users/chet/src/bash/src/parse.y"
+ {
register REDIRECT *t;
for (t = (yyvsp[-1].redirect); t->next; t = t->next)
@@ -2491,36 +2493,36 @@ yyreduce:
t->next = (yyvsp[0].redirect);
(yyval.redirect) = (yyvsp[-1].redirect);
}
-#line 2495 "y.tab.c" /* yacc.c:1648 */
+#line 2497 "y.tab.c"
break;
case 58:
-#line 745 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-#line 2501 "y.tab.c" /* yacc.c:1648 */
+#line 745 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
+#line 2503 "y.tab.c"
break;
case 59:
-#line 747 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-#line 2507 "y.tab.c" /* yacc.c:1648 */
+#line 747 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
+#line 2509 "y.tab.c"
break;
case 60:
-#line 751 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-#line 2513 "y.tab.c" /* yacc.c:1648 */
+#line 751 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
+#line 2515 "y.tab.c"
break;
case 61:
-#line 753 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2519 "y.tab.c" /* yacc.c:1648 */
+#line 753 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2521 "y.tab.c"
break;
case 62:
-#line 755 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 755 "/Users/chet/src/bash/src/parse.y"
+ {
COMMAND *tc;
tc = (yyvsp[-1].command);
@@ -2535,325 +2537,331 @@ yyreduce:
tc->redirects = (yyvsp[0].redirect);
(yyval.command) = (yyvsp[-1].command);
}
-#line 2539 "y.tab.c" /* yacc.c:1648 */
+#line 2541 "y.tab.c"
break;
case 63:
-#line 771 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2545 "y.tab.c" /* yacc.c:1648 */
+#line 771 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2547 "y.tab.c"
break;
case 64:
-#line 773 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2551 "y.tab.c" /* yacc.c:1648 */
+#line 773 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2553 "y.tab.c"
break;
case 65:
-#line 777 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2557 "y.tab.c" /* yacc.c:1648 */
+#line 777 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2559 "y.tab.c"
break;
case 66:
-#line 779 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2563 "y.tab.c" /* yacc.c:1648 */
+#line 779 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2565 "y.tab.c"
break;
case 67:
-#line 781 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2569 "y.tab.c" /* yacc.c:1648 */
+#line 781 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+#line 2571 "y.tab.c"
break;
case 68:
-#line 783 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2575 "y.tab.c" /* yacc.c:1648 */
+#line 783 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
+#line 2577 "y.tab.c"
break;
case 69:
-#line 785 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2581 "y.tab.c" /* yacc.c:1648 */
+#line 785 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2583 "y.tab.c"
break;
case 70:
-#line 787 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2587 "y.tab.c" /* yacc.c:1648 */
+#line 787 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2589 "y.tab.c"
break;
case 71:
-#line 789 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2593 "y.tab.c" /* yacc.c:1648 */
+#line 789 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2595 "y.tab.c"
break;
case 72:
-#line 791 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2599 "y.tab.c" /* yacc.c:1648 */
+#line 791 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2601 "y.tab.c"
break;
case 73:
-#line 793 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2605 "y.tab.c" /* yacc.c:1648 */
+#line 793 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2607 "y.tab.c"
break;
case 74:
-#line 795 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2611 "y.tab.c" /* yacc.c:1648 */
+#line 795 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2613 "y.tab.c"
break;
case 75:
-#line 797 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2617 "y.tab.c" /* yacc.c:1648 */
+#line 797 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2619 "y.tab.c"
break;
case 76:
-#line 801 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 801 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2626 "y.tab.c" /* yacc.c:1648 */
+#line 2628 "y.tab.c"
break;
case 77:
-#line 806 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 806 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2635 "y.tab.c" /* yacc.c:1648 */
+#line 2637 "y.tab.c"
break;
case 78:
-#line 811 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 811 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2644 "y.tab.c" /* yacc.c:1648 */
+#line 2646 "y.tab.c"
break;
case 79:
-#line 816 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 816 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2653 "y.tab.c" /* yacc.c:1648 */
+#line 2655 "y.tab.c"
break;
case 80:
-#line 821 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 821 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2662 "y.tab.c" /* yacc.c:1648 */
+#line 2664 "y.tab.c"
break;
case 81:
-#line 826 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 826 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2671 "y.tab.c" /* yacc.c:1648 */
+#line 2673 "y.tab.c"
break;
case 82:
-#line 831 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 831 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2680 "y.tab.c" /* yacc.c:1648 */
+#line 2682 "y.tab.c"
break;
case 83:
-#line 836 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 836 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2689 "y.tab.c" /* yacc.c:1648 */
+#line 2691 "y.tab.c"
break;
case 84:
-#line 843 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 843 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2699 "y.tab.c" /* yacc.c:1648 */
+#line 2701 "y.tab.c"
break;
case 85:
-#line 849 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 849 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2709 "y.tab.c" /* yacc.c:1648 */
+#line 2711 "y.tab.c"
break;
case 86:
-#line 855 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 855 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2719 "y.tab.c" /* yacc.c:1648 */
+#line 2721 "y.tab.c"
break;
case 87:
-#line 861 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 861 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
if ((yyval.command) == 0) YYERROR;
if (word_top > 0) word_top--;
}
-#line 2729 "y.tab.c" /* yacc.c:1648 */
+#line 2731 "y.tab.c"
break;
case 88:
-#line 869 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 869 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2738 "y.tab.c" /* yacc.c:1648 */
+#line 2740 "y.tab.c"
break;
case 89:
-#line 874 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 874 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2747 "y.tab.c" /* yacc.c:1648 */
+#line 2749 "y.tab.c"
break;
case 90:
-#line 879 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 879 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2756 "y.tab.c" /* yacc.c:1648 */
+#line 2758 "y.tab.c"
break;
case 91:
-#line 884 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 884 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2765 "y.tab.c" /* yacc.c:1648 */
+#line 2767 "y.tab.c"
break;
case 92:
-#line 889 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 889 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2774 "y.tab.c" /* yacc.c:1648 */
+#line 2776 "y.tab.c"
break;
case 93:
-#line 894 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 894 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2783 "y.tab.c" /* yacc.c:1648 */
+#line 2785 "y.tab.c"
break;
case 94:
-#line 899 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 899 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2792 "y.tab.c" /* yacc.c:1648 */
+#line 2794 "y.tab.c"
break;
case 95:
-#line 904 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 904 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2801 "y.tab.c" /* yacc.c:1648 */
+#line 2803 "y.tab.c"
break;
case 96:
-#line 911 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 911 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2810 "y.tab.c" /* yacc.c:1648 */
+#line 2812 "y.tab.c"
break;
case 97:
-#line 916 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 916 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2819 "y.tab.c" /* yacc.c:1648 */
+#line 2821 "y.tab.c"
break;
case 98:
-#line 921 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 921 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
if (word_top > 0) word_top--;
}
-#line 2828 "y.tab.c" /* yacc.c:1648 */
+#line 2830 "y.tab.c"
break;
case 99:
-#line 928 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2834 "y.tab.c" /* yacc.c:1648 */
+#line 928 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2836 "y.tab.c"
break;
case 100:
-#line 931 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2840 "y.tab.c" /* yacc.c:1648 */
+#line 930 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2842 "y.tab.c"
break;
case 101:
-#line 934 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_function_def ((yyvsp[-2].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2846 "y.tab.c" /* yacc.c:1648 */
+#line 932 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2848 "y.tab.c"
break;
case 102:
-#line 938 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 2852 "y.tab.c" /* yacc.c:1648 */
+#line 934 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
+#line 2854 "y.tab.c"
break;
case 103:
-#line 940 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 938 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 2860 "y.tab.c"
+ break;
+
+ case 104:
+#line 940 "/Users/chet/src/bash/src/parse.y"
+ {
COMMAND *tc;
tc = (yyvsp[-1].command);
@@ -2881,30 +2889,30 @@ yyreduce:
tc->redirects = (yyvsp[0].redirect);
(yyval.command) = (yyvsp[-1].command);
}
-#line 2885 "y.tab.c" /* yacc.c:1648 */
+#line 2893 "y.tab.c"
break;
- case 104:
-#line 971 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 105:
+#line 971 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_subshell_command ((yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL;
}
-#line 2894 "y.tab.c" /* yacc.c:1648 */
+#line 2902 "y.tab.c"
break;
- case 105:
-#line 978 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 106:
+#line 978 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2903 "y.tab.c" /* yacc.c:1648 */
+#line 2911 "y.tab.c"
break;
- case 106:
-#line 983 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 107:
+#line 983 "/Users/chet/src/bash/src/parse.y"
+ {
COMMAND *tc;
tc = (yyvsp[-1].command);
@@ -2920,21 +2928,21 @@ yyreduce:
(yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2924 "y.tab.c" /* yacc.c:1648 */
+#line 2932 "y.tab.c"
break;
- case 107:
-#line 1000 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 108:
+#line 1000 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2933 "y.tab.c" /* yacc.c:1648 */
+#line 2941 "y.tab.c"
break;
- case 108:
-#line 1005 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 109:
+#line 1005 "/Users/chet/src/bash/src/parse.y"
+ {
COMMAND *tc;
tc = (yyvsp[-1].command);
@@ -2950,241 +2958,241 @@ yyreduce:
(yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2954 "y.tab.c" /* yacc.c:1648 */
+#line 2962 "y.tab.c"
break;
- case 109:
-#line 1022 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 110:
+#line 1022 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
(yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
}
-#line 2963 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 110:
-#line 1029 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-#line 2969 "y.tab.c" /* yacc.c:1648 */
+#line 2971 "y.tab.c"
break;
case 111:
-#line 1031 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2975 "y.tab.c" /* yacc.c:1648 */
+#line 1029 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
+#line 2977 "y.tab.c"
break;
case 112:
-#line 1033 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-#line 2981 "y.tab.c" /* yacc.c:1648 */
+#line 1031 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
+#line 2983 "y.tab.c"
break;
case 113:
-#line 1038 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-#line 2987 "y.tab.c" /* yacc.c:1648 */
+#line 1033 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
+#line 2989 "y.tab.c"
break;
case 114:
-#line 1042 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-#line 2993 "y.tab.c" /* yacc.c:1648 */
+#line 1038 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
+#line 2995 "y.tab.c"
break;
case 115:
-#line 1046 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[-1].command); }
-#line 2999 "y.tab.c" /* yacc.c:1648 */
+#line 1042 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
+#line 3001 "y.tab.c"
break;
case 116:
-#line 1050 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-#line 3005 "y.tab.c" /* yacc.c:1648 */
+#line 1046 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[-1].command); }
+#line 3007 "y.tab.c"
break;
case 117:
-#line 1052 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-#line 3011 "y.tab.c" /* yacc.c:1648 */
+#line 1050 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
+#line 3013 "y.tab.c"
break;
case 118:
-#line 1054 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-#line 3017 "y.tab.c" /* yacc.c:1648 */
+#line 1052 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
+#line 3019 "y.tab.c"
break;
- case 120:
-#line 1059 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-#line 3023 "y.tab.c" /* yacc.c:1648 */
+ case 119:
+#line 1054 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
+#line 3025 "y.tab.c"
break;
case 121:
-#line 1063 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3029 "y.tab.c" /* yacc.c:1648 */
+#line 1059 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
+#line 3031 "y.tab.c"
break;
case 122:
-#line 1065 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3035 "y.tab.c" /* yacc.c:1648 */
+#line 1063 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+#line 3037 "y.tab.c"
break;
case 123:
-#line 1067 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3041 "y.tab.c" /* yacc.c:1648 */
+#line 1065 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+#line 3043 "y.tab.c"
break;
case 124:
-#line 1069 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3047 "y.tab.c" /* yacc.c:1648 */
+#line 1067 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
+#line 3049 "y.tab.c"
break;
case 125:
-#line 1073 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3053 "y.tab.c" /* yacc.c:1648 */
+#line 1069 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
+#line 3055 "y.tab.c"
break;
case 126:
-#line 1075 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3059 "y.tab.c" /* yacc.c:1648 */
+#line 1073 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3061 "y.tab.c"
break;
case 127:
-#line 1077 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3065 "y.tab.c" /* yacc.c:1648 */
+#line 1075 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3067 "y.tab.c"
break;
case 128:
-#line 1079 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3071 "y.tab.c" /* yacc.c:1648 */
+#line 1077 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3073 "y.tab.c"
break;
case 129:
-#line 1081 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3077 "y.tab.c" /* yacc.c:1648 */
+#line 1079 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3079 "y.tab.c"
break;
case 130:
-#line 1083 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3083 "y.tab.c" /* yacc.c:1648 */
+#line 1081 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3085 "y.tab.c"
break;
case 131:
-#line 1087 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 3089 "y.tab.c" /* yacc.c:1648 */
+#line 1083 "/Users/chet/src/bash/src/parse.y"
+ { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
+#line 3091 "y.tab.c"
break;
case 132:
-#line 1089 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-#line 3095 "y.tab.c" /* yacc.c:1648 */
+#line 1087 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
+#line 3097 "y.tab.c"
break;
case 133:
-#line 1098 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 1089 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
+#line 3103 "y.tab.c"
+ break;
+
+ case 134:
+#line 1098 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = (yyvsp[0].command);
if (need_here_doc)
gather_here_documents ();
}
-#line 3105 "y.tab.c" /* yacc.c:1648 */
+#line 3113 "y.tab.c"
break;
- case 135:
-#line 1107 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 136:
+#line 1107 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = (yyvsp[0].command);
}
-#line 3113 "y.tab.c" /* yacc.c:1648 */
+#line 3121 "y.tab.c"
break;
- case 137:
-#line 1114 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 138:
+#line 1114 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[-2].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&');
else
(yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
}
-#line 3124 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 139:
-#line 1125 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3130 "y.tab.c" /* yacc.c:1648 */
+#line 3132 "y.tab.c"
break;
case 140:
-#line 1127 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3136 "y.tab.c" /* yacc.c:1648 */
+#line 1125 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+#line 3138 "y.tab.c"
break;
case 141:
-#line 1129 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 1127 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+#line 3144 "y.tab.c"
+ break;
+
+ case 142:
+#line 1129 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[-3].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&');
else
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
}
-#line 3147 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 142:
-#line 1136 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3153 "y.tab.c" /* yacc.c:1648 */
+#line 3155 "y.tab.c"
break;
case 143:
-#line 1138 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3159 "y.tab.c" /* yacc.c:1648 */
+#line 1136 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+#line 3161 "y.tab.c"
break;
case 144:
-#line 1140 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 3165 "y.tab.c" /* yacc.c:1648 */
+#line 1138 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
+#line 3167 "y.tab.c"
break;
- case 147:
-#line 1148 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = '\n'; }
-#line 3171 "y.tab.c" /* yacc.c:1648 */
+ case 145:
+#line 1140 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 3173 "y.tab.c"
break;
case 148:
-#line 1150 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = ';'; }
-#line 3177 "y.tab.c" /* yacc.c:1648 */
+#line 1148 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = '\n'; }
+#line 3179 "y.tab.c"
break;
case 149:
-#line 1152 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = yacc_EOF; }
-#line 3183 "y.tab.c" /* yacc.c:1648 */
+#line 1150 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = ';'; }
+#line 3185 "y.tab.c"
break;
- case 152:
-#line 1166 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 150:
+#line 1152 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = yacc_EOF; }
+#line 3191 "y.tab.c"
+ break;
+
+ case 153:
+#line 1166 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = (yyvsp[0].command);
if (need_here_doc)
gather_here_documents ();
@@ -3196,12 +3204,12 @@ yyreduce:
YYACCEPT;
}
}
-#line 3200 "y.tab.c" /* yacc.c:1648 */
+#line 3208 "y.tab.c"
break;
- case 153:
-#line 1179 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 154:
+#line 1179 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[-1].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&');
else
@@ -3216,12 +3224,12 @@ yyreduce:
YYACCEPT;
}
}
-#line 3220 "y.tab.c" /* yacc.c:1648 */
+#line 3228 "y.tab.c"
break;
- case 154:
-#line 1195 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 155:
+#line 1195 "/Users/chet/src/bash/src/parse.y"
+ {
(yyval.command) = (yyvsp[-1].command);
if (need_here_doc)
gather_here_documents ();
@@ -3233,73 +3241,73 @@ yyreduce:
YYACCEPT;
}
}
-#line 3237 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 155:
-#line 1210 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3243 "y.tab.c" /* yacc.c:1648 */
+#line 3245 "y.tab.c"
break;
case 156:
-#line 1212 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3249 "y.tab.c" /* yacc.c:1648 */
+#line 1210 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
+#line 3251 "y.tab.c"
break;
case 157:
-#line 1214 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 1212 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
+#line 3257 "y.tab.c"
+ break;
+
+ case 158:
+#line 1214 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[-2].command)->type == cm_connection)
(yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&');
else
(yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
}
-#line 3260 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 158:
-#line 1221 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-#line 3266 "y.tab.c" /* yacc.c:1648 */
+#line 3268 "y.tab.c"
break;
case 159:
-#line 1224 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 3272 "y.tab.c" /* yacc.c:1648 */
+#line 1221 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
+#line 3274 "y.tab.c"
break;
case 160:
-#line 1228 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 3278 "y.tab.c" /* yacc.c:1648 */
+#line 1224 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 3280 "y.tab.c"
break;
case 161:
-#line 1230 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+#line 1228 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 3286 "y.tab.c"
+ break;
+
+ case 162:
+#line 1230 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[0].command))
(yyvsp[0].command)->flags ^= CMD_INVERT_RETURN; /* toggle */
(yyval.command) = (yyvsp[0].command);
}
-#line 3288 "y.tab.c" /* yacc.c:1648 */
+#line 3296 "y.tab.c"
break;
- case 162:
-#line 1236 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 163:
+#line 1236 "/Users/chet/src/bash/src/parse.y"
+ {
if ((yyvsp[0].command))
(yyvsp[0].command)->flags |= (yyvsp[-1].number);
(yyval.command) = (yyvsp[0].command);
}
-#line 3298 "y.tab.c" /* yacc.c:1648 */
+#line 3306 "y.tab.c"
break;
- case 163:
-#line 1242 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 164:
+#line 1242 "/Users/chet/src/bash/src/parse.y"
+ {
ELEMENT x;
/* Boy, this is unclean. `time' by itself can
@@ -3318,12 +3326,12 @@ yyreduce:
token_to_read = ';';
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
-#line 3322 "y.tab.c" /* yacc.c:1648 */
+#line 3330 "y.tab.c"
break;
- case 164:
-#line 1262 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 165:
+#line 1262 "/Users/chet/src/bash/src/parse.y"
+ {
ELEMENT x;
/* This is just as unclean. Posix says that `!'
@@ -3343,18 +3351,18 @@ yyreduce:
token_to_read = ';';
parser_state &= ~PST_REDIRLIST; /* make_simple_command sets this */
}
-#line 3347 "y.tab.c" /* yacc.c:1648 */
+#line 3355 "y.tab.c"
break;
- case 165:
-#line 1285 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-#line 3353 "y.tab.c" /* yacc.c:1648 */
+ case 166:
+#line 1285 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
+#line 3361 "y.tab.c"
break;
- case 166:
-#line 1287 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- {
+ case 167:
+#line 1287 "/Users/chet/src/bash/src/parse.y"
+ {
/* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
COMMAND *tc;
REDIRECTEE rd, sd;
@@ -3376,35 +3384,42 @@ yyreduce:
(yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
}
-#line 3380 "y.tab.c" /* yacc.c:1648 */
- break;
-
- case 167:
-#line 1310 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.command) = (yyvsp[0].command); }
-#line 3386 "y.tab.c" /* yacc.c:1648 */
+#line 3388 "y.tab.c"
break;
case 168:
-#line 1314 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = CMD_TIME_PIPELINE; }
-#line 3392 "y.tab.c" /* yacc.c:1648 */
+#line 1310 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.command) = (yyvsp[0].command); }
+#line 3394 "y.tab.c"
break;
case 169:
-#line 1316 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3398 "y.tab.c" /* yacc.c:1648 */
+#line 1314 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE; }
+#line 3400 "y.tab.c"
break;
case 170:
-#line 1318 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1648 */
- { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3404 "y.tab.c" /* yacc.c:1648 */
+#line 1316 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+#line 3406 "y.tab.c"
break;
+ case 171:
+#line 1318 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+#line 3412 "y.tab.c"
+ break;
+
+ case 172:
+#line 1320 "/Users/chet/src/bash/src/parse.y"
+ { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
+#line 3418 "y.tab.c"
+ break;
+
+
+#line 3422 "y.tab.c"
-#line 3408 "y.tab.c" /* yacc.c:1648 */
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
@@ -3418,25 +3433,23 @@ yyreduce:
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);
+ YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
YYPOPSTACK (yylen);
yylen = 0;
- YY_STACK_PRINT (yyss, yyssp);
*++yyvsp = yyval;
/* Now 'shift' the result of the reduction. Determine what state
that goes to, based on the state we popped back to and the rule
number reduced by. */
-
- yyn = yyr1[yyn];
-
- yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
- if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
- yystate = yytable[yystate];
- else
- yystate = yydefgoto[yyn - YYNTOKENS];
+ {
+ const int yylhs = yyr1[yyn] - YYNTOKENS;
+ const int yyi = yypgoto[yylhs] + *yyssp;
+ yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
+ ? yytable[yyi]
+ : yydefgoto[yylhs]);
+ }
goto yynewstate;
@@ -3447,50 +3460,14 @@ yyreduce:
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);
-
+ yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
/* If not already recovering from an error, report this error. */
if (!yyerrstatus)
{
++yynerrs;
-#if ! YYERROR_VERBOSE
yyerror (YY_("syntax error"));
-#else
-# define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \
- yyssp, yytoken)
- {
- 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
}
-
-
if (yyerrstatus == 3)
{
/* If just tried and failed to reuse lookahead token after an
@@ -3519,12 +3496,10 @@ yyerrlab:
| yyerrorlab -- error raised explicitly by YYERROR. |
`---------------------------------------------------*/
yyerrorlab:
-
- /* Pacify compilers like GCC when the user code never invokes
- YYERROR and the label yyerrorlab therefore never appears in user
- code. */
- if (/*CONSTCOND*/ 0)
- goto yyerrorlab;
+ /* Pacify compilers when the user code never invokes YYERROR and the
+ label yyerrorlab therefore never appears in user code. */
+ if (0)
+ YYERROR;
/* Do not reclaim the symbols of the rule whose action triggered
this YYERROR. */
@@ -3541,13 +3516,14 @@ yyerrorlab:
yyerrlab1:
yyerrstatus = 3; /* Each real token shifted decrements this. */
+ /* Pop stack until we find a state that shifts the error token. */
for (;;)
{
yyn = yypact[yystate];
if (!yypact_value_is_default (yyn))
{
- yyn += YYTERROR;
- if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+ yyn += YYSYMBOL_YYerror;
+ if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
{
yyn = yytable[yyn];
if (0 < yyn)
@@ -3561,7 +3537,7 @@ yyerrlab1:
yydestruct ("Error: popping",
- yystos[yystate], yyvsp);
+ YY_ACCESSING_SYMBOL (yystate), yyvsp);
YYPOPSTACK (1);
yystate = *yyssp;
YY_STACK_PRINT (yyss, yyssp);
@@ -3573,7 +3549,7 @@ yyerrlab1:
/* Shift the error token. */
- YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
+ YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
yystate = yyn;
goto yynewstate;
@@ -3586,6 +3562,7 @@ yyacceptlab:
yyresult = 0;
goto yyreturn;
+
/*-----------------------------------.
| yyabortlab -- YYABORT comes here. |
`-----------------------------------*/
@@ -3593,7 +3570,8 @@ yyabortlab:
yyresult = 1;
goto yyreturn;
-#if !defined yyoverflow || YYERROR_VERBOSE
+
+#if !defined yyoverflow
/*-------------------------------------------------.
| yyexhaustedlab -- memory exhaustion comes here. |
`-------------------------------------------------*/
@@ -3603,6 +3581,10 @@ yyexhaustedlab:
/* Fall through. */
#endif
+
+/*-----------------------------------------------------.
+| yyreturn -- parsing is finished, return the result. |
+`-----------------------------------------------------*/
yyreturn:
if (yychar != YYEMPTY)
{
@@ -3619,20 +3601,18 @@ yyreturn:
while (yyssp != yyss)
{
yydestruct ("Cleanup: popping",
- yystos[*yyssp], yyvsp);
+ YY_ACCESSING_SYMBOL (+*yyssp), yyvsp);
YYPOPSTACK (1);
}
#ifndef yyoverflow
if (yyss != yyssa)
YYSTACK_FREE (yyss);
#endif
-#if YYERROR_VERBOSE
- if (yymsg != yymsgbuf)
- YYSTACK_FREE (yymsg);
-#endif
+
return yyresult;
}
-#line 1320 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1907 */
+
+#line 1322 "/Users/chet/src/bash/src/parse.y"
/* Initial size to allocate for tokens, and the
@@ -3795,7 +3775,6 @@ yy_readline_get ()
old_sigint = IMPOSSIBLE_TRAP_HANDLER;
if (signal_is_ignored (SIGINT) == 0)
{
- /* interrupt_immediately++; */
old_sigint = (SigHandler *)set_signal_handler (SIGINT, sigint_sighandler);
}
@@ -3806,7 +3785,6 @@ yy_readline_get ()
CHECK_TERMSIG;
if (signal_is_ignored (SIGINT) == 0)
{
- /* interrupt_immediately--; */
if (old_sigint != IMPOSSIBLE_TRAP_HANDLER)
set_signal_handler (SIGINT, old_sigint);
}
@@ -3862,6 +3840,16 @@ with_input_from_stdin ()
}
}
+/* Will we be collecting another input line and printing a prompt? This uses
+ different conditions than SHOULD_PROMPT(), since readline allows a user to
+ embed a newline in the middle of the line it collects, which the parser
+ will interpret as a line break and command delimiter. */
+int
+parser_will_prompt ()
+{
+ return (current_readline_line == 0 || current_readline_line[current_readline_line_index] == 0);
+}
+
#else /* !READLINE */
void
@@ -3950,9 +3938,9 @@ rewind_input_string ()
/* These two functions used to test the value of the HAVE_RESTARTABLE_SYSCALLS
define, and just use getc/ungetc if it was defined, but since bash
- installs its signal handlers without the SA_RESTART flag, some signals
- (like SIGCHLD, SIGWINCH, etc.) received during a read(2) will not cause
- the read to be restarted. We need to restart it ourselves. */
+ installs most of its signal handlers without the SA_RESTART flag, some
+ signals received during a read(2) will not cause the read to be restarted.
+ We will need to restart it ourselves. */
static int
yy_stream_get ()
@@ -4145,6 +4133,7 @@ restore_token_state (ts)
#define PSH_ALIAS 0x01
#define PSH_DPAREN 0x02
#define PSH_SOURCE 0x04
+#define PSH_ARRAY 0x08
typedef struct string_saver {
struct string_saver *next;
@@ -4576,6 +4565,8 @@ static struct dstack temp_dstack = { (char *)NULL, 0, 0 };
shell_ungetc when we're at the start of a line. */
static int eol_ungetc_lookahead = 0;
+static int unquoted_backslash = 0;
+
static int
shell_getc (remove_quoted_newline)
int remove_quoted_newline;
@@ -4629,7 +4620,7 @@ shell_getc (remove_quoted_newline)
i = truncating = 0;
shell_input_line_terminator = 0;
- /* If the shell is interatctive, but not currently printing a prompt
+ /* If the shell is interactive, but not currently printing a prompt
(interactive_shell && interactive == 0), we don't want to print
notifies or cleanup the jobs -- we want to defer it until we do
print the next prompt. */
@@ -4836,15 +4827,36 @@ shell_getc (remove_quoted_newline)
shell_input_line[shell_input_line_len] = '\n';
shell_input_line[shell_input_line_len + 1] = '\0';
- set_line_mbstate ();
+#if 0
+ set_line_mbstate (); /* XXX - this is wasteful */
+#else
+# if defined (HANDLE_MULTIBYTE)
+ /* This is kind of an abstraction violation, but there's no need to
+ go through the entire shell_input_line again with a call to
+ set_line_mbstate(). */
+ if (shell_input_line_len + 2 > shell_input_line_propsize)
+ {
+ shell_input_line_propsize = shell_input_line_len + 2;
+ shell_input_line_property = (char *)xrealloc (shell_input_line_property,
+ shell_input_line_propsize);
+ }
+ shell_input_line_property[shell_input_line_len] = 1;
+# endif
+#endif
}
}
next_alias_char:
+ if (shell_input_line_index == 0)
+ unquoted_backslash = 0;
+
uc = shell_input_line[shell_input_line_index];
if (uc)
- shell_input_line_index++;
+ {
+ unquoted_backslash = unquoted_backslash == 0 && uc == '\\';
+ shell_input_line_index++;
+ }
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
/* If UC is NULL, we have reached the end of the current input string. If
@@ -4877,6 +4889,7 @@ next_alias_char:
shell_input_line_index > 0 &&
shellblank (shell_input_line[shell_input_line_index-1]) == 0 &&
shell_input_line[shell_input_line_index-1] != '\n' &&
+ unquoted_backslash == 0 &&
shellmeta (shell_input_line[shell_input_line_index-1]) == 0 &&
(current_delimiter (dstack) != '\'' && current_delimiter (dstack) != '"'))
{
@@ -4902,6 +4915,7 @@ pop_alias:
if (SHOULD_PROMPT ())
prompt_again ();
line_number++;
+
/* What do we do here if we're expanding an alias whose definition
includes an escaped newline? If that's the last character in the
alias expansion, we just pop the pushed string list (recall that
@@ -5336,7 +5350,7 @@ time_command_acceptable ()
`}' is recognized if there is an unclosed `{' present.
`-p' is returned as TIMEOPT if the last read token was TIME.
- `--' is returned as TIMEIGN if the last read token was TIMEOPT.
+ `--' is returned as TIMEIGN if the last read token was TIME or TIMEOPT.
']]' is returned as COND_END if the parser is currently parsing
a conditional expression ((parser_state & PST_CONDEXPR) != 0)
@@ -5452,6 +5466,9 @@ special_case_tokens (tokstr)
/* Handle -p after `time'. */
if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == 'p' && !tokstr[2])
return (TIMEOPT);
+ /* Handle -- after `time'. */
+ if (last_read_token == TIME && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2])
+ return (TIMEIGN);
/* Handle -- after `time -p'. */
if (last_read_token == TIMEOPT && tokstr[0] == '-' && tokstr[1] == '-' && !tokstr[2])
return (TIMEIGN);
@@ -5746,7 +5763,7 @@ itrace("shell_getc: bash_input.location.string = `%s'", bash_input.location.stri
#if defined (PROCESS_SUBSTITUTION)
/* Check for the constructs which introduce process substitution.
Shells running in `posix mode' don't do process substitution. */
- if MBTEST(posixly_correct || ((character != '>' && character != '<') || peek_char != '(')) /*)*/
+ if MBTEST((character != '>' && character != '<') || peek_char != '(') /*)*/
#endif /* PROCESS_SUBSTITUTION */
return (character);
}
@@ -6183,7 +6200,7 @@ parse_comsub (qc, open, close, lenp, flags)
int *lenp, flags;
{
int count, ch, peekc, tflags, lex_rwlen, lex_wlen, lex_firstind;
- int nestlen, ttranslen, start_lineno;
+ int nestlen, ttranslen, start_lineno, orig_histexp;
char *ret, *nestret, *ttrans, *heredelim;
int retind, retsize, rflags, hdlen;
@@ -6197,6 +6214,9 @@ parse_comsub (qc, open, close, lenp, flags)
/*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/
count = 1;
tflags = LEX_RESWDOK;
+#if defined (BANG_HISTORY)
+ orig_histexp = history_expansion_inhibited;
+#endif
if ((flags & P_COMMAND) && qc != '\'' && qc != '"' && (flags & P_DQUOTE) == 0)
tflags |= LEX_CKCASE;
@@ -6223,6 +6243,9 @@ comsub_readchar:
if (ch == EOF)
{
eof_error:
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
free (ret);
FREE (heredelim);
parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
@@ -6241,6 +6264,9 @@ eof_error:
{
tflags &= ~LEX_HEREDELIM;
tflags |= LEX_INHEREDOC;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
lex_firstind = retind + 1;
}
else if (tflags & LEX_INHEREDOC)
@@ -6256,6 +6282,9 @@ eof_error:
free (heredelim);
heredelim = 0;
lex_firstind = -1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
}
else
lex_firstind = retind + 1;
@@ -6266,8 +6295,9 @@ eof_error:
if (ch == '\n' && SHOULD_PROMPT ())
prompt_again ();
- /* XXX -- possibly allow here doc to be delimited by ending right
- paren. */
+ /* XXX -- we currently allow here doc to be delimited by ending right
+ paren in default mode and posix mode. To change posix mode, change
+ the #if 1 to #if 0 below */
if ((tflags & LEX_INHEREDOC) && ch == close && count == 1)
{
int tind;
@@ -6275,13 +6305,23 @@ eof_error:
tind = lex_firstind;
while ((tflags & LEX_STRIPDOC) && ret[tind] == '\t')
tind++;
- if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
+#if 1
+ if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen))
+#else
+ /* Posix-mode shells require the newline after the here-document
+ delimiter. */
+ if (retind-tind == hdlen && STREQN (ret + tind, heredelim, hdlen) &&
+ posixly_correct == 0)
+#endif
{
tflags &= ~(LEX_STRIPDOC|LEX_INHEREDOC|LEX_QUOTEDDOC);
/*itrace("parse_comsub:%d: found here doc end `%*s'", line_number, hdlen, ret + tind);*/
free (heredelim);
heredelim = 0;
lex_firstind = -1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
}
}
@@ -6392,6 +6432,9 @@ eof_error:
tflags |= LEX_INHEREDOC;
tflags &= ~LEX_HEREDELIM;
lex_firstind = retind + 1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
}
#endif
else if (lex_firstind >= 0 && (tflags & LEX_PASSNEXT) == 0 && shellbreak (ch))
@@ -6411,6 +6454,9 @@ eof_error:
tflags |= LEX_INHEREDOC;
tflags &= ~LEX_HEREDELIM;
lex_firstind = retind + 1;
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = 1;
+#endif
}
else
lex_firstind = -1;
@@ -6681,6 +6727,9 @@ eof_error:
tflags &= ~LEX_WASDOL;
}
+#if defined (BANG_HISTORY)
+ history_expansion_inhibited = orig_histexp;
+#endif
FREE (heredelim);
ret[retind] = '\0';
if (lenp)
@@ -6699,7 +6748,7 @@ xparse_dolparen (base, string, indp, flags)
{
sh_parser_state_t ps;
sh_input_line_state_t ls;
- int orig_ind, nc, sflags, orig_eof_token;
+ int orig_ind, nc, sflags, orig_eof_token, start_lineno;
char *ret, *ep, *ostring;
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
STRING_SAVER *saved_pushed_strings;
@@ -6708,6 +6757,7 @@ xparse_dolparen (base, string, indp, flags)
/*debug_parser(1);*/
orig_ind = *indp;
ostring = string;
+ start_lineno = line_number;
if (*string == 0)
{
@@ -6719,7 +6769,7 @@ xparse_dolparen (base, string, indp, flags)
return ret;
}
-/*itrace("xparse_dolparen: size = %d shell_input_line = `%s'", shell_input_line_size, shell_input_line);*/
+/*itrace("xparse_dolparen: size = %d shell_input_line = `%s' string=`%s'", shell_input_line_size, shell_input_line, string);*/
sflags = SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOFREE;
if (flags & SX_NOLONGJMP)
sflags |= SEVAL_NOLONGJMP;
@@ -6743,12 +6793,14 @@ xparse_dolparen (base, string, indp, flags)
if (current_token == shell_eof_token)
yyclearin; /* might want to clear lookahead token unconditionally */
- shell_eof_token = orig_eof_token;
- restore_parser_state (&ps);
reset_parser ();
- /* reset_parser clears shell_input_line and associated variables */
+ /* reset_parser() clears shell_input_line and associated variables, including
+ parser_state, so we want to reset things, then restore what we need. */
restore_input_line_state (&ls);
+ shell_eof_token = orig_eof_token;
+ restore_parser_state (&ps);
+
#if defined (ALIAS) || defined (DPAREN_ARITHMETIC)
pushed_string_list = saved_pushed_strings;
#endif
@@ -6761,6 +6813,8 @@ xparse_dolparen (base, string, indp, flags)
if (nc < 0)
{
clear_shell_input_line (); /* XXX */
+ if (bash_input.type != st_string) /* paranoia */
+ parser_state &= ~(PST_CMDSUBST|PST_EOFTOKEN);
jump_to_top_level (-nc); /* XXX */
}
@@ -6775,13 +6829,14 @@ xparse_dolparen (base, string, indp, flags)
if (ep[-1] != '\n')
itrace("xparse_dolparen:%d: ep[-1] != RPAREN (%d), ep = `%s'", line_number, ep[-1], ep);
#endif
+
while (ep > ostring && ep[-1] == '\n') ep--;
}
nc = ep - ostring;
*indp = ep - base - 1;
- /*(*/
+ /*((*/
#if DEBUG
if (base[*indp] != ')')
itrace("xparse_dolparen:%d: base[%d] != RPAREN (%d), base = `%s'", line_number, *indp, base[*indp], base);
@@ -6789,6 +6844,13 @@ xparse_dolparen (base, string, indp, flags)
itrace("xparse_dolparen:%d: *indp (%d) < orig_ind (%d), orig_string = `%s'", line_number, *indp, orig_ind, ostring);
#endif
+ if (base[*indp] != ')')
+ {
+ /*(*/
+ parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), ')');
+ jump_to_top_level (DISCARD);
+ }
+
if (flags & SX_NOALLOC)
return (char *)NULL;
@@ -8549,7 +8611,8 @@ report_syntax_error (message)
parser_error (line_number, "%s", message);
if (interactive && EOF_Reached)
EOF_Reached = 0;
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -8570,7 +8633,8 @@ report_syntax_error (message)
if (interactive == 0)
print_offending_line ();
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -8601,7 +8665,8 @@ report_syntax_error (message)
EOF_Reached = 0;
}
- last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
+ last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
+ set_pipestatus_from_exit (last_command_exit_value);
}
/* ??? Needed function. ??? We have to be able to discard the constructs
@@ -8668,6 +8733,9 @@ handle_eof_input_unit ()
/* In this case EOF should exit the shell. Do it now. */
reset_parser ();
+
+ last_shell_builtin = this_shell_builtin;
+ this_shell_builtin = exit_builtin;
exit_builtin ((WORD_LIST *)NULL);
}
else
@@ -8699,7 +8767,7 @@ parse_string_to_word_list (s, flags, whom)
WORD_LIST *wl;
int tok, orig_current_token, orig_line_number, orig_input_terminator;
int orig_line_count;
- int old_echo_input, old_expand_aliases;
+ int old_echo_input, old_expand_aliases, ea;
#if defined (HISTORY)
int old_remember_on_history, old_history_expansion_inhibited;
#endif
@@ -8719,6 +8787,10 @@ parse_string_to_word_list (s, flags, whom)
old_expand_aliases = expand_aliases;
push_stream (1);
+#if 0 /* TAG: bash-5.2 Alex fxmbsw7 Ratchev <fxmbsw7@gmail.com> 11/17/2020 */
+ if (ea = expanding_alias ())
+ parser_save_alias ();
+#endif
last_read_token = WORD; /* WORD to allow reserved words here */
current_command_line_count = 0;
echo_input_at_read = expand_aliases = 0;
@@ -8753,6 +8825,11 @@ parse_string_to_word_list (s, flags, whom)
last_read_token = '\n';
pop_stream ();
+#if 0 /* TAG: bash-5.2 */
+ if (ea)
+ parser_restore_alias ();
+#endif
+
#if defined (HISTORY)
remember_on_history = old_remember_on_history;
# if defined (BANG_HISTORY)
@@ -8771,7 +8848,7 @@ parse_string_to_word_list (s, flags, whom)
if (wl == &parse_string_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
else
@@ -8835,7 +8912,7 @@ parse_compound_assignment (retlenp)
if (wl == &parse_string_error)
{
- last_command_exit_value = EXECUTION_FAILURE;
+ set_exit_status (EXECUTION_FAILURE);
last_read_token = '\n'; /* XXX */
if (interactive_shell == 0 && posixly_correct)
jump_to_top_level (FORCE_EOF);
@@ -8994,10 +9071,20 @@ save_input_line_state (ls)
ls->input_line_len = shell_input_line_len;
ls->input_line_index = shell_input_line_index;
+#if defined (HANDLE_MULTIBYTE)
+ ls->input_property = shell_input_line_property;
+ ls->input_propsize = shell_input_line_propsize;
+#endif
+
/* force reallocation */
shell_input_line = 0;
shell_input_line_size = shell_input_line_len = shell_input_line_index = 0;
+#if defined (HANDLE_MULTIBYTE)
+ shell_input_line_property = 0;
+ shell_input_line_propsize = 0;
+#endif
+
return ls;
}
@@ -9011,7 +9098,15 @@ restore_input_line_state (ls)
shell_input_line_len = ls->input_line_len;
shell_input_line_index = ls->input_line_index;
+#if defined (HANDLE_MULTIBYTE)
+ FREE (shell_input_line_property);
+ shell_input_line_property = ls->input_property;
+ shell_input_line_propsize = ls->input_propsize;
+#endif
+
+#if 0
set_line_mbstate ();
+#endif
}
/************************************************
@@ -9032,10 +9127,11 @@ set_line_mbstate ()
size_t i, previ, len;
mbstate_t mbs, prevs;
size_t mbclen;
+ int ilen;
if (shell_input_line == NULL)
return;
- len = strlen (shell_input_line); /* XXX - shell_input_line_len ? */
+ len = STRLEN (shell_input_line); /* XXX - shell_input_line_len ? */
if (len == 0)
return;
if (shell_input_line_propsize >= MAX_PROPSIZE && len < MAX_PROPSIZE>>1)
@@ -9050,12 +9146,21 @@ set_line_mbstate ()
shell_input_line_property = (char *)xrealloc (shell_input_line_property, shell_input_line_propsize);
}
+ if (locale_mb_cur_max == 1)
+ {
+ memset (shell_input_line_property, 1, len);
+ return;
+ }
+
/* XXX - use whether or not we are in a UTF-8 locale to avoid calls to
mbrlen */
- memset (&prevs, '\0', sizeof (mbstate_t));
+ if (locale_utf8locale == 0)
+ memset (&prevs, '\0', sizeof (mbstate_t));
+
for (i = previ = 0; i < len; i++)
{
- mbs = prevs;
+ if (locale_utf8locale == 0)
+ mbs = prevs;
c = shell_input_line[i];
if (c == EOF)
@@ -9066,10 +9171,20 @@ set_line_mbstate ()
break;
}
- /* I'd love to take more advantage of UTF-8's properties in a UTF-8
- locale, but mbrlen changes the mbstate_t on every call even when
- presented with single-byte characters. */
- mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
+ if (locale_utf8locale)
+ {
+ if ((unsigned char)shell_input_line[previ] < 128) /* i != previ */
+ mbclen = 1;
+ else
+ {
+ ilen = utf8_mblen (shell_input_line + previ, i - previ + 1);
+ mbclen = (ilen == -1) ? (size_t)-1
+ : ((ilen == -2) ? (size_t)-2 : (size_t)ilen);
+ }
+ }
+ else
+ mbclen = mbrlen (shell_input_line + previ, i - previ + 1, &mbs);
+
if (mbclen == 1 || mbclen == (size_t)-1)
{
mbclen = 1;
@@ -9081,11 +9196,11 @@ set_line_mbstate ()
{
mbclen = 0;
previ = i + 1;
- prevs = mbs;
+ if (locale_utf8locale == 0)
+ prevs = mbs;
}
else
{
- /* XXX - what to do if mbrlen returns 0? (null wide character) */
size_t j;
for (j = i; j < len; j++)
shell_input_line_property[j] = 1;
diff --git a/y.tab.h b/y.tab.h
index 86c8e505..41bdea08 100644
--- a/y.tab.h
+++ b/y.tab.h
@@ -1,8 +1,9 @@
-/* A Bison parser, made by GNU Bison 3.0.5. */
+/* A Bison parser, made by GNU Bison 3.6.4. */
/* Bison interface for Yacc-like parsers in C
- Copyright (C) 1984, 1989-1990, 2000-2015, 2018 Free Software Foundation, Inc.
+ Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation,
+ Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -30,6 +31,10 @@
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
+/* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
+ especially those whose name start with YY_ or yy_. They are
+ private implementation details that can be changed or removed. */
+
#ifndef YY_YY_Y_TAB_H_INCLUDED
# define YY_YY_Y_TAB_H_INCLUDED
/* Debug traces. */
@@ -40,61 +45,69 @@
extern int yydebug;
#endif
-/* Token type. */
+/* Token kinds. */
#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
+ YYEMPTY = -2,
+ YYEOF = 0, /* "end of file" */
+ YYerror = 256, /* error */
+ YYUNDEF = 257, /* "invalid token" */
+ IF = 258, /* IF */
+ THEN = 259, /* THEN */
+ ELSE = 260, /* ELSE */
+ ELIF = 261, /* ELIF */
+ FI = 262, /* FI */
+ CASE = 263, /* CASE */
+ ESAC = 264, /* ESAC */
+ FOR = 265, /* FOR */
+ SELECT = 266, /* SELECT */
+ WHILE = 267, /* WHILE */
+ UNTIL = 268, /* UNTIL */
+ DO = 269, /* DO */
+ DONE = 270, /* DONE */
+ FUNCTION = 271, /* FUNCTION */
+ COPROC = 272, /* COPROC */
+ COND_START = 273, /* COND_START */
+ COND_END = 274, /* COND_END */
+ COND_ERROR = 275, /* COND_ERROR */
+ IN = 276, /* IN */
+ BANG = 277, /* BANG */
+ TIME = 278, /* TIME */
+ TIMEOPT = 279, /* TIMEOPT */
+ TIMEIGN = 280, /* TIMEIGN */
+ WORD = 281, /* WORD */
+ ASSIGNMENT_WORD = 282, /* ASSIGNMENT_WORD */
+ REDIR_WORD = 283, /* REDIR_WORD */
+ NUMBER = 284, /* NUMBER */
+ ARITH_CMD = 285, /* ARITH_CMD */
+ ARITH_FOR_EXPRS = 286, /* ARITH_FOR_EXPRS */
+ COND_CMD = 287, /* COND_CMD */
+ AND_AND = 288, /* AND_AND */
+ OR_OR = 289, /* OR_OR */
+ GREATER_GREATER = 290, /* GREATER_GREATER */
+ LESS_LESS = 291, /* LESS_LESS */
+ LESS_AND = 292, /* LESS_AND */
+ LESS_LESS_LESS = 293, /* LESS_LESS_LESS */
+ GREATER_AND = 294, /* GREATER_AND */
+ SEMI_SEMI = 295, /* SEMI_SEMI */
+ SEMI_AND = 296, /* SEMI_AND */
+ SEMI_SEMI_AND = 297, /* SEMI_SEMI_AND */
+ LESS_LESS_MINUS = 298, /* LESS_LESS_MINUS */
+ AND_GREATER = 299, /* AND_GREATER */
+ AND_GREATER_GREATER = 300, /* AND_GREATER_GREATER */
+ LESS_GREATER = 301, /* LESS_GREATER */
+ GREATER_BAR = 302, /* GREATER_BAR */
+ BAR_AND = 303, /* BAR_AND */
+ yacc_EOF = 304 /* yacc_EOF */
};
+ typedef enum yytokentype yytoken_kind_t;
#endif
-/* Tokens. */
+/* Token kinds. */
+#define YYEOF 0
+#define YYerror 256
+#define YYUNDEF 257
#define IF 258
#define THEN 259
#define ELSE 260
@@ -145,10 +158,9 @@ extern int yydebug;
/* Value type. */
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-
union YYSTYPE
{
-#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1910 */
+#line 328 "/Users/chet/src/bash/src/parse.y"
WORD_DESC *word; /* the word that we read. */
int number; /* the number that we read. */
@@ -158,9 +170,9 @@ union YYSTYPE
ELEMENT element;
PATTERN_LIST *pattern;
-#line 162 "y.tab.h" /* yacc.c:1910 */
-};
+#line 174 "y.tab.h"
+};
typedef union YYSTYPE YYSTYPE;
# define YYSTYPE_IS_TRIVIAL 1
# define YYSTYPE_IS_DECLARED 1